Estoy desarrollando un producto de nicho que se producirá en un volumen bastante bajo (cientos bajos). Estoy usando un Atmega uC, y uno de los requisitos es la capacidad de que el usuario pueda flashear en campo. Mi plan es usar el gestor de arranque Arduino con un IC de USB a UART (vago, lo sé, pero en este volumen es probablemente la mejor opción).
Hay muchas opciones Mi placa prototipo en este momento está usando el FTDI FT232RL, pero eso es demasiado costoso para la producción, ya que el precio para toda la placa es de alrededor de $ 20.
Los circuitos integrados que he considerado incluyen:
- CH340G
- La opción más barata, pero ¿cuál es el estado de los controladores firmados para OSX? No puedo determinar si esto será completamente plug and play. ¿Alguien sabe cuál es el estado de esto?
- CP2102
- Robusto, no se preocupe por los controladores firmados, etc. Pero es más costoso.
- MCP2200
- También robusto, no se preocupe por los controladores firmados. ¿Cómo elijo esto versus el CP2102? Son casi el mismo precio.
¿Hay alguna otra "trampa" con las opciones anteriores además de los controladores firmados? No quiero obligar al usuario a instalar controladores no firmados / agregar un proceso potencialmente doloroso al procedimiento de actualización, pero tampoco quiero agregar $ 2 al costo de la lista de materiales solo por la capacidad de actualización del usuario.
Cualquier orientación / consejo general sería útil. Gracias.
Respuestas:
La opción más simple, y la que recomendaría aquí, sería utilizar un microcontrolador que admita USB de forma nativa y se pueda programar con un cargador de arranque USB DFU (Actualización de firmware del dispositivo). Un ejemplo de tal microcontrolador es el ATmega32U4, como se ve en el Arduino Leonardo; otro es el ST STM32F103. Incluso si estos microcontroladores son un poco más caros que el que hubiera utilizado de otra manera, el aumento en el costo es probablemente menor que el costo de una interfaz USB UART discreta. El uso de una sola parte también reducirá el tamaño general y el consumo de energía de su dispositivo.
fuente
Hay un controlador suministrado por Apple para el CH340 que incluye las versiones recientes de MacOS. "AppleUSBCHCOM".
fuente
En general, si le da a sus clientes la capacidad de flashear su dispositivo, querrá que no lo bloqueen.
Por lo tanto, la principal prioridad que proporciona es una conexión robusta y segura al dispositivo host. En mi experiencia, todos los chips funcionan bastante bien en los entornos urbanos y de laboratorio, que supongo que está apuntando.
Considere también el tiempo que requeriría para que el componente funcione correctamente: su recuento de producción es de cientos y agrega $ 2 a cada uno. ¿Esa "pérdida" vale más que su tiempo (o el del desarrollador)? Un chip bien documentado podría ser una mejor opción, incluso si cuesta más.
CH340
Sí, es realmente una mala idea, al menos si quieres Plug-and-Play. Para mí en Win 8.1, necesitaba instalar manualmente el controlador (
CH340SER.exe
) que tuve que descargar del sitio web del fabricante (chino) que no tenía (en ese momento) traducción al inglés.Fue alojado en China, lo que podría ser un problema para las personas con mentalidad de seguridad y para aquellos sujetos a reglas organizativas y / o políticas. También fue superado como resultado de búsqueda por muchos sitios dudosos de descarga de controladores "gratuitos".
Si este fuera un equipo serio (opuesto a "solo" un Arduino), eso estaría elevando mis cejas hasta el techo. La instalación manual también puede ser muy molesta si sus clientes no tienen un equipo dedicado para flashear.
De lo contrario, este chip funcionó como se esperaba.
CP2102
No hay mucho que decir, salió de la caja y no trajo ningún problema. Probablemente sería mi elección para un diseño promedio.
FTDI
Tengo este en una placa de convertidor USB-serie independiente y funciona bien. Como escribió, es bastante costoso, pero creo que podría ser una mejor opción en entornos difíciles (por ejemplo, contactos corroídos en los conectores, también EMI). Podría darte una sensación cálida y difusa porque apoyas a los desarrolladores originales.
Otras ideas
ISP
Según la respuesta de @Chetan Bhargava, una opción sería tener un conector para el SPI y luego usar un convertidor de serie USB independiente.
Esto también requiere que usted proporcione un conector confiable y seguro para que el ISP lo conecte. Obviamente, puede ir barato con encabezados de clavijas aquí, pero si desea hacerlo bien (y / o no confía lo suficiente en sus clientes ), entonces este conector podría ser más costoso que el chip adicional y un conector USB estándar. Las conexiones en serie son extremadamente difíciles de depurar si no funcionan, a diferencia del USB donde el cliente al menos recibirá una notificación de que el dispositivo USB no funciona.
Si incluye un convertidor independiente con su placa, también tendrá que pagar el precio de la placa del convertidor. Supongo que esto no sería más barato que integrar el chip. Esto podría funcionar si cada cliente posee muchas de sus tarjetas, por lo que el convertidor podría reutilizarse, o si simplemente puede empujar los costos de adquirir el programador al lado del cliente.
Si esta opción es una posibilidad, en este punto, también existe el propio AVRISP de Atmel, que es una buena opción aquí en lugar del simple USB a serie, aunque un poco desactualizado. Creo que tiene un límite de aproximadamente 100 o 200 kbps donde los convertidores seriales USB modernos entran en el rango de megabits. Pero es muy robusto con respecto al (mal) uso.
Otra buena opción podría ser un conector TC2030. Solo requiere almohadillas en la PCB para trabajar, pero requiere algo de experiencia (debe mantenerlo en el lugar hasta que finalice la programación).
Interfaces de comunicación
Los microcontroladores modernos también vienen con una serie de otras interfaces de comunicación (Ethernet, WiFi, Bluetooth) y generalmente se pueden flashear con estas. Un ejemplo sería el ESP32 que tiene un costo de aproximadamente 6 USD y es un SoC con todos los componentes necesarios para una conexión wifi. También es compatible con Arduino (incluso puede usar el IDE) y tiene un conjunto de ejemplos muy completo, que incluye un cargador de arranque WiFi OTA. Solo necesitaría un ISP para la implementación inicial del gestor de arranque.
Si, como suena en su pregunta, su proyecto está casi terminado, probablemente ya no sea una opción.
fuente
Para que su producto sea programable en el campo / cable de flash es utilizar un pin de cabecera común. El pinout de Arduino es bastante común. no es necesario incrustar un convertidor de USB a serie si sus actualizaciones no son semanales. Para una configuración de campo, aumentaría el costo del equipo de programación de campo en lugar de la capacidad de programación de campo en
No es necesario incrustar un convertidor en serie si necesita flashear con menos frecuencia.
Algunos convertidores USB a serie comunes (y de bajo costo) se basan en los siguientes conjuntos de chips.
FTDI: controladores de Windows y Linux, pero los controladores pueden
bloquear su cable: evite CH340: controladores de Windows y Linux
PL2303: controlador de Windows y Linux
Los controladores están fácilmente disponibles para la plataforma Windows y Linux. No puedo decir mucho sobre Apple, ya que no puedo pagar una computadora portátil Apple.
Prefiero dejar el USB-Serial fuera de mi proyecto si la probabilidad de programar en campo es <50%.
fuente