Estoy trabajando en un nuevo diseño de producto y probablemente habrá cambios / arreglos de hardware pequeños o grandes durante la vida útil del producto. Para futuras actualizaciones de firmware en el campo, necesito una forma de determinar la revisión del hardware. ¿Qué es una buena estrategia?
Actualmente estoy tirando dos pines de repuesto hacia arriba / abajo con resistencias externas y revisando el patrón. Esto solo permite 4 revisiones de hardware, pero eso podría ser suficiente para fines prácticos. Podría convertirse en un problema si necesito uno o ambos pines en una futura revisión de hardware.
Supongo que una forma más económica podría ser tener un divisor de resistencia conectado a un pin ADC. Cada revisión de hardware podría tener resistencias de valor diferente. Lamentablemente, no tengo ningún ADC de repuesto en mi diseño actual.
¿Supongo que otra forma podría ser codificar el número de versión de hardware en una EEPROM o el mcu flash durante la producción? (No tenemos esa instalación en este momento).
Supongo que estoy buscando sugerencias para un método flexible y robusto.
[EDITAR]
Re. sugerencia de @ trav1s: no tengo un bus de direcciones per se pero tengo una EEPROM 24LCxx en el bus I2C. Los 3 bits bajos de la Dirección del esclavo están cableados. Supongo que podría cambiar los bits de dirección y buscar la EEPROM durante el inicio.
No usaría un número de versión programado en el microcontrolador. A menos que el software sea diferente para diferentes versiones de la placa, pero la versión de la placa me parece superflua. Tenga la menor cantidad posible de versiones del software del microcontrolador, idealmente solo una. Cada versión diferente puede causar problemas logísticos.
El código EEPROM es una buena idea, ya que permite muchos códigos de placa diferentes, pero retírelo del microcontrolador, en un dispositivo separado. EEPROM es costoso para grandes capacidades (mucho más caro por bit que Flash), pero por unos pocos bytes puede encontrarlos baratos. Este es solo 16 centavos en 100 y solo necesita 1 línea de E / S.
Una forma de disminuir la posibilidad de errores es tener un paquete diferente para cada versión de placa. Por lo tanto, programe un lote de EEPROM con una versión número 1 en SOT-23, la próxima versión 2 en MSOP, etc. Entonces no puede tener una versión 1 EEPROM en una placa de la versión 2.
fuente
Una opción que usará solo dos pines digitales es algo como esto:
Al cambiar los valores R1 y C1, puede tener diferentes tiempos de carga para el condensador que puede medir para determinar la versión del hardware.
fuente
Si hay algún espacio no utilizado en el bus de direcciones, puede colocar un registro ROM en el bus que pueda leer la MCU. El registro contendría el número de versión del hardware. Cuando la MCU lee desde esa dirección, el registro escribiría su valor en el bus de datos. La caja registradora podría estar cableada en el tablero o, si desea cambiar el número de versión con sus propias manos, puede hacer alfileres que se puedan atar / atar como lo está haciendo ahora.
fuente