Kinetis vs STM32


8

Estoy buscando una nueva aplicación de controles industriales, y de mis búsquedas la he reducido a 2 microcontroladores que buscan adaptarse bien a la aplicación. El STM32 y el Kinetis. Ambos parecen muy capaces de hacer el trabajo y ya he usado el STM32 en una aplicación diferente, no relacionada. Me gusta la familia STM32 ya que hay una amplia selección de configuraciones que son en su mayor parte compatibles con pin. Sin embargo, el Kinetis parece ser un poco más explosivo para el procesador de dinero / memoria inteligente.

Entonces, mis preguntas a cualquier persona con un poco más de experiencia con estas son ... ¿Cuáles son algunas de las ventajas y desventajas para cada familia?

Estoy bastante seguro de que no hay exactamente una elección incorrecta aquí para mi aplicación, pero me gustaría obtener más detalles de alguien que no sea Freescale y ST. Me doy cuenta de que los detalles de mi aplicación pueden ser un factor aquí, pero es una aplicación muy amplia en lo que respecta a la funcionalidad. Nuestro límite más grande que nos ha empujado a pasar a un controlador diferente es la memoria (~ 16k RAM 256k flash).

Cualquier idea sería muy apreciada. Gracias


El STM32F4 tiene un Cortex-M4 con punto flotante y DSP, y hasta 1 MB de flash y 192 kB de RAM. Una placa barata está disponible con varios periféricos interesantes.
Leon Heller

Configuraciones (el mismo pin de memoria y potencia de procesamiento diferentes) y madurez ... STM32 es el camino a seguir ...
Ktc

Dos entran ... uno se va.
joeforker

Respuestas:


6

De la STM32 (ST Microelectronics) y la familia Kinetis (Freescale), solo he trabajado en la familia de procesadores STM32 y, por lo tanto, podré detallar mi experiencia con la STM32 y esperar que alguien más pueda hacer lo mismo por el Kinetis, para que puedas contrastar los dos. Es posible que esta lista no esté completa y se base simplemente en mi experiencia.

PROS:

  1. ST proporciona un conjunto masivo de bibliotecas para cada uno de sus procesadores que obtienes de forma gratuita. Estas bibliotecas contienen una lista masiva de funciones requeridas para hacer la mayor parte de la interfaz básica de bajo nivel con el hardware y pueden simplificar su vida.

    por ejemplo, vacío GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Esto inicializa el periférico GPIOx de acuerdo con los parámetros especificados en GPIO_InitStruct.

    Simplemente complete la estructura GPIO (y hay ejemplos de proyectos para guiarlo a través de este proceso) y llame a la función GPIO_init. Esto le ahorra tener que buscar al menos 4-5 registros y averiguar cuál debe ser cada bit.

  2. Sus microcontroladores tienen la funcionalidad de protección contra lectura, que puede ayudarlo a proteger su IP hasta cierto punto, si no completamente. Hay toneladas de microcontroladores por ahí, que realmente no lo hacen muy bien.

  3. Tienen una familia de microcontroladores de baja potencia, su serie L1, que tienen varios niveles diferentes de funciones de ahorro de energía que se pueden activar / desactivar cuando sea necesario.

  4. Aunque hay muchos fabricantes que ahora están haciendo sus versiones de los núcleos ARM CM3, los chips de la serie F de ST han tenido algunas revisiones y, aunque no están completamente libres de errores, ahora son bastante maduros.

  5. Casi todas las variantes en las que he trabajado tienen toneladas de temporizadores y otros periféricos y nunca puedes tener suficientes. :)

  6. Para comenzar, tienen algunos proyectos de ejemplo que se pueden programar en sus paneles de evaluación, casi siempre te dan de forma gratuita. Aunque creo que la mayoría de los otros fabricantes harían lo mismo.

CONTRAS:

  1. Aunque las bibliotecas mencionadas anteriormente definitivamente ayudan mucho, sin embargo, algunos de los nombres de funciones no son intuitivos y lleva un tiempo entender sus convenciones de nomenclatura. Esto no es cierto para toda la biblioteca, pero hay un poco de código, que no está bien comentado, y realmente tendrá que leerlo para descubrir qué está haciendo.

  2. Si está utilizando sus bibliotecas y desea activar la comprobación de MISRA para su proyecto, obtendrá toneladas de errores / advertencias ya que su código no parece ser compatible con MISRA. Deberá encontrar una manera de excluir sus bibliotecas de su verificación MISRA. Hay formas de evitar esto, pero requieren un poco de trabajo para hacerlo.

  3. La documentación de ST para los procesadores en los que he trabajado es un poco pobre. Sus hojas de datos no están muy bien escritas. La información no está en un documento central / principal. Tienen lo que llaman un manual de referencia, toneladas de notas de aplicación y al menos una hoja de datos. En ocasiones, debe rastrear estos documentos para encontrar la información que busca.

    A menudo describen puertos GPIO, y una configuración recomendada para uno de los bits
    puede describirse 50 páginas más tarde.

Eso es todo lo que puedo pensar en este momento, espero que esto te dé una pequeña idea sobre los productos STM32. Agregaré más, si se me ocurre otra cosa.

Una sugerencia sería obtener una placa de evaluación para ambos tipos de microcontroladores (Kinetis one y STM32 one), que tienen los periféricos que buscas, y jugar con ellos.

Eso le dará una sensación realmente buena para la que mejor se adapte a sus necesidades.


