Cómo preestablecer un expansor IO IOC

5

Tengo un PCB que utilizo para realizar algunas mediciones en un chip de silicona patentado. Estamos incluyendo varias 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, y así sucesivamente.

Todas las estructuras de prueba se controlan mediante expansores de E / S I2C 'tontos', los controla con I2C y puede establecer la dirección de cada pin, entrada o salida, y puede configurar el estado lógico o leerlo.

En la placa tenemos un microcontrolador que sirve como interfaz entre la PC (USB) y la placa (I2C).

En POR, todos los pines de expansión están configurados como entradas, por lo que cada vez que quiera usar la placa necesita conectarla a una PC, ejecute un pequeño fragmento de código para preajustarlo correctamente, y luego úselo. / p>

Por supuesto, esto es aceptable si necesita ejecutar pruebas automatizadas, pero no es tan conveniente si solo quiere alimentarlo y usarlo rápidamente, o si necesita enviarlo a un cliente que quiera evaluar el silicio. porque la distribución de todo el software no es una opción en este momento.

Hay varios enfoques para resolver el problema.

Puentes Tenemos varios de ellos, pero se vuelven engorrosos rápidamente, estamos hablando de más de 100 IO. Además, si desea poder omitir un relé por completo, es decir, forzado para abrir y forzar para cerrar, necesita dos puentes.

tirar arriba / abajo Esto es un poco más atractivo, pero un poco pierde el propósito: quiero un hardware reconfigurable por software, no quiero volver a trabajar en decenas de tableros si encuentro un error.

La solución ideal Estoy soñando con un chip muy simple, como una EEPROM I2C o algo así, donde escribes una especie de secuencia de arranque:

0xAE  0xAA
0xAE  0xBC
0x18  0x00

Y así sucesivamente. Los datos anteriores representan parejas de direcciones, datos. Este fantástico chip debería tener una entrada gpio a la que puedo conectar un botón: cuando presiono el botón, la EEPROM debe actuar como un maestro I2C y enviar los datos en el bus I2C, por ejemplo, los bytes anteriores significan "Enviar 10101010 a 0xAE, luego envíe 10111100 a 0xAE y finalmente envíe 00000000 a 0x18 ".

Mi pregunta es:

  • ¿Existe una mejor manera de inicializar un expansor de IO I2C?
  • ¿Existe el chip que imaginé o simplemente debería absorberlo y usar un microcontrolador?
pregunta Vladimir Cravero

5 respuestas

6

Ya indicó que tiene un microcontrolador en la placa con todos los expansores de E / S. ¡Dijiste que ya habla con las cosas de I2C! ¿Por qué no tener que configurar el firmware del microcontrolador el estado inicializado predeterminado necesario de los expansores de E / S?

Si necesitara varios estados diferentes de estos estados inicializados, incluso podría agregar varios puentes a ese MCU para seleccionar el perfil particular que se necesita.

    
respondido por el Michael Karas
3

Nunca he visto un dispositivo así. Pero un microcontrolador puede hacer esta función perfectamente bien, leyendo sus direcciones y valores predeterminados desde un chip Flash / EEPROM separado o desde un Flash / EEPROM interno.

Una vez que hayas programado a tu microcontrolador para hacer esto, parecerá indistinguible del chip de maravilla con el que soñaste, por lo que ganarás todo el año.

Desde el punto de vista de cualquier fabricante de IC, no tiene sentido diseñar un IC personalizado para el cual existe una demanda limitada. Saben que la misma función se puede hacer programando un IC existente. Quieren ganancias en sus inversiones de desarrollo, en su lugar diseñarán otros circuitos integrados.

Aparte de eso, es usar un microcontrolador para "chupar" o hay satisfacción al saber que has elegido bien el diseño :-)

    
respondido por el TonyM
1

No, puedo decir con seguridad que esto no es un IC predefinido listo para usar que hace lo que usted quiere. Podría tener esto diseñado como un ASIC, pero un microcontrolador sería más simple y, según su volumen, más barato. También puede implementar esto en su USB a un microcontrolador I2C para no agregar un segundo.

Alternativamente, si tiene un volumen o un agujero de grabación suficientemente alto en su billetera, el fabricante del expansor podría diseñar una versión personalizada con el estado de inicio deseado.

    
respondido por el Passerby
1

Me gusta la respuesta de @Michael Karas, pero en caso de que el microcontrolador a bordo no sea algo con lo que quieras meterte (p. ej., curva de aprendizaje + recursos para programar), entonces podrías ir al otro lado y reemplazar la gran PC con algo pequeño y simple como una Raspberry Pi u otro controlador integrado pequeño.

Por ejemplo, este $ 20 LCD + switch hat de Adafruit le permitirá mostrar texto y leer los botones pulsados.

Puede ejecutar automáticamente un programa Python que lee un archivo de texto en la tarjeta SD, muestra las configuraciones en la pantalla LCD, permite al usuario desplazarse a través de la selección y una pulsación de botón puede enviar los datos de I2C.

Si necesita incluso más pequeño y más barato, puede usar una Raspberry Pi Zero ($ 5 o $ 10), aunque necesitará un adaptador de cable USB para obtener un receptáculo de tamaño completo (USB Tipo A) para su dispositivo de prueba. Los "sombreros" LCD + Switch también están disponibles para el RPi Zero también.

De todos modos, utilizar una pequeña y barata computadora Linux sería una forma sencilla de preconfigurar su banco de pruebas para realizar pruebas básicas. Con la configuración correcta puede ser barato y simple para que un cliente opere. Tener un sistema operativo completo le permite escribir en un lenguaje de nivel superior como Python, no tendría que comprar ninguna herramienta de desarrollo (gratuita en Linux), puede aprovechar las potentes capacidades de red, puede configurarlo utilizando archivos de texto simples para reconfigurar Sería cuestión de editar un archivo de texto en su tarjeta SD, incluso puede que desee reemplazar su MCU USB a I2C con un RPi Zero u otra computadora con Linux (estas placas tienen I2C, SPI, PWM, GPIO, ADC , etc incorporado en.

En algún momento, es posible que se dé cuenta de lo poderoso, simple y económico que es Linux y estas diminutas computadoras integradas que ejecutará sus pruebas en lugar de una gran PC. Ahí es donde he terminado :)

    
respondido por el Vince Patron
0

Hay muchos de estos chips que varían en tamaño 1k ... 512k con varias velocidades y rangos de bajo voltaje.

enlace
enlace
enlace

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas