三处问题,分别如下:
/初始化
//0,初始化成功;
//其他,初始化失败.
u8 RDA5820_Init(void)
{
u16 id;
IIC_Init(); //初始化IIC口
id=RDA5820_RD_Reg(RDA5820_R00); //读取ID =0X5805
if(id==0X5805)这里的ID难道不是0x5820? //读取ID正确
{
RDA5820_WR_Reg(RDA5820_R02,0x0002); //软复位
delay_ms(50);
RDA5820_WR_Reg(RDA5820_R02,0xC001); //立体声,上电
delay_ms(600); //等待时钟稳定
RDA5820_WR_Reg(RDA5820_R05,0X884F); //搜索强度8,LNAN,1.8mA,VOL最大
RDA5820_WR_Reg(0X07,0X7800); //
RDA5820_WR_Reg(0X13,0X0008); //
RDA5820_WR_Reg(0X15,0x1420); //VCO设置 0x17A0/0x1420
RDA5820_WR_Reg(0X16,0XC000); //
RDA5820_WR_Reg(0X1C,0X3126); //
RDA5820_WR_Reg(0X22,0X9C24); //fm_true
RDA5820_WR_Reg(0X47,0XF660) ; //tx rds
在REA5820编程指南里并没有这些地址,这些0x07,0x13等地址是什么?
}else return 1;//初始化失败
return 0;
}
//写RDA5820寄存器
void RDA5820_WR_Reg(u8 addr,u16 val)
{
IIC_Start();
IIC_Send_Byte(RDA5820_WRITE); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(addr); //发送地址
IIC_Wait_Ack();
IIC_Send_Byte(val>>8); //发送高字节
IIC_Wait_Ack();
IIC_Send_Byte(val&0XFF); //发送低字节
这里应该是val&0x0f吧
IIC_Wait_Ack();
IIC_Stop(); //产生一个停止条件
} |