AT32定時(shí)器說(shuō)明
定時(shí)器框架介紹
定時(shí)器由一個(gè)16位的自動(dòng)裝載計(jì)數(shù)器組成(TMR2和TMR5較為特殊,其自動(dòng)裝載計(jì)數(shù)器為32位),它由一個(gè)可編程的預(yù)分頻器驅(qū)動(dòng)。它適合多種用途,包含測(cè)量輸入信號(hào)的脈沖寬度(輸入捕獲),或者產(chǎn)生輸出波形(輸出比較、PWM、嵌入死區(qū)時(shí)間的互補(bǔ)PWM等)。
使用定時(shí)器預(yù)分頻器和CRM時(shí)鐘控制預(yù)分頻器,可以實(shí)現(xiàn)脈沖寬度和波形周期從幾個(gè)微秒到幾個(gè)毫秒的調(diào)節(jié)。
圖1. 通用定時(shí)器的框圖
定時(shí)器由四個(gè)主要部分組成(見(jiàn)圖1)。第一部分時(shí)鐘單元。此單元提供定時(shí)器的時(shí)鐘驅(qū)動(dòng)。第二部分時(shí)鐘基單元,此單元提供定時(shí)器計(jì)數(shù)功能。第三部分輸入捕獲,此單元允許輸入信號(hào)進(jìn)入定時(shí)器模塊。第四部分輸出比較,此單元將定時(shí)器整合后的PWM輸出。
定時(shí)器一般配置步驟
1) 時(shí)鐘使能。crm_periph_clock_enable(CRM_TMR2_PERIPH_CLOCK, TRUE);
2) 初始化定時(shí)器參數(shù),設(shè)置自動(dòng)重裝值,分頻系數(shù),計(jì)數(shù)方式等。
在庫(kù)函數(shù)中,定時(shí)器的初始化參數(shù)是通過(guò)初始化函數(shù)tmr_base_init()及tmr_cnt_dir_set()實(shí)現(xiàn)的:
void tmr_base_init(tmr_type* tmr_x, uint32_t tmr_pr, uint32_t tmr_div);
其中,第一個(gè)參數(shù)是確定是哪個(gè)定時(shí)器,這個(gè)比較容易理解。第二個(gè)參數(shù)tmr_pr是定時(shí)器計(jì)數(shù)的周期值。第二個(gè)參數(shù)tmr_div是定時(shí)器的分頻系數(shù)。
void tmr_cnt_dir_set(tmr_type *tmr_x, tmr_count_mode_type tmr_cnt_dir);
其中,第一個(gè)參數(shù)是確定是哪個(gè)定時(shí)器,第二個(gè)參數(shù)tmr_cnt_dir為定時(shí)器的計(jì)數(shù)模式(向上,向下,中央對(duì)齊)。特別地,增強(qiáng)模式是TMR2和TMR5獨(dú)有的功能。tmr_32_bit_function_enable()為增強(qiáng)模式使能(Plus Mode Enable)函數(shù)。開(kāi)啟TMRx增強(qiáng)模式,該模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位擴(kuò)展為32位。void tmr_32_bit_function_enable(tmr_type *tmr_x, confirm_state new_state);
當(dāng)需要配置時(shí)鐘除頻參數(shù)時(shí)(注意和 TMR_DIV 的區(qū)別,配置濾波、死區(qū)時(shí)間時(shí)需配置該參數(shù)),會(huì)使用到tmr_clock_source_div_set()函數(shù);當(dāng)需要配置重復(fù)周期寄存器時(shí)(高級(jí)定時(shí)器TMR1/TMR8/TMR15才有),會(huì)使用到tmr_repetition_counter_set()函數(shù)。本例程不使用這兩個(gè)函數(shù),僅做簡(jiǎn)要介紹。
void tmr_clock_source_div_set(tmr_type *tmr_x, tmr_clock_division_type tmr_clock_div);void tmr_repetition_counter_set(tmr_type *tmr_x, uint8_t tmr_rpr_value);
3) 設(shè)置TMRx_ IDEN允許更新中斷。
void tmr_interrupt_enable(tmr_type *tmr_x, uint32_t tmr_interrupt, confirm_state new_state);這里著重描述參數(shù)tmr_interrupt,它是用來(lái)指明我們使能的定時(shí)器中斷的類(lèi)型,定時(shí)器中斷的類(lèi)型有很多種,包括更新中斷,觸發(fā)中斷,以及輸入捕獲中斷等等。
4) TMRx中斷優(yōu)先級(jí)設(shè)置。
調(diào)用nvic_irq_enable()函數(shù)即可。
5)允許TMRx工作,也就是使能TMRx。
void tmr_counter_enable(tmr_type *tmr_x, confirm_state new_state);
6)編寫(xiě)中斷服務(wù)函數(shù)。
規(guī)格說(shuō)明
AT32 PWM高頻測(cè)試說(shuō)明
圖2. 高頻測(cè)試原理框圖
測(cè)試高頻信號(hào)時(shí),將高頻信號(hào)輸入作為定時(shí)器TMR2的時(shí)鐘源(如上圖所示),驅(qū)動(dòng)定時(shí)器TMR2的 Counter計(jì)數(shù),使用另一個(gè)定時(shí)器做時(shí)鐘基準(zhǔn),例如每隔1s,獲取TMR2的Counter變化值,則TMR2的變化值即為高頻信號(hào)的頻率值。
使用兩個(gè)定時(shí)器,其中一個(gè)定時(shí)器為T(mén)MR2(這里選取TMR2的原因在于其可以通過(guò)設(shè)置TMRx_CTRL1中的PMEN位,開(kāi)啟TMRx增強(qiáng)模式,該模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位擴(kuò)展為32位),測(cè)試高頻時(shí),有利于Counter計(jì)數(shù),不容易產(chǎn)生溢出。這樣做的好處在于,既可以測(cè)試高頻信號(hào):最高50MHz(受限于I/O口的最高頻率),且沒(méi)有頻繁產(chǎn)生中斷,代碼也有冗余,去處理客戶(hù)任務(wù)。
使用此方法測(cè)試的頻率范圍在:50MHz到1Hz(TMR2的工作頻率為240MHz)。
注意:增強(qiáng)模式是TMR2和TMR5獨(dú)有的功能,使用不支持增強(qiáng)模式的其他TMR,或使用不含有增強(qiáng)模式TMR的AT32時(shí),測(cè)試頻率會(huì)受限。
AT32 PWM低頻測(cè)試說(shuō)明
圖3. 低頻測(cè)試原理框圖
測(cè)試低頻信號(hào)時(shí),將低頻信號(hào)輸入作為定時(shí)器TMR2的捕獲輸入(如上圖所示),觸發(fā)TMR2的輸入捕獲中斷,利用TMR2工作時(shí)鐘除以?xún)纱屋斎氩东@之間Counter變化值,即可得到低頻信號(hào)頻率值。
這里定時(shí)器為T(mén)MR2(這里選取TMR2的原因在于其可以通過(guò)設(shè)置TMRx_CTRL1中的PMEN位,開(kāi)啟TMRx增強(qiáng)模式,該模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位擴(kuò)展為32位),有利于低頻測(cè)試。
使用此方法測(cè)試的最低頻率為:56mHz。(TMR2的工作頻率在240MHz)。
注意:增強(qiáng)模式是TMR2和TMR5獨(dú)有的功能,使用不支持增強(qiáng)模式的其他TMR,或使用不含有增強(qiáng)模式TMR的AT32時(shí),測(cè)試頻率會(huì)受限。
AT32 PWM占空比測(cè)試說(shuō)明
圖4. 占空比測(cè)試原理框圖
測(cè)試PWM占空比時(shí),利用門(mén)控模式(Hang Mode)方式來(lái)測(cè)量(如上圖所示),將輸入信號(hào)同時(shí)作為兩個(gè)定時(shí)器的輸入信號(hào),利用輸入信號(hào)來(lái)控制定時(shí)器的Counter計(jì)數(shù)。一個(gè)定時(shí)器在輸入信號(hào)的高電平階段計(jì)數(shù),另一個(gè)定時(shí)器在輸入信號(hào)的低電平階段計(jì)數(shù),使用第三個(gè)定時(shí)器作為時(shí)間基準(zhǔn),例如產(chǎn)生1s的中斷,在中斷內(nèi),獲取這段時(shí)間內(nèi),兩定時(shí)器Counter計(jì)數(shù)值,將兩值做比值即可獲取當(dāng)前的PWM占空比。
這里定時(shí)器為T(mén)MR2和TMR5(這里選取TMR2、TMR5的原因在于其可以通過(guò)設(shè)置TMRx_CTRL1中的PMEN位,開(kāi)啟TMRx增強(qiáng)模式,該模式下TMRx_CVAL,TMRx_PR,TMRx_CxDT由16位擴(kuò)展為32位),有利于測(cè)試。
這樣做的好處在于,可以測(cè)量較高頻率的占空比值,例如10MHz內(nèi),誤差在1%以?xún)?nèi)。且沒(méi)有頻繁產(chǎn)生中斷,代碼也有冗余,去處理客戶(hù)任務(wù)。
注意:增強(qiáng)模式是TMR2和TMR5獨(dú)有的功能,使用不支持增強(qiáng)模式的其他TMR,或使用不含有增強(qiáng)模式TMR的AT32時(shí),測(cè)試頻率會(huì)受限。
PWM Test快速使用方法
硬件資源
1) AT-START-F403A實(shí)驗(yàn)板圖5. AT-START-F403A實(shí)驗(yàn)板
注意:該Demo是基于AT32F403A的硬件條件,若使用者需要在AT32其他型號(hào)上使用,請(qǐng)修改相應(yīng)配置即可。
pwm input test demo使用
- 打開(kāi)pwm input test project源程序,其中,在at32f403a_407_clock.h里面有三個(gè)宏定義:
分別用于測(cè)試高頻信號(hào),低頻信號(hào),PWM占空比,打開(kāi)需要測(cè)試的宏【注意:每次只開(kāi)一個(gè)宏】。
打開(kāi)pwm output源程序,其中,在at32f403a_407_clock.h中有三個(gè)宏定義:
分別產(chǎn)生高頻信號(hào),低頻信號(hào),PWM占空比用于測(cè)試。
AT-START板載的AT-LINK-EZ自帶串口輸出功能,它可以將USART1_TX口PA9輸出至PC。也可使用其他串口工具進(jìn)行測(cè)試結(jié)果的輸出。
若測(cè)試高頻信號(hào)時(shí):
1)打開(kāi)pwm output源程序宏定義:#define Output_High_Frequency,PA8產(chǎn)生60MHz PWM
(I/O口已超頻工作,可適當(dāng)降低主頻)。編譯下載到實(shí)驗(yàn)板1。
2) 打開(kāi)pwm input test程序宏定義:#define high_frequency_test,編譯下載到實(shí)驗(yàn)板2。
3) 將實(shí)驗(yàn)板1的PA8接入到實(shí)驗(yàn)板2的PA0,USART1通過(guò)PA9輸出當(dāng)前的PWM頻率信息。
串口打印信息如下:
圖6. 測(cè)試高頻信號(hào),串口打印信息
若測(cè)試低頻信號(hào)時(shí):
1) 打開(kāi)pwm output源程序宏定義:#define Output_Low_Frequency,PA8產(chǎn)生500mHz PWM。編譯下載到實(shí)驗(yàn)板1。
2) 打開(kāi)pwm input test程序宏定義:#define low_frequency_test,編譯下載到實(shí)驗(yàn)板2。
3) 將實(shí)驗(yàn)板1的PA8接入到實(shí)驗(yàn)板2的PA0,USART1通過(guò)PA9輸出當(dāng)前的PWM頻率信息。
串口打印信息如下(應(yīng)將第一個(gè)數(shù)據(jù)舍棄):
圖7. 測(cè)試低頻信號(hào),串口打印信息
若測(cè)試PWM占空比時(shí),
1) 打開(kāi)pwm output源程序宏定義:#define Output_PWM_Duty_Ration_10,PA8產(chǎn)生6MHzPWM,占空比為10%。編譯下載到實(shí)驗(yàn)板1。
2) 打開(kāi)pwm input test程序宏定義:#define duty_ration_test,編譯下載到實(shí)驗(yàn)板2。
3) 將實(shí)驗(yàn)板1的PA8接入到實(shí)驗(yàn)板2的PA0,USART1通過(guò)PA9輸出當(dāng)前的PWM占空比信息。
串口打印信息如下:圖8. 測(cè)試 PWM 占空比,串口打印信息關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動(dòng)全球市場(chǎng)32位微控制器(MCU)創(chuàng)新趨勢(shì)的芯片設(shè)計(jì)公司,專(zhuān)注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運(yùn)算效能,并支持工業(yè)級(jí)別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機(jī)、掃地機(jī)、光流無(wú)人機(jī)、熱成像儀、激光雷達(dá)、工業(yè)縫紉機(jī)、伺服驅(qū)控、電競(jìng)周邊市場(chǎng)、斷路器、ADAS、T-BOX、數(shù)字電源、電動(dòng)工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費(fèi)、商務(wù)及工控等領(lǐng)域。
-
mcu
+關(guān)注
關(guān)注
146文章
17438瀏覽量
353972
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
高級(jí)定時(shí)器PWM輸入模式的配置方法

雅特力發(fā)布高性能電機(jī)控制專(zhuān)用MCU
STM32轉(zhuǎn)AT32代碼轉(zhuǎn)換

AT32講堂088 | 雅特力AT32F402/F405時(shí)鐘配置

AT32講堂087 | 雅特力AT32 IDE快速入門(mén)指南

雅特力AT32 MCU的隨機(jī)數(shù)生成

AT32講堂085 | 雅特力AT32 MCU HICK時(shí)鐘校準(zhǔn)

雅特力電機(jī)應(yīng)用快速入門(mén)指南

定時(shí)器的工作方式介紹
雅特力攜多款AT32 MCU新品與應(yīng)用方案亮相2024慕尼黑上海電子展

雅特力AT32 MCU通過(guò)IEC 60730功能安全認(rèn)證,為家電產(chǎn)品提供安全保障

雅特力發(fā)布全新車(chē)載型AT32A423系列MCU
雅特力AT32F405高速USB MCU榮獲“年度最佳MCU”

如果STM32定時(shí)器外接了正交編碼器,該剩余通道是否能做PWM輸出呢?

評(píng)論