¿Cómo elegir una plataforma MCU? [cerrado]


43

Existen numerosas plataformas MCU y una vez que alguien se ha acostumbrado a una, generalmente son reacias a cambiar a otra plataforma.

Mi pregunta es: si uno comenzara a usar una MCU para tareas de propósito general hoy, ¿cómo podría elegir una? ¿Cuáles son los puntos de venta únicos de las diferentes plataformas?


2
Háganos saber los tipos de proyectos y volúmenes que tiene en mente, y nos ayudará a responder la pregunta.
Rocketmagnet

3
De propósito general es mucho demasiado ancho. Tiene poco sentido usar el mismo uC para parpadear el LED de una bicicleta y para un RTOS con una pantalla LCD táctil de alta resolución.
Wouter van Ooijen

1
Sí, lo ideal sería tener varios chips con los que esté familiarizado para problemas de diferentes tamaños, y esté preparado para elegir uno nuevo si es especialmente adecuado para una tarea.
Chris Stratton

2
@WoutervanOoijen La idea con esta pregunta era la siguiente: hay muchas tareas que cualquiera de las plataformas puede manejar fácilmente (es decir, tareas de propósito general). Uno es completamente libre de elegir entre plataformas. En este caso, los "factores blandos", por ejemplo, la facilidad de uso, el conteo de componentes externos, etc., se vuelven dominantes. - Quería averiguar qué plataformas diferentes funcionan bien / mal en comparación con otras.
ARF

77
RELIGIÓN
vicatcu

Respuestas:


30

Un año después, di una charla sobre el tema de elegir microcontroladores (tomó alrededor de 1,5 horas). La audiencia eran programadores y creadores de software de alto nivel. La mayoría de la audiencia no tenía experiencia previa en μC, el resto solo ha jugado con Arduino. El recuento de personas en la audiencia fue de alrededor de 30. Por lo tanto, esta fue una multidifusión, en lugar de una clínica individual.

La diapositiva clave en la charla fue esta:

Dimensiones

para comparar microcontroladores. La lista está en orden descendente.

  • Entorno de desarrollo (cadena de herramientas)
    • Entorno de desarrollo
    • ¿Mencioné el entorno de desarrollo?
  • Apoyo
    • Notas de aplicación
    • Apoyo entre pares: conocimiento tribal, amigos, foros, los códigos [sic]
  • Caracteristicas
    • Memoria
    • Periféricos
    • Habilidad informática
  • El consumo de energía
  • Costo

PD

Debo definir el alcance al que se limita esta respuesta mía. Veo esta pregunta de selección de plataforma a través de dos tipos de lentes. El primero es un prototipo. El segundo es un desarrollador de equipos profesionales con precios en la calle del orden de $ 3k y cantidades en cientos al año. La lente de aficionado no está muy lejos también. En estos casos, el costo incremental del microcontrolador es pequeño, en comparación con el costo de desarrollo o con el costo del equipo profesional al que va el microcontrolador.

Hay, por supuesto, una perspectiva muy diferente de la producción en masa. Cuando alguien elige un microcontrolador para un dispositivo barato que se producirá en grandes cantidades (los juguetes convencionales son un buen ejemplo), serán impulsados ​​por el costo del hardware. Un ahorro modesto en el costo del hardware multiplicado por un gran volumen de producción (en cientos de miles o más) puede justificar el dolor de usar un entorno de desarrollo difícil de manejar y un microcontrolador a precio de ganga con un soporte mediocre.


Te enfocas en el entorno de desarrollo. Tiene sentido para mi. ¿Cuáles fueron tus conclusiones?
ARF

@ArikRaffaelFunke Bueno, esas balas en mi publicación anterior son las conclusiones. ¿No es lo suficientemente concluyente? Mi objetivo para la charla fue: (1) Proporcionar una lista mínima de las preguntas que deben formularse durante el proceso de selección. (2) Mostrar dónde y cómo buscar respuestas. He evitado específicamente llegar a conclusiones difíciles: la familia X es buena si ..., la familia Y es buena si ...
Nick Alexeev

1
Para volúmenes pequeños y requisitos típicos, sí. Pero a veces tienes que elegir la mejor tecnología. O si el volumen es enorme, se puede justificar un dolor de cabeza bastante considerable en el desarrollo si ahorra unos pocos centavos por widget, incluyendo tener soluciones basadas en partes de la competencia probadas y listas para saltar.
Chris Stratton

1
@ChrisStratton El consumo de energía es otra cosa [además de los efectos de alto volumen de producción], que a veces puede justificar algunos dolores de cabeza. Poco puede hacer, si quiere una operación de muy baja potencia, y el uC (que eligió) no puede soportarlo.
Nick Alexeev

