?上一章講了輸出比較的內(nèi)容,輸出比較就是定時(shí)器自增,同時(shí)和CCR比較,按照自己設(shè)置的比較要求,輸出REF高低電平,這一章我們講下面結(jié)構(gòu)圖輸出比較左邊部分,也就是輸入捕獲
首先,介紹一下輸入捕獲
IC(input capture)輸入捕獲,輸入捕獲模式下,當(dāng)通道輸入引腳出現(xiàn)指定電平跳變時(shí),當(dāng)前CNT的值就將被鎖存到CCR中,可用于測(cè)量PWM波形的頻率,占空比,脈沖間隔,電平持續(xù)時(shí)間參數(shù)等
每個(gè)高級(jí)定時(shí)器和通用定時(shí)器都擁有4個(gè)輸入捕獲通道,因?yàn)楹洼敵霰容^共用一個(gè)通道,所以一個(gè)通道只能執(zhí)行輸入捕獲或者輸出比較
輸入捕獲可配置為PWMI模式,同時(shí)測(cè)量頻率和占空比
可配合主從觸發(fā)模式,實(shí)現(xiàn)硬件全自動(dòng)測(cè)量
簡(jiǎn)單來說,輸入捕獲就是用來測(cè)量引腳輸入的PWM信號(hào)的頻率占空比等參數(shù),既然說到了測(cè)量的部分,那就簡(jiǎn)單了解一下頻率測(cè)量的相關(guān)知識(shí),? ?還有就是對(duì)于STM32來說,只能測(cè)量數(shù)字信號(hào),如果要測(cè)量正弦波的話,還需要搭建一個(gè)信號(hào)處理電路
這里給了一個(gè)方波信號(hào),左邊頻率高,越往右,頻率越低
1:測(cè)頻法:? ?給一個(gè)閘門時(shí)間,對(duì)上升沿計(jì)次(當(dāng)然下降沿也可以,為了方便,我統(tǒng)一用上升沿),得到的上升沿次數(shù),講一下它的上升沿計(jì)數(shù)工作流程,計(jì)數(shù)器不斷自增,每來一個(gè)上升沿,計(jì)數(shù)器就把計(jì)數(shù)的值鎖存在CCR里,并且用主從模式設(shè)置計(jì)數(shù)復(fù)位,又從0開始計(jì)數(shù),每計(jì)一個(gè)上升沿就是一個(gè)周期,一般閘門時(shí)間選一秒,一秒有多少個(gè)上升沿,頻率就算出來了?
2:測(cè)周法,捕獲信號(hào)的兩個(gè)上升沿,然后測(cè)量一下這兩個(gè)上升沿中間持續(xù)的時(shí)間就行了,實(shí)際上,我們沒有一個(gè)精度無窮大的秒表來測(cè)量時(shí)間,那么我們就用一個(gè)已知標(biāo)準(zhǔn)頻率Fc的記次時(shí)鐘來驅(qū)動(dòng)計(jì)數(shù)器,計(jì)數(shù)從一個(gè)上升沿開始,計(jì)數(shù)器從0一直到下一個(gè)上升沿結(jié)束,記一個(gè)標(biāo)準(zhǔn)頻率的時(shí)間是Fc的倒數(shù),就是1/Fc,記N個(gè),就是N/Fc,時(shí)間是N/Fc,那么頻率fx就是N/Fc的倒數(shù),所以fx=Fc/N
那么這兩個(gè)方法有什么區(qū)別呢,什么時(shí)候用測(cè)頻,什么時(shí)候用測(cè)周呢
圖上能看出來,一般信號(hào)頻率高的時(shí)候,就可以用測(cè)頻法,頻率低的就用測(cè)周法
那么多高算高,多低算低呢,就取一個(gè)中界頻率,高于中界頻率,用測(cè)周法,低于中界頻率,用測(cè)頻法,中界頻率怎么算呢,中界頻率就是誤差相等的點(diǎn),誤差是由記次N產(chǎn)生的,那么如果有一個(gè)地方,也就是測(cè)頻法和測(cè)周法的記次N相同,那就是中界頻率了嘛,N相同那就好辦了,聯(lián)立測(cè)頻和測(cè)周的公式,N相同,解出fx,就是根號(hào)下T分之Fc了
接下來,我們了解一下輸入捕獲的結(jié)構(gòu)框圖
首先從通有四個(gè)通道,對(duì)應(yīng)不同的引腳,那ch1通道來舉例,引腳進(jìn)來的信號(hào),經(jīng)過濾波器,濾去毛刺信號(hào),選擇邊沿檢測(cè),也就是上升沿或者下降沿,當(dāng)然這個(gè)濾波器和邊沿檢測(cè)器有兩塊功能相同的模塊,主要是因?yàn)椋ǖ?和通道2可以交叉輸入,通道1可以輸出到通道2,通道2也可以輸出到通道一,這樣同一個(gè)信號(hào)就能同時(shí)測(cè)頻率和占空比,然后經(jīng)過分頻器,再到捕獲電路,每來一個(gè)觸發(fā)信號(hào),CNT就向CCR轉(zhuǎn)運(yùn)一次,這樣就能測(cè)頻率了,如果要測(cè)占空比的話,那么用一個(gè)引腳,選擇兩個(gè)通道,一個(gè)通道測(cè)上升沿,一個(gè)通道測(cè)下降沿,就能算占空比了
接下來講講主從觸發(fā)模式,如何觸發(fā)硬件自動(dòng)化的操作,寫代碼能用到
?
主從觸發(fā)模式,就是主模式,從模式,觸發(fā)源選擇這三個(gè)功能的簡(jiǎn)稱?,主模式可以將定時(shí)器內(nèi)部的信號(hào)映射到TRGO引腳,用于觸發(fā)別的外設(shè),這部分叫主模式,從模式就是接收其他外設(shè)的一些信號(hào),用于控制自身定時(shí)器的運(yùn)行,簡(jiǎn)單來說,就是被別的信號(hào)控制,所以這部分叫從模式,觸發(fā)源選擇就是,選擇從模式的觸發(fā)源,也可以認(rèn)為是從模式的一部分
工作流程就是,定時(shí)器主模式輸出更新信號(hào)到TRGO,從模式選擇接收信號(hào)源選擇,執(zhí)行從模式操作
最后,來過一下輸入捕獲的流程圖
?首先配置時(shí)基單元,CNT計(jì)數(shù)器不斷自增,計(jì)數(shù)器計(jì)數(shù)標(biāo)準(zhǔn)頻率為,如果是內(nèi)部時(shí)鐘,那就是Fc=72M/PSC,接著引腳接收信號(hào),濾波器濾掉雜波,經(jīng)過邊沿檢測(cè)和極性選擇,選擇TI1FP1為上升沿觸發(fā),分頻器可以根據(jù)自己的要求對(duì)接收到方波進(jìn)行分頻,然后每來一個(gè)上升沿信號(hào),CNT就鎖存到CCR1里,當(dāng)然如果要復(fù)位CNT的話,還可以設(shè)置主從觸發(fā)模式,觸發(fā)源選擇TI1FP1為觸發(fā)源,從模式為RESET,這樣計(jì)數(shù)器鎖存一次,接著還觸發(fā)了主從觸發(fā)模式,CNT也復(fù)位,從0計(jì)數(shù),這樣就能根據(jù)計(jì)數(shù)的結(jié)果,算出接收到方波信號(hào)頻率了。
如果還要對(duì)一個(gè)信號(hào)測(cè)量頻率和占空比等,就可以對(duì)一個(gè)信號(hào),經(jīng)過兩個(gè)通道,每個(gè)通道干自己分配的事情就行了,流程圖大致是這樣
這樣,通道1的信號(hào)還能輸入到通道2,通道1和上一張圖的流程一樣,計(jì)算頻率,通道2的TI1FP2就選擇下降沿觸發(fā),通道1為上升沿觸發(fā)算頻率,通道2為下降沿觸發(fā),算占空比
那么占空比具體怎么算的呢
?
?上升沿來的時(shí)候,CNT開始清零計(jì)數(shù),當(dāng)下降沿來的時(shí)候,CCR2捕獲CNT的值,CCR2不設(shè)置主從觸發(fā)模式,單純就干鎖存CNT到CCR2里面這件事,所以,CCR2里面就是高電平的計(jì)數(shù)值,接著,下一個(gè)上升沿來,CCR1才捕獲CNT,CCR1設(shè)置了主從觸發(fā)模式,自動(dòng)清零CNT,這樣CCR2就是高電平的計(jì)數(shù)值,CCR1就是整個(gè)周期的計(jì)數(shù)值,CCR2/CCR1不就是高電平的占空比了嘛。
當(dāng)然補(bǔ)充一句關(guān)于通道的選擇,ch1通道和ch2通道可以交叉輸入哈,從結(jié)構(gòu)圖里可以看出,通道1可以輸入到通道2,通道2可以輸入到通道一,也可以通道1同時(shí)輸入到通道1和通道2,通道2也可以同時(shí)輸入到通道2和通道1,可以方便靈活切換哈
最后來簡(jiǎn)單過一下輸入捕獲的代碼,接收引腳的選擇有要求的哈,不是隨便哪個(gè)引腳都能當(dāng)輸入捕獲使用,具體可以看手冊(cè)
?比如用的定時(shí)器2(TIM2)的CH1通道,就只能用PA0引腳
代碼步驟?
1:RCC開啟時(shí)鐘,把GPIO和TIM的時(shí)鐘打開
2:GPIO初始化,把GPIO配置成輸入模式(一般是上拉或者浮空輸入模式)
3:配置時(shí)基單元,讓CNT計(jì)數(shù)器在內(nèi)部時(shí)鐘的驅(qū)動(dòng)下自增運(yùn)行
4:配置輸入捕獲單元,用結(jié)構(gòu)體配置流程圖里通道的參數(shù)
5:選擇從模式的觸發(fā)源
6:觸發(fā)之后執(zhí)行的操作
7:調(diào)用TIM_Cmd函數(shù),開啟定時(shí)器
開啟時(shí)鐘
?配置GPIO
選擇內(nèi)部時(shí)鐘,配置時(shí)基單元
配置輸入捕獲單元?
?
觸發(fā)源選擇和從模式?
使能計(jì)數(shù)器
讀取頻率?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-696485.html文章來源:http://www.zghlxwxcb.cn/news/detail-696485.html
?
到了這里,關(guān)于STM32定時(shí)器(輸入捕獲)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!