今天又雙叒叕是個心痛的日子,

近日,打樣一款新產品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);
}
最后運行調測,果然順利~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273806.html
標籤:其他
上一篇:Graph convolution network with similarity awareness and adaptive calibration...MIA,2020.
