Hi.
1. i found that when i close all the peripherals, there still has 0.6~0.7mA current about the Dialog. Is it possible that it's not in sleep mode? if not in sleep mode, how should i enter the sleep mode when the dialog starts?
2. how should i know whether or not it's in sleep mode?
3. if in sleep mode, what should i do to wake it up by press the key?
Best regards,

i am making an application, which should enter into sleep mode when power on, and when interrupt comes, the dialog wake up and deal with that interrupt then sleep again.
any ideas will be appreciate
Hello Yachao,
we have created an application note describing how to enter and exit sleep mode (typically via 2 main methods below).
1. Synchronously, via the BLE timer which can be programmed to wake up the system in order to serve a BLE event and
2. Asynchronously, via the Wakeup Timer and Quadrature Decoder if triggered by an external event (input).
the apps note can be downloaded on
http://support.dialog-semiconductor.com/um-b-006-user-manual-sleep-mode-configuration
It includes some examples and describes the software architecture to implement deep sleep and extended sleep configurations.
BR JE_DIalog
thanks for your reply.
我检查了pdf文件,然后运行演示代码reporter_fh, version 3.0.2.0, on DA14580 board, and measured the voltage at buffered test-points TP1 and TP2, it's voltage is 168mV, according to chapter 3.2.2 of AN-B-015_DA14580_Current_Measurement.pdf, the current is 1.68mA. if i am right, the dialog board is not in sleep mode, since Deep Sleep and Extended Sleep currents are in the range of 500nA till
2uA, i tried to use app_set_deep_sleep, app_set_extended_sleep and other api, unfortunately not works, can you give some instructions about how to modify the demo code to enter into sleep mode? or give other demo to make the DA14580 sleep?
Best regards,
Hello Yachao,
using the method of just measuring across TP1 and TP2 there will be offset anyhow , of around equivalent of few hundred uA (note his is just an offset of the motherrboard measuremnet since its not designed to measure down to uA level) on top of any averaged advertising/connection activity you see To measure actual deep sleep or extended sleep current, you do need to be using method as in section 4 of that document - which takes high accuracy mutlimeter.
The proximity reporter app (as it comes) needs to be left for 3-4 minutes before it will enter extended sleep mode. Before that time, it will be advertising , and between advertising intervals it will be dropping into extended sleep - but the issue you might be seeing is the average measurement (of advertising on 3 channels).
6.3 Advertise
–sleep modes.
SmartTag advertises in undirected mode with different intervals for specific advertising phases:
200 ms interval phase - For the first minute after start-up or disconnection.
1000 ms interval phase - For the next three minutes after the termination of 200ms phase.
Deep sleep phase: SmartTag stops advertising and enters into continuous deep sleep mode after the
four minutes of advertising.
To verify if the device is dropping into extended sleep mode , i would recommend using the smart snippets power profiler to view the proximity app : here you should be able to view the device moving to deep sleep after the phases mentioned above. See figure 5 in below document for the typical view . If you see the current dropping to zero (right hand side of fig6) then you know its moving into extended sleep mode.
http://support.dialog-seminile.com/system/files/um-b-018_smart_tag_application_1.0.pdf.
BR JE_Dialog
Hello Dialog Supporters :
When the end of interval sleep in slave role device, I want to keep RF power off for some connetion event so that can save power for certain periods and want to still keep the link with the master out of the periods. Who can teel me if it is possible and how can .
I have tried as following:
1. fh_proxr_sdk is the reference example.
2. enable external wakeup with a GPIO pin
3. enable extended mode sleep after the link has established.
4. wakeup from sleeping using GPIO that initialized by step 2.
Result:
Step 1 to step 3 functioned.
After step 4, the wakeup seems succed, but it never enter sleep again and a link loss occured after supervision timeout. It seems hungup. What was I wrong?
Hello Z.G. Meng,
I will have one the support team contact you.
BR JE_Dialog
Dear BR JE_Dialog,
Thank your.
I am look forward the solution from you.
Best Regards.
Z.G.Meng
Hi guys,
I guess you guys are using extended sleep mode.
There are a few things you should pay attention to.
In SDK 3.0.6:
1.Debugging in extended sleep mode
in da14580_config.h,
#define CFG_EXT_SLEEP
#define DEVELOPMENT_DEBUG 1
#define CFG_CALIBRATED_AT_FAB
2. Production in extended sleep mode
#define CFG_EXT_SLEEP
#define DEVELOPMENT_DEBUG 0
#define APP_BOOT_FROM_OTP // if the application is stored in OTP define it. Otherwise, e.g. in systemRAM, in Flash, or in EEPROM, you should undef APP_BOOT_FROM_OTP
#define CFG_CALIBRATED_AT_FAB
回到你的问题,
In app_adv_timer_handler (this handler is called when 3 minutes timeout happens), app_set_deep_sleep(); is called.
If in your applicatoin,#define DEVELOPMENT_DEBUG 0, then the chip is in deep sleep mode. If you do not burn the OTP and configure the chip into deep sleep mode, your chip will wake up but do nothting.
if in your application, #define DEVELOPMENT_DEBUG 1, then deep sleep mode simulation is enabled. your chip will wake up .and perform as if in extended sleep mode
In short, if you are using deep sleep mode, change app_set_deep_sleep() toapp_set_extended_sleep() inapp_adv_timer_handler。
Dear Dialog Supporters:
I don't know above comment whether for me, but it seems not my theme.
A simple explain as below for my theme:
当睡眠模式集,祝福链接后问好blished, corresponding sleep mode should enter in the connection interval duration periodically. When the sleep be waked up, I want to keep RF power be off and initiate a another sleep duration to skip some master's polling and slave's sending for some certain connection event point. After the another sleep be waked, the BLE link should be kept.
My device's role is slave.
It is possible? and how can if possible?
Best Regards,
You can use slave latency. That will help you to skip a few connection events. The master will keep receiving. But the slave device will skip a number of connection events, as you specified in the slave latency.
Slave latency is a connection parameter, which is set when you establish a connection, and later on you can update this parameter by parameter update request.
Dear WT_Dialog,
Thanks for your kind advise.
I have tried to do that with slave latency.
Using slave latency do not meet my requirement.
All of the connection events are not for the option to be skipped, the signal to invoke the skipping duration is from out of BLE controller and asynchronized with BLE link, it require to skip a anchor connection event some time so that cause to hungup in Dialog chip now.
Best Regards.
Hi MT_dialog:
I tried to define below in da1458x_config_basic.h in order to select deep sleep mode. Unfortunately, the power consumption is always ~500uA. What else I should do?
#undef CFG_EXT_SLEEP
#define CFG_DEEP_SLEEP
I tried to follow up UM-B-006 DA14580 Sleep mode configuration v1.1 document, frankly speaking, this document is really hard to capture what is truly needed to enable sleep mode, should I modify main loop function? what else I should do to enable sleep mode beside the modification in da1458x_config_basic.h?
My current mail loop is just reuse sdk one, as below lines. Can you advice what else I should modify to enable 14580 sleep mode? Either deep sleep or extended sleep is ok for me.
int main_func(void)
{
sleep_mode_t sleep_mode;
system_init();
while(1)
{
do {
schedule_while_ble_on();
}
while ((app_asynch_proc())); //grant control to the application, try to go to power down
if (((!BLE_APP_PRESENT) && (check_gtl_state())) || (BLE_APP_PRESENT))
{
GLOBAL_INT_STOP();
app_asynch_sleep_proc();
sleep_mode = rwip_power_down();
if ((sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep))
{
arch_goto_sleep(sleep_mode);
WFI();
ARCH_RESUME_FROM_SLEEP();
}
else if (sleep_mode == mode_idle)
{
if (((!BLE_APP_PRESENT) && check_gtl_state()) || (BLE_APP_PRESENT))
{
WFI();
}
}
GLOBAL_INT_START();
}
if (USE_WDOG)
{
wdg_reload(watchdog_default_period);
}
}
}
Hi smdzj007,
Please dont post your question multiple times, check your other post below for a possible answer.
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
Thanks MT_dialog