Versión o configuración de codificación en PCB

10

Necesito codificar información sobre la versión o la configuración en la placa / eléctricamente, para que el firmware pueda detectar qué diseño de placa se utiliza.

¿Qué opciones son posibles y cuáles son sus ventajas y desventajas?

Henrik Hansen
fuente
1
También existe esta Q desde hace un tiempo, las respuestas son similares a las que ya se dieron (¡lo cual es bueno!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Respuestas:

14

Fuera de mi cabeza, me vienen a la mente dos soluciones fáciles.

  1. Tenga n líneas conectadas al GPIO de su microcontrolador. Ate estos altos o bajos dependiendo de la versión de su tablero. Esto le daría opciones de configuración de la placa. Esto usaría n pines en su microcontrolador. El consumo de corriente estática sería insignificante.2n
  2. Ingrese al ADC del microcontrolador y use un divisor de voltaje con diferentes valores dependiendo de la configuración de la placa. Esto solo usaría un pin de microcontrolador. Esto tiene la desventaja de que habrá un consumo de corriente estático a través del divisor. También sería propenso a errores de BOM, mientras que la primera sugerencia está conectada a la placa.

Ambas sugerencias tienen una debilidad en que el usuario final podría modificarlas fácilmente, por ejemplo, para abrir funciones "bloqueadas". Esto puede no ser una preocupación para usted, sino algo a tener en cuenta.

awjlogan
fuente
1
También hay una combinación de [1] y [2]. Puede usar un pin de microcontrolador para ADC, pero use el mismo componente de valor conectado en paralelo para formar un divisor de voltaje. Entonces, por ejemplo, puede tener cuatro resistencias de 10k que forman 10k / float (pull to vcc), float / 10k (pull to gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 de vcc), 10k / 5k (1/3 de vcc). En resumen: una línea en la lista de materiales, solo se requiere una cantidad diferente y una entrada de ADC. También ayuda visualmente.
Sócrates
2
Puede deshacerse del consumo de corriente estática de la solución ADC si puede ahorrar un segundo pin: en lugar de un divisor de voltaje entre VCC y GND, reemplace VCC o GND con el segundo pin; solo necesita leer la configuración de la placa una vez , al comienzo del programa, establezca el pin alto / bajo según sea necesario para habilitar el divisor de voltaje, realice la medición de ADC, luego alterne el pin para que ambos extremos del divisor de voltaje tengan el mismo potencial y no fluyan corrientes.
Aleksi Torhamo
1
La versión GPIO también es propensa a errores de lista de materiales, ya que generalmente se configura con enlaces de cero ohmios. Podría hacerlo en el esquema y el diseño, pero eso es más costoso ( costos de tiempo de diseño ).
Graham
1
Re ADC, esto es lo que hemos usado en productos donde actualmente trabajo. Sin embargo, debes tener cuidado con las tolerancias de resistencia. Si sus dos resistencias tienen una tolerancia del 1%, el voltaje puede ser de hasta el 2%, por lo que a lo sumo obtendrá 50 pasos que puede resolver. En la práctica, es más seguro reducir a la mitad eso. Entonces, si tiene resistencias de 1% y un rango de 5V en su ADC, desea que las versiones se informen en pasos de 0.2V.
Graham
9

He usado un registro de desplazamiento con pines atados arriba y abajo para codificar la revisión de la placa antes, si ya está usando SPI para algo en su placa, es trivial leerlo.

Si necesita poder cambiar la ID en tiempo de ejecución, sería una buena idea usar puentes en lugar de vincular las entradas con trazas.

Colin
fuente
Estaba buscando en Google los IC de variante de número de serie de silicio no únicos, pero esta es una alternativa inteligente. Especialmente si lo combina con un expansor de E / S de un solo cable.
Jeroen3
7

Algunas opciones que se me ocurren: -

SMD PADS / O OHM Resistor Links. Use un sistema binario para la configuración de hardware para reducir el recuento de pines para su procesador.

Puentes. La placa tendría 2xN pines del conector agregando un puente al pin derecho le permitiría seleccionar su configuración. Un error es más fácil de resolver. Esto puede ser un poco costoso y usar más espacio en el tablero dependiendo del puente.

Si tiene EEPROM en la placa, es posible que pueda incrustar la configuración en la memoria.

¿Es posible que cambie el firmware en sí mismo usando un #define o similar? Entonces no necesita espacio en el tablero y pines adicionales para la detección de la versión.

R.Joshi
fuente
1

Las EEPROM de un cable son una buena solución porque solo requieren un GPIO pero pueden almacenar una gran cantidad de información de configuración. También permiten que el microcontrolador escriba esa información durante la prueba de la placa (por ejemplo, datos de calibración). Muchos tienen un pin de protección contra escritura o un bit programable de una sola vez para evitar más cambios.

Otras ventajas incluyen características útiles como números de serie únicos garantizados.

Esta opción se usa en muchos sistemas, como sondas de osciloscopio y baterías, debido a que solo se necesita una sola línea de datos. La EEPROM puede incluso alimentarse desde la línea de datos en sí.

La principal desventaja es el costo. El costo no es alto, pero en productos producidos en masa, unos pocos centavos pueden ser importantes.

Un ejemplo de tal EEPROM es el DS2431, que almacena 1kb.

usuario
fuente