Ich möchte ein Produkt bauen, das über 40 LCD-Drucktastenschalter kombiniert (Beispiel hier , die über SPI kommunizieren). Ich habe nach Mikroprozessoren gesucht, um damit umzugehen, aber ich habe Probleme, welche zu finden. Das Höchste, das Atmel anbietet, sind 12 Geräte ( wie hier zu finden ), und ARM sieht nicht besser aus.
Was ist der beste Weg, um so viele SPI-Geräte zu steuern? Muss ich mehrere Prozessoren zu einem Master verbinden?
Verwenden Sie entweder Demultiplexer wie den 74HC138 für die Slave-Auswahl oder verwenden Sie Dioden-ODER mit einer Matrixauswahl.
Oder wenn das Protokoll dies zulässt, können Sie alle Tasten miteinander verketten und eine lange SPI-Übertragung für alle verwenden.
Ein Wort der Vorsicht, wenn Sie so viele SPI-Geräte an einem einzigen Bus verwenden:
Diese Anzahl von Geräten wird eine enorme Menge an Kapazität auf den Bus bringen. Wenn Sie keine Vorkehrungen treffen, wird Ihre maximale Busfrequenz und damit die Geschwindigkeit, mit der Sie Anzeigeinhalte usw. aktualisieren können, stark eingeschränkt (im Grunde bildet die Eingangskapazität in Verbindung mit der Ausgangsimpedanz der IO-Pins der MCU einen Tiefpassfilter, der eine höhere Frequenz dreht Rechteckwellen in eher Sinuswellen, was SPI nicht mag - es bringt das Timing durcheinander).
Wenn Sie gerne niedrigere Kommunikationsgeschwindigkeiten verwenden, ist das in Ordnung. Ich würde jedoch empfehlen, den Bus in eine Reihe kleinerer Segmente aufzuteilen und jedes SCK- und MOSI-Signal zu puffern, um die Kapazität in jedem Segment auf einem vernünftigen Niveau zu halten. Eine Alternative besteht darin, einen einzigen Treiberpuffer für hohen Strom zu verwenden, um die Ausgangsimpedanz der SCK- und MOSI-Pins zu reduzieren.
Es gibt KEINE Begrenzung für die Anzahl der SPI-Geräte, die an einem einzigen SPI angeschlossen werden können, vorausgesetzt, dass genügend IOs für die Auswahl des richtigen Geräts vorhanden sind.
In der Praxis kann es jedoch zu Schwierigkeiten kommen, wenn die Anzahl bei höheren Geschwindigkeiten größer ist. Aber das ist selten.
Sie können MISO MOSI und SCK parallel an alle Geräte anschließen. Sie sollten jedoch den GPIO des Controllers eins zu eins mit dem SS-Pin (Slave Select) verbinden.
Entscheiden Sie sich für GPIO-Expander oder Multiplexer nur, wenn die Anzahl der GPIOs auf dem Controller begrenzt ist
Chris Stratton
Rev
kfriede
kfriede
Benutzer2943160
Rev
kfriede
Benutzer2943160