SPI-Bus, wo kommt der Pegel her?

Ich würde gern Wissen, wo die Bus-Pegel her kommen. Im Internet finde ich nicht eindeutige Beschreibungen. Vielleicht habe ich es auch nur nicht gefunden, und ihr könnt mir einen Link zeigen.

Auf mikrocontroller.net gibt es eine gute Erklärung.

Die Übertragung geschieht so, dass der Master seine Datenleitung (MOSI) auf den Pegel des nächsten Bits bringt und dann an der SCK Leitung einen Puls ausgibt. Gleichzeitig wird vom Master der Pegel an der Datenleitung vom Slave zum Master überwacht und ihr Zustand als nächstes einzulesendes Bit aufgefasst.

Nur geht es, zumindest für mein Verständnis, nicht sicher hervor, ob der Master den Pegel treibt, oder ob der Pegel über die PullUps kommt, und nur gegen GND gezogen wird (wie beim I²C-Bus).

Weiteres Googln bracht auch:

also ich denke du benötigst überhaupt keine Pullup-Widerstände, der Master treibt ja normalerweise die Signale MOSI und SCK aktiv nach low und auch nach high.

Natürlich muss das nicht stimmen.

Und wie verhält es sich, wenn PullUps, durch etwaige Module (Slave) auf dem Bus sitzen? Da dies öfters vorkommt, ist es vielleicht doch so, das PullUps den Pegel bestimmen und nicht der Master?

Vielleicht könnte einer der Profis Aufklärung bringen, Danke.

Wo?

Ansonsten Applikation Notes.

Zum Beispiel das BMP280 Modul aus dem anderen Thread. Dies hat PullUps am Bus. Es kann natürlich sein, das die nur dazu da sind, damit der I²C Modus funktioniert. Aber wie wirkt sich das auf den SPI-Bus aus? Die PullUps werden ja nicht aus der Schaltung entfernt nur weil man den SPI-Bus nutzt.

Aber ich habe inzwischen etwas weiter gegoogelt und es scheint so zu sein, das der Master MOSI und SCK treibt, und der Slave MISO treibt.

Solange diese Pullups nicht zu klein sind, beeinflussen sie ein Signal am SPI nur unwesentlich. Wirklich benötigt werden sie nur , wen I2C verwendet wird. Ein L- Signal auf dem SPI bus kann mit z.B einem 10kOhm Pullup noch problemlos den L-Pegel erreichen, so dass Master als auch Slave dies eben auch als L erkennen kann.

Aber der SPI-Bus kommt ohne Pullups aus.

Danke für die Aufklärung.

Die Ausgangspins der Slaves des SPI Busses sind Tristate-Ausgänge. Sie konnen ca Versorgungspannung , Masse ausgeben oder bei CS LOW hochohmig sein. So können mehrere Ausgänge zusammengeschaltet werden ohne daß sie kaputtgehen.

I2C Ausgänge sind Open Kollektor oder Open Drain Ausgänge. Diese sind entweder auf Masse oder hochohmig. Daum braucht man Pullup-Widerstände oder I2C Bus Acceleratoren um ein HIGH Signal zu bekommen.

Grüße Uwe

2 Likes