If you’re ready to step your Arduino game up from older 8-bit/16MHz microcontrollers, the SparkFun SAMD21 Dev Breakout is a great landing spot. The SparkFun SAMD21 Dev Breakout is an Arduino-sized breakout for the Atmel ATSAMD21G18, a 32-bit ARM Cortex-M0+ processor with 256KB flash, 32KB SRAM, and an operating speed of up to 48MHz. This dev breakout provides you with an Arduino hardware option that solves the problems of low storage limits and dynamic memory stack overflows that have plagued the previous iterations of the Arduino family. Yes, the SparkFun SAMD21 Dev Breakout is even fully supported in the Arduino IDE and libraries for the Arduino Zero!
The SparkFun SAMD21 Dev Breakout has been equipped with a USB interface for programming and power, surrounded with an RTC crystal, and a 600mA 3.3V regulator. By utilizing the Pro R3’s extra PCB real-estate we’ve been able to leave room for a few extra GPIO pins and an integrated LiPo charger. To power the SAMD21 Breakout board, just plug it into a USB port on your computer via the micro-B port on the breakout. Not near a USB port? No problem, the SparkFun SAMD21 Dev Breakout is also equipped with a LiPo Battery connector (for a single-cell 3.7-4.2V litium-polymer battery) and unpopluated supply input to solder on your own PTH Barrel Jack (please be aware that the 3D model that we have on file does show a barrel jack attached, this is only for dimensional use since this breakout does not come with one attached). If you’ve used any Arduino before, this pinout shouldn’t surprise you – the layout meets the Arduino 1.0 footprint standard, including a separate SPI header and additional I2C header.
One of the most unique features of the SAMD21 is SERCOM – a set of six configurable serial interfaces that can be turned into either a UART, I2C master, I2C slave, SPI master, or SPI slave. Each SERCOM provides for a lot of flexibility: the ports can be multiplexed, giving you a choice of which task each pin is assigned.
The on-line SAMD21 Mini/Dev Breakout Hookup Guide (in the Documents section below) contains step by step instructions of how to connect your SparkFun SAMD21 Dev Breakout as well as a few circuit examples to test out. Full example code is provided and explained and even includes troubleshooting tips to make make you have zero problems.
Note: The breakout does NOT have headers or a 2.1mm barrel jack installed and will need to purchased and soldered on yourself. Check the Recommended Products section below for the type of headers we use in the Hookup Guide!
1 of 1 found this helpful:
By wiring the the SWD pins from the JTAG adapter correctly, you can connect to the ATSAMD21G18A . The 2x5 JTAG adapter is not directly compatible with the 2x5 SWD pins on the dev boards. You would need to use jumper wires to connect to the respective pins listed in this table => [ http://www.atmel.com/webdoc/jtagice3/jtagice3.connecting_awire.html ].
Viewing the fuses tab in AtmelStudio 6.2, here are the fuse settings for the SAMD21 Dev board:
NVMCTRL_NVM_LOCK = 0x00 NVMCTRL_PSZ = 0x03 NVMCTRL_NVMP = 0x1000 ADC_LINEARITY_0 = 0x08 ADC_LINEARITY_1 = 0x04 ADC_BIASCAL = 0x03 OSC32K_CAL = 0x3D USB_TRANSN = 0x05 USB_TRANSP = 0x1D USB_TRIM = 0x03 DFLL48M_COARSE_CAL = 0x21 DFLL48M_FINE_CAL = 0x200 ROOM_TEMP_VAL_INT = 0x1E ROOM_TEMP_VAL_DEC = 0x00 HOT_TEMP_VAL_INT = 0x55 HOT_TEMP_VAL_DEC = 0x00 ROOM_INT1V_VAL = 0x01 HOT_INT1V_VAL = 0xFF ROOM_ADC_VAL = 0xA99 HOT_ADC_VAL = 0xC8F NVMCTRL_BOOTPROT = 0x07 NVMCTRL_EEPROM_SIZE = 0x07 BOD33USERLEVEL = 0x07 BOD33_EN = [ ] BOD33_ACTION = 0x01 WDT_ENABLE = [X] WDT_ALWAYSON = [X] WDT_PER = 0x0B WDT_WINDOW_0 = [ ] WDT_WINDOW_1 = 0x05 WDT_EWOFFSET = 0x0B WDT_WEN = [X] BOD33_HYST = [X] NVMCTRL_REGION_LOCKS = 0xFFFF OTP1_WORD_0 = 0x10000300 (valid) OTP4_WORD_0 = 0x40004007 (valid) OTP4_WORD_1 = 0x85F4AF5C (valid) OTP4_WORD_2 = 0xFFFFFE00 (valid) TEMP_LOG_WORD_0 = 0x105501E (valid) TEMP_LOG_WORD_1 = 0xC8FA99FF (valid) USER_WORD_0 = 0xD8E0C7FF (valid) USER_WORD_1 = 0xFFFFFC5D (valid)
Checking with our engineer and looking through the batch files, it appears that we do not modify the fuse bits like the Atmega328P microcontrollers.
1 of 1 found this helpful:
If Windows fails to recognize the board and gives a “USB Device Not Recognized.” error, try a quick double tap on the reset button to force the board into bootloader mode, and then upload some known good code like “blink.”
1 of 1 found this helpful:
You can upload to this board with “Arduino/Genuino Zero (Native USB port)” selected in the IDE, however, it you do this the board will suddenly become an Arduino Zero under Windows and unless you have the Zero drivers installed, will then become an unknown device. If that happens, just install the Zero drivers located in the IDE folder and then upload any sketch to the board with “SparkFun SAMD21 Dev Breakout” selected and this will restore the board.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
Based on 6 ratings:
2 of 2 found this helpful:
I was reasonably happy with this board until my program grew to over 20k. Then it became impossible to program over native USB due to COM port dropouts. There’s a known fix for this, yet Sparkfun hasn’t updated their SAMD boards core or bootloader in months. This board relies heavily on the Zero toolchain, and as that is still relatively new and undergoing many updates and bug fixes, Sparkfun needs to keep up with them. Their customer/tech support was extremely disappointing - they replaced the boards which of course didn’t fix the problem, then when that didn’t work, just stopped answering emails. It’s a shame because this could be a great product. As is, I’d recommend buying a Feather M0+ instead, as Adafruit is actively involved with the Arduino Zero development and keeps their toolchain up to date. I’ve had no problems with the Feather, I just wish it had more pins broken out.
Also, the battery charging circuit audibly rings during the last ~25% toward full.
Our boards core has been updated. Does this fix the issues you were seeing with uploading large programs?
I wanted to step up to 32 bit microprocessors for my circuits, this breakout is so well documented to make this easy. Works well with the Arduino IDE and with Atmel Ice programmer and Studio 7.
Documentation very good, git hub has been updated, and I think there is no longer requirement for IAR to rebuild core, if I read makefile correctly.
Does anyone know where I can get the small header strip for the JTAG SWD connection. Seems like .05 mm spacing?
The SWD connection uses .05" spacing, and you should be able to find headers of that pitch over at Digi-Key.
This is a nice board but unfortunately there are still issues with it and its mini sibling uploading larger sketches. Using Arduino IDE 1.6.9, Arduino SAMD 1.6.5, and Sparkfun’s SAMD 1.2.0 uploads of larger programs can stall. It’s unfortunate that Member #532709’s comments above state that it is a toolchain issue and there is/are known fixes but provides no links.
There are a few posts in the forums regarding slow upload speeds and these issues seem related. The posts suggest using a different USB cable, a USB hub, or a different USB port on your computer. I stumbled on these posts after spending hours pulling my hair out and can confirm that they solved my problem. For me it was switching from my laptop’s USB 2 port to the USB 3 port. I can now successfully upload a 42 Kb sketch without stalling.
Edit: After a number of successful uploads, still having intermittent issues so while switching USB ports, etc. may help, it’s not a sure fix. <sigh>
Keep this in mind as you move beyond your “Hello World” or “Blink” sketch and try to do something real, which is why you bought this thing in the first place.
I have a linear quadrature encoder which the Arduino Uno can read just fine as long as the motion is slow enough. The SAMD21 reads the encoder at much faster speeds, as you would expect. The next project will be independently controlling the rotational speed of four dc motors while simultaneously reading five geartooth sensors. Further complexity may be the addition of four sensors to count objects as they pass by. Things I like: multiple serial tx rx hardware, real time clock, LiPo charger, fairly seamless use of Arduino code, support to integrate SAMD21 Dev board into IDE.
I tried initially an upload via the USB 3 port of the example program, after completing the given SAM device and Arduino setup. My uploads failed to complete for both the Dev and Mini boards. I then connected a USB 2 hub to my Surface Book’s USB 3 port, and connected the board(s) to the USB 2 hub. Worked first try for each board! I am next planning to use the Atmel-Ice after installing the headed pins (ordered from the recommended vendor stated in the Sparkfun setup guide).