Other Parts Discussed in Thread: CC2642R
器件型号: CC2642R
1、 硬件和软件环境
-
芯片: TI CC2642R
-
SDK/堆栈版本: simplelink_cc13x2_26x2_SDK_6.30.00.84
-
角色: 多角色(中央器件/扫描仪和外设/广告发送器同时)
2. 场景和重现的步骤
-
开始广告:
GapAdv_enable()调用成功。 -
启动扫描:
GapScan_enable()调用成功。 -
切换扫描: 我们反复呼叫、
GapScan_disable()然后按GapScan_enable()。 -
出现问题: 故障是 非常零星的 。 它可以发生在后面 1. 或经过尽可能多的循环 10 个或以上 周期(有时需要很长的时间才能达到)。 这种不一致性强烈表明 A 竞态条件 或 未处理的状态转换 可在 BLE 堆栈/RTOS 内快速切换无线电状态。
3、实际问题/症状
故障发生时、设备 软锁定 由于 RTOS/Stack 中的致命、不可恢复异常。 系统进入 Error_SPIN通过调用无限循环Error_raiseX。
-
症状: 最大电流量 [明确说明症状:例如停止执行应用程序代码、停止广播/扫描、需要硬复位] 。
-
错误跟踪: 在软锁定点 (
Error_raiseX) 观察到以下特定的调试器跟踪:
| 成正比 | 数据值 |
id |
0x00000360 |
a0 |
3. |
a1 |
87710. |
4.
详细参数配置
A.广告参数(来自中的) strAdvParamGapAdv_create
| 参数 | 数据值 | 注释 |
eventProps |
19 | 组合可连接、可扫描等的属性 |
primIntMin |
67 | ≅41.875ms |
primIntMax |
68 | 42.5ms |
filterPolicy |
GAP_ADV_WL_POLICY_ANY_REQ |
允许来自任何设备的连接/扫描请求。 |
primPhy |
GAP_ADV_PRIM_PHY_1MBPS |
在 LE 1M PHY 上进行广播。 |
secPhy |
GAP_ADV_SEC_PHY_1MBPS |
LE 1M PHY 上的扩展广播辅助数据包(如果使用)。 |
事件屏蔽 (GapAdv_setEventMask):
enuEvtMask = GAP_ADV_EVT_MASK_START_AFTER_ENABLE | GAP_ADV_EVT_MASK_END_AFTER_DISABLE | GAP_ADV_EVT_MASK_SET_TERMINATED | GAP_ADV_EVT_MASK_SCAN_REQ_NOT | GAP_ADV_EVT_MASK_END
B.扫描参数 () GapScan_enable
| 参数 | 数据值 | 注释 |
u8FilterPolicy |
1. | 仅扫描白名单设备。 |
u8ScanType |
0 | 被动扫描。 |
u16ScanInterval |
80 | 50ms。 |
u16ScanWindow |
48 | 30mS。 |