如何用ble定时器醒来的深睡眠编程

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
12个职位/0个新职位
最后一篇文章
徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
如何用ble定时器醒来的深睡眠编程

基于SDK 5.0.3,使DA14580与BLE定时器醒来延伸睡眠,现在对我来说没问题。
但我必须让DA14580进入深度睡眠,让计时器苏醒。当然固件被烧入OTP。

基于项目的延伸睡眠与BLE定时器醒来,我已经将其改为深入睡眠,然后是文档“training_04_sleep_modes_current_measurement_v1.0”。
然后烧成OTP。我发现DA14580不能从沉睡中醒来。

你能给我一个深度睡眠的演示吗(不深度睡眠(按键唤醒)

谢谢你

设备:
MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐贵忠您好,

徐贵忠您好,

使用ble\ U app\ U睡眠模式,请检查以下更改,以便在深度睡眠模式下运行并通过计时器唤醒:

  • 在user_app_add_undirect_complete函数中,替换使用计时器设置的中断初始化。
    • app\u sleep\u timer\u used=app\u easy\u timer(1000,user\u app\u adv\u start);
  • 计时器应位于保留内存设置中,如下所示:
    • timer_hnd app_sleep_timer_used __attribute __((部分(“Retent_mem_area0”),Zero_Init));// @retention内存
  • unefine cfg_development_debug,以便在深睡眠时为580切换Sysram。
  • 在OTP上烧录你的申请。
  • 将OTP标题刻录到设置为“是”的应用程序标志

经过以上你应该是好去。

谢谢mt_dialog.

徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
嗨mt_dialog.

嗨mt_dialog.

感谢您的反馈意见。

My software is base on project ble_app_barebone of SDK 5.0.3, using RCX.
我发现它在“user\u app\u adv\u start”函数中创建了一个计时器。
这个计时器已经在保留内存中定义了。
没关系,对吗?

我的问题是:
在我的退出软件中,它可以深入睡眠(当前可以在400na中显示800na)。
它也可以在BLE定时器(例如,1秒)后醒来(通过示波器监视电流)。
但是,在醒来之后,它可以成功地继续运行。没有广告,再也没有睡觉了。
保持更高的电流,比如说,在万用表中为600瓦。
当然,如果一切确认,我将再次燃烧到测试。
您是否可以确认我是否必须将软件移植到5.0.3的SDK 5.0.4?

void user\u app\u adv\u start(无效)
{
//安排下一次广告数据更新
app_add_data_update_timer_used = app_easy_timer(app_add_data_update_to,avd_data_update_timer_cb);
......
}
void user_app_add_undirect_complete(uint8_t状态)
{
//如果广告被取消,则更新广告数据并再次启动广告
如果(状态==间隙\u错误\u取消)
{
用户_app_adv_start();
}
}

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐贵忠您好,

徐贵忠您好,

如果设备已成功进入睡眠模式一次(您在万用表中看到大约800na),然后您看到在下一次唤醒中,功耗约为600A,这意味着设备重置,所以我想580进入一个nmi_handler或硬盘处理程序。我不认为这是与您使用的SDK相关的东西,您必须检查设备最终的位置以及重置的原因(检查是否可以在深入睡眠下的开发模式下复制,您不会看到所需的自Sysram保持开启以来的功耗,但如果您可以在开发模式下复制,您可以跟踪更容易的原因导致问题)。从您粘贴的代码中,我没有看到任何错误,尽管我无法看到设备在永久睡眠中的位置,Adv_data_update_timer_cb()将取消广告和user_app_add_undirect_complete()将在它重新启动之后触发免疫广告。

谢谢mt_dialog.

徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
嗨mt_dialog,

嗨mt_dialog,

我已经测试了深度睡眠与发展,一切都运行良好。
我在函数中添加一些测试端口“adv_data_update_timer_cb()”,“user_app_adv_start()”和“user_app_adv_undirect_complete()”。它在开发模式下运行正常。

将其刻录到OTP后,使用检查测试端口运行,
确认深度睡眠后无法从OTP复制固件。
could you give me some clue ?
在软件中,
#定义CFG\u LP\u CLK LP\u CLK\u RCX20
在OTP标题中,影响什么是“0x47F70包装”?

谢谢你

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐桂红你好,

徐桂红你好,

您是否在OTP头中将应用程序标志设置为“Yes”,以便主引导加载程序知道OTP中有fw?

您所拥有的#define是定义您的设备要使用的低功耗时钟,如果您在降压配置中,则RCX20振荡器是一个有效的选项,您可以使用它,您所引用的字段(包使用)已亮起并识别当前580的包装类型。

谢谢mt_dialog.

徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
嗨mt_dialog,

嗨mt_dialog,

当然,我将应用程序标志设置为OTP标题中的“是”。
什么都可以,除了深度睡眠醒来。

我已经尝试过任何方法来做。但失败了。
你能给我一个演示项目与BLE定时器唤醒深度睡眠(而不是按钮唤醒)?
然后我把它烧成了OTP进行测试。

谢谢你

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐贵忠您好,

徐贵忠您好,

附加了一个带有计时器的app_ble_睡眠模式的修改版本以及OTP的报头,该设备播发10秒,再休眠10秒,然后通过内核计时器唤醒。

谢谢mt_dialog.

附件:
徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
嗨mt_dialog,

嗨mt_dialog,

谢谢你的演示。

我已经烧成OTP。我t works.

我把我的软件和你的演示作了比较。下一个是不同的。
Could you show me if they are correct?
(
再次,
1我的软件可以工作在OTP延长睡眠模式。
2使用深度睡眠模式“define CFG\u DEVELOPMENT\u debug”在系统RAM调试模式下工作
3.在OTP版本中,它可以进入深睡眠,在BLE定时器之后,它可以触摸唤醒动作(醒来后可以捕获港口初始)。
但可以继续跑步。
)

1文件“user\u modules\u config.h”不同
#define consuldure_dlg_gap(0)
#define consuldure_dlg_timer(0)
#定义排除\u DLG \u MSG(1)
#define consuldure_dlg_sec(1)
#define consuldure_dlg_diss(1)
#define consuldure_dlg_proxr(1)
#定义排除低音(1)
#define consuld_dlg_findl(1)
#定义排除\u DLG \u FINDT(1)
#define consuld_dlg_spotar(1)
#定义排除客户(1)
#定义排除客户2(1)

2.系统启动睡眠延迟的设置不同
我在函数mnf_data_init()中称为ARCH_STARTUP_SLEEP_DELAY_SET(0)。
(从范围的演示的波形基础上,电源开启和第一广告之间的电源开始时间约为130ms,
但深度睡眠时间约为2.11秒。所以我需要将其短到0延迟)

三。广告类型不同。
我have changed undirected advertise to non connectable advertise.
说,

演示:
cmd=app_easy_gap_undirected_advertise_get_active();
......
app_easy_gap_undircated_advertise_start();

我的软件:
cmd = app_easy_gap_non_connectable_advertise_get_active();
....
app_easy_gap_non_connectable_advertise_start();

4.文件中的文件“da1458x_config_advanced.h”。
#从OTP定义CFG\u BOOT\u
我添加一个函数来读取函数mnf_data_init()中的OTP标头的数据。

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐贵忠您好,

徐贵忠您好,

我所看到的可能影响唤醒过程的是,当设备启动时,您已经更改了默认的睡眠时间,您是否在板上使用了XTAL?您可以看到SDK中的默认值2秒是为了给XTAL32留出一些时间来解决问题,这样设备就不会进入睡眠状态。如果设备没有正确设置,那么低功耗时钟可能会在系统上引起不同类型的问题。还要注意,这个时间对于XTAL32是强制性的,而不是在使用内部RCX时。除此之外,我没有看到任何可能导致问题的东西,不同模块的排除取决于您的项目,如果您不使用消息API的配置文件或安全性,那么您可以排除这些模块并用自定义功能替换它们,关于不同类型的广告这不会影响您,来自OTP的CFG\u BOOT\u只从sysram读取OTP值,而不是直接从OTP读取。

谢谢mt_dialog.

徐金忠
离线
最后一次见到:2 years 11 months ago
已加入:2017-06-30 02:46
非常感谢。

非常感谢。

我正在使用内部RCX(#定义CFG\u LP\u CLK LP\u CLK\u RCX20)
Can I set the system startup sleep delay to 0 ?
如果没有,什么是最小值?

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
徐贵忠您好,

徐贵忠您好,

由于您使用的是RCX,那么无需等待两秒钟,以便XTAL32解决,因为您没有。在你上一篇文章中,你提到了我无法理解的东西,你究竟是什么意思“在醒来之后无法在初始追捕港”?

谢谢mt_dialog.