CH571做主机,向从机写入多字节数据失败问题

使用的MCU:CH571(蓝牙主机)、CH582(蓝牙从机)

Lib版本:CH57x_BLE_LIB_V2.20、CH58x_BLE_LIB_V2.00

使用历程:Central历程

问题现象:CH571做为主机,连接CH582,通过UUID找到服务后,调用库中的GATT_WriteLongCharDesc()函数往从机写入数据,发现数据接收有异常,表现为从机时不时会丢包,测试程序中,通过任务时间,每2秒往从机写入一个20字节的数据,发现丢包的数据中,函数GATT_WriteLongCharDesc()返回SUCCESS,但在centralProcessGATTMsg中ATT_EXECUTE_WRITE_RSP事件并未触发,程序如图

定义的结构体:

图片.png


Central_ProcessEvent中

图片.png

GAT_Write_value函数


图片.png

在centralProcessGATTMsg对ATT_EXECUTE_WRITE_RSP事件判断

图片.png


打印log如图

图片.png


目前的丢包频率较高,请问这个问题该如何改善

蓝牙主机转串口功能的代码参考已发送,请查收,建议使用GATT_WriteCharValue功能。


您好,如果是使用GATT_WriteLongCharDesc()的话,申请内存函数的参数需要修改才行,

req.pValue = GATT_bm_alloc(centralConnHandle, ATT_WRITE_REQ, req.len, NULL, 0);

修改为:

req.pValue = GATT_bm_alloc(centralConnHandle, ATT_PREPARE_WRITE_REQ, req.len, NULL, 0);

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