如果连接移动设备,DA14583不会进入深度睡眠模式

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
10个帖子/ 0个新帖子
最后发表
karanshah28
离线
最后看到:1年6个月前
加入:2018-07-14十一10
如果连接移动设备,DA14583不会进入深度睡眠模式

嗨,对话框中,

我们正在开发DA14583上的应用程序。我们正在引用DIALOG_ALL_IN_ONE应用程序。

在这个应用程序中,我们希望实现一个功能:-

如果在30秒内没有写任何自定义特征,

I.断开设备

2进入睡眠模式。

请提供实现这一目标的步骤。

我们尝试在连接上创建一个计时器,在每个写特征和超时调用“app_easy_gap_disconnect”api上修改它。但问题是,这款设备又开始打广告了。

在进一步的调试中,我们发现断开例程“user_app_disconnect”调用了“user_app_adv_start”api。评论"user_app_adv_start" api从"user_app_disconnect",导致持续重启设备。

1.我们需要关于断开连接时发生的情况的完整解释(从远程设备或Da14583启动)

2.为什么要在断开连接后再启动广告?

3.请在dialog_all_in_one应用程序中提供所需的修改,以实现上述功能。

问候,

卡兰

设备:
PM_Dialog
离线
最后看到:1天19小时前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

当DA14580与对端设备连接时,会触发user_app_connection()回调函数。因此,在连接时,您可以设置一个计时器(app_easy_timer()),如果它过期了,将触发一个回调函数以调用app_easy_gap_disconnect(),这是断开连接的适当值。当对等设备写入特征时,您将得到一个CUSTS1_VAL_WRITE_IND消息,该消息将在user_catch_rest_hndl中处理。因此,如果您编写特征值,您将让top cancel计时器执行app_easy_timer_cancel() API。如果特征没有在30秒内写入,如前所述,外围设备将使用app_easy_gap_disconnect() API发送一个GAPC_DISCONNECT消息。断开连接后,user_app_disconnect()将被触发,您将不得不将芯片置于睡眠模式。当设备断开连接时,没有必要重新启动广告,这是根据您的应用程序需求。

谢谢,PM_Dialog

karanshah28
离线
最后看到:1年6个月前
加入:2018-07-14十一10
嗨,对话框中,

嗨,对话框中,

你能建议我们在dialog_all_in_one应用程序的代码更改,这样在断开连接后,广告不会自动启动吗?

当我们在all_in_one_app中尝试时,它会在断开连接后进行广告,当它连接到移动设备时不会进入睡眠模式。

问候,卡兰

PM_Dialog
离线
最后看到:1天19小时前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

正如我在以前的文章中提到的,当DA14580与对等设备断开连接时,将触发user_app_disconnect()。如果检查上述函数的源代码,就会看到执行了user_app_adv_start()。请设置一个断点来澄清它,并在调试模式下运行代码。如果在调用user_app_adv_start()时没有达到断点,请检查哪些值有状态变量。此外,当设备广告时,它将进入深度睡眠模式之间的广告间隔。arch_set_deep_sleep()在user_app_adv_start()中被调用。一般来说,芯片会在广告或连接间隔之间进入睡眠模式。请您澄清这个问题“断开后广告,连接移动设备时不进入睡眠模式”。

谢谢,PM_Dialog

karanshah28
离线
最后看到:1年6个月前
加入:2018-07-14十一10
亲爱的支持团队,

亲爱的支持团队,

您是正确的,我们还检查了在设备断开连接时user_app_disconnect()被触发并启动了广告。
它是按照代码运行的。
广告后,当广告定时器到期时,进入休眠模式。这是按照代码工作的。

我们想要实现的是,
当设备与移动设备断开连接时,不应立即启动广告并进入休眠模式。
因此,我们注释了代码user_app_adv_start()从user_app_disoonnect(),但有了这个变化,系统从某个地方崩溃了。

因此,您能否建议适当地改变user_app_disconnect()函数,使广告不会启动,设备在断开连接后立即进入深度睡眠模式?

提前谢谢,
问候,
卡兰

PM_Dialog
离线
最后看到:1天19小时前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

为了使设备进入深度睡眠模式,在user_app_disconnect()中,您应该用arch_set_extended_sleep()替换user_app_adv_start()。如果你想在按下按钮时醒来,你也应该启用按钮。如果你发现任何有用的答案,请标记为“接受”。

谢谢,PM_Dialog

karanshah28
离线
最后看到:1年6个月前
加入:2018-07-14十一10
嗨,对话框的团队,

嗨,对话框的团队,

我们尝试了您要求的更改,在user_app_disconnect()中使用arch_set_extended_sleep()替换user_app_adv_start()。我们还启用了按下按钮的唤醒功能。我们的系统开始崩溃。

我们在ble_all_i_one_app中尝试了同样的方法,它似乎进入了睡眠模式,但按下按钮什么也没做。顺便说一下,我们在ble_all_in_one_app中添加了按钮按下逻辑,以便在睡眠后醒来。

你能给我们提供ble_all_in_one_app中的样品,让它在按钮按下时工作吗?或者建议我们可能缺少什么?

感谢的帮助。

谢谢,卡兰

PM_Dialog
离线
最后看到:1天19小时前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

你能不能在调试模式下运行你的代码并弄清楚它是在哪里崩溃的?是由于WDOG过期或NMI或你得到任何断言吗?ble_app_all_在一个示例的SDK没有任何修改,它工作正常吗?

谢谢,PM_Dialog

karanshah28
离线
最后看到:1年6个月前
加入:2018-07-14十一10
嗨,对话框的团队,

嗨,对话框的团队,

我们目前无法调试代码,因为我们已经达到Keil代码的评估限制,即32KB。

然而,没有任何修改的ble_app_all_in_one示例SDK将单板设置为睡眠模式。但它不会再按下按钮做广告。

我们想在下一个按钮按下广告。所以我们修改了代码,正如我在前一个线程解释。但它什么也没做。

谢谢你,卡兰

PM_Dialog
离线
最后看到:1天19小时前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

  • 我们目前无法调试代码,因为我们已经达到Keil代码的评估限制,即32KB。

如果您希望Keil中的代码超过32KB,您应该购买Keil IDE的完整版本

  • 然而,没有任何修改的ble_app_all_in_one示例SDK将单板设置为睡眠模式。

既然你没有Keil的完整版本,你是如何构建你的项目的?有了Keil的有限版本,你能正确地构建“All in one”项目吗?

  • 但它不会再按下按钮做广告。

你怎么知道设备进入睡眠模式?功耗是多少?设备开始广告,什么时候停止广告进入睡眠模式?请检查您是否已经烧毁SPI Flash,所以设备从那里启动并进入睡眠模式?

  • 我们想在下一个按钮按下广告。所以我们修改了代码,正如我在前一个线程解释。但它什么也没做。

ble_app_sleepmode实现了这个功能,所以您应该按照我在本例中证明的步骤来操作。

谢谢,PM_Dialog