在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用STM32高精度定時器實現PWM輸出的實現原理

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

很多STM32系列的MCU內置高精度定時器,比方STM32F334、STM32G4、STM32H7等系列。利用高精度定時器實現PWM輸出應該說是最基本的功能了。不過,在實際應用中,常有人覺得無法實現duty=0或duty=100%的PWM輸出情形。這里以STM32F334的HRTIM為例,簡單介紹下利用它實現PWM輸出的實現原理。

STM32F334的HRTIM的功能框圖如下,由一個MASTER定時器和ABCDE五個定時器單元組成。其中ABCDE五個定時器單元各可以產生2路輸出信號,并支持互補輸出。

先看看跟HRTIM有關的時鐘。別的系列有支持向上、向下計數模式的。

在利用HRTIM中的定時器單元實現PWM輸出時,基于不同的分頻系數對應著不同的分辨率和最低頻率。如下表所示:【截圖來自STM32F334的參考手冊】

顯然,不同分頻比對應不同的計數時鐘fHRCK,根據計數時鐘結合16位的計數寬度可求出最長計數時間,亦即最小的PWM輸出頻率。

但對于高精度定時器HRTIM,由于其自身特定機制的原因,在實現PWM功能時,設計比較值和計數周期值時需遵循下面兩個原則:【注意是FHRTIM時鐘單位,即未被倍頻的時鐘,這里就是那個144Mhz時鐘】

1、 最小值必須不小于3個fHRTIM時鐘單位;

2、最大值不得大于0xFFFE個fHRTIM時鐘單位;

剛才上面說了,HRTIM里面的定時器單元所用的計數時鐘是fHRTIM先經過倍頻后再經過分頻器而來的,那么結合上面的兩個原則,不同分頻比條件下可以設定的計數周期或比較值的范圍就對應到如下表格:

上面表格就是定時器單元不同分頻比時可以設置的計數周期值或用于比較的比較寄存器的值的范圍。比方我們以上面TABLE82中的CKPSC=3時來看看。CKPSC=3,從上面Table81可以得知此時的計數時鐘為源時鐘倍頻后的8分頻,我們在設計PWM計數周期值或比較值時就要求在0x00c~~0xFFFB范圍內配置。鑒于此,有人就得出沒法實現PWM輸出的0占空比或100%占空比的結論,其實這是誤解。

假設此時我們所需要的PWM周期值剛好0xff00.那么比較寄存器CMP的值就可以在0x000c~~0xff00任意設置并能實現有效、可靠比較,顯然,CMP值不要小于0x000c這個起點值【實際上Table82中的Min值都是對應著3個fHRTIM源時鐘單位,因不同分頻比而呈現不同數據而已】,那這不是說PWM輸出不能實現0占空比的情況嗎?非也!

對于HRTIM的輸出,通常是根據計數器的值與比較寄存器的值發生相等匹配事件時進行SET【置1】或RESET【清零】輸出。【用過STM32常規定時器的人這里可能會感受到一些差異。】

比方如上圖所示,在發生比較事件時做RESET輸出,發生PER周期性事件時做SET輸出。

顯然,當我們不斷增加CMP的值,占空比也會相應增大。當CMP的值增加到剛好等于PER的值時,則輸出RESET。因為此時CMP比較事件、PER周期性事件在同一時間點發生,會涉及到事件競爭的仲裁問題。由于比較事件響應優先級高于周期性事件的,所以此時的輸出按比較事件來定,這里輸出RESET,此時也剛好對應著Duty=0的情形。兩個事件總是同時發生,而PER事件競爭不過CMP事件,輸出只好由CMP事件說了算。

按照這種配置,那又如何實現Duty=100%的輸出呢?

很簡單,當我們將CMP的值設置成任意被PER還大的值時,就始終輸出SET信號了。因為此時CMP永遠不會等于PER,即不會發生有效比較匹配事件,無有效比較事件則不會有RESET的輸出,輸出始終由PER事件掌控。

在基于HRTIM做PWM輸出時,弄清了原理后就知道如何靈活編寫代碼了。上面只是大致做了PWM輸出的原理介紹,更多細節還是得細看手冊,比方上面提到的定時器事件及事件響應競爭時的仲裁。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5196

    瀏覽量

    214369
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356764
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115075

原文標題:STM32高精度定時器PWM輸出話題

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

