**01**
問題背景
客戶需要使用 MCU 輸出正弦波,但受限于 MCU DAC 數(shù)量不足,建議嘗試使用 PWM加濾波方式產(chǎn)生正弦波。同時要求正弦波與固定電平交替輸出。因此可用一個 TIM 輸出PWM,同時用另一個 TIM 來定時切換輸出正弦波或固定電平。
使用 TIM 輸出 PWM 產(chǎn)生正弦波形時,需要結(jié)合 GPDMA 來實現(xiàn)。在 STM32U5 系列中,GPDMA 共有 16 個獨立通道,其中 12-15 通道還具有 2D addressing/ repeat 功能。因此也可以使用一個 TIM 加 GPDMA 的一個 2D 通道實現(xiàn) PWM 波形切換功能。
02
產(chǎn)生PWM
本文按以下配置產(chǎn)生 PWM,在 U575 NUCLEO 板測試:
(1)MCU 主頻:100MHz
(2)PWM 頻率 2MHz(周期 500ns),脈寬可調(diào)范圍 0~50 個計數(shù)時鐘,
(3)每個正弦波周期(10us)對應(yīng) 20 個 PWM 脈沖,各 PWM 脈寬用計數(shù)時鐘表示分別為:25, 33, 40, 45, 49, 50, 49, 45, 40, 33, 25, 17, 10, 5 , 1 , 0 , 1 , 5 , 10, 17
(4)將步驟 3 中的正弦波重復(fù) 1000 次,對應(yīng) 10ms 的連續(xù)正弦波形
2.1. STM32CubeMX 生成測試工程
2.1.1. TIM1 CH1 PWM 配置
圖1. TIM1 CH1 PWM
2.1.2. GPDMA CH12 配置
選用 GPDMA 通道 12,并配置為循環(huán)模式:
圖2. GPDMA CH12
2.1.3. GPDMA Linked List 配置
創(chuàng)建 Linked List Queue,并配置為搭配 GPDMA 2D 功能通道使用。創(chuàng)建兩個節(jié)點,TN1, TN2,并使用循環(huán)模式,指定首個循環(huán)節(jié)點為 TN1。
圖3. Linked List
TN1 節(jié)點配置,由此節(jié)點結(jié)合 TIM 來產(chǎn)生 PWM,并濾波成正弦信號:
(1)TIM1 更新事件作為 DMA 請求
(2)使能 2D 功能,一個 block 傳輸完成后,回退到數(shù)組起點,重新傳輸
(3)使能 Repeat 功能,重復(fù) block 傳輸 1000 次
首先使能了 TrustZone 架構(gòu),然后將 LPGPIO 映射到了非安全區(qū),并且配置了 DMA 鏈表功能,使用 LPTimer 作為觸發(fā),自動地修改 LPGPIO 的寄存器,從而達到在低功耗模式下,GPIO自動切換的功能。但遇到了 LPDMA 的配置問題,并且程序無法跳轉(zhuǎn)到 Non-Secure 工程。
圖4. Linked List Node1
TN2 節(jié)點配置,與 TN1 節(jié)點類似,用于切換到第二組數(shù)據(jù)產(chǎn)生第二種波形
圖5. Linked List Node2
2.2. 測試代碼
GPDMA Linked List 模式執(zhí)行流程
圖6. Linked List 執(zhí)行過程及期望輸
03
PWM濾波輸出
在 U575 NUCLEO 板上測試,結(jié)果如下:
圖7. 實際輸出
從實測結(jié)果來看,濾波后的正弦波頻率,波形持續(xù)時長都符合預(yù)期。另外,與通過額外 TIM 計時來切換 PWM 輸出的方式相比,使用 Linked List repeat 這種方式,正弦波與固定電平輸出之間切換更平滑。
圖8. 額外 TIM 計時來切換 PWM 輸出
04
小結(jié)
通過使用 GPDMA Linked List 模式,使用 2D addressing repeat 功能,能方便實現(xiàn)這種多種波形切換的應(yīng)用場景。如 Node1 與 Node2 使用不同的數(shù)據(jù)長度和重復(fù)次數(shù),則可得到不同時長的兩種波形;通過增加更多 Node,則可得到多種不同波形。
審核編輯:劉清
-
濾波器
+關(guān)注
關(guān)注
161文章
7876瀏覽量
179066 -
正弦波
+關(guān)注
關(guān)注
11文章
649瀏覽量
55645 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2276瀏覽量
95065 -
PWM波
+關(guān)注
關(guān)注
0文章
99瀏覽量
16957 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
284瀏覽量
15052
原文標題:實戰(zhàn)經(jīng)驗 | Timer 結(jié)合 DMA 2D 通道實現(xiàn)不同波形輸出
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
使用STM32H563開發(fā)板簡單演示DMA 2D模式的應(yīng)用
![使用STM32H563開發(fā)板簡單演示<b class='flag-5'>DMA</b> <b class='flag-5'>2D</b>模式的應(yīng)用](https://file1.elecfans.com/web2/M00/90/5E/wKgZomTZhIqAIsSLAAAL9QFKTGw100.png)
STM32U5系列TIMER+DMA+DAC應(yīng)用演示
![STM32U5系列<b class='flag-5'>TIMER+DMA</b>+DAC應(yīng)用演示](https://file1.elecfans.com/web2/M00/BE/F3/wKgaomWwY82AZ0UHAAAoZbagAs8702.png)
DAC+DMA+TIMER輸出正玄波通道1一直是高電平
適用于顯示屏的2D多點觸摸與3D手勢模塊
使用STM32F4的DMA輸出波形
![使用STM32F4的<b class='flag-5'>DMA</b><b class='flag-5'>輸出</b><b class='flag-5'>波形</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
2D中值濾波算法的設(shè)計實現(xiàn)
![<b class='flag-5'>2D</b>中值濾波算法的設(shè)計<b class='flag-5'>實現(xiàn)</b>](https://file1.elecfans.com/web2/M00/8C/91/wKgZomSuU-yAXFuQAAXCYYxyj6g970.jpg)
TIM DMA burst輸出變頻PWM波形
![TIM <b class='flag-5'>DMA</b> burst<b class='flag-5'>輸出</b>變頻PWM<b class='flag-5'>波形</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
實戰(zhàn)經(jīng)驗 | Timer 結(jié)合 DMA 2D 通道實現(xiàn)不同波形輸出
![實戰(zhàn)經(jīng)驗 | <b class='flag-5'>Timer</b> <b class='flag-5'>結(jié)合</b> <b class='flag-5'>DMA</b> <b class='flag-5'>2D</b> <b class='flag-5'>通道</b><b class='flag-5'>實現(xiàn)</b>不同<b class='flag-5'>波形</b><b class='flag-5'>輸出</b>](https://file1.elecfans.com//web2/M00/AC/33/wKgZomU6FFCAXNNoAAInklhBFsk366.png)
評論