cc2538: lpm: Speed up the transition to the 32-MHz XOSC after wake-up
As recommended by the CC2538 User's Guide, set SYS_CTRL_CLOCK_CTRL.OSC_PD to 0 before asserting WFI, and set it to 1 after the system clock is sourced from the 32-MHz XOSC following wake-up. This allows to automatically start both oscillators upon wake-up in order to partially hide the 32-MHz XOSC startup time by the 16-MHz RCOSC startup time. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
This commit is contained in:
parent
13006e1c73
commit
f149197aa8
@ -166,11 +166,20 @@ select_32_mhz_xosc(void)
|
|||||||
|
|
||||||
/* Wait for the switch to take place */
|
/* Wait for the switch to take place */
|
||||||
while((REG(SYS_CTRL_CLOCK_STA) & SYS_CTRL_CLOCK_STA_OSC) != 0);
|
while((REG(SYS_CTRL_CLOCK_STA) & SYS_CTRL_CLOCK_STA_OSC) != 0);
|
||||||
|
|
||||||
|
/* Power down the unused oscillator. */
|
||||||
|
REG(SYS_CTRL_CLOCK_CTRL) |= SYS_CTRL_CLOCK_CTRL_OSC_PD;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
select_16_mhz_rcosc(void)
|
select_16_mhz_rcosc(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Power up both oscillators in order to speed up the transition to the 32-MHz
|
||||||
|
* XOSC after wake up.
|
||||||
|
*/
|
||||||
|
REG(SYS_CTRL_CLOCK_CTRL) &= ~SYS_CTRL_CLOCK_CTRL_OSC_PD;
|
||||||
|
|
||||||
/*First, make sure there is no ongoing clock source change */
|
/*First, make sure there is no ongoing clock source change */
|
||||||
while((REG(SYS_CTRL_CLOCK_STA) & SYS_CTRL_CLOCK_STA_SOURCE_CHANGE) != 0);
|
while((REG(SYS_CTRL_CLOCK_STA) & SYS_CTRL_CLOCK_STA_SOURCE_CHANGE) != 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user