kktron 发表于 2023-2-7 11:01

HC32L170FAUA外部晶振问题

由于工作环境-30-80°C,所以没用内部RC 4MHZ
用了个外部的24MHz的小封装晶振,但是配置后,示波器测量不启震,是不是和配置有关?
请帮忙看看
/**
******************************************************************************
** \brief初始化外部系统时钟
**
** \return 无
******************************************************************************/
static void App_SysClkInit(void)
{
    stc_sysctrl_clk_cfg_t stcCfg;
    stc_sysctrl_pll_cfg_t stcPLLCfg;
   
   
    Sysctrl_SetPeripheralGate(SysctrlPeripheralFlash, TRUE);    ///< 使能FLASH模块的外设时钟
    Flash_WaitCycle(FlashWaitCycle1);
    Sysctrl_SetXTHFreq(SysctrlXthFreq24_32MHz);               
   
    stcPLLCfg.enInFreq    = SysctrlPllInFreq20_24MHz;   ///< 24MHz
    stcPLLCfg.enOutFreq   = SysctrlPllOutFreq36_48MHz;///< PLL 输出48MHz
    stcPLLCfg.enPllClkSrc = SysctrlPllXthXtal;          ///< 输入时钟源选择XthXtal
    stcPLLCfg.enPllMul    = SysctrlPllMul2;             ///< 24MHz x 2 = 48MHz
    Sysctrl_SetPLLFreq(&stcPLLCfg);
   
    ///< 选择PLL作为HCLK时钟源;
    stcCfg.enClkSrc= SysctrlClkPLL;
    ///< HCLK SYSCLK/2
    stcCfg.enHClkDiv = SysctrlHclkDiv2;
    ///< PCLK 为HCLK/8
    stcCfg.enPClkDiv = SysctrlPclkDiv8;
    ///< 系统时钟初始化
    Sysctrl_ClkInit(&stcCfg);
}

yang377156216 发表于 2023-2-7 13:17

///<请注意根据外部晶振配置宏——,如果使用PLL,XTH必须在 4 - 24MHz 范围
void App_SystemClkInit_PLL48M_byXTH(void)
{
    stc_sysctrl_pll_cfg_t stcPLLCfg;   
   
    ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 24MHz
    Sysctrl_SetXTHFreq(SysctrlXthFreq16_24MHz);
    Sysctrl_XTHDriverCfg(SysctrlXtalDriver3);///<晶振驱动能力需要根据实际晶振匹配电路布局以及所选器件的参数去调整
    Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384);
    Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);
    delay1ms(10);
   
    stcPLLCfg.enInFreq    = SysctrlPllInFreq20_24MHz;    //XTH 24MHz
    stcPLLCfg.enOutFreq   = SysctrlPllOutFreq36_48MHz;//PLL 输出
    stcPLLCfg.enPllClkSrc = SysctrlPllXthXtal;            //输入时钟源选择XTH晶振
    stcPLLCfg.enPllMul    = SysctrlPllMul2;             //24MHz x 2 = 48MHz
    Sysctrl_SetPLLFreq(&stcPLLCfg);
   
    ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle)
    Flash_WaitCycle(FlashWaitCycle1);

    ///< 使能PLL
    Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE);   
    ///< 时钟切换到PLL
    Sysctrl_SysClkSwitch(SysctrlClkPLL);
}

kktron 发表于 2023-2-7 13:46

yang377156216 发表于 2023-2-7 13:17
///

感谢,按此实列可以了

tpgf 发表于 2023-3-3 11:42

内部晶振的正常工作温度一般都在什么范围内啊

qcliu 发表于 2023-3-3 11:55

楼主的这个工作环境很恶劣啊温度跨度有些大啊

drer 发表于 2023-3-3 12:07

外部晶振的起振与否和程序没有任何关系吧

coshi 发表于 2023-3-3 12:16

应该不是程序的事情可能晶振直接坏掉了

kxsi 发表于 2023-3-3 13:10

如果不测量 直接运行程序的话能正常工作吗

wiba 发表于 2023-3-3 13:22

有些晶振的波形可能会因为示波器探针的引入反而不能正常工作
页: [1]
查看完整版本: HC32L170FAUA外部晶振问题