99
El enfoque en el entorno de desarrollo es absolutamente correcto. Podría tener el mejor chip del mundo, pero si no puede programar y depurar la maldita cosa, bien podría ser un ladrillo. He escuchado cosas buenas sobre NXP, pero no tengo experiencia directa. Pensé que Freescale era pobre, pero luego probé TI (MSP y luego DM36x) y ahora Freescale es un faro brillante de brillo en mis ojos. El mejor consejo con CUALQUIER entorno de desarrollo: compílelo / instálelo en una máquina virtual y mantenga una copia de seguridad del mismo en estado de funcionamiento completo para que no se rompa al mover computadoras / actualizar el sistema operativo, etc ...
John U

25

Como esta pregunta no ha producido la comparación de plataformas que esperaba, he intentado crearla yo mismo estudiando la literatura y las otras respuestas. Tal vez esto pueda ayudar a alguien más en el futuro.

Avíseme si hay algún error o si hay información que pueda agregar.


Comparación de plataforma

Notas sobre la comparación:

  • IDE: los comentarios se relacionan con la versión gratuita

FOTO:

  • con mucho, las fichas de nivel de entrada más baratas
  • muchos tienen reguladores de voltaje internos
  • a un precio dado, generalmente tienen más y mejores periféricos
  • Cuasi estándar de la industria: muy buenas bibliotecas y soporte para desarrolladores
  • IDE: basado en NetBeans, sobresaliente, que incluye simulación y depuración sin conexión completa
  • depuradores de terceros: alrededor de $ 25
  • muy amplia gama de paquetes
  • puntos de venta únicos: 1. XLP = dispositivos extra de baja potencia disponibles; 2. Muchos chips modernos tienen el Módulo de detección capacitiva para botones táctiles, etc.

AVR:

  • El AVR generalmente va a la zaga de los periféricos que regresan y es un poco más caro. En general, sin embargo, AVR es muy similar a los PIC en funcionalidad y precio.
  • Los chips AVR de 8 bits son más rápidos que los chips PIC de 8 bits
  • emuladores de terceros: alrededor de $ 20
  • muy amplia gama de paquetes

