目錄預(yù)覽
1.問題背景
2.TIM DMA burst
3.產(chǎn)生 PWM
4.結(jié)論
1.問題背景
客戶需要 MCU 輸出一組變頻的 PWM 波形來控制外圍器件,并且不同頻率脈沖的個數(shù)也不同。STM32U5 芯片擁有 TIM1/TIM8 高級定時器,還有通用定時器TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。
TIM 模塊中,可通過修改 ARR 寄存器的值來修改 PWM 的頻率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,則可以通過修改 RCR 與 CCR 寄存器,來控制脈沖個數(shù)及占空比。由于要同時修改多個 TIM 寄存器,需要使用 TIM 的 DMA burst 功能來實現(xiàn)此需求。
2.TIM DMA burst
STM32 片內(nèi)部分 TIMER 在產(chǎn)生單個定時器事件情況下可以基于特定硬件機制觸發(fā)多個 DMA 請求,這樣產(chǎn)生多個連續(xù)的 DMA 傳輸來實現(xiàn)對多個 TIMER 寄存器的批量訪問。
這就是所謂的 TIM DMA burst 功能,這里有兩個專用寄存器:
TIMx_DCR :DBSS : 觸發(fā) DMA burst 的事件源DBL : DMA burst 傳輸個數(shù) DBA : DMA burst 傳輸?shù)?TIM 寄存器基地址索引
TIMx_DMAR :TIM DMA Burst 時,DMA 訪問此寄存
3.產(chǎn)生 PWM
本文使用 TIM1 來產(chǎn)生 PWM,在 U575 NECLEO 板上測試,MCU 主頻為 100MHz。
使用兩個頻率分別對應(yīng) TIM 寄存器組的值如下:ARR/ RCR/ CCR1
uint32_t pulse1[3] = {1000, 2, 500} ;
uint32_t pulse2[3] = {5000, 1, 2500} ;
即輸出 3 個 pulse1 的脈沖后,再輸出 2 個 pulse2 脈沖,這樣交替輸出。
3.1.1. TIM1 配置
TIM1 配置如下,使能寄存器預(yù)裝載功能。

3.1.2. GPDMA 配置
使用 GPDMA 通道 12 的 linked list 模式,并配置為循環(huán)模式:

Linked List 配置中,創(chuàng)建一個 list queue,并添加兩個 list node,選擇 GPDMA 來執(zhí)行此 list queue,同樣配置為循環(huán)模式,指定循環(huán)起始節(jié)點為 TN1,如下圖。

Linked List 節(jié)點配置中,使用 TIM1 update 事件來產(chǎn)生 DMA 請求,指定 DMA 目的地址為 TIMx_DMAR 寄存器,源地址為 pulse1 數(shù)組地址。TN2 只需將 pulse1 修改為 pulse2即可。

3.1.3. TIM DMA burst
在 CubeMX 生成代碼后,添加以下代碼,將 TIM 與 DMA 通道綁定,并配置TIMx_DCR 寄存器:

3.1.4. 測試結(jié)果
測試結(jié)果如下圖,可以看到兩個頻率的 PWM 波形交替輸出,且脈沖個數(shù)也符合需求:

本篇工程師筆記主要通過在TIM 模塊中,修改 ARR 寄存器的值來修改 PWM 的頻率滿足客戶需要 MCU 輸出一組變頻的 PWM 波形控制外圍器件的需求。由于文章篇幅有限,完整內(nèi)容請點擊“閱讀原文”下載原文檔閱讀。

長按掃碼關(guān)注公眾號
更多資訊,盡在STM32
▽點擊“閱讀原文”,可下載原文檔
原文標題:工程師筆記|TIM DMA burst 輸出變頻 PWM 波形
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機
+關(guān)注
關(guān)注
6067文章
44991瀏覽量
650429 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
364896
原文標題:工程師筆記|TIM DMA burst 輸出變頻 PWM 波形
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄


硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師

搞SK6812燈珠的控制,選擇了PWM+DMA的方式,遇到的問題求解決


STM32F103 TIM1_CH3N輸出的PWM波形為什么會多出一個邊沿?
如何使用TIM2的更新事件觸發(fā)TIM1的PWM DMA?

硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達半導(dǎo)體

不同時期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實 #YXC晶振 #揚興科技
PWM波形的特性與優(yōu)化

評論