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

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

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

PWM輸出第一個脈沖寬帶異常的話題

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-05-14 09:27 ? 次閱讀

我們在使用STM32定時器做PWM輸出過程中,當(dāng)借助示波器或邏輯分析儀查看波形時,有時會發(fā)現(xiàn)輸出的第一個PWM脈沖跟后續(xù)的輸出脈沖不一樣。比方像下面的輸出波形,第一個脈沖的高電平要寬于所有其它后續(xù)脈沖。

對于這種情況,有些應(yīng)用是不太在乎的,但有些應(yīng)用場合可能就不能接受。那這個問題是怎么產(chǎn)生的?有沒有辦法解決?

產(chǎn)生這個現(xiàn)象的原因簡單點(diǎn)說就是在于定時器比較輸出模塊的工作與定時器計數(shù)單元的工作具有相對獨(dú)立性。使能比較通道的輸出功能的操作與使能計數(shù)器的操作有個時間差,其長短往往跟用戶處理代碼有關(guān)。

我們知道,STM32的高級定時器或通用定時器,可以大致看成由四個模塊組成,分別是主從控制模塊、時基單元、輸入捕捉模塊、輸出比較模塊。下面截圖是STM32F4系列高級定時器TIM1的功能框圖的一部分,這里沒有將定時器的主從模塊截取進(jìn)來,只保留了時基單元、輸入捕捉單元、輸出比較單元。

這三個單元既可以相互配合協(xié)調(diào)工作,也可以各自獨(dú)立工作。比方說,輸出比較單元的工作并不要求時基單元的計數(shù)器工作,換言之,即使計數(shù)器不被開啟計數(shù),輸出比較單元依然可以根據(jù)默認(rèn)配置或用戶的有關(guān)輸出配置而發(fā)揮作用。

我們不妨結(jié)合一個具體實(shí)例來看下。假設(shè)定時器TIM1的計數(shù)模式選擇向上計數(shù)模式,讓通道CH1按照PWM1模式的規(guī)則實(shí)現(xiàn)PWM輸出。配置好ARR和CCR1,極性選擇高有效,即OC輸出與OCRef參考信號保持同相。

對于定時器的初始化,我們一般會先對時基單元的相關(guān)參數(shù)做配置,比如時鐘源、ARR,PSC等,然后對比較輸出功能做配置和使能。當(dāng)完成比較輸出的配置及使能后,即使此時沒有使能時基單元的計數(shù)器,比較輸出單元就發(fā)揮作用了,即它會結(jié)合比較輸出配置和CNT與CCR的比較結(jié)果在OC端輸出相應(yīng)電平。

根據(jù)上述配置,若CCR大于計數(shù)器CNT的值時OC端輸出高電平,否則輸出低電平。若用戶沒有專門對CNT寄存器進(jìn)行賦值,芯片復(fù)位后,它的默認(rèn)值就是0,顯然CCR的值要大于此時的CNT的值,自然此時OC端就輸出高電平。如果此時計數(shù)器還未被開啟,這個高電平就會保持到計數(shù)器被啟動,并延申到后續(xù)的PWM輸出動作中。即這個高電平會跟第一個PWM脈沖的輸出連在一起。若剛好碰到第一個PWM脈沖首先是輸出高電平,這就導(dǎo)致第一個脈沖的高電平寬度要寬于后面其它所有PWM脈沖的。

下圖第1處乃通道OC功能配置完成被使能的時間點(diǎn),第2處乃計數(shù)器被啟動時間點(diǎn)。

在跟上述相同模式和極性條件下,有沒有辦法消除第一個脈沖的多余寬度呢?

辦法是有的。既然OC通道被使能后,其輸出由CCR與CNT的比較結(jié)果和PWM模式?jīng)Q定,這時我們可以考慮在使能OC通道之前手動將CNT的值進(jìn)行修改,讓它等于ARR或0xffff【若是32位計數(shù)器就是0xffffffff】,此時CNT的值不可能會小于用戶配置的CCR值,就這樣通過改變CCR與CNT的比較結(jié)果達(dá)到改變OC端輸出電平之目的。

