金牌会员
 
- 积分
- 2357
- 金钱
- 2357
- 注册时间
- 2019-10-29
- 在线时间
- 380 小时
|

楼主 |
发表于 2022-8-26 09:53:11
|
显示全部楼层
本帖最后由 chenyuan 于 2022-8-26 09:55 编辑
大概率是这个的问题 Radio.GetPayload(rfRxBuf, &buffLen, 250);//读取收到的数据
这个是SX1280的接口函数 三个参数,
rfRxBuf是我定义的一个数组rfRxBuf[127],用来从RF芯片中读取数据,然后放到这个数组中;
buffLen是从RF芯片中读取收到的数据长度;
250 是限制最大长度
- /*
- 函数功能:得到收到数据、数据大小
- */
- uint8_t SX1280GetPayload( uint8_t *buffer, uint8_t *size , uint8_t maxSize )
- {
- uint8_t offset;
- SX1280GetRxBufferStatus( size, &offset );//得到数据大小 偏移量
- if( *size > maxSize )
- {
- return 1;
- }
- SX1280HalReadBuffer( offset, buffer, *size );//根据数据大小,偏移量,得到数据
- return 0;
- }
复制代码
正常情况下,收到的数据长度为9 ,
但是异常情况下,收到错误数据,虽说是错误数据(我这开了好几个收发端,造成的干扰更大),我后面解码是不用它,但是还是会执行上面那个读取数据的操作,这个时候获取的长度是未知的,可能大于127了,导致溢出操作了
实测在连上接收机后,偶尔出现数据异常的现象;在未连上接收机的时候,跑了一天没出现数据异常的现象
不过我测试在手动修改数组值,导致溢出时候,没复现出他这个“半死机”的现象,可能还有其他的一些地方还有问题
修改好这块,然后跑了一段时间还未出现“半死机”现象,看后续还有没有问题了
|
|