微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2540中传输大容量数据的问题

cc2540中传输大容量数据的问题

时间:10-02 整理:3721RD 点击:

1、cc2540中主给从发送数据时使用GATT_WriteCharValue可以成功,主从端均正确。但是该函数只能发送最多20个字节的数据,然后我就使用了GATT_WriteLongCharValue这个函数接口,结果发现从设备每次最多只能收到18个字节的数据。并且这个时候主端特别容易死机,如果换成GATT_WriteCharValue就不会有这个问题了。

2、从设备给主设备回送数据的时候目前是用的是GATT_Notification函数接口,这个函数的第二个参数中包含了回送数据的内容,但是定义的长度为20(定义的宏为ATT_MTU_SIZE-3,然后ATT_MTU_SIZE为23,其红定义的时候说明了其值最大可为517)。请问,在不自行分包的情况下能够实现最多的一次性传送五百多个字节的数据吗?

我回答第二个问题,我做从机的,主机没做过。notification 最大支持20个字节,蓝牙技术联盟SIG规定了BLE协议,其中链路层有27个字节数据,这其中要去除 L2CAP Header (length:2字节  channel ID:2字节),notify本身 有OPCode 1字节 AttHandle 2字节 ,所以 最多只能传输20字节。大数据不分包传输,无法实现,这是蓝牙的规范,哥们你就认了吧。如果你想了解蓝牙4.0的核心规范,见附件;规范内容很多,总共2302页。关于这个问题,见2209页。

http://pan.baidu.com/s/1jGp7tQm(附件不支持大文件 上传)

非常感谢啊。既然这样那就只有分包进行回传了

您好,

1)2540的接收发送缓存都为128字节。

2)wiki上看到针对2540在10ms内发送字节不能超过20字节。

供参考

你好,cc2540中主给从发送数据时使用GATT_WriteCharValue,你这部分的代码,如果方便的话能贴一下,想学习一下,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top