TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2511: CC2511无线收发时接收端始终接收不到数据

Part Number:CC2511

手上有两块CC2511模块,一个作为发送端一个作为接收端。发送端在收到串口发送的数据后就发送数据包。现在发送端的RFTXRXIF和IRQ_DONE都能正常置位,应该是正常发送出来数据的,但是接收端始终接收不到数据。接收标志一直无反应。接收端是写了个循环始终在检测数据。下面第一部分是发送代码第二部分是接收(接收没有做数据处理,只写了接收标志检测),麻烦懂的帮忙看一下,万分感激。

除此之外开启中断的情况下发送标志就不会置位,只有不开中断的情况下才能正常发送置位。

void RF_Send_Init(void)
{
   

    RFST=0x04;
    IOCFG2=0X2E;
    IOCFG0=0X06;
    PKTCTRL0=0X05;
    FSCTRL1=0X0A;
    FREQ2=0X65;
    FREQ1=0X60;
    FREQ0=0X00;
    MDMCFG4=0X76;
    MDMCFG3=0XA3;
    MDMCFG2=0X13;
    MDMCFG1=0X23;
    MDMCFG0=0X11;
    DEVIATN=0X45;
    MCSM0=0X14;
    FOCCFG=0X16;
    FSCAL1=0X00;
    FSCAL0=0X11;
    TEST1=0X31;
    TEST0=0X09;
    PA_TABLE0=0XFE;
    RFST=0x04;
    RFST=0x01;
    while(MARCSTATE != 0x01);
    RFTXRXIF=0;
}
void RF_Send(void)
{
    unsigned char i=0;
    RFST=0x04;
    RFST=0x01;
    while(MARCSTATE!=0x01);
    RFTXRXIF=0;
    RFTXRXIE=0;
    RFIF &= ~0x10;
    RFST=0x03;
    while(!RFTXRXIF);
    RFTXRXIF=0;
    RFD=3;
    for(i=0;i<3;i++)
    {

        while(!RFTXRXIF);
        RFTXRXIF=0;
        RFD=0x66;
    }
    while(!(RFIF & 0x10));
    RFIF &= ~0x10;
}
    

void RF_Receive_Init(void)
{
   

    RFST=0x04;
    IOCFG2=0X2E;
    PKTCTRL0=0X05;
    FSCTRL1=0X0A;
    FREQ2=0X65;
    FREQ1=0X60;
    FREQ0=0X00;
    MDMCFG4=0X76;
    MDMCFG3=0XA3;
    MDMCFG2=0X13;
    MDMCFG1=0X23;
    MDMCFG0=0X11;
    DEVIATN=0X45;
    MCSM0=0X14;
    FOCCFG=0X16;
    FSCAL1=0X00;
    FSCAL0=0X11;
    TEST1=0X31;
    TEST0=0X09;
    PA_TABLE0=0XFE;
 
    RFST=0x04;
    RFST=0x01;
    while(MARCSTATE != 0x01);
    RFTXRXIF=0;
}
void RF_receive(void)
{
    RFTXRXIF=0;
    RFTXRXIE=0;
    EA=1;

    RFIF=RFIF& ~0x10;
    RFST=0x02;
    Usart0_Send_Onebyte(0x02);
    while(!RFTXRXIF);
    Usart0_Send_Onebyte(0x88);
}
? ?:

当前代码还在测试阶段,怎么都调试不通过

,

? ?:

接收和发送都是用SmartRF Studio7中数据包发送模式和数据包接收模式给的寄存器推荐参数。

,

Alex Zhang:

发送端是否确实成功发送了数据,可以通过连接示波器观察信号波形确认。
接收端程序中是否有其它影响接收的代码,例如串口发送或定时器中断等。
是否需要在接收端中加入读取RFIF寄存器的代码,以清除RFIF中的接收中断标志位。

,

? ?:

示波器目前暂无,我找一个测一下后给您准确回复,发送端的IRQ_DONE正常置位,应该是发出数据了
接收端未使用到中断,知识循环检测IRQ_DONE和RFTXRXIF标志是否置位
添加无效果

能否麻烦您帮忙看一下上面代码是否流程上出现问题,如初始化寄存器是否有顺序要求之类

,

? ?:

刚重新测了一下RFIF标志中的IRQ_CS会被置1(清零后下个循环自动置1),请问这标志位什么情况下会产生?

,

? ?:

我这边拿示波器测了一下,有波形输出,应该是接收端的问题

,

Alex Zhang:

CC2511芯片中的IRQ_CS标志位用于表示"中断请求"。当某个中断触发后,处理器会在中断服务例程(ISR)中对IRQ_CS进行操作,将其置为1以表示中断已经发生。在ISR执行完毕并退出后,IRQ_CS标志位会被自动清零,这些操作通常由硬件自动完成。

,

? ?:

当什么情况发生的时候会产生这个中断请求?

,

Alex Zhang:

您好,我这边联系了工程师,将会继续跟进您的问题,谢谢

,

Alex Zhang:

乍一看,我没有看到你发布的代码有任何具体问题,但不幸的是,我没有一个完整的系统来使用这个设备来自己评估。

一个想法是:是否可以尝试在RF链路的一侧使用SmartRF来验证链路?这有助于获得关于缺乏通信的根本原因的更多见解(无论是在发射机还是接收机侧)。

? ? 说:当什么情况发生的时候会产生这个中断请求?

设备数据表device's datasheet第13.10.4节介绍了载波感应操作。一些配置细节将影响何时断言此标志。

,

Alex Zhang:

乍一看,我没有看到你发布的代码有任何具体问题,但不幸的是,我没有一个完整的系统来使用这个设备来自己评估。

一个想法是:是否可以尝试在RF链路的一侧使用SmartRF来验证链路?这有助于获得关于缺乏通信的根本原因的更多见解(无论是在发射机还是接收机侧)。

? ? 说:当什么情况发生的时候会产生这个中断请求?

设备数据表device's datasheet第13.10.4节介绍了载波感应操作。一些配置细节将影响何时断言此标志。

赞(0)
未经允许不得转载:TI中文支持网 » CC2511: CC2511无线收发时接收端始终接收不到数据
分享到: 更多 (0)