Forum: Mikrocontroller und Digitale Elektronik Frage zur AVR-SPI-Schnittstelle


von Roland F. (rhf)


Lesenswert?

Hallo,
ich habe eine Verständnisfrage zur SPI-Schnittstelle der 
AVI-Mikrokontroller.
Folgende Ausgangssituation:
Der MOSI-Pin des Kontrollers (als Master) ist an dem Eingang eines 
Slaves angeschlossenen. Dessen Ausgang ist wiederum mit dem MISO-Pin des 
Kontollers verbunden.

Die Übertragung startet wenn das SPDR-Register des Kontrollers mit dem 
zu übertragenden Wert beschrieben wird. Mit jedem SPI-Taktsignal wird 
ein Bit vom Master in den Slave und gleichzeitig ein Bit vom Slave in 
den Master geschoben. Die "Slave->Master-Bits" werden im Master in einem 
Puffer zwischengespeichert und am Ende der Übertragung in das 
SPDR-Register des Masters geladen.

Ist das so richtig?

rhf

von Falk B. (falk)


Lesenswert?

Passt.

von au weia (Gast)


Lesenswert?

Roland F. schrieb:
> Ist das so richtig?

Ja schon.

Aber eine Kleinigkeit:

Roland F. schrieb:
> SPI-Schnittstelle

Eine SPI-Schnittstelle ist eine Serial Peripheral Interface 
Schnittstelle.

Merkst du was? Weisser Schimmel, LCD-Display, kleiner Zwerg...

"SPI-Interface" ist auch nichts anderes.

von unwissender (Gast)


Lesenswert?

Roland F. schrieb:
> Mit jedem SPI-Taktsignal wird
> ein Bit vom Master in den Slave und gleichzeitig ein Bit vom Slave in
> den Master geschoben.

Habe noch nie mit SPI gearbeitet
Geht da tatsächlich ein Bit hin und eines her, warum bidirektional, wenn 
ich nur senden oder nur empfangen will, was ist das dann für ein anderes 
Bit?

von au weia (Gast)


Lesenswert?

unwissender schrieb:
> Habe noch nie mit SPI gearbeitet

Für Unwissende gibt es Serial Peripheral Interface. So wie
es viele andere Artikel hier online gibt ...

von Stefan F. (Gast)


Lesenswert?

unwissender schrieb:
> wenn ich nur senden oder nur empfangen will,

dann lässt du halt die andere Leitung unbeschaltet. Bei vielen 
Mikrocontrollern kannst du die nicht benutzten Pins unabhängig von SPI 
für andere Zwecke nutzen.

von Pandur S. (jetztnicht)


Lesenswert?

SPI hat zwei wichtige, nicht zu vergessende Punkte :
- was geschieht beim Reset, beim Programmieren des controllers.
- Wie lese ich von einem SPI device.

von au weia (Gast)


Lesenswert?

Pandur S. schrieb:
> - was geschieht ....

Warum stellst du hier Fragen die du selbst beantworten kannst
von denen auch niemand etwas wissen wollte?

von Purzel H. (hacky)


Lesenswert?

> - was geschieht beim Reset, beim Programmieren des controllers.

Beim Reset sind die Pins in tristate. Was bewirkt das ? Allenfalls mag 
eine angeschlossene Funktionalitaet keinen Tristate, dann sollte man an 
diese Ports eine Pullup, oder pulldown haben.

was geschieht beim Programmieren per SPI. Dann werden die SPI Pins vom 
Programmer angesteuert. Was bewirkt das mit angeschlossenen 
Funktionalitaeten ? Die Pins sind grad so angesteuert, dass sich auch 
ein externes SPI Device beschreiben, falls eins angeschlossen waere und 
den SPI Chipselect low haette. Den SPI chipselect des externen devices 
muss also auf high sein.

Was vergessen wurde : Was geschieht wenn der Controller noch nicht 
programmiert wurde, ? Dann sind die Pins auch auf Tristate. Dann sollte 
ebenfalls nichts abrauchen.

Das alles findet man aber durch die Fragestellung selbst raus.

von soisses (Gast)


Lesenswert?

unwissender schrieb:
> Geht da tatsächlich ein Bit hin und eines her, warum bidirektional, wenn
> ich nur senden oder nur empfangen will, was ist das dann für ein anderes
> Bit?

Die Sonne geht auch morgens auf, egal ob DU Licht brauchst oder nicht.
So ist SPI nun mal.
Das gesendete Bit ist das, was im SPI Senderegister steht, das 
empfangene ist der Pegel der bei der Taktflanke auf der entsprechenden 
Schnittstellenleitung liegt.
Was anderes kann SPI nicht - sonst ist es kein SPI.

von Stefan F. (Gast)


Lesenswert?

SPI Peripherie die empfindlich auf zufällige Daten reagiert hat 
sinnvollerweise eine eng definierte Initialisierungs-Sequenz. Zum 
Beispiel SD Karten.

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.