correct way to put DA14680 to hibernate mode

⚠️
Hi there.. thanks for coming to the forums. Exciting news! we’re now in the process of moving to our new forum platform that will offer better functionality and is contained within the main Dialog website. All posts and accounts have been migrated. We’re now accepting traffic on the new forum only - please POST any new threads at//www.wsdof.com/support. We’ll be fixing bugs / optimising the searching and tagging over the coming days.
4 posts / 0 new
Last post
xiaojie
Offline
Last seen:1 year 7 months ago
加入:2017-08-13 06:56
correct way to put DA14680 to hibernate mode

SDK DA1468x_DA15xxx_SDK_1.0.14.1081.zip

Hello Dialog,

I have a customized board with DA14680 and some sensors. When not in use, I use a button to trigger the wakeup and put board to hibernate mode. However, the MCU wakes itself up after 1 minutes. I have a few questions:

1. what is the correct way to put system to hibernate mode? Is it simple as "pm_set_sleep_mode(pm_mode_hibernation);", then whenever system is in idle (not running any active task), it will go hibernate?

2. In hibernate mode, I assume all freertos task are stopped, including ble_peripheral_task. The only way to wake up the system is using a GPIO interrupt. Am I right?

3. When system is waked up from hibernate, is there any different from initial power up by connecting to power? Is there anything I need to take care in order to let the system run exactly like just being powered up?

4. In my case, what could be the cause that the system wakes it up after 1 minute in hibernate mode?

Thanks.

Device:
PM_Dialog
Offline
Last seen:10 hours 52 min ago
Staff
加入:2018-02-08 11:03
Hi xiaojie,

Hi xiaojie,

You should use the pm_set_sleep_mode(pm_mode_hibernation) in order to put the device into the hibernation. Be aware that hibernation mode is a special mode to be used for shipping the final product to market without draining the battery. This is what is used for shipping and storing the final product and I would not recommend you the hibernation for development or debugging scopes. So, if your product is not for shipping, g I would suggest you to use the sleep mode as extended sleep into the system_init() and the reason is that when the system wakes up from the hibernation, the system resets and runs from the start. This is not a software reset, it’s like a hardware reset, so the system will run the code from the start and the system_init() will be executed again (every time that the 680 wakes up from the hibernation. Could you please clarify that your device goes into hibernation mode?

Thanks, PM_Dialog

xiaojie
Offline
Last seen:1 year 7 months ago
加入:2017-08-13 06:56
Hi PM_Dialog,

Hi PM_Dialog,

Thanks a lot for your promot response.

Your suggestion is to only put the device into hibernation mode for shipping and for normal use just set it to extended sleep mode in system_init() like:

pm_set_wakeup_mode(true); pm_set_sleep_mode(pm_mode_extended_sleep);

In normal operation, if we don't use the device but want to save power, we just turn off all sensors and power supply?

In additional to the normal operation, we do need to ship the product to final customers and we want the device to be in hibernation mode during shipping. However as I mentioned in my original post, I tried many things but the device still wakes itself up after 1 minute. Could you please let me know if there is anything suspicious that I can check? Thanks.

PM_Dialog
Offline
Last seen:10 hours 52 min ago
Staff
加入:2018-02-08 11:03
Hi xiaojie,

Hi xiaojie,

> >在正常操作中,如果我们不使用the device but want to save power, we just turn off all sensors and power supply?

Could you please clarify your question? If you put the DA1468x into extended sleep mode, you will have lower current consumption.

Regarding you second question, could you please let me know how and where in the source code you are trying to put the device into sleep mode? Which SDK example are you using?

Thanks, PM_Dialog