|
stm32用IIC读RDA5807M里面的03H寄存器数据跟刚写进去的数据不一致,但其他寄存器读出来的数据跟前一次写进去的数据一致,检查了IIC时序,感觉没问题,都是按照数据手册弄的。我尝试了把写数据进03H寄存器跟读03H寄存器时间间隔延长,一直到1秒,但调试的结果读取的数据还是0x4FC0,我尝试再写不一样的数据到RDA5807M的03H寄存器,结果返回的数据还是0x4FC0。这个往03H寄存器写数据读取出错的问题困扰了我两天了,但很奇怪其他寄存器读取的数据是正确的。麻烦弄过RDA5807M的大佬结合经验提下建议,谢谢!(下面的函数就是验证IIC从RDA5807M读取数据是否正确)
void rda5807Init(void )
{
unsigned int temp;
WriteReg(RDA_R02,0x0002); //软件复位
Delay_ms(50);
temp = ReadReg(RDA_R02);
WriteReg(RDA_R02,0xd281); // 晶振选择32.768Khz 向上搜索重低音立体声
Delay_ms (50);
temp = ReadReg(RDA_R02);
WriteReg(RDA_R03,0x0500); //频率设为87.5MHz ,步进100Khz 频带为87M~108M
// Delay_ms (50);
// temp = ReadReg(RDA_R03);
// WriteReg(RDA_R03,0x0d00); //频率设为88.3MHz ,步进100Khz 频带为87M~108M
Delay_ms (50);
temp = ReadReg(RDA_R03);
WriteReg(RDA_R04,0x0040); //基本配置
Delay_ms (20);
temp = ReadReg(RDA_R04);
WriteReg(RDA_R05,0X8886); //音量设置为vol=6 搜索阀值为8
Delay_ms (20);
temp = ReadReg(RDA_R05);
FM_enable(1);
}
|
|