Hallo an alle! Es geht um die Datenübertragung per SPI mit einem MSP340. Wenn ich ein Zeichen übertrage, bei dem das letzte Bit HIGH ist, dann bleibt die entsprechende Datenleitung bis zum nächsten Zeichen auf HIGH nachdem das Zeichen übertragen wurde. Wenn aber bei dem zu übertragenden Zeichen das letzte Bit LOW ist, dann bleibt die Leitung auf LOW. Ist das normal? Gibt es bei SPI keinen definierten Ruhezustand, den die Datenleitungen annehmen, wenn gerade keine Übertragung erfolgt? Danke schon mal für jede Antwort!!!
Hallo, nein, gibt es nicht. Den Zustand der Taktleitung kann man festlegen, je nach gewünschtem SPI-Mode. Der Zustand der Datenleitung ist doch uninteressant, weil ohne passende Taktflanke sich dafür ja keiner interessiert. Gruß aus Berlin Michael
Vielen Dank für die Antwort! Was ist aber, wenn mehrere Slaves auf der SOMI-Leitung hängen und einer die Leitung nach der Übertragung auf HIGH hält und der nächtste Übertragen will?
noips schrieb: > Was ist aber, wenn mehrere Slaves auf der SOMI-Leitung hängen und einer > die Leitung nach der Übertragung auf HIGH hält und der nächtste > Übertragen will? Es gibt Slaves mit Select-Leitung und welche ohne. Mit solcher Leitung wird die Leitung vom Slave bei inaktivem Select hochohmig geschaltet und das Problem tritt nicht auf. Ohne solche Leitung ist dieser SPI-Bus ausschliesslich für diesen einen Slave verwendbar. Das hängt nicht vom Pegel ab, ob low oder high ist dabei egal.
noips schrieb: > Was ist aber, wenn mehrere Slaves auf der SOMI-Leitung hängen und einer > die Leitung nach der Übertragung auf HIGH hält Das darf er nicht, jeder Slave muß nach /CE = 1 in tristate gehen. Und der Master muß natürlich für jeden Slave ein eigenes /CE erzeugen. Es darf immer nur ein /CE = 0 sein. Peter
Danke! Ich verwende eben einen Slave mit Select-Leitung (low active) und auch nachdem das Zeichen übetragen wurde und die zugehörige Select-Leitung wieder auf HIGH gesetzt wurde bleibt die Datenleitung auf HIGH. Der zuletzt übertragende Slave ist eigentlich schon deaktiviert hält die Leitung aber trotzdem auf HIGH.
Aktiv auf high gezogen, oder passiver Pullup? Manche SPI-Slaves haben schwache Pullups an den Pins, bei der Select-Leitung ist das auch sehr nützlich.
Pull up in den Datenleitungen? Um was für einen Slave handelt es sich? Wie hast du das "Die Leitung ist aber trotzdem auf HIGH" gemessen?
>Aktiv auf high gezogen, oder passiver Pullup? Manche SPI-Slaves haben >schwache Pullups an den Pins, bei der Select-Leitung ist das auch sehr >nützlich. Aktiv, mit einem µC-Portpin. >Pull up in den Datenleitungen? >Um was für einen Slave handelt es sich? >Wie hast du das "Die Leitung ist aber trotzdem auf HIGH" gemessen? Kein Pull up in den Datenleitungen. Slave ist ein Serial Interface des MSP430 im SPI-Slave-Mode. Gemessen mit Oszi.
noips schrieb: > Kein Pull up in den Datenleitungen. Slave ist ein Serial Interface des > MSP430 im SPI-Slave-Mode. Gemessen mit Oszi. Der MSP430 gibt also die MISO-Leitung bei inaktivem SS nicht frei? Schande über ihn und Pech für dich.
> und die zugehörige Select-Leitung wieder auf HIGH gesetzt wurde bleibt die
Datenleitung auf HIGH.
Was mir eben erst aufgefallen ist. Die Select Leitung sollte doch eher
auf LOW gehen nach der Kommunikation.
Manual vom nächstbesten MSP430 ('149) sagt aber: "When STE is high, RX/TX operation of the slave is disabled and SOMI is forced to the input direction.". Wie es sich gehört.
Gast schrieb: > Was mir eben erst aufgefallen ist. Die Select Leitung sollte doch eher > auf LOW gehen nach der Kommunikation. Andersrum, die ist üblicherweise active low.
>Was mir eben erst aufgefallen ist. Die Select Leitung sollte doch eher >auf LOW gehen nach der Kommunikation. Sie ist als low active konfiguriert, also das müsste passen.
Ok ihr dürft meinen letzten Post getrost ignorieren. Das HIGH LOW hat mich etwas vom rechten Pfad abgebracht :) Funktioniert das Senden und Empfangen der Daten eigentlich korrekt?
Ich habe jetzt die Pause zwischen den Zeichen länger gemacht und sehe, dass die Spannung an der Datenleitung abfällt (Kondensatorentladekurve). Wenn ich einen Pull down an sie hänge, dann fällt die Spannung schneller ab.
>Funktioniert das Senden und Empfangen der Daten eigentlich korrekt?
Ja, das schon, mit einem Slave allerdings. Geplant sind aber mehrere.
noips schrieb: > Ich habe jetzt die Pause zwischen den Zeichen länger gemacht und sehe, > dass die Spannung an der Datenleitung Dann ist doch alles ok, und es ist eben kein aktiver Pullup, nicht mal ein passiver, sondern das natürliche Verhalten einer offen hängenden Leitung. Kein Konflikt mit anderen Slaves zu erwarten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.