TM4C129X MCU如何有效應對晶振失效
作者:Brian Wang
本文引用地址:http://www.ex-cimer.com/article/202312/454103.htmTM4C129x系列是TI 推出的通用MCU 產品,該產品具有120Mhz Cortex M4F核,最大1MB的Flash 空間以及靈活多樣的通信接口。同時該產品的內置Ethernet PHY,可支持高集成度、低成本的以太網通信。片上豐富的資源使其非常適合作為儲能等新能源應用的House Keeping MCU 來使用,配合TI 的BMS采樣AFE及實時控制芯片C2000共同完成儲能系統所需要的采集、監控、控制等一些列功能。
近年來,隨著儲能等新能源應用的飛速發展,各類行業標準不斷發展和健全,對儲能系統的安全性也提出了越來越高的要求。而作為儲能系統的控制中樞,對于MCU 在故障狀態下的安全也提出了新的要求。例如IEC60730最先對家儲產品提出當MCU 晶振失效,系統需要能夠安全地斷電, 這就需要MCU 必須具有一種可靠地檢測、診斷和處理MCU 晶振失效的措施。本文就將以儲能系統的這一需求為例,介紹如何在TM4C129X中應對系統晶振失效的問題。
1. TM4C129X晶振失效檢測功能
TM4C129X 系列MCU中本身提供了主時鐘診斷功能,該功能將主時鐘(MOSC)頻率與內部晶振頻率對比,一旦發現主時鐘頻率異常則觸發以下異常中的一種, 并自動切換到內部晶振 (PIOSC)來繼續為MCU的后續運行提供是時鐘源。
圖-1 主晶振失效動作選擇配置
針對本文中所討論的安全下電需求,我們可以配置MOSCCTL.MOSCIM=0從而實現晶振異常時觸發MOSC Fail 中斷,并在中斷中進行相關的安全下電操作,具體的配置實現代碼如下:
ui32MOSCCTL = HWREG(SYSCTL_MOSCCTL);
// Enable MOSC verification enable MOSC fail interrupt
SysCtlMOSCConfigSet(ui32MOSCCTL | SYSCTL_MOSC_VALIDATE | SYSCTL_MOSC_INTERRUPT);
// Enable MOSC interrupt at SYS level
HWREG(SYSCTL_IMC) = 0x08;
// Enable SYS interrupt at NVIC level
IntEnable(INT_SYSCTL);
void SystemtHandler(void)
{
// Add error handling code here
該方法可以在不增加額外外圍電路的情況下實現晶振失效狀態下MCU的安全狀態處理,但需要注意的時在TM4C129X系列的Errata中有注明該系列芯片的MOSC verification 電路存在一定的無法準確檢測晶振失效的風險。因此該方法僅能用作一種輔助手段,或應用在對于診斷率要求 不高的應用當中。我們必須增加其他解決問題的措施。
圖-2 TM4C129X 晶振檢測功能勘誤
2. 使用硬件方式應對晶振失效
在儲能系統中,為了應對TMC129X內置時鐘診斷可能存在的風險,我們可以增加額外的硬件電路來實現更加可靠的錯誤處理。對于此類問題,常見的解決方案的是使用一顆額外的看門狗(Watchdog)芯片。
對于TM4C129X系列芯片,通過其數據手冊可以芯片最小復位脈沖寬度在0.25~100us,絕大多數的TI 看門系列產品均可滿足此時間要求:
圖-3 TM4C1294 復位時序要求
在此選擇TI TPS3820 為例說明看門狗方案:
圖-4 TM4C1294 看門狗方案示意圖
正常工作狀態下,TM4C129X通過PWM 以固定頻率對TPS3820進行喂狗。當晶振失效,若TM4C1294 晶振內部的晶振失效診斷電路生效,按照預先設計好的程序執行斷電保護。若內部電路不失效,則芯片將失去時鐘源停止喂狗,25ms后TPS3820將向TM4C129X發送復位脈沖,通過nRST引腳將芯片復位。
當TM4C129X 復位,則所有GPIO將被復位到高阻狀態(tristate),此時引腳電平將有外部的上拉或下拉電阻決定。因此只需要按照安全狀態在繼電器控制I/O端口的外圍增加相應的上拉或下拉電阻即可保證復位后GPIO處于安全狀態。
圖-5 TM4C1294 GPIO默認狀態
經過對該方案的深入測試,在內部檢測電路不工作的情況下,該硬件復位方案有極高的成功率(如圖6左)。但在小概率下,我們可以抓到如圖6 右側的失敗情況。在該種情況下,晶振下電后芯片沒有發生復位,繼電器控制I/O 也沒有如預想被拉低,芯片似乎“卡死”在了某種狀態里。
圖-6 測試波形
針對此問題對硬件的看門狗方案進行了改進,在原有看門狗的基礎上增加了個一個單穩態觸發器和一個與門,當MCU 晶振失效MCU 停止喂狗,1G123通過與門拉低繼電器控制信號,保證在MCU 無法復位的情況下仍能斷開繼電器。
圖-7 改進的硬件看門狗方案示意圖
3. TM4C晶振失效復位失敗的解決方法
上一節中,我們通過增加片外的復位和I/O口控制電路保證了芯片晶振失效時I/O口能夠處在安全狀態,但并未解決TM4C無法正確復位的問題。
該問題的主要原因是TM4C在接收到nRST 復位脈沖時可以觸發兩種不同的復位模式:
Power on Reset(POR): 該模式又稱為冷復位(code-reset),此復位模式等同于芯片上電復位,是一種完全徹底的復位方式;
System Reset: 該模式又稱為暖復位(warm-reset),此模式只復位芯片的核心及部分外設,不是完全復位。
經過反復多次測試,TM4C在外部晶振失效的情況下只能可靠的地進行system reset,而無法支持 POR Reset。默認狀態下,nRST均觸發POR Reset,因此會出現上一節類似MCU ‘卡死‘的異常狀態。需要通過Reset Behavior Control寄存器將復位模式改為System reset 即可正常復位。
圖-8 TM4C129X RST腳復位模式選擇
使用如下API 進行配置:
重復上述實驗,無論如何測試,在晶振失效情況下收到TPS3820的復位觸發信號后TPS3820均可正常復位,GPIO按照預設置高。
圖-9更改復位模式后的測試波形
4. 總結
本文以儲能系統為例,介紹了如何在TM4C129x系列芯片的使用過程中應對晶振失效故障。針對芯片本身功能存在的不足,本文通過增加外圍電路解決增加了“雙保險”,大大提高了TM4C129X芯片在晶振失效情況下的可靠性。
參考文獻
[1] Texas Instruments: Tiva TM4C1294NCPDT Microcontroller DATA SHEET
[2] Texas Instruments: Tiva C Series TM4C129x Microcontrollers Silicon Revisions 1, 2, & 3 Errata (Rev. G)
評論