C Spi -> can -> spi

avr_newbie

Mitglied
13. Apr. 2013
127
0
16
Bayern
Sprachen
  1. ANSI C
Hallo,
jetzt hab ich mal vermutlich ne dumme Frage ;)

Ich habe ein Mikrocontroller an dem ein Display über SPI dran hängt. (bisher nur 30cm langes Flachbandkabel /2 Mhz)

Nun möchte ich aber das Board mit Controller und das Display mit einer Entfernung von 5-10 Metern betreiben.
Da SPI eigentlich ja nicht für lange Leitungen geeignet ist, dache ich mir evtl. das dann über CAN zu lösen.

Jetzt dachte ich mir, ich kann so lösen:

|Controller mit SPI| ------> |SPI auf CAN Converter| -----10 Meter Leitung------->| CAN auf SPI Converter|-------->|Display|


Da ich mich mit CAN Null-Komma-Nix auskenne:

-> Ist das so realisierbar?
-> Ich bräuchte wie oben angedeutet, dalso SPI-CAN-Konverter und umgekehrt - Ich möchte aber dazu eigentlich keine Software schreiben .... also gibts da evtl. fertige IC's, oder bereits fertige Baugruppen zu kaufen?

Oder gibts ne bessere Idee?

Danke schon mal.
 
Du hast zwei Sachen vergessen:

1. Du brauchst je einen CAN-Transceiver an jedem SPI --> CAN-Conterver
2. Auf der Displayseite brauchst Du noch einen Controller mit SPI

Du brauchst in dem Fall kein CAN als Protokoll, sondern Du kannst auch einfach nur die CAN-Physik verwenden. Sprich, die Dfferential-Übertragung. Dazu nimmst Du einfach zwei CAN-Transceiver und hängst sie mit einer Seite an den UART und die andere Seite, also die CAN-Bus seite verbindest Du miteinander. So das hast Du eine UART-Übertragung, aber eben als Differential, das wird häufig gemacht. Auf der anderen Seite, also da wo das Display ist, brauchst Du noch eine MCU, die Dein Display auch tatsächlich ansteuert.
 
Er will SPI verwenden, also mindestens 2 Leitungen synchron (CLK und MOSI), ggf auch 3 (MISO).
Welche CLK-Frequenz fordert denn das Display überhaupt - oder kann beliebig langsam übertragen werden?

Wäre vielleicht die Zweckentfremdung eines RS485-Senter/Empfängerpaares je Leitung 'ne Alternative (und dann halt 4 bzw 6 Leitungen)?

Wie ist das eigentlich mit der Stromversorgung des SPI-Displays?
 
Er will SPI verwenden, also mindestens 2 Leitungen synchron (CLK und MOSI), ggf auch 3 (MISO).
Welche CLK-Frequenz fordert denn das Display überhaupt - oder kann beliebig langsam übertragen werden?

hm... also momentan (30cm Leitung) fahr ich mit 1Mhz, und das sollte eigentlich auch so bleiben....

ja, ich will SPI verwenden, aber wie oben schon erläutert, möchte ich 10 Meter damit übertragen ..... deshalb der Gedanke von SPI auf CAN und wieder auf SPI....
 
Du hast zwei Sachen vergessen:

1. Du brauchst je einen CAN-Transceiver an jedem SPI --> CAN-Conterver
2. Auf der Displayseite brauchst Du noch einen Controller mit SPI

Du brauchst in dem Fall kein CAN als Protokoll, sondern Du kannst auch einfach nur die CAN-Physik verwenden. Sprich, die Dfferential-Übertragung. Dazu nimmst Du einfach zwei CAN-Transceiver und hängst sie mit einer Seite an den UART und die andere Seite, also die CAN-Bus seite verbindest Du miteinander. So das hast Du eine UART-Übertragung, aber eben als Differential, das wird häufig gemacht. Auf der anderen Seite, also da wo das Display ist, brauchst Du noch eine MCU, die Dein Display auch tatsächlich ansteuert.



ok, das dachte ich mir schon, dass ich da noch ne MCU auf der Displayseite brauch.... und genau das will ich eigentlich nicht.... is (zu) viel Aufwand?!
ich möchte eingeltich nur irgendwie 10Meter von meiner Hauptplatine zum Display irgendwie sicher übertragen. (und even über SPI)
 
