CH579官方例程中 adv_ali_light_with_peripheral 里面蓝牙接收数据长度如何修改,我在config.H函数里面,BLE_BUFF_MAX_LEN改长度,但是在simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len) 函数接收数据时候,长度还是只能收到20个数据长度,如何修改接收数据长度,谢谢
您好,默认代码中char1~char4默认通信数据长度都是1,char5是5。
BLE从机例程中注意修改如下几处
①config.h中BLE_BUFF_MAX_LEN改为最大值251
②gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改为最大值243(char4默认使用notify,协议开销少一个字节,故MTU可以到244)
③如果需要使用notify且发包负载大于20个字节,peripheralMTU变量或者CH58xBLE_LIB.h中的ATT_MTU_SIZE需要被扩大为最大负载+3即247(V208中LIB.h只读,只能修改peripheralMTU变量)
BLE主机如果是手机APP,要看APP的是否对MTU有调整。如果手机APP是BLE调试助手,连接后要在APP右上角修改MTU为251(最大值视情况而定)
非常感谢,按照你的解答,问题解决了
#define ATT_MTU_SIZE 32+3 //!< Minimum ATT MTU size //
#define BLE_BUFF_MAX_LEN 64
#define SIMPLEPROFILE_CHAR1_LEN 32 //最大243
#define SIMPLEPROFILE_CHAR2_LEN 32 //最大243
#define SIMPLEPROFILE_CHAR3_LEN 32 //最大243
#define SIMPLEPROFILE_CHAR4_LEN 32 //notify最大244
我把这几个参数都修改了,但是帧超过20接收就分两帧,发送就是不行,请问哪里还有问题。
您好,如果用的手机APP是BLE调试助手的话,每次连接上APP,手机APP中也要配置MTU的,默认只能到20字节负载。