Brazo Cortex-M:

  • arquitectura de procesador moderna: sin banca de memoria, buena multitarea
  • con mucho, los dispositivos más baratos de 32 bits
  • bastante fácil de mover entre diferentes chips y diferentes fabricantes
  • los dispositivos generalmente requieren más componentes externos que los PIC
  • dispositivos USB muy baratos con ROM bootloader: NXP LPC1342 / LPC1343
  • soporte razonable de la biblioteca
  • IDE: razonable, sin simulación fuera de línea
  • La interfaz SWD permite la programación, depuración y rastreo en el sistema con hardware fácil de construir (
  • los chips NXP económicos solo vienen en paquetes de paso pequeño o sin clavijas
  • puntos de venta: 1. plataforma de 32 bits más barata; 2. plataforma más barata con cargador de arranque USB ROM

PSoc: (de la respuesta de Rocketmagnet)

  • rey cuando se trata de periféricos analógicos: un chip dado puede reconfigurarse internamente para proporcionar diferentes periféricos analógicos y digitales
  • significativamente más caro que los PIC
  • IDE: excelente
  • Programador de $ 88 (¿permite la depuración?)
  • solo paquetes SMD

Hélice: (de la respuesta de Rocketmagnet)

  • MCU multinúcleo: diferentes núcleos pueden trabajar de manera simulada en diferentes tareas
  • elimina / reduce (?) la necesidad de interrupciones tradicionales
  • pocos periféricos de hardware, deben codificarse explícitamente para ejecutarse en uno de los núcleos, proporciona una flexibilidad increíble
  • débil cuando se trata de periféricos analógicos
  • IDE: excelente
  • Paquete DIP disponible

Comparación por aplicación

USB:

"Leyenda" para la lista a continuación:

  • bootloader = cargador de arranque USB preprogramado
  • regulador de voltaje = puede alimentarse desde el bus sin regulador externo
  • pullups = no hay necesidad de pullup externo
  • adaptación de impedancia = no se necesitan resistencias de adaptación externas
  • oscilador de precisión = sin necesidad de cristal externo

Propiedades del dispositivo menos costoso: (en aprox. Orden de precio)

  • PIC: 8 bits, baja y plena velocidad, regulador de voltaje, pullups, adaptación de impedancia, protección ESD
  • NXP: 32 bits, gestor de arranque, solo velocidad completa, protección ESD
  • Escala libre: 8 bits, solo baja velocidad, regulador de voltaje, adaptación de impedancia, protección ESD
  • Atmel: 8 bits, gestor de arranque, solo velocidad completa, regulador de voltaje, pullup, protección ESD
  • STM: 32 bits, gestor de arranque, solo velocidad completa, pullup, adaptación de impedancia, protección ESD
  • Silicon Laboratories: 8 bits, baja y plena velocidad, regulador de voltaje, pullups, adaptación de impedancia, oscilador de precisión
  • TI: 32 bits, gestor de arranque, baja y plena velocidad, otras propiedades desconocidas
  • PSoc: configurable como módulo, otras propiedades desconocidas
  • Hélice: 32 bit, solo bitbanging

Ethernet

  • PIC: dispositivo más barato con PHY integrado

1
Algunas notas aquí: Propeller no tiene interrupciones en absoluto y no hay soporte para la depuración en el IDE oficial. En cambio, el mecanismo de depuración preferido parece ser conectar la cosa a un televisor y usar una biblioteca provista que muestre variables en la pantalla. Tampoco hay finalización de código, simulador, integración con sistemas de gestión de código, implementación inusual de incluye ... Además, por lo que sé, no hay periféricos de hardware excepto los dos contadores por núcleo.
AndrejaKo

2
Nota sobre la hélice: NO tiene interrupciones. En todas . Si necesita algo que se parezca a una interrupción tradicional, debe activar un núcleo de CPU adicional y hacer que espere.
Connor Wolf

44
Tal lista es casi inevitablemente inútil y desactualizada. Todos los fabricantes compiten entre sí todo el tiempo y la mayoría trata de ofrecer algo en cada categoría: hace una encuesta cuando tiene una necesidad, elige una solución y, si funciona, corre con ella hasta que la necesite. para lo cual hay una mejor solución.
Chris Stratton

2
Para lo que vale, podría incluir la línea MSP430 aquí también por su consumo de energía ultra bajo
mordida del tablero

2
"Embedded Systems / Particular Microprocessors" tiene información similar sobre cómo elegir un procesador, que de manera similar puede editarse (con suerte) para mantenerlo actualizado y relativamente neutral.
davidcary

7

Su elección de MCU depende mucho del tipo de proyectos en los que va a trabajar. ¿Está fabricando dispositivos de gran volumen, súper baratos y simples como luces intermitentes para bicicletas? ¿Está desarrollando robots prototipos complejos que tienen que lidiar con numerosos dispositivos y sensores de E / S extraños?

Principalmente trabajo en este último. El principal problema para mí es tratar de encontrar microcontroladores que tengan el conjunto periférico que quiero. Esto es muy difícil ya que nuestros requisitos no parecen ser convencionales. Queremos cosas como 5 canales PWM, 5 decodificadores de cuadratura, 2 puertos SPI no estándar y un UART con IO negado.

Los únicos MCU que he visto que pueden manejar ese tipo de requisitos con facilidad son el PSoC y el Propeller.

Chips de hélice

El Propeller es básicamente ocho MCU de 32 bits en un solo chip. Si desea algún tipo de periférico, simplemente programe una de las MCU para realizar ese trabajo. Para que puedas tener lo que quieras.

PSoC

Los PSoC vienen en dos sabores, 3 y 5. El 3 es un núcleo 8051 y el 5 es una corteza ARM M3. También se incluyen en el chip bloques digitales y analógicos reconfigurables que se pueden convertir en una amplia gama de periféricos: ADC, filtros, amplificadores operacionales, DAC, SPI, UART, decodificador de cuadratura, generador CRC, etc.

El entorno de desarrollo es fantástico. Tiene la edición de código fuente habitual de un IDE típico, pero también tiene un editor de esquemas. Literalmente, puede conectar cualquier circuito digital que desee, conectando los periféricos con compuertas, flipflops, etc. ¿Necesita 5 PWM? Fácil, solo póngalos en el esquema, conéctelos y listo. Incluso puede escribir sus propios periféricos en Verilog si desea algo que no se proporciona. Una gran parte de su aplicación puede implementarse simplemente en este tipo de hardware.

El beneficio real es que puede quedarse con un chip, sabiendo que puede abordar muchos de los proyectos que querrá hacer en el futuro. Lo que me pareció molesto acerca de los PIC fue rastrear constantemente a través de docenas de dispositivos buscando el que tenía el conjunto periférico particular que necesitaba. Ahora no tengo ese problema.


La hélice es un concepto curioso. Tengo que pensar un poco en eso. Con respecto a PSoC: los he considerado en el pasado debido a la increíble flexibilidad, pero la necesidad de un programador de $ 250 hizo que no fuera un principiante para mí.
ARF

@ArikRaffaelFunke: el programador cuesta solo $ 88 , menos de la mitad del precio del ICD3 .
Rocketmagnet

@ArikRaffaelFunke: otra consideración es el empaquetado. Si planea construir sus propios prototipos, entonces es mucho más fácil trabajar con paquetes DIP. La mayoría de los PIC y ATmel AVR vienen en DIP, al igual que el Propeller. El PSoC 3 y 5 no.
tcrosley

3
schmartboard tiene una solución
smt

1
@ quantum231: Lo consideré pero: 1) los FPGA parecían ser generalmente más grandes y más caros que los microcontroladores (y los robots a menudo tienen un espacio desesperadamente corto). Y 2) No tengo mucha experiencia con FPGA, y siempre es una molestia tener que aprender un conjunto de herramientas y una forma de pensar completamente diferentes solo para alguna aplicación menor.
Rocketmagnet


