Mikroprozessoren für mehrere (~ 40) SPI-Geräte?


7

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?


3
Sie wissen, dass Sie nicht gezwungen sind, einen dedizierten Slave-Auswahl-Pin zu verwenden? Sie können tatsächlich ein beliebiges GPIO oder Schema verwenden, um sie zu generieren, solange Sie sicherstellen, dass sie rechtzeitig gültig sind. Ihre Grenze sind also wirklich die elektrischen Lasten im Bus. Es gibt Möglichkeiten, wie Sie damit umgehen können, aber Sie könnten ein Fan-In von Slave-Mikros-Batching-Daten für einen Master in Betracht ziehen. Oder möglicherweise ein FPGA, das mehrere Busse gleichzeitig betreibt und Batch-Daten mit der Host-MCU verarbeitet.
Chris Stratton

1
Sie wissen, dass die XMEGA-Geräte, auf die sich Ihr Link bezieht, bis zu 12 SPI-Busse als Master verarbeiten können, nicht nur 12 SPI-Clients? Sie könnten beispielsweise die 40 Geräte auf 10 Busse aufteilen und sollten immer noch genügend GPIOs für Slave-Auswahlleitungen frei haben. Aber vielleicht fehlt mir der Punkt.
Rev1.0

@ ChrisStratton Ich habe das nicht bemerkt, danke. Ich bin ein Programmierer, der versucht, in Embedded einzusteigen, daher gibt es viel zu lernen.
Kfriede

@ Rev1.0 Vermutlich nicht den Punkt verpassen, ich bin nur neu in diesem. Bieten die "40 Geräte auf 10 Busse aufteilen" eine Lösung für das Problem der Eingangskapazität, das Majenko unten angesprochen hat?
Kfriede

Können Sie ein Datenblatt bereitstellen, das typische Verbindungen und das vom LCD-Switch verwendete SPI-Protokoll zeigt?
user2943160

Antworten:


6

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.


Nun, da Sie das sagen, macht der Demultiplexer total Sinn. Ist mir nicht einmal in den Sinn gekommen. Vielen Dank.
Kfriede

Wie in der Antwort von Majenko hervorgehoben, möchten Sie auch die MISO-Pins (Master in Slave Out) multiplexen und die MOSI-Pins (Master Out Slave In) demuxen.
John R. Strohm

Nein, Sie demultiplexen Slave-Auswahl und Bus der MISO- und MOSI-Leitungen. Der springende Punkt bei SS ist, dass Sie alle MOSI miteinander verbinden und mit den richtigen Slave-Geräten alle MISO-Leitungen miteinander verbinden können.
user2943160

4

Ein Wort der Vorsicht, wenn Sie so viele SPI-Geräte an einem einzigen Bus verwenden:

  • Eingangskapazität.

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.


2
Ganz guter Hinweis. Ich würde es sehr vorziehen, Busse der Pufferung aufzuteilen. Dadurch werden die Spitzenströme viel niedriger gehalten (es muss jeweils nur ein Bus geschaltet werden), wodurch Rauschen und Entkopplungsprobleme reduziert werden.
Carloc

1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.