樊長虹 管文輝 宋瑞
【摘要】TMS320F2812 DSP的外部復(fù)位電路和軟件喂狗存在易被忽略問題。本文針對一種常見復(fù)位電路所存在的不足,采用高阻態(tài)器件改進(jìn)了設(shè)計(jì),提高了不同復(fù)位源之間接口兼容性;針對常用的周期中斷函數(shù)中喂狗方法可能存在的中斷阻塞,從而導(dǎo)致無必要復(fù)位的問題,提出多個(gè)周期中斷相互監(jiān)控解決方法。
【關(guān)鍵詞】TMS320F2812;復(fù)位可靠性;軟件監(jiān)控
1.前言
TMS320F2812是TI公司推出的一款高性能定點(diǎn)DSP芯片,已經(jīng)廣泛用于運(yùn)動(dòng)控制應(yīng)用。我們部分項(xiàng)目中采用過該芯片,應(yīng)用中發(fā)現(xiàn)該芯片看門狗復(fù)位監(jiān)控常見兩類問題:1)用戶外圍復(fù)位電路與該芯片接口兼容性較差,當(dāng)芯片內(nèi)部看門狗溢出時(shí)復(fù)位輸出有可能不能使芯片正確復(fù)位;2)事件管理器時(shí)鐘周期中斷中喂狗清零時(shí),時(shí)鐘周期中斷標(biāo)識偶爾會(huì)清除失敗,使得中斷阻塞,無法有效喂狗導(dǎo)致看門狗溢出復(fù)位。
2.外圍復(fù)位電路設(shè)計(jì)
2.1 電路接口兼容問題
多數(shù)TMS320F2812板卡都模仿了TI公司所提供的公板設(shè)計(jì),其外圍復(fù)位電路的典型設(shè)計(jì)如圖1所示。
圖1 常用復(fù)位電路
設(shè)計(jì)時(shí)首先需要考慮上電復(fù)位和手動(dòng)復(fù)位,圖1中電路可實(shí)現(xiàn)這兩點(diǎn)要求:當(dāng)板卡上電時(shí),電源芯片復(fù)位信號TPS767D318 會(huì)產(chǎn)生輸出200ms的持續(xù)低電平,拉低以確保DSP正確復(fù)位;當(dāng)手動(dòng)按下復(fù)位鍵SB1時(shí),在74LS08的輸出腳產(chǎn)生低電平以復(fù)位DSP。
TMS320F2812數(shù)據(jù)手冊表明,當(dāng)看門狗溢出時(shí),DSP內(nèi)部的上應(yīng)產(chǎn)生512個(gè)ClkIn周期的低電平,以拉低來產(chǎn)生DSP復(fù)位。當(dāng)采用30MHz的外部時(shí)鐘芯片時(shí),這段低電平時(shí)間約為17微秒,可以保證DSP可靠復(fù)位。
圖2 看門狗溢出復(fù)位波形圖
按圖1連接關(guān)系,當(dāng)F2812內(nèi)部看門狗溢出復(fù)位時(shí),測得管腳波形如圖2(a)所示,復(fù)位低電平被拉低到約1V;當(dāng)斷開F2812的與外部復(fù)位電路連接時(shí),使得F2812內(nèi)部看門狗溢出復(fù)位,在管腳輸出的波形為圖2(b)所示,復(fù)位低電平被拉低到約0V。TMS320F2812數(shù)據(jù)手冊表中建議復(fù)位信號低電平應(yīng)低于0.8V。在實(shí)際應(yīng)用中,我們按圖1設(shè)計(jì)的復(fù)位電路確實(shí)偶然出現(xiàn)程序跑飛,看門狗溢出,但板卡沒有被正確復(fù)位的現(xiàn)象。這表明圖1中外部復(fù)位電路與該DSP芯片的接口兼容性欠佳。
2.2 復(fù)位電路改進(jìn)
為提高上電復(fù)位和手工復(fù)位與芯片內(nèi)部看門狗復(fù)位電平兼容性,應(yīng)改進(jìn)圖1中的外部電路設(shè)計(jì)。實(shí)際上,觀察圖1右半部分TMS320F2812芯片內(nèi)部看門狗對自身的復(fù)位控制,已經(jīng)提供了外部復(fù)位電路解決思路:將74LS08換為可置于高阻態(tài)的緩沖器(如74HC125),參考電路如圖3所示。
圖3中沒有上電復(fù)位和手工復(fù)位時(shí),外部復(fù)位電路輸出是高阻態(tài),不會(huì)對內(nèi)部看門狗復(fù)位帶來電平不兼容的影響。當(dāng)TMS320F2812芯片內(nèi)看門狗溢出時(shí),測量復(fù)位引腳波形如圖4所示。相比圖2(a),圖4中復(fù)位低電平波形有明顯改進(jìn),低電平接近0V。
圖3 改進(jìn)復(fù)位電路
圖4 改進(jìn)復(fù)位電路復(fù)位波形
3.中斷中喂狗清零改進(jìn)
3.1 周期中斷阻塞問題
通常在F2812事件管理器的定時(shí)器周期中斷中進(jìn)行喂狗操作。但某項(xiàng)目應(yīng)用中發(fā)現(xiàn)事件管理器周期中斷產(chǎn)生速度較快時(shí),在周期中斷處理函數(shù)中偶然無法正確清除該中斷自身的標(biāo)識位。測試中無論是將程序加載在片內(nèi)RAM中仿真或燒寫的片內(nèi)Flash中運(yùn)行都出現(xiàn)過該類問題,即使連續(xù)多次對中斷標(biāo)識位進(jìn)行寫操作也無法保證清除成功。我們認(rèn)為這是芯片內(nèi)部設(shè)計(jì)缺陷所引起。
如果周期中斷標(biāo)識位無法被正確清除,該中斷處理函數(shù)將被阻塞,無法再進(jìn)行喂狗操作,從而導(dǎo)致看門狗溢出。此時(shí)如果看門狗也由于外部電路設(shè)計(jì)原因?qū)е聼o法正確復(fù)位,系統(tǒng)可能局部或全部癱瘓。既然已經(jīng)明確了中斷標(biāo)識清除失敗問題,就不應(yīng)該通過看門狗來復(fù)位系統(tǒng)。因此較好的解決方法是監(jiān)控到該中斷標(biāo)識是否被正確清除,采取補(bǔ)救措施。
3.2 多周期中斷互監(jiān)控
定時(shí)器周期中斷阻塞時(shí),即使在該中斷處理函數(shù)中重復(fù)多次寫中斷標(biāo)識位,也無法確保有效清除。但當(dāng)發(fā)生周期中斷阻塞時(shí),通過一定間隔時(shí)間的1~2次寫操作變可清除該周期中斷標(biāo)識,因此考慮采取監(jiān)控措施來解決該問題。
同時(shí)使用事件管理器A中的Timer1周期中斷和Timer2周期中斷,長時(shí)間運(yùn)行中多次出現(xiàn)中斷標(biāo)識位無法正確清除現(xiàn)象,但沒有出現(xiàn)過兩個(gè)中斷同時(shí)阻塞現(xiàn)象。將Timer1和Timer2互相監(jiān)控,在兩者周期中斷函數(shù)中分別監(jiān)視對方的中斷標(biāo)識位,以判斷對方是否發(fā)生了中斷阻塞;如果發(fā)現(xiàn)對方未能清除,則主動(dòng)幫助對方清除中斷標(biāo)識位。
采用了監(jiān)控措施后,長期拷機(jī)試驗(yàn)中未再發(fā)生過時(shí)鐘周期中斷長期阻塞現(xiàn)象,有效提高了系統(tǒng)的可靠性。為進(jìn)一步提高中斷標(biāo)識清除的可靠性,可以在啟用事件管理器B的Timer3和Timer4,從而多者之間有效監(jiān)督。
4.結(jié)論
作為一款高性能定點(diǎn)DSP芯片,TMS320F2812具有非常強(qiáng)的應(yīng)用優(yōu)越性,但應(yīng)用中存在外部復(fù)位電路接口兼容性欠佳,內(nèi)部周期中斷不能正常喂狗等問題。本文采用高阻緩沖代替原有設(shè)計(jì),提高了上電復(fù)位、手動(dòng)復(fù)位和內(nèi)部看門狗復(fù)位三者接口兼容性;又針對事件管理器中斷標(biāo)識偶爾無法有效清除的問題,提出了采用多個(gè)時(shí)鐘周期中斷相互監(jiān)控方法,有效提高了喂狗成功的可靠性,減少不必要的復(fù)位。通過軟硬件改進(jìn)設(shè)計(jì),顯著提高了系統(tǒng)的復(fù)位可靠性。
參考文獻(xiàn)
[1]TMS320F281x Data Sheet(Rev.F).