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

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

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

如何用一個(gè)定時(shí)器實(shí)現(xiàn)3路時(shí)差和占空比可調(diào)的波形

冬至子 ? 來源:茶話MCU ? 作者:Miler ? 2023-07-06 15:22 ? 次閱讀

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

圖片

這里使用STM32F302_Nucleo板來實(shí)現(xiàn)之。使用STM32常規(guī)定時(shí)器中的高級定時(shí)器TIM1來實(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庫而編寫。

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

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

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

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

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

圖片

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

圖片

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

圖片

圖片

圖片

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

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

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

    關(guān)注

    32

    文章

    2253

    瀏覽量

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

    關(guān)注

    23

    文章

    3231

    瀏覽量

    114327
  • PWM波
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    16827
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11157
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    280

    瀏覽量

    14713
收藏 人收藏

    評論

    相關(guān)推薦

    個(gè)定時(shí)器輸出4不同頻率波形的應(yīng)用示例

    般來講,個(gè)STM32定時(shí)器輸出基于同頻率的各路信號比較方便。但經(jīng)常也會有人問使用STM32
    的頭像 發(fā)表于 07-06 15:57 ?2108次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>定時(shí)器</b>輸出4<b class='flag-5'>路</b>不同頻率<b class='flag-5'>波形</b>的應(yīng)用示例

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

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

    求助:如何用51單片機(jī)個(gè)定時(shí)器輸出的兩個(gè)相同占空比pwm?

    何用51單片機(jī)個(gè)定時(shí)器輸出的兩個(gè)相同占空比pwm?
    發(fā)表于 07-11 17:25

    何用定時(shí)器實(shí)現(xiàn)延時(shí)

    何用定時(shí)器實(shí)現(xiàn)延時(shí),A strong man will struggle with the storms of fate.(Thomas Addison)  強(qiáng)者能同命運(yùn)的風(fēng)暴抗?fàn)帯?愛迪生)通用
    發(fā)表于 07-22 08:58

    simulink可調(diào)節(jié)的定時(shí)器

    simulink可調(diào)節(jié)的定時(shí)器實(shí)現(xiàn)定時(shí)器初步實(shí)現(xiàn)計(jì)時(shí)進(jìn)階版結(jié)論定時(shí)器由于在網(wǎng)上找到的
    發(fā)表于 08-17 09:12

    何用個(gè)定時(shí)器實(shí)現(xiàn)PWM?

    何用個(gè)定時(shí)器實(shí)現(xiàn)PWM?
    發(fā)表于 10-08 06:21

    如何去實(shí)現(xiàn)定時(shí)器輸出一路PWM波形的設(shè)計(jì)呢

    PWM是什么?如何去實(shí)現(xiàn)定時(shí)器輸出一路PWM波形的設(shè)計(jì)呢?有哪些步驟?
    發(fā)表于 11-15 06:04

    何用個(gè)定時(shí)器的四個(gè)通道獨(dú)立地輸出四PWM脈沖?

    何用個(gè)定時(shí)器的四個(gè)通道獨(dú)立地輸出四PWM脈沖?
    發(fā)表于 12-21 07:59

    通斷電時(shí)間獨(dú)立可調(diào)定時(shí)器

    通斷電時(shí)間獨(dú)立可調(diào)定時(shí)器:IC1,IC2和IC3組成長時(shí)間間斷通電式定時(shí)電路。
    發(fā)表于 12-13 22:35 ?1135次閱讀
    通斷電時(shí)間獨(dú)立<b class='flag-5'>可調(diào)</b><b class='flag-5'>定時(shí)器</b>

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

    這里使用STM32F302_Nucleo板來實(shí)現(xiàn)之。使用STM32常規(guī)定時(shí)器中的高級定時(shí)器TIM1來實(shí)現(xiàn)。當(dāng)然,也并非定要TIM1,其它支
    的頭像 發(fā)表于 11-20 14:54 ?3942次閱讀
    <b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>3</b><b class='flag-5'>路</b><b class='flag-5'>時(shí)差</b>和<b class='flag-5'>占空比</b><b class='flag-5'>可調(diào)</b>的<b class='flag-5'>波形</b>

    MSP430F5529通過定時(shí)器A產(chǎn)生兩個(gè)反相頻率占空比可調(diào)PWM波

    了兩個(gè)定時(shí)器產(chǎn)生兩個(gè)反相的PWM波并通過個(gè)捕獲比較捕獲其中
    發(fā)表于 11-19 20:36 ?3次下載
    MSP430F5529通過<b class='flag-5'>定時(shí)器</b>A產(chǎn)生兩<b class='flag-5'>個(gè)</b>反相頻率<b class='flag-5'>占空比</b><b class='flag-5'>可調(diào)</b>PWM波

    STM32單片機(jī)個(gè)定時(shí)器輸出不同頻率PWM波

    (TIMx_CCRx)來設(shè)置占空比。個(gè)定時(shí)器只有個(gè)自動(dòng)重裝載寄存
    發(fā)表于 11-23 18:21 ?18次下載
    STM32單片機(jī)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>定時(shí)器</b>輸出不同頻率PWM波

    怎么實(shí)現(xiàn)dsp芯片輸出占空比固定的pwm波形

    的比例。例如,占空比為50%表示高電平持續(xù)時(shí)間等于個(gè)周期的半。在實(shí)現(xiàn)DSP芯片輸出占空比固定
    的頭像 發(fā)表于 12-26 17:28 ?2376次閱讀

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

    等。使用555定時(shí)器IC的可調(diào)定時(shí)器電路項(xiàng)目也是555定時(shí)器IC的應(yīng)用之。通過使用這個(gè)項(xiàng)目,人們可以
    的頭像 發(fā)表于 02-25 15:16 ?1946次閱讀
    使用555<b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>可調(diào)</b>雙<b class='flag-5'>定時(shí)器</b>電路

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

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