0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

工程師筆記|TIM DMA burst 輸出變頻 PWM 波形

STM32單片機 ? 來源:未知 ? 2022-12-26 20:15 ? 次閱讀

關鍵詞:TIM, GPDMA

目錄預覽

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。

使用兩個頻率分別對應 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 配置如下,使能寄存器預裝載功能。

3de6edb0-8514-11ed-bfe3-dac502259ad0.png

3.1.2. GPDMA 配置

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

3df8049c-8514-11ed-bfe3-dac502259ad0.png

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

3e112e22-8514-11ed-bfe3-dac502259ad0.png

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

3e2a4d62-8514-11ed-bfe3-dac502259ad0.png

3.1.3. TIM DMA burst

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

3e430de8-8514-11ed-bfe3-dac502259ad0.png

3.1.4. 測試結(jié)果

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

3e5ae9c2-8514-11ed-bfe3-dac502259ad0.png

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

3e73f444-8514-11ed-bfe3-dac502259ad0.png

長按掃碼關注公眾號

更多資訊,盡在STM32

點擊“閱讀原文”,可下載原文檔


原文標題:工程師筆記|TIM DMA burst 輸出變頻 PWM 波形

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44561

    瀏覽量

    635664
  • STM32
    +關注

    關注

    2270

    文章

    10901

    瀏覽量

    356226

原文標題:工程師筆記|TIM DMA burst 輸出變頻 PWM 波形

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PWM波形的特性與優(yōu)化

    PWM波形的特性 1. 定義與基本原理 PWM是一種通過改變脈沖寬度來控制輸出電壓或電流的技術。在PWM信號中,一個周期內(nèi),脈沖的高電平(O
    的頭像 發(fā)表于 11-29 09:13 ?468次閱讀

    pwm與spwm波,載波、參考波與輸出波形的關系

    PWM(Pulse Width Modulation,脈沖寬度調(diào)制)與SPWM(Sinusoidal PWM,正弦脈沖寬度調(diào)制)波是電力電子領域中常用的兩種調(diào)制技術,它們在載波、參考波與輸出
    的頭像 發(fā)表于 08-14 16:58 ?2283次閱讀

    求助,關于STM32G473 TIM8 DMA burst模式問題求解

    我在配置外部觸發(fā)源定時觸發(fā)TIM8_CH1輸出PWM時,打算使用DMA1_Channel4在每次TIM8 UP時觸發(fā)
    發(fā)表于 07-23 06:39

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    DMA傳輸控制PWM輸出占空比遇到的疑問求解

    問題是這樣的: 定義了一個數(shù)組,內(nèi)容為PWM波的占空比對應的脈沖數(shù),本人利用DMA通道將數(shù)組傳輸至TIM1的CCR,TIM1設置為PWM
    發(fā)表于 04-25 08:11

    定時器TIM2輸出TRGO信號,DMA使用DMA_REQUEST_TIM2_UP請求可以實現(xiàn)嗎?

    定時器TIM2輸出TRGO信號,DMA使用DMA_REQUEST_TIM2_UP請求可以實現(xiàn)嗎?
    發(fā)表于 04-10 07:09

    f446rct6在使用dma控制pwm占空比時,pwm波形異常的原因?

    單片機:f446rct6 系統(tǒng):freertos 庫:hal 程序邏輯: 1.初始化timer輸出pwm波同時初始化dma并連接到Capture/Compare 寄存器 2.啟動timer 3.在
    發(fā)表于 04-09 07:45

    TIM_PWM+DMA輸出三個不同占空比的單脈沖,為什么第三個數(shù)據(jù)總是第一個輸出

    使用TIM_PWM + DMA,DMA傳輸長度為3,即順序輸出3個不同占空比的單脈沖(10%,20%,50%),三個脈沖輸出完成后進入
    發(fā)表于 04-03 07:23

    STM32F103VET6使用定時器DMA做比較輸出PWM輸出波形第一次不正確是怎么回事?

    輸出,第二路使用PWM輸出的方式,第一路的相位差想到了用DMA方式,我在程序燒錄進硬件電路后示波器觀察波形
    發(fā)表于 03-28 07:27

    STM32F407配置DMA TIM PWM一直無法生效的原因?

    使用HAL庫配置 TIM 輸出DMA PWM ,幾乎差不多的 代碼,F(xiàn)103可以啟動,但F407無法啟動??煞裼欣炭梢詤⒖?,感覺資料太少了。 if (HAL_
    發(fā)表于 03-21 06:07

    STM32G070CB TIM1使用DMA 方式來產(chǎn)生PWM不同duty的波形,無法進入中斷的原因?

    TIM1使用DMA 方式來產(chǎn)生PWM不同duty 的波形,想監(jiān)控一下DMA 是否完成,但是無法進入中斷。以下初始化的配置:(
    發(fā)表于 03-20 08:28

    STM32F051C8 PA0不能以DMA的方式輸出PWM,沒有正確波形輸出是哪里出了問題?

    ,新建工程,選擇型號STM32F051C8; 選擇內(nèi)部時鐘,配置時鐘為48Mhz, 配置TIM2 CH1為DMA PWM輸出; 生
    發(fā)表于 03-13 06:20

    STM32U575 pwmDMA輸出波形少一段怎么處理?

    這是我的 DMA 的配置 這是我的PWM配置 上面的波形是F103輸出波形。 下面的波形
    發(fā)表于 03-13 06:10

    stm32f303RE PWM輸出波形變形的原因?

    我使用stm32 nucleo開發(fā)板,使用TIM3 CH4輸出PWM方波,發(fā)現(xiàn)波形變形,整個工程只有這個
    發(fā)表于 03-08 08:12