根据相关文档描述,在接收过程中,rxConf.bAutoFlushCrcErr 设置1,CC2640会自动丢弃crc出错的包。
我的场景如下:
在scanner模式下(RF_cmdBleScanner) ,接收蓝牙广播。RF_EventLastCmdDone 这个事件发生以后去RFQueue中取PDU,测试下来发现,接收到的PDU中数据是有错误的。我理解这个包是一个crc出错的包。(发射端固定2402频点,发送固定数据,容易对比)
请问,
目前bAutoFlushCrcErr 设置为1了,RFQueue中还是读到错误包了,暂不清楚如何根据crc出错来丢弃错包。
请帮忙解答,谢谢!
Viki Shi:
我不清楚是否理解了你的意思,是不是说设置了bAutoFlushCrcErr,但是依然有数据包出错?
user6073138:
回复 Viki Shi:
不好意思, 我的描述可能过于细节。
现象就是设置了bAutoFlushCrcErr, 依然有数据包出错。
我们应用程序是希望收到正确包以后进行处理,但现在发现有错误包,导致了应用程序异常。
一般都是检查到crc出错,就直接丢掉了。目前这个情况,不太清楚该如何处理。谢谢!
Viki Shi:
回复 user6073138:
明白了,我跟同事讨论一下,后续再来回复
user6073138:
回复 Viki Shi:
好的 非常感谢:)
Viki Shi:
回复 user6073138:
你好,设置的相关代码能否提供一下?
user6073138:
回复 Viki Shi:
可以的,RF_bleScannerPar 配置如下,如果还需要其他部分,都可以提供,谢谢!
// CMD_BLE_SCANNERrfc_CMD_BLE_SCANNER_t RF_cmdBleScanner ={ .commandNo = CMD_BLE_SCANNER, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x1, .condition.rule = 0x1, // Never run next command .condition.nSkip = 0x0, .channel = 37, .whitening = 0, .pParams = &RF_bleScannerPar, .pOutput = NULL,};
rfc_bleScannerPar_t RF_bleScannerPar = { .pRxQ = NULL, // insert pointer .rxConfig.bAutoFlushIgnored = 1, //0 .rxConfig.bAutoFlushCrcErr = 1, .rxConfig.bAutoFlushEmpty = 1, //0 .rxConfig.bIncludeLenByte = 1, .rxConfig.bIncludeCrc = 0, .rxConfig.bAppendStatus = 0, .rxConfig.bAppendTimestamp = 0, .scanConfig.scanFilterPolicy = 0, // Accept all device addresses .scanConfig.bActiveScan = 0, // Passive scanner .scanConfig.deviceAddrType = 0, // Public address (TBD) .scanConfig.bStrictLenFilter = 1, .scanConfig.bAutoWlIgnore = 0, .scanConfig.bEndOnRpt = 1, .randomState = 0, // N/A for passive scanner .backoffCount = 0, // N/A for passive scanner .backoffPar.logUpperLimit = 0, // N/A for passive scanner .backoffPar.bLastSucceeded = 0, // N/A for passive scanner .backoffPar.bLastFailed = 0, // N/A for passive scanner .scanReqLen = 0, // N/A for passive scanner .pScanReqData = NULL, // N/A for passive scanner .pDeviceAddress = NULL, //TBD .pWhiteList = NULL, // No white list .timeoutTrigger.triggerType = TRIG_REL_START, .timeoutTrigger.bEnaCmd = 0x0, .timeoutTrigger.triggerNo = 0x0, .timeoutTrigger.pastTrig = 0x1, .timeoutTime = 4e3 * 500, .endTrigger.triggerType = TRIG_NEVER, .endTrigger.bEnaCmd = 0x0, .endTrigger.triggerNo = 0x0, .endTrigger.pastTrig = 0x0, .endTime = 0x00000000, };
user6073138:
回复 Viki Shi:
hi, Viki你好! 关于这个错包问题 ,有相关解决方案么 ?还是用法上的问题? 谢谢!
Viki Shi:
回复 user6073138:
你用的是driver lib里的RF command,不是BLE协议栈,是否可以用协议栈测试一下呢?
dev.ti.com/…/node
Viki Shi:
回复 Viki Shi:
请尝试把 bIncludeCrc设为1