微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 求助:cc2540 连接android app蓝牙断开反应慢,数据延时

求助:cc2540 连接android app蓝牙断开反应慢,数据延时

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

描述:两个问题外设是cc2540  app是android 4.3 4.4使用官方api

1、2540外设断开蓝牙后,android  app不能马上获取,间隔20秒左右才收到。(iOS app 不会延时)

2、2540外设,蓝牙连接成功,app监听特征成功后,外设一直以1秒一包数据发出(一包10个byte)。问题来了,蓝牙复位,连接监听成功,5-6秒时android  app确实是一秒收到一包数据。但是5-6秒后,基本是间隔4秒收到4包,间隔4秒收到4包。

我问了我们的外设端参数如下: 

Default_desired_min_conn_interval=100ms
Default_desired_mAx_conn_interval=1000ms
Default_desired_slave_latency=0
Default_desired_conn_timeout=10s

这些参数会造成这个原因吗? 目前抓包仪还在路上,没到。希望大神小神,赐教

求助啊 啊啊啊 啊啊

有了sniffer应该就知道问题出在哪里了,我感觉安卓端的可能性大,毕竟手机端的蓝牙模块在接受到链路层数据后还要上传到Host,Host再根据哪个应用当前正在与蓝牙交互来进行二次数据传递,这里很可能做了某些优化,比如app端接收到一定数量的packet以后再触发回调,这个应该可以看一下sdk的bluetooth包下面的源码分析一下,当然这个行为也可能是系统层面的蓝牙部分代码处理的,就得看内核源码来分析了。

另外我知道iOS端的回调也是这样的,给app应用层的回调函数调用的时间与蓝牙链路层接收到数据的时间有一些差距而且并不规律。

连接速率主要由两个决定的:

1、广播间隔

2、连接参数

很显然你们为了低功耗修改过了连接间隔,5S以内用的是主机端默认的连接参数,5~6S后为你复制出的连接参数被更新成功了。这是外设端的问题。

PS:吐槽下你们2541端和app端都是新手。

简单来说你让2541端工程师把广播间隔和连接参数还原成默认值能解决问题,但默认值也存在断开后10S后才识别到断开状态。这个问题看我个性签名档的博客地址,《CC2541之连接参数》。

补充一下,之所以IOS没问题、安卓有问题,是因为这个连接参数不符合IOS的连接参数更新的要求,所以在IOS手机上这个参数是不起作用的、而安卓手机是更新成功了。

你好,

Default_desired_min_conn_interval=100ms
Default_desired_mAx_conn_interval=1000ms

他们的间距差的太大了,建议你把Default_desired_min_conn_interval设置为800.

IOS估计没有接受你的parameter的请求,而安卓手机接受的你parameter请求。

最好还是拿个sniffer抓包啥都知道啦。

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

网站地图

Top