你好我们使用da14580作为外围设备。我们的连接参数为---
连接\u间隔\u最大值==1秒连接间隔最小值=500毫秒延迟==0监督超时==6秒
问题是我们的BLE很快就与主设备断开连接(最大连接时间为15 mn),但是主设备和从设备之间的距离为2米。我们必须使用哪些参数来克服此问题??
谢谢
嗨,梅亚克,
这与连接参数无关,如果连接参数不在规范的限制范围内,并且中心接受外围设备发送的参数更新(主设备是指定连接参数的设备,外围设备只能指示其要求,如果他是否接受这些要求,则由中央设备决定)除非中央设备或外围设备失去通信,否则您的连接应该是可靠的(中央处理器无法按预定义的连接间隔拾取外围设备)。虽然如果您增加延迟和监控超时,您将能够增加连接的耐受性,但这些参数仍然是中央正在考虑的,即使外围设备发送更新参数请求,这并不意味着中央将接受它们。
谢谢你的对话
你好MT_对话框
谢谢你的回复。正如您所说,设置连接参数是主要职责。现在我使用狙击手,找出奴隶的请求和主人的响应用于连接参数。
从服务器请求的参数:-连接手柄:0x0000连接Intverval最小值:400Connection Interval Max:800延迟:2监督超时:600
船长的答复:-EVT(间隙变化参数要求CMP EVT)+-------------------------------------------------------------------------------------------+状态:0x00间隔时间:800延迟:2监督超时:600
现在,我认为这些参数不会出现连接丢失问题。BLE堆栈是否存在任何问题,因此连接不会在连接间隔内发生?
使用上述配置,我不认为将出现参数更新(您可能会看到这些值从嗅探器接受,但实际连接间隔将保持不变,可能非常小,这就是为什么您无法看到断开连接 - 您可以检查从电源分析器测量连接间隔之间的距离),我不知道值在您提到的参数中的度量,但是您可以设置主服务器可以选择的最大间隔值(800)大于监控就越超时,据我所知,你的连接将保持与之前相同的连接间隔。您在2中设置了从站的延迟,这意味着设备(如果中央选择800)将忽略第一个和第一个第二个连接间隔和侦听第三个间隔,因此外围设备将每2400ms收听。
一般来说,由于您施加了这种限制,因此没有空间容纳丢失的数据包(以800毫秒最大间隔和等待时间2)至少需要超时2400,但在第一个丢失的包——这意味着没有4800毫秒的数据交换——超时将发生,并且由于监督超时,您将失去链接,因为设备将在2400毫秒后认为自己断开而没有交换包。ets),由于空中通信可能导致数据包丢失,您必须对参数进行更多填充,以使您的连接更能承受空中通信。
我看不出你在第二篇文章中的值与你在第一篇文章中提到的值是如何对应的,但通过第一篇文章中的参数,我能够使连接保持15分钟以上的活动状态,可能在一个更拥挤的地方,丢失的数据包更多,你需要更多的填充,以便使连接更宽容。
我想你搞错了。泰晤士报是十六进制格式的。因此,最大间隔为1秒,最小间隔为5秒,监控超时为6秒,延迟为2秒。master接受我们在CRO上检查的参数,并在每秒钟外围侦听一次。但在一段时间后连接中断。并且介质中没有拥挤。
是上面提到的值来自您正在使用的嗅探器,或者是您在连接更新函数中设置的参数,如果您使用的嗅探器有不同的方式将.hex值映射到毫秒,但如果这些是您在更新函数中拥有的值,请检查以下.hex数字对应于毫秒的值,这就是为什么我提到我没有看到这些值如何对应于您在第一篇文章中提到的次数。
1)连接间隔最小0x400 - > 1024 * 1.25 = 1280 ms - > 1.28秒
2) 连接间隔最大0x800->2048*1.25=2560毫秒->2.56秒
3) 连接延迟2(如果主机已接受延迟2,则外设每秒如何侦听?)
4) 连接监控超时0x600->1536*10=15360ms->15.36秒
在这两种情况下,这两个连接参数都会留下2个数据包填充(因为你使用2的延迟),如果你丢失了一个它的OK,但是如果你在一行中丢失了第二个,那么你的连接就被考虑终止。您可以通过检查断开原因来检查,并查看其间隔是否超时,然后这就是您的设备断开连接的原因。我尝试使用您指定的连接参数1秒。con_min=500ms con_max=1000ms。延迟=2(同时也是。latecy=0)和.timeout=6000ms。在运行测试超过半小时后,我看不到任何断开。
嗨,梅亚克,
这与连接参数无关,如果连接参数不在规范的限制范围内,并且中心接受外围设备发送的参数更新(主设备是指定连接参数的设备,外围设备只能指示其要求,如果他是否接受这些要求,则由中央设备决定)除非中央设备或外围设备失去通信,否则您的连接应该是可靠的(中央处理器无法按预定义的连接间隔拾取外围设备)。虽然如果您增加延迟和监控超时,您将能够增加连接的耐受性,但这些参数仍然是中央正在考虑的,即使外围设备发送更新参数请求,这并不意味着中央将接受它们。
谢谢你的对话
你好MT_对话框
谢谢你的回复。正如您所说,设置连接参数是主要职责。现在我使用狙击手,找出奴隶的请求和主人的响应
用于连接参数。
从服务器请求的参数:-
连接手柄:0x0000
连接Intverval最小值:400
Connection Interval Max:800
延迟:2
监督超时:600
船长的答复:-
EVT(间隙变化参数要求CMP EVT)
+-------------------------------------------------------------------------------------------+
状态:0x00
间隔时间:800
延迟:2
监督超时:600
现在,我认为这些参数不会出现连接丢失问题。BLE堆栈是否存在任何问题,因此连接不会在连接间隔内发生?
嗨,梅亚克,
使用上述配置,我不认为将出现参数更新(您可能会看到这些值从嗅探器接受,但实际连接间隔将保持不变,可能非常小,这就是为什么您无法看到断开连接 - 您可以检查从电源分析器测量连接间隔之间的距离),我不知道值在您提到的参数中的度量,但是您可以设置主服务器可以选择的最大间隔值(800)大于监控就越超时,据我所知,你的连接将保持与之前相同的连接间隔。您在2中设置了从站的延迟,这意味着设备(如果中央选择800)将忽略第一个和第一个第二个连接间隔和侦听第三个间隔,因此外围设备将每2400ms收听。
一般来说,由于您施加了这种限制,因此没有空间容纳丢失的数据包(以800毫秒最大间隔和等待时间2)至少需要超时2400,但在第一个丢失的包——这意味着没有4800毫秒的数据交换——超时将发生,并且由于监督超时,您将失去链接,因为设备将在2400毫秒后认为自己断开而没有交换包。ets),由于空中通信可能导致数据包丢失,您必须对参数进行更多填充,以使您的连接更能承受空中通信。
我看不出你在第二篇文章中的值与你在第一篇文章中提到的值是如何对应的,但通过第一篇文章中的参数,我能够使连接保持15分钟以上的活动状态,可能在一个更拥挤的地方,丢失的数据包更多,你需要更多的填充,以便使连接更宽容。
谢谢你的对话
你好MT_对话框
我想你搞错了。泰晤士报是十六进制格式的。
因此,最大间隔为1秒,最小间隔为5秒,监控超时为6秒,延迟为2秒。master接受我们在CRO上检查的参数,并在每秒钟外围侦听一次。但在一段时间后连接中断。并且介质中没有拥挤。
嗨,梅亚克,
是上面提到的值来自您正在使用的嗅探器,或者是您在连接更新函数中设置的参数,如果您使用的嗅探器有不同的方式将.hex值映射到毫秒,但如果这些是您在更新函数中拥有的值,请检查以下.hex数字对应于毫秒的值,这就是为什么我提到我没有看到这些值如何对应于您在第一篇文章中提到的次数。
1)连接间隔最小0x400 - > 1024 * 1.25 = 1280 ms - > 1.28秒
2) 连接间隔最大0x800->2048*1.25=2560毫秒->2.56秒
3) 连接延迟2(如果主机已接受延迟2,则外设每秒如何侦听?)
4) 连接监控超时0x600->1536*10=15360ms->15.36秒
在这两种情况下,这两个连接参数都会留下2个数据包填充(因为你使用2的延迟),如果你丢失了一个它的OK,但是如果你在一行中丢失了第二个,那么你的连接就被考虑终止。您可以通过检查断开原因来检查,并查看其间隔是否超时,然后这就是您的设备断开连接的原因。我尝试使用您指定的连接参数1秒。con_min=500ms con_max=1000ms。延迟=2(同时也是。latecy=0)和.timeout=6000ms。在运行测试超过半小时后,我看不到任何断开。
谢谢你的对话