1
Deseo que los fabricantes se abstengan de que sus bibliotecas definan y usen sus propios identificadores para todo. La configuración de un puerto GPIO requiere buscar todos los registros de funciones en el manual para saber qué significan los diferentes modos; ser capaz de escribir código usando esa información directamente sería más útil que tener que examinar la biblioteca y su documentación para ver cómo define las cosas.
supercat

@supercat Echa un vistazo al DAVE IDE de Infineon. Básicamente agrega lo que ellos llaman "APLICACIONES" a través de una GUI y DAVE se encarga de la generación de código por usted.
Chi

3

K70 tiene silicio muy defectuoso. A menudo, los periféricos que ha descrito solo tienen una funcionalidad ligera; por ejemplo, es bueno usar caché con memoria externa, pero si usa esta memoria con DMA, necesitará vaciar el caché manualmente. K70 tiene un controlador LCD, pero es casi imposible lograr una resolución mejor que 480x272, que no es mejor de lo que se puede lograr con MCU estándar. El K70 tiene un generador de reloj monstruoso, pero solo unos pocos periféricos pueden usarlo en lugar del reloj del bus.
¡Lo más importante es que descubrí que la complicada administración de baja potencia simplemente no funciona!


2

Supongo que está comparando el Kinetis con los procesadores STM32F4 Cortex-M4. En realidad, tampoco los he usado, pero los he estado buscando para un posible uso en un proyecto próximo. También hay familias de dispositivos M4 disponibles de TI-Stellaris y anunciadas por Atmel y NXP, muchas de las cuales incluyen el procesador de punto flotante, cargas de puertos serie y temporizadores.

El soporte en términos de software para los procesadores (Freescale y ST) se ve bien con Freescale proporcionando una biblioteca de interfaz y un RTOS libre de regalías para sus partes. ST proporciona un conjunto de bibliotecas de interfaz que permiten la configuración y el uso de sus procesadores y periféricos.

Los dispositivos ST parecen ganar la guerra de velocidad de procesamiento con una velocidad citada de 168MHz utilizando (IIRC) un bus de memoria amplio para el programa flash. Esto puede o no ser importante para usted.

Las partes de Kinetis son las más maduras, ya que han estado disponibles durante casi un año. Como resultado, ahora hay una familia bastante grande de dispositivos en producción con una amplia gama de interfaces y conjuntos periféricos. Las partes ST solo han estado disponibles durante aproximadamente un mes, aunque lanzaron varias partes al mismo tiempo que anunciaban a la familia. Su gama de piezas aumentará de la misma manera que su familia Cortex-M3.


STM32 está disponible durante más de 2 años .. Sólo F4 está fuera por unos meses, pero F1 / F2 ha estado ahí más de 2 años .. Lo estamos usando ..
Ktc

Soy consciente de que los procesadores basados ​​en STM32 M3 han existido durante mucho tiempo. La pregunta se basa en las partes de Kinetis (basadas en M4), por lo que estaba comparando las familias de procesadores M4 disponibles.
uɐɪ

De hecho ... Pero si comparas M4 con M3, hay muy poca diferencia en términos de resto de los bloques, lo que me da confianza. el ARM está armado de todos modos, no importa qué versión porque será revisado por el propio ARM
Ktc

2

Mi experiencia con STM32 y Kinetis K70 se reduce a ejecutar uClinux en estos procesadores (información detallada sobre estos puertos uClinux disponibles aquí ).

Si tiene la intención de utilizar RAM externa en su aplicación, K70 sería una mejor opción, en mi opinión.


Para dar más detalles sobre mi publicación anterior, K70 tiene dos cachés de 8 KB, uno para el bus I / D (que esencialmente apunta a regiones de memoria que podrían usarse para ejecutar código), otro para el bus del sistema (apunta a memorias "sin código" ) Por lo que estamos viendo en los contextos de uClinux, los cachés ayudan a mejorar el rendimiento general del sistema de una manera algo seria.
vladimir khusainov

1

Hace poco respondí una consulta de un cliente estrechamente relacionada con este hilo. Con suerte, estos comentarios serán útiles.

+++++++++++

Para resaltar las diferencias entre K70 con STM32F2:

  • K70 es Cortex-M4 mientras que STM32F2 es Cortex-M3. En otras palabras, K70 proporciona unidades de FPU y DSP de hardware en chip.

  • K70 puede ejecutar el núcleo Cortex-M a 150MHz (aunque los dispositivos disponibles actualmente están limitados a 120MHz). STM32F2 está limitado a 120MHz.

  • K70 proporciona interfaces DDR y NAND Flash en chip, lo que permite densidades muy altas para dispositivos de memoria externos.

  • K70 tiene caché en chip (2 cachés separados de 8 KB para I / D y bus de sistema). Esto realmente mejora el rendimiento de las memorias externas de una manera muy seria.

  • K70 proporciona varios mecanismos de seguridad para garantizar que el software no se pueda copiar utilizando herramientas externas (depuradores JTAG, etc.).

  • K70 tiene un controlador LCD integrado, así como una interfaz táctil integrada.

  • conjunto similar de interfaces de E / S, pero esto debe medirse con los requisitos de una aplicación específica.

En general, si está utilizando memoria externa en sus aplicaciones y / o necesita una interfaz GUI, K70 sería un claro ganador. Además, K70 es más eficiente, generalmente hablando.

+++++++++++


K7x tiene ADC de 16 bits con PGA mientras que no lo tiene STM32.
Mehmet Fide
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.