CH57X/CH58X/CH59X MTU交互

一、关于MTU

在通信过程中需要发送或者接收较长字节的数据,就需要引入MTU的概念:

最大传输单元MTU(Maximum Transmission Unit,MTU),是指网络能够传输的最大数据包大小,以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值,或者是超过了发送路径上途经的某台设备所能够承受的最大值,就会造成报文分片甚至丢弃,加重网络传输的负担。如果太小,那实际传送的数据量就会过小,影响传输效率。

如果不交互MTU最大一包数据可以发送 或者接收20字节。如果我们交互了MTU之后就可以发送接收247字节的数据(BLE4.3);508字节的数据(BLE5.0以上)。
 
二、修改MTU

MTU修改
1.手机电脑平板等设备的话,直接通过软件去配置即可ps后期加图:在BLE调试助手右上角的三个点里面,

 

 

2.沁恒的蓝牙主机的话,将主从的BLE BUFF MAX LEN修改为251,此时在连接后,

协议栈底层会交互MTU为247,SIMPLEPROFILECHAR1 LEN修改为244,

若是别的从机可以主机调用交互:

attExchangeMTUReg treg;reg.clientRxMTU =247;
GATT ExchangeMTU(centralConnHandle,&reg, 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, &reg, Peripheral TasklD);

仅用于个人学习分享;

如有错漏请指正。

 

 

 

 
 
posted @ 2024-10-08 17:22  小舟从此逝_1  阅读(23)  评论(0编辑  收藏  举报