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
fuente
Respuestas:
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:
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.
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.
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.
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.
Casi todas las variantes en las que he trabajado tienen toneladas de temporizadores y otros periféricos y nunca puedes tener suficientes. :)
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:
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.
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.
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.
fuente
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!
fuente
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.
fuente
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.
fuente
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.
+++++++++++
fuente