O sinal REMOTE (tensão de 12V, que serve para ligar amplificadores externos quando o rádio está ligado) não é tão simples de remover dos sistemas de rádio padrão modernos. Se anteriormente era possível usar a perna ST-BY de um chip amplificador, agora os gravadores de rádio não usam essa perna porque apareceram chips amplificadores controlados digitalmente.Você pode procurar na placa de circuito por faixas onde a tensão aparece quando o rádio está ligado, mas na maioria dos casos elas não são adequadas. Você pode conectar-se à energia da luz de fundo da tela, apenas neste caso o amplificador pode ligar sem programação - antes de ligar o amplificador embutido (que é acompanhado por cliques no caminho) ou ao ajustar o clima ou quando os sensores de estacionamento estiverem funcionando.Vou tentar descrever outra saída da situação no exemplo do rádio Swing padrão no Skoda Octavia A7Estudamos o dispositivo
O amplificador de terminal é TDA7563, um sinal analógico chega com o DSP SAF7741HV.O TDA7563, como se viu, é muito popular entre os desenvolvedores da unidade principal porque o chip possui controle e diagnóstico digital no barramento i2c, e o i2c é usado no rádio há muito tempo. O microcircuito do amplificador, quando o rádio é ligado, sob o comando do processador principal, testa os alto-falantes, fornece o resultado do teste de acordo com i2c - um circuito aberto / curto é determinado, o que permite à unidade de rádio emitir esses erros através do equipamento de diagnóstico CAN. O microchip do amplificador também é colocado no modo de suspensão por comandos i2c (o pé ST-BY do amplificador não é usado), o que complica muito o recebimento do sinal REMOTE.Em geral, todo o rádio é constantemente ligado, independentemente de estar ligado e a ignição ligada. Só que todos os microcircuitos desnecessários (incluindo o amplificador) ficam encobertos até serem necessários e o processador principal do gravador de rádio os acorda (no nosso caso).O receptor de rádio recebe o estado de ativação das dimensões e ativação da ignição via CAN. Troque com os botões do volante - via CAN para a unidade de gateway do barramento de diagnóstico e, em seguida - via LIN para o controlador de botão no volante.Idéia
A idéia é colocar outro dispositivo baseado em um microcontrolador simples e barato no barramento interno do i2c, que fingirá ser um chip amplificador e ouvirá todos os comandos que voam do processador do rádio. Além disso, o i2c permite que nosso "espião" permaneça invisível para o processador de rádio. O amplificador embutido funcionará como antes, e o sinal REMOTE será gerado pelo microcontrolador exatamente quando o rádio ligar o amplificador embutido. Este método é adequado para todos os gravadores de rádio nos quais o chip TDA7563 é usado ou compatível com ele através do protocolo de troca.O próprio dispositivo foi montado em um fim de semana em uma placa na qual, além do microcontrolador, havia apenas 3 resistores e 2 LEDs de depuração (opcional). O microcontrolador é escolhido a partir de um dispositivo desnecessário; portanto, durante muito tempo, não pensei na escolha de mícrons.

Software do controlador de depuração
Tudo é bem simples. Nós apenas precisamos implementar o i2c-slave com um endereço como TDA7563 (0x6C) e aguardar solicitações de gravação. Em seguida, você precisa pegar 2 bytes de instrução do processador do rádio e analisá-los. Os bits de interesse são Standby Off no byte IB2, Ativar som dos canais traseiros e Ativar som dos canais frontais no byte IB1. Em geral, descobriu-se que o gravador de rádio define o bit de Standby Off e com um pequeno atraso - os bits de Ativar som dos canais frontais e Ativar som dos canais traseiros.
Descrevi os bytes de comando na forma de estruturas de bits, que coloquei em uma união com uma matriz de 2 bytes, para que, ao preencher o buffer, eu o acessasse byte-by-bye e, ao analisar o comando, tenha acesso conveniente aos bits:Comando Descrição do Buffer de Recebimentotypedef 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;
E é assim que a verificação de comando é exibida (eu verifico os bits Standby Off e Unmute Sound Channels):O códigovoid CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}
Para impedir que o espião interfira na leitura do estado do TDA7563, emitiremos bytes = 0xFF durante as operações de leitura do escravo, para que o TDA possa desenhar a linha SDA no chão nos momentos certos e o espião não interfira nele.Manipulador de interrupção 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); // .
}
O projeto inteiro pode ser baixado aqui . Em princípio, o código é facilmente refeito para qualquer amplificador ms com controle i2c. (encontrado com TDF8546, por exemplo).Meu controlador dorme 99% do tempo no modo de desligamento. Acorda ao acessar seu endereço i2c (usando o hardware TWI), aceita um comando, analisa-o, se necessário, gera 1 para a saída REMOTE_3.3, pisca o segundo LED de depuração (D2) e adormece novamente.Processo de depuração:
Nós coletamos
Quando o firmware é depurado, você pode começar a montar o rádio.Taxa que colei no sintonizador de tela:
porque Eu não tinha lugar para transistores na placa, formando uma tensão de 12V a partir do controlador REMOTE_3.3, apenas peguei o 78R12 controlado pelo nível lógico. Também foi adicionado um fusível N10 a 0,4A.
TDA7563 conectado ao barramento i2c do rádio nas pernas: O rádio
foi montado. Fiação azul preciosa
O mesmo, mas em um rádio diferente e em formato de vídeo: