高級定時器
STM32F103有 2 個高級定時器 TIM1 和 TIM8,高級定時器的功能主要有定時、輸入捕獲、輸出比較、互補輸出等。
高級定時器簡介:
計數(shù)器16bit,上 / 下 / 兩邊 計數(shù),TIM1和TIM8,還有一個重復(fù)計數(shù)器RCR,獨有;
有4個GPIO,其中通道1 ~ 3還有互補輸出GPIO;
時鐘來自PCLK2,為72M,可實現(xiàn)1~65536分頻;
高級定時器和通用定時器的引腳分布:
高級定時器結(jié)構(gòu)框圖(分成6個部分):?
一、時鐘源:
-
內(nèi)部時鐘(CK_INT);
-
外部時鐘模式1:外部輸入引腳TIx(x=1,2,3,4);
-
外部時鐘模式2:外部觸發(fā)輸入ETR;
-
內(nèi)部觸發(fā)輸入(ITRx):使用一個定時器作為另一個定時器的預(yù)分頻器;
下面,我們來分析一下這個時鐘源的框圖:
1 內(nèi)部時鐘CK_INT:內(nèi)部時鐘 CK_INT 即來自于芯片內(nèi)部,等于 72M,一般情況下,我們都是使用內(nèi)部時鐘;
2 外部時鐘模式1:
(1)時鐘信號輸入引腳:
當(dāng)使用外部時鐘模式1時,時鐘信號來自于定時器的輸入通道,共?4個,分別為 TI1 / 2 / 3 / 4,即 TIMx_CH1 / 2 / 3 / 4。
外部的GPIO?TIx,對應(yīng):TIMx_CH1 / 2 / 3 / 4
由TIM_CCMRx?的位?CCxS[1:0]配置,其中?CCMR1?控制?TI1 / 2,?CCMR2?控制?TI3 / 4
中文參考手冊中提到,通道2可以配置為輸出,如果是輸入模式,可以選擇連接CH1 or CH2,同樣的,通道1也可以選擇配置成連接CH1 or CH2。
(2)濾波器:
如果來自外部的時鐘信號的頻率過高或者混雜有高頻干擾信號的話,我們就需要使用濾波器對信號重新采樣,來達到降頻或者去除高頻干擾的目的,具體的由 TIMx_CCMRx的位 ICxF[3:0]配置。
具體如何濾波?
(3)邊沿檢測:
邊沿檢測的信號來自于濾波器的輸出,在成為觸發(fā)信號之前,需要進行邊沿檢測,決定是上升沿有效還是下降沿有效。
(4)觸發(fā)選擇:
(5)從模式選擇:
選定了觸發(fā)源信號后,最后我們需把信號連接到?TRGI?引腳,讓觸發(fā)信號成為外部時鐘模式?1?的輸入,最終等于?CK_PSC,然后驅(qū)動計數(shù)器?CNT?計數(shù)。
3 外部時鐘模式2
網(wǎng)上關(guān)于TI1FP1的描述:
? ? ? ?比如 TI1FP1 與 TI1FP2。說實在的,這個地方參考手冊里就沒有個明確的表述,讓人很費解。但是可以可以推理得出來,二者都是來自同一 TI1 輸入通道,經(jīng)過輸入濾波和邊沿檢測器后所產(chǎn)生的具有相同特征的信號,然后映射到不同的輸入捕捉通道,本質(zhì)上還是同一路信號。
?同理,TI2信號,經(jīng)過濾波和邊沿檢測后產(chǎn)生了2路濾波信號,分別是TI2FP1與TI2FP2,它倆也是具有相同特征的信號,只是TI2FP1映射到捕捉通道IC1,TI2FP2映射到捕捉通道IC2。
4 內(nèi)部觸發(fā)輸入:
內(nèi)部觸發(fā)輸入是使用一個定時器作為另一個定時器的預(yù)分頻器。硬件上高級控制定時器和通用定時器在內(nèi)部連接在一起,可以實現(xiàn)定時器同步或級聯(lián)。
四.輸入捕獲:
輸入捕獲可以對輸入的信號的上升沿,下降沿或者雙邊沿進行捕獲,常用的有測量輸入信號的脈寬和測量 PWM 輸入信號的頻率和占空比這兩種。
輸入捕獲的大概的原理就是:當(dāng)捕獲到信號的跳變沿的時候,把計數(shù)器 CNT 的值鎖存到捕獲寄存器 CCR 中,把前后兩次捕獲到的 CCR 寄存器中的值相減,就可以算出脈寬或者頻率。如果捕獲的脈寬的時間長度超過你的捕獲定時器的周期,就會發(fā)生溢出,這個我們需要做額外的處理。
1 普通脈寬測量:當(dāng)檢測到第一個上升沿時,計數(shù)器CNT開始從0計數(shù),又檢測到下降沿時產(chǎn)生中斷,此時的CNT值被鎖存到CCR寄存器中,此時CCR的值就對應(yīng)高電平的時間。
2 PWM輸入測量:一路輸入信號(TI1)占用兩個捕獲通道(IC1 和 IC2)。
輸入捕獲框圖:
(1)輸入通道:
需要被測量的信號從定時器的外部引腳 TIMx_CH1/2/3/4 進入,通常叫 TI1 / 2 / 3 / 4。
(2)輸入濾波器和邊沿檢測器:
這一塊和外部時鐘模式一差不多。那么為什么需要濾波呢?
當(dāng)輸入的信號存在高頻干擾的時候,我們需要對輸入信號進行濾波,即進行重新采樣,根據(jù)采樣定律,采樣的頻率必須大于等于兩倍的輸入信號。比如輸入的信號為 1M,又存在高頻的信號干擾,那么此時就很有必要進行濾波,我們可以設(shè)置采樣頻率為 2M,這樣可以在保證采樣到有效信號的基礎(chǔ)上把高于 2M 的高頻干擾信號過濾掉。
邊沿檢測器用來設(shè)置信號在捕獲的時候是什么邊沿有效,可以是上升沿,下降沿,或者是雙邊沿,具體的由 CCER 寄存器的位 CCxP 和 CCxNP 決定。
(3)捕獲通道:
捕獲通道就是圖中的 IC1 / 2 / 3 / 4,每個捕獲通道都有相對應(yīng)的捕獲寄存器 CCR1 / 2 / 3 / 4,當(dāng)發(fā)生捕獲的時候,計數(shù)器 CNT的值就會被鎖存到捕獲寄存器中
這里我們要搞清楚輸入通道和捕獲通道的區(qū)別,輸入通道是用來輸入信號的,捕獲通道是用來捕獲輸入信號的通道,一個輸入通道的信號可以同時輸入給兩個捕獲通道。比如輸入通道 TI1 的信號經(jīng)過濾波邊沿檢測器之后的 TI1FP1 和 TI1FP2 可以進入到捕獲通道IC1 和 IC2,其實這就是 PWM 輸入捕獲,只有一路輸入信號(TI1)卻占用了兩個捕獲通道(IC1 和 IC2)。當(dāng)只需要測量輸入信號的脈寬時候,用一個捕獲通道即可。
(4)預(yù)分頻器(用來降頻):
捕獲通道 ICx 的輸出信號會經(jīng)過一個預(yù)分頻器,用于決定發(fā)生多少個事件時進行一次捕獲。具體的由寄存器 CCMRx 的位 ICxPSC配置,如果希望捕獲信號的每一個邊沿,則不分頻。
(5)捕獲寄存器:
五 輸出比較:
輸出比較就是通過定時器的外部引腳對外輸出控制信號,有凍結(jié)、將通道 X(x=1,2,3,4)設(shè)置為匹配時輸出有效電平、輸出無效電平、翻轉(zhuǎn)、強制為無效電平、強制為有效電平、PWM1 和 PWM2 這八種模式。其中 PWM 模式是輸出比較中的特例,使用的也最多。
結(jié)構(gòu)框圖:
1 比較寄存器:
當(dāng)計數(shù)器 CNT 的值跟比較寄存器 CCR 的值相等的時候,輸出參考信號 OCxREF 的信號的極性就會改變,其中 OCxREF=1(高電平)稱之為有效電平,OCxREF=0(低電平)稱之為無效電平,并且會產(chǎn)生比較中斷 CCxI,相應(yīng)的標(biāo)志位 CCxIF(SR 寄存器中)會置位。然后 OCxREF再經(jīng)過一系列的控制之后就成為真正的輸出信號 OCx/OCxN。
2 死區(qū)發(fā)生器:
在生成的參考波形 OCxREF 的基礎(chǔ)上,可以插入死區(qū)時間,用于生成兩路互補的輸出信號 OCx 和 OCxN,死區(qū)時間的大小具體由 BDTR 寄存器的位 DTG[7:0]配置。死區(qū)時間的大小必須根據(jù) 與輸出信號相連接的器件及其特性來調(diào)整。下面我們簡單舉例說明下帶死區(qū)的PWM 信號的應(yīng)用,我們以一個板橋驅(qū)動電路為例。
為了理解死區(qū)發(fā)生器,先看一個電機橋式驅(qū)動電路:
3 輸出控制:
4 輸出引腳
輸出比較的輸出信號最終是通過定時器的外部 IO 來輸出的,分別為 CH1 / 2 / 3 / 4,其中前面三個通道還有互補的輸出通道 CH1 / 2 / 3N。
輸入捕獲的應(yīng)用:
1 測量脈寬或頻率
2 PWM輸入模式:
輸出比較的應(yīng)用:
PWM輸出:
PWM?輸出就是對外輸出脈寬(即占空比)可調(diào)的方波信號,信號頻率由自動重裝寄存器?ARR?的值決定,占空比由比較寄存器?CCR?的值決定。
?PWM邊沿對齊模式:
占空比
周期T內(nèi)CNT從0一直加到ARR,比如ARR為99, 那么CNT共計數(shù)100.
在看高電平的時間,CNT從0一直加到CCR,比如CCR是30,注意在等于30的瞬間,就已經(jīng)跳變?yōu)榈碗娖搅?,所以CNT從0到29是高電平,總共為30個數(shù)的時間
所以占空比為30/100=30%
電機控制:
剎車功能描述(強制關(guān)閉輸出,功能是防止電機損壞,此時輸出為設(shè)置的空閑電平):
死區(qū)時間寄存器:
文章來源:http://www.zghlxwxcb.cn/news/detail-829374.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-829374.html
到了這里,關(guān)于stm32專題二十六:高級定時器介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!