Wow some awesome release news from Microchip about a fancy new chip that just dropped. If you know us (and you’re reading this blog so yeah you probably do) you know we just luuuuv the ATSAMD21 – featured in our M0 Feathers, Metro M0 and even the new Gemma M0 we just put in the shop.
The ATSAMD21 has always felt to us like the next evolution for fans of the 8-bit AVRs like the ATmega and ATtiny series – with 256 KB of flash, 32 KB of RAM, 48 MHz Cortex M0+ chipset, USB, tons of timers, peripherals, ADC, DAC, up to 6 SPI/I2C/UART devices… using the SAMD21 feels so roomy and comfortable.
One of the most fun projects we’ve had over the last year is porting MicroPython to the ATSAMD21 (which we call CircuitPython since the API deviated a bit). Now, MicroPython works just fine on the SAMD21 and you can build many projects quickly, using the built in Python 3 interpretter. And while we absolutely adore it, it’s just a *little bit* sluggish on the ATSAMD21 as its only a Cortex M0 at 48MHz, and doesn’t have any hardware floating point support. And 32KB of RAM is huge for Arduino but CircuitPython can run out of memory if you’re doing a lot.
As we started exploring CircuitPython more and more it became clear we could really use an upgrade path. So we asked Microchip “heyyyy so is there like an upgrade to the atsamd21 that’s maybe a cortex m3 or m4, with more RAM and maybe 100 MHz?” and they were all like “maaaybeeee….plz sign this NDA” and we were like “sweet!” and we got a bunch of ATSAMD51 chips and a datasheet! You can check out the no-longer-sekret datasheet here (PDF).
The ATSAMD51 is to the ATSAMD21 as it was in turn to the ATMega328. More! Better! Faster! Here are some quick specs:
- Cortex M4 core running at 120 MHz
- Hardware DSP and floating point support
- Up to 1 MByte flash, 192 KB RAM
- Sizes ranging from 48-QFN to 128-TQFP (the 48 QFN is *nearly* pin compatible with the ATSAMD21 but it isnt 100% drop in compatible)
Some neat new peripherals/upgrades:
- Built in 1.8V buck for lower power uses (needs an external inductor)
- Dual 1MSPS DAC
- Dual 1MSPS ADC
- Parallel capture controller (for camera/video in)
- Built in crypto engines with AES (256 bit), true RNG, Pubkey controller
- Ethernet MAC on the SAME5 series
- QSPI for fast SPI transfers
- SD/MMC controller
- “configurable custom logic” – this one is particularly interesting/weird, you get latches and LUT you can link up
- PDEC – rotary encoder hardware support
The speed, and extra space makes it excellent for our next generation of CircuitPython boards, and the price is pretty good too – only about $3 each for the ATSAMD51G19 in reel qty. Considering its the same list price as an ATmega32u4 it’s an easy choice for us!
We also like that the pricing is so competitive with other Cortex M4 suppliers, e.g. STM32F405RGT6 is ~$6.50/1K pcs and the similar ATSAMD51J20A is $3.70 (the STM is faster, the SAM has more RAM, it was hard to find a perfect 1:1 comparison) compared to the Kinetis K20 series (famous for being used in the Teensy 3.2) the MK20DX256 has 25% of the Flash size, 25% as much RAM, 60% of the speed, but costs $1-1.25 more. Competition is heating up!
Any how, the Atmel ATSAMD51 series looks really awesome to me, and its now public and you can order some chips even from microchip direct. Some chips are in stock now, such as the ATSAMD51N20A-AU, ATSAMD51P19A-AU, others will be shipping in late October. We’ve already started designing a Feather M4 and Metro M4 and we’ve even gotten it going with Arduino core with some tweaks to the current SAMD core.
Excited to try out this chip? We don’t have hardware for sale quite yet (and likely won’t until chips are shipping in larger qty in November) but if you have early hardware access for some reason you can check out our forked Arduino SAMD codebase at
for our latest code – full 120MHz clocking, GPIO, ADC, DAC, I2C/SPI/UART, USB all basically work but there’s a few tweaks and bugfixes still.
The BOSSA bootloader working here:
and the software bootloader tool here:
We hope to get these all merged into mainline soon, and also a CircuitPython port that can take advantage of the awesome power that can be unleashed!