收藏 人收藏

    評論

    相關推薦

    詳解CKS32F107xx系列的定時器同步功能

    CKS32F107xx系列部分定時器在內部是相連的,可用于定時器同步或鏈接,方便用戶配置不同的同步模式,以便在電機控制、數據采集和PWM信號生成等應用中,實現復雜的時間序列和多通道的同
    的頭像 發表于 11-26 17:51 ?448次閱讀
    詳解CKS32F107xx系列的<b class='flag-5'>定時器</b>同步功能

    如何在MSP430?上實現內置振蕩高精度定時器

    電子發燒友網站提供《如何在MSP430?上實現內置振蕩高精度定時器.pdf》資料免費下載
    發表于 09-14 11:10 ?0次下載
    如何在MSP430?上<b class='flag-5'>實現</b>內置振蕩<b class='flag-5'>器</b>的<b class='flag-5'>高精度</b><b class='flag-5'>定時器</b>

    定時器的工作方式介紹

    實現周期性事件的硬件模塊。它可以用于實現各種定時任務,如定時中斷、PWM(脈沖寬度調制)輸出
    的頭像 發表于 07-12 10:29 ?1061次閱讀

    STM32G4系列芯片定時器的延時輸出問題

    有人使用STM32G4系列芯片內部的多個定時器PWM輸出輸出頻率一樣,占空比也一樣,均為50%。可是,當他中途調整各個
    的頭像 發表于 07-01 09:45 ?1819次閱讀
    <b class='flag-5'>STM32</b>G4系列芯片<b class='flag-5'>定時器</b>的延時<b class='flag-5'>輸出</b>問題

    STM8L052定時器1同時輸出3路PWM,想讓其中的兩路PWM輸出頻率跟另外一個不同,可以實現嗎?

    STM8L052的定時器1同時輸出3路PWM但是想讓其中的兩路PWM輸出頻率跟另外一個不同,請問 可以
    發表于 05-13 09:06

    如何實現一個軟件定時器

    在Linux,uC/OS,FreeRTOS等操作系統中,都帶有軟件定時器,原理大同小異。典型的實現方法是:通過一個硬件定時器產生固定的時鐘節拍,每次硬件定時器中斷到,就對一個全局的時間
    的頭像 發表于 04-29 11:00 ?708次閱讀

    求助,關于STM32高精度定時器應用問題求解

    最近使用STM32的高級定時器,想要實現無縫移相效果,嘗試了各種方式,均無法正常移相,原廠也沒有找到這方面的資料,不知道是否能實現這樣的功能 我的測試分為左移相和右移相 第1次測試:左
    發表于 04-10 07:42

    如何用STM32定時器實現一個周期輸出PWM2的波形?

    請教各位如何用STM32定時器實現一個周期輸出PWM2的波形呢(低-高-低-高-低)?萬分感謝您的解答!
    發表于 04-03 06:39

    集成有看門狗定時器高精度電壓監控TPS3851數據表

    電子發燒友網站提供《集成有看門狗定時器高精度電壓監控TPS3851數據表.pdf》資料免費下載
    發表于 03-29 10:00 ?0次下載
    集成有看門狗<b class='flag-5'>定時器</b>的<b class='flag-5'>高精度</b>電壓監控<b class='flag-5'>器</b>TPS3851數據表

    STM32F407的定時器9和10怎么設置為主從關系?

    中關閉主定時器PWM輸出,達到精確的位移控制的目的,這樣只用進一次中斷,而不用每次進中斷里進行計數。 我用通用定時器2-5可以實現; 但是
    發表于 03-28 06:02

    STM32G030定時器16 17和1同步輸出如何實現

    STM32G030系列中只有定時器1 16和17三個定時器可以輸出帶死區時間互補pwm,我想實現
    發表于 03-27 06:45

    STM32同一定時器PWM輸出定時,會影響我的PWM輸出嗎?

    求助各位大佬 ,我用定時器2通道1輸出PWM 定時器設置為TIM2_PERIODE (1000-1) TIM2_PRESCALER 36,現在還想開啟2的中斷用
    發表于 03-26 07:23

    如果STM32定時器外接了正交編碼,該剩余通道是否能做PWM輸出呢?

    其實,對于STM32芯片,編碼輸入信號就是定時器的計數時鐘源之一。定時器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實現輸入捕獲或輸出
    的頭像 發表于 03-21 09:06 ?1895次閱讀
    如果<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>外接了正交編碼<b class='flag-5'>器</b>,該剩余通道是否能做<b class='flag-5'>PWM</b><b class='flag-5'>輸出</b>呢?

    STM32G030C8T6要輸出8~12路PWM,每個定時器可以輸出4路,那如何讓兩個定時器輸出PWM同步呢?

    STM32G030C8T6要輸出8~12路PWM,每個定時器可以輸出4路,那如何讓兩個定時器
    發表于 03-08 08:19

    使用555定時器的可調雙定時器電路

    定時器 IC 555 是最通用和最常用的 IC 之一,因為它的應用范圍更廣,如 PWM放大器、延遲定時器、開關電路、占空比選擇、時鐘脈沖發生
    的頭像 發表于 02-25 15:16 ?2326次閱讀
    使用555<b class='flag-5'>定時器</b>的可調雙<b class='flag-5'>定時器</b>電路
    主站蜘蛛池模板: 操你啦在线播放 | 国产一级特黄全黄毛片 | 久久97精品久久久久久久看片 | 久久成人性色生活片 | 久久综合久久久久 | 色婷婷综合久久久久中文一区二区 | www.91在线| 亚洲另类激情综合偷自拍 | 深夜大尺度视频在线观看 | 亚洲国产色图 | 黄色国产在线观看 | 亚洲综合色婷婷久久 | 大伊人网 | 日韩三级一区 | 国产三级在线视频观看 | 中国国产aa一级毛片 | 亚洲综合黄色 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲www色| 一级毛片免费不卡直观看 | 女的扒开尿口让男人桶 | 欧美色视频日本片高清在线观看 | 国产又色又爽又黄的网站在线一级 | 欧美亚洲第一区 | 两性色午夜视频免费老司机 | 啪啪日韩 | 亚洲人色大成年网站在线观看 | 国产午夜a理论毛片在线影院 | 乌克兰一级毛片 | jlzzjlzz欧美大全| 三级视频网站 | 久久久午夜 | 未成人禁止视频高清在线观看 | 亚洲综合校园春色 | 国产色婷婷精品免费视频 | 91高清在线成人免费观看 | 日本高清不卡视频 | 一本到在线观看视频不卡 | 亚洲综合五月天欧美 | 一区二区三区免费 | 丁香婷婷综合网 |