Na ob das zu viel Aufwand ist, musst Du entscheiden.

@LotadaC: Wenn er zwischen den beiden MCUs CAN-Transceiver verwendet, kann er sie über UART verbinden und gut ist. Ich habe schon verstanden, dass er SPI verwenden will, aber da hat er einen massiven Denkfehler.
 
Na ob das zu viel Aufwand ist, musst Du entscheiden.

@LotadaC: Wenn er zwischen den beiden MCUs CAN-Transceiver verwendet, kann er sie über UART verbinden und gut ist. Ich habe schon verstanden, dass er SPI verwenden will, aber da hat er einen massiven Denkfehler.

hm... also ....

|Controller mit SPI| ------> |SPI - CAN Converter|-------->|CAN Transceiver| -----10 Meter Leitung------->|CAN Transceiver|-------->| CAN - SPI Converter|--------|MCU|-------->|Display|

Sagen wir, ich kanns nicht wiklich abschätzen, wieviel Aufwand das ist, da ich mich wie gesagt mit CAN nicht wiklich auskenne....


EDIT:

äh... ne.. doch anders ;)

wenn ich HEMI jetzt richtig verstanden habe

Controller - UART -------> CAN Transceiver ---------------Leitung ------------->CAN Transceiver ----------> UART - Controller - SPI --------->Display
 
Bingo, die zweite Schaltung ist die Richtige. Du brauchst für Deinen Anwendungsfall keinen CAN-Controller, ist viel zu viel.

Du denkst Dir ein Protokoll aus für den UART aus und fertig.

So würde ich es lösen.
 
Er will SPI verwenden, also mindestens 2 Leitungen synchron (CLK und MOSI), ggf auch 3 (MISO).
Welche CLK-Frequenz fordert denn das Display überhaupt - oder kann beliebig langsam übertragen werden?

Wäre vielleicht die Zweckentfremdung eines RS485-Senter/Empfängerpaares je Leitung 'ne Alternative (und dann halt 4 bzw 6 Leitungen)?

Wie ist das eigentlich mit der Stromversorgung des SPI-Displays?



Wenn ich das richtig verstehe, die SPI-Leitungen an RS485-Bausteine hängen?

also so:

Controller-SPI --------> RS485 Bausteine ---------Leitung ---------> RS485-Bausteine ---------->Display ???
 
@LotadaC: Wenn er zwischen den beiden MCUs CAN-Transceiver verwendet, kann er sie über UART verbinden und gut ist. Ich habe schon verstanden, dass er SPI verwenden will, aber da hat er einen massiven Denkfehler.
Dann muß er aber die vorhandene Software auch auf UART umstricken. Sowas wie meinen Vorschlag gibt es übrigens -> RS422 . Da gibts Bausteine bis 20Mbps. Mit unterschiedlicher Anzahl von Transmittern und Recievern im IC.

Je SPI--Leitung müßte dann ein verseiltes Paar verlegt sein.
AVR - SPI-Clk-->422-Transmitter->verseiltes Adernpaar->422-Reciever-->SPI-Clk - Display
AVR - SPI-MOSI-->422-Transmitter->verseiltes Adernpaar->422-Reciever-->SPI-MOSI (DI/SDI) - Display
falls nötig noch:
AVR - SPI-MISO<--422-Transmitter<-verseiltes Adernpaar<-422-Reciever<--SPI-MISO (DO/SDO) - Display

ICs mit je einem Transmitter und Reciever giebts, ansonsten hab ich auch quadTransmitter und QuadTransciever gesehen.
Ethernetkabel?
 
Dann muß er aber die vorhandene Software auch auf UART umstricken. Sowas wie meinen Vorschlag gibt es übrigens -> RS422 . Da gibts Bausteine bis 20Mbps. Mit unterschiedlicher Anzahl von Transmittern und Recievern im IC.

