BLE:什么可能导致 BLE 连接建立失败

问题描述

我正在尝试在具有 SAM E54 和 FreeRTOS 的系统上实现蓝牙低功耗主机。我使用的蓝牙堆栈是 Nimble(来自 Apache 的 Mynewt-NimBLE)。我正在尝试将 SAM E54 连接到 nRF52840 加密狗(由 nRF Connect 桌面应用程序驱动)。

当我将设备设置为 Central(作为 4.x 设备,没有 5.x 功能)时,该设备可以无误地连接到另一台设备。

但是当我打开 5.x 功能(基本上是通过更改定义的值并调用一个 API 函数)并尝试连接到同一个外设时,它 10 次中有 9 次失败,触发了“连接监控器”超时”在服务器和客户端上。 我尝试更改主管超时值,但无法解决问题。当连接一定要成功时,中心的信息会立即显示在 nRF Connect 上。当连接建立将失败时,我立即知道(在触发连接监控器超时之前),因为 nRF Connect 上没有显示有关中央的信息。

一旦建立连接,它可以保持数小时,所以我认为这不是射频噪声问题。

我知道 NimBLE 最初并不是为 SAM E54 和 FreeRTOS 设计的,而且问题肯定来自堆栈的错误实现或配置。但现在我觉得我已经测试了一切,但我不知道从哪里寻找解决方案。

实际问题是:

  • 要使用 4.x BLE 功能启动连接,需要发送一些 HCI 命令数据包。这些数据包应该与我启用 5.x 功能时发送的数据包有什么不同吗?在这两种情况下,我都连接到 4.x 设备。
  • 当服务器和客户端都“认为”它们已连接但不交换信息时,连接建立过程的哪一步会失败?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)