Kinetis vs STM32

Of the STM32 (ST Microelectronics) and the Kinetis family (Freescale), I have only worked on the STM32 family of processors and therefore, I will be able to detail my experience with the STM32 and hoping that someone else can do the same for the Kinetis, so you can contrast the two. This list may not be complete, and is simply based on my experience.

PROS:

  1. ST provide a massive set of libraries for each of their processors that you get for free. These libraries contain a massive list of functions required to do most of the basic low level interfacing with the hardware and can make your life a lot simpler.

    e.g void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) This initializes the GPIOx peripheral according to the specified parameters in the GPIO_InitStruct.

    Simply populate the GPIO structure (and there are example projects to guide you through this process), and call the GPIO_init function. This saves you having to look up atleast 4-5 registers and figuring out what each bit should be.

  2. Their microcontrollers have the Read protect functionality, which can help you protect your IP to some extent, if not completely. There are tons of microcontrollers out there, that don't really do this very well.

  3. They have a family of low power micro-controllers, their L1 series, that have various different levels of power saving features that can be turned on/turned off when required.

  4. Although there are many manufacturers that are now doing their versions of the ARM CM3 cores, ST's F series chips have had a few revisions and although not completely bug free, they are now fairly mature.

  5. Almost all the variants I have worked on have tons of Timers and other peripherals and you can never have enough of those. :)

  6. To get you started, they have some example projects that can be programmed into their evaluation boards, they almost always give you for free. Although I think most other manufacturers would do the same.

CONS:

  1. Although the above mentioned libraries definitely help a lot, however some of the function names are not intuitive and it takes a while to get your head around their naming conventions. This is not true for the entire library, but there is a fair bit of code, that is not well commented, and you will really have to read it to figure out what it is doing.

  2. If you are using their libraries and want to turn on MISRA checking for your project, you will get tons of errors/warnings as their code does not seem to be MISRA compliant. You will need to find a way to exclude their libraries from your MISRA checking. There are ways around this, but they require a bit of work to do so.

  3. ST's documentation for the processors that I have worked on is a bit poor. Their datasheets are not very well written. The information is not in one central/main document. There have what they call a reference manual, tons of application notes and atleast one datasheet. You have to really trawl through these documents sometimes to find the information you are after.

    They often describe GPIO ports, and a recommended setting for one of the bits
    maybe described 50 pages later.

That is all I can think of at the moment, hopefully this gives you bit of an idea about the STM32 products. I will add more, if I can think of anything else.

A suggestion would be to get an evaluation board for both types of microcontrollers (Kinetis one and an STM32 one), which have the peripherals that you are after, and have a play with them.

That will give you a really good feel for which one suits your needs best.


K70 has very buggy silicon. Often peripherals that you have described have only lite functionality; for example, it is a good to use cache with external memory, but if you use this memory with DMA you will need to flush the cache manually. K70 has an LCD controller, but it is almost impossible to achieve a resolution better than 480x272, which is not better than can be achieved with standard MCUs. The K70 has a monster clock generator, but only a few peripherals are able to use it instead of the bus clock.
The most important thing is I've found that the complicated low power management simply doesn't work!


I assume that you are comparing the Kinetis with the STM32F4 Cortex-M4 processors. I have not actually used either but have been looking at them for possible use in an up-coming project. There are also M4 device families available from TI-Stellaris and announced by Atmel and NXP many of which to include the floating point processor, loads of serial ports and timers.

The support in terms of software for the processors (Freescale and ST) looks good with Freescale providing an interface library and a royalty free RTOS for their parts. ST provide a set of interface libraries that allow the configuration and use of their processors and peripherals.

ST devices seem to win the processing speed war with a quoted speed of 168MHz using (IIRC) a wide memory bus to the program flash. This may or may not be important for you.

The Kinetis parts are the more mature, having been available for nearly a year. As a result there is now quite a large family of devices in production with a wide range of interfaces and peripheral sets. The ST parts have only been out for about a month, although they did release a number of parts at the same time as announcing the family. Their range of parts will increase in much tha same way as their Cortex-M3 family has.