Je SPI--Leitung müßte dann ein verseiltes Paar verlegt sein.
AVR - SPI-Clk-->422-Transmitter->verseiltes Adernpaar->422-Reciever-->SPI-Clk - Display
AVR - SPI-MOSI-->422-Transmitter->verseiltes Adernpaar->422-Reciever-->SPI-MOSI (DI/SDI) - Display
falls nötig noch:
AVR - SPI-MISO<--422-Transmitter<-verseiltes Adernpaar<-422-Reciever<--SPI-MISO (DO/SDO) - Display

ICs mit je einem Transmitter und Reciever giebts, ansonsten hab ich auch quadTransmitter und QuadTransciever gesehen.
Ethernetkabel?

ok.. das wäre für die vorhandene Software wirklich einfacher....
nur verstehe ich nicht ganz, wie ich diese 422/485 Transmitter dann genau beschalten muss...

EDIT:

ich hab gerade den MAX3140 entdeckt.....

http://www.maximintegrated.com/datasheet/index.mvp/id/2033
Wenn ich das richtig verstehe, kann ich dort SPI anschließen, und des kommt RS485 raus ^^

dann bräuchte ich nur noch das gegenstück dazu ^^
 
so, ich hab jetzt im Web ein bischen herumgesucht..
und bin auf auf den LTC6820 gestoßen.

http://cds.linear.com/docs/en/datasheet/6820fa.pdf

Wenn ich das richtig auf Seite 10 verstehe, dann ist das genau was ich suche.

Controller SPI ----> LTC6820 ----Leitung---->LTC6820----> Display


und auf Seite 1 sieht man ein Diagram ... da sollten also locker 5 Meter mit SPI drin sein......

