www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SmartSwitch: Viele SPI Slaves an einem Master, lange Kabelwege,! Was tun?


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend zusammen,

ich hab mal ne grundsätzliche Frage zur Ansteuerung von sogenannten 
"SmartSwitches" (Gibts z.B. von NKK, 64x32 Version 
http://www.nkksmartswitch.com/products/hires.asp )

Ich möchte viele von diesen Teilen (das Display - die Tastfunktion wird 
separat ausgewertet) per PC mit Daten beschicken. Es wird sich 
hauptsächlich um Text, weniger um Grafik handeln.

Für den SPI wollte ich einen AVR nehmen, der die zu sendenden Daten per 
Schnittstelle vom PC empfängt. Vorstellbar ist, dass ich bpw. das 
Display in 4x8 Zeichen einteile und mir einen Code überlege, z.B. so: 
<Moduladresse><Displayfarbe><Buchstabe 1>...<Buchstabe 32> und die 
anzusteuernden Pixel für jeden Buchstaben im µC hinterlegt sind und die 
Daten per SPI ausgibt. Es ja mal egal ob die Daten per RS232 oder 
Ethernet oder sonstwas in den AVR reinkommen.

Jetzt stellt sich die Frage, wie ich mit diesen vielen SPI Slaves 
umgehe. Die Taster werden räumlich doch ein wenig verteilt sein, sodass 
ich dachte über Flachbandkabel von Taster zu Taster zu fahren.

Dabei gibt's m.E. nach 2 Probleme: Ich brauch verdammt viele SS 
SlaveSelect Leitungen, also viele Ports und ein breites Kabel und ich 
hab ggf. Probleme mit dem SPI wegen den langen Kabelwegen.

Die SS könnte ich ggf. über einen Codierer oder sonstwas ansteuert. Wie 
mache ich es am geschicktesten, dass ich mit einfachsten Mitteln, aus 
einem bspw. 8 bit breiten Bus mit einem IC ein einzelnes SS Signal 
ausgeben kann? Will ja nicht jedem Taster nochmal einen einzelnen µC 
spendieren. Am besten etwas, dass ich per Codierschalter bzw. Lötbrücke 
eine 8-bit Adresse einstellen kann und das SS Signal nur dann ausgegeben 
wird, wenn genau diese Adresse auf dem Bus liegt.

NKK hat im Datenblatt so eine Matrixstruktur drin - ich verstehe aber 
nicht so ganz, was das bringen soll, da ich damit mehrere MISOs 
bräuchte...

Hat jemand eine Idee (vielleicht auch ganz anders) wie man sowas am 
geschicktesten angeht?

Vielen Dank und Gruß
Chris

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Bus wie I2C benutzen.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja schon, die Dinger haben aber halt mal SPI und kein I2C...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Dabei gibt's m.E. nach 2 Probleme: Ich brauch verdammt viele SS
>SlaveSelect Leitungen, also viele Ports und ein breites Kabel und ich
>hab ggf. Probleme mit dem SPI wegen den langen Kabelwegen.

Im Datenblatt ist doch eine interessante Lösung ohne SS.

MfG Spess

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, meinst du das rechte timing Diagramm? Wenn ich den SS von allen 
Slaves auf low lege, dann werden aber doch alle Displays immer mit den 
gleichen Daten gefüttert oder habe ich da jetzt was nicht gecheckt? Ich 
dachte eigentlich, dass diese Lösung nur für den Betrieb eines einzelnen 
Schalters gedacht ist. Sonst müsste ich ja über den SPI adressieren 
können.

Oder meinst du was anderes?

Autor: dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Taster werden räumlich doch ein wenig verteilt sein

Wie weit?

Autor: Stefan M. (celmascant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann Codiere dein SlaveSelect doch binär oder sonstwie.
Mit 4 Leitungen kannst du dann schon 16 Slaves auswählen, du brauchst 
dann nurnoch einen Decoder je Slave^^

Gruss Stefan

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Hi, meinst du das rechte timing Diagramm? ....

Ja. Dazu gehört das 'Circuit Example' über dem Timing Diagramm.

MfG Spess

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst mal danke für die Anwtorten - ich war kurzzeitig weg und kann erst 
jetzt wieder schreiben.

@ dummy (Gast)
Die Verteilung ist innerhalb eines größeren Gehäuses (kein EMV Gehäuse, 
außerdem weitere Elektronikkomponenten) verteilt. Denkbar ist bspw. eine 
Anordnung von 15-25 dieser Display innerhab von 70cm. Ich würde dann 
zweckmäßigerweiße per Flachbandkabel und Pfostenstecker von Display zu 
Display verkabeln (kein daisy chain, sondern parallel). Es würde sich 
dann inkl. der Anschlussleitungen vielleicht 1m Kabellänge ergeben.

@ Stefan M. (celmascant)
Ok, Decoder hatte ich ja auch schon überlegt. Haste einen Bauteiletipp 
für mich (günstig und nicht zu groß). Könnte jetzt einfach mal die 
74xxxx Reihe durchgehen, aber schon da sieht man ja vor lauter Bäumen 
den Wald nicht mehr.

@ spess53
Danke für die Info - sorry, aber ich versteh's immer noch nicht.Das 
Timing ist doch genauso wie im linken Diagramm, nur halt ohne SS. Damit 
brauche ich doch 3 SPI Busse und 3 CLKs oder ist das irgednwie anders zu 
verstehen? Damit hätte ich doch wenig gewonnen.

Gruß
Chris

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.