Espero conectar un microcontrolador de 3.3V ARM M4 a un bus de datos ya establecido de 5V, y hacer que responda a interrupciones para leer datos del bus o escribir datos en el bus. El bus de datos se encuentra entre una CPU de 5 V (m68000) y un flash de 3,3 V. Para hacer esto de manera segura, estoy planeando usar SN74LVCH16245As para traducir entre 5V y 3.3V.
El sistema ya tiene 3 líneas de control que son útiles.
1) Uno es bajado cuando necesita leer / escribir en flash.
2) Otro problema es bajo cuando se necesita leer / escribir en el sistema ARM. Estoy tratando de establecer una interfaz con el bus de datos.
3) Y finalmente otra línea de control para determinar si está leyendo (5V) o escribiendo (0V).
Mi plan es que las líneas de datos de la CPU pasen de un SN74LVCH16245A al flash, con habilitación de salida (OE) en el SN74LVCH16245A conectada a la primera línea de control. Sin embargo, antes de que las líneas de datos se conecten a ese SN74LVCH16245A, se dividen con las vías a otro SN74LVCH16245A que luego se conecta a los pines ARM GPIO, con la segunda línea de control como habilitación de salida para ese SN74LVCH16245A.
Me gusta esto:
FLASH ----- ------- ARM
|
SN74LVCH16245A SN74LVCH16245A
|
-------------------
CPU
Eso significa que solo un SN74LVCH16245A debe tener activado el pin de habilitación de salida al mismo tiempo. Por lo tanto, el bus de datos solo es usado por el flash o el chip de brazo al mismo tiempo. Este debería resolver la contención del bus.
Mi problema está en el lado ARM, y cómo debo configurar los pines GPIO para entradas y salidas. Digamos que una interrupción llega desde el sistema y quiere LEER un byte al chip ARM. La interrupción llegará, la ARM establecerá sus pines para que sean SALIDAS, y luego puedo configurar los datos en los pines y terminar la interrupción. El ARM mantendrá esos pines en SALIDA hasta que se le indique lo contrario. Pero, ¿y si la siguiente interrupción es un comando ESCRIBIR? El SN74LVCH16245A cambiará de dirección, y el lado del SN74LVCH16245A que se conecta a la ARM será SALIDA, pero la ARM todavía tendrá sus pines GPIO configurados en SALIDA. Eso sería un problema, ¿no?
Mirando la documentación técnica para el chip ARM, toma 10 ciclos antes de que el chip ARM inicie la primera línea de su código de interrupción, si no usa la unidad de punto flotante. A 120MHz, eso es 83 nano segundos. Por lo tanto, no podré cambiar los pines GPIO a ENTRADAS durante al menos 95 nano segundos o menos. ¿Esto no causará daño al ARM o al SN74LVCH16245A? Si esto es eléctricamente correcto tener la salida del SN74LVCH16245A frente a las SALIDAS de la ARM (y viceversa, las ENTRADAS del SN74LVCH16245A frente a las ENTRADAS de la ARM en la situación inversa), entonces, excelente, pero quiero confirmar con gente más informada que yo primero antes de burlarme de mi primer PCB.
Si eso no es eléctricamente correcto, tuve otra idea de cómo posiblemente conectar el chip ARM al bus de datos: tener una mitad de 8 bits del SN74LVCH16245A conectado a los pines de la ARM que siempre están configurados como ENTRADAS, y los otros 8 bits la mitad del SN74LVCH16245A se conectó a diferentes pines en el chip ARM como SALIDAS, y en base a la interrupción puedo mirar el pin de lectura / escritura y determinar qué quiere que haga la interrupción, ya sea leer desde las primeras 8 líneas o escribir al Segundo conjunto de 8 líneas. Las habilitaciones de salida del SN74LVCH16245A se establecerían utilizando la segunda línea de control mencionada anteriormente, ANDed con la línea de control de lectura / escritura, o ANDed con la inversa de la línea de lectura / escritura, respectivamente.
Si pudiera resolver este problema de una manera mucho mejor, realmente espero saber de usted lo que podría hacer mejor. ¿Hay un dispositivo más adecuado para lo que estoy haciendo que el SN74LVCH16245A? Soy un principiante en electrónica, pero he estado pensando en esto durante mucho tiempo y me di cuenta de que realmente necesito pedir consejos en lugar de solo reflexionar sobre ello en mi cabeza todos los días.
Gracias a todos.