Tengo una placa de circuito impreso que utilizo para hacer algunas mediciones en un chip de silicio propio. Estamos incluyendo una serie de estructuras de prueba en la PCB para permitir algunas pruebas automatizadas, por ejemplo, relés que abren/cierran algunas conexiones, multiplexores analógicos que permiten la detección de ciertos pines del chip, etc.
Todas las estructuras de prueba se controlan a través de expansores I2C IO 'tontos', los controlas a través de I2C y puedes establecer la dirección de cada pin, de entrada o de salida, y puedes establecer el estado lógico, o leerlo.
En la placa tenemos un microcontrolador que sirve de interfaz entre el PC (USB) y la propia placa (I2C).
En el POR todos los pines de los expansores están configurados como entradas, por lo que cada vez que se quiera utilizar la placa hay que conectarla a un PC, ejecutar un pequeño código para preconfigurarla correctamente, y luego utilizarla.
Esto es, por supuesto, aceptable si necesitas ejecutar pruebas automatizadas, pero no es tan conveniente si sólo quieres alimentarlo y usarlo rápidamente, o si necesitas enviarlo a un cliente que quiere evaluar el silicio, porque distribuir todo el software no es una opción en este momento.
Hay varios enfoques para resolver el problema.
Puentes Tenemos varios, pero se vuelve engorroso rápidamente, estamos hablando de más de 100 OI. Además, si quieres poder puentear un relé por completo, es decir, forzado abierto y forzado cerrado, necesitas dos puentes.
subir/bajar Esto es un poco más atractivo, pero en cierto modo frustra el propósito: quiero un hardware reconfigurable por software, no quiero rehacer decenas de placas si encuentro un error.
La solución ideal Estoy soñando con un chip muy simple, como una EEPROM I2C o algo así, donde se escribe una especie de secuencia de arranque:
0xAE 0xAA
0xAE 0xBC
0x18 0x00
Y así sucesivamente. Los datos anteriores representan parejas de dirección, datos. Este fantástico chip debería tener una entrada gpio a la que puedo conectar un botón: cuando pulse el botón, la EEPROM debería actuar como maestro I2C y enviar los datos al bus I2C, así que como ejemplo los bytes de arriba significan "Enviar 10101010 a 0xAE, luego enviar 10111100 a 0xAE y finalmente enviar 00000000 a 0x18".
Mi pregunta es:
- ¿Hay una forma mejor de inicializar un expansor I2C IO?
- ¿Existe el chip que he previsto, o debo aguantarme y utilizar un microcontrolador?
1 votos
Eso se llama microcontrolador.