Warum ist die serielle Ausgabe von Schieberegistern von anderen versetzt?

Ich habe meine Schaltung debuggt, die TI SN74HC595- Schieberegister verwendet , die ich verkettet habe. Ich übertrage Daten mit einem Arduino und einer SPI-Bibliothek an ihr erstes Schieberegister, da es schneller ist als Bit-Banging.

Folgendes habe ich am Eingang des ersten Schieberegisters:

Schieberegister 1

  • Kanal 1 (gelb) ist der CLK-Pin des Arduino, der zum SRCLK-Pin des Schieberegisters geht
  • Kanal 2 (blau) ist der MOSI-Pin des Arduino, der zum SER-Pin des Schieberegisters geht

Mit SPIMODE0, dh. Daten werden an der steigenden Flanke der Uhr gelesen, wir können sehen, dass dieses Bild korrekt zu sein scheint.

Beim Daisy-Chaining verbinde ich den seriellen Ausgang Qh' vom ersten Schieberegister mit dem SER-Pin des zweiten Schieberegisters, der CLK bleibt gleich und ist mit beiden Schieberegistern verbunden.

Hier ist, was ich für die Eingänge des zweiten Schieberegisters habe, die vom seriellen Ausgang des ersten Schieberegisters gespeist werden:

Schieberegister 2

Jetzt können wir sehen, dass alles versetzt ist und es scheint, dass Daten jetzt an der fallenden Flanke der Uhr gelesen werden. Ich habe das Datenblatt überprüft und es scheint ein normales Verhalten zu sein, wie im folgenden Zeitdiagramm gezeigt (Qh' ist leicht versetzt):

74HC595 Timing-Diagramm

Der verwirrendste Teil ist nun, dass es funktioniert und die zweiten Schieberegister die richtigen Daten haben. Ich verstehe nicht warum, daher würde ich mich über eine Erklärung freuen, warum Qh' so konzipiert wurde, dass Daten ausgegeben werden, die von der Uhr versetzt sind, aber dennoch beim Daisy-Chaining funktionieren.

Antworten (1)

Der QH'-Ausgang des Schieberegisters ist versetzt, da er nach der ansteigenden Flanke von SRCLK gegenüber dem Wert der vorherigen Schieberegisterstufe nicht gültig wird.

Der Grund, warum Ihre zweite Stufe funktioniert, liegt darin, dass QH' fast eine volle Taktzeit bis zur nächsten ansteigenden SRCLK-Flanke eingerichtet ist. Es hat die Einrichtungszeitanforderung, wie sie als t- Einrichtungszeit im 'HC595-Datenblatt angegeben wäre. Ein weiterer Zeitparameter, der für den 'HC595 erforderlich ist, ist die Haltezeit t . Wenn Sie sich das Datenblatt ansehen, werden Sie feststellen, dass die Haltezeitanforderung für den SER_IN-Pin geringer ist als die minimale Verzögerungszeit von SRCLK zu QH' des vorherigen Chips in Ihrer Daisy-Chain.

Der Grund, warum das Datenblatt-Zeitdiagramm den QH-Ausgangsversatz von QH' zeigt, liegt darin, dass sich der QH-Ausgang nach dem Anstieg von RCLK ändert. Das TI-Zeitablaufdiagramm zeigt den RCLK-Offset vom SRCLK.

Ich verstehe also, dass die Ausgabe immer noch die Anforderungen an die steigende Flanke erfüllt, als ob ich die Daten immer noch hoch zoome, wenn die Uhr hoch geht, auch wenn für eine sehr kurze Zeit? Auch in meinem Fall ist RCLK mit Chip Select verbunden, dh. bleibt während der gesamten Kommunikation niedrig, was sich noch einmal vom Datenblattbeispiel unterscheidet, aber immer noch funktioniert ...
Ja, die Verwendung von SPI CS# (Low True Chip Select) als RCLK ist eine gute Möglichkeit, die Unterstützung für RCLK zu implementieren. Der einzige Grund, warum das TI-Datenblatt den RCLK mit Impulsen wie gezeigt zeigt, damit sie zeigen können, wie sich die QA-zu-QH-Ausgänge des 'HC595 zeitlich ändern, wenn ein einzelnes '1'-Bit durch das Schieberegister geleitet wird.