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

CC2530 BasicRF 通讯协议的问题

         您好!这几天一直在试用官方针对点对点的BasicRF点灯程序,普通开发板。但不知为何程序会不定期的死机,有时半天都没事,有时1个小时后就出现故障,只要手动复位一下发送端才正常,程序我也只是改动了不是用来点灯而是发射数据流。之前也有网友提出这个问题,说发射太有规律性照成,不解???

          *  发送端 :以10MS的延时间隔把8个字节的有效载荷不间断发送出去,一旦收到接收端的成功应答帧后转入接收模式,延时循环等待接收端发来的有效载荷数据,在规定时间内收没收到接收端发来的数据都会重新进入发送循环。

          *  接收端  :从上电一直处在接收状态,当收到发送端的8字节有效载荷数据后取反一次LED(收到指示)并通过串口打印出来,然后立即向发送端发送3个字节的有效载荷数据,在规定时间内收没收到发送端 的应答都会重新进入接收循环。

         !!有时在发了几百万和字节后就出现收不到数据了,接收端的LED不闪,串口也无数据,用抓包看到发送端还不停地再发但接收端只做应答(它们的帧序号都一样),只有复位发送端其才又开始正常通讯,我这几天的大概想法是,因为发送端的BUG造成发送端帧序号的不变,也就造接收端不停地丢包不处理,这可以理解,但是什么原因照成发送端在成功发一帧后帧序号不++呢?

        在发送端的接收中断里放入LED取反闪烁发现出故障时的发送端无法进接收中断,实验取消帧过滤后可以了,但同信道的任何信号都会让其频繁进中断,这样效率就低了啊。请前辈们指点如何在保证帧过滤的情况下又不死机呢?谢谢!

      

Wellin Zhang:

Ting 

根据你的描述,发送帧序号与ACK帧序号是相等的,那么造成帧序号不改变的有两种可能,第一个可能是CRC校验失败,第二个就是数据发送失败。

请尝试一下禁止ACK。

另外,

在发送端的接收中断里放入LED取反闪烁发现出故障时的发送端无法进接收中断,实验取消帧过滤后可以了,但同信道的任何信号都会让其频繁进中断,这样效率就低了啊。请前辈们指点如何在保证帧过滤的情况下又不死机呢?谢谢!

该LED操作的是在中断的什么位置?你取消的帧过滤是哪一部分,发送端帧过滤还是接收端帧过滤?

能否展示一下对程序做过哪些改动?另外能否提供一下抓包数据?谢谢

Best regards

Wellin

TING LI1:

回复 Wellin Zhang:

LED是放在下面这个函数里

HAL_ISR_FUNCTION( rfIsr, RF_VECTOR )    //RF_VECTOR为RF射频通用中断向量

 {    halLedToggle(4);}

 

帧过滤的取消我是放在这个函数里

uint8 halRfInit(void)

 {   FRMFILT0 &= ~(1<<0); }//禁止帧过滤

   

赞(0)
未经允许不得转载:TI中文支持网 » CC2530 BasicRF 通讯协议的问题
分享到: 更多 (0)