开始睡眠时间延长

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

亲爱的DS的团队,

我有两个问题要问你:

1).是否有可能在处理器初始化后直接进行延长睡眠模式,而不是广告(广告可以稍后启动,例如由外部中断启动)?

2).同样,我使用了基本的例子作为基础。我改变了.default_operation_adv.default_advertise_operation,将默认睡眠模式设置为没有OTP的扩展睡眠,并将默认处理程序配置为“超时场景”。因此,广告在定义的时间间隔和之后停止user_app_adv_undirect_complete ()呼叫arch_ble_ext_wakeup_on ().我希望在这一点上延长睡眠模式,然而,当前保持在0.4 mA左右。这对于延长睡眠模式来说是非常重要的。什么可以阻止处理器切换到睡眠模式?还有什么关键点我没有考虑到吗?

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

设备:
PM_DIALOG.
离线
最后一次露面:13小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨moguilevski,

嗨moguilevski,

谢谢你的问题。

  1. 是的,这是可能的。您可以在睡眠模式下启动系统,而不是开始发布广告。默认情况下,ble_app_barebone示例和SDK的其他所有BLE示例都开始发布。请检查.default_operation_adv callabk函数。在这种情况下,应该将这个回调设置为NULL,并在app_on_init()函数中将设备设置为扩展睡眠模式。通过这种方式,设备将在启动时以延长睡眠模式启动。记住,如果你想开始做广告,你应该唤醒设备。请查看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还是syram启动的?此外,是否附加调试器?如果是,这将防止系统进入睡眠模式。我建议先检查一下教程4:睡眠模式电流测量从我们的支持网站并按照测量睡眠模式电流的步骤/

谢谢,PM_DIALOG.

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

你好PM_Dialog,

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

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

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

谢谢你!

PM_DIALOG.
离线
最后一次露面:13小时53分钟前
工作人员
加入: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
离线
最后一次露面:1周3天前
加入:2019-04-30需要
亲爱的PM_Dialog,

亲爱的PM_Dialog,

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

静态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.
离线
最后一次露面:13小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨moguilevski,

嗨moguilevski,

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

谢谢,PM_DIALOG.