Bestehenden SPI-Bus manipulieren / 2 mal SPI

Gast #4110488
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
#4110517
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.
#4110521
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.
Gast #4110533
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.
Gast #4110718
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
#4110735
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.
Gast #4110761
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
Gast #4110779
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.
Gast #4110794
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
Gast #4111091
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.