cbx0916 发表于 2020-9-11 19:48

新手请教HC32136外部晶振设置问题

萌新最近在使用HC32L136K8TA,使用内部晶振WiFi模组串口通信时,波特率设置115200发送全部乱码。于是加了8M外部晶振,看了例程关于时钟切换后尝试了一下发现时钟不能启动,于是来请教一下大佬们如何设置系统时钟为外部高速晶振。

谢谢各位大佬。

    Sysctrl_ClkDeInit();
    ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟
    Sysctrl_SetXTHFreq(SysctrlXthFreq6_12MHz);
    Sysctrl_XTHDriverConfig(SysctrlXtalDriver3);
    Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384);
    Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);
    ///< 时钟切换
    Sysctrl_SysClkSwitch(SysctrlClkXTH);
    ///< 根据需要选择是否关闭原时钟(此处不关闭)
    Sysctrl_ClkSourceEnable(SysctrlClkRCH, FALSE);

    stc_sysctrl_clk_config_t pstcCfg;
    pstcCfg.enClkSrc=SysctrlClkXTH;
    pstcCfg.enHClkDiv=SysctrlHclkDiv8;
    pstcCfg.enPClkDiv=SysctrlPclkDiv1;
    Sysctrl_ClkInit(&pstcCfg);

    Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);


martinhu 发表于 2020-9-14 09:27

你的切换步骤与文档的要求好像不符

martinhu 发表于 2020-9-14 09:34

之前你说的波特率不对,因为默认的4M的RCH是支持不了115200的波特率的。误差太大了。


楼主需要将默认的RCH 4M 的时钟切换到RCH 24M,或者使用PLL倍频致48M等,
时钟切换的例子在驱动库例子的example的sysctrl,有个switch的例子。
手册上有波特率的计算公式,可以自己算误差


cbx0916 发表于 2020-9-15 08:17

martinhu 发表于 2020-9-14 09:34
之前你说的波特率不对,因为默认的4M的RCH是支持不了115200的波特率的。误差太大了。




多谢大佬的指点,我尝试下切换到24M后确实可以正常通信了,感谢!

嵌入小菜菜 发表于 2020-9-17 11:59

外部晶振的电容匹配有问题吧,是不是?

wuha 发表于 2021-4-26 16:51

楼主位的程序,在切换到外部时钟前,要查询外部时钟是否稳定的标志,或者加入一段10mS左右延时,就没问题了。设置完晶振一定要等起振OK稳定之后再切换。

fjhcpu 发表于 2021-12-14 14:29

能否直接8M倍频到48M?

cyclefly 发表于 2021-12-17 17:20

看来是时钟的问题了
页: [1]
查看完整版本: 新手请教HC32136外部晶振设置问题