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

CC2640R2F scanner模式下,接收到广播包crc出错

1. CC2640R2F 2640R2F配置成scanner模式

2. rxConfig.bAutoFlushCrcErr 设置1

3. 调用RF_scheduleCmd命令,监听事件RF_EventLastCmdDone

问题:接收到广播包,会产生回调,但是发现广播数据会有出错的情况(距离远),我们的需求是如果crc出错,就丢掉这个包。

请各位专家帮忙支持,谢谢。

Viki Shi:

请问使用的协议栈版本是什么?

user6073138:

回复 Viki Shi:

我们使用的是simplelink_cc2640r2_sdk_2_30_00_28

Viki Shi:

是用私有协议实现的吗?建议参考下官方代码:dev.ti.com/…/node

user6073138:

回复 Viki Shi:

我们不是用私有协议,就是BLE5的协议。现在不太清楚收到广播包以后,怎么判断是有crc错误还是没有,你们有没有什么建议?实际我们发现确实错包了。尝试如果监测RF_EventRxOk事件而不是RF_EventLastCmdDone,就不产生回调了。 谢谢!

Viki Shi:

回复 user6073138:

设置rxConf.bAutoFlushCrcErr为1,就是丢弃CRC出错的数据包,距离远的广播数据应该是因为CRC失败被丢弃了

user6073138:

回复 Viki Shi:

我也是这样理解的。
实际代码中,RF_EventLastCmdDone事件发生以后就去取广播数据,发现取出来的有错误。我认为这个时候并没有丢弃广播数据(对于RF_EventLastCmdDone,不太清楚该事件发生以后,接收是一个什么状态,字面理解就是最后命令执行完成,从时间上来讲,可能还没有判断crc吧)。可能需要加一个条件来判断,比如有没有crc error, 如果有的话就丢弃了。目前就是不太清楚如何加条件,比如有什么状态之类来处理这种情况。能否帮忙看看,谢谢!

Viki Shi:

回复 user6073138:

抱歉我没理解意思,请问你最终想实现的是什么?需要加什么条件?

user6073138:

回复 Viki Shi:

hi 您好!

我这边遇到的问题是这样的:在scan模式下接受蓝牙广播包,能收到广播包,但是发现pdu中有错包的现象。比如advAddr会出现某些bit错误

目前是想解决这个问题。想有个条件或者状态来检查错包,错了我就丢掉这个包。

谢谢!

Viki Shi:

回复 user6073138:

那置位rxConf.bAutoFlushCrcErr ,丢弃CRC出错的数据包,测试下来效果如何?

user6073138:

回复 Viki Shi:

hi, Viki
rxConf.bAutoFlushCrcErr 设置1。
在scanner模式下(RF_cmdBleScanner) ,接收蓝牙广播。RF_EventLastCmdDone 这个事件发生以后去取PDU,测试下来发现,接收到的PDU中数据advAddr是有错误的。能否理解为这个包是crc出错的包呢?
根据一些描述,bAutoFlushCrcErr这个设置为1,会自动丢弃crc出错的数据包。
这个情况,该如何处理呢?
谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F scanner模式下,接收到广播包crc出错
分享到: 更多 (0)