Electronic – Kinetis vs STM32

control systemmicrocontroller

I'm looking into a new industrial controls application, and from my searches I have narrowed it down to 2 microcontrollers that look to fit the application well. The STM32 and the Kinetis. They both seem very capable of doing the job and I have already used the STM32 in a different somewhat unrelated application. I like the STM32 family since there is such a wide selection of configurations that are all for the most part pin compatible. The Kinetis however looks to be a bit more bang for the buck processor/memory wise.

So my questions to anyone with a bit more experience with these is… What are some of the advantages and disadvantages to each family?

I am pretty sure there isn't exactly a wrong choice here for my application, but I would like some more details from someone other than Freescale and ST. I realize the details of my application may be a factor here, but it's a very broad application as far as functionality goes. Our biggest limit that has pushed us to moving to a different controller is memory (~16k RAM 256k flash).

Any insights would be greatly appreciated. Thanks

Best Answer

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.