Allerdings is das Ding nicht aufzutreiben :(
 
100 m bei 0.5 Mbps, bei 1Mbps bis 10 m.
Allerdings mußte Du scheinbar Transformer einplanen.

Verfügbar ist der direkt beim Hersteller, sogar samples...

Der MSOP sollte mit 0.5mm Raster sogar lötbar sein...
 
Nur mal so für mein Verständnis. Großartig helfen kann ich dir leider nicht.
Aber warum das Ganze? Ich weiß, du hattest geschrieben du willst es nicht, aber es wäre doch um ein vielfaches leichter (und billiger) einfach die Busfrequenz zu reduzieren. Ich mein die LCD's sind doch eh "lahm wie sau". Zumindest alle die ich hier habe (von dem OLED abgesehen). Ob ich da nun mit 100kHz oder 2MHz drauf gehe, da sehe ich kein Unterschied. Und bei Hardware SPI belastet es die "CPU" ja auch nicht mehr oder weniger.
 
Nur mal so für mein Verständnis. Großartig helfen kann ich dir leider nicht.
Aber warum das Ganze? Ich weiß, du hattest geschrieben du willst es nicht, aber es wäre doch um ein vielfaches leichter (und billiger) einfach die Busfrequenz zu reduzieren. Ich mein die LCD's sind doch eh "lahm wie sau". Zumindest alle die ich hier habe (von dem OLED abgesehen). Ob ich da nun mit 100kHz oder 2MHz drauf gehe, da sehe ich kein Unterschied. Und bei Hardware SPI belastet es die "CPU" ja auch nicht mehr oder weniger.

hm.... also ich habs noch nicht ausprobiert, aber ich denke schon, dass man es merken würde...
Ich verwende das Touchdisplay
http://mikrocontroller-praxis.de/de/Display/TFT-Grafik-Farbe/XV-TFT60D-70-8048-T.html

Aber angenommen, ich fahre mit 100khz, dann bin ich immer noch der Meinung, dass man damit nicht 5-10 Meter mit SPI schafft. (ok, ich habs noch nicht ausprobiert - soviel hab ich eben nachgelesen.....)

Und dann bleibt das Problem mit den Störeinflüssen..... RS485 ist eben wenig Störfanfällig, wegen dem differentiellen Signal ... also die Signalübertragung ist nicht massebezogen .....
Deswegen die Idee, das SPI Signal auf RS485-Physik zu bringen......
 
Und dann bleibt das Problem mit den Störeinflüssen..... RS485 ist eben wenig Störfanfällig, wegen dem differentiellen Signal ... also die Signalübertragung ist nicht massebezogen .....
Deswegen die Idee, das SPI Signal auf RS485-Physik zu bringen......

Genau, da die Signale alle single-ended sind, ist der Bus störanfälliger bei längeren Leitungen. Verringerung der SPI Frequenz würde hier eventuell nichts bringen oder nicht ausreichen. Ich würde nach einer Lösung mit differentieller Signalübertragung suchen.

Vielleicht hilft diese Dokument von TI etwas weiter ...
www.ti.com/lit/an/slla142/slla142.pdf

Dirk :ciao:
 
hm.... also ich habs noch nicht ausprobiert, aber ich denke schon, dass man es merken würde...
Ich verwende das Touchdisplay
http://mikrocontroller-praxis.de/de/Display/TFT-Grafik-Farbe/XV-TFT60D-70-8048-T.html

Aber angenommen, ich fahre mit 100khz, dann bin ich immer noch der Meinung, dass man damit nicht 5-10 Meter mit SPI schafft. (ok, ich habs noch nicht ausprobiert - soviel hab ich eben nachgelesen.....)

Und dann bleibt das Problem mit den Störeinflüssen..... RS485 ist eben wenig Störfanfällig, wegen dem differentiellen Signal ... also die Signalübertragung ist nicht massebezogen .....
Deswegen die Idee, das SPI Signal auf RS485-Physik zu bringen......

Ah ok, n ziemlich großes Grafik LCD, da könnte es sein dass man das merkt. Damit hab ich noch nie was gemacht, die sind mir zu teuer. Ich würds vermutlich trotzdem einfach mal probieren. Was hat man schon zu verlieren :rolleyes:
Fernmelde- oder Netzwerkkabel, jedes Paar Signal und Masse. Meine (vielleicht dumme) Denkweise: Was 1GBit über bis zu 100m tragen kann sollte 1Mhz locker über 10m tragen können, Übertragungsart hin oder her. Aber wie gesagt, nur mein Denken, nie probiert.
Einzige Erfahrungswerte von mir: Ein EA PDIP LCD via SPI, mit ca. 60cm langen Strippen, frei fliegend ohne Schirmung und nicht verdrillt, sogar in der nähe von 2 Schaltnetzteilen, kein Problem.
 
Hi,

das ist aber ein intelligentes Display bei dem man hauptsächlich Befehle über den SPI-Bus schickt. Den Rest macht das Display intern mit dem eigenen Prozessor. Also zB "Zeichne Box mit Farbe A an Position X,Y mit Größe H,V".
Das sind bei jedem Befehl um die 5-15 Byte. (Bei Textketten etwas mehr).

Du mußt eigentlich nur RS485-Wandler nehmen (oder andere differentielle Wandler)

MISO ---<|==========<|------ SO
MOSI ---|>==========|>------ SI
SCK ----|>==========|>------ CLK
/SS ----|>==========|>------ /CS
/INT ---<|==========<|------ /INT

Das ... |> ist jeweils ein Wandler von TTL-Pegel auf RS485 oder umgedreht. Ob man nun mit INT (Interrupt) arbeiten will oder nicht muß man selber wissen.

Gruß
Dino
 
BUSY\ fehlt noch ;)

Kritisch sind besonders die Signale SCK und CS\ (wegen Protokoll). BeI SCK sind Störungen während einem Logikpegelwechsel kritisch. Was man eventuell noch berücksichtigen sollte, einen Spannungsabfall an der Versorgungsleitung, bei voll aktiviertem Backlight sind es etwa 700mA Strom durch die Leitung.

Dirk :ciao:
 
BUSY\ fehlt noch ;)

Kritisch sind besonders die Signale SCK und CS\ (wegen Protokoll). BeI SCK sind Störungen während einem Logikpegelwechsel kritisch. Was man eventuell noch berücksichtigen sollte, einen Spannungsabfall an der Versorgungsleitung, bei voll aktiviertem Backlight sind es etwa 700mA Strom durch die Leitung.

Dirk :ciao:


So, ich habe mir mal den ds90lv019 ausgesucht.... der sollte auch schnell genug sein.....

Anbei mal eine Skizze.... könnte das so klappen ?

Oder benötige ich für jedes Signal ein extra Pärchen an RS485 Transceiver?

avr.JPG
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)