初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2014-10-31
- 在线时间
- 40 小时
|
1金钱
使用原子大哥的RDA5820程序做收音机,程序死在了设置频率部分
[mw_shl_code=c,true] freqset=9750; //ĬèÏÎa93.6Mhz
RDA5820_Freq_Set(freqset); //éèÖÃÆμÂê[/mw_shl_code]
跟踪进去之后发现程序死在了while((RDA5820_RD_Reg(0X0B)&(1<<7))==0);这句话
仿真发现RDA5820_RD_Reg(0X0B)返回的结果为0
[mw_shl_code=c,true]//éèÖÃRDA5820μÄÆμÂê
//freq:ÆμÂêÖμ(μ¥λÎa10Khz),±èèç10805,±íê¾108.05Mhz
void RDA5820_Freq_Set(u16 freq)
{
u16 temp;
u8 spc=0,band=0;
u16 fbtm,chan;
temp=RDA5820_RD_Reg(0X03); //¶áè¡0X03μÄÄúèY
temp&=0X001F;
band=(temp>>2)&0x03; //μÃμ½Æμ′ø
spc=temp&0x03; //μÃμ½·Ö±æÂê
if(spc==0)spc=10;
else if(spc==1)spc=20;
else spc=5;
if(band==0)fbtm=8700;
else if(band==1||band==2)fbtm=7600;
else
{
fbtm=RDA5820_RD_Reg(0X53);//μÃμ½bottomÆμÂê
fbtm*=10;
}
if(freq<fbtm)return;
chan=(freq-fbtm)/spc; //μÃμ½CHANó|¸ÃD′èëμÄÖμ
chan&=0X3FF; //è¡μí10λ
temp|=chan<<6;
temp|=1<<4; //TONE ENABLE
RDA5820_WR_Reg(0X03,temp) ; //éèÖÃÆμÂê
delay_ms(20); //μè′y20ms
while((RDA5820_RD_Reg(0X0B)&(1<<7))==0);//μè′yFM_READY
}[/mw_shl_code]
有没有哪位大哥遇见过?
|
|