martinsuniverse

CD-Wechsler Protokoll (Audi / VW / Panasonic)

Die meisten der Audi/VW-Radios besitzen einen Audioeingang, der aber nur genutzt werden kann, wenn ein CD-Wechsler angeschlossen ist. Um diesen trotzdem zu nutzen, muss eine Gerät her, das einen CD-Wechsler simuliert. Zum bauen eines solchen Geräts sind Kenntnisse über die Schnittstelle und das Protokoll erforderlich. Die Audi und auch die VW Radios verwenden das Panasonic Protokoll. Die Schnittstelle sind im Prinzip 2 Schnittstellen.

  • Daten vom CDC zum Radio senden
  • Daten vom Radio zum CDC senden

Datenrichtung Radio zum CD-Wechsler

Das Protokoll der Schnittstelle, mit der das Radio Kommandos zum CD-Wechsler sendet, ist ähnlich dem einer IR-Fernbedienung (Pulsweitenmodulation oder wie sich das schimpft). Das Übertragen der Daten geschieht über eine einzelne Leitung. Bei der Bitreihenfolge gibt es etwas Interpretationsspielraum. Ich interpretiere die Bitreihenfolge anders, als dies in dem Projekt VWCDPIC (siehe Links) gemacht wird.

Datenrichtung Radio->CDC

Es gibt drei unterschiedliche Bit Kennungen

  • Start-Bit : Es besteht aus einer 9ms High Phase gefolgt von einer 4,5ms Low Phase.
  • 0-Bit : Ein Bit mit der Wert 0, wird durch eine gleich lange High und Low Phase representiert. Die Länge ist jeweils 0,55ms. Das Bit besitzt also eine Gesamtlänge von 1,1ms.
  • 1-Bit : Ein Bit mit der Wertigkeit 1, stellt ein 0,55ms langer High Impuls gefolgt von einer 1,7ms Low Phase dar. Die Gesamtlänge beträgt also 2,25ms.

Ein Kommando besteht aus 4 Bytes, wobei bei meiner Interpretation das LSB (niederwertigste Bit) jedes Bytes zuerst gesendet wird.

  • 1. Byte : immer CA hex.
  • 2. Byte : immer 34 hex.
  • 3. Byte : Das Kommando, welches ausgewertet wird.
  • 4. Byte : Nocheinmal das Kommando mit invertierten Bit.

Im Bild oben ist die Bitfolge "01010011 00101100 01111000 10000111" zu sehen. Die entspricht der hexadezimalen Darstellung "CA 34 1e e1". Das Radio hat in diesem Fall mitgeteilt, das der nächste Titel gespielt werden soll. Einen Auszug der Kommandos ist in folgendem Quellcode zu sehen :

#define CDCSCAN       0x05
#define CDCRANDOM1CD  0x06  // wird fortlaufend im Rnd-1-Modus gesendet
#define CDCRANDOM6CD  0x07  // wird fortlaufend im Rnd-6-Modus gesendet
#define CDCRADIO      0x08  // wird fortlaufend gesendet im Radio-Modus
#define CDCREWIND     0x1a
#define CDCFORWARD    0x1b
#define CDCLOADCD     0x1c
#define CDCPREVTRACK  0x1e
#define CDCNEXTTRACK  0x1f
#define CDCPOWERON    0x25  // nur beim Einschalten im CD-Modus
#define CDCENABLE     0x27  // wird nach FORWARD,REWIND gesendet
#define CDCCD1        0x30  // darauf folgt immer CDCLOADCD
#define CDCCD2        0x31
#define CDCCD3        0x42
#define CDCCD4        0x33
#define CDCCD5        0x34
#define CDCCD6        0x35
#define CDCCD7        0x36
#define CDCCD8        0x37
#define CDCCD9        0x38
#define CDCCDCHANGE   0x80

Datenrichtung CD-Wechsler zum Radio

Die Schnittstelle mit der der CD-Wechsler Daten zu Radio schickt, ist eine Synchrone Serielle Schnittstelle. Das Timing ist dabei nicht sehr kritisch. Bei meinem MP3-Player wird mit 50kBaud gesendet, und die Nachricht, die aus 8 Byte besteht, wird in einem Intervall von 50ms gesendet. Die Daten werden dabei "MSB first" gesendet und die Bits sind mit der fallende Flanke gültig.

Datenrichtung CDC->Radio

Fürs erste mal ein kleiner Codeschnipzel. Möchte man nur den Audioeingang freischalten dann reicht solch ein einfacher Code. Möchte man etwas mehr machen ist das alles etwas tricky.

radiotxbuf[0] = CDCState.mode;
radiotxbuf[1] = CDCState.cd | 0x40;
radiotxbuf[2] = ((CDCState.tr / 10) * 0x10) + (CDCState.tr % 10);
radiotxbuf[3] = ((CDCState.min / 10) * 0x10) + (CDCState.min % 10);
radiotxbuf[4] = ((CDCState.sec / 10) * 0x10) + (CDCState.sec % 10);
radiotxbuf[5] = CDCState.state;
radiotxbuf[6] = CDCState.stat2;
radiotxbuf[7] = CDCState.mode & 0xf7;

Wenn ich mal Zeit habe schreibe ich dazu noch etwas mehr, oder fragt einfach im Forum an.

Stecker / Pinbelegung

Es gibt wohl einige verschiedene Stecker, die am CD-Wechsler verbaut wurden. Hier deswegen nur die Pinbelegung von dem Wechlser (8E0 035 111 A), den ich in meine Finger bekommen habe.

Stecker des CD-Wechslers

Auf den hier aufgelisteten Seiten könnt ihr weitere Infos oder ähnliche Projekte finden.

Tja ... Das Internet vergisst nichts! Manchmal aber schon, die Seiten die hier verlinkt waren existieren nicht mehr undecided.

nach oben