RDA5820外围电路问题

2019-07-18 17:04发布

本帖最后由 afs 于 2016-9-27 21:23 编辑


请问RDA5820这样的外围电路能正常发射频率么,如果可以,为什么 一直发射的是116MHZ不能改变?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
李春明
1楼-- · 2019-07-18 17:56
不太明白楼主讲的什么意思
afs
2楼-- · 2019-07-18 18:30
本帖最后由 afs 于 2016-10-8 14:07 编辑
王栋春 发表于 2016-9-27 20:48
不太明白楼主讲的什么意思

额,有图片没有加载上去。麻烦您看下程序有没有问题。现在一直发射117MHZ的频率不能改变。程序是网上能找的到的,用I2C通信,I2C的读写都没有问题。Rda5820WriteReg(0X03,temp);     这个函数能写进去正确的频率值但是出来的频率就是117MHZ,试了很多方法频率还是不能改变,所以怀疑是硬件的问题但是图没能加载上去。
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);  
}
afs
3楼-- · 2019-07-18 22:10
 精彩回答 2  元偷偷看……
Bloody♂Mary
4楼-- · 2019-07-19 03:59
请问一下楼主是买的芯片自己焊接的外围电路,还是直接买的模块?

一周热门 更多>