Forum: Mikrocontroller und Digitale Elektronik Bestehenden SPI-Bus manipulieren / 2 mal SPI


von Alexander (Gast)


Lesenswert?

Guten Abend,

Wie der Titel schon vermuten lässt, habe ich ein bestehendes System aus 
einem µC und einem Display. Genauer gesagt handelt es sich um ein 
Autoradio, bei dem ich den Anzeigetext modifizieren will. Der µC und das 
Display kommunizieren in diesem Fall über SPI.
Nun habe ich mir überlegt einen eigenen µC dazwischen zu schalten, die 
Befehle zu empfangen und ggf. abgeändert weiter zu schicken.

Jetzt zu meiner Frage:

Ist sowas möglich? Wenn ja, brauche ich dafür 2 SPI Schnittstellen ?
Oder gibt es noch andere Wege das Ganze einfacher zu lösen?

Danke schon mal im Voraus!
Alexander

von Ursus P. (unwichtig)


Lesenswert?

Alexander schrieb:
> Guten Abend,
>
> Wie der Titel schon vermuten lässt, habe ich ein bestehendes System aus
> einem µC und einem Display.
µC wurde schon vom Werk programmiert und man kommt nicht an den 
Quellcode?

> Genauer gesagt handelt es sich um ein
> Autoradio, bei dem ich den Anzeigetext modifizieren will. Der µC und das
> Display kommunizieren in diesem Fall über SPI.
> Nun habe ich mir überlegt einen eigenen µC dazwischen zu schalten, die
> Befehle zu empfangen und ggf. abgeändert weiter zu schicken.
Man kann denk ich mal jeden Befehl nach dem Tastendruck mit Oszilloskop 
Triggern und mit BUSinterpreter oder "von Hand" die Befehle entziffern, 
sollte eigentlich gehen

> Jetzt zu meiner Frage:
>
> Ist sowas möglich? Wenn ja, brauche ich dafür 2 SPI Schnittstellen ?
Könnte auch mit einem klappen, nimmst unterschiedliche !CS, einen für 
zwischen(µC) und anderen für Display.

Der zwischen(µC) muss dann als "SLAVE" betrieben werden, die Daten 
werden vom Haupt(µC) an zwischen(µC) gesendet, zwischen(µC) wertet aus, 
mit anderem !CS(vom zwischen(µC) ) den Display auswählen und die neue 
Daten schicken.

: Bearbeitet durch User
von Rudolph R. (rudolph)


Lesenswert?

Generell möglich ist sowas schon und ja, man braucht zwei SPI 
Schnittstellen weil das ja einmal Master und einmal Slave sein muss.

Der Controller muss im wesentlichen schnell genug sein um die 
Schnittstelle als Slave zu bedienen.
Der im Display verbaute Controller sollte bekannt sein.
Und eventuell braucht man einiges an Speicher.

von Rudolph R. (rudolph)


Lesenswert?

Frank The Tank schrieb:
> Könnte auch mit einem klappen,

Eher nicht so, zwei Master auf einem Bus klappt nicht.

von holger (Gast)


Lesenswert?

>Genauer gesagt handelt es sich um ein
>Autoradio, bei dem ich den Anzeigetext modifizieren will.

Na hoffentlich ist das kein Grafikdisplay.
Da könnte der Text als Pixelbrei gesendet werden.
Den zu modifizieren könnte sich als schwierig erweisen.

von Alexander (Gast)


Lesenswert?

Hallo,

Als aller Erstes vielen Dank für eure Antworten.

>µC wurde schon vom Werk programmiert und man kommt nicht an den Quellcode?

Genau.

>Man kann denk ich mal jeden Befehl nach dem Tastendruck mit Oszilloskop
>Triggern und mit BUSinterpreter oder "von Hand" die Befehle entziffern,
>sollte eigentlich gehen

Ja das habe ich so schon so ähnlich gemacht. Ich bin im Besitz eines 
Logic Analyzer. Dürfte wenn das mit dem SPI-Bus geht das kleinere 
Problem sein.

>Könnte auch mit einem klappen, nimmst unterschiedliche !CS, einen für
>zwischen(µC) und anderen für Display.

Hatte ich auch schon daran gedacht, doch habe ich mich gefragt ob das 
gut geht, wenn ich dann SCK zusammen schließe.

>Der Controller muss im wesentlichen schnell genug sein um die
>Schnittstelle als Slave zu bedienen.
>Der im Display verbaute Controller sollte bekannt sein.
>Und eventuell braucht man einiges an Speicher.

ja der Controller ist bekannt. Habe auch ein Datenblatt dazu. Es werden 
übrigens keine Daten vom  Display zurück versandt!
Das mit der Schnelligkeit habe ich nicht ganz verstanden. Meinst du, 
dass mein µC quasi in Echtzeit die Daten verändert?

>Na hoffentlich ist das kein Grafikdisplay.
>Da könnte der Text als Pixelbrei gesendet werden.
>Den zu modifizieren könnte sich als schwierig erweisen.

Zum Glück ist es kein Grafikdisplay :D
--------------------

So wie ich das nun verstanden habe brauche ich dann also 2 mal Spi ?
Gibt es irgendwo ein Beispiel wie man so was realisiert. Habe schon im 
Internet gesucht, wurde jedoch nicht fündig :(

Alexander

von Rudolph R. (rudolph)


Lesenswert?

Naja, einfach mal durch die Application-Notes der gewünschten Controller 
fischen?
Für Atmel AVR gibt es z.B. Applications sowohl für SPI-Master als auch 
SPI-Slave und es gibt auch AVR mit mehr als einem SPI.
Was jetzt nicht heissen soll, dass das mit einem AVR funktionieren 
könnte, das kommt darauf an wie hoch der Takt ist.

von Alexander (Gast)


Lesenswert?

Mit meinem Logic Analyzer habe ich ungefähr einen Takt von 70 kHz 
gemessen. sollte gehen oder?
Ich hatte gehofft ein Attiny einzusetzen. Jedoch befürchte ich der wird 
das nicht packen :/
Welchen µC würdest du vorschlagen, wenn er möglichst klein und 
stromsparend sein sollte?

Alexander

von holger (Gast)


Lesenswert?

>Welchen µC würdest du vorschlagen, wenn er möglichst klein und
>stromsparend sein sollte?

Stromsparend? Was glaubst du was dein Autoradio frisst?
Vergiss stromsparend. Die paar mA machen den Bock auch nicht
mehr fett. Jeder Atmega mit USART und SPI wird gehen.
SPI für den SPI Slave und den USART für SPI Master.

von Alexander (Gast)


Lesenswert?

Stromsparend weil ich ein älteres Auto habe, dass einen Summer 
einschaltet wenn das Radio bei ausgeschalteter Zündung zu viel Strom 
braucht. Aber du könntest Recht haben, dass es nicht viel ausmacht :)
Kann es dann auch mit einem Attiny klappen ?

Alexander

von holger (Gast)


Lesenswert?

>Kann es dann auch mit einem Attiny klappen ?

Vergiss deinen verkackten ATtiny. Nimm einen
ATmega. Der hat SPI UND USART.

von Bernd K. (prof7bit)


Lesenswert?

Du kannst evtl sogar sendeseitig bitbanging machen, dann reicht 
1hardware spi für die Slavefuktionalität. Tiny wird wahrscheinlich 
reichen.

von Rudolph (Gast)


Lesenswert?

70kHz klingt für mich jetzt erstmal sehr langsam.
Aber warum nicht, das sind immer noch 8750 Zeichen pro Sekunde wenn man 
den SPI voll ausreizen würde.

Das sollte sich auch einigermaßen Strom sparend hinbekommen lassen, es 
passiert ja nur minimal alle 114µs was, eher langsamer.
Dann muss der µC je nach Aufgabe 1-5µs was machen und kann sich wieder 
schlafen legen. :-)

Zuätzlich zur Chip-Select Leitung wird es noch eine Command/Data Leitung 
geben die man auch auswerten sollte. Das könnte ein wenig haarig werden 
mit dem Timing wenn die nach dem SPI-Transfer zu schnell wieder 
umgeschaltet wird.

von Peter D. (peda)


Lesenswert?

Alexander schrieb:
> Es werden
> übrigens keine Daten vom  Display zurück versandt!

Das macht schon vieles einfacher.

Z.B. ein ATmega328p mit dem SPI als Slave zum Radio und der UART als 
Master zum LCD.
Zum Stromsparen enabled man einfach den Pin-Change-Interrupt auf den 
/SS-Pin.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.