华大单片机HC32L130使用内部RCH时钟源倍频24M外设PCLK到48M


最近使用HC32L130xxx单片机做项目,使用内部RCH做为主时钟源,RCH时钟源最高频率为24M,但是可以通过倍频PLL到48M,时钟源示意图如下图所示。

 配置时钟时注意事项

1、在配置时钟源频率时,不能配置当前正在用的时钟源。比如当前正在使用RCH作为时钟源,那么就不可更改RCH的时钟源,如果要更改,需要将时钟源切换到其他时钟源上,比如切换到RLH。然后设置RCH,时钟源切换完成后,时钟源在切换到RCH。

2、当时钟源HCLK大于24M,此处设置FLASH 读等待周期为1 cycle(前面已经配置,此处无需重复配置),否则当切换时钟源到PLL48M时钟源时就会死机。

初始化程序如下所示。PCLK时钟可以通过Sysctrl_GetPClkFreq()函数读回,用以验证时钟是否设置正确。

  1.  
    void App_RCH24MHzToPll48MHz (void)
  2.  
    {
  3.  
    stc_sysctrl_pll_cfg_t stcPLLCfg;
  4.  
     
  5.  
     
  6.  
    ///<============== 将时钟从RCH4MHz切换至RCH24MHz ==============================
  7.  
    ///< RCH时钟不同频率的切换,需要先将时钟切换到RCL,设置好频率后再切回RCH
  8.  
    Sysctrl_SetRCLTrim(SysctrlRclFreq32768);
  9.  
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  10.  
    Sysctrl_SysClkSwitch(SysctrlClkRCL);
  11.  
     
  12.  
    ///< 加载目标频率的RCH的TRIM值
  13.  
    Sysctrl_SetRCHTrim(SysctrlRchFreq24MHz);
  14.  
    ///< 使能RCH(默认打开,此处可不需要再次打开)
  15.  
    //Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE);
  16.  
    ///< 时钟切换到RCH
  17.  
    Sysctrl_SysClkSwitch(SysctrlClkRCH);
  18.  
    ///< 关闭RCL时钟
  19.  
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE);
  20.  
     
  21.  
     
  22.  
    ///< 注意十分重要 当前时钟源HCLK大于24M:此处设置FLASH 读等待周期为1 cycle(前面已经配置,此处无需重复配置)
  23.  
     
  24.  
    Flash_WaitCycle(FlashWaitCycle1);
  25.  
     
  26.  
    stcPLLCfg.enInFreq = SysctrlPllInFreq20_24MHz; //RCH 24MHz
  27.  
    stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 输出48MHz
  28.  
    stcPLLCfg.enPllClkSrc = SysctrlPllRch; //输入时钟源选择RCH
  29.  
    stcPLLCfg.enPllMul = SysctrlPllMul2; //24MHz x 2 = 48MHz
  30.  
    Sysctrl_SetPLLFreq(&stcPLLCfg);
  31.  
    Sysctrl_SetPLLStableTime(SysctrlPllStableCycle16384);
  32.  
    Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE);
  33.  
     
  34.  
    ///< 时钟切换
  35.  
    Sysctrl_SysClkSwitch(SysctrlClkPLL);
  36.  
     
  37.  
    Sysctrl_GetPClkFreq(); //获取PCLK时钟频率
  38.  
     
  39.  
     
  40.  
    }

 

debug在线调试读取结果。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM