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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
12个帖子/ 0新
最后一篇
徐金忠
离线
最后一次露面:3年11小时前
加入: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可以在BLE定时器后从深睡眠中醒来。

你能给我一个演示让我醒来深深的睡眠吗?(不要用钥匙扣醒来的深睡眠)

谢谢

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐开忠,

嗨徐开忠,

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

  • 在user_app_add_undirect_complete函数中,替换使用计时器设置的中断初始化。
    • app_sleep_timer_used = app_easy_timer(1000,user_app_adv_start);
  • 计时器应在保留的内存设置中,如下所示:
    • timer_hnd app_sleep_timer_used __attribute __((部分(“Retent_mem_area0”),Zero_Init));// @retention内存
  • unefine cfg_development_debug,以便在深睡眠时为580切换Sysram。
  • 在OTP中刻录您的应用程序。
  • 将OTP标题刻录到设置为“是”的应用程序标志

在上面之后,你应该好好去。

谢谢mt_dialog.

徐金忠
离线
最后一次露面:3年11小时前
加入: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_app_adv_start”函数中创建了一个计时器。
此计时器已在保留存储器中定义。
没关系,对吗?

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

void user_app_adv_start(void)
{
//安排下一个广告数据更新
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状态)
{
//如果广告被取消,则更新广告数据并再次启动广告
if(status == gap_err_canceled)
{
user_app_adv_start();
}
}

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐开忠,

嗨徐开忠,

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

谢谢mt_dialog.

徐金忠
离线
最后一次露面:3年11小时前
加入: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 ?
在软件中,
#define cfg_lp_clk lp_clk_rcx20.
在OTP标题中,影响什么是“0x47F70包装”?

谢谢

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐努利,

嗨徐努利,

您是否将应用程序标志设置为OTP标题中的“是”,以便首次引导程序要知道OTP中有FW?

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

谢谢mt_dialog.

徐金忠
离线
最后一次露面:3年11小时前
加入:2017-06-30 02:46
嗨mt_dialog,

嗨mt_dialog,

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

我已经尝试过任何方法来做。但失败了。
你能给我发一位演示项目,带有醒来的睡眠(不是按钮醒来)吗?
然后我把它烧成了OTP进行测试。

谢谢

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐开忠,

嗨徐开忠,

附加了App_ble_sleepMode的修改版本,使用计时器以及OTP的标题,设备通告10秒钟并睡眠额外10秒钟并通过内核定时器唤醒。

谢谢mt_dialog.

附件:
徐金忠
离线
最后一次露面:3年11小时前
加入:2017-06-30 02:46
嗨mt_dialog,

嗨mt_dialog,

谢谢你的演示。

I have burned it into OTP. It works.

我将我的软件与您的演示进行了比较。接下来是不同的。
Could you show me if they are correct?

再次,
1.我的软件可以使用延长睡眠模式在OTP中工作。
2.使用深度睡眠模式“#define cfg_development_debug”中的系统RAM调试模式工作。
3.在OTP版本中,它可以进入深睡眠,在BLE定时器之后,它可以触摸唤醒动作(醒来后可以捕获港口初始)。
但可以继续跑步。

1.文件“user_modules_config.h”中不同
#define consuldure_dlg_gap(0)
#定义EXCLUDE_DLG_TIMER (0)
#define consuld_dlg_msg(1)
#define consuldure_dlg_sec(1)
#define consuldure_dlg_diss(1)
#define consuldure_dlg_proxr(1)
#define consuldure_dlg_bass(1)
#define consuld_dlg_findl(1)
#define consuld_dlg_findt(1)
#define consuld_dlg_spotar(1)
#define consuld_dlg_custs1(1)
#define consuld_dlg_custs2(1)

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

3.不同的广告类型。
I 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”。
#define cfg_boot_from_otp.
我添加一个函数来读取函数mnf_data_init()中的OTP标头的数据。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐开忠,

嗨徐开忠,

我可以看到的可能影响醒来的程序是你在设备启动时改变了默认睡眠时间的事实,您在董事会上使用XTAL吗?你看到2秒是SDK中的默认值是有没有能够让XTAL32的某个时间才能定居,所以设备不会睡觉。如果设备未正确解决,则低功耗时钟可能会导致系统上的不同类型。另请注意,此时间对于XTAL32是必需的,而不是使用内部RCX时。除了我没有看到任何可能造成问题的任何东西,不同模块的排除取决于您的项目,如果您不使用邮件API的配置文件或安全性,那么您可以将这些模块排除并用自定义功能替换为不同类型的模块广告这不会影响您,并且CFG_Boot_From_OTP将只读取Sysram的OTP值,而不是直接从OTP读取。

谢谢mt_dialog.

徐金忠
离线
最后一次露面:3年11小时前
加入:2017-06-30 02:46
谢谢你。

谢谢你。

我正在使用内部rcx。(#define cfg_lp_clk lp_clk_rcx20)
Can I set the system startup sleep delay to 0 ?
如果没有,什么是最小值?

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨徐开忠,

嗨徐开忠,

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

谢谢mt_dialog.