日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式大雜燴
[導讀]關注「嵌入式大雜燴」,星標公眾號,一起進步!來源:茶話MCU我們知道,利用單片機定時器捕獲功能測量脈沖信號寬度及占空比是種很常見的做法。這里以STM32的定時器為例來介紹基于其捕獲功能實現(xiàn)對脈寬的測量的思路及過程。一般來講,使用STM32定時器的捕獲功能來實現(xiàn)脈寬測量,我們可以選...

關注「嵌入式大雜燴」,星標公眾號,一起進步!

來源:茶話MCU


我們知道,利用單片機定時器捕獲功能測量脈沖信號寬度及占空比是種很常見的做法。這里以STM32的定時器為例來介紹基于其捕獲功能實現(xiàn)對脈寬的測量的思路及過程。

一般來講,使用STM32定時器的捕獲功能來實現(xiàn)脈寬測量,我們可以選用一個通道、也可以使用兩個通道。使用1個通道時,只需使用定時器基本的輸入捕獲功能結(jié)合中斷或DMA即可實現(xiàn);若使用兩個通道時可以將捕獲功能與定時器的從模式來相結(jié)合完成。這里就兩種方案的實現(xiàn)示例都做個簡單介紹。


不妨先介紹基于單個通道的輸入捕獲功能來實現(xiàn)對1路信號脈沖寬度及占空比的測量,并在測量過程中統(tǒng)計用于測量的定時器自身的溢出事件,以保障即使被測信號脈寬長于測量定時器自身的溢出周期時也能有效測量。


這里選用STM32F411 Nucleo 開發(fā)板 ,集成開發(fā)環(huán)境選用了ARM MDK IDE。

一、實現(xiàn)思路及步驟

1.1、使用STM32F411Nucleo板的板載芯片內(nèi)的TIM3的通道1產(chǎn)生一個周期為5s,占空比為40%的PWM輸出信號,然后將該信號連線到TIM4的定時器輸入通道2,通過它對來自于TIM3的PWM輸出信號進行脈寬及占空比的測量。?


?測量過程中,TIM4的通道2對外來信號的捕捉過程是這樣的,TIM4的通道2對外來信號的一個完整周期實現(xiàn) 3次捕捉。每次捕捉事件時計數(shù)器的值會被裝入CCR寄存器。



初始狀態(tài)0基于上升沿發(fā)起第一次捕捉,記錄下第1次的捕捉值【Capture_1st】,并對TIM4定時器溢出事件計數(shù)器清零,同時將捕獲極性切換為下沿捕捉。之后進入狀態(tài)1,等待后續(xù)的下沿捕獲。當發(fā)生下沿捕獲時,記下第2次的捕捉值【Capture_2nd】,并將前面這段時間的定時器溢出次數(shù)也記錄下來【Front_Num_OvEvent】,再次將極性切換為上沿捕捉,進入狀態(tài)2,等待第3次捕獲。在狀態(tài)2的情況下,當發(fā)生上沿捕獲時,記錄下第3次的捕捉值【Capture_3rd】,并將整個測試周期內(nèi)發(fā)生的定時器溢出次數(shù)記錄下來【Total_Num_OvEvent】,然后進入狀態(tài)3進行占空比【Signal_Duty】和脈寬【Signal_Cycle】的計算。完畢后回到初始狀態(tài),準備下次的測量。

另外,在TIM4的更新中斷里對非初始狀態(tài)的溢出事件累加統(tǒng)計,放在變量【Num_OvEvent】里。


示例代碼里用到變量Measure_State來記錄和表示當前測試狀態(tài)。


1.2 、測量用到的算式

根據(jù)上面的介紹,一次完整的測量下來,測得的周期和占空比可以用下面算式求得。

【下面算式貌似復雜,只需把上面測試原理和那幾個數(shù)據(jù)理清自然就會計算】


1.3 、基本配置準備

1.3.1、 實現(xiàn)TIM3 通道1【PA6】PWM輸出,計數(shù)周期5s,占空比40%,用做被測信號。

A、選擇定時器內(nèi)部時鐘作為時鐘源,STM32F411芯片定時器內(nèi)部時鐘為100Mhz;

B、設置分頻比,選擇計數(shù)模式、設置計數(shù)脈沖個數(shù);

對時鐘源20000分頻,PSC=20000-1;選擇向上計數(shù)模式up counting;

計數(shù)器基于分頻后的脈沖每計數(shù)設置為25000個后,發(fā)生溢出并產(chǎn)生更新事件及中斷。則:ARR=25000-1

按照上面參數(shù)來設計,定時器的定時周期或者說溢出周期就是5s.

C、它需做PWM輸出,這里選擇PWM 模式1,占空比為40%,

CCR=(ARR 1)*0.40 =10,000


使用STM32CubeMx圖形化工具進行配置:


1.3.2?、實現(xiàn)TIM4通道2的輸入捕獲,假定TIM4的溢出周期為20ms.

A、選擇定時器內(nèi)部時鐘為時鐘源,32F411定時器內(nèi)部時鐘為100Mhz;

B、設置分頻比,選擇計數(shù)模式、設置計數(shù)脈沖個數(shù);

先對時鐘源100分頻、即PSC=100-1;選擇向上計數(shù)模式up counting;

計數(shù)器基于分頻后的脈沖每計數(shù)20000個,發(fā)生溢出并產(chǎn)生更新事件及中斷。

則:ARR=20000-1

按照上面參數(shù)來設計,定時計數(shù)周期或者說溢出周期就是20ms.

另外,通道2配置為輸入捕捉,初始捕捉極性位選擇上升沿。



1.4 、工程代碼的生成、添加和整理

通過STM32CUBEMX依據(jù)上述參數(shù)完成配置,并開啟TIM4的中斷使能,然后生成工程。再在工程里添加應用戶代碼。

? ? ? ? ? ? ? ?? ......

? ? ?Measure_State= 0x00;? ?//測試初始態(tài)

???? Num_OvEvent= 0x00;???//TIM4溢出次數(shù)初始值

部分處理代碼的簡要說明:

在TIM4通道2的捕獲中斷里做3次捕捉值的獲取以及計算,在TIM4更新中斷里對溢出事件進行統(tǒng)計。

二、本次示例的結(jié)果驗證

實驗中tim4的時基參數(shù)保持不變,可通過調(diào)整TIM3的PWM輸出的脈寬和占空比,來看看實驗結(jié)果。下面有一個視頻剪輯,就是上面工程驗證結(jié)果的部分內(nèi)容,有興趣可以觀看。


上面簡單介紹了基于單通道的定時器捕獲實現(xiàn)對脈寬及占空比測量的過程,現(xiàn)在繼續(xù)介紹使用雙通道,基于定時器PWM輸入模式測量脈寬及占空比同樣,在測量過程中也統(tǒng)計用于測量的定時器自身的溢出事件。所用開發(fā)板和開發(fā)環(huán)境跟上面一致。

? ? ? ? ? ? ? ? ?

三、實現(xiàn)原理、思路及步驟

3.1、同樣,利用板載芯片內(nèi)的TIM3的通道1產(chǎn)生一個周期為5s,占空比為40%的PWM輸出信號,然后將該信號連線到TIM4的定時器通道2【TI2】,作為其直接輸入。基于PWM輸入模式對來自于TIM3的PWM輸出信號進行脈寬及占空比的測量。


這里先簡單介紹下PWM輸入模式工作原理。

*它是基于輸入捕獲定時器從模式相結(jié)合的一個具體應用。

*?同一外部輸入引腳【僅限于定時器的TI1/TI2】的輸入濾波信號【TIxFPx】映射到內(nèi)部2個捕捉通道【僅限于IC1/IC2】,且配置為相反的捕捉極性,即一個通道捕捉上沿,另一通道捕捉下沿。

