CH57X/CH58X/CH59X MTU交互
一、关于MTU
在通信过程中需要发送或者接收较长字节的数据,就需要引入MTU的概念:
最大传输单元MTU(Maximum Transmission Unit,MTU),是指网络能够传输的最大数据包大小,以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值,或者是超过了发送路径上途经的某台设备所能够承受的最大值,就会造成报文分片甚至丢弃,加重网络传输的负担。如果太小,那实际传送的数据量就会过小,影响传输效率。
MTU修改
1.手机电脑平板等设备的话,直接通过软件去配置即可ps后期加图:在BLE调试助手右上角的三个点里面,
2.沁恒的蓝牙主机的话,将主从的BLE BUFF MAX LEN修改为251,此时在连接后,
协议栈底层会交互MTU为247,SIMPLEPROFILECHAR1 LEN修改为244,
若是别的从机可以主机调用交互:
attExchangeMTUReg treg;reg.clientRxMTU =247;
GATT ExchangeMTU(centralConnHandle,®, centralTaskld);
3.其他厂商的主机,可以通过代码实现。从机发起交互:
步骤1:BLE BUFF MAX LEN需要修改为251,
步骤2:在初始化函数Peripheral Init()中添加GATT Initclient();
步骤3:在蓝牙连接后调用GATT ExchangeMTu来修改MTU。
attExchangeMTUReg treg;
reg.clientRxMTU=247;
GATT ExchangeMTU(peripheralConnList.connHandle, ®, Peripheral TasklD);
仅用于个人学习分享;
如有错漏请指正。