娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

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

發(fā)布者:RadiantBreeze最新更新時間:2024-07-10 來源: elecfans關(guān)鍵字:TIM  DMA  burst  PWM  波形 手機看文章 掃描二維碼
隨時隨地手機看文章

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ù)裝載功能。


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 波形控制外圍器件的需求。


關(guān)鍵字:TIM  DMA  burst  PWM  波形 引用地址:工程師筆記|TIM DMA burst 輸出變頻 PWM 波形

上一篇:基于Gokit3微信寵物屋與機智云的物聯(lián)網(wǎng)智能家居
下一篇:STM單片機中的按鍵消抖和FPGA消抖

推薦閱讀最新更新時間:2025-04-23 20:14

STM32F4_TIM輸出PWM波形(可調(diào)頻率、占空比)
Ⅰ、概述 上一篇文章關(guān)于STM32基本的計數(shù)原理明白之后,該文章是在其基礎(chǔ)上進行拓展,講述關(guān)于STM32比較輸出的功能,以輸出PWM波形為實例來講述。 提供實例工程中比較實用的函數(shù):只需要調(diào)用該函數(shù),參數(shù)為頻率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下實例中1KHz、20%占空比波形圖 TIM2_CH2_PWM(1000, 20); 關(guān)于本文的更多詳情請往下看。 Ⅱ、實例工程下載 筆者針對于初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學者一看就明白,以簡單明了的工程供大家學習。 筆者提供的實例工程都是在板子上
[單片機]
STM32F4_<font color='red'>TIM</font><font color='red'>輸出</font><font color='red'>PWM</font><font color='red'>波形</font>(可調(diào)頻率、占空比)
STM32 雙DAC DMA TIM6輸出正弦波例子
STM32F103有雙DAC通道,利用DMA實現(xiàn)2個波形輸出 #include stm32f10x.h //DAC1,2初始化 void dac_init(void) { RCC- APB2ENR |= RCC_APB2ENR_IOPAEN; //開啟端口A時鐘 RCC- APB1ENR |= RCC_APB1ENR_DACEN; //開啟DAC時鐘 GPIOA- CRL &= 0xff00ffff; //PA4,PA5模擬輸入 DAC- CR = DAC_CR_TEN1 | DAC_CR_TEN2; //開啟觸發(fā)使能才能設(shè)置觸發(fā)模式 //開啟DAC,關(guān)閉輸出緩存,TI
[單片機]
STM32F1/F7使用HAL庫DMA方式輸出PWM詳解
什么是PWM? 核心提示:文章目錄一. STM32的DMA PWM原理1. DMA簡介2. DMA方式輸出PWM是怎么回事3. HAL庫DMA配置PWM的幾個函數(shù)二. STM32CubeMx配置 DMA PWM三. 波形調(diào)試過程分析一. STM32的DMA PWM原理最開始疑惑過STM32如何才能實現(xiàn)精確數(shù)量的脈沖輸出從而控制步進電機,直到做WS2812B燈珠的驅(qū)動程序時才知道原來有DMA-PWM模式。使用DMA輸出PWM可以精確控制脈沖數(shù)量,且可以精確控制脈沖周期與占空比,更重要的是使用DMA傳輸不消耗CPU資源。 文章目錄 一. STM32的DMA PWM原理1. DMA簡介2. DMA方式輸出PWM是怎么回事3. HAL庫D
[單片機]
STM8學習筆記---PWM互補波形輸出
脈寬調(diào)制(PWM,Pulse Width Modulation)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中。 常見的用法是輸出一路PWM波,可以通過調(diào)節(jié)PWM的頻率和占空比來控制電路。還有另一種方法是輸出一組互補的PWM波,這兩個波形頻率相同,相位相反,兩組波形之間有死區(qū)控制時間。 STM8單片機自帶PWM互補波形輸出功能,通過資料可以看出 STM8共有3個死區(qū)時間可調(diào)的互補輸出。 本次實驗用的STMs8003單片機有2個互補輸出。 PC6口和PC3口是定時器1通道1互補輸出。PC7口和PC4口是定時器1通道2互補輸出。 要配置輸出互補P
[單片機]
STM8學習筆記---<font color='red'>PWM</font>互補<font color='red'>波形</font><font color='red'>輸出</font>
STM32如何實現(xiàn)可調(diào)頻率、占空比的PWM波形,且可指定輸出脈沖個數(shù)?
讀者朋友“*imYan*”問: pwm實現(xiàn)頻率可調(diào)和占空比可調(diào)后怎么來實現(xiàn)輸出10個脈沖呢?我這邊看有門控或者單脈沖加重復(fù)計數(shù),黃老師平時用的什么方法? 我的回答: 使用兩個TIM定時器:一個輸出可調(diào)頻率、占空比的PWM,一個對輸出PWM脈沖計數(shù)(計時)。 1.門控方式能實現(xiàn),但需要復(fù)雜的配置和計算,不推薦。 2.脈沖計數(shù)是比較實際,也是比較簡單的方式; 對輸出PWM脈沖計數(shù)(計時)方法有多種: 1.IO中斷計數(shù),或同步定時中斷計數(shù):用另外一個定時器,按照相同頻率中斷計數(shù)(類似IO中斷); 2.由PWM頻率和脈沖個數(shù),計算輸出全部所需的時間,使用定時中斷,關(guān)閉輸出PWM; 3.利用定時器外部脈沖
[單片機]
PIC16F914輸出可調(diào)占空比PWM波形
#include pic.h typedef unsigned int uint; typedef unsigned char uchar; #define KEY0_DOWN() (RB4==0)//定義按鍵按下 __CONFIG(0X1014);//內(nèi)部時鐘 uchar KEY0_FLAG=0; /*************************/ //OSC SET; INTER 4MHZ PERIOD 1US /*************************/ void OSC_INIT() { OSCCON=0X67;//設(shè)置內(nèi)部時鐘4MHZ } /*************************/ //DEL
[單片機]
基于STM32單片機高級控制定時器TIM1和TIM8的功能解析
高級控制定時器(TIM1 和TIM8) TIM1和TIM8定時器的功能包括: ● 16位向上、向下、向上/ 下自動裝載計數(shù)器 ● 16位可編程( 可以實時修改)預(yù)分頻器,計數(shù)器時鐘頻率的分頻系數(shù)為1~65535 之間的任意數(shù)值 ● 多達4個獨立通道: ─ 輸入捕獲 ─ 輸出比較 ─ PWM生成(邊緣或中間對齊模式) ─ 單脈沖模式輸出 ● 死區(qū)時間可編程的互補輸出 ●使用外部信號控制定時器和定時器互聯(lián)的同步電路 ● 允許在指定數(shù)目的計數(shù)器周期之后更新定時器寄存器的重復(fù)計數(shù)器 ● 剎車輸入信號可以將定時器輸出信號置于復(fù)位狀態(tài)或者一個已知狀態(tài) ● 如下事件發(fā)生時產(chǎn)生中斷/DMA : ─ 更新:計數(shù)器向上溢出/ 向下溢出,計數(shù)器初始化(
[單片機]
基于STM32單片機高級控制定時器<font color='red'>TIM</font>1和<font color='red'>TIM</font>8的功能解析
第31章 TIM—基本定時器—零死角玩轉(zhuǎn)STM32-F429系列
本章參考資料:《STM32F4xx 中文參考手冊》、《STM32F4xx規(guī)格書》、庫幫助文檔《stm32f4xx_dsp_stdperiph_lib_um.chm》。 學習本章時,配合《STM32F4xx 中文參考手冊》基本定時器章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。 特別說明,本書內(nèi)容是以STM32F42x系列控制器資源講解。 31.1 TIM簡介 定時器(Timer)最基本的功能就是定時了,比如定時發(fā)送USART數(shù)據(jù)、定時采集AD數(shù)據(jù)等等。如果把定時器與GPIO結(jié)合起來使用的話可以實現(xiàn)非常豐富的功能,可以測量輸入信號的脈沖寬度,可以生產(chǎn)輸出波形。定時器生產(chǎn)PWM控制電機狀態(tài)是工業(yè)控制普遍方法,這方
[單片機]
第31章 <font color='red'>TIM</font>—基本定時器—零死角玩轉(zhuǎn)STM32-F429系列
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 锡林郭勒盟| 灵璧县| 乐昌市| 青神县| 广昌县| 平安县| 安龙县| 巴彦淖尔市| 芜湖县| 涡阳县| 和顺县| 穆棱市| 武胜县| 广宁县| 比如县| 喀喇| 陵水| 绵阳市| 伊金霍洛旗| 突泉县| 陆良县| 化德县| 聊城市| 拉萨市| 甘孜| 宜春市| 睢宁县| 诸城市| 乌兰察布市| 太和县| 淮南市| 兰西县| 绥棱县| 武川县| 甘南县| 天台县| 吴江市| 绥芬河市| 商城县| 寻乌县| 柘荣县|