Opel TID: Unterschied zwischen den Versionen

Aus Dario's Home
Wechseln zu: Navigation, Suche
(Hardware)
Zeile 1: Zeile 1:
 +
[[Kategorie:Projekte]]
 
''Projektdatum: 2002''
 
''Projektdatum: 2002''
 
 
= Einleitung =  
 
= Einleitung =  
 
[[Bild:tid-festtext.jpg|thumb|250px|Corsa Display]]
 
[[Bild:tid-festtext.jpg|thumb|250px|Corsa Display]]

Version vom 7. Mai 2008, 20:15 Uhr

Projektdatum: 2002

Einleitung

Corsa Display
RS232 Interface

Das interne Opel Display auch TID (Triple Info Display) genannt, wird von dem original Opel Radio angesteuert. Wenn man aber das Opel Radio gegen ein anderes getauscht hat, liegt dieses Display brach.

Schön wäre es dem TID einen neuen Lebenssinn zu geben. Doch das Protokoll zu dem Display ist leider nirgendwo doukmentiert. Aber das ist für den findigen Bastler kein Hindernis.

Das ganze hat mich zwei TIDs gekostet, aber nun ist mir das Protokoll bekannt und ich habe es weiter unten auf dieser Seite dokumentiert. Ich entwickelte eine Schaltung mit einem Atmel 90s2313, die ein solches TID ansteuern kann. Die ersten Erfolge könnt Ihr auf dem Bild hier sehen.

Das war auch noch zu Zeiten, in denen ich mich gegen C verwehrt habe und noch lieber in Bascom AVR programmiert habe. Gerne würde ich das jetzt auf C umsetzen. Wie alle meine Entwicklungen soll es dann ein Open-Source Projekt werden. Hilfe dabei ist gerne gesehen.

Die Schaltung im Bild ist ein Interface von Seriell auf TID-Bus. Sie empfängt Daten von der TTL-Schnittstelle mit 1200 Bit/s und sendet sie im TID-Format weiter an das TID. So kann man einfach Ausgaben auf das TID machen ohne das Protokoll selber in die jeweilige Anwendung implementieren zu müssen.

Ich habe mir jetzt mal die Zeit genommen das Protokoll hier zu beschreiben. Ich kann allerdings nicht dafür garantieren, dass ich beim abtippen meiner handschriftlichen Unterlagen keinen Fehler gemacht habe. Also wenn das hier jemand benutzt um das nachzubauen, dann scheut Euch nicht bei Problemen nochmal nachzufragen.

Auch würde ich mich über Emails mit Fehlern, Ergänzungen und Erfolgsberichten freuen. Genauso würde ich es begrüssen Eure Ergebnisse insbesondere C-Quelltexte zu erhalten, um sie hier für alle zu veröffentlichen. Die ersten Ergänzungen habe ich schon bekommen und eingearbeitet, besonderen Dank an Andre.

Protokoll

Hier nun die Beschreibung des Protokolls, um ein solches TID anzusteuern:

Grundlegendes

Der Opel Radio-Display Bus ist ein serieller Bus, der ein Master Gerät, das Radio mit dem Slave Gerät, dem Triple Info Display oder dem Multi Info Display verbindet.

Er basiert auf dem I2C Protokoll, zusätzlich gibt es eine Master Request Leitung (MRQ).

Anschlussbelegungen

8-stelliges TID Opel Astra F und Corsa B/Tigra

Pinbelegung 8-stelliges TID
Pin Beschreibung Klemme Farbe Astra F Farbe Corsa B
1 Dauerplus Kl. 30 rt rt
2 Außentemperatur Minus bl
3 Masse Kl. 31 br br
4 Außentemperatur Plus bl-ws
5 Zündung Kl. 15 sw sw
6 Auffindbeleuchtung gr-gn gr-gn
7 Auffindbeleuchtung nachts (gedimmt) gr-sw gr-sw
8 Radioanzeige ein / Datum aus (AA) rt-gn rt-gn
9 SCL br-ws br-rt
10 MRQ br-ws br-gr
11 SDA br-ws br-sw
12 SDV (Speed Dependent Volume) br-ws bl-rt
12 SDV (Speed Dependent Volume) br-ws bl-rt

10-stelliges TID Opel Astra G und Corsa C

