Mehrere SPI-Geräte mit unterschiedlichen Logikpegeln

Ich werde eines der PIC32MX795F512L SPI-Peripheriegeräte (Master) mit 1 bis 4 MHz verwenden, um mit mehreren Geräten (Slaves) zu kommunizieren:

  • Wi-Fi-Modul MRF24WG0MA (3,3 V);
  • uSD-Karte (3,3 V);
  • 9 Module mit Sensoren und ADCs mit SPI, auf eigenen Platinen, verbunden mit der Hauptplatine über 10 cm lange Kabel (mit 5,0 V von der Hauptplatine versorgt);
  • 3 externe optionale Module mit Sensoren und ADCs mit SPI, auf eigenen Platinen, verbunden mit der Hauptplatine über 25-cm-Kabel (mit 5,0 V von der Hauptplatine versorgt).

Ich kann nur einen SPI in der MCU verwenden, da alle anderen ihre Pins bereits verwenden. Ich habe genug Pins für die CS-Leitungen.

Die Sensorplatinen können jeden ADC mit SPI haben, derzeit verwende ich MCP3551 und AD7798 . Wenn einige ADC den MISO-Pin nicht nur aktivieren, wenn ihr CS-Eingang aktiviert ist, verwende ich einen Eingangspuffer (5 V) in ihrer jeweiligen Platine für die MISO-Leitung, die mit dem CS-Signal aktiviert wird.

Ich werde einen Widerstand in Reihe mit dem Ausgang des Treibergeräts für den Leitungsabschluss verwenden, wie im LVC Designer's Guide von TI beschrieben .

Für die Übersetzung auf Logikebene verwende ich:

  • Vierfach-Buspuffer 74AHCT125 für 3,3 V bis 5,0 V in der Hauptplatine (SCK, CS und MOSI von MCU zu den Modul-ADCs).

  • Oktal-Bus-Transceiver 74LVC245A auf der Hauptplatine für die Übersetzung der Logikpegelspannung von 5,0 V auf 3,3 V von den ADCs-MISO-Pins des Moduls.

Ich habe noch nie mit diesen Puffern gearbeitet. Ich kann nicht herausfinden, ob der 74LVC245A Open-Collector-Ausgänge hat. Kann ich alle 74LVC245A-Ausgänge direkt mit dem MCU-MISO-Pin verbinden und verbinden, wie ich es mit MISO-Pins von 3,3-V-Peripheriegeräten mache?

Edit: Tags hinzugefügt.

Irgendwelche davon vielleicht? flikto.de/collections/breakouts-logic - Ähnliches gibt es natürlich auch bei anderen Shops.
Danke, aber da ich SPI verwende, brauche ich keinen bidirektionalen Logikpegelwandler.
Ich stelle mir vor, dass Sie nur einen Level-Übersetzer auf der MISO-Leitung benötigen würden, und dann nur einer, da das Mikro eine der SPI-Leitungen direkt ansteuern kann, CS, SCK und MOSI sind alle Ausgänge des Mikros (ich gehe davon aus, dass die Mikro ist 3,3 V) und die 3,3-V-Pegel reichen wahrscheinlich aus, um 5-V-SPI-Eingänge zu treiben. Nicht schön, aber als schneller Hack kann es in Ordnung sein
@Tom Ich verwende für jedes MISO einen Übersetzer auf einer Ebene, da einige SPI-Geräte das MISO nicht nur dann aktivieren, wenn ihre CS-Eingabe aktiviert ist. Ich denke also, wenn ich für jedes MISO einen Level-Übersetzer verwende (der durch die jeweilige CS-Zeile aktiviert wird), müsste ich mir darüber keine Gedanken machen. Ja, das Mikro verbraucht 3,3 V. Aus einem der SPI-Slave-Datenblätter, dem MCP3551 , VIH (CS, SCK) min. = 0,7 VDD (3,5 V). Vielleicht funktioniert es auch mit 3,3V, aber ich muss dafür sorgen, dass es immer funktioniert.
Ah, nun, was wäre in diesem Fall, wenn Sie alle Spi-Geräte, die dieselben Pegel verwenden, direkt an das Mikro binden und nur einen vollständigen Satz von Pegelübersetzern für die andere Schiene haben. Auf diese Weise betreiben Sie sozusagen einen einzelnen 3,3-V-SPI-Masterbus und einen einzelnen 5-V-SPI-Masterbus, im Gegensatz dazu, dass jedes Gerät seinen eigenen Übersetzer hat. Wäre das auf Ihr System anwendbar?

Antworten (1)

Der 74LVC245A hat Tri-State- Ausgänge; nehmen die Ö E ¯ Pin Low ermöglicht die Kommunikation von A nach B oder B nach A (je nach Pegel am DIR-Pin).

Die Ausgänge können einen Zustand hoher, niedriger und hoher Impedanz (Z) haben.

Sie können die Ausgänge daher nicht miteinander verbinden, da es sich bei Aktivierung um Push-Pull-Ausgänge handelt.

Sie könnten dem '245A mit einem Multiplexer folgen, um einen einzelnen Stift am Mikro zu verwenden.

Schauen Sie sich auch den ersten Absatz des Datenblatts an, er zeigt deutlich an, dass "OE die Ausgänge so steuert, dass die Busse effektiv isoliert sind".
Danke schön. Ich denke, ich werde den 74LVC125A anstelle des 74LVC245A verwenden , da er einen Ausgangsfreigabestift für jede Leitung hat (der mit der jeweiligen CS-Leitung verwendet werden kann).