APP是可以修改它的MTU,它怎么自己程序设定啊,我修改了那个宏定义,还是默认的23,发多了字节也得分包。CH592F作为peripheral
char1~char4默认通信数据长度都是1,char5是5。
BLE从机例程中注意修改如下几处
1.config.h中BLE_BUFF_MAX_LEN改为最大值251
2.gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改为最大值243(char4默认使用notify,协议开销少一个字节,故MTU可以到244)
3.如果需要使用notify且发包负载大于20个字节,peripheralMTU变量或者CH58xBLE_LIB.h中的ATT_MTU_SIZE需要被扩大为最大负载+3即247(V208中只读,只能修改peripheralMTU变量)
BLE主机如果是手机APP,要看APP的是否对MTU有调整,部分手机APP在连接后会自动更新MTU。如果手机APP是BLE调试助手,连接后要在APP右上角修改MTU为251(最大值视情况而定)
1、2、我已经改了,改为了53;3没有用到notify,手机app没有对mtu进行调整,这个我也能确定。完成上面的内容后,它的mtu仍然还是23.
手机APP中也要改一改MTU,不同的APP,MTU大小协商的数值有差异。
可以检查BLE从机代码中,连接后的“mtu xx”打印日志,检查当前的MTU大小。手机APP先用“BLE调试助手”进行测试,每次连接成功后都要在右上角菜单中修改MTU。
ATT_GetMTU(connInterval),这个函数获取的MTU是正确的吗
1.config.h中BLE_BUFF_MAX_LEN改为最大值251
2.gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改为最大值243(char4默认使用notify,协议开销少一个字节,故MTU可以到244)
上面的1改为了55,后慢慢的用的是SIMPLEPROFILE_CHAR3_LEN改为了34,用的BLE调试助手连接通讯,mtu还是23,超过20了就分包了
BLE调试助手连接上以后,修改mtu,可以正常使用,超过20也没问题。可以正常修改MTU。我现在想直接把MTU改为一个大点的数,不用app来修改mtu这个过程。
MTU是需要主从机之间协商的,可以由APP主动发起MTU协商;也可以由BLE从机发起协商请求,不过APP中要有对该请求的处理。
CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明) - WCH蓝牙应用分享 - 博客园 (cnblogs.com)