Pinbelegung 10-stelliges TID
Pin Beschreibung Klemme Farbe Astra G Farbe Corsa C
1 Zündung Kl. 15 sw sw
2 Radioanzeige ein / Datum aus (AA) ws-rt rt-gn
3 Dauerplus Kl. 30 rt rt
4 Auffindbeleuchtung nachts (gedimmt) gr-ge gr-sw
5 Außentemperatur Plus bl-ws bl-ws
6 Masse Kl. 31 br br
7 Außentemperatur Minus bl bl
8 Diagnose br-ws br-gn
9 SDV (Speed Dependent Volume) bl-rt bl-ws
10 SCL br-rt gn
11 SDA br-sw ws
12 MRQ br-gr br-gr

Elektrische Daten

  • Spannung für High: >4V
  • Spannung für Low: <1V
  • Pull-Up Widerstände auf Slave Seite

Power on Test

Power on Test

Die folgende Signalfolge muss das Autoradio jedes Mal senden wenn es angeschaltet wird. Das Einschalten des Radios erkennt der Slave an dem Signal Antenna Amplificator (AA). Innerhalb der Zeit T3 muss die eigentliche Daten-Übertragung dann beginnen.

min max
T1 100ms 500ms
T2 500us 1ms
T3 1ms 2ms

Durch das Auswerten der Signale kann der Master erkennen, ob eine Leitung defekt ist.

Ist beispielsweise eine Leitung ständig Low, dann hat sie einen Kurzschluss nach Masse.
Bleibt eine Leitung hingegen immer High, dann liegt ein Kurzschluss nach +Ub vor.
Und tritt ein gesendeter Impuls auch auf einer anderen Leitung auf, dann befindet sich ein Kurzschluss zwischen diesen beiden Leitungen.

Datenübertragung

Datenübertragung eines Frames
1. Master setzt MRQ Low
2. Slave antwortet SDA Low T1min = 100µs T1max = 15ms
3. Master setzt MRQ High T2min = 100µs T2max = 200µs
4. Slave setzt SDA High T3min = 100µs T3max = 200µs
5. Master setzt SDA Low T4min = 100µs T4max = 500µs
6. Master setzt SCL Low T6min = 100µs T6max = 200µs
7. Master sendet Adresse
8. Master setzt MRQ Low T7min = 100µs T7max = 500µs
9. Master sendet Daten T5min = 1ms T5max = 10ms
10. Master setzt MRQ High T7min = 100µs T7max = 500µs

Format einer Nachricht

Die zu sendende Nachricht setzt sich zusammen aus der Slave Adresse des Displays, den Symbol-Bytes und den Daten-Bytes.

1. Start der Übertragung
2. Slave Adresse
3. Symbol-Bytes
4. Daten-Bytes
5. Ende der Übertragung
Symbol-Bytes Daten-Bytes Slave Adresse
8-stelliges TID 2 8 0x4a (74 dec)
10-stelliges TID 3 10 0x4d (77 dec)

Bit Synchronisation

Bit Synchronisation
1. Master legt Bit an SDA
2. Master wartet Ts = 5µs
3. Master setzt SCL High
4. Master setzt SCL Low TSCLHmin = 50µs TSCLHmax = 1ms
5. Master wartet Th = 5µs
6. Master legt neues Bit an SDA
7. Master wartet Rest von TSCLL TSCLLmin = 50µs TSCLLmax = 1ms
8. Master setzt SCL High TSCLLmin = 50µs TSCLLmax = 1ms
9. Master wartet bis der Slave SCL High setzt Tmax = 1ms
10. Ab jetzt muss Master mind. TSCLLmin = 50µs SCL auf High lassen
11. Weiter bei Punkt 4

Bestätigung und Ende der Übertragung

Timing am Ende der Übertragung

Bestätigung am Ende des Bytes

1. Master setzt SCL High für LSB (Least significant Bit)
2. Master setzt SCL Low Daten werden vom Slave übernommen
3. Master setzt SDA High Slave setzt SCL Low (Daten übernommen)
4. Master setzt SCL High
5. Slave setzt SDA Low wenn Parität ungerade
6. Slave setzt SCL High Master kann Parität auswerten
7. Master setzt SCL Low Master nimmt Bestätigung an
8. Slave setzt SDA High
9. Master sendet MSB vom nächsten Byte oder Ende der Übertragung

Ende der Übertragung

