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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

工程師筆記 | 使用 TIMER 輸出比較模式輸出相移信號

jf_pJlTbmA9 ? 來源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2023-09-18 10:58 ? 次閱讀

1、前言

客戶想要使用 STM32L031 產(chǎn)生兩個特定的 PWM 波,這兩個波形頻率相同,占空比相同,但相位不同。經(jīng)過驗(yàn)證,使用定時器的輸出比較模式可以產(chǎn)生這種帶相移的 PWM 波形。

下面以 STM32L031 的 TIM2 為例來介紹使用產(chǎn)生相移信號的方法。

2、概述

在未使能預(yù)裝載寄存器時(OCxPE=0),使用輸出比較模式,可以隨時通過軟件更新

TIM_CCRx 寄存器的值,以控制輸出波形。

DMA 的循環(huán)模式,可以在最后一次數(shù)據(jù)傳輸完成后,自動重新加載初始編程值,內(nèi)部地址寄存器會重新加載基址值,進(jìn)入下一個循環(huán)。

使用輸出比較模式配合 DMA 的循環(huán)模式可以不斷更新 TIMx_CCR 寄存器的值,從而輸出可控的波形。

下面以 NUCLEO-L031 為例介紹產(chǎn)生相移信號的方法。

3、目標(biāo)波形

為了便于觀察,令 PWM 波的周期為 100ms,占空比為 20%。以 TIM2_CH1 輸出的波形的為基準(zhǔn),其為 0 度相移。

? TIM2_CH1: 相移 0 度,占空比為 20%

? TIM2_CH2: 相移 90 度,占空比為 20%

? TIM2_CH3: 相移 180 度,占空比為 20%

? TIM2_CH4: 相移 270 度,占空比為 20%

4. 使用 STM32CubeMX 進(jìn)行配置

使用 STM32CubeMX 進(jìn)行基礎(chǔ)參數(shù)的配置。

這里配置時鐘為 32MHz,如圖 1 所示。

wKgaomUD3vWAduTwAAJYZw8L61I475.png

配置時鐘源為內(nèi)部時鐘,因?yàn)?TIM2_CH1 為基準(zhǔn)信號,直接配置為 PWM 輸出即可。

TIM2_CH2、TIM2_CH3 和 TIM2_CH4 配置為輸出比較模式,如圖 2 所示。

wKgZomUD3vaAQJImAACa2i7L31w082.png

配置 TIM2 的預(yù)分頻值與計(jì)數(shù)周期,配置計(jì)數(shù)周期為 100,計(jì)數(shù)模式配置為"Up"。配置channel1 的模式為"PWM mode 1",因?yàn)檎伎毡葹?20%,計(jì)數(shù)周期為 100,所以 CCR1 寄存器配置為 20(也即 Channel1 的 Pulse 配置為"20"),極性配置為"High"。Channel2、Channel3 和 Channel4 的模式都配置為"Toggle on match"(匹配時翻轉(zhuǎn)電平),極性配置為"low",CCR 不需要配置,因?yàn)闀ㄟ^ DMA 自動寫入。具體配置如圖 3 所示。

wKgaomUD3vqAYqVPAAI56OYLxrk948.png

添加 TIM2_CH2、TIM2_CH3 和 TIM2_CH4 的 DMA,并進(jìn)行配置,配置的內(nèi)容都相同,配置如下:

? Direction: Memory To Peripheral

? Mode: Circular

? Data Width: Word

具體配置如圖 4 所示

wKgZomUD3vuAWmh_AAFMbn5Ltr4081.png

5. 修改代碼

由 STM32CubeMX 生成代碼之后,需要在生成的代碼中添加一些處理。

首先需要計(jì)算 channel2、channel3 和 channel4 的 CCR 值。以 channel2 為例:配置的計(jì)數(shù)周期為 100,初始極性為 low,當(dāng) CNT 計(jì)數(shù)值與 CCR 寄存器匹配的時候,輸出電平發(fā)生翻轉(zhuǎn),所以為了實(shí)現(xiàn)與 channel1 占空比相同的波形,需要翻轉(zhuǎn)兩次電平。

第一次翻轉(zhuǎn)的 CCR 可以通過相位差進(jìn)行計(jì)算,第二次翻轉(zhuǎn)的 CCR 值可以通過占空比和第一次翻轉(zhuǎn)的 CCR 值這兩個條件進(jìn)行計(jì)算。Channel2 第一次翻轉(zhuǎn)的 CCR 值為: "100 x (90°/360°) = 25";第二次翻轉(zhuǎn)的 CCR 值為:"25 + (20% x 100) = 45"

