DA14580脱节问题

6个职位/ 0个新职位
最后发表
玛雅
离线
最后看到:9个月,4个星期前
加入:2016-03-31 11:58
DA14580脱节问题

嗨 .............
我们使用da14580作为外围设备。我们的连接参数是

connection_interval_max = = 1秒
connection_interval_min = = 500 ms
延迟= = 0
supervision_timeout = = 6秒

问题是我们的BLE很快就从Master断开(最大连接时间是15mn),但是Master和slave之间的距离是2米。我们需要使用什么参数来克服这个问题?

谢谢. .

设备:
MT_dialog
离线
最后看到:1个月前3天前
工作人员
加入:2015-06-08 34
嗨,玛雅,

嗨,玛雅,

这与连接参数无关,如果连接参数在规范的限制范围内,并且中央接收外设发送的参数更新(主服务器是指定连接参数的,外围设备只能表明他的需求,如果他接受或不接受,则由中心设备决定)你的连接应该是可靠的,除非中心设备或外围设备失去了通信(中心设备不能在预定的连接间隔内接收外围设备)。虽然如果您增加了延迟和监督超时,您将能够增加连接的容忍度,但同样,这些参数是在中央考虑的,即使外设发送更新参数请求,这并不意味着中央将接受它们。

由于MT_dialog

玛雅
离线
最后看到:9个月,4个星期前
加入:2016-03-31 11:58
嗨……MT_dialog

嗨……MT_dialog

谢谢你的回复。正如您所说的,设置连接参数是主责任。现在我用狙击手,找出奴隶的请求和主人的回应
连接参数。

slave请求的参数:-
连接手柄:0x0000
连接间隔最小值:400
Connection Interval Max:800
延迟时间:2
监督超时:600

主响应:-
EVT (GAP_CHANGE_PARAM_REQ_CMP_EVT)
+-------------------------------------------------------------------------------------------+
状态:0 x00
区间:800
延迟时间:2
监督超时:600

现在我认为这些参数不会出现连接丢失的问题。BLE堆栈是否有问题,以至于连接没有在连接间隔内发生?

MT_dialog
离线
最后看到:1个月前3天前
工作人员
加入:2015-06-08 34
嗨,玛雅,

嗨,玛雅,

使用上述配置,我不认为将出现参数更新(您可能会看到这些值从嗅探器接受,但实际连接间隔将保持不变,可能非常小,这就是为什么您无法看到断开连接 - 您可以检查从电源分析器测量连接间隔之间的距离),我不知道值在您提到的参数中的度量,但是您可以设置主服务器可以选择的最大间隔值(800)大于监控就越超时,据我所知,你的连接将保持与之前相同的连接间隔。您在2中设置了从站的延迟,这意味着设备(如果中央选择800)将忽略第一个和第一个第二个连接间隔和侦听第三个间隔,因此外围设备将每2400ms收听。

一般来说,由于您强加了这种限制,就没有数据包丢失的空间(对于最大800ms的间隔和延迟2,您至少需要大于2400的超时,但是在第一个丢失的包——这意味着没有的数据交换4800 ms -超时会发生,你将因监管宽松的链接超时自设备将认为自己断开连接后2400 ms没有数据包交换)和通信以来空气会导致包丢失你给你的参数更多的填充,以使你的连接对空中通信更宽容。

我不看到你的第二个帖子中的值对应于你提到的值在第一篇文章但参数对第一篇文章我能保持一个连接超过15分钟,可能更拥挤的地方有丢失的数据包需要更多填充,以使您的连接更加tollerant。

由于MT_dialog

玛雅
离线
最后看到:9个月,4个星期前
加入:2016-03-31 11:58
嗨……MT_dialog

嗨……MT_dialog

我觉得你搞错了。时间是十六进制格式。
因此,最大间隔时间为1秒,最小间隔时间为0.5秒,监督超时时间为6秒,时延为2秒。并掌握接受参数,我们有检查CRO和在每一秒外围监听。但一段时间后,连接中断。中间没有拥挤。

MT_dialog
离线
最后看到:1个月前3天前
工作人员
加入:2015-06-08 34
嗨,玛雅,

嗨,玛雅,

是上面提到的值来自您正在使用的嗅探器,或者是您在连接更新函数中设置的参数,如果您使用的嗅探器有不同的方式将.hex值映射到毫秒,但如果这些是您在更新函数中拥有的值,请检查以下.hex数字对应于毫秒的值,这就是为什么我提到我没有看到这些值如何对应于您在第一篇文章中提到的次数。

1)连接间隔最小0x400 - > 1024 * 1.25 = 1280 ms - > 1.28秒

2)连接间隔最大0x800 -> 2048 * 1.25 = 2560ms -> 2.56秒

3)连接延迟2(如果主机接受了2的延迟,外围设备是如何每秒侦听的?)

4)连接监督超时0x600 -> 1536 * 10 = 15360ms -> 15.36秒

在任何一种情况下,这两个连接参数留给你一个2包填充(因为你使用2的延迟),如果你失去一个没关系,但如果你连续失去一秒,那么你的连接被认为终止。你可以通过检查断开原因来检查,如果它是GAP_ERR_TIMEOUT,那么这就是你的设备断开的原因。我尝试使用您指定的连接参数1秒.con_min = 500ms con_max = 1000ms .latency = 2(也.latecy = 0)和.timeout = 6000ms,我不能看到任何断开后超过半个小时,我已经运行测试。

由于MT_dialog