一:问题出现的原因:
客人的问题是知道BLE数据包包长是如何控制的;
二:问题的具体分析;
参考BLE 联盟官方的规格书,里面关于长度有两处控制,一处是在链路层,根据如下命令来进行控制:
[1]ATT MTU 值的说明:
[2]DLE 链路层值大小的说明:
BLE连接建立之后,可以动态更改data length长度(默认为27字节),这个特性叫做Data Length Extension(DLE),DLE是通过Link layer命令:LL_LENGTH_REQ和LL_LENGTH_RSP来实现的。Data length直接跟蓝牙芯片的射频能力有关,像Nordic的nRF51822只支持BT4.1的Data length,就是因为PHY层已经做死了,无法扩展,但Nordic最新的nRF52832和nRF52840,就都支持DLE,即data length最大可到251字节。
三:问题的总结:
链路层最大可以设置251byte,属性层可以最大设置到512byte;
四:代码的修改:
NCS 上通过下面图片中宏定义修改对应区域的大小:
NRF5 SDK 通过如下地方修改:
MTU:
DLE:
关于此问题的相关资料如果有需要可以联系我们,加下面nordic ble qq交流群:921114908