Das REMOTE-Signal (12-V-Spannung, mit der externe Verstärker beim Einschalten des Radios eingeschaltet werden) ist bei modernen Standard-Funkrekordern nicht so einfach zu entfernen. Wenn es früher möglich war, den ST-BY-Zweig eines Verstärkerchips zu verwenden, verwenden die Radioentwickler diesen Zweig jetzt nicht mehr, da digital gesteuerte Verstärkerchips erschienen sind.Sie können die Leiterplatte nach Spuren durchsuchen, auf denen beim Einschalten des Radios Spannung auftritt, die jedoch in den meisten Fällen nicht geeignet sind. Sie können eine Verbindung zur Stromversorgung der Display-Hintergrundbeleuchtung herstellen. Nur in diesem Fall kann der Verstärker außerplanmäßig eingeschaltet werden - vor dem Einschalten des eingebauten Verstärkers (der von Klicks im Pfad begleitet wird) oder beim Einstellen des Klimas oder wenn Parksensoren funktionieren.Ich werde versuchen, am Beispiel des Standard-Swing-Radios des Skoda Octavia A7 einen anderen Ausweg aus der Situation zu beschreibenWir untersuchen das Gerät
Der Endverstärker ist TDA7563, ein analoges Signal kommt mit dem DSP SAF7741HV dazu.Wie sich herausstellte, ist TDA7563 bei den Herstellern von Vollzeit-Funkbandgeräten sehr beliebt, da der Chip über eine digitale Steuerung und Diagnose auf dem i2c-Bus verfügt und i2c seit sehr langer Zeit in Funkbandgeräten verwendet wird. Die Verstärkermikroschaltung testet beim Einschalten des Radios auf Befehl des Hauptprozessors die Lautsprecher und gibt das Testergebnis gemäß i2c aus - es wird ein Unterbrechungs- / Kurzschluss festgestellt, der es der Funkeinheit ermöglicht, diese Fehler über CAN-Diagnosegeräte auszugeben. Der Mikrochip des Verstärkers wird auch durch i2c-Befehle in den Ruhemodus versetzt (der ST-BY-Zweig des Verstärkers wird nicht verwendet), was den Empfang des REMOTE-Signals erheblich erschwert.Im Allgemeinen wird das gesamte Radio ständig mit Strom versorgt, unabhängig davon, ob es eingeschaltet und die Zündung eingeschaltet ist. Es ist nur so, dass alle unnötigen Mikroschaltungen (einschließlich des Verstärkers) gefüllt sind, bis sie benötigt werden und der Hauptprozessor des Funkbandgeräts sie aufweckt (in unserem Fall).Der Funkempfänger erhält den Status des Einschaltens der Abmessungen und des Einschaltens der Zündung über CAN. Austausch mit Lenkradtasten - über CAN an die Diagnosebus-Gateway-Einheit, dann - über LIN an die Tastensteuerung im Lenkrad.Idee
Die Idee ist, ein anderes Gerät, das auf einem einfachen und billigen Mikrocontroller basiert, auf den internen Bus des i2c-Radios zu setzen, der sich als Verstärkerchip ausgibt und alle Befehle abhört, die vom Prozessor des Radios in das Radio fliegen. Darüber hinaus ermöglicht i2c unserem "Spion", für den Funkprozessor unsichtbar zu bleiben. Der eingebaute Verstärker funktioniert wie zuvor und das REMOTE-Signal wird vom Mikrocontroller genau dann erzeugt, wenn das Radio seinen eingebauten Verstärker einschaltet. Diese Methode eignet sich für alle Funkbandgeräte, bei denen der TDA7563-Chip über das Austauschprotokoll verwendet wird oder mit ihm kompatibel ist.Das Gerät selbst wurde an einem Wochenende auf einer Platine montiert, auf der sich neben dem Mikrocontroller nur 3 Widerstände und 2 Debug-LEDs befanden (optional). Der Mikrocontroller wird von einem unnötigen Gerät aufgenommen, daher habe ich lange nicht über die Wahl der Mikrometer nachgedacht.

