下面是切换到RCH的函数,后面关闭BGR了
void PLLChangeToRCH(void)
{
Sysctrl_SysClkSwitch(SysctrlClkRCH) ; //< 时钟切换 RCH
Flash_WaitCycle(FlashWaitCycle0); //读时钟周期设置为0
Sysctrl_ClkSourceEnable(SysctrlClkPLL, FALSE); //关闭PLL
M0P_BGR->CR_f.BGR_EN = FALSE; //关闭BGR
}
下面这个是我初始化时候配置的PLL
void SysClockCfg(void)
{
en_flash_waitcycle_t enWaitCycle;
stc_sysctrl_pll_cfg_t stcPLLCfg;
//结构体初始化清零
DDL_ZERO_STRUCT(stcPLLCfg);
enWaitCycle = FlashWaitCycle1;
Flash_WaitCycle(enWaitCycle);
stcPLLCfg.enInFreq = SysctrlPllInFreq4_6MHz; //RCH 4MHz 内部高速时钟
stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 输出48MHz
stcPLLCfg.enPllClkSrc = SysctrlPllRch; //输入时钟源选择RCH
stcPLLCfg.enPllMul = SysctrlPllMul12; //4MHz x 12 = 48MHz 倍频作用
Sysctrl_SetPLLFreq(&stcPLLCfg);
Sysctrl_SetPLLStableTime(SysctrlPllStableCycle16384);
Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE);
Sysctrl_SysClkSwitch(SysctrlClkPLL); ///< 时钟切换
SystemCoreClockUpdate();
}
现在问题就很奇怪,当我把PLL配置取消掉,进入deepsleep有1uA,同样的硬件,当我配置PLL,延时5s后再调用PLLchanggeRCH(PLL时钟转为RCH),按照应用手册步骤来的,然后进入deepsleep就有26uA了,不知道这多出来的电流哪里来的? 感觉不像硬件。
|