1、前言
客戶想要使用 STM32L031 產(chǎn)生兩個(gè)特定的 PWM 波,這兩個(gè)波形頻率相同,占空比相同,但相位不同。經(jīng)過(guò)驗(yàn)證,使用定時(shí)器的輸出比較模式可以產(chǎn)生這種帶相移的 PWM 波形。
下面以 STM32L031 的 TIM2 為例來(lái)介紹使用產(chǎn)生相移信號(hào)的方法。
2、概述
在未使能預(yù)裝載寄存器時(shí)(OCxPE=0),使用輸出比較模式,可以隨時(shí)通過(guò)軟件更新
TIM_CCRx 寄存器的值,以控制輸出波形。
DMA 的循環(huán)模式,可以在最后一次數(shù)據(jù)傳輸完成后,自動(dòng)重新加載初始編程值,內(nèi)部地址寄存器會(huì)重新加載基址值,進(jìn)入下一個(gè)循環(huán)。
使用輸出比較模式配合 DMA 的循環(huán)模式可以不斷更新 TIMx_CCR 寄存器的值,從而輸出可控的波形。
下面以 NUCLEO-L031 為例介紹產(chǎn)生相移信號(hào)的方法。
3、目標(biāo)波形
為了便于觀察,令 PWM 波的周期為 100ms,占空比為 20%。以 TIM2_CH1 輸出的波形的為基準(zhǔn),其為 0 度相移。
? TIM2_CH1: 相移 0 度,占空比為 20%
? TIM2_CH2: 相移 90 度,占空比為 20%
? TIM2_CH3: 相移 180 度,占空比為 20%
? TIM2_CH4: 相移 270 度,占空比為 20%
4. 使用 STM32CubeMX 進(jìn)行配置
使用 STM32CubeMX 進(jìn)行基礎(chǔ)參數(shù)的配置。
這里配置時(shí)鐘為 32MHz,如圖 1 所示。

配置時(shí)鐘源為內(nèi)部時(shí)鐘,因?yàn)?TIM2_CH1 為基準(zhǔn)信號(hào),直接配置為 PWM 輸出即可。
TIM2_CH2、TIM2_CH3 和 TIM2_CH4 配置為輸出比較模式,如圖 2 所示。

配置 TIM2 的預(yù)分頻值與計(jì)數(shù)周期,配置計(jì)數(shù)周期為 100,計(jì)數(shù)模式配置為"Up"。配置channel1 的模式為"PWM mode 1",因?yàn)檎伎毡葹?20%,計(jì)數(shù)周期為 100,所以 CCR1 寄存器配置為 20(也即 Channel1 的 Pulse 配置為"20"),極性配置為"High"。Channel2、Channel3 和 Channel4 的模式都配置為"Toggle on match"(匹配時(shí)翻轉(zhuǎn)電平),極性配置為"low",CCR 不需要配置,因?yàn)闀?huì)通過(guò) DMA 自動(dòng)寫入。具體配置如圖 3 所示。

添加 TIM2_CH2、TIM2_CH3 和 TIM2_CH4 的 DMA,并進(jìn)行配置,配置的內(nèi)容都相同,配置如下:
? Direction: Memory To Peripheral
? Mode: Circular
? Data Width: Word
具體配置如圖 4 所示

5. 修改代碼
由 STM32CubeMX 生成代碼之后,需要在生成的代碼中添加一些處理。
首先需要計(jì)算 channel2、channel3 和 channel4 的 CCR 值。以 channel2 為例:配置的計(jì)數(shù)周期為 100,初始極性為 low,當(dāng) CNT 計(jì)數(shù)值與 CCR 寄存器匹配的時(shí)候,輸出電平發(fā)生翻轉(zhuǎn),所以為了實(shí)現(xiàn)與 channel1 占空比相同的波形,需要翻轉(zhuǎn)兩次電平。
第一次翻轉(zhuǎn)的 CCR 可以通過(guò)相位差進(jìn)行計(jì)算,第二次翻轉(zhuǎn)的 CCR 值可以通過(guò)占空比和第一次翻轉(zhuǎn)的 CCR 值這兩個(gè)條件進(jìn)行計(jì)算。Channel2 第一次翻轉(zhuǎn)的 CCR 值為: "100 x (90°/360°) = 25";第二次翻轉(zhuǎn)的 CCR 值為:"25 + (20% x 100) = 45"
表 1 由上面計(jì)算方式同理可得:

在 main.c 文件中需要建立三個(gè)數(shù)組,將 channel2~4 的兩次 CCR 值存入這三個(gè)數(shù)組中,具體如下所示:


然后在 mian 函數(shù)中添加如下代碼。使 channel1 輸出 PWM 波,配置 channel2~4 在 DMA 模式下使用輸出比較模式進(jìn)行輸出。

6. 測(cè)試結(jié)果
測(cè)試結(jié)果如下圖所示,4 個(gè) channel 產(chǎn)生的 PWM 波的周期都為 100ms,占空比都為20%,測(cè)試出來(lái)的 channel2~4 的相移與設(shè)計(jì)目標(biāo)波形一致。

7、小結(jié)
使用定時(shí)器的輸出比較模式與 DMA 進(jìn)行搭配,可以比較靈活的生成波形。
來(lái)源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
寄存器
+關(guān)注
關(guān)注
31文章
5617瀏覽量
130381 -
PWM
+關(guān)注
關(guān)注
116文章
5889瀏覽量
226476 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3370瀏覽量
124433
發(fā)布評(píng)論請(qǐng)先 登錄
研發(fā)工程師和測(cè)試工程師對(duì)于產(chǎn)品新功能的見解有何不同?#電子工程師 #電路知識(shí) #人工智能
45W 三輸出電源 PT - 4503:性能強(qiáng)大的電子工程師之選
電子工程師的雙標(biāo)瞬間 #電子 #電子愛好者 #電子工程師 #揚(yáng)興科技 #雙標(biāo)
電子工程師的寶藏——LTC3456多輸出DC/DC轉(zhuǎn)換器解析
電子工程師看書的四個(gè)階段 #電子 #硬件工程師 #電子愛好者 #反轉(zhuǎn) #揚(yáng)興科技
什么是BSP工程師
硬件工程師:這才是真正的大學(xué)生就業(yè)指導(dǎo) #電子 #硬件工程師 #電子愛好者 #晶振 #揚(yáng)興科技
想成為硬件工程師?我教你啊!你得先學(xué)會(huì)這些...... #硬件工程師 #電子工程師 #電子愛好者 #電子行業(yè)
硬件工程師面試必會(huì):10個(gè)核心考點(diǎn)#硬件設(shè)計(jì) #硬件工程師 #電路設(shè)計(jì) #電路設(shè)計(jì)
硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
(仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師
工程師筆記 | 使用 TIMER 輸出比較模式輸出相移信號(hào)
評(píng)論