Múltiples dispositivos SPI con diferentes niveles lógicos

Voy a usar uno de los periféricos SPI PIC32MX795F512L (maestro), de 1 a 4 MHz, para comunicarme con varios dispositivos (esclavos):

  • Módulo Wi-Fi MRF24WG0MA (3.3V);
  • tarjeta uSD (3,3 V);
  • 9 módulos con sensores y ADCs con SPI, en sus propias placas, conectados a la placa principal a través de cables de 10cm (alimentados por 5.0V desde la placa principal);
  • 3 módulos opcionales externos con sensores y ADC con SPI, en sus propias placas, conectados a la placa principal a través de cables de 25 cm (alimentados con 5,0 V desde la placa principal).

Solo puedo usar un SPI en la MCU ya que todos los demás ya tienen sus pines en uso. Tengo suficientes pines para las líneas CS.

Las placas de sensores pueden tener cualquier ADC con SPI, actualmente estoy usando MCP3551 y AD7798 . Si algún ADC no habilita el pin MISO solo cuando se afirma su entrada CS, usaré un búfer de entrada (5V) en su placa respectiva para la línea MISO, activado con la señal CS.

Usaré una resistencia en serie con la salida del dispositivo de control para la terminación de línea como se describe en la Guía del diseñador LVC de TI .

Para la traducción de nivel lógico usaré:

  • Búferes de bus cuádruple 74AHCT125 para 3,3 V a 5,0 V en la placa principal (SCK, CS y MOSI de MCU a los módulos ADC).

  • Transceptores de bus octal 74LVC245A en la placa principal para traducción de voltaje de nivel lógico de 5,0 V a 3,3 V, desde los pines MISO de los ADC de los módulos.

Nunca antes había trabajado con estos amortiguadores. No sé si el 74LVC245A tiene salidas de colector abierto. ¿Puedo unir y conectar todas las salidas 74LVC245A directamente al pin MISO MCU, como hago con los pines MISO de los periféricos de 3.3V?

Editar: etiquetas añadidas.

¿Alguno de estos tal vez? flikto.de/collections/breakouts-logic : por supuesto, también se puede obtener algo similar en otras tiendas.
Gracias, pero como estoy usando SPI, no necesito un convertidor de nivel lógico bidireccional.
Me imagino que realmente solo necesitaría un traductor de nivel en la línea MISO, y luego solo uno, ya que el micro puede controlar una de las líneas SPI directamente, CS, SCK y MOSI son salidas del micro (supongo que el micro es de 3,3 V) y los niveles de 3,3 V probablemente sean suficientes para impulsar entradas SPI de 5 V. No es bonito, pero como un truco rápido, puede estar bien
@Tom, usaré un traductor de nivel para cada MISO porque algunos dispositivos SPI no habilitan el MISO solo cuando se afirma su entrada CS. Así que imagino que al usar un traductor de nivel para cada MISO (habilitado por su respectiva línea CS) no tendría que preocuparme por eso. Sí, el micro usa 3.3V. De una de las hojas de datos de los esclavos SPI, el MCP3551 , VIH (CS, SCK) min.=0.7VDD (3.5V). Tal vez también funcione con 3.3V, pero debo asegurarme de que siempre funcione.
Ah, bueno, en ese caso, ¿qué tal vincular todos los dispositivos spi que usan los mismos niveles en el micro directamente y solo tener un conjunto completo de traductores de nivel para el otro riel? De esa manera, está ejecutando un solo bus maestro SPI de 3.3V y un solo bus maestro SPI de 5V, en lugar de que cada dispositivo tenga su propio traductor. ¿Sería eso aplicable a su sistema?

Respuestas (1)

El 74LVC245A tiene salidas de tres estados ; tomando el O mi ¯ pin low habilita la comunicación de A a B o B a A (dependiendo del nivel en el pin DIR).

Las salidas pueden tener un estado de Alta, Baja y Alta impedancia (Z).

Por lo tanto, no puede unir las salidas, ya que son salidas push-pull cuando están habilitadas.

Puede seguir el '245A con un multiplexor para usar un solo pin en el micro.

Además, mire el primer párrafo de la hoja de datos, indica claramente que "OE controla las salidas para que los buses estén efectivamente aislados".
Gracias. Creo que usaré el 74LVC125A en lugar del 74LVC245A, ya que tiene un pin de habilitación de salida para cada línea (que se puede usar con la línea CS respectiva).