STM32 Microcontroller Family
STMicroelectronics produces a family of ARM Cortex M3 and M4 devices branded as the “STM32.” The STM32L series (Cortex M3) is of primary interest to OpenTag, as it offers very low power run modes. However, for devices that have sufficient power sources, the STM32F10x and STMF2xx MCUs (Cortex M3), or STM32F4 MCUs (Cortex M4) can be extremely interesting parts with which to build low-cost, high-function solutions (some examples below).
Notable Attributes of STM32
STMicro has a fine website with plenty of information about the STM32. The most notable attributes tend to be the advanced ARM Cortex M3 cores they employ and the advanced fabrication methods STMicro uses to produce them. The 130nm STM32L parts and 90nm STM32F2 / F4 parts have smaller feature-size than other MCUs available, therefore they are able to deliver extraordinary computing performance at relatively low power.
Epic Interrupt Controller: The ARM Cortex M NVIC is almost too good to be true, as far as MCUs are concerned. The STM32 is a great platform if you have many interrupt sources, or if you want to run an RTOS.
The Cortex M3 is a 16 bit instruction set that works on 32 bit data. The STM32 also has built-in HW Multiplier, and most have HW divider, too. It achieves better than 1DMIPS/MHz
, and it can run damn fast – 32 MHz
for the STM32L, 72 MHz
for the STM32F103, 120 MHz
for the STM32F2xx, and 168 MHz
for the STM32F4xx.
Huge Peripheral Selection: apart from a radio, anything you could possibly want is available on die.
Free Dev Tools: It is easy to get free, ARM-based dev tool that support STM32. GCC for the Cortex M3 is quite good.
Cost: STM32 devices tend to be in a higher price bracket than are MSP430s, Atmegas, etc.
Low Power Modes: Most STM32s don't have great low power modes. The STM32L family has fairly good low power modes, but they are still not as simple to work with in deep-low-power modes as MSP430s are.
Not as code efficient as MSP430: then again, what is? GCC for ARM Cortex M3 produces a binary that is roughly 25% bigger than an equivalent MSP430 binary. Whereas 32 KB ROM is easily sufficient for a big, complicated OpenTag app on the MSP430, on the STM32 you will need the 64 KB part.
Supported Boards That Use STM32