中级会员
 
- 积分
- 366
- 金钱
- 366
- 注册时间
- 2016-8-25
- 在线时间
- 61 小时
|

楼主 |
发表于 2016-9-29 09:58:19
|
显示全部楼层
本帖最后由 Xulovling 于 2016-9-29 10:00 编辑
额,能发射频率但是频率值不能改变一直都是116MHZ,不知道程序哪里有问题,I2C的通信是没有问题的。
int main(void)
{
/* USART1 config 115200 8-N-1 */
// u16 num1,num2,num3;
delay_init(8);//时钟配置
JTAG_Set(1); //下载方式配置
IIC_Init(); //I2C初始化
LED(); //LED初始化
while(!(Rda5820Init()))
{
Rda5820BandSet(0); //频段设置
Rda5820SpaceSet(0); //步进设置
Rda5820TxPagSet(63); //发射功率设置
Rda5820TxPgaSet(3); //发射信号增益设置
Rda5820FreqSet(9700); //频率设置
Rda5820TxMode(); //发射模式
GPIO_SetBits(GPIOA,GPIO_Pin_1); //LED测试
while(1);
}
}
u8 Rda5820Init(void)
{
u16 id;
id=Rda5820ReadReg(RDA5820_R00);
if(id==0X5805) //芯片默认ID0X5805
{
Rda5820WriteReg(RDA5820_R02,0x0002); //芯片复位
delay_ms(50);
Rda5820WriteReg(RDA5820_R02,0x0001); //芯片上电
delay_ms(600);
Rda5820WriteReg(RDA5820_R02,0xD201); //芯片上电 不复位 正常天线 32.768k时钟
Rda5820WriteReg(RDA5820_R03,0x1A10); //步进100k 频段87MHZ-108MHZ 不开启协调
Rda5820WriteReg(RDA5820_R40,0X0001); //设置为发射模式
}
else return 1;
return 0;
}
void Rda5820FreqSet(u16 freq)
{
u16 temp;
u8 spc=0,band=0;
u16 fbtm,chan;
temp=Rda5820ReadReg(0X03);
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=Rda5820ReadReg(0X53);
fbtm*=10;
}
if(freq<fbtm)return;
chan=(freq-fbtm)/spc;
chan&=0X3FF;
temp|=chan<<6;
temp|=1<<4;
Rda5820WriteReg(0X03,temp);
delay_ms(100);
while((Rda5820ReadReg(0X0B)&(1<<7))==0);
}
I2C读写数据都没有问题 Rda5820WriteReg(0X03,temp); temp按照手册上换算是正确的,但是就是发射的频率一直都是116MHZ。 |
|