Forum: Mikrocontroller und Digitale Elektronik Ruhezustand an SPI-Datenleitungen definiert??


von noips (Gast)


Lesenswert?

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!!!

von Michael U. (amiga)


Lesenswert?

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

von noips (Gast)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von noips (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

Wenn aktiver Pullup: Was für ein Slave ist das?
Abhilfe dann: 74HC125 dazwischen.

von noips (Gast)


Lesenswert?

>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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

> 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.

von (prx) A. K. (prx)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von noips (Gast)


Lesenswert?

>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.

von Gast (Gast)


Lesenswert?

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?

von noips (Gast)


Lesenswert?

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.

von noips (Gast)


Lesenswert?

>Funktioniert das Senden und Empfangen der Daten eigentlich korrekt?

Ja, das schon, mit einem Slave allerdings. Geplant sind aber mehrere.

von (prx) A. K. (prx)


Lesenswert?

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.

von noips (Gast)


Lesenswert?

OK! Danke an alle!!!

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
Noch kein Account? Hier anmelden.