This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2511:CC2511无线收发器始终无法在接收端接收数据

Guru**** 666710 points
Other Parts Discussed in Thread: CC2511
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1237793/cc2511-cc2511-wireless-transceiver-always-fails-to-receive-data-at-the-receiving-end

器件型号:CC2511

手头有两个 CC2511模块、一个作为发送端、另一个作为接收端。 发送端在接收到串行端口发送的数据后发送数据包。 现在、发送端(RFTXRXIF)和(IRQ 完成)都可以正常设置、它应该正常发送数据、但接收端仍然无法接收数据。 接收标志没有响应。 接收端编写了一个始终检测数据的循环。 下面的第一部分是发送代码、第二部分是接收(接收未执行数据处理、仅写入接收标志检测)。 您能帮助我了解一下吗? 非常感谢。

此外、当启用中断时、将不会设置发送标志、只有在未启用中断时、才能正常发送设置。

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);
}

测试 RFIF 标志后、(IRQ_CS)将设置为1 (复位后的下一个周期中自动设置为1)。 我是否可以知道何时会生成此标志位?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    乍一看、我看不到您发布的代码有任何具体问题、但遗憾的是、我没有一个使用此器件的完整系统能够自行评估此问题。

    一个想法:是否可以尝试使用射频链路一侧的 SmartRF 验证链路? 这有助于获得有关缺少通信的根本原因的额外见解(在发送器侧或接收器侧)。

    我可以知道何时生成此标志位吗?

    器件数据表的第13.10.4节介绍了载波侦听操作。 在该标志置位时、一些配置细节将产生影响。  

    希望这对您有所帮助。

    拉斐尔