kmod's blog


Working on an ARM board

Pretty much all the electronics projects I've done so far have used AVR ATmega chips as the central microcontrollers.  I've been meaning for a while to step-up into the world of ARM chips: it looks like you can get chips that are much more capable at just around the same price as an ATmega328P, but you can also get chips that are vastly more capable at slightly higher prices.

The problem I'm running into is that the ARM world is way more fragmented than the 8-bit microcontroller world, since ARM's business model is to license out their IP.  So choosing a chip isn't just a question of choosing a processor core and performance tier, but also more-or-less investing in learning a specific company's chips and toolchains.

There are a couple prominent lines out there; in the "AVR replacement" range, it seems like the two ARM processor types to consider are the Cortex-M0+ and the Cortex-M4.  The M0+ is, as suggested by the name, the lower end of the two, so I'm mostly restricting myself to looking at M4's.  Within that category, there are still a lot:

And maybe more.  Looking around at other hobbyist-type projects, the only ones I'm seeing pop up are the STM32 and the Kinetis lines.  STM32 probably wins by raw count of number of times I've seen it.  Kinetis has the potential advantage that Freescale makes the only hobbyist-available Cortex-A9 chips, ie that have a fast 1GHz+ core like in your phone.  I'm not sure if that's enough reason to choose their lower line of offerings, but it at least signals to me that they're more invested in the DIY crowd.  I've scanned through the datasheets for both the Kinetis and the STM32 and they both seem pretty reasonable; they both have a similar number of Google search results.

The development boards for these things are surprisingly cheap: $18 and $10 for the Kinetis and STM32, respectively.  I bought both of them and I'll try to play around with them; if anyone has an experience with this or an opinion either way, I'd love to hear it!