KT0810SG调试过程与程序IC解密
IC解密开始 write()会一直被调用可能是因为 echo命令会判断 如果写入失败就会一直写,而write()刚好被我写成返回0。
1、先拿到原厂代码,最好要原厂提供完整的 demo 源码工程。
2、大概了解原厂代码,分析 demo 源码的执行流程以及各个函数的功能
3、修改sys_config.fex 启用使能I2C通道2
4、编写I2C驱动框架,修改 原厂代码的I2C读写函数(移植过程)
5、在驱动中根据 demo 源码分析出来的流程去调用原厂代码 若不知道流程,最好询问原厂。
6、预留接口给上层。如设置收音频率等 可以用 echo 123 >设备节点文件 来调试
问题点:
1、KT0810SG 是采用I2C协议通讯,在测试I2C读写时,发现读取芯片ID总是0xFF,读取其他的寄存器的值也不对。
硬件问题:I2C的SDA、SCL线电压只有2.5V,需要提升至3V,MCU的高电平在3.3V左右
2、KT0810SG 在 KT_FMInit(void) 初始化总是失败。
uchar KT_FMInit(void) //0->Fail 1->Success
{
...
...
for (i=0;i<INIT_FAIL_TH;i++)
{
Delay_ms(500);
regx=KT_Bus_Read(0x12);
if ((regx&0x8800)!=0x8800) // 查看芯片手册,这里检测的是晶振和System PLL 是否准备好
continue;
break;
}
if (i==INIT_FAIL_TH)
return(0);
...
...
}
IC解密 KT0810SG 的时钟是由 A20 提供,32.768KHz 。
硬件问题:时钟线接错位置,导致 A20 提供的时钟没法送到 KT0810SG 。
检测方法:将时钟线断开,示波器去测 A20 引脚看是否有频率,现场是有的,但是接回芯片频率就不正常。

芯片解密