Electronic – How to choose an ARM Cortex M3 microcontroller


Based on my rough requirements of being in the 36 to 72 MHz range, having 16kb+ SRAM, 128kb+ flash, being programmable in C, I have decided that for my application I want to use an ARM Cortex M3 MCU.

The question is, what criteria do people use to pick which M3 version to use? There are many possible vendors such as TI, ST, NXP, Freescale, etc, etc.

A main differentiator from my standpoint would be ease of programming. Ideally I test it out on a breakout/development board, followed by implementation in my own PCB.

Best Answer

I think @markt is certainly in the right place: Toolchain, peripherals, packages, devkits.

I'll add a few, and maybe take off a few. Toolchain is certainly important, but FREE may or may not be. Sometimes, working without real support can be more expensive than you think it is, and using a reasonable commercial package may well be worth it for a given situation. Sometimes, being able to pass a thorough license audit is important as well, and using a free tool with a restrictive license can bite you later.

A good CMSIS library to support the microcontroller is a must for me. CMSIS -- Cortex Microcontroller Software Interface Standard -- arm.com/products/processors/cortex-m/… -- is a hardware abstraction layer for Cortex-M series microcontrollers. In theory, if a library is CMSIS compliant, it's vendor-independent, and its easier to swap different families, and you don't have to relearn an environment from the ground up to be able to use the library. One of the attractive aspects of the ARM Cortex environment is the ability to change platforms without a whole bunch of sweat. If you pick a platform that doesn't buy into the CMSIS structure, you may not be able to move around as conveniently.

For me, cheap and convenient dev boards is a must, but this may or may not be as important as some other things (I think the STM32 series has amazing devboards). If the family has very convenient and cheap dev boards, then you're more likely to find help from a larger userbase if you need it. Also, these chips tend to be in SMT packages. When you inevitably blow up a chip, or a port on a chip, or a bit on a port on a chip, replacing the chip is a PITA involving SMD rework. If you can purchase two or three boards at $10-$15 each, and replace them as you bust them, you won't even THINK about doing that SMD rework!

Think "Extras". You may need something above and beyond what is considered a "peripheral". For example, maybe you have heavy bluetooth needs, and you might choose to go with Nordic Semiconductor for that kind of support. You might consider some other things, like how easy is bootloading, etc.

Think Documentation. I've been a bit less than impressed with how hard it can be to wade through some of the STM documentation.