Forum: Mikrocontroller und Digitale Elektronik SPI, was ist der Clock idle?


von Johnny K. (johnny_knoxville)


Lesenswert?

Hallo

Bin gerade dabei mich über SPI zu informieren, und lese mir den Artikel 
auf wikipedia.org durch. Versteh aber Folgendes nicht:

"Bei CPOL=0 ist der Clock Idle Low, bei CPOL=1 ist er Idle High."

Was ist bitte der "Clock Idle"???

Wäre dankbar für eine Hilfe!! :-)

von Hc Z. (mizch)


Lesenswert?

Idle ist der Ruhezustand.  Also der Zustand, zu dem der Takt 
zurückkehrt, wenn sich nichts tut.

von mui (Gast)


Lesenswert?

Das bedeutet, dass der Clock im Ruhezustand, also wenn keine Übertragung 
stattfindet entweder high ist, oder low. Bei einer Übertragung wird er 
dann auf low, bzw. auf high gezogen.
Darüber hinaus gibt es dann noch eine Einstellung mit der festgelegt 
wird, ob Daten an der fallenden oder an der steigenden Flanke übernommen 
werden sollen...

von Johnny K. (johnny_knoxville)


Lesenswert?

Danke!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Der Clock kann machen, was er will, solange kein Slave adressiert ist. 
Was jetzt aber tatsächlich der Idle-Pegel beim SPI-Clock ist, das wird 
bei der fallenden Flanke vom Slave-Select festgelegt.

Denn es könnte ja durchaus sein, dass ich 4 Slaves am SPI habe:
einen mit Mode 0, einen mit Mode 1 usw. bis Mode 3.
Dann müsste der Idle-Pegel des Taktes beim Umschalten zwischen den 4 
Slaves hin- und herwechseln.

von Michael U. (amiga)


Lesenswert?

Hallo,

Lothar Miller schrieb:
> Der Clock kann machen, was er will, solange kein Slave adressiert ist.
> Was jetzt aber tatsächlich der Idle-Pegel beim SPI-Clock ist, das wird
> bei der fallenden Flanke vom Slave-Select festgelegt.

?? Slave-Select ist ein Eingang, der den SPI vom Master in den Slavemode 
umschaltet.

> Denn es könnte ja durchaus sein, dass ich 4 Slaves am SPI habe:
> einen mit Mode 0, einen mit Mode 1 usw. bis Mode 3.
> Dann müsste der Idle-Pegel des Taktes beim Umschalten zwischen den 4
> Slaves hin- und herwechseln.

Genau das muß er dann indem der Mode entsprechend gesetzt wird bevor das 
Select für den Slave aktiv wird. Dein SlaveSelect heißt dann z.B. ja 
auch Chip-Select und ist ein normaler I/O, der mit dem SPI in Hardware 
nichts zu tun hat.

Oder habe ich Dich mißverstanden?

Gruß aus berlin
Michael

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Oder habe ich Dich mißverstanden?
Vermutlich ja.

Eine übliche SPI-Verbindung zwischen einem Master und einem Slave hat 
die Leitungen MISO, MOSI, SCLK und SS. Der Slave-Select SS zeigt den 
Beginn und das Ende einer Übertragung an.
Dazu das altbekannte Bild:
http://www.lothar-miller.de/s9y/categories/17-SPI

> Slave-Select ist ein Eingang, der den SPI vom Master in den Slavemode
> umschaltet.
Slave-Select ist ein Pin am Slave der den entsprechenden Slave auswählt. 
Mit SS='0' wird ein bestimmter Slave auf dem SPI-Bus ausgewählt.

> Slave-Select ist ein Eingang, der den SPI vom Master in den Slavemode
> umschaltet.
Das wäre ja eine dynamische Umschaltung.
Mit 2 oder mehr Mastern am SPI-Bus mußt du aber herb aufpassen, dass es 
keinen Buskonflikt gibt...

von Peterle A. (Firma: keine) (wanderameise)


Lesenswert?

> ?? Slave-Select ist ein Eingang, der den SPI vom Master in den Slavemode
> umschaltet.

nein!
Mittels slave select wählst du denjenigen slave aus, für den die daten 
bestimmt sind!
Nur wenn gleichzeitig der takt da ist und slave select auf low, sind die 
daten valide.
möchtest du 4 slaves seperat ansprechen brauchst du auch 4 slave select 
leitungen!



> Genau das muß er dann indem der Mode entsprechend gesetzt wird bevor das
> Select für den Slave aktiv wird. Dein SlaveSelect heißt dann z.B. ja
> auch Chip-Select und ist ein normaler I/O, der mit dem SPI in Hardware
> nichts zu tun hat.

???
der idle pegel definiert nur den zustand der clk, wenn gerade keine 
daten rausgetaktet werden sollen!
zudem musst du definieren ob die daten bei fallender oder steigender 
flanke übernommen werden sollen!

schau doch mal hier
http://www.8051projects.net/e107_files/public/1234921860_15347_FT18372_zilog_spi_sck_.jpg

von Michael U. (amiga)


Lesenswert?

Hallo,

Peterle Anonym schrieb:
>> ?? Slave-Select ist ein Eingang, der den SPI vom Master in den Slavemode
>> umschaltet.
>
> nein!
> Mittels slave select wählst du denjenigen slave aus, für den die daten
> bestimmt sind!
> Nur wenn gleichzeitig der takt da ist und slave select auf low, sind die
> daten valide.
> möchtest du 4 slaves seperat ansprechen brauchst du auch 4 slave select
> leitungen!

Gut, wir reden von verscheidenen Sachen. SS (SlaveSelect) heitß das Pin 
an AVR-µC, daß den AVR vom Master- in den Slavemode umschaltet.

Bei allen SPI-ICs, die ich als Slave hier so habe (DAC, PLL usw.) gibt 
es eib /CS (ChipSelect) bzw. ein /CE (ChipEnable), jedoch kein 
SlaveSelcet.

Könnte man natürlich so nennen, steht aber so nicht in den 
Datenblättern.

Die Slaves wollen in dem Mode angesprochen werden, den der Hersteller 
unterstützt (Mode 0...3). Darin ist ja die Spezifikation von ClockIdle 
schon enthalten. Wenn ich z.B. 3 Byte über SPI sende und der Slave will 
ClockIdle = H dann muß der Master das eben so machen. In den Pausen 
zwischen den Bytes muß eben Clock auf dem geforderten Pegel sein, der 
Chip bleibt dabei durchaus selektiert...

Gruß aus Berlin
Michael

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Bei allen SPI-ICs, die ich als Slave hier so habe (DAC, PLL usw.) gibt
> es ein /CS (ChipSelect) bzw. ein /CE (ChipEnable)...
Ja, dann hätte ich da noch die Begriffe SYNC, FRAME und sogar LATCH im 
Angebot.

> Könnte man natürlich so nennen, steht aber so nicht in den Datenblättern.
Richtig, aber gerade weil das jeder so macht wie er gerade lustig ist, 
heißen die Dinger bei mir alle Slave-Select. Und natürlich auch, weil es 
von Motorola ursprünglich so vorgesehen war ;-)

BTW:
Atmel ist sich selber nicht so ganz einig. In der Appnote AVR320 heißt 
der Pin vom Flash /SS, im passenden Datenblatt vom Flash /CS

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.