你好!
我使用cc2640R2的器件,做从机使用。与CC2642R2F对接,反复链接中,发现广播消息出现异常。请帮忙看一下?
什么原因会导致该问题发生或怎么解决。
谢谢!
CC2640R2使用的sdk:simplelink_cc2640r2_sdk_3_10_00_15 。
正常的广播报文:


反复链接后,异常的广播报文:


This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,请问您这边使用的两个芯片的sdk版本分别是多少,以及是否为官方的开发板,还是自行设计的电路?
再提供您这边使用的demo是哪个例程?跑的例程还是开发板出现的这个问题?
在设备运行中,我先关闭adv广播,然后再修改广播消息的内容,在使能广播。这个会导致协议栈异常吗?目前看,如果这里修改,会概率性出现广播消息异常问题。
//!< Free the scan response data
GapAdv_destroy(advHandleLegacy, GAP_ADV_FREE_OPTION_ALL_DATA);
bStatus_t status = FAILURE;
GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN_Bruce;
// Create Advertisement set #1 and assign handle
status = GapAdv_create(&SimplePeripheral_advCallback, &advParamLegacy,
&advHandleLegacy);
SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
// Load advertising data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_ADV,
sizeof(advertData), advertData);
SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
// Load scan response data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_SCAN_RSP,
sizeof(scanRspData), scanRspData);
SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
// Set event mask for set #1
status = GapAdv_setEventMask(advHandleLegacy,
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
GAP_ADV_EVT_MASK_SET_TERMINATED);
}
// Start advertising since there is room for more connections
GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX, 0);
对我来说,问题是由广告被销毁而没有禁用的事实引起的。这意味着在您修改数据缓冲区的内容时,无线电仍有 RF 操作排队。
为了避免这种情况,我建议调用GapAdv_disable,等待事件GAP_EVT_ADV_END_AFTER_DISABLE接收,然后调用你引用的代码。
注意:下次请使用插入代码功能添加代码片段,因为它可以避免支持团队手动复制代码
我希望这会有所帮助,