*用于測量的定時器配置在復位從模式,外部輸入信號的濾波信號TIxFPx作為定時器的觸發(fā)信號,令定時器復位。

*經(jīng)過兩次連續(xù)的捕捉結(jié)合定時器的溢出事件統(tǒng)計可方便地測得信號的周期及占空比。

具體到這里,觸發(fā)信號來自待測信號,即TIM3的PWM輸出,與TIM4的TI2相連,經(jīng)過邊沿檢測和濾波后的TI2FP2做為IC2的輸入信號的同時擔當TIM4的觸發(fā)輸入信號,其觸發(fā)極性可以軟件配置,此處配置為上沿觸發(fā)。當TIM4收到觸發(fā)信號時,定時器的計數(shù)器會被復位更新。當計數(shù)器配置為UP計數(shù)模式時,計數(shù)器會被清零并重新開始計數(shù)。


3.2、大致測量過程是這樣的:TIM4配置在復位從模式。待測信號從TI2輸入。



當從通道2出現(xiàn)信號的上升沿時,TIM4計數(shù)器被復位清零,同時產(chǎn)生更新事件觸發(fā)事件,相關標志位會被硬件置1.


初始狀態(tài)下,將定時器從模式觸發(fā)沿配置為上沿觸發(fā),捕捉通道1配置下沿捕捉,捕捉通道2配置為上沿捕捉。初始狀態(tài)下,待測信號的上升沿使得TIM4的計數(shù)器被復位清零,并進入測量狀態(tài)1,并開啟定時器的溢出事件實時統(tǒng)計,代碼里用到的變量是Num_OvEvent。當發(fā)生通道1的下沿捕捉時,記錄下第1次的捕捉值【Vaule_1stCap】,并記錄下自復位以來到下沿捕捉這段事件的溢出次數(shù),放在變量Front_Num_OvEvent里。然后進入狀態(tài)2。在狀態(tài)2的情況下當發(fā)生通道2的上沿捕獲時,記錄下第2次的捕捉值【Vaule_2ndCap】,并將整個測試周期內(nèi)定時器溢出次數(shù)記錄在【Total_Num_OvEvent】,然后進入狀態(tài)3進行占空比【Signal_Duty】和脈寬【Signal_Cycle】的計算。完畢后回到初始狀態(tài),準備下次的測量。

另外,在TIM4的更新中斷里對非初始狀態(tài)的溢出事件累加統(tǒng)計,放在變量【Num_OvEvent】里。


示例代碼里用到一個變量Measure_State來記錄和表示當前測試狀態(tài),大致流程如下。


整個測量過程中,我們使用觸發(fā)脈沖產(chǎn)生的觸發(fā)事件作為每次開啟測量的起始。


3.3、 測量用到的算式

根據(jù)上面的介紹,1次完整的測量下來,測得的周期和占空比可以用下面算式求得:



?

3.4、基本配置準備

3.4.1 、實現(xiàn)TIM3 通道1的PWM輸出,計數(shù)周期5s,占空比40%,用做被測信號。

A、選擇定時器內(nèi)部時鐘作為時鐘源,STM32F411芯片定時器內(nèi)部時鐘為100Mhz;

B、設置分頻比,選擇計數(shù)模式、設置計數(shù)脈沖個數(shù);

對時鐘源20000分頻,PSC=20000-1;選擇向上計數(shù)模式up counting;

計數(shù)器基于分頻后的脈沖每計數(shù)25000個后,發(fā)生溢出并產(chǎn)生更新事件及中斷。則:ARR=25000-1

按照上面參數(shù)來設計,定時器的定時周期或者說溢出周期就是5s.

C、它需做PWM輸出,這里選擇PWM 模式1,占空比為40%,

則CCR=(ARR 1)*0.40 =10,000