3

Usar más de una plataforma está bien. Seleccionar el mejor para cada trabajo y también la disponibilidad de código y ejemplos relacionados con el trabajo.

La mayoría de ellos tienen buenas herramientas de desarrollo, Arduino tiene un estudio visual, Pic tiene una gran herramienta y otros también. Entonces, para mí, es qué tan rápido y fácil puedo hacer bien el trabajo, + ¿cuántas personas de código abierto trabajan en lo mismo?


Pero, ¿cómo se puede encontrar esa información sin dejarse engañar por el desorden de marketing? Quiero decir, tenemos que encontrar personas que hayan usado el hardware y la cadena de herramientas para obtener toda esa información. ¿Cómo encuentras esas comunidades en tu trabajo? ¿O es que confías en lo que te dice el ingeniero de aplicaciones?
quantum231

Puede hacer preguntas en varios foros como este. Explique su solicitud y solicite ayuda
Visual Micro

2

Los microcontroladores son un mundo que cambia rápidamente, hay muchas ventajas de aprender sobre los chips "en" actuales y el IDE más popular es obtener ayuda de la comunidad. Como persona de PIC, diría que Aduino probablemente tiene las mejores placas IDE y de desarrollo para novatos en este momento y puede agregar mucho a una placa aduino básica sin tocar un soldador.

Cualquiera que use un aduino para cosas de la vida real pronto querrá seguir adelante, pero para entonces habrá aprendido una gran cantidad de electrónica digital básica y un buen subconjunto de C para usar fácilmente algo más adecuado.

Como alguien ha mencionado que elige el chip para su proyecto, he visto algunos proyectos que usan chips ARM como simples sensores de temperatura o convertidores AD, de la misma manera que he visto aduinos y PIC 16 al límite para generar un juego de invasores espaciales, FPGA's son galso reat y es bueno entender el HDL si te estás metiendo seriamente en el diseño de electrónica ... pero desafortunadamente no hay muchos proyectos en el mundo real donde necesites usar uno, la mayoría de los trabajos son de bajo volumen, diseño rápido y precio limitado y aquí es donde el uC de 8 bits reina supremamente


Ya veo, ¿cuáles son las limitaciones de Arduino que una persona haría que una persona se mueva más allá de ellas? ¿ARM tiene más poder de procesamiento que PIC y Arduino, tiene periféricos no presentes en PIC y Arduino, o su cadena de herramientas es superior a la que existe para PIC y Arduino? ¿Por qué tanto ruido sobre chips basados ​​en ARM? Sé que tienen un consumo de energía muy bajo, pero ¿por qué si no se elegiría ARM para proyectos "serios"?
quantum231

1

Dado que muchas de las respuestas publicadas se centran en el uso de aficionados, aquí vienen varias recomendaciones dirigidas solo a desarrolladores profesionales.

Requisitos mínimos básicos
Si la MCU no cumple con todos estos requisitos , no debe usarse.

  • Ha estado en producción durante al menos 1 año.
  • La errata de silicio está disponible y se ha revisado al menos una vez.
  • Perro guardián interno.
  • Detección interna de baja tensión / baja tensión.
  • Memoria flash en chip.
  • Protección ESD.
  • JTAG / SWD o alguna interfaz de depuración de un solo cable.
  • El núcleo utiliza bytes de 8 bits y firma de complemento a 2.
  • Muestras y paneles de evaluación fácilmente disponibles.
  • Tiene soporte técnico receptivo directamente del fabricante.

