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!! :-)
Idle ist der Ruhezustand. Also der Zustand, zu dem der Takt zurückkehrt, wenn sich nichts tut.
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...
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.
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
> 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...
> ?? 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
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.