|
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);
}
|
|