Opel TID: Unterschied zwischen den Versionen
Dario (Diskussion | Beiträge) |
Dario (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] | ||
+ | [[Kategorie:AVR]] | ||
''Projektdatum: 2002'' | ''Projektdatum: 2002'' | ||
= Einleitung = | = Einleitung = |
Version vom 7. Mai 2008, 20:17 Uhr
Projektdatum: 2002
Inhaltsverzeichnis
- 1 Einleitung
- 2 Protokoll
- 3 Download
- 4 Hardware
- 5 Verkauf von Geräten
- 6 Haftungsausschluss
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 |
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.
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
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
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
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
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.