比方,如果你用STM32標(biāo)準(zhǔn)庫寫的話,你可以在下面紅圈的那個地方加一句:【arr對應(yīng)著時基單元中ARR寄存器的值】

參照上面相同定時器配置【向上計數(shù)模式、PWM1模式、極性選擇高有效】,下面基于Cube庫使用STM32F4的TIM1的通道2進(jìn)一步做個驗證測試。

使用CubeMx配置完成生成初始化代碼,需添加的用戶代碼比較簡單。如下圖所示。其中方框里的延時函數(shù)代碼是用來模擬比較輸出使能與使能計數(shù)器兩個操作間的間隔,以便觀察效果。

基于上述代碼,我們通過示波器可以看到第一個脈沖明顯寬于其它后續(xù)PWM脈沖?!救缦聢D所示】

在上面代碼的基礎(chǔ)上,我們在使能CH2比較輸出功能的代碼前添加一句修改CNT寄存器的語句,令其值等于ARR或等于計數(shù)器的滿量程值。下圖中橢圓圈內(nèi)的代碼?!救舭袰NT值改成等于ARR的值,效果也一樣】

然后再進(jìn)行測試,第一個脈沖也就不再異常了?!救缦聢D所示】

最后小結(jié)下,這個現(xiàn)象只有在使能定時器通道的比較輸出操作與使能計數(shù)器操作存在較為明顯的時差時才可能發(fā)現(xiàn),而且它還跟所選擇的PWM模式有關(guān),上面只是針對向上計數(shù)模式、PWM1模式做了分析和分享,當(dāng)涉及其它應(yīng)用模式時可具體問題具體分析,只要弄清原因了也就不難靈活應(yīng)對。

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

    關(guān)注

    114

    文章

    5106

    瀏覽量

    212974
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10850

    瀏覽量

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

    關(guān)注

    23

    文章

    3228

    瀏覽量

    114212

原文標(biāo)題:PWM輸出第一個脈沖寬帶異常的話題

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

