嗨 .............
我们使用da14580作为外围设备。我们的连接参数是
connection_interval_max = = 1秒
connection_interval_min = = 500 ms
延迟= = 0
supervision_timeout = = 6秒
问题是我们的BLE很快就从Master断开(最大连接时间是15mn),但是Master和slave之间的距离是2米。我们需要使用什么参数来克服这个问题?
谢谢. .
设备:
嗨,玛雅,
这与连接参数无关,如果连接参数在规范的限制范围内,并且中央接收外设发送的参数更新(主服务器是指定连接参数的,外围设备只能表明他的需求,如果他接受或不接受,则由中心设备决定)你的连接应该是可靠的,除非中心设备或外围设备失去了通信(中心设备不能在预定的连接间隔内接收外围设备)。虽然如果您增加了延迟和监督超时,您将能够增加连接的容忍度,但同样,这些参数是在中央考虑的,即使外设发送更新参数请求,这并不意味着中央将接受它们。
由于MT_dialog
嗨……MT_dialog
谢谢你的回复。正如您所说的,设置连接参数是主责任。现在我用狙击手,找出奴隶的请求和主人的回应
连接参数。
slave请求的参数:-
连接句柄:0 x0000
连接间隔最小值:400
连接时间间隔最大:800
延迟时间:2
监督超时:600
主响应:-
EVT (GAP_CHANGE_PARAM_REQ_CMP_EVT)
+-------------------------------------------------------------------------------------------+
状态:0 x00
区间:800
延迟时间:2
监督超时:600
现在我认为这些参数不会出现连接丢失的问题。BLE堆栈是否有问题,以至于连接没有在连接间隔内发生?
嗨,玛雅,
与上面的配置参数更新我不认为会发生(您可能会看到那些值从嗅探器接受但实际连接的间隔可能不会改变很小,那为什么你不看到断开——你可以检查从分析器和测量之间的距离连接的时间间隔),我没有意识到的度量值的参数你提到但是你已经设置的最大区间值主可以选择(800)大于监督,据我所告诉你的连接将保持相同的连接的间隔。您还将从站的延迟设置为2,这意味着设备(如果中央选择800)将忽略第一个和第二个连接间隔,并侦听第三个连接间隔,因此外设将每2400毫秒侦听一次。
一般来说,由于您强加了这种限制,就没有数据包丢失的空间(对于最大800ms的间隔和延迟2,您至少需要大于2400的超时,但是在第一个丢失的包——这意味着没有的数据交换4800 ms -超时会发生,你将因监管宽松的链接超时自设备将认为自己断开连接后2400 ms没有数据包交换)和通信以来空气会导致包丢失你给你的参数更多的填充,以使你的连接对空中通信更宽容。
我不看到你的第二个帖子中的值对应于你提到的值在第一篇文章但参数对第一篇文章我能保持一个连接超过15分钟,可能更拥挤的地方有丢失的数据包需要更多填充,以使您的连接更加tollerant。
由于MT_dialog
嗨……MT_dialog
我觉得你搞错了。时间是十六进制格式。
因此,最大间隔时间为1秒,最小间隔时间为0.5秒,监督超时时间为6秒,时延为2秒。并掌握接受参数,我们有检查CRO和在每一秒外围监听。但一段时间后,连接中断。中间没有拥挤。
嗨,玛雅,
你所提到的那些价值观来自您正在使用的嗅探器或设置在连接的参数更新功能,如果您正在使用的嗅探器有不同的方式.hex值映射到毫秒好,但是如果你有这些值更新功能,看看下面这些十六进制数字是如何对应于毫秒的,这就是为什么我提到我不知道这些值如何对应于你在第一篇文章中提到的时报。
1)连接间隔分钟0x400 -> 1024 * 1.25 = 1280ms -> 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