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.
:
Bearbeitet durch User
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.
Frank The Tank schrieb: > Könnte auch mit einem klappen, Eher nicht so, zwei Master auf einem Bus klappt nicht.
>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
>Kann es dann auch mit einem Attiny klappen ?
Vergiss deinen verkackten ATtiny. Nimm einen
ATmega. Der hat SPI UND USART.
Du kannst evtl sogar sendeseitig bitbanging machen, dann reicht 1hardware spi für die Slavefuktionalität. Tiny wird wahrscheinlich reichen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.