TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F 更新较大的PDU问题

1. 将应用程序项目中的 MAX_PDU_SIZE 预处理器符号设置为所需值, 以达到 L2CAP PDU 最大所需大小。最大 ATT_MTU 大小总是比 MAX_PDU_SIZE 的 值少 4 个字节。

2. 在成功连接后,调用 GATT_ExchangeMTU()(仅限 GATT 客户端)。传递给此函数的 MTU 参数必须小于或等于步骤 1 中的定义。

3. 在任务中接收 ATT_MTU_UPDATED_EVENT 以验证 MTU 是否已成功更新。此更新 事件,要求任务已注册 GATT 消息。尽管可以将协议栈配置为支持最多 255 字节的 MAX_PDU_SIZE,但每个蓝牙低功耗连接最初都使用默认的 27 字节(ATT_MTU = 23 字节)值,直到交换 MTU 过程,以支持较大的 MTU 大小。必须在每个 BLE 连接上 执行交换 MTU 过程,且必须由客户端发起(主机)。

4. 使用LE数据长度分机功能时,LE包的长度最多可达 251 字节。

问题:请问TI的工程师们,我使用HCI_LE_SetDataLenCmd();API函数更新PDU大小更新成功了,确实是251个字节,但是上面黑体部分怎么说协议栈配置最多支持255个字节呢,没怎么懂?

 

Viki Shi:

255字节需要双方都支持, BLE4.0/4.1设备硬件 LL PDU 大小是 27字节。
看这边详解:leconiot.com/…/l2cap.html

user4941551:

回复 Viki Shi:

但是我使用LE更新最大只能到251byte啊,255byte更新是不成功的

Viki Shi:

回复 user4941551:

这个255包含4个字节的协议头,需要去掉

user4941551:

回复 Viki Shi:

那这个意思我使用GATT_ExchangeMTU()更新的大小,我们发送的实际有效数据个数要减掉7个字节。HCI_LE_SetDataLenCmd更新的大小,我们发送的实际有效数据个数要减掉3byte是这个意思吗?

user5289985:

回复 user4941551:

你好,请问可以贴一下GATT_ExchangeMTU()的调用的部分代码吗,我调用了,但是返回参数错误

user4941551:

回复 user5289985:

你这个是在主机端调用的吗

user5289985:

回复 user4941551:

单从机,我用GATT_UpdateMTU(…)这个API,从机可以主动协商MTU,但是协商之后,BLE底层就卡死了,如果我用APP去请求的就没问题,申请了MTU可以正常使用。从机主动申请的你弄过吗

user4941551:

回复 user5289985:

这个MTU更行只能从GATT客户端去申请,也就是主机端,服务器端是不行的,你可以查一下资料看看

user5289985:

回复 user4941551:

应该是可以的,用了一家的模块,他的可以实现>20字节的通信,我用同一个APP的时候

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F 更新较大的PDU问题
分享到: 更多 (0)