Opel TID: Unterschied zwischen den Versionen

Aus Dario's Home
Wechseln zu: Navigation, Suche
(10-stelliges TID Opel Astra G und Corsa C)
(Datenübertragung)
Zeile 149: Zeile 149:
 
  pro-tid-pic5.png
 
  pro-tid-pic5.png
  
{| {{prettytable}}
+
{| {{prettytablecenter}}
 
|-----
 
|-----
|align = "center"| 1. || Master setzt MRQ Low    ||              ||
+
| 1. ||align = "left"| Master setzt MRQ Low    ||              ||
 
|-----
 
|-----
|align = "center"| 2. || Slave antwortet SDA Low || T1min = 100µs || T1max = 15ms
+
| 2. ||align = "left"| Slave antwortet SDA Low || T1min = 100µs || T1max = 15ms
 
|-----
 
|-----
|align = "center"| 3. || Master setzt MRQ High  || T2min = 100µs || T2max = 200µs
+
| 3. ||align = "left"| Master setzt MRQ High  || T2min = 100µs || T2max = 200µs
 
|-----
 
|-----
|align = "center"| 4. || Slave setzt SDA High    || T3min = 100µs || T3max = 200µs
+
| 4. ||align = "left"| Slave setzt SDA High    || T3min = 100µs || T3max = 200µs
 
|-----
 
|-----
|align = "center"| 5. || Master setzt SDA Low    || T4min = 100µs || T4max = 500µs
+
| 5. ||align = "left"| Master setzt SDA Low    || T4min = 100µs || T4max = 500µs
 
|-----
 
|-----
|align = "center"| 6. || Master setzt SCL Low    || T6min = 100µs || T6max = 200µs
+
| 6. ||align = "left"| Master setzt SCL Low    || T6min = 100µs || T6max = 200µs
 
|-----
 
|-----
|align = "center"| 7. || Master sendet Adresse  ||              ||
+
| 7. ||align = "left"| Master sendet Adresse  ||              ||
 
|-----
 
|-----
|align = "center"| 8. || Master setzt MRQ Low    || T7min = 100µs || T7max = 500µs
+
| 8. ||align = "left"| Master setzt MRQ Low    || T7min = 100µs || T7max = 500µs
 
|-----
 
|-----
|align = "center"| 9. || Master sendet Daten    || T5min = 1ms  || T5max = 10ms
+
| 9. ||align = "left"| Master sendet Daten    || T5min = 1ms  || T5max = 10ms
 
|-----
 
|-----
|align = "center"| 10.| Master setzt MRQ High  || T7min = 100µs || T7max = 500µs
+
| 10.||align = "left"| Master setzt MRQ High  || T7min = 100µs || T7max = 500µs
 
|-----
 
|-----
 
|}
 
|}

Version vom 4. Mai 2008, 09:07 Uhr

Einleitung

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

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
pro-tid-pic3.png Opel-TID Anschlussbelegung Astra G

10-stelliges TID Opel Astra G und Corsa C

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

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.

pro-tid-pic4.png
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

pro-tid-pic5.png
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

pro-tid-pic6.png
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

pro-tid-pic7.png Opel-TID Timing EOT

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

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

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.

Download

Die gesamte Doku könnt ihr auch als

tid-protokoll.pdf PDF-Datei hier runterladen.

Hardware

/pro-tid-platine.jpg  Opel-TID Platine

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.

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.

Also überlegt es Euch, man lernt viel dabei. Ichhabe angefangen das Protokoll zu verstehen und dann wollte ich PHP lernen und habe deswegen diese Webseite erstellt, aber da ich eine solche Anzeige nicht brauche ist hier erstmal Schluss ...