我正在尝试在具有 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 设计的,而且问题肯定来自堆栈的错误实现或配置。但现在我觉得我已经测试了一切,但我不知道从哪里寻找解决方案。
实际问题是: