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

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

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

定時(shí)器實(shí)現(xiàn)3路時(shí)差和占空比可調(diào)的波形

茶話MCU ? 來(lái)源:ST MCU 信息交流 ? 2019-11-20 14:54 ? 次閱讀

有人想實(shí)現(xiàn)下面的PWM輸出波形,三路頻率相同,占空比同步可調(diào),且三路輸出波形時(shí)差固定為T/3。【下圖中橙色斜線是計(jì)數(shù)器周期性計(jì)數(shù)變化曲線示意圖】之前有過類似的話題交流,這里就整個(gè)實(shí)現(xiàn)過程再做下演示,并盡可能介紹詳細(xì)點(diǎn)。

這里使用STM32F302_Nucleo板來(lái)實(shí)現(xiàn)之。使用STM32常規(guī)定時(shí)器中的高級(jí)定時(shí)器TIM1來(lái)實(shí)現(xiàn)。當(dāng)然,也并非一定要TIM1,其它支持多通道比較輸出且比較事件能觸發(fā)DMA的都可以。

其中,第一路使用TIM1_CH1,使用PWM1輸出模式,第二路使用TIM1_CH2,第三路使用TIM1_CH3,這兩路都使用Match Toggle輸出模式。

在TIM1更新中斷里修改通道1的CCR值,為修改CH2/CH3的CCR值做準(zhǔn)備,最終通過CH2/CH3各自的比較事件觸發(fā)DMA,依靠DMA寫入CC2和CCR3寄存器而完成修改。注意,此時(shí)CH2/CH3通道的CCR寄存器預(yù)裝功能必須關(guān)閉。

一、基于STM32CubeMx的配置如下:

二、準(zhǔn)備相關(guān)用戶代碼

主要準(zhǔn)備上面幾句,代碼是我基于STM32Cube庫(kù)而編寫。

上面的第1/2句清除TIM1的更新中斷標(biāo)志,有些情況下沒有這兩句會(huì)給我們帶來(lái)些麻煩或困惑。主要是防止一使能定時(shí)器更新中斷或相關(guān)DMA請(qǐng)求就進(jìn)入中斷服務(wù)程序或觸發(fā)DMA傳輸,更多細(xì)節(jié)在之前文章中有詳細(xì)介紹過。這里就不重復(fù)了。

第3句、第4句、第6句功能差不多,開啟相應(yīng)通道的比較輸出功能,其中開啟了基于CH2/CH3的比較事件的DMA觸發(fā)使能,并完成相關(guān)配置。

特別提醒第5句,這句是跟庫(kù)代碼有關(guān)聯(lián)的。庫(kù)代碼目前在調(diào)用定時(shí)器的DMA配置時(shí),目前來(lái)看應(yīng)該說(shuō)有個(gè)bug,調(diào)用某個(gè)通道的DMA配置函數(shù)后,需要將狀態(tài)改為ready后才能有效調(diào)用后續(xù)其它通道的DMA配置函數(shù)。當(dāng)然,我們?nèi)绻皇褂肅ube庫(kù)代碼就不用這句了。

第7句只有TIM1/TIM8高級(jí)定時(shí)器才需要使用它,開啟TIM1/TIM8的主輸出功能。

另外,準(zhǔn)備了跟DMA傳輸有關(guān)的兩個(gè)內(nèi)存數(shù)組。其中紅色下劃線的數(shù)據(jù)在實(shí)際運(yùn)行過程中會(huì)被動(dòng)態(tài)修改而調(diào)整占空比。

在TIM1更新中斷里同步修改各個(gè)通道CCR的值,參考代碼如下。其中,Count_Update和i為兩個(gè)靜態(tài)字節(jié)變量。這里每發(fā)生256次更新事件后分別對(duì)3個(gè)通道的CCR值做一次修改?!揪唧w使用中你可以自行根據(jù)具體需求來(lái)設(shè)計(jì),這里僅供演示參考。貼出原始代碼主要是為了幫助理解整個(gè)思路?!?/p>

三、驗(yàn)證最后結(jié)果。

上面三幅圖是3路PWM輸出信號(hào)在不同時(shí)間點(diǎn)的截圖,頻率固定,相差固定,占空比在改變。當(dāng)然,我們也可以通過選擇合適的時(shí)間點(diǎn)來(lái)修改ARR值及通道2/通道3的初始相位值,以靈活調(diào)整輸出波形的頻率與相差??傊琒TM32定時(shí)器的比較切換模式,再結(jié)合DMA的話,是個(gè)非常靈活好用的PWM輸出的實(shí)現(xiàn)方式,值得研究學(xué)習(xí)下。

當(dāng)然,如果使用3個(gè)定時(shí)器建立主從關(guān)系,各拿出一個(gè)通道來(lái)實(shí)現(xiàn)上述輸出也很方便。有興趣的話,也可以試試。

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

    關(guān)注

    114

    文章

    5196

    瀏覽量

    214388
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356787
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115095

原文標(biāo)題:一個(gè)定時(shí)器實(shí)現(xiàn)3路時(shí)差和占空比可調(diào)的波形

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    BUCK電路占空比對(duì)電流波形的影響

    BUCK電路的占空比對(duì)電流波形具有顯著的影響。以下是對(duì)這一影響的分析: 一、占空比對(duì)電流波形的影響機(jī)制 在BUCK電路中,占空比決定了開關(guān)管
    的頭像 發(fā)表于 12-12 17:08 ?573次閱讀

    定時(shí)器的工作方式介紹

    定時(shí)器是計(jì)算機(jī)和嵌入式系統(tǒng)中常見的一種硬件模塊,用于實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。定時(shí)器的工作方式通常由一組寄存來(lái)控制,這些寄存
    的頭像 發(fā)表于 07-12 10:29 ?1063次閱讀

    定時(shí)器相關(guān)的寄存有哪些類型

    在微控制編程中,定時(shí)器是一種非常常見的功能模塊,用于實(shí)現(xiàn)各種定時(shí)和計(jì)數(shù)功能。定時(shí)器的工作原理是通過內(nèi)部的計(jì)數(shù)
    的頭像 發(fā)表于 07-12 10:25 ?1029次閱讀

    三菱PLC編程實(shí)現(xiàn)讀出時(shí)間定時(shí)器

    的功能,而定時(shí)器實(shí)現(xiàn)時(shí)間控制的關(guān)鍵組件。本文將詳細(xì)介紹如何使用三菱PLC編程實(shí)現(xiàn)讀出時(shí)間定時(shí)器。 1. 定時(shí)器的基本概念
    的頭像 發(fā)表于 06-20 11:11 ?2610次閱讀

    三菱plc如何顯示定時(shí)器時(shí)間

    三菱PLC(Programmable Logic Controller,可編程邏輯控制)是一種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的設(shè)備。定時(shí)器是PLC中的一種基本功能,用于實(shí)現(xiàn)延時(shí)控制、計(jì)時(shí)控制等功能。在三
    的頭像 發(fā)表于 06-20 11:10 ?1973次閱讀

    PLC定時(shí)器的工作原理和應(yīng)用

    至關(guān)重要的角色。定時(shí)器能夠實(shí)現(xiàn)對(duì)時(shí)間的精確控制,是控制系統(tǒng)中實(shí)現(xiàn)延時(shí)、定時(shí)、周期控制等功能的關(guān)鍵元件之一。本文將詳細(xì)闡述PLC中定時(shí)器的工作
    的頭像 發(fā)表于 06-18 11:55 ?2741次閱讀

    CW32使用DMA單通道、定時(shí)器觸發(fā)ADC實(shí)現(xiàn)了多路AD采集

    本測(cè)試樣例基于CW32F030C8T6MCU,使用DMA單通道、定時(shí)器觸發(fā)ADC實(shí)現(xiàn)了12AD采集。
    的頭像 發(fā)表于 05-24 09:29 ?881次閱讀
    CW32使用DMA單通道、<b class='flag-5'>定時(shí)器</b>觸發(fā)ADC<b class='flag-5'>實(shí)現(xiàn)</b>了多路AD采集

    使用滴答定時(shí)器用I0口輸出了120° 相位可調(diào)占空比的PWM,用這種方式的話有什么壞處呢?

    我使用滴答定時(shí)器 用I0口 輸出了120° 相位 可調(diào)占空比的PWM,用這種方式的話有什么壞處呢,如果驅(qū)動(dòng)帶編碼的無(wú)刷電機(jī)可不可以用這種方式呢?(用了驅(qū)動(dòng)芯片)
    發(fā)表于 05-14 07:43

    STM8L052定時(shí)器1同時(shí)輸出3PWM,想讓其中的兩PWM輸出頻率跟另外一個(gè)不同,可以實(shí)現(xiàn)嗎?

    STM8L052的定時(shí)器1同時(shí)輸出3PWM但是想讓其中的兩PWM輸出頻率跟另外一個(gè)不同,請(qǐng)問 可以實(shí)現(xiàn)嗎? 具體的怎么操作
    發(fā)表于 05-13 09:06

    如何實(shí)現(xiàn)一個(gè)軟件定時(shí)器?

    在Linux,uC/OS,F(xiàn)reeRTOS等操作系統(tǒng)中,都帶有軟件定時(shí)器,原理大同小異。典型的實(shí)現(xiàn)方法是:通過一個(gè)硬件定時(shí)器產(chǎn)生固定的時(shí)鐘節(jié)拍,每次硬件定時(shí)器中斷到,就對(duì)一個(gè)全局的時(shí)間
    的頭像 發(fā)表于 04-29 11:00 ?708次閱讀

    如何用STM32定時(shí)器實(shí)現(xiàn)一個(gè)周期輸出PWM2的波形?

    請(qǐng)教各位如何用STM32定時(shí)器實(shí)現(xiàn)一個(gè)周期輸出PWM2的波形呢(低-高-低-高-低)?萬(wàn)分感謝您的解答!
    發(fā)表于 04-03 06:39

    ?PLC定時(shí)器介紹

    定時(shí)器是PLC中重要的編程元件,是累計(jì)時(shí)間增量的內(nèi)部器件。大部分自動(dòng)控制領(lǐng)域都需要定時(shí)器進(jìn)行延時(shí)控制,靈活地使用定時(shí)器可以編制出復(fù)雜的控制程序。
    發(fā)表于 03-22 12:36 ?2530次閱讀
    ?PLC<b class='flag-5'>定時(shí)器</b>介紹

    使用555定時(shí)器可調(diào)定時(shí)器電路

    定時(shí)器 IC 555 是最通用和最常用的 IC 之一,因?yàn)樗膽?yīng)用范圍更廣,如 PWM放大器、延遲定時(shí)器、開關(guān)電路、占空比選擇、時(shí)鐘脈沖發(fā)生
    的頭像 發(fā)表于 02-25 15:16 ?2331次閱讀
    使用555<b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>可調(diào)</b>雙<b class='flag-5'>定時(shí)器</b>電路

    定時(shí)器原理能控制馬達(dá)嗎為什么

    定時(shí)器原理可以用于控制馬達(dá)。馬達(dá)是一種將電能轉(zhuǎn)換為機(jī)械能的設(shè)備,通常由電動(dòng)機(jī)和傳動(dòng)裝置組成。定時(shí)器是一種電子設(shè)備,用來(lái)生成和計(jì)時(shí)精確而穩(wěn)定的時(shí)間信號(hào)。通過將定時(shí)器與馬達(dá)控制電路相連,可以實(shí)現(xiàn)
    的頭像 發(fā)表于 01-23 15:21 ?701次閱讀

    555定時(shí)器的基本功能 555定時(shí)器的工作原理及其應(yīng)用

    定時(shí)器有三種基本工作模式,分別是單穩(wěn)態(tài)、自由運(yùn)放和雙穩(wěn)態(tài)。它可以在多種電子電路中實(shí)現(xiàn)功能的實(shí)現(xiàn)。下面將詳細(xì)介紹它們的功能特點(diǎn)。 單穩(wěn)態(tài)模式:在單穩(wěn)態(tài)模式下,555定時(shí)器可以
    的頭像 發(fā)表于 01-18 11:12 ?1.6w次閱讀