9. Master setzt SDA Low T1 = 100µs
10. Master setzt MRQ High T2min = 100µs, T2max = 1ms
11. Master setzt SCL High T3 = 100µs
12. Master setzt SDA High T4 = 100µs

Fehlerbehandlung

Bei Paritätsfehlern setzt Slave SDA auf High. Darauf versucht der der Master das Byte erneut zu senden. Nach insgesamt drei Paritätsfehlern sendet der Master "Ende der Übertragung" und das Display zeigt nur Leerzeichen an.
Nach erfolgreicher Übertragung kann der Master nach 100µs ein erneut Daten senden.

Format eines Bytes

  • MSB wird zuerst gesendet, LSB zuletzt.
  • Zeichen Byte Format: 7 Datenbit, 1 Bit Parität (Ungerade)
  • Symbol Byte Format:
1. Byte Radio Status
2. Byte Tape Status
3. Byte CD Status

Format der Status-Bytes

Bit 1. Byte (Radio Status) 2. Byte (Tape Status) 3. Byte (CD Status)
7 Komma Symbol "CD-In" 0
6 Symbol "RDS" Symbol "Dolby C" Symbol "Track"
5 Symbol "TP" Symbol "Dolby B" Symbol "RDM"
4 Symbol "Stereo" Symbol "cr" Symbol "PGM"
3 0 Symbol "CPS" Symbol "DISC"
2 Symbol "AS" 0 0
1 Klammer um "TP" 0 0
0 Patität Patität Patität

Download

Die gesamte Doku könnt ihr auch als PDF-Datei hier runterladen.

Hardware

TID Evaluation Board

Ich habe mal eine Platine dazu gemacht und davon habe ich noch ein paar über. Wer sich nun ans Basteln machen möchte, aber keine Lust hat die Platine selber zu entwickeln und zu layouten, der kann gerne eine davon gegen einen kleinen Kostenbeitrag abhaben. Die Platine bietet Anschluss an das TID, sowie an eine Taste und die Geber für Geschwindigkeit und Motorumdrehungen. Bei Interesse einfach eine Mail schreiben an: tid[at]carluccio[dot]de

Es handelt sie hierbei nur um die Platine, da ich selber die Funktion für Tacho, Drehzahlmesser und ähnliches nicht brauche, habe ich auch kein Programm für den Mikrocontroller. Anfragen wie: "Mach mir so ein Modul, ich bezahl Dich auch dafür sind zwecklos." Ich habe genug anderes zu tun und die Entwicklung eines C Programmes dazu nimmt mindestens eine Woche Arbeit in Anspruch, wenn mir das jemand angemessen vergüten will, dann her mit den Angeboten. Schöner wäre es, wenn sich jemand dazu bereit erklären würde diese Arbeit zu übernehmen, ich würde Ihn dabei unterstützen und hinterher den Sourcecode hier veröffendlichen damit sich der Nachbau für andere leichter geschtaltet.

Verkauf von Geräten

Ich selber werde auf keinen Fall ein komplettes Gerät verkaufen, da es mir viel zu viel Aufwand ist, denn hier in Deutschland muss man dafür eine CE-Zulassung haben, eine Haftpflichtversicherung abschliessen und nicht zuletzt 2 Jahre Garantie übernehmen und das bei einem Artikel den der Kunde selber anschliessen will.
Ohne das alles wäre es extrem dumm ein solches Gerät auf den Markt zu bringen, denn dann wird man unter Umständen seines Lebens nicht mehr froh. So ist das leider.

Ich biete hier nur ein paar von den übriggebliebenen Evaluation Boards an. Es handelt sich dabei nur um die unbestückten Platinen, die Bauteile mus jeder selber auflöten. Und fertige Software gibt es auch nicht, ich habe da einige C-Codeschnipsel und auch ein Assembler-File mit denen man starten kann, es ist aber weit entfernt von einer serientauglichen Lösung.

Also überlegt es Euch, man lernt viel dabei. Ich habe angefangen das Protokoll zu verstehen, aber da ich eine solche Anzeige nicht mehr brauche ist an dieser Stelle erstmal Schluss ...

Haftungsausschluss

Alle hier gemachten Angaben habe ich nach bestem Wissen und Gewissen gemacht, selbstverständlich kann ich nicht für deren Richtigkeit garantieren. Wer sich also entschließt an seinem Display rumzubasteln, der macht das auf eigenes Risiko.