Debug-Controller-Software
Alles ist ganz einfach. Wir müssen nur i2c-Slave mit einer Adresse wie TDA7563 (0x6C) implementieren und auf Schreibanforderungen warten. Als nächstes müssen Sie 2 Anweisungsbytes vom Prozessor des Radios entnehmen und analysieren. Die interessierenden Bits sind Standby Off in Byte IB2, Unmute Rear Channels und Unmute Front Channels in Byte IB1. Im Allgemeinen stellte sich heraus, dass der Radiorecorder zuerst das Standby-Off-Bit und mit einer leichten Verzögerung setzt - die Bits Unmute Front Channels und Unmute Rear Channels.
Ich habe Befehlsbytes in Form von Bitstrukturen beschrieben, die ich zusammen mit einem Array von 2 Bytes zu einer Vereinigung zusammengefügt habe, damit ich beim Füllen des Puffers byteweise darauf zugreifen und beim Parsen des Befehls bequem auf die Bits zugreifen kann:Befehl Empfangspuffer Beschreibungtypedef struct
{
unsigned char CD_10 :1;
unsigned char UnmuteRearChannels :1;
unsigned char UnmuteFrontChannels :1;
unsigned char RearChannelGain12db :1;
unsigned char FrontChannelGain12db :1;
unsigned char OffsetDetectionEnable :1;
unsigned char DiagnosticEnable :1;
unsigned char NotUsed1 :1;
} tIB1;
typedef struct
{
unsigned char HighEfficiencyMode_Left :1;
unsigned char HighEfficiencyMode_Right :1;
unsigned char CurrentDetectionDiagnosticEnable:1;
unsigned char LineDriverModeDiagnostic :1;
unsigned char StandbyOff :1;
unsigned char FastMuting :1;
unsigned char NotUsed1 :1;
unsigned char NotUsed2 :1;
} tIB2;
typedef union
{
struct
{
tIB1 IB1;
tIB2 IB2;
} IBs;
char Bytes[2];
} tTWI_Buff;
Und so sieht die Befehlsprüfung aus (ich überprüfe die Bits Standby Off und Unmute Front Channels):Der Codevoid CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}
Um zu verhindern, dass der Spion das Lesen des Status von TDA7563 stört, geben wir während der Lesevorgänge vom Slave Bytes = 0xFF aus, damit der TDA die SDA-Linie zum richtigen Zeitpunkt auf den Boden ziehen kann und der Spion sie nicht stört.I2c Interrupt Handler#pragma vector=TWI_vect
__interrupt void TWI_ISR()
{
switch (TWSR & 0xF8)
{
//===
case 0xa8: // , , Data.
case 0xb8: // Data, ACK.
case 0xc0: // Data, NACK.
TWDR = 0xFF;
break;
//===
case 0x60: // , , Data.
TWI_Buff_Idx = 0;
LED_Flash(5000);
break;
case 0x80: // Data, .
case 0x88: // Data, .
TWI_Buff.Bytes[TWI_Buff_Idx++] = TWDR;
break;
case 0xa0: // STOP RESTART.
CheckTWIbuff();
break;
case 0xF8:
case 0x00:
Init_Twi();
break;
default:
break;
}
TWCR |= (1 << TWINT); // .
}
Das gesamte Projekt kann hier heruntergeladen werden . Im Prinzip kann der Code für alle ms-Verstärker mit i2c-Steuerung leicht erneuert werden. (erfüllt zum Beispiel TDF8546).Mein Controller schläft 99% der Zeit im Power-Down-Modus. Wacht auf, wenn auf seine i2c-Adresse zugegriffen wird (mithilfe von Hardware-TWI), akzeptiert einen Befehl, analysiert ihn, gibt bei Bedarf 1 an den Ausgang REMOTE_3.3 aus, blinkt die zweite Debug-LED (D2) und schläft wieder ein.Debugging-Prozess:
Wir sammeln
Wenn die Firmware debuggt ist, können Sie mit dem Zusammenbau des Radios beginnen.Fee habe ich auf den Screen Tuner geklebt:
Weil Ich hatte keinen Platz für Transistoren auf der Platine und bildete eine 12-V-Spannung vom REMOTE_3.3-Controller. Ich habe nur 78R12 genommen, das vom Logikpegel gesteuert wird. Außerdem wurde eine integrierte Sicherung N10 mit 0,4 A hinzugefügt.
TDA7563 an den Beinen an den i2c-Bus des Radios angeschlossen: Das Radio
wurde montiert. Geschätzte blaue Verkabelung
Das gleiche, aber in einem anderen Radio und im Videoformat: