Hi,
We do some modifications based on "DA14580_DialogBeacon_3.40.6" reference designs, For checking the power consumption, first, we stop the advertising, it is work, but, I can read a periodic current waveform at about 10 seconds that means device ever active by itself. All of my created timers, we have not started any timer count for 10 seconds except a 60 seconds one. However, we need to avoid this status happened, how can I stop it, or make it longer?
Device:
Hi yuhua64,
You mean that you 've stop the advertising events but the device wakes up and does something for every 10 secs and the only functionality you ve got is a timer that hits after 60 seconds ? If the BLE doent do anything for a long period of time it wakes up by itself in 10 secs in order to trim the clocks and falls asleep again. Its something that the system requires and i dont think that it can be disabled.
Thanks MT_dialog
Thanks for your reply.
Yes, you got my point.
In the meanwhile, I start a timer and set value 60 seconds after stop_adv_func(), it expired and took 333 seconds. Suppose device kept slower operation frequency in sleep mode. It is OK. we can accept it.
Regarding for your answer " If the BLE doesnt do anything for a long period of time it wakes up by itself in 10 secs in order to trim the clocks and falls asleep again. Its something that the system requires" , I could understand, Could it be set longer if need?
Do you use an XTAL32 or do you use the internal one? If you use the internal one, the timers will not be accurate if the device sleeps for more than about 4 seconds without waking up.
Hi yuhua64,
Try changing the period of waking up by changing the definition MAX_SLEEP_DURATION_EXTERNAL_WAKEUP in arch.c. The bad timing maybe is due to the fact that the system is working with the RC oscillator as Joacimwe stated try using the XTAL32.
Thanks MT_dialog
Hi MT_dialog
#define CFG_EXT_SLEEP
#undef CFG_DEEP_SLEEP
does this happen in both of the above sleep mode?
what are the difference:
/// Sleep Duration Value in periodic wake-up mode
#定义x0320 MAX_SLEEP_DURATION_PERIODIC_WAKEUP 0// 0.5s
/// Sleep Duration Value in external wake-up mode
#定义x3e80 MAX_SLEEP_DURATION_EXTERNAL_WAKEUP 0//10s
and what is the max value I can define?
Thanks,
Anthony
Hi Anthony,
You should not have to change those parameters. If you call app_ble_ext_wakeup_on() just before you stop advertising, the 10 second polling timer will go away.
Hi,
Thanks for your reply!
Another question based on same design sample code: I monitor the initial operation current, it means power up, it took 5 seconds more current, then reduction to normal operation current. May I shorten the time ?
Hi,
1. How can I restart DA14580 via firmware control process ?
From data sheet, the SW_RESET in SYS_CTRL_REG maybe a solution, but, the processor 'down' after I set it to 0x1, I think that it is too easy to control processor restart smoothly.
Please give more information for this case how to control restart process via firmware.
2. May I modify the BD_ADDR on line ? It means that I provide a user interface to receive a new BD_ADDR by user input, at final, I copy new data to dev_bdaddr.addr[]. But, I don't know how to make it valid for new advertising one.
Hi yuhua64,
You can give it a try with the platform_reset().
About dynamically changing the bd address you can have a look at this posthttp://support.dialog-semiconductor.com/how-change-bd-address-dynamically
Thanks MT_dialog
Hi,
I have tried platform_reset() with parameter 0 / 1 / -1, DA14580 is not restart, It looks like SW_RESET, stop process only. It is difficult to execute like hardware reset action.
Hi yuhua64,
What are you trying to achive, with the platform reset the chip reboots and the bootloader runs in order to find an external device to boot.
Thanks MT_dialog