请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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)。 我是否可以知道何时会生成此标志位?