Señales de advertencia: hardware MCU
Estas son cosas con las que no debe perder el tiempo en el año 2019.

  • Modos de direccionamiento oscuros que deben ser manejados por el programador. Incluyendo el uso de palabras clave oscuras y no estándar para acceder a los datos de ROM.
  • Severa memoria de pila o limitaciones de profundidad de pila.
  • 16 bits int, que a su vez viene con todos los peligros ocultos de las promociones de enteros en lenguaje C.
  • No se puede realizar una aritmética de 16 o 32 bits sin comenzar a hervir.
  • No atrapa si ejecuta código en secciones de datos.
  • No hay búfer de seguimiento de instrucciones.
  • Viene con periféricos de hardware exóticos para los que no tiene uso.

Señales de advertencia - cadena de herramientas

  • Se basa en simuladores de software en PC o en algún tipo de gestor de arranque, en lugar de actualizar toda la MCU y utilizar la ejecución / depuración en chip.
  • No viene con controladores / ejemplos / bibliotecas prefabricados escritos por profesionales. Se basa en desarrolladores que reinventan la rueda, o foros de Internet / código abierto.
  • El CRT para el compilador de C no cumple los requisitos enumerados aquí .
  • El compilador de C viene con una larga lista de características estándar de C que no son compatibles.
  • El compilador de C todavía no es compatible con C11 (independientemente de si tiene la intención de usarlo o no).
  • El IDE arroja múltiples errores extraños en el enlazador la primera vez que intentas un programa "hello world".
  • Encontrando muchos errores de IDE o compilador durante las primeras semanas de uso.

Esto es demasiado dogmático. Ha omitido por completo el costo, las opciones de empaque (código abierto! = No profesional), la calidad de los periféricos, etc. No estoy en general en desacuerdo con la mayoría de esto, pero cosas como "limitaciones [...] de pila" simplemente significa que necesita conocer la compensación que condujo a estas limitaciones en primer lugar.
awjlogan

@awjlogan El costo y las opciones de empaque son muy específicos del proyecto, por lo que no tiene sentido abordar aquí. No dije que el código abierto no sea profesional, pero una empresa que externaliza su cadena de herramientas para el código abierto y su apoyo a sitios como SO no es profesional. Aunque los proyectos de código abierto con muy pocos contribuyentes tampoco son profesionales, como podemos ver con los puertos de compilación de código abierto a varias MCU exóticas. No debería haber ninguna razón para elegir una MCU con pila limitada en el año 2019.
Lundin

Claro, son específicos del proyecto, pero ha aumentado su costo de línea de base al especificar 16/32 bits solo en su lista (escaneo rápido de Digikey) y no he visto un M0 de 6 pines recientemente. Si no necesita algo (incluido el tiempo), no gaste el dinero extra en eso, esa es la decisión que debe tomar como profesional. Pero sí, una buena herramienta es tan esencial, no podría estar más de acuerdo.
awjlogan

@awjlogan LPC81X ha existido por más de 5 años. Hace poco me enteré de Cypress PSoC4, que parece interesante. Y así. El número de pines no suele ser un argumento, solo el tamaño y tipo de paquete. Si puede tolerar QFN o BGA, puede obtener chips muy pequeños.
Lundin

acordado en eso, sus opciones se reducen a un tamaño pequeño (igual para cualquier arquitectura) Mi punto general es que, si bien todas las cosas en su lista son deseables, también debe estar lo suficientemente informado como para saber cuándo romperlas.
awjlogan

0

Si va a realizar tareas de propósito general que pueden tener procesamiento analógico y digital, entonces hubiera preferido PSoC por su IDE, depurador y la gran cantidad de cosas que puede hacer con ellos.

He usado PSoC3 en la universidad para mis proyectos y es bastante simple de dominar. Lo único es que si necesita algunos chips de rendimiento, aún tendrá que obtenerlos por separado. Tiene puertos suficientemente buenos. Entonces, si está buscando algunos chips de rendimiento junto con un kit de desarrollo, es mejor optar por componentes separados.


1
Puede valer la pena agregar un poco más de información sobre el PSoC para que esto sea más útil, un par de otras respuestas ya lo cubren.
PeterJ

@ PeterJ: Quería dar esto como un comentario para la respuesta de Rocketmagnet, pero no tengo ninguna reputación para hacer un comentario.
ganesh737

¿Hay alguna razón por la que no eligió un diseño basado en softcore como el uso de Nios II en Altera FPGA o microblaze / picoblaze en un Xilinx FPGA? Se pueden usar para obtener el mismo efecto que el PSoC y diría que son, en muchos sentidos, una opción superior.
quantum231

1
@ quantum231: Aceptaría eso, pero la principal limitación para mí en ese momento era el presupuesto y estaba disponible de forma gratuita en nuestro departamento de electrónica.
ganesh737
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.