打印

cc2500的跳频方法

[复制链接]
3896|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
搞搞ARM|  楼主 | 2007-2-6 14:43 | 只看该作者

不需要跳频还是采用定时跳频?

不需要跳频还是采用定时跳频?

使用特权

评论回复
板凳
木头东瓜| | 2007-2-6 14:48 | 只看该作者

需求都没说清楚

使用特权

评论回复
地板
搞搞ARM|  楼主 | 2007-2-6 14:53 | 只看该作者

就是用cc2500设计的无线通讯

就是用cc2500设计的无线通讯,主从都是用cc2500模块,第一次设计, 听说通讯的时候需要进行跳频,否则可能效果不好.

使用特权

评论回复
5
chunyang| | 2007-2-6 16:04 | 只看该作者

是否跳频要根据需要定

频点是通过写寄存器实现的。

使用特权

评论回复
6
搞搞ARM|  楼主 | 2007-2-7 13:12 | 只看该作者

CHANNR

 

    可不可以其他都用默认值,只改变寄存器0A(CHANNR)实现跳频?

使用特权

评论回复
7
zhuzi0624| | 2007-4-29 16:15 | 只看该作者

我也在做CC2500的跳频,大家一起讨论啊

我现在做CC2500的跳频设计,不过我这个跳频不需要在工作时跳频,只需要在开始的时候搜索到一个合适频段,接下来都在这个频段通信。
    我现在面临的情况是:CC2500的主从端时间上同步的不是很好,主端发送的数据从端有时能收到,有时不能;而且从端在回发数据给主端的时候,主端根本收不到!
    我用的MCU是C8051F330,下面是我的收发端主程序:
void main()//发送端程序
{
    char len;
    int i=0;
    int k=20;
    PCA0MD &= ~0x40;
    Init_Device();
    SPI0CN |= 0x01;    //enable SPI
    System_Delay(5000);
    SetupCC2500();
    System_Delay(512);
    len=sizeof(txBuffer_CC2500);
    while(1)
    {
        halSpiWriteReg(CC2500_FREQ2, f[0]);
        halSpiWriteReg(CC2500_FREQ1, f[1]);
        halSpiWriteReg(CC2500_FREQ0, f[2]);
        halSpiStrobe(CC2500_SIDLE);
        txBuffer_CC2500[1]=i;
        halRfSendPacket(txBuffer_CC2500, sizeof(txBuffer_CC2500));//试发送消息给接收端
        if(halRfReceivePacket(rxBuffer_CC2500,len))break;//等到对方的回应,得到回应消息跳出
        if((k--)==0)//k从20减到0换一个频段
        {
            k=20;
            i++;
            if(i>8)i=0;
        }
    }
    while(1)
    {
        P13=1;P14=0;//LED显示状态
    }
}

void main()//接收端主程序
{
    char len;
    int i=0,n=0;
    int k=180;
    PCA0MD &= ~0x40;
    Init_Device();
    SPI0CN |= 0x01;    //enable SPI
    System_Delay(5000);
    SetupCC2500();
    System_Delay(512);
    len=sizeof(rxBuffer_CC2500);
    while(1)
    {
        if(halRfReceivePacket(rxBuffer_CC2500,len))//试接收来自对方的信号
        {
            halSpiWriteReg(CC2500_FREQ2, f[0]);
            halSpiWriteReg(CC2500_FREQ1, f[1]);
            halSpiWriteReg(CC2500_FREQ0, f[2]);
            halSpiStrobe(CC2500_SIDLE);    
            txBuffer_CC2500[1]=rxBuffer_CC2500[1];//记住频段号
            halRfSendPacket(txBuffer_CC2500, sizeof(txBuffer_CC2500));//发送回应消息,告诉对方就在该频段通信
            break;//此时已搜索到频段,跳出,以后都工作在此频段
        }
        if((k--)>0)//k从180减到0换一个频段搜索
        {
            k=180;
            i++;
            if(i>8)i=0;
        }
    }
    for(n=0;n<len;n++)
        trdata[n]=rxBuffer_CC2500[n];    
    Send_String(trdata,len);       //串口输出数据
    System_Delay(512);
    while(1)
    {
        P13=1;P14=0;//LED显示状态
    }//数据稍后再做处理
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

17

帖子

1

粉丝