CH579官方例程中 adv_ali_light_with_peripheral 里面蓝牙接收数据长度如何修改

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字节负载。


只有登录才能回复,可以选择微信账号登录