1. STM硬件資源
1.1 STM硬件單元
TC37x芯片有3個(gè)STM模塊,每個(gè)STM模塊可以產(chǎn)生兩個(gè)SRx_INT中斷信號(hào)(通過(guò)STM模塊的Compare功能實(shí)現(xiàn),下文介紹),Davinci OS中的硬件定時(shí)器就是使用STM模塊的SRx_INT中斷信號(hào)。
1.2 STM時(shí)鐘
系統(tǒng)冷啟動(dòng)或者系統(tǒng)復(fù)位后,fSTM=50MHz,也就是fSTM的一個(gè)tick為1/(50*(10^6)) = 0.00000002 s = 20ns.
Note: TC37x的時(shí)鐘系統(tǒng)后面的文章再介紹,本文默認(rèn)系統(tǒng)啟動(dòng)后fSTM就為50MHz.
1.3 STM中斷源
在1.1章節(jié)中介紹了TC37x有3個(gè)STM硬件單元,每個(gè)STM硬件單元可以產(chǎn)生兩個(gè)中斷信號(hào),中斷號(hào)計(jì)算公式如下截圖所示:
e.g. STM0的SR0_INT = 0x300 + 0*8 + 0*4 = 0x300 = 768.
2. 功能描述
2.1 功能特色
一個(gè)不受約束的64-bit計(jì)數(shù)器,也就是能產(chǎn)生一個(gè)0– 2^64的計(jì)數(shù),如果我們使用fSTM = 50MHz,那么計(jì)數(shù)器的最大計(jì)數(shù)值對(duì)應(yīng)的最大時(shí)間為:2^64 * 20ns = 4270079.647..天 = 11698 年,也就說(shuō)實(shí)際使用中這個(gè)計(jì)數(shù)器不可能溢出。
這個(gè)64b-bit計(jì)數(shù)器可以同步讀出。理論上,TC37x是32-bit系統(tǒng),每個(gè)指令周期頂多能讀32-bit數(shù)據(jù),TC37x芯片是怎么保證64-bit計(jì)時(shí)器值同步讀出來(lái)的了?-- 通過(guò)STM_CAP寄存器機(jī)制,后面介紹。
64 位計(jì)數(shù)器的不同 32 位部分可以同步讀取。STM的64-bit提供了6個(gè)32-bitTimer可以同步讀出來(lái),后文介紹。
基于與部分 STM 內(nèi)容的比較匹配,靈活地生成服務(wù)請(qǐng)求。通過(guò)STM_CMPx的比較機(jī)制靈活的產(chǎn)生服務(wù)請(qǐng)求事件,后文具體介紹。
系統(tǒng)啟動(dòng)后,STM自動(dòng)啟動(dòng)。
如果ARSTDIS.STMxDIS被清除,則Application Reset也會(huì)ResetSTM registers;如果ARSTDIS.STMxDIS沒(méi)有被清除,則Application Reset不會(huì)ResetSTM registers,只有System Reset才會(huì)ResetSTM registers.
2.2 STM計(jì)時(shí)器Timer
STM作為Timer時(shí),可以提供7個(gè)不同基準(zhǔn)的Timer:
STM_TIM0: 基準(zhǔn)為2^0 tick = 1 tick = 20 ns,也就是每20 ns,計(jì)數(shù)器加1.
STM_TIM1: 基準(zhǔn)為2^4 tick = 16 tick = 320 ns,…
STM_TIM2: 基準(zhǔn)為2^8 tick = 256 tick = 5120 ns = 5.120 us,…
STM_TIM3: 基準(zhǔn)為2^12 tick = 4096 tick = 81920 ns = 81.92 us,…
STM_TIM4: 基準(zhǔn)為2^16 tick = 65536 tick = 1310720 ns= 1.31072 ms,…
STM_TIM5: 基準(zhǔn)為2^20 tick = 1048576 tick = 209715220 ns = 0. 20971522 s,…
STM_TIM6: 基準(zhǔn)為2^32 tick = 4294967296 tick = 85899345920 ns = 85.899345920 s,…
理論上,TC37x是32-bit系統(tǒng),每個(gè)指令周期頂多能讀32-bit數(shù)據(jù)且在讀取32-bit數(shù)據(jù)的時(shí)候STM是不會(huì)停下來(lái)等你再讀另一個(gè)32-bit的數(shù)據(jù)的,TC37x芯片是怎么保證64-bit計(jì)時(shí)器值同步讀出來(lái)的了?-- 通過(guò)STM_CAP寄存器機(jī)制,每次讀取其中一個(gè)寄存器 TIM0 至 TIM5 時(shí),它都會(huì)鎖定 STM 高部分的內(nèi)容。因此,在讀取下部時(shí), CAP 完全同時(shí)保存計(jì)時(shí)器的上限值。然后,第二個(gè)讀取操作將讀取 CAP 的內(nèi)容以獲得完整的計(jì)時(shí)器值。
2.3 STM比較器功能
64 位系統(tǒng)計(jì)時(shí)器的內(nèi)容可以與 CMP0 和 CMP1 寄存器中存儲(chǔ)的兩個(gè)比較值的內(nèi)容進(jìn)行比較。服務(wù)請(qǐng)求可以在 STM 與 CMP0 或 CMP1 寄存器的比較匹配上生成。
2.3.1 STM比較功能寄存器
CMCON(Compare Match Control Register)寄存器的MSIZEx位域配置CMPx寄存器從0-bit開(kāi)始多少位用來(lái)和STM比較,MSTARTx位域配置STM Counter的哪一位開(kāi)始和CMPx寄存器比較。
2.3.2 STM比較器功能示例
如下圖所示,對(duì)應(yīng)的CMCOM的配置為:
MSIZE0 = 10001B = 17D; MSTART0 = 01010B = 10D
MSIZE1 = 00111B = 7D; MSTART1 = 00111B = 7D
MSIZE0 = 10001B = 17D : Compare Register0從0-bit開(kāi)始的7個(gè)bit用于比較
MSTART0 = 01010B = 10D : 和STM的第10-bit位開(kāi)始的7個(gè)bit比較
CMP1類似……
Compare成功后,就會(huì)產(chǎn)生Event,Event可用于配置中斷。
2.3.3 STM比較器中斷控制
Compare中斷事件產(chǎn)生舉例:
第1步:配置STMx_CMCON. MSTARTx位域,設(shè)置比較寄存器在STM中的起始位置
第2步:配置STMx_CMCON.MSIZEx使用STM_CMPx的寬度(多少bit)
第3步:配置STM_CMPx.CMPVAL[31:0]定時(shí)器值
第4步:配置STM_ICR.CMPxOS到時(shí)觸發(fā)STMIR0還是STMIR1中斷
第5步:配置STM_ICR.CMPxEN使能中斷,等待定時(shí)中斷觸發(fā)
中斷觸發(fā)后:在中斷服務(wù)例程(ISR,中斷服務(wù)函數(shù))里設(shè)置STM_ISCR.CMPxIRR=1清除中斷,并重復(fù)上述第5步操作重新使能中斷,等待中斷觸發(fā)
2.4 配置STM是否在Debug時(shí)停止
OCS.SUS[27:24]位域配置為0時(shí),STM計(jì)時(shí)不會(huì)被外部調(diào)試器的操作打斷; OCS.SUS[27:24]位域配置為2, 在使用調(diào)試器Stop程序的時(shí)候,STM會(huì)同步Stop計(jì)時(shí)。
3. AUTOSAR OS中的配置
3.1 OsHardwareTimerChannels
Davinci的SIP包中硬件相關(guān)的配置都是默認(rèn)配置好,TC37x芯片有三個(gè)STM定時(shí)器,每個(gè)STM有兩個(gè)通道(也就每個(gè)STM能產(chǎn)生兩個(gè)中斷事件)。
3.2 OsIsrs中配置STM中斷
OsIsrs中關(guān)于STM產(chǎn)生的中斷也是默認(rèn)配置好的,使用三個(gè)STM的Channel0通道。
3.3 OsCounters引用STMTimer
OsCounsters使用硬件定時(shí)器STM,需要引用STM的配置。
4. 總結(jié)
STM一般用作Os的Timer,如果OS中配置使用了STM,那么應(yīng)用就不能再使用了。具體怎么使用,那就是Os的靜態(tài)代碼實(shí)現(xiàn)的了。作為學(xué)習(xí),我們理解了STM的Compare Operation機(jī)制就能去閱讀Os是怎么配置寄存器實(shí)現(xiàn)Timer功能的了。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5355瀏覽量
120541 -
比較器
+關(guān)注
關(guān)注
14文章
1652瀏覽量
107253 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3251瀏覽量
114932 -
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
421瀏覽量
32735 -
STM
+關(guān)注
關(guān)注
1文章
556瀏覽量
42498
原文標(biāo)題:TC3xx芯片STM介紹
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論