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