靈動(dòng)微-電動(dòng)馬達(dá)方案中需要使用到六步PWM輸出功能
針對(duì)電動(dòng)馬達(dá)方案中需要使用到六步PWM輸出功能,本篇文章將向大家介紹如何使用MM32L0系列MCU實(shí)現(xiàn)六步PWM輸出功能。MM32高級(jí)控制定時(shí)器TIM1有互補(bǔ)輸出的功能,我們便可以利用定時(shí)器 TIM1 來(lái)產(chǎn)生 3 對(duì) 6 路的互補(bǔ) PWM 輸出。MM32高級(jí)控制定時(shí)器TIM1產(chǎn)生六步PWM輸出,用于驅(qū)動(dòng)三相電機(jī),對(duì)應(yīng)著直流無(wú)刷電機(jī)的六步換相。
六步 PWM 產(chǎn)生:當(dāng)在一個(gè)通道上應(yīng)用了互補(bǔ)輸出時(shí), OCxM、CCxE 和 CCxNE位的預(yù)載位有效,這些預(yù)裝載位被傳送到影子寄存器,因此可以預(yù)先設(shè)置好下一步的配置,并在同一時(shí)間更改所有通道的配置。COM 事件可以通過(guò)硬件(在 TRGI的上升沿) 設(shè)置或者軟件修改TIM1_EGR 寄存器的 COM 位來(lái)產(chǎn)生。
當(dāng) COM 事件發(fā)生時(shí)會(huì)設(shè)置一個(gè)標(biāo)志位(TIM1_SR 寄存器中的 COMIF 位),這時(shí)如果已設(shè)置了TIM1_DIER 寄存器的 COMIE 位,則產(chǎn)生一個(gè)中斷;如果已設(shè)置了 TIMx_DIER寄存器的COMDE位,則產(chǎn)生一個(gè)DMA請(qǐng)求。
下圖顯示當(dāng)發(fā)生 COM 事件時(shí),三種不同配置下OCx和OCxN 輸出。
在本次實(shí)驗(yàn)中主要教大家如何配置PWM的輸出狀態(tài)以及輸出有效電平設(shè)置,在主函數(shù)的循環(huán)中更新PWM狀態(tài)輸出,將不使用中斷方式,用戶在實(shí)際電機(jī)配置程序中可以直接采用該配置方式移植到TIM1_BRK_UP_TRG_COM_IRQHandler函數(shù)中。
程序配置:
1> 開(kāi)啟定時(shí)器TIM1的時(shí)鐘
2> 初始化 TIM1,設(shè)置 TIM1 的 ARR 和 PSC,向上計(jì)數(shù)模式
3> 設(shè)置BDTR,使能剎車輸入信號(hào),高電平有效
4> 設(shè)置 TIM1_CH1/CH1N,TIM1_CH2/CH2N,TIM1_CH3/CH3N的 PWM 模式,PWM 模式2,使能 TIM1 的 CHx 輸出
5> 使能TIM1_CR1的自動(dòng)重裝載預(yù)裝載允許位
6> 使能定時(shí)器TIM1
main函數(shù)配置流程:
1> systick延時(shí)函數(shù)初始化
2> GPIO口配置,PA8/PB13,PA9/PB14,PA10/PB15,分別為TIM1的三組互補(bǔ)通道輸出:CH1/CH1N,CH2/CH2N,CH3/CH3N,復(fù)用推挽輸出,最大輸出速度50MHz, 除此之外,還有一個(gè)引腳可以配置也可以不配置,那就是TIM1_BKIN對(duì)應(yīng)的引腳PB12,TIM1_BKIN的功能是檢測(cè)故障,如果當(dāng)PB12檢測(cè)到高電平(取決于剎車有效電平的設(shè)置)時(shí),就表示檢測(cè)到故障,然后它會(huì)自動(dòng)關(guān)閉定時(shí)器。
3> 定時(shí)器TIM1初始化及輸出配置
4> PWM輸出模式配置,在我配置的程序中大家可以看到對(duì)TIM1_CCMR1\TIM1_CCMR2\TIM1_CCER三個(gè)寄存器進(jìn)行操作即可實(shí)現(xiàn)需要的功能
實(shí)驗(yàn)結(jié)果:
從邏輯分析儀抓的波形可以看到在6個(gè)通道中,如果一個(gè)通道處在PWM輸出模式,另外的5個(gè)通道處在關(guān)閉狀態(tài),依次輪詢?cè)撨^(guò)程。
需要弄清楚我對(duì)上述三個(gè)寄存器做了什么操作需要參考UM_MM32L0xx文檔的第13.4.7章節(jié)、13.4.8章節(jié)、13.4.9章節(jié)三個(gè)章節(jié)寄存器
如上圖所示:位3是輸出比較1預(yù)裝載使能位,TIMx_CCR1的預(yù)裝載值在更新事件到來(lái)時(shí)加載到當(dāng)前寄存器,該位需要置1,位6:4是PWM輸出比較模式配置,如果CCMR1的輸出比較1配置0x48表示強(qiáng)制為無(wú)效電平,0x58表示強(qiáng)制為有效電平,0x68表示PWM模式1。
定時(shí)器的配置模式如上所示,但是輸出到GPIO口的電平狀態(tài)還需要查表34,根據(jù)表中的定義配置所需要的電平狀態(tài)。
用戶在配置電機(jī)所需要的PWM功能時(shí),只需要根據(jù)對(duì)TIM1_CCMR1 \ TIM1_CCMR2 \ TIM1_CCER 三個(gè)寄存器進(jìn)行操作,如果對(duì)寄存器的操作值不是很清楚,建議大家在調(diào)試模式下,直接通過(guò)修改該三個(gè)寄存器的值,然后查看對(duì)應(yīng)的GPIO得狀態(tài)變化,然后記錄下來(lái),在程序中將測(cè)試值寫入到相對(duì)應(yīng)的寄存器中,重新下載程序到MM32L0系列 MCU中觀察對(duì)應(yīng)的GPIO的電平狀態(tài)。
編輯:ls 最后修改時(shí)間:2022-06-08