我正在STM32 SPBTLE-1S模块(BLE4.2)上开发一个应用程序。该模块连接到Raspberry Pi。
当连接质量较低时,有时会在连接超时之前断开连接,错误码为0x28 (原因:已通过即时连接)。
当前连接设置为:
Conn_Interval_Min: 10
Conn_Interval_Max: 20
Slave_latency: 5
Timeout_Multiplier: 3200
阅读有关此类错误的更多信息时,它似乎发生在“包含瞬间的LMP PDU或LL PDU无法执行,因为本应发生这种情况的瞬间已经过去”。这些paquet通常用于跳频或连接更新。在我的例子中,它们必须是频率希望的paquets。
关于如何防止“即时传递”错误导致的连接中断,你有什么想法吗?或者它们仅仅是BLE技术的结果?
发布于 2020-03-01 11:42:54
你的问题听起来很像this one
简而言之,只有两种可能的链路层请求会导致这种类型的断开(在最新的v5.2 Bluetooth Core Spec中称为LL_CONNECTION_UPDATE_IND
& LL_CHANNEL_MAP_IND
)
如果您可以访问嵌入式设备上蓝牙堆栈的低级固件,我在过去所做的是在未来增加交换机“即时”的插槽数量,以便有更多的时间让数据包在嘈杂的环境中通过。
否则,您所能做的最好的事情就是尝试限制更改连接参数的次数,以减少这种类型的断开发生的可能性。(通道映射更改仍然可能触发断开,但我还没有看到许多BLE堆栈在发生这些情况时暴露了大量配置。)
https://stackoverflow.com/questions/60459312
复制相似问题