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
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.
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.
>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.
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
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.
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
>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.
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
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.
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.