cpu/saml1x: set wait state according to datasheet
This commit is contained in:
parent
10b783d82c
commit
82aa6c0280
@ -22,6 +22,12 @@
|
|||||||
#include "periph/init.h"
|
#include "periph/init.h"
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|
||||||
|
#ifdef CPU_FAM_SAML11
|
||||||
|
#define _NVMCTRL NVMCTRL_SEC
|
||||||
|
#else
|
||||||
|
#define _NVMCTRL NVMCTRL
|
||||||
|
#endif
|
||||||
|
|
||||||
static void _gclk_setup(int gclk, uint32_t reg)
|
static void _gclk_setup(int gclk, uint32_t reg)
|
||||||
{
|
{
|
||||||
GCLK->GENCTRL[gclk].reg = reg;
|
GCLK->GENCTRL[gclk].reg = reg;
|
||||||
@ -40,6 +46,7 @@ void cpu_init(void)
|
|||||||
MCLK->APBAMASK.reg = MCLK_APBAMASK_MCLK
|
MCLK->APBAMASK.reg = MCLK_APBAMASK_MCLK
|
||||||
| MCLK_APBAMASK_OSCCTRL
|
| MCLK_APBAMASK_OSCCTRL
|
||||||
| MCLK_APBAMASK_GCLK
|
| MCLK_APBAMASK_GCLK
|
||||||
|
| MCLK_APBAMASK_PM
|
||||||
#ifdef MODULE_PERIPH_GPIO_IRQ
|
#ifdef MODULE_PERIPH_GPIO_IRQ
|
||||||
| MCLK_APBAMASK_EIC
|
| MCLK_APBAMASK_EIC
|
||||||
#endif
|
#endif
|
||||||
@ -53,6 +60,13 @@ void cpu_init(void)
|
|||||||
while (GCLK->CTRLA.reg & GCLK_CTRLA_SWRST) {}
|
while (GCLK->CTRLA.reg & GCLK_CTRLA_SWRST) {}
|
||||||
while (GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_SWRST) {}
|
while (GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_SWRST) {}
|
||||||
|
|
||||||
|
PM->PLCFG.reg = PM_PLCFG_PLSEL_PL2;
|
||||||
|
while (0 == PM->INTFLAG.bit.PLRDY) {}
|
||||||
|
|
||||||
|
MCLK->APBBMASK.reg |= MCLK_APBBMASK_NVMCTRL;
|
||||||
|
_NVMCTRL->CTRLB.reg |= NVMCTRL_CTRLB_RWS(1);
|
||||||
|
MCLK->APBBMASK.reg &= ~MCLK_APBBMASK_NVMCTRL;
|
||||||
|
|
||||||
/* set OSC16M to 16MHz */
|
/* set OSC16M to 16MHz */
|
||||||
OSCCTRL->OSC16MCTRL.bit.FSEL = 3;
|
OSCCTRL->OSC16MCTRL.bit.FSEL = 3;
|
||||||
OSCCTRL->OSC16MCTRL.bit.ONDEMAND = 0;
|
OSCCTRL->OSC16MCTRL.bit.ONDEMAND = 0;
|
||||||
@ -61,11 +75,6 @@ void cpu_init(void)
|
|||||||
/* Setup GCLK generators */
|
/* Setup GCLK generators */
|
||||||
_gclk_setup(0, GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_OSC16M);
|
_gclk_setup(0, GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_OSC16M);
|
||||||
|
|
||||||
#ifdef MODULE_PERIPH_PM
|
|
||||||
/* enable power managemet module */
|
|
||||||
MCLK->APBAMASK.reg |= MCLK_APBAMASK_PM;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* trigger static peripheral initialization */
|
/* trigger static peripheral initialization */
|
||||||
periph_init();
|
periph_init();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user