新手请教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);
你的切换步骤与文档的要求好像不符
之前你说的波特率不对,因为默认的4M的RCH是支持不了115200的波特率的。误差太大了。
楼主需要将默认的RCH 4M 的时钟切换到RCH 24M,或者使用PLL倍频致48M等,
时钟切换的例子在驱动库例子的example的sysctrl,有个switch的例子。
手册上有波特率的计算公式,可以自己算误差
martinhu 发表于 2020-9-14 09:34
之前你说的波特率不对,因为默认的4M的RCH是支持不了115200的波特率的。误差太大了。
多谢大佬的指点,我尝试下切换到24M后确实可以正常通信了,感谢! 外部晶振的电容匹配有问题吧,是不是?
楼主位的程序,在切换到外部时钟前,要查询外部时钟是否稳定的标志,或者加入一段10mS左右延时,就没问题了。设置完晶振一定要等起振OK稳定之后再切换。 能否直接8M倍频到48M? 看来是时钟的问题了
页:
[1]