亲爱的对话团队,
我试图通过在螺纹上次和第三条评论中建议的连接电流进行游戏: -
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
观察结果: -
1.我发现在默认连接间隔配置中连接电流为210uA。(min_interval =10ms, max_interval = 20ms)
2.当MIN_INTERVAL = 300ms时,我发现连接电流为〜25ua,max_interval = 310ms
3.初始电流为100uA,与连接间隔无关(持续2-3秒)。之后,根据连接间隔配置,电流生效。
查询: -
1.将连接间隔从默认配置的10ms移动到300ms有什么不利影响?
2.我明白它可以影响吞吐量,但如果我的usecase每天传输几个字节(最多400字节。每天,最多40个字节),我应该如何配置时间?
3.是否可以在运行时更改连接间隔?如果是,您能告诉我们代码中的API/位置吗?
4.与120uA相比,有什么可能的原因:-
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
5.您能详细说明3次观察原因吗?
如果你需要任何其他细节,请告诉我。
提前致谢,
卡兰
设备:
你好,karanshah28,
你能说明一下你目前的消耗测量是遵循什么程序吗?我假设你得到的是平均电流消耗。系统进入睡眠模式之间的广告或连接间隔。因此,更大的连接或广告间隔意味着系统处于睡眠模式的时间更长,因此功耗会更低。
设备在连接间隔期间发送的数据量取决于中央允许发送外围设备的数据包。具有标准MTU选择的每个数据包的有效载荷为20字节。所以您发送的每个数据都可以载有20个字节。You can't control the how many packets the BLE will send during a connection interval because is up to the master of the connection, if he doesn't want to accept the data he just won’t accept it even if you indicate that you have more data to send. In addition, there are is not a fixed connection interval regarding your application.
让我快速介绍一下连接参数更新过程:
正在发布的外围设备充当从设备的角色,而正在搜索要连接到的设备的扫描设备在连接过程中充当主设备的角色。后者负责执行各种强制操作,包括传输哪个通道和使用哪个事件间隔。然而,在成功连接后,从设备可以通过更新连接参数请求提出自己的首选参数(连接间隔,监控超时等)。之后,如果奴隶的要求得到批准,主人就会对奴隶做出回应。为此,外围设备发送连接参数更新请求,协商过程将通过空中进行,如果推荐通过,将发生连接参数更新事件。有关更新连接参数的更多信息,请参阅蓝牙LE规范。
user_gapm_conf结构保留用户的配置,连接时设备将具有此结构的连接间隔。用户连接参数conf保存连接参数更新配置。连接间隔由中心定义,因此您可以做的是发出连接更新请求,中心将决定是否接受您请求的连接参数。如果当前参数不匹配,将向中心发送请求以更新连接参数(请求在连接建立10秒后发送),因此,如果中心接受参数,则连接将更改为user_connection_param_conf结构中的指定值。
关于1连接事件,你是如何衡量它的?你应该像附件中的图像那样测量它。这是一个连接事件。我的功率分析仪为这个测量。
谢谢,PM_DIALOG.
谢谢你的简要说明。
我们将在短期内与您分享我们如何测量电流的详细信息。
在我们的测试中,我们发现当我们设置高于100ms的连接间隔时,我们会看到中央设备和DA14586之间的断开连接。
你对此有何评论?这是预期的行为吗?或者设备应该保持连接?
还有,有没有办法改善这一点?
嗨,对话框的团队,
等待你的答复。
谢谢,Karan.
你好,卡兰,
您要连接的中心设备是哪一个?
BR,保罗
你好,保罗,
我们正在尝试连接Android手机。
谢谢,卡兰
你好
我在上一篇文章中看到,您谈到了范围扩展器,您是否也在这里使用它?
您使用的是定制PCB还是我们的Pro starter套件+Daugther板?
Android手机离主板的距离是多少?
BR,保罗
你好
我们正在使用范围扩展器。
我们使用定制的pcb。
距离为3米。
谢谢,Karan.
你好
当最小间隔是10毫秒,最大间隔是300毫秒时,我们甚至会断开连接
您是否可以提供10毫秒最小间隔和20毫秒最大间隔的连接设置,这会降低电流?
你好,karanshah28,
由于不需要高吞吐量,也许您可以尝试:
内部最小值:300毫秒
intv_max: 400毫秒
延迟:0
连接超时:5s
布尔
宜宾
你好
我们用你的参数进行了测试,但设备断开了。
我们用多个中央设备和浅蓝色应用测试了这一点。
您能为我们提供任何新的设置,使我们能够进行连续连接,并且连接间隔不超过10毫秒和20毫秒吗
- 卡伦
我错误地点击了“接受答案”链接。请忽略它
- 卡伦
嗨,对话框的团队,
我们可以快速解决是否脱离问题?
我们的目的是保持与中央设备的连接,在这种情况下,中央设备可以是android或iOS手机。一旦连接,我们永远不会断开。只有当中央或外围设备离开ble范围时,我们才会断开连接。感谢您在这方面的及时帮助。
问候,卡兰
你好,卡兰,
您可以确认不同的连接参数会导致不同的结果吗?连接参数适用于此用例吗?
你能告诉断开的原因代码吗?您可以在断开事件回调函数中打印出来(user_app_on_disconnect())。
布尔
宜宾
你好
对于相同的连接参数,我们看到了不同的观察。
第一次装置在1小时5分钟后断开,第二次装置在17分钟后断开。
在disconnect callback中,断开原因的时间都是0x13。
如果需要更多信息,请告诉我们。
什么可能是断开的问题?
有什么我们可以调整连接参数,可以解决问题吗?
问候,
卡兰
嗨Karanshah28,
0x13表示超时断开连接。
以下是我能想到的所有可能的原因:
1.应用程序(中心设备)被手机系统杀死。
2.在固件中,ble事件不能被及时处理。这意味着,在您的固件中有一个长时间的进程,它阻塞了您的主进程。
3.射频性能不好。例如,RF TX的功率较弱,或频率偏移较大等。
4.您的手机和设备之间存在兼容性问题。在这种情况下,请尝试另一部手机进行测试。
布尔
宜宾
亲爱的支持团队,
谢谢你的更新。
出于4个理由,我们必须找出实际原因。为此,我们确实在实验之后。
我们将ble_all_in_one项目二进制flash到板上,用手机连接板。
建立连接并连接到7小时2分钟,然后设备因断开原因0x8断开连接。
但是,ble_all_in_one固件的性能很好,但设备仍然断开连接。
那么这里有什么原因?
1)手机应用程序没有因为在应用程序中收到断开消息而崩溃。我附上了同样的截图。
2)现在我想我们可以说这不是因为固件的长进程,因为我们使用了ble_all_in_one。如果我错了,请纠正我。
3) 射频性能不好。我不确定。请注意,我们在电路板中使用了范围扩展器SKY66111-11。有没有办法检查射频性能是否存在问题?
是否有其他方法或建议可以找出问题的根本原因?
问候,
卡兰
你好,karanshah28,
有各种原因可以破坏连接的连接,例如将同行设备超出范围,电源故障条件,多个干扰等根据蓝牙LE规范,因为上述原因可能发生在没有任何先前警告的情况下,这是重要的对于这两者来说
主机和从机监控连接状态。为了做到这一点,中央和外设都应该使用链路层连接监督定时器,以检测链路丢失。有关此主题的更多信息,请参阅蓝牙核心规范。在SDK的配置结构user_connection_param_conf中,有一个参数名为。time_out。这是连接监督超时,它定义了在接收到的两个数据包pdu之间的最大时间
连接被认为是丢失的。根据核心规格,连接监管超时应为10毫秒的10毫秒的倍数为32.0秒,它应大于
(1 + connection_latency) * connection_interval * 2。您为设备设置的监控超时时间是多少?如果设置的超时时间越长,设备断开连接的时间会越长,还是无法断开连接?CO_ERROR_CON_TIMEOUT = 0x08错误是连接超时错误码,表示给定连接的链路监督超时已经过期。
谢谢,PM_DIALOG.
亲爱的Suport团队,
我们使用ble_all_in_one作为我们的基本代码,并添加了一些更改(范围扩展芯片驱动程序)//www.wsdof.com/sites/default/files/rext_sky66111-1...+一些产品级别更改)在该代码之上。
我们观察到在2小时内断开,有时在15分钟内断开。
为了进一步调试此问题,我们进行了以下实验:
请注意,我们在设计中使用了量程扩展芯片:SkY66111。
以下是所有观察的摘要:
1)我们在我们的板上闪烁我们的固件,观察到在2小时内断开,有时也在15分钟内。
我们的固件是ble_all_in_one+范围扩展驱动程序+一些关于更改的产品。
2) 然后为了发现断开的问题,我们将ble_all_in_firware二进制文件闪存到DA14586 EVM板中,并且在10小时内没有观察到断开。
3)然后,我们将BLE_ALL_IN_ONE Fireware二进制闪烁到我们的电路板中,并观察到相同的结果,即未观察到10小时的断开连接。
4)然后我们假设我们的固件中存在一些问题,因为我们没有观察到与我们的电路板的BLE_ALL_IN_ONE代码断开连接。
5) 然后,我们从固件代码中删除了Range extender驱动程序支持,即我们的固件代码将是ble_all_in_one+一些关于更改的产品。
在这种情况下,我们也没有观察到移动电话断开超过9小时。
因此,基于此实验,我们得出的结论是,范围扩展器驱动程序存在一些问题。
这个问题的根本原因是什么?
与范围扩展器芯片断开连接的问题是否为已知问题?
有什么解决办法吗?
FYI,移动总是在我们进行测试的PCB旁边。如果需要,我们可以共享代码。
感谢和问候,
卡兰
嗨,支持团队,
你能告诉我最新情况吗?这对我们来说是个阻碍问题。
问候,卡兰
你好,karanshah28,
请检查一下在断开后代码是否在运行,或者在某个地方卡住了?例如,断开连接后,应用程序在做什么?断开连接后,设备是否重新开始发布?你能在不复位板的情况下在空气中检测到它吗?您是否可以使用BLE嗅探器来检查通过空气传输的数据包?
哪个是断开原因代码?你可以在disconnect事件回调函数(user_app_on_disconnect())中打印出来,因为它已经在文章中提到了。
我又看了一遍你的帖子,发现断开原因是0x13。你能确认一下吗?
“断开原因在断开回调中为0x13的时间。”
0x13(co_error_remote_user_term_con)错误代码,命名远程用户终止连接,并指示远程设备上的用户终止了连接。你有自定义移动应用程序吗?
“我们在主板上闪存了固件,并在2小时内观察到断开,有时也在15分钟内。我们的固件是ble_all_in_one+范围扩展驱动程序+一些关于更改的产品。”
你有范围扩展器参考设计来尝试复制这个问题吗?你对ble_all_in_one做了任何修改吗?
“然后找到断开的问题,我们将BLE_ALL_IN_ONE FIRICWARE二进制闪存到DA14586 EVM板中,未观察到10小时的断开连接。“
你能把黑板弄清楚吗?你是指Pro DK还是585射程扩展器?
然后,我们将ble_all_in_one firware二进制文件闪存到我们的板中,并观察到相同的结果,即10小时内未观察到断开连接。
与下面相同的结果?断开连接没有发生。?还有,有没有SkY66111?
“然后我们从固件代码中删除了Range扩展器驱动支持,也就是说我们的固件代码将是ble_all_in_one +一些产品相关的更改。
在这种情况下,我们也没有观察到移动电话断开超过9小时。“
关于你提到的那个司机,你能解释一下吗?
最好是创建一个新的论坛帖子,以便最好地跟踪断开的问题,因为最初的帖子与连接当前消费有关。但这取决于你。
谢谢,PM_DIALOG.