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 波形控制外圍器件的需求。
上一篇:基于Gokit3微信寵物屋與機智云的物聯(lián)網(wǎng)智能家居
下一篇:STM單片機中的按鍵消抖和FPGA消抖
推薦閱讀最新更新時間:2025-04-23 20:14




設(shè)計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- C843592_MSOP-8通用音頻功率放大器驗證板
- 樹莓派pico
- CN0326
- SPX-14570,基于 BME680 的環(huán)境傳感器 (Qwiic) 開發(fā)套件
- 具有 I2C 兼容接口的 LTC4240 緊湊型 PCI 熱插拔控制器的典型應(yīng)用
- MIC23451 的典型應(yīng)用:具有超輕負載和電源良好的 3MHz、2A 三重同步降壓穩(wěn)壓器
- 使用 ROHM Semiconductor 的 BD49E42G-TR 的參考設(shè)計
- AD8362-EVALZL,基于 AD8362 的評估板,50 Hz 至 3.8 GHz TruPwr 檢測器
- 【美巖電子制作】DC-DC降壓數(shù)字電源設(shè)計
- NCV8130BMX100TCGEVB:NCV8130BMX100TCG 偏置軌 LDO 穩(wěn)壓器演示板
- 強強聯(lián)合再進階!理想AD Pro輔助駕駛正式升級搭載地平線征程6M
- 英特爾與黑芝麻智能簽署合作備忘錄,聯(lián)合發(fā)布艙駕融合平臺
- 英特爾與面壁智能宣布建立戰(zhàn)略合作伙伴關(guān)系,共同研發(fā)端側(cè)原生智能座艙
- 芯馳科技發(fā)布X10,打造全民AI時代座艙處理器新標桿
- 精準適配,輕裝全能!芯馳發(fā)布E3系列高端智控MCU三大應(yīng)用場景
- 場景定義、精準創(chuàng)「芯」,芯馳全新發(fā)布AI座艙處理器和高端智控系列
- Arm 技術(shù)加持,地平線以 HSD 及征程 6P 推動汽車智能化變革
- 華為自動駕駛技術(shù)解讀
- 加速電動化轉(zhuǎn)型,邦迪汽車系統(tǒng)攜多款創(chuàng)新產(chǎn)品首秀2025上海車展
- 數(shù)據(jù)中心面臨電力約束挑戰(zhàn),推動GenAI終端發(fā)展