使用C2000?? DCC功能監控系統時(shí)鐘
簡(jiǎn)介:
本文引用地址:http://dyxdggzs.com/article/202306/447329.htm在MCU系統里,系統時(shí)鐘的準確性及精度對于系統的安全運行非常重要,為保證系統可對時(shí)鐘的準確性進(jìn)行監控,從F28004X 系列開(kāi)始,C2000 產(chǎn)品增加了一個(gè)新的功能模塊Dual-Clock Comparator,簡(jiǎn)稱(chēng)DCC。DCC是一個(gè)可配置的,雙時(shí)鐘比較的模塊,用于在應用程序的時(shí)間執行期間確定時(shí)鐘信號的準確性。 DCC 使用另一個(gè)輸入時(shí)鐘作為參考來(lái)測量可選時(shí)鐘源的頻率。 時(shí)鐘源以及精度由應用程序編程??梢詫?shí)現對時(shí)鐘信號提供時(shí)鐘輸入頻率的自主、實(shí)時(shí)的監控,當輸入時(shí)鐘頻率范圍超出設定值時(shí),DCC模塊會(huì )觸發(fā)錯誤,從而完成對輸入時(shí)鐘頻率的監控。本文以F280049為例,介紹了DCC模塊的工作原理和實(shí)際應用及相應的注意事項。
1.DCC工作原理介紹和配置方法:
顧名思義,DCC模塊提供了兩個(gè)時(shí)鐘模塊clock0 和clock1 按照設定比例及允許誤差范圍進(jìn)行互相校驗,用戶(hù)可以自由選擇兩個(gè)時(shí)鐘的輸入源,如下圖所示,同時(shí)也需要設定最大的允許誤差。
Counter1 的時(shí)鐘源有:
PLLRAWCLK
INTOSC1
INTOSC2
Counter0 的時(shí)鐘源有:
XTAL
INTOSC1
INTOSC2
注:F280049是Type1 型的DCC,F28002x, F28003x, F280013x, F280015x, F2838x 均為T(mén)ype2 型的DCC,clock0 和clock1都有更多的輸入源,具體細節可以參考對應產(chǎn)品的datasheet。
在DCC的設定過(guò)程中,除了選定的被檢測的兩個(gè)時(shí)鐘外,還有兩個(gè)重要的參數:tolerance 和frequency error。
1. Tolerance : Tolerance代表著(zhù)DCC模塊的顆粒細度,Tolerance越大,Clock0和Clock1的counter 越小,類(lèi)似于A(yíng)DC 的采樣位數更小。但是當頻率異常的時(shí)候,也可以反應的更快。我們一般設這個(gè)值為1%。
2. Frequency error:時(shí)鐘誤差的接受度,由于兩個(gè)時(shí)鐘的不同步和量化都會(huì )引入誤差,所以本身就存在一個(gè)最小的誤差。同時(shí),時(shí)鐘一定程度的偏差也是可以接受的,可以根據系統的需求輸入,針對+/- total error 的時(shí)間偏差,都是可以被接受的。
根據系統需要,給出Tolerance和frequency error,計算方法在庫函數中可以看到:
count0 = window - total_error;
valid = 2 * total_error;
count1 = window * freq1 / freq0;
配置好后,一旦DCC 被使能,counter0 和Valid0 會(huì )在每一次clock0 的時(shí)鐘信號來(lái)一次減1,同樣的,counter1 會(huì )在每一次clock1的時(shí)鐘信號來(lái)一次減1。
我們先假設clock0 是個(gè)可靠的時(shí)鐘,在clock1 的精度在允許最大誤差內運行的時(shí)候,三個(gè)計數器應該按照下列順序到達0:
Counter0 -> Counter1 -> Valid0
如果clock1的誤差偏大,那么 有兩種失效可能性:
一種是clock1 偏快,那么就會(huì )出現clock1 的counter1 先到達0。
一種是clock1 偏慢 ,那么就會(huì )出現clock0和valid0都到達0 之后, counter1 還沒(méi)到達0。
2.實(shí)際應用:
在實(shí)際應用中,我們既可以用Clock0 來(lái)監測Clock1的精度,也可以用clock1 來(lái)監測Clock0的丟失(將Clock0設為XTAL)(因為Clock1輸入只能選內部時(shí)鐘)。DCC 的值的計算比較復雜,可以用TI 提供的driverlib 函數DCC_continuousMonitor()來(lái)完成計算,也可以參考C2000Ware中的例程,方便快速實(shí)現功能。DCC 相關(guān)例程的路徑如下:C:tic2000C2000Ware_4_03_00_00driverlibf28004xexamplesdcc
需要注意的是:
DCC 還可以配置為在單次或連續模式下運行。 在單次模式下,DCC 執行一次性倒計時(shí),當計數器達到 0 時(shí) DCC 停止操作。引發(fā)完成中斷并可以檢查狀態(tài)。
在連續模式下,因為需要鎖住發(fā)生錯誤的時(shí)刻(即counter0 或counter1 的值),也會(huì )使得DCC 模塊報錯后,counter停止工作。會(huì )遇到只能進(jìn)入一次DCC中斷的情況,如果客戶(hù)希望多次進(jìn)入DCC 中斷,則需要在DCC中斷中重新使能DCC模塊,可以通過(guò)調用這個(gè)函數來(lái)實(shí)現:DCC_enableModule(DCC0_BASE)。
3.總結:
使用DCC模塊可以方便快捷地實(shí)現對兩路時(shí)鐘信號輸入頻率的自主、實(shí)時(shí)監控,通過(guò)對兩路時(shí)鐘計數器的比較,可以實(shí)現對時(shí)鐘系統可靠的監控,從而保證整個(gè)系統的安全可靠運行。
4.參考文檔:
Continuous Monitor of the PLL Frequency With the DCC
C2000 Real-Time Control Peripheral Reference Guide (Rev. Q)
TMS320F28004x Real-Time Microcontrollers Technical Reference Manual (Rev. F)
評論