大意!6行代码,“报废”5片单片机!

今天又双叒叕是个心痛的日子。

近日,打样一款新产品PCB,微控制器选用:国产MCU,HC32L130系列,程序移植于之前的项目。

PCB样板焊接好后,第一次可以正常烧录程序,再进行烧录,IAR显示无法连接MCU。

奇怪了!试了几次不行,换一块板子, 也是这种情况......

此时内心很恐慌,是不是MCU电路设计有问题?但是也不应该啊,该MCU已经应用好几款产品了......

排错离不开试错法,找来最基础的点亮LED程序测试,烧写过程、次数均正常可行。

说明程序有问题!

通过一系列尝试和推测,将问题定位在时钟配置上:之前使用HC32L130均是基于24MHz内部高速时钟(HSI),而本款产品基于24MHz外部高速时钟(HSE)。

配置24MHz内部高速时钟(HSI)程序如下所示:

//将时钟从RCH4MHz切换至RCH24MHz,
void App_Rch4MHzTo24MHz(void)
{    
///<============== 将时钟从RCH4MHz切换至RCH24MHz ==============================    
    ///< RCH时钟不同频率的切换,需要先将时钟切换到RCL,设置好频率后再切回RCH
    Sysctrl_SetRCLTrim(SysctrlRclFreq32768);
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
    Sysctrl_SysClkSwitch(SysctrlClkRCL);
    
    ///< 加载目标频率的RCH的TRIM值
    Sysctrl_SetRCHTrim(SysctrlRchFreq24MHz);

    ///< 时钟切换到RCH
    Sysctrl_SysClkSwitch(SysctrlClkRCH);

    ///< 关闭RCL时钟
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE);
} 

在修改为外部高速时钟程序时,没再查阅芯片手册,直接修改的参数,程序如下所示:

//将时钟从RCH4MHz切换至XTH24MHz,
void App_Rch4MHzTo24MHz(void)
{    
///<============== 将时钟从RCH4MHz切换至XTH24MHz ==============================    
    Sysctrl_SetRCLTrim(SysctrlRclFreq32768);
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
    Sysctrl_SysClkSwitch(SysctrlClkRCL);
    
    ///< 加载目标频率的XTH值
    Sysctrl_SetXTHFreq(SysctrlRchFreq24MHz);

    ///< 时钟切换到XTH
    Sysctrl_SysClkSwitch(SysctrlClkXTH);
	
    ///< 关闭RCL时钟
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE);
}  

通过查阅手册,配置过程果然存在问题。

最后修改代码如下:

//将时钟从RCH4MHz切换至XTH24MHz
void App_Rch4MHzToXth24MHz (void)
{    
///<======================== 将时钟从RCH4MHz切换至XTH24MHz ==============================    
    
    ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为24MHz
    Sysctrl_SetXTHFreq(SysctrlXthFreq20_32MHz);
    Sysctrl_XTHDriverCfg(SysctrlXtalDriver3);
    Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384);
    Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);

    ///< 时钟切换
    Sysctrl_SysClkSwitch(SysctrlClkXTH);
    ///< 根据需要选择是否关闭原时钟(此处关闭)
    Sysctrl_ClkSourceEnable(SysctrlClkRCH, FALSE);
}

最后运行调测,果然顺利~

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不脱发的程序猿

亲,赏包辣条吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值