我们使用i2c控制的放大器从车载收音机输出远程信号



要从现代标准的无线电记录仪中移除REMOTE信号(12V电压,用于在打开无线电时用于打开外部放大器)不是那么容易。如果以前可以使用放大器芯片的ST-BY支路,那么现在无线电开发人员就不用此支路,因为出现了数字控制放大器芯片。

您可以在电路板上搜索当无线电打开时出现电压的轨道,但是在大多数情况下它们不合适。您只能连接显示器背光源的电源,只有在这种情况下,才能打开放大器-在打开内置放大器之前(伴随有喀哒声),或者在调节气候或停车传感器工作时,放大器会意外打开。

我将尝试通过斯柯达明锐A7上标准Swing收音机的示例来描述另一种情况

我们研究设备


终端放大器是TDA7563,DSP SAF7741HV带有一个模拟信号。

事实证明,TDA7563在主机开发人员中非常受欢迎,因为该芯片在i2c总线上具有数字控制和诊断功能,并且i2c在无线电中已经使用了很长时间。当收音机打开时,放大器微电路在主处理器的命令下测试扬声器,并根据i2c给出测试结果-确定开路/短路,这允许收音机通过CAN诊断设备发出这些错误。放大器微电路也通过i2c命令进入睡眠模式(不使用放大器的ST-BY脚),这大大增加了REMOTE信号的接收。

通常,无论收音机是否打开和点火开关都处于打开状态,整个无线电都将持续供电。只是掩盖了所有不必要的微电路(包括放大器),直到需要它们为止,并且录音机的主处理器将它们唤醒(在我们的情况下)。

无线电接收器通过CAN接收打开尺寸和打开点火装置的状态。交换方向盘按钮-通过CAN到诊断总线网关单元,然后-通过LIN交换到方向盘中的按钮控制器。

理念


想法是在i2c的内部总线上放置另一台基于简单且廉价的微控制器的设备,该设备将假装为放大器芯片,并收听从无线电处理器飞入该设备的所有命令。而且,i2c允许我们的“间谍”对无线电处理器保持不可见。内置放大器将像以前一样工作,并且在无线电打开内置放大器时,微控制器将精确地产生REMOTE信号。该方法适用于使用TDA7563芯片或通过交换协议与其兼容的所有磁带录音机。

该设备本身是在周末组装在板上的,除了微控制器外,板上还只有3个电阻和2个调试LED(可选)。微控制器是从不必要的设备中挑选出来的,因此很长一段时间我都没有考虑选择微米。




调试控制器软件


一切都很简单。我们只需要使用地址TDA7563(0x6C)来实现i2c从属,并等待写入请求。接下来,您需要从无线电处理器中提取2个指令字节并进行分析。感兴趣的位是字节IB2中的“待机关闭”,字节IB1中的“取消静音后声道”和“取消静音前声道”。通常,结果表明,磁带录音机首先将“待机关闭”位设置为“ Unmute Front Channels”和“ Unmute Rear Channels”位,并稍有延迟。



我以位结构的形式描述了命令字节,我将其与2个字节的数组组合在一起,以便在填充缓冲区时可以逐字节访问它,并且在解析命令时可以方便地访问位:

命令接收缓冲区说明
typedef 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;


这就是命令检查的外观(我检查“待机关闭”和“取消静音前声道”位):

编码
void CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}


为了防止间谍干扰从TDA7563读取状态,我们将在从属设备的读取操作期间发出字节= 0xFF,以便TDA可以在适当的时候将SDA线拉到地面,并且间谍不会对其产生干扰。
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); // .
}

整个项目可以从这里下载原则上,使用i2c控制的任何ms放大器均可轻松重做该代码。(例如,满足TDF8546)。

我的控制器在掉电模式下有99%的时间处于睡眠状态。在访问其i2c地址(使用硬件TWI)时唤醒,接受命令,对其进行分析,如有必要,将输出1输出到输出REMOTE_3.3,第二个调试LED(D2)闪烁,然后再次进入睡眠状态。

调试过程:



我们收集


固件调试完毕后,您就可以开始组装收音机了。

我粘在屏幕调谐器上的费用:



因为 我在板上没有放置晶体管的位置,无法通过REMOTE_3.3控制器形成12V电压,我只使用了受逻辑电平控制的78R12。还增加了集成保险丝N10(0.4A)。



TDA7563通过腿部连接到无线电的i2c总线:无线电


已组装完毕。宝蓝色接线



相同,但使用不同的收音机和视频格式:

All Articles