6个员额/ 0个新员额
最后发表
凌乱的爱
离线
最后看到:2年6个月前
加入:2017-08-29星期日晚上
DA14580通讯距离

工程版本:5.0.4
使用工程为OTA工程加入扩展睡眠,因为低功耗的原因修改了广播间隔和连接间隔
广播间隔为500 ms ~ 1 s
连接间隔450 ms ~ 500毫秒
连接间隔变长之后发现通讯距离缩短二分之一,以前可以到10米距离,现在距离缩短到5米以下
加了2.4 g陶瓷天线发现也没什么大的变化,请问有什么办法可以在功耗不增加的情况下增加一点距离

关键词:
设备:
CYibin
离线
最后看到:三个月三个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

修改连接间隔之后,距离由10米缩短到5米以下,应该是有其它原因导致的距离变短。请详细描述一下您的测试步骤。

另外,根据你目前提供的信息,怀疑是超时断开:修改了连接间隔之后,有没有把超时时间也相应的加长一点:time_out, superv_to吗?

凌乱的爱
离线
最后看到:2年6个月前
加入:2017-08-29星期日晚上
测试步骤:

测试步骤:
#定义APP_PARAM_UPDATE_REQUEST_TO (1000)

///最小的广告时间间隔
.intv_min = 800, //500ms // 100ms = (160*0.625ms)
///广告的最大间隔
.intv_max = 1600, // 100ms = (160*0.625ms)

上面参数固定
修改了函数user_gapm_conf
.con_intv_min = MS_TO_DOUBLESLOTS (360),
.con_intv_max = MS_TO_DOUBLESLOTS (400),
user_connection_param_conf为
.intv_min = MS_TO_DOUBLESLOTS (360),
.intv_max = MS_TO_DOUBLESLOTS (400),

以往都是没有修改,内参数为10年和20年,距离可以到10 m数值改大之后,距离就缩短了。

还有您怀疑的问题:
.time_out = MS_TO_TIMERUNITS (1250),
.superv_to = MS_TO_TIMERUNITS (1000),
他们都是10 ms为为单位,按理说都在10年代以上= =,
我将其每个增加了500的量,距离没有变化

CYibin
离线
最后看到:三个月三个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

定时器单元是10 ms没错,宏MS_TO_TIMERUNITS里的参数的单位是女士。。。

把参数都填为 5000 试试吧~~

凌乱的爱
离线
最后看到:2年6个月前
加入:2017-08-29星期日晚上
非常感谢您的回复

非常感谢您的回复
按照您说的都改成5000
.superv_to = MS_TO_TIMERUNITS (5000),
.time_out = MS_TO_TIMERUNITS (5000),
效果就是断开之后5 s才响应user_app_disconnect这个函数,距离并没有改变。
而且处于一种很尴尬的情况:在5 ~ 10米距离之间,安卓手机搜索不到此蓝牙,用苹果手机能搜索到蓝牙,但是不能连接(这里我的猜想:我在手机蓝牙连接设备蓝牙之后会发送一串绑定码给设备蓝牙,这串码有18位,将蓝牙间隔改长了之后,功耗确实低了不少,但是收发数据的效率相应也变低了,所以需要差不多5 s时间才能在我的方案逻辑里面判断是连接上了)
在这里面有什么好的办法吗 = =!

CYibin
离线
最后看到:三个月三个星期前
工作人员
加入:2017-12-14 02:48
我们把问题分步骤解决吧:

我们把问题分步骤解决吧:

1、修改连接间隔会导致距离变短。

理论上,如果连接参数没问题的话,修改连接间隔并不会导致距离变短。所以先解决这个问题:

一)先排查硬件问题,做法就是使用我们官方的例程(准系统)下载到你的板子上,然后用第三方工具(lightblue)跟它连接。修改不同的连接参数,观察连接距离有无变化。

b)再排查软件问题,你的描述”效果就是断开之后5 s才响应user_app_disconnect这个函数“有个矛盾,断开之后,是会马上回调user_app_disconnect函数的,所以不清楚你判断断开的依据是什么?这里需要你以user_app_disconnect的回调作为断开的依据,再仔细测试,观察你的设备的行为,然后描述出来。

根据”5 s才响应user_app_disconnect这个函数”的描述,暂且先假设为超时断开,那么你需要排查下你软件中有没有造成阻塞的操作,如连续频繁的读写flash,连续频繁的读写IIC,使用,(我),等类似的语句占用CPU实现延迟等。

2、提高通讯效率、同时节省功耗

主、从连接成功之后,从设备可以发起修改连接参数的请求。

所以,将user_connection_param_conf配置成满足你功耗需求的参数。手机连上之后,会以比较快的速度通讯,APP_PARAM_UPDATE_REQUEST_TO超时之后,以user_connection_param_conf中的参数通讯。