La señal REMOTE (voltaje de 12V, que se usa para encender amplificadores externos cuando se enciende la radio) no es tan fácil de eliminar de las grabadoras de radio estándar modernas. Si antes era posible usar la pata ST-BY de un chip amplificador, ahora los desarrolladores de radio no usan esta pata porque han aparecido chips amplificadores controlados digitalmente.Puede buscar pistas en la placa de circuito en las que aparece el voltaje cuando se enciende la radio, pero en la mayoría de los casos no son adecuadas. Puede conectarse a la potencia de la luz de fondo de la pantalla, solo en este caso el amplificador puede encenderse de manera no programada, antes de encender el amplificador incorporado (que se acompaña de clics en el camino) o al ajustar el clima o cuando los sensores de estacionamiento están funcionando.Trataré de describir otra forma de salir de la situación con el ejemplo de la radio Swing estándar en Skoda Octavia A7Estudiamos el dispositivo
El amplificador terminal es TDA7563, una señal analógica viene con el DSP SAF7741HV.Resultó que el TDA7563 es muy popular entre los desarrolladores de la unidad principal porque el chip tiene control digital y diagnóstico en el bus i2c, e i2c se ha utilizado en la radio durante mucho tiempo. El microcircuito del amplificador, cuando se enciende la radio, al comando del procesador principal, prueba los altavoces, da el resultado de la prueba de acuerdo con i2c: se determina un circuito abierto / cortocircuito, que permite que la unidad de radio emita estos errores a través del equipo de diagnóstico CAN. El microcircuito del amplificador también se pone en modo de suspensión mediante comandos i2c (no se usa el tramo ST-BY del amplificador), lo que complica en gran medida la recepción de la señal REMOTA.En general, toda la radio se alimenta constantemente, independientemente de si está encendida o no. Es solo que todos los microcircuitos innecesarios (incluido el amplificador) están cubiertos hasta que se necesitan y el procesador principal de la grabadora de radio los activa (en nuestro caso).El receptor de radio recibe el estado de encender las dimensiones y encender el encendido a través de CAN. Intercambie con los botones del volante - a través de CAN a la unidad de puerta de enlace del bus de diagnóstico, luego - a través de LIN al controlador del botón en el volante.Idea
La idea es colocar otro dispositivo basado en un microcontrolador simple y barato en el bus interno de la radio i2c que pretenda ser un chip amplificador y escuchar todos los comandos que llegan desde el procesador de la radio. Además, i2c permite que nuestro "espía" permanezca invisible para el procesador de radio. El amplificador incorporado funcionará como antes, y la señal REMOTA será generada por el microcontrolador exactamente cuando la radio encienda su amplificador incorporado. Este método es adecuado para todas las grabadoras de radio en las que se utiliza el chip TDA7563 o es compatible con él a través del protocolo de intercambio.El dispositivo en sí se ensambló durante el fin de semana en una placa en la que, además del microcontrolador, solo había 3 resistencias y 2 LED de depuración (opcional). El microcontrolador se extrae de un dispositivo innecesario, por lo que durante mucho tiempo no pensé en la elección de micras.

Software controlador de depuración
Todo es bastante simple. Solo necesitamos implementar i2c-slave con una dirección como TDA7563 (0x6C) y esperar solicitudes de escritura. A continuación, debe tomar 2 bytes de instrucción del procesador de la radio y analizarlos. Los bits de interés son Standby Off en el byte IB2, Unmute Rear Channels y Unmute Front Channels en el byte IB1. En general, resultó que la grabadora de radio primero establece el bit de espera en reposo y con un ligero retraso: los bits de los canales delanteros y de los canales traseros de silencio.
Describí los bytes del comando en forma de estructuras de bits, que puse en una unión junto con una matriz de 2 bytes, de modo que al llenar el búfer, accedería byte por bye, y al analizar el comando, tendré acceso conveniente a los bits:Comando Recibir Descripción del búfertypedef 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;
Y así es como se ve la verificación del comando (verifico los bits de los canales frontales en espera desactivado y sin silenciar):El códigovoid CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}
Para evitar que el espía interfiera con la lectura del estado de TDA7563, emitiremos bytes = 0xFF durante las operaciones de lectura desde el esclavo, para que el TDA pueda dibujar la línea SDA en el suelo en los momentos correctos y el espía no interfiera con ella.Manejador de interrupciones 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); // .
}
Todo el proyecto se puede descargar desde aquí . En principio, el código se rehace fácilmente para cualquier amplificador ms con control i2c. (cumplió TDF8546, por ejemplo).Mi controlador duerme el 99% del tiempo en modo de apagado. Se despierta cuando accede a su dirección i2c (utilizando hardware TWI), acepta un comando, lo analiza, si es necesario, envía la salida 1 a la salida REMOTE_3.3, parpadea el segundo LED de depuración (D2) y se queda dormido nuevamente.Proceso de depuración
Nosotros coleccionamos
Cuando se depura el firmware, puede comenzar a ensamblar la radio.Tarifa que pegué al sintonizador de pantalla:
porque No tenía un lugar para los transistores en el tablero, formando un voltaje de 12V del controlador REMOTE_3.3, simplemente tomé 78R12 controlado por el nivel lógico. También se agregó un fusible integrado N10 a 0.4A.
TDA7563 conectado al bus i2c de la radio en las patas: la radio
ha sido ensamblada. Atesorado cableado azul
Lo mismo, pero en una radio diferente y en formato de video: