跳过主要内容

使用BLE定时器从BLE深度睡眠中唤醒

DA14585和DA14586

5个月前

发布的Jin-Hoon金180点 5回复
0的问题

嗨,对话框中,

我正在尝试使BLE睡眠模式在一定的时间内,以减少功耗。

根据所附DA14585 Datasheet I,在第136和137页有BLE程序休眠模式和唤醒的指令。

根据我的理解,当我通过设置BLE_ENBPRESET_REG寄存器来设置BLE_WAKEUP_LP_IRQ生成的时间,使用BLE_DEEPSLWKUP_REG编程BLE的睡眠时间,最后通过设置BLE_DEEPSLCNTL_REG[DEEP_SLEEP_ON]寄存器来设置BLE的睡眠模式。

基于此,我可以让设备进入BLE睡眠模式,停止广告。然而,即使在睡眠时间过后,BLE也不会醒来。

我以为在休眠时间到期后,系统会自动设置BLE_WAKEUP_LP_IRQ中断来唤醒设备。难道我理解错了?

你能告诉我在经过编程的睡眠时间后我如何从BLE睡眠模式中醒来吗?

谢谢你!

Jin-Hoon

附件 大小
da14585_datasheet_3v3.pdf 5.06 MB

5个月前

PM_Dialog

嗨Jin-Hoon金,

谢谢你的在线问题。由于您使用的是深度睡眠模式,我建议您使用我们的SDK api。要使设备进入深度睡眠模式,应该使用arch_set_deep_sleep() API。

DA14585只能通过唤醒控制器从POR引脚或GPIO从深度睡眠中唤醒。

http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode/deepsleep_config.html

请参阅下面的教程。您可以使用SDK中的pxp_reporter示例并测试深度睡眠。

您应该在user_proxr.h中定义CFG_APP_GOTO_DEEP_SLEEP宏。一旦设备停止发布,app_advertise_complete()将被触发,它调用put_system_into_deep_sleep()。

put_system_into_deep_sleep()将唤醒控制器配置为唤醒源,并使系统进入深度睡眠模式。如果定义了CFG_DEEP_SLEEP_WAKEUP_POR, DA14585就可以从POR中唤醒。

谢谢,PM_Dialog

5个月前

Jin-Hoon金 180点

嗨,对话框中,

谢谢你的回答和评论。

我之所以使用在数据表中写入的寄存器,是因为我想在一定时间后使用计时器从BLE睡眠模式中唤醒。

当我定义CFG_DEEP_SLEEP_WAKEUP_GPIO或CFG_DEEP_SLEEP_WAKEUP_POR来唤醒设备时,我想我不能使用定时器。这是对的吗?

如果可以,您能告诉我如何使用计时器将DA14585从深度睡眠模式唤醒吗?

谢谢你!

Jin-Hoon

5个月前

PM_Dialog

嗨Jin-Hoon金,

正如我在之前的回复中提到的,根据建议的教程,然后DA14585被配置为深度睡眠模式,它只能通过WAKEUP控制器中的GPIO触发器或POR唤醒。

建议使用SDK api而不是直接使用寄存器。

谢谢,PM_Dialog

5个月前

Jin-Hoon金 180点

嗨,对话框中,

谢谢您的回复。我会尝试GPIO触发器来唤醒设备。

顺便说一下,我想再问你一个问题。

当我根据以下说明使用proxy_reporter教程时,我无法从深度睡眠模式唤醒设备。

当我使用power on reset (POR)设置,并按下主板上的SW1/ reset按钮时,系统仍然没有唤醒。

对于从深度睡眠中醒来的软件或硬件,还有什么进一步的设置吗?

我正在使用Pro Development Kit。

谢谢你!

Jin-Hoon

5个月前

PM_Dialog

嗨Jin-Hoon,

如果您正在使用Pro-DK,请尝试从SW3唤醒设备。

您所需要做的只是遵循教程,如果您检查源代码,您将看到P1_1被配置为唤醒PIN。

根据用户指南,P1_1已经映射到SW3上。

//www.wsdof.com/sites/default/files/2021-04/UM-B-1..。

谢谢,PM_Dialog