我使用8232做数据传输模块功能,蓝牙协议栈使用v1.3.0(telink_hawk_ble_sdk_v1.3.0)
项目基本情况如下:
MYFIFO_INIT(blt_rxfifo, 100, 4);
MYFIFO_INIT(blt_txfifo, 220, 4);
初始化调用blc_att_setRxMtuSize(240),并在蓝牙连接后进行MTU请求,回调成功后更新发送的数据包大小为effectMtuSize-3;
连接后调用bls_l2cap_requestConnParamUpdate (8, 12, 99, 400)更新连接间隔;
发数据调用bls_att_pushNotifyData( BLE_UART_NOTIFY_HANDLE, data, len);
手机1:
Redmi K20 Pro
MIUI版本 12.0.6稳定版
Android版本 10
内核版本 4.14.177-perf-g66aed98
手机2:
Honor 9i LLD-AL20
EMUI版本 9.1.0
Android版本 9
内核版本 4.9.148
手机1和手机1使用的APP为nRF Connect工具
遇到的问题:
1、使用手机1发送80个字节数据能成功;
2、使用手机2发送80个字节数据不成功,bls_att_pushNotifyData返回LL_ERR_TX_FIFO_NOT_ENOUGH,且每次都会失败;
3、已确认手机1和手机2都已成功进入mtu回调函数,且effectMtuSize=0xF0;
4、使用手机2发送40字节能成功,大于50字节后均失败返回LL_ERR_TX_FIFO_NOT_ENOUGH;
5、已下载v1.3.0的8232_BLE_SDK_Patch进行替换了7个补丁包还是出现同样的问题;
6、测试过很多其他手机,目前还发送一台也会发送失败的手机,手机信息如下:Redmi 5 Plus,
MIUI版本11.0.3
Android版本8.1.0
内核版本3.18.71
发送的数据并没有超过MTU-3的值,而且发送数据是在MTU成功回调之后十几秒,
是什么原因导致手机2出现LL_ERR_TX_FIFO_NOT_ENOUGH呢?
TLSR8232做从机时是否支持主机多包并发操作,应如何配置? |
如果使用NRF Connect的话,能否看一下app的log,log是HCI交互的,在没有空中抓包的情况下可能会有更多有用的信息。
是否会与这个配置有关?
MYFIFO_INIT(blt_rxfifo, 100, 4);
MYFIFO_INIT(blt_txfifo, 220, 4);