Tag Archives: FemtoUSB

FemtoUSB is an open-source Cortex-M0+ board

The latest board from Femtoduino is designed to help those looking to migrate from AVR to ARM-based designs.

You may recall Femtoduino from their recent campaign around the highly-popular IMUduino BTLE. Now, the crew is back with their latest device, an uber-mini Cortex-M0+ MCU that they call FemtoUSB. The board was designed as a basic starting point for those interested in ARM-based projects, particularly for those transitioning from 8-bit AVR.

“Before the release of the FemtoUSB, learning to design for ARM chips was very difficult,” the team writes. “Compiling a toolchain? What does the most basic schematic for an ARM chip even look like? What in the world is JTAG?”


Recently launched on Tindie, FemtoUSB is built around an Atmel | SMART ATSAMD21E18A, featuring 256KB of Flash and up to a 48MHz operating frequency. Its creators note that its schematic follows the suggested design found in the SAM D21 data sheet. The device features 3.3V on-board regulator (VIN line), a supply up to 10V, and a regulated down to 3.3V on the 3V3 line. The FemtoUSB comes with a standard 0.1″ (2.54mm) pin spacing design for breadboards, and a smaller 0.05″ (1.27mm) pin spacing design for tinier projects.

“Atmel has some of the best support for the open-source hardware community. They offer proper documentation, excellent chip performance, and a great foundation via the Atmel Software Framework,” Alex Albino, Femtoduino Senior Engineer, explains. “Did we mention how easy it is to get started with ARM using Atmel?”


Migrating from 8- to 32-bit is much easier today than it was in years prior. As the Femtoduino team points out, most microcontrollers have a similar set of requirements, which range from adding some resistors and a reset circuit to hooking up a USB port and burning a bootloader.

“You can of course, add in a reverse current protection circuit, a crystal clock source for chips that don’t have an internal one (or if you want a faster clock source), some fancy peripheral additions, etc. However, here’s where we will draw an imaginary line, and now distinguish between 8-bit AVRs and 16/32-bit ARM chips.”

When working with ARM chips, Albino advises that you will need a programmer dongle to initially burn a bootloader. Serial Wire Debug seems to be the most basic form of the JTAG interface — something provided by all ARM chips. This is akin to the “Ardiuno ISP” mode of programming. Keep in mind, though, not all chips “talk the same” between the chip and a dongle.


“It’s kind of like how two people can have the same interface (vocal chords), but speak different languages. Fortunately, it seems Atmel’s SAM D21 chips talk Cortex Microcontroller Software Interface Standard (CMSIS), which is a vendor-independent hardware abstraction layer for the Cortex-M processor series. This is another great reason to use Atmel’s line of ARM chips, for what it’s worth.”

The pins used to provide a JTAG connection vary depending on the ARM chip selected, and offer more debugging features when more pins are added. For the most part, JTAG Serial Wire Debug establishes the five necessary connections: Ground, Voltage Reference, Reset, Serial Wire Clock (SWCLK), and Serial Wire Debug Input/Output (SWDIO).


Albino shares that your programming dongle should have a datasheet informing you of the pinout provided, which will enable you to wire it to your board accordingly. Another key difference — and a very important one for that matter — is the voltage. You may be used to 5V logic levels working with AVR 8-bit chips, but 5V can be utterly destructive to an ARM chip as they are meant to work with less power. The usual voltage range for Atmel’s line of ARM chips is somewhere between 1.8V to 3.3V.

“As with all ARM chips, you will benefit greatly from having a programmer dongle. Some vendors lock their chips behind really expensive software tools, and even more expensive programmer dongles ($200+). Oh, and have fun trying to get their proprietary stuff working with your open source setup. Thankfully, Atmel offers their ATMEL-ICE programmer at a reasonable price of about $85. I hear you can get them much cheaper without the case, though don’t expect it to come with ribbon cables if you go the cheap route.”


Bringing the FemtoUSB to life required the following components:

Additionally, the project calls for some low-temp lead-free solder paste, a couple PCBs and SMD components. On the software side, the team suggests using Atmel Studio with Windows or Terry Guo’s GNU ARM Embedded Toolchain for those running Mac OS X or Linux.


Regardless the operating machine, Albino stresses that Atmel Software Framework and Atmel SAM-BA In-System Programmer are required. The board also comes pre-loaded with the AT07175: SAM-BA Bootloader for SAM D21, “which is what actually gets programmed on to the chip so we can load stuff via USB instead, thanks to the open-source BOSSA utility.” (Hence, the name FemtoUSB.)

Femtoduino does reveal that they are working on getting an Arduino integration working, along with other non-Arduino tools to load things via USB. Interested? Femtoduino is now available on Tindie for $24.99. Those wishing to learn more can also head over to the project’s Github page here.