【WCH蓝牙系列芯片】-基于CH582开发板—蓝牙MTU
-------------------------------------------------------------------------------------------------------------------------------------
MTU是指最大传输单元,在一个传输单元中的有效传输数据,够传输的最大数据量(多少字节可以一次性传输到对方)。
一、主机
在主机中,如果想要修改单个连接最大包长度,可以在config.h中修改BLE_BUFF_MAX_LEN的值,BLE_BUFF_MAX_LEN=516


在主机程序中可以看到,更新MTU值的部分;由设置的BLE_BUFF_MAX_LEN减去4之后,可以得到最大的交互的MTU值。

通过串口可以看到更新后的MTU的值

二、从机
在从机例程中,添加预编译处理,将BLE_BUFF_MAX_LEN设置为516

通过手机的BLE调试助手去连接蓝牙后,根据实际的蓝牙包的数据长度,调整交互的MTU值,范围在23-512。

通过串口可以观察,手机端将MTU改为512,通过串口打印看到MTU更新的值。

三、从机主动发起交互MTU值
在从机中也可以通过添加程序去主动修改MTU的值,这样就不需要主机那边修改,再进行主从连接之后协商。
第一步:在从机初始的部分,添加client权限

第二步:在预编译器中,将BLE_BUFF_MAX_LEN设置为516

第三步:在蓝牙建立连接之后,调用GATT ExchangeMTU来修改MTU的值。

//Updata MTU 主动交互MTU值
attExchangeMTUReq_t req = {.clientRxMTU = BLE_BUFF_MAX_LEN - 4};
GATT_ExchangeMTU(peripheralConnList.connHandle, &req, Peripheral_TaskID);
通过串口打印来观察主动更新MTU值可以实现。

浙公网安备 33010602011771号