You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EFR32BG22 BLE SPP模式与Windows PC连接失败求助

BLE SPP连接异常(预编译可连/自行编译失败)排查方案

核心问题定位

预编译PC端EXE可正常与Thunderboard EFR32BG22建立BLE SPP连接,自行编译的版本几乎无法触发板端连接事件,仅偶发成功,板端持续广播但无连接响应。

可能原因与对应解决方案

1. 编译环境版本不匹配

预编译版本为2年前发布,依赖的Windows SDK、Visual Studio工具集或Silicon Labs PC端SDK版本与当前环境存在差异,导致BLE API行为不一致。

  • 操作步骤:
    • 查看官方示例文档中预编译版对应的环境要求,将Visual Studio项目的Windows SDK版本切换至对应旧版(如10.0.18362.0)。
    • 确认板端Gecko SDK Suite版本与PC端示例版本完全一致,避免跨版本混用代码。

2. 项目编译配置差异

自行编译时的宏定义、链接器选项或平台工具集与预编译版不符,导致BLE连接逻辑异常。

  • 操作步骤:
    • 检查项目属性的平台工具集,切换至预编译版对应的版本(如v142 vs 当前v143)。
    • 核对预处理器定义,确保_WIN32_WINNT值与预编译版一致(如_WIN32_WINNT=0x0A00对应Win10),避免因API版本兼容问题导致连接失败。
    • 检查链接器输入,确认添加了预编译版依赖的库文件(如bthprops.lib、ws2_32.lib),链接方式(静态/动态)保持一致。

3. BLE连接参数不兼容

自行编译的PC端发起连接时的参数(如连接间隔、隐私设置)与板端期望不匹配,导致连接请求被忽略。

  • 操作步骤:
    • 在PC端代码中强制设置与板端一致的连接间隔范围:板端设置为24-40(对应30-50ms),确保PC端连接请求的间隔区间包含该范围。
    • 检查PC端是否开启BLE隐私模式,若开启则关闭,或确保设备配对信息已正确存储,避免板端无法识别连接请求来源。

4. 板端事件处理潜在问题

虽然使用官方示例,但SDK版本不匹配或sl_bt_can_process_event函数被意外重写,导致连接事件无法被处理。

  • 操作步骤:
    • 确认板端SDK版本与PC端示例版本严格对应,重新编译板端固件。
    • 检查sl_bt_can_process_event函数,确保没有其他代码重写该WEAK函数,保证其始终返回true,确保事件能被正常处理。

调试建议

  • 用WireShark抓取BLE空中数据包,确认PC端是否发送了连接请求,以及板端是否给出响应:若PC端未发请求,问题在PC端逻辑;若发了请求但板端无响应,检查板端广播配置。
  • 在PC端代码中添加WinBLE API返回值日志,打印BluetoothLEAdvertisementWatcher状态、GattDeviceService连接结果等,定位具体错误码(如权限错误0x80070005、设备未找到0x8007048F)。

内容的提问来源于stack exchange,提问作者Wartiik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:44:51