CubeMx圖形化配置界面:

3.4.2、 實現(xiàn)TIM4通道2做PWM模式輸入測量,假定tim4計數(shù)器溢出周期為20ms。


先做時基參數(shù)的配置:

1、選擇定時器內(nèi)部時鐘為時鐘源,32F411定時器內(nèi)部時鐘為100Mhz;

2、設置分頻比,選擇計數(shù)模式、設置計數(shù)脈沖個數(shù);

先對時鐘源100分頻、即PSC=100-1; 選擇向上計數(shù)模式up counting;

計數(shù)器基于分頻后的脈沖每計數(shù)20000個,發(fā)生溢出并產(chǎn)生更新事件及中斷。則:ARR=20000-1。注意:TIM4工作在復位從模式。

按照上面參數(shù)來設計,定時計數(shù)周期或者說溢出周期就是20ms.


再看看定時器TIM4的捕獲配置:

TIM4輸入捕捉通道2配置為直接輸入捕捉,捕捉極性選擇上升沿。

TIM4輸入捕捉通道1配置為間接輸入捕捉,捕捉極性選擇為下降沿。

3.5、工程代碼的生成、添加和整理

通過STM32CUBEMX依據(jù)上述參數(shù)完成配置,并開啟TIM4的中斷使能,然后生成工程。再在工程里添加應用戶代碼?!局涣谐霾糠种苯佑嘘P的】


部分處理代碼簡要說明:

? 發(fā)生觸發(fā)事件時,進入測量狀態(tài):

在TIM4通道1發(fā)生下沿捕捉事件時,將前面時間段的溢出次數(shù)記錄下來并切換測量狀態(tài)。

在TIM4通道2發(fā)生上沿捕捉事件時,將整個測量周期發(fā)生的溢出次數(shù)記錄下來,并轉(zhuǎn)入計算處理狀態(tài)。

? ??

另外,在測量狀態(tài)下,基于TIM4的更新中斷對溢出次數(shù)進行統(tǒng)計。

四、實驗結(jié)果驗證

同樣,我們保持實驗中tim4的時基參數(shù)保持不變,通過調(diào)整TIM3的PWM輸出波形的脈寬和占空比,來看看實驗結(jié)果。


五、小結(jié)

上面介紹了兩種測量信號脈寬及占空比的方案,都用了捕獲中斷和更新中斷。其中,在第2種方案中用觸發(fā)事件作為每次測量的起始,這算是個關鍵點。順便說下,我們在利用定時器測量脈寬涉及到更新事件次數(shù)統(tǒng)計時,比較容易出現(xiàn)多統(tǒng)計一次的問題。因為定時器初始化完成后會軟件產(chǎn)生一次更新事件,所以建議在啟動定時器更新中斷前對該標志位做個清零操作。不過,在我上面兩個方案的示例代碼的初始化階段,這個操作倒是可有可無,因為我的代碼里對更新事件計數(shù)還要結(jié)合狀態(tài)機,并非一有更新中斷就累加。


上面提到的實現(xiàn)思路及代碼僅供參考,旨在拋磚引玉。當你對原理把握得越清晰時,應用就越靈活。最后,就上面提到的兩種測量方案基于個人的理解做個簡單比較。



【注:2個通道并不意味著需要2個物理管腳,其實1個腳就夠了。另外基于定時器捕獲功能配合DMA,解碼方面也能有很好的發(fā)揮。


?下方的小視頻,是基于單通道模式測量信號占空比的驗證部分的視頻剪輯,有興趣可以打開看下。

==================================

往期話題閱讀鏈接[點擊即可閱讀]:

1、IAP代碼與APP代碼合并燒錄示例

2、基于STM32 GUI應用的選型推薦

3、STM32H743從RAM啟動異常的案例

4、PCB板邊緣的敏感線為何容易ESD干擾

5、一個關于CAN出錯中斷重復出現(xiàn)的話題




本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