请教一下CC2540,手机应用App通信问题。
本人使用CC2540标准例程SimpleBLEPeripheral进行开发BLE控制设备,目前底层固件和通信命令已经使用TI提供的ios端lightblue软件测试通过,同时自己开发的ios端控制软件也调试OK,ios端数据通信正常;但是使用安卓端软件控制时,有明显的数据通信延时。
备注:安卓发包指令和相关数据通信结构和ios是一致的,同样的安卓软件用来控制其他BLE设备时,数据通信正常。
不知道是什么原因造成安卓端在我们现有设备上的通信延时。
另外,请问一下,安卓端有没有类似于lightblue一样的测试工具呀?
(1)看下那个有延迟的BLE设备与其他BLE设备的连接参数等有什么差异,同时需要注意ios和android的蓝牙连接要求要求也是不同的,对比一下。
(2)似乎还没有吧。
moon,
你可以可以用一下TI 的packet sniffer 抓包看看你的连接参数的情况,这个能一目了然。
hi, key
首先我的ios和安卓端软件发包属性都定义为WRITE_NO_RSP,同时BLE设备端软件数据写入属性定义为GATT_PROP_WRITE_NO_RSP。
1、使用ios软件连接发送数据时,数据通信没有延迟;
2、同样条件下使用andriod软件连接发送相同数据,刚开始连接时,数据通信也是正常的,大概过了几秒钟之后,数据通信开始出现明显的延迟。
对比了一下其他BLE设备的连接参数,没有发现什么异常,另外,您提到的ios和android的蓝牙连接要求要求也是不同的,这个能明细一下嘛,我不太了解这部分差异。。
thanks。。。。
hi,Yan
我用packet sniffer抓包的情况如下,但是不知是否正常。
貌似用packet sniffer抓包,很多数据包都捕获不到。
moon,
从这个图来看,都是正常的, 50ms的connection interval。
之后有没有connection update 的请求呢?
hi,Yan
正常通信时的抓包截图:
异常数据通信时抓包截图:
我感觉像是手机软件的问题,不是我BLE设备底层软件的问题,您觉得呢?
参考附件P22,看到ios对连接时间参数要求相对较严。
手机对BLE设备发包一段时间之后,有connection update 的请求。
参考附件P22,可看到ios对蓝牙连接参数相对较严的。
hi,key
thans~~
moon,
第912帧可以看到,这是slave发了connection update request了。
请求的connection interval最大是0x0320 (十进制800), 单位1.25ms,所以是 800 x 0.125 = 100 ms。
所以变大了。
所以你可以找一下代码里面什么时候会发送这个请求。
所以这应该就是原因了。
所以看你的了:)
安卓端软件发包属性都定义为WRITE_NO_RSP,这个在哪儿设置的? thanks!
我也在调这个,我想要10ms的通讯速度
hi,Yan
问题已经解决,现在ios和安卓通信都正常了。
谢谢你的提醒。
hi, JOE2
WRITE_NO_RSP在 simpleGATTprofile.c里面设置
3Q
请问你用的是哪个安卓软件啊?
我在ios 上使用,控制LED灯,发现有时候延迟300毫秒,有时候只延迟几十毫秒,感觉好像是模块端每隔300毫秒才描扫一下数据,不知道我的推断是不否正确,搞不懂到底是IPHone 端的问题还是模块端的问题 ,请教楼主是否知道解决办法?
hi,mai zi
建议你抓包看看数据收发情况,同时手机端打开debug看看手机是否正常发包,然后模块是否收到并回应。
hi,chen
我用的安卓软件是自己开发的。
你好!moon mike!我用lightblue测试正常后,想开发一下安卓的, 您开发的安卓软件 可否借我参考一下, 我的QQ:531374275
邮箱531374275@qq.com 万分感谢!