BLE默认wirite特征值Notify发送数据一帧最大携带20字节数据。蓝牙4.2协议规范后可以通过客户端修改MTU大小,修改范围为23-517个字节。首次连接为了兼容所有的BLE蓝牙设备,所有服务端默认的MTU 为23,去掉1个字节的操作码和2个字节的UUID句柄,所以默认一包最多传20个字节。在蓝牙连接建立后,客户端和服务端会互相交互字节最大支持的MTU,客户端(比如手机)可以根据时间情况修改服务端(蓝牙外设)支持的MTU大小。
这里以伦茨科技ST17h66为例:
首先修改服务端最大支持的MTU大小
uint8_t mtuSet = 247;
llInitFeatureSet2MPHY(TRUE);
llInitFeatureSetDLE(TRUE);
ATT_SetMTUSizeMax(mtuSet);
客户端使用nrf-connect连接蓝牙,连接成功后
根据时间情况修改MTU大小,然后通过notify发送数据测试,这里发送200个字节,客户端可以收到数据。