收藏 人收藏

    評論

    相關(guān)推薦

    pwm與spwm波,載波、參考波與輸出波形的關(guān)系

    存在著密切的關(guān)系。 、PWM波的基本原理與關(guān)系 1. PWM波的基本原理 PWM種利用微處理器的數(shù)字信號
    的頭像 發(fā)表于 08-14 16:58 ?901次閱讀

    PLC輸出pwm信號怎么看頻率

    、PWM信號的基本概念 脈沖寬度調(diào)制(PWM) :PWM種對模擬信號進(jìn)行數(shù)字控制的方法。它
    的頭像 發(fā)表于 08-08 15:32 ?515次閱讀

    與屏幕起發(fā)送的第一個UART數(shù)據(jù)時出現(xiàn)初始崩潰,但僅在第一次閃存時出現(xiàn),為什么?

    =0x00000000, depc=0x0 000000 ets 2013-01-8,第一個原因:2,開機(jī)模式:(1,7) ets 2013-01-8,第一個原因:4,開機(jī)模式:(1,7)
    發(fā)表于 07-09 07:39

    請問STM32F103如何輸出指定PWM脈沖數(shù)?

    ,最后1/4plsCnt勻減速; PWM輸出采用定時器的通道,比如TIM2_CH1; 能不能讓輸出
    發(fā)表于 05-09 08:08

    聊聊關(guān)于TIMER事件觸發(fā)中斷的響應(yīng)話題

    情況是這樣的,現(xiàn)在使用STM32G4系列的TIM8,工作在中心對齊計數(shù),單脈沖PWM模式,使用內(nèi)部系統(tǒng)時鐘做時鐘源,計數(shù)時不做分頻,即PSC=0。CH1做PWM輸出。
    的頭像 發(fā)表于 04-28 09:44 ?445次閱讀
    聊聊<b class='flag-5'>一</b><b class='flag-5'>個</b>關(guān)于TIMER事件觸發(fā)中斷的響應(yīng)<b class='flag-5'>話題</b>

    TIM_PWM+DMA輸出不同占空比的單脈沖,為什么第三數(shù)據(jù)總是第一個輸出?

    使用TIM_PWM + DMA,DMA傳輸長度為3,即順序輸出3不同占空比的單脈沖(10%,20%,50%),三
    發(fā)表于 04-03 07:23

    求助,用CubeMX配置占空比30%的PWM輸出第一個波形不準(zhǔn)確是為什么?

    我用的是G0的芯片配置,通過抓波發(fā)現(xiàn)第一個波形永遠(yuǎn)與我配置的占空比不準(zhǔn)確,但是除了第一個周期不準(zhǔn)確外,后面的都沒問題。
    發(fā)表于 03-18 07:55

    STM32F103VET6的PWM輸出,設(shè)置空閑態(tài)為低電平,在低電平剎車時出現(xiàn)異常短暫脈沖的原因?

    單通道PWM輸出時(設(shè)定低電平時間為600us,設(shè)定空閑狀態(tài)為低電平),在PWM低電平500us時,來了剎車信號,發(fā)現(xiàn)
    發(fā)表于 03-18 07:45

    世界上第一個石墨烯半導(dǎo)體的“石墨烯”究竟是什么?

    有媒體報道稱有研究團(tuán)隊創(chuàng)造了世界上第一個由石墨烯制成的功能半導(dǎo)體(Functional Graphene Semiconductor)。
    的頭像 發(fā)表于 01-23 11:26 ?1037次閱讀

    使用ADuC7060的PWM1端口輸出PWM脈沖,斷電后再上電導(dǎo)致PWM輸出異常,怎么解決?

    我打算使用ADuC7060的PWM1端口輸出PWM脈沖,單端輸出,占空比是50%,周期是100μS,在用Keil調(diào)試時能正常
    發(fā)表于 01-15 07:30

    PWM脈沖的產(chǎn)生與使用

    PWM脈沖的周期范圍為10~65535μs或2~65535ms,在設(shè)置脈沖周期時,如果周期小于兩時間單位,系統(tǒng)會默認(rèn)周期值為兩時間單位;
    的頭像 發(fā)表于 12-29 14:19 ?1990次閱讀
    <b class='flag-5'>PWM</b><b class='flag-5'>脈沖</b>的產(chǎn)生與使用

    文詳解PLC高速脈沖輸出指令

    利用高速脈沖輸出指令可讓CPU模塊內(nèi)部的高速脈沖發(fā)生器輸出占空比為50%、周期可調(diào)的方波脈沖(即PTO
    的頭像 發(fā)表于 12-19 14:04 ?1w次閱讀
    <b class='flag-5'>一</b>文詳解PLC高速<b class='flag-5'>脈沖</b><b class='flag-5'>輸出</b>指令

    話題通信接口的定義和運(yùn)行效果

    話題接口的定義與使用 話題通信接口的定義也是類似的,繼續(xù)從之前的機(jī)器視覺案例中來衍生,我們想把服務(wù)換成話題,周期發(fā)布目標(biāo)識別的位置,不管有沒有人需要。 運(yùn)行效果 現(xiàn)在我們會運(yùn)行三節(jié)點(diǎn)
    的頭像 發(fā)表于 12-01 15:32 ?388次閱讀
    <b class='flag-5'>話題</b>通信接口的定義和運(yùn)行效果

    PWM脈沖寬度調(diào)制原理

    脈沖寬度調(diào)制原理 在GPIO的數(shù)字輸入和輸出模式中,只有高低電平,高電平般是3.3V或者5V,低電平就是0V,如果我想要折中
    的頭像 發(fā)表于 11-27 11:37 ?935次閱讀
    <b class='flag-5'>PWM</b><b class='flag-5'>脈沖</b>寬度調(diào)制原理

    ADA4961脈沖響應(yīng)異常怎么解決?

    測試,波形如下圖所示,發(fā)現(xiàn)第一個周期的響應(yīng)異常:前半周振幅不足,第二周期開始就比較平穩(wěn)。 如上圖,黃色波形為輸入,綠色為輸出。增益控制維持不變。 問題: 1、上述響應(yīng)是否正常 2、是否有更合適器件推薦? 滿足
    發(fā)表于 11-14 08:22