Ich habe online gelesen, dass zum Starten einer SPI-Transaktion mit einem SPI-unterstützten Gerät die SS-Leitung (Slave Select, auch bekannt als Chip Select) für die gesamte Transaktion auf niedrig gesetzt und am Ende der Transaktion auf hoch gesetzt werden muss. Wenn ich eine Verbindung herstelle, die nur ein SPI-Gerät enthält, muss ich dann den SS-Leitungssendebefehl senken und dann jedes Mal die SS-Leitung erhöhen, oder kann ich die SS-Leitung niedrig binden und unbegrenzt Befehle senden? Das Gerät, das ich benutze, ist ISD1700 Soundchip .
8
Antworten:
[@Kevin und @akohlsmith sollten ihre Kommentare als Antworten veröffentlichen.
Dies dient dazu, ihre Kommentare zu erweitern. ]]
SPI 1 schreibt nicht das genaue Verhalten der SS vor (Slave-Auswahlzeile 2 ). Dieses Verhalten hängt von der Implementierung jedes einzelnen Geräts ab. Ich habe Geräte gesehen, die mit der SS arbeiten können. Ich habe auch Geräte gesehen, die fallende und steigende Flanken auf der SS erfordern.
Obwohl nicht ausdrücklich darauf hingewiesen wird, dass die SS umgeschaltet werden muss , heißt es
im Entwurfshandbuch (S. 31) , dass die SS die SPI-Transaktion startet und beendet. Es wäre vernünftig anzunehmen, dass SS umgeschaltet werden muss, damit die SPI-Transaktion erfolgreich ist.
1 SPI ist eher eine Gewohnheit als ein Standard.
2 CS (Chip Select) ist ein anderer Name für Slave Select.
quelle
Es hängt ganz vom Slave-Gerät ab.
Wenn das Protokoll für das Slave-Gerät eine Art Framing enthält, sei es mit Paketen fester Länge, Start / Stopp-Bytes oder einem Header, der die Paketlänge angibt, kann das Slave-Gerät möglicherweise ohne Chipauswahl arbeiten. Ich habe einen SPI-Flash-Speicherchip auf der Platine, an dem ich gerade arbeite, der mit oder ohne Chipauswahl vollkommen zufrieden zu sein scheint. Es kann ohne Probleme dauerhaft an 0 V (aktiviert) angeschlossen werden.
Dies verursachte uns tatsächlich einige Probleme, da ein Auftragnehmer einige der Low-Level-E / A einschließlich des SPI eingerichtet hatte und wir (und sie!) Nicht realisierten, dass die Chipauswahl nicht funktionierte. Erst als ich ihre SPI-Arbeit erweitern musste, um ein weiteres SPI-Gerät auf demselben Bus hinzuzufügen, stellte ich fest, dass wir keine Chip-Auswahl hatten!
Umgekehrt benötigen viele Slave-Geräte Chipauswahl, um die Daten zu rahmen, und das Senden von mehr Bits / Bytes als das erwartete Paket, ohne die Chipauswahl am Ende freizugeben, wird als ungültige Übertragung angesehen und zurückgewiesen. DACs laden häufig den neuen Wert auf den Ausgang der Chipauswahl-Anstiegsflanke. In ähnlicher Weise verwenden ADCs häufig die SPI-Übertragung, um die Konvertierung zu starten (und manchmal auch zu planen), sodass sie die fallende Flanke der Chipauswahl als Auslöser benötigen.
Ihr Datenblatt sagt eigentlich nichts darüber aus, wie Sie Ihren bestimmten Chip über SPI fahren können, und ich bin nicht motiviert genug, ihn zu googeln. Übung für den Leser übrig ...;)
quelle
Ohne etwas Spezifisches über das SPI-Slave-Gerät zu wissen, können Sie SS nicht einfach niedrig binden.
Viele Geräte verwenden die Vorderkante von SS, um ihre interne Logik auf den Start einer neuen Transaktion zurückzusetzen. Beispielsweise könnten Speicher die ersten zwei Bytes als Adresse und nachfolgende Bytes als Daten interpretieren. Einige Speicher führen den physischen Schreibvorgang erst durch, wenn SS deaktiviert ist.
Bei einigen Geräten mit dem richtigen Protokoll können Sie möglicherweise damit durchkommen. Es funktioniert jedoch nicht mit den meisten Geräten da draußen.
quelle