RoadTest: SAM D21 Curiosity Nano Evaluation Kit
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: STM32 Nulceo Boards.
What were the biggest problems encountered?: Documentation and demos are scattered and incoherent.
Reviewing a microcontroller kit has a number of elements to it. The study encompasses the device, the board and the thought process behind the product and of course the documentation as well as the software support. All these elements have a slightly different influence on the reader as the parameters may not be equally important to some. The development kits to me personally are reflection of the manufacturer towards the beginner and determines if the user will gravitate towards or away from a device. This was the dilemma that plagued many a soul during the AVR vs PIC era, however, such may not be the case for future generations.
In this review, I take a look at the SAM D21G17D Curisosity Nano Eval Kit and the complementary adapter board which does more than meets the eye. I am not an AVR fan boy nor a PIC peddler and this review is as unbiased as it comes. I assess the board on the following criteria
So sit tight and read on as I take you through the bitter and sweet of Microchip's twist on Atmel's line of ARM controllers.
My review kit came with four components (special thanks to Dan Zima for going the extra mile during a time of unrest in the states). This includes the Nano module, the adapter board, relay click and Bluetooth click module. Everything pretty much comes in standard packaging and as the trend goes, users are expected to supply the USB cables.
The nano board is like the arduino nano, stretched out which means more GPIOs. This is welcome addition and board is designed with castellated vias which may or may not be useful but is a nice touch. The adapter board is larger board with the matching nano header connector and a number of other connectors as well, the most prominent of which are the clik board connectors. One annoyance with my setup was that the number of pins on the Nano board is less than the pins on the adaptor board. Clubbed with the fact that there is no obvious right-way to plug in the nano board, I missed the Texas Instrument strategy of adding a rocket to the silkscreen. You match the rocket orientation to get boards plugged in right.
This brings us to the relay and bluetooth clik boards which are small modules that can be plugged into one of the three aforementioned sockets. The guys over at https://www.mikroe.com/click have a plethora of little boards that seem like a good idea for most prototyping needs. In my mind, I see these as the ability to do module testing and prototyping. More on this later but there is a pretty solid feel to it and the red color of the board make it visually obvious.
The SAMD21 is an ARM Cortex M0+ processor with a bunch of peripherals which includes, UART, I2C, SPI, LIN support, SMBUS/PMBUS support, a CRC-32 generator, 12-bit ADC, 10 bit DAC, Timers, PWM modules, an RTC module, touch controller and USB 2.0. The controller is a more like a jack of all traits with the capacitive touch and proximity sensing added to boot. At C$4.38 a pop on newark and higher on digikey, this device competes against the STM32F072(Cortex M0) at C$2.27 and STM32F103C8T7(Cortex M3) at $4.66 or more, both of which don't have the touch controllers. And to be clear, the SAMD21 and STM32 have their difference such as twice the flash on the SAMD21 while there is CAN support on the STM32.
I could deep dive into the datasheet but I feel I should be focusing on the kit since this review is for those who have decided they want to try out the SAMD21 and are looking for a way to get started.
So a few words about the chip itself? If you are looking for something that has a decently low power consumption, loads of Cap Sense Channels and a buck load of flash memory, the SAMD21 is the way to go. The power-to-horsepower ratio is where the SAMD21 wins and I will be doing some battery powered stuff with this one. As of this writing, I have not done a current measurement on this chip and if I do, I will be sure to include the results in a later section/version.
The biggest thing to speak about is the Curiosity Eco-system that Microchip has come up with. [https://www.microchip.com/design-centers/8-bit/development-tools/pic-hardware/curiosity-nano-development-platform] In particular, the nano form factor employed in this kit is also used by Microchip for it's other PIC as well as AVR boards. It is nice to see the adoption of a cleaner structure, moving away from the explorer series form factor and was one of the smartest things that the designers did. Depending upon your choice of the board, you can add two or even three click boards to the base and though it may seem restrictive, it is mostly limited by the available GPIOs in the case of the Nano series.
Unlike the Seeed Studios Grove concept, these are not chainable nor like the arduino Uno, are these stackable. This simplifies things for most developers and if you want to really take your demo to the next stage, Mikroe provides a template and standards document for creating your own click board [https://www.mikroe.com/make-a-click]
The Curiosity Nano Base for Click boards™ [https://www.microchip.com/Developmenttools/ProductDetails/AC164162] comes with full documentation which includes CAD files and everything you would need to replicate the whole thing. CAD files are in Altium which is a tad bit disappointing but is better than nothing I guess.
As seen in the silkscreen, there are a lot of nc pins which on the adapter board due to the fact that it is designed for smaller nano boards as well. To be fair, the SAMD21 nano is also smaller than the available pins which was a bit annoying as expressed before. Adding a "Top right edge here" marker would be useful for those of us who refrain from looking up the manual to see an LED blink. Other than that, this is one of the best dev kits I have see from Microchip. It is thoughtful, well designed and well executed. The adapter base board can be used with a multitude of nano evaluation boards which makes it a good investment for those who are working with Microchip processors, be it PIC16, PIC18, PIC24 or even the PIC32.
There is a jst connector for adding a battery pack and MCP73871T allows you to also charge up the battery and that is all I would say about that for now. There exists a boost converter to power 5V click board from the battery which was a really nice touch.
The last thing I want to mention is the presence of the Xplained Pro Extension which was part of the ATMEL Xplained series connectors. I have an IO1 board from the previous generation and it is interesting to see Microchip make use of the legacy system. All in all the eco-system is a good one if Microchip can keep supporting it for a decade or so.
The nano board itself was pretty exciting. The user guide [http://ww1.microchip.com/downloads/en/DeviceDoc/SAM%20D21G17D_Curiosity_Nano_Evalutio_%20Kit_User's_Guide_DS70005409B.pdf] for the kits shows that it comes with the debugger that has a bunch of bells and whistles and can be disconnected.
I found the base board schematic more informative and gives a general idea of how things are connected. All-in-all a pretty good system.
The castellated pins were a nice touch, especially if you plan to use this with your own base board adaptation. I personally did found the nano board could have been designed better from the PCB perspective. The programmer/debugger circuit blends in with the rest of the board and there is no way to clearly see where it ends and the processor pins begin. The designed employed staggered pin-header configuration which would have been great except for the large pin count which makes pushing the pins into the vias difficult. The mounting holes serve no purpose and take up already scarce board space. Adding an RGB LED instead of the single color one would have been a nice touch too.
The debug circuit is a much better design which is evident from the cad file more than the physical examination. The board on it's own is breadboard compatible but again, I would refrain from it. The sheer number of pins make removing it from the breadboard, a task not for the impatient and threatens the integrity of the FR4 as well as the hairlike copper tracks.
Bottom line: A descent design but could have been done better.
The list of the mikro click boards is endless but I got to work with the bluetooth and relay board. The bluetooth board is an older 2.1 spec board which the RN-41 module. Not useful for mesh and other fancy things but very good for simple one-to-one applications and where you don;t want a serial cable for communication or debugging. It will suck up 30mA of current when connected so not the best for low power applications as compared to other modules.
The relay board has two relays and LEDs for indication. Nothing fancy but can be useful for interfacing with other devices, switching light bulbs and other hobby stuff. Its well designed and has a MOV so good job and good design.
There is a large selection of click boards to choose from and https://www.mikroe.com/click so scroll to your heart's content.
With microcontrollers getting more and more complex and packed with features, newbies have a harder and harder time getting started with said devices. Enter code generators which were initially made for complex DSPs and I remember using MATLAB to generate FPGA code for filters and the like. Microchip's offering was originally called Microchip Code Configurator which evolved into Harmony and we are at version 3 for the same. MCC was very useful for first-timers as well as experienced developers alike and harmony broke that confidence for some of us.
The current offering is more polished and installation for the tool can be done from within the MPLABX IDE. This model is similar to the Eclipse model where tools are installed as plugins. For my experiments, I installed https://www.microchip.com/mplab/mplab-harmony Harmony 3, the latest version of XC32 compiler and the MPLABX IDE, along with FreeRTOS and some other libraries. The install as painless on one PC and a nightmare on another with a plethora of problems plaguing my very existence. There are some videos about the same as well but it seems that Harmony has evolved faster than people can keep up. Changes in the menus and dialog boxes and options wreaks havoc on the casual user's mind and wastes too much time for now. I wish that the software was more wizard like or had a wizard of some kind because the examples, though useful and consistent, are difficult to customize. It took me less than 5 minutes to setup a FreeRTOS project but it took me more than a few hours to dig through docs, videos and options. I will provide a video of the steps but I trust Microchip to change the UI options in the near future which will make my instructions useless.
Another kicker is the fact that XC32 supports ARM controllers as well as MIPS which may mean that does neither well. MPLABX projects can be exported but remain dependent on the XC32 compiler. Adding support for gcc-arm is on my wishlist for MPLABX though there are workarounds. Netbeans is still quite ugly but has less bugs and glitches than how I remember it from a few years. I am using PIC32 in some other projects and am getting more comfortable with the ecosystem but again, there are gottchas and there is a slight learning curve.
I recommend using the software tools and getting used to it, since Microchip is not going anywhere so might as well get comfortable. Harmony has a lot of good parts and with time you can make it a friend.
But if not then what is the alternative? Well there is the Arduino way where you can download the bootloader to the SAMD21 and Arduino has support for the chip. Adafruit and Sparkfun have custom boards but that discussion is beyond this review.
For the Nano Board, I was unable to make the RTOSviewer work as expected so debugging is restricted to basics I am afraid. You will have to buy a dedicated ICE tool for advanced tooling. There is no free lunch and the same holds true for this particular kit. All new projects should be created using Harmony 3 and you should read the manual in detail. The above video demonstrates the use for FreeRTOS as well as setup for the UART module, ADC and task queues. The code is available at https://github.com/inderpreet/xc32_samd21_freertos
There are the lot of things to be written/re-written about the SAMD21, the code generator and even the XC32 Compiler. The documentation is scattered across GitHub wikis, PDFs and the like and a good starting point is https://www.microchip.com/mplab/mplab-harmony/mplab-harmony-articles-and-documentation . The user guides are well written but it is impossible for them to cover all the features and generate demos and examples for all use cases. The community support is not as strong for the SAMD21 either since most people would go the Arduino route. Most of the people who understand the tool and the controller, don't have a good enough reason to produce content around this device though with time we will see a lot more activity. I made a board around device myself and have been missing some parts so the project is in limbo.
Most of the big names out there have an ocean of offerings for the users. Microchip is no different and is it good to seem the Atmel portfolio flourish under the red and white banner. The SAMD21 Nano board is a great piece of technology but suffers from a complicated and painful software system. The hardware feels well thought out and has very minor kinks. The hardware ecosystem is better than it was under the Atmel flagship and I have high hopes for the future. MPLABX struggles to win over newbies and Harmony and the setup is still in beta as far as I am concerned.
The ecosystem adds value or becomes the Achilles heal and for Microchip's, the later is true, at least for beginners. For experienced players, once you get it to work, it becomes smooth sailing till you have to reinstall or an update comes out.
What are your thoughts on the MPLAB X IDE and Harmony 3?
My only gripe with Harmony is consistency. Searching for online tutorials and even videos on YouTube, you rarely find menus that look the same. Every new version beings with it a storm of little changes that works for existing users but confused the heck out of new users that are just trying to follow instructions.
With STM, the Cube Generator has been consistently for the most part. It's not perfect but getting off the ground is faster. STM now offers Cube IDE which is an infant and I use the older standalone Cube Generator for my projects. I use Microchip professionally and though I am more comfortable now than a few years ago, I still feel it's not as polished as some others.
Just my two cents worth.
Thanks for the review.