Le signal REMOTE (tension 12V, qui est utilisé pour allumer les amplificateurs externes lorsque la radio est allumée) n'est pas si simple à supprimer des enregistreurs radio standard modernes. Si auparavant il était possible d'utiliser le pied ST-BY d'une puce d'amplificateur, maintenant les magnétophones radio n'utilisent pas ce pied car des puces d'amplificateur à commande numérique sont apparues.Vous pouvez rechercher sur le circuit imprimé les pistes sur lesquelles la tension apparaît lorsque la radio est allumée, mais dans la plupart des cas, elles ne conviennent pas. Vous pouvez vous connecter à la puissance du rétroéclairage de l'écran, uniquement dans ce cas, l'amplificateur peut s'allumer de façon imprévue - avant d'allumer l'amplificateur intégré (qui s'accompagne de clics sur le chemin) ou lors du réglage de la température ou lorsque les capteurs de stationnement fonctionnent.Je vais essayer de décrire une autre façon de sortir de la situation sur l'exemple de la radio Swing standard sur Skoda Octavia A7Nous étudions l'appareil
L'amplificateur terminal est le TDA7563, un signal analogique vient avec le DSP SAF7741HV.Il s'est avéré que le TDA7563 est très populaire auprès des développeurs de l'unité principale, car la puce a un contrôle et des diagnostics numériques sur le bus i2c, et l'i2c est utilisé dans la radio depuis très longtemps. Le microcircuit de l'amplificateur, lorsque la radio est allumée, à la commande du processeur principal, teste les haut-parleurs, donne le résultat du test selon i2c - un circuit ouvert / court-circuit est déterminé, ce qui permet à la radio d'émettre ces erreurs via un équipement de diagnostic CAN. La micropuce de l’amplificateur est également mise en veille par les commandes i2c (le pied ST-BY de l’amplificateur n’est pas utilisé), ce qui complique considérablement la réception du signal REMOTE.En général, la radio entière est constamment alimentée, qu'elle soit allumée ou non. C'est juste que tous les microcircuits inutiles (y compris l'amplificateur) sont couverts jusqu'à ce qu'ils soient nécessaires et que le processeur principal du magnétophone radio les réveille (dans notre cas).Le récepteur radio reçoit l'état d'activation des dimensions et de mise du contact via CAN. Échangez avec les boutons du volant - via CAN vers l'unité de passerelle de bus de diagnostic, puis - via LIN vers le contrôleur de bouton dans le volant.Idée
L'idée est de mettre un autre appareil basé sur un microcontrôleur simple et bon marché sur le bus interne de l'i2c, qui se fera passer pour une puce d'amplificateur et écoutera toutes les commandes qui s'y envoient depuis le processeur de la radio. De plus, i2c permet à notre "espion" de rester invisible pour le processeur radio. L'amplificateur intégré fonctionnera comme auparavant et le signal REMOTE sera généré par le microcontrôleur exactement lorsque la radio allumera son amplificateur intégré. Cette méthode convient à tous les magnétophones radio dans lesquels la puce TDA7563 est utilisée ou compatible avec elle via le protocole d'échange.L'appareil lui-même a été assemblé au cours du week-end sur une carte sur laquelle, en plus du microcontrôleur, il n'y avait que 3 résistances et 2 LED de débogage (en option). Le microcontrôleur est choisi dans un appareil inutile, donc pendant longtemps je n'ai pas pensé au choix des microns.

Logiciel de contrôleur de débogage
Tout est assez simple. Nous avons juste besoin d'implémenter l'esclave i2c avec une adresse comme TDA7563 (0x6C) et d'attendre les demandes d'écriture. Ensuite, vous devez prendre 2 octets d'instructions du processeur de la radio et les analyser. Les bits d'intérêt sont Standby Off dans l'octet IB2, Unmute Rear Channels et Unmute Front Channels dans l'octet IB1. En général, il s'est avéré que le magnétophone radio définit d'abord le bit Standby Off et avec un léger retard - les bits Unmute Front Channels et Unmute Rear Channels.
J'ai décrit les octets de commande sous la forme de structures binaires, que j'ai mises en union avec un tableau de 2 octets, de sorte que lorsque je remplis le tampon, j'y accède octet par bye, et lors de l'analyse de la commande, j'ai un accès pratique aux bits:Description de la mémoire tampon de réception des commandestypedef 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;
Et voici à quoi ressemble la vérification de la commande (je vérifie les bits Standby Off et Unmute Front Channels):Le codevoid CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}
Pour éviter que l'espion n'interfère avec la lecture de l'état du TDA7563, nous émettrons octets = 0xFF pendant les opérations de lecture de l'esclave, afin que le TDA puisse tirer la ligne SDA au sol au bon moment et que l'espion n'interfère pas avec lui.Gestionnaire d'interruption I2c#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); // .
}
L'ensemble du projet peut être téléchargé à partir d'ici . En principe, le code est facilement refait pour tous les amplificateurs ms avec contrôle i2c. (rencontré TDF8546, par exemple).Mon contrôleur dort 99% du temps en mode hors tension. Se réveille lors de l'accès à son adresse i2c (en utilisant le matériel TWI), accepte une commande, l'analyse, si nécessaire les sorties 1 à la sortie REMOTE_3.3, clignote la deuxième LED de débogage (D2) et s'endort à nouveau.Processus de débogage:
Nous collectons
Lorsque le firmware est débogué, vous pouvez commencer à assembler la radio.Frais que j'ai collé au syntoniseur d'écran:
Parce que Je n'avais pas de place pour les transistors sur la carte, formant une tension 12V à partir du contrôleur REMOTE_3.3, je viens de prendre 78R12 contrôlé par le niveau logique. Ajout d'un fusible N10 intégré à 0,4 A.
TDA7563 connecté au bus i2c de la radio sur les pieds: La radio
est montée. Câblage bleu précieux
Même chose, mais sur une radio différente et au format vidéo: