开始时延长睡眠时间

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
moguilevski
离线
最后一次露面:2周2天前
加入:2019-04-30需要
开始时延长睡眠时间

亲爱的DS的团队,

我有两个问题要问你:

1).是否有可能在处理器初始化后直接继续扩展睡眠模式,而不是发布(发布可以稍后开始,例如由外部中断发起)?

同时,我用最基本的例子作为基础。我改变了.default_operation_adv.default_advertise_operation,默认睡眠模式为不带OTP的扩展睡眠,默认处理程序配置为“超时场景”。因此,广告在规定的时间间隔后停止user_app_adv_undirect_complete ()呼叫arch_ble_ext_wakeup_on ().我期待在这一点上延长睡眠模式,然而,电流保持在0.4毫安左右。这对于延长睡眠模式来说肯定是太多了。什么可以阻止处理器切换到睡眠模式?有什么我没有考虑到的关键点吗?

谢谢你,并致以最良好的问候

设备:
PM_DIALOG.
离线
最后一次露面:2周3天前
工作人员
加入:2018-02-08 11:03
嗨moguilevski,

嗨moguilevski,

谢谢你的提问。

  1. 是的,这是可能的。你可以在睡眠模式下启动系统而不是开始广告。默认情况下,ble_app_barebone示例和SDK的所有其他BLE示例开始发布广告。请检查。default_operation_adv callabk函数。在这种情况下,应该在app_on_init()函数中将这个回调设置为NULL,并将设备设置为扩展休眠模式。通过这种方式,设备将在启动时以扩展睡眠模式启动。记住,如果你想开始广告,你应该唤醒设备。请检查SDK的ble_app_sleepmode示例。你可以通过BLE定时器同步唤醒它,它可以被编程唤醒系统,或者通过外部中断(输入)异步唤醒它。所有处于休眠模式的外设域都已关机。 In addition, the device will enter the sleep mode between advertising or connection intervals. Please let me know if you need further steps on how to implement it.
  2. 你能分享更多关于测量睡眠电流的步骤的信息吗?你是从Flash还是SysRAM启动的?另外,是否附加了调试器?如果是,这将防止系统进入睡眠模式。我建议先检查一下教程4:睡眠模式电流测量从我们的支持网站并按照测量睡眠模式电流的步骤/

谢谢,PM_DIALOG.

moguilevski
离线
最后一次露面:2周2天前
加入:2019-04-30需要
你好PM_Dialog,

你好PM_Dialog,

对于当前测量,我使用SmartSnippets电源分布器与DK Pro和DK Basic的万用表。在后一种情况下,我使用3V电池并断开电路板与计算机的连接进行测量。两种情况下闪烁通过Keil的调试会话发生。

在实施第1点建议的变更后,在开始时没有任何广告。但是,电流比在2点2(〜0.4mA)中相同。

附加调试器是什么意思?另外,可以定义/取消定义CFG_DEVELOPMENT_DEBUG块的睡眠模式?

谢谢你!

PM_DIALOG.
离线
最后一次露面:2周3天前
工作人员
加入:2018-02-08 11:03
嗨moguilevski,

嗨moguilevski,

你能分享一下你是如何设置睡眠模式的吗?你在app_on_init()中使用arch_set_sleep_mode (ARCH_EXT_SLEEP_ON)吗?当使用Keil IDE时,固件被下载到System-RAM中,DA14585从那里启动。我假设您正在使用“启动/停止调试会话按钮”来下载固件。我你按它一次,然后按“运行”固件运行与调试器附加。这可以防止系统进入睡眠模式。为此,您应该按两次“启动/停止调试会话按钮”。不应该取消定义CFG_DEVELOPMENT_DEBUG宏。你是否遵循了我在之前的评论中建议的教程?

谢谢,PM_DIALOG.

moguilevski
离线
最后一次露面:2周2天前
加入:2019-04-30需要
亲爱的PM_Dialog,

亲爱的PM_Dialog,

我没有在app_on_init()中使用arch_set_sleep_mode(ARCH_EXT_SLEEP_ON),因为假设默认设置:

static const sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;

在user_config.h中就足够了。但是它可能没有被考虑在内(如果我错了,请纠正我),因为主循环回调的相应回调函数不是默认的。后添加arch_set_sleep_mode函数的app_on_init(),我测量2.9µA电流。我想,这也是第2点的解。

.app_on_init现在是:

void user_app_init(void){arch_set_sleep_mode(arch_ext_sleep_on);ARCH_BLE_EXT_WAKEUP_ON();}

非常感谢!

最诚挚的问候

PM_DIALOG.
离线
最后一次露面:2周3天前
工作人员
加入:2018-02-08 11:03
嗨moguilevski,

嗨moguilevski,

很高兴你能在延长睡眠模式下测量到正确的电流。这将使设备进入永久休眠模式。如果你发现上面的任何评论是有用的,请为其他论坛用户标记为“接受”。如果您有任何其他问题,请创建一个新的论坛线程。

谢谢,PM_DIALOG.