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

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

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

image.png



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


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


image.png




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


此时内心很恐慌,是不是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);
}

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


image.png


最后修改代码如下:


//将时钟从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);
}

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


相关文章
|
4月前
|
传感器 数据采集 移动开发
基于STM32设计的炉温温度检测仪
本文档描述了一个基于STM32F103C8T6微控制器的炉温检测系统设计。系统采用铂电阻PT100作为温度传感器,提供精确的温度测量,并通过0.96寸IIC接口的OLED显示屏显示结果。STM32F103C8T6因其丰富的外设和计算能力被选为主控芯片,PT100的电阻变化通过ADC转换为数字信号。软件设计包括数据采集、处理和显示三个部分,其中OLED显示屏的初始化函数`oled_init()`设置各种屏幕参数,`OLED_Show_Temperature()`函数负责在指定位置显示温度值。
54 3
|
5月前
|
传感器 数据处理 芯片
基于51单片机的自动售货机系统
该项目设计了一个基于AT89C51单片机的自动售货机系统,采用4×4矩阵键盘选择货物和投入货币,LCD1602液晶显示购物状态和货币状态,LED显示货物选择和出货情况。系统通过货币传感器检测投入的真伪和金额,根据商品价格进行找零。功能包括选择货物、货币识别、自动计算总价、出货与找零。仿真电路展示了从欢迎界面到购物、投币、出货或找零的过程。程序设计中包含了状态定义和延时函数等。
54 0
电子元器件采购(一)----电容
电子元器件采购(一)----电容
68 0
|
传感器 监控 数据处理
基于单片机的液体点滴速度监控设计
基于单片机的液体点滴速度监控设计
196 0
基于单片机的液体点滴速度监控设计
【单片机期中测试】11.交通灯
【单片机期中测试】11.交通灯
54 0
单片机数码管显示热敏电阻实测温度,
单片机数码管显示热敏电阻实测温度,
90 0
|
数据库
太阳能路灯电路板的根本结构及作业原理
太阳能路灯的应用具有重要的现实意义,尤其是靠小规模火力发电或季节性水力发电的地区,更应大力发展太阳能电力。太阳能路灯以其先进、稳定、智能、成熟的控制技术及显著的节能特性、简便的维护方式等特点得到推广。随着太阳能照明灯具产品的普及,很多应用项目存在质量和售后服务问题。因此,需及时分析原因、规范市场,使太阳能路灯市场健康有序地发展。太阳能是地球上最为直接、普遍、清洁的能源,其作为一种可再生能源,每天达到地球表面的辐射能量约2.5亿万桶石油。
太阳能路灯电路板的根本结构及作业原理
|
存储 编解码 芯片
基于单片机设计的遥控数字音量控制D类功率放大器设计
基于单片机设计的遥控数字音量控制D类功率放大器设计
265 1
基于单片机设计的遥控数字音量控制D类功率放大器设计
微波技术大作业课设-分立电容电感+微带单枝短截线+微带双枝短截线
微波技术大作业课设-分立电容电感+微带单枝短截线+微带双枝短截线
380 1
微波技术大作业课设-分立电容电感+微带单枝短截线+微带双枝短截线
|
C语言 芯片
基于单片机的作息时间控制钟系统
基于单片机的作息时间控制钟系统
227 0
基于单片机的作息时间控制钟系统