主题中讨论的其他器件:ENERGYTRACE、 SysConfig
BLE 堆栈是否提供了任何诊断/统计数据以了解与广播相关的问题?
我的代码库基于 SDK v4.20中的简单外设应用。 该广告在几天前一直运作良好。 但是、在应用代码中添加了几个与广播或 BLE 堆栈完全无关的代码后、广播不会从 Launchpad 传出。
该代码特定于应用、不会禁用 BLE 堆栈中的任何内容或中断。
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.
BLE 堆栈是否提供了任何诊断/统计数据以了解与广播相关的问题?
我的代码库基于 SDK v4.20中的简单外设应用。 该广告在几天前一直运作良好。 但是、在应用代码中添加了几个与广播或 BLE 堆栈完全无关的代码后、广播不会从 Launchpad 传出。
该代码特定于应用、不会禁用 BLE 堆栈中的任何内容或中断。
您好、Mehul、
总之、根据功耗跟踪、我们知道会发送广播。 但是、到目前为止、没有任何器件能够检测到这些广播。
您是否考虑使用新 LaunchPad 运行一些测试?
如果在器件进行广播时在广播通道上看到一些射频活动、您能否使用 Launchpad + SmartRF Studio 进行验证?
另外、请确保您已经尝试了我们的调试指南 dev.ti.com/.../debugging-index.html 中指定的所有想法
如果这些元件不起作用、则需要 BLE 监听器。
此致、
您好 Clement、
我们有 Ellisys BLE 监听器、它不会显示任何来自 BLE TI Launchpad 的广播包。
此外、没有来自任何模块(堆、BLE 堆栈、TI RTOS (XDC)等)的 assert()。
我从 C:\Program Files (x86)\Texas Instruments\SmartRF Tools\SmartRF Packet Sniffer 2\sniffer_fw\bin\cc26x2r1lp 获得了二进制文件。 将立即尝试使用射频监听器。
Mehul
您好、Mehul、
[引用 user="Mehul Dalal"]我们有 Ellisys BLE 监听器、它不显示来自 BLE TI Launchpad 的任何广播包。
好的、那么这是有问题的。 我认为射频监听器不会在这里管理更好的工作-但请向我证明我错了:)
您可能希望提供更详细的电源跟踪视图。 我可以尝试对其进行审查、并尝试寻找一些东西、但我不承诺任何事情。
此致、
Clement、
我已经验证了布线也适用于传统广播。 在什么情况下、我们可以在扩展广播中看到4个尖峰? BLE 堆栈在所有广播通道中传输广播数据、即37、38和39。 在广播启动事件之后应观察到3个尖峰。
器件是否可能发送广播通道以外的广播数据?
以下是各种参数:
//广播集的旧广播参数
#define GAPADV_PARAMS_EMR_LEGACY_SCAN_CONN (GapAdv_params_t){\
eventProps = GAP_ADV_PROP_CONNECTABLE | GAP_ADV_PROP_scannable |\
GAP_ADV_PROP_LEGACY_\
.primIntMin = EMR_ADV_Prim_INT_min、\
.primIntMax = EMR_ADV_PRIM_INT_MAX、\
.primChanMap = GAP_ADV_CHAN_ALL、\
.peerAddrType = peer_ADDRTYPE_public_or_public_ID、\
.peerAddr ={0x00、0x00、0x00、0x00、0x00、 0x00 },/* peerAddr 不使用,因为我们不使用定向广播*/\
.filterPolicy = GAP_ADV_WL_POLICE_ANY_REQ、\
txPower = GAP_ADV_TX_POWER_NO_PRICE_\
.primPhy = GAP_ADV_PRIM_PHY_1_Mbps、\
secPhy = GAP_ADV_SEC_PHY_1_Mbps、\
.sid = 0\
}
//扩展广播参数
#define GAPADV_PARAMS_EMR_DELLED (GapAdv_params_t){\
eventProps = EMR_ADV_MODE_NON_CONN_NON_SCAN、\
.primIntMin = EMR_ADV_Prim_INT_min、\
.primIntMax = EMR_ADV_PRIM_INT_MAX、\
.primChanMap = GAP_ADV_CHAN_ALL、\
.peerAddrType = peer_ADDRTYPE_public_or_public_ID、\
.peerAddr ={0x00、0x00、0x00、0x00、0x00、 0x00 },/* peerAddr 不使用,因为我们不使用定向广播*/\
.filterPolicy = GAP_ADV_WL_POLICE_ANY_REQ、\
txPower = GAP_ADV_TX_POWER_NO_PRICE_\
.primPhy = GAP_ADV_PRIM_PHY_1_Mbps、\
secPhy = GAP_ADV_SEC_PHY_2_Mbps、\
.sid = 0\
}
您好 Clement、
确切的代码是在早期工作的、因此无法在 SDK 中的简单外设固件中重复出现相同的问题。
请注意、在我们的应用中、我们刚刚添加了4字节的静态变量、并将其添加到数组中、我们已经开始看到这个问题。 该变量与广播或与其关联的模块无关。 添加它还会完全更改映射文件。
我们的项目中没有 SYSCFG。 相反、我们在项目中包含了通过 SYSCFG 创建的文件、并禁用了 SYSCFG。 您需要哪一个特定的文件?
以下是各种 GapAdv_代码片段:
//使用广播集参数创建和初始化广播句柄
指控(GapAdv_create (advingCallback、advParm、advHandle)、成功);
if (advHandle!=空)
{
//为广播集设置事件掩码
指称(GapAdv_setEventMask (* advHandle、
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |//* GAP_EVT_ADV_START_AFTER_ENABLE -在 GapAdv_ENABLE *之后首次广播之后*/\
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |/* GAP_EVT_ADV_END_AFTER_DISABLE -由于 GapAdv_disable*/\而导致广播停止后
GAP_ADV_EVT_MASK_SET_TERMINATED|//* GAP_EVT_ADV_SET_TERMINATED-由于连接建立而终止广播集之后*/\
GAP_ADV_EVT_MASK_END)、/* GAP_EVT_ADV_END -每个广播集结束后*
成功);
}
/*装载手柄*/
指称(GapAdv_loadByHandle (advHandleLegacySet0、GAP_ADV_DATA_TY_ADV、sizeof (advertDataLegacySet0)、(uint8 *)&advertDataLegacySet0)、Success);
指称(GapAdv_loadByHandle (advHandleLegacySet0、GAP_ADV_DATA_TY_SCAN_RSP、sizeof (scanRspData)、(uint8 *)&scanRspData)、成功);
/*用于更改广播和扫描响应数据*/
//在旧广播句柄上调用 GapAdv_prepareLoadByHandle()
//选项 GAP_ADV_FREE_OPTION _DONT_FREE =不要释放任何内容,因为我们将使用相同的缓冲区重新加载
指称(GapAdv_prepareLoadByHandle (advHandleLegacySet0、GAP_ADV_FREE_OPTION _DONT_FREE)、成功);
//在旧广播句柄上调用 GapAdv_loadByHandle()
指称(GapAdv_loadByHandle (advHandleLegacySet0、GAP_ADV_DATA_TY_ADV、sizeof (advertDataLegacySet0)、(uint8 *)&advertDataLegacySet0)、Success);
指称(GapAdv_prepareLoadByHandle (advHandleLegacySet0、GAP_ADV_FREE_OPTION _DONT_FREE)、成功);
指称(GapAdv_loadByHandle (advHandleLegacySet0、GAP_ADV_DATA_TY_SCAN_RSP、sizeof (scanRspData)、(uint8 *)&scanRspData)、成功);
/*启用特定的高级句柄*/
bStatus_t status =(STATUS_t) GapAdv_enable (advHandle、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);
/*禁用特定的高级句柄*/
bStatus_t status =(STATUS_t) GapAdv_disable (advHandle);