Ich möchte ein Produkt entwickeln, das über 40 LCD-Drucktastenschalter kombiniert (Beispiel hier , die über SPI kommunizieren). Ich habe mir Mikroprozessoren angesehen, um damit umzugehen, aber ich habe Probleme, irgendwelche zu finden. Das höchste Angebot von Atmel 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?
spi
arm
microprocessor
atmel
kfriede
quelle
quelle
Antworten:
Verwenden Sie entweder Demultiplexer wie den 74HC138 für die Slave-Auswahl oder Dioden-ORs mit einer Matrixauswahl.
Wenn das Protokoll dies zulässt, können Sie alle Schaltflächen miteinander verketten und für alle eine lange SPI-Übertragung verwenden.
quelle
Ein Wort der Vorsicht, wenn Sie so viele SPI-Geräte an einem einzigen Bus verwenden:
Diese Anzahl von Geräten wird eine enorme Kapazität auf den Bus bringen. Wenn Sie keine Vorsichtsmaßnahmen treffen, wird Ihre maximale Busfrequenz und damit die Geschwindigkeit, mit der Sie Anzeigeinhalte usw. aktualisieren können, stark eingeschränkt. (Grundsätzlich bilden die Eingangskapazität in Verbindung mit der Ausgangsimpedanz der E / A-Pins der MCU ein Tiefpassfilter, das eine höhere Frequenz dreht Rechteckwellen werden eher zu Sinuswellen, die SPI nicht mag - sie beeinträchtigen das Timing).
Wenn Sie gerne niedrigere Kommunikationsgeschwindigkeiten verwenden, ist das in Ordnung. Ich würde jedoch empfehlen, den Bus in mehrere kleinere 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 einzelnen Hochstrom-Treiberpuffer zu verwenden, um die Ausgangsimpedanz der SCK- und MOSI-Pins zu verringern.
quelle
Es gibt keine Begrenzung für die Anzahl der Geräte , die SPI gehakt zusammen auf einen einzigen SPI sein kann, unter der Annahme , dass es genug IO`s für das richtige Gerät auswählen.
In der Praxis kann es jedoch zu Schwierigkeiten kommen, wenn die Anzahl bei höheren Geschwindigkeiten höher ist. Das ist aber selten.
Sie können MISO MOSI und SCK parallel mit allen Geräten verbinden. Sie sollten den GPIO des Controllers jedoch eins zu eins mit dem SS-Pin (Slave-Auswahl) verbinden.
Verwenden Sie GPIO-Expander oder Multiplexer nur, wenn die Anzahl der GPIOs auf dem Controller begrenzt ist
quelle