表 1 由上面計(jì)算方式同理可得:

wKgZomUD3v2AQoQIAABcapiq70M129.png

在 main.c 文件中需要建立三個數(shù)組,將 channel2~4 的兩次 CCR 值存入這三個數(shù)組中,具體如下所示:

wKgaomUD3v6AEGUcAAA-5VaifZk887.png


wKgaomUD3v-AMqKnAAAPmnjWj8U237.png

然后在 mian 函數(shù)中添加如下代碼。使 channel1 輸出 PWM 波,配置 channel2~4 在 DMA 模式下使用輸出比較模式進(jìn)行輸出。

wKgZomUD3wGAWvphAAB5aYLz3E0901.png

6. 測試結(jié)果

測試結(jié)果如下圖所示,4 個 channel 產(chǎn)生的 PWM 波的周期都為 100ms,占空比都為20%,測試出來的 channel2~4 的相移與設(shè)計(jì)目標(biāo)波形一致。

wKgZomUD3wKAbsBuAACxpYAjSYc554.png

7、小結(jié)

使用定時器的輸出比較模式與 DMA 進(jìn)行搭配,可以比較靈活的生成波形。

來源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

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

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120796
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5195

    瀏覽量

    214357
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115070
收藏 人收藏

    評論

    相關(guān)推薦

    TFP401APZP為什么沒有HSYNC輸出

    筆記本電腦作為HDMI信號源時,TFP401APZP沒有HSYNC信號輸出,VSYNC,ODCK輸出正常。 將
    發(fā)表于 12-23 07:57

    ADS1299內(nèi)部測試信號調(diào)試OK,正常測試信號信號輸出全為7FFFFF,為什么?

    錯,但內(nèi)部測試信號可正常顯示,而正常輸入不行? 4、寄存器配置方面比較EVM與自己配置的寄存器表,配置相一致,因此排除以上因素,還是未能解決問題,希望TI的工程師與論壇的各位朋友們能夠幫忙解答,萬分感謝!
    發(fā)表于 12-19 06:12

    FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?

    ,如數(shù)字信號處理、圖像處理、人工智能等,并將其轉(zhuǎn)化為適合 FPGA 實(shí)現(xiàn)的硬件邏輯。重點(diǎn)在于算法的性能提升、資源利用效率以及與系統(tǒng)的集成。 FPGA 邏輯工程師: 側(cè)重于 FPGA 內(nèi)部邏輯電路
    發(fā)表于 09-23 18:26

    紅石比較器兩種模式的作用

    紅石比較器是Minecraft中的一種非常重要的紅石元件,它用于比較兩個紅石信號的強(qiáng)度,并根據(jù)比較結(jié)果輸出不同的
    的頭像 發(fā)表于 09-05 09:17 ?546次閱讀

    過零比較器的輸出電壓由什么決定

    輸出電壓是由輸入信號的幅度和相位決定的。 過零比較器的工作原理 過零比較器的基本工作原理是將輸入信號與一個參考電壓進(jìn)行
    的頭像 發(fā)表于 08-06 15:16 ?1222次閱讀

    正是拼的年紀(jì)|65歲電子工程師上班VLOG #65歲退休 #電子工程師 #搞笑 #上班vlog

    電子工程師
    安泰小課堂
    發(fā)布于 :2024年07月25日 11:31:02

    什么是推挽輸出模式,什么是開漏輸出模式?

    (一個NPN型和一個PNP型)來實(shí)現(xiàn)輸出。當(dāng)輸入信號為高電平時,NPN型晶體管導(dǎo)通,PNP型晶體管截止,輸出端呈現(xiàn)低阻抗的高電平;當(dāng)輸入信號為低電平時,NPN型晶體管截止,PNP型晶體
    的頭像 發(fā)表于 07-09 14:22 ?2881次閱讀

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

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

    stm32比較輸出timer_etr沒有計(jì)數(shù)是為什么?

    請教有人搞過STM32L比較輸出內(nèi)部配到到timer_etr的計(jì)數(shù)嗎。比較器的比較輸出已經(jīng)搞通
    發(fā)表于 04-23 06:39

    利用TIMER測量信號周期及占空比的精度

    有人使用STM32G4系列的通用型TIMER基于捕獲功能對外來信號進(jìn)行周期及占空比的測量。他用TIM3產(chǎn)生頻率、占空比可調(diào)的PWM輸出做為被測信號。TIM4用來進(jìn)行頻率測量,工作在復(fù)位
    的頭像 發(fā)表于 02-25 10:11 ?1550次閱讀
    利用<b class='flag-5'>TIMER</b>測量<b class='flag-5'>信號</b>周期及占空比的精度