打印
[技术问答]

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

[复制链接]
2442|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cbx0916|  楼主 | 2020-9-11 19:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
萌新最近在使用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后确实可以正常通信了,感谢!

使用特权

评论回复
评论
martinhu 2020-9-15 08:59 回复TA
从RCH 4M切换到RCH 24M,也就是RCH不同频率的切换,一定要按照手册描述的步骤,或者例子(也是按步骤来的)切换!!! 
5
嵌入小菜菜| | 2020-9-17 11:59 | 只看该作者
外部晶振的电容匹配有问题吧,是不是?

使用特权

评论回复
6
wuha| | 2021-4-26 16:51 | 只看该作者
楼主位的程序,在切换到外部时钟前,要查询外部时钟是否稳定的标志,或者加入一段10mS左右延时,就没问题了。设置完晶振一定要等起振OK稳定之后再切换。

使用特权

评论回复
7
fjhcpu| | 2021-12-14 14:29 | 只看该作者
能否直接8M倍频到48M?

使用特权

评论回复
8
cyclefly| | 2021-12-17 17:20 | 只看该作者
看来是时钟的问题了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