日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

STM32F429第二十篇之高级定时器——PWM(OSSI,OSSR)

發(fā)布時(shí)間:2024/1/1 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F429第二十篇之高级定时器——PWM(OSSI,OSSR) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 高級(jí)定時(shí)器
  • PWM模式
    • 互補(bǔ)通道與剎車
    • 重要寄存器

前言

從本文開(kāi)始,介紹F429的高級(jí)時(shí)鐘特性。本文主要介紹高級(jí)時(shí)鐘的PWM功能的應(yīng)用。關(guān)于PWM,本文重點(diǎn)介紹實(shí)現(xiàn)帶有斷路功能的雙通道互補(bǔ)無(wú)延時(shí)的PWM波的實(shí)現(xiàn)方式。

本文主要參考文獻(xiàn)為:

  • ST.RM0090 參考手冊(cè)
  • 劉火良.STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南.機(jī)械工業(yè)出版社

更新列表:

  • 2021.02.23——更新關(guān)于OSSI與OSSR分析。
  • 2021.04.16——更新關(guān)于PWM時(shí)序

高級(jí)定時(shí)器

本文不打算詳細(xì)介紹高級(jí)定時(shí)器的每個(gè)特點(diǎn),因?yàn)楦呒?jí)定時(shí)器的內(nèi)容太多瑣碎與復(fù)雜。本文決定通過(guò)以實(shí)驗(yàn)的方式,分別介紹高級(jí)定時(shí)器的三個(gè)應(yīng)用場(chǎng)景:

  • PWM波輸出
  • 輸入捕獲
  • 編碼器功能

通過(guò)三個(gè)比較常用的應(yīng)用場(chǎng)景,比較全面的將高級(jí)定時(shí)器分解介紹。若以后遇到其他的應(yīng)用場(chǎng)景,再詳細(xì)介紹。

首先,我們看一下官方提供的高級(jí)定時(shí)器框圖。該框圖相對(duì)于基本定時(shí)器十分復(fù)雜,先大致了解一下即可。在此處,本文重點(diǎn)介紹高級(jí)定時(shí)器與芯片外部的接口。在框圖中,輸入接口在框圖的左邊,輸出接口在框圖的右邊。通過(guò)觀察該框圖,可以了解到:F429的高級(jí)定時(shí)器與外部的物理接口可以大致分成以下三種類型:

  • 外部觸發(fā)輸出接口 TIMx_ETR。
  • 剎車輸入接口 TIMx_BKIN
  • 四通道接口
  • 其中,前兩種接口在圖上比較明確不再詳細(xì)展開(kāi),下面重點(diǎn)講解一下四通道接口:
    在高級(jí)定時(shí)器中,每個(gè)定時(shí)器有4個(gè)通道。而每個(gè)通道與芯片外部都有對(duì)應(yīng)的物理接口。需要注意的是,其中輸入接口是的對(duì)應(yīng)關(guān)系可以通過(guò)寄存器配置,而輸出接口是直接對(duì)應(yīng)無(wú)法改變的。輸入接口與通道是一一對(duì)應(yīng)的,而每個(gè)通道提供輸出接口的同時(shí)還提供對(duì)應(yīng)的互補(bǔ)接口。也就是說(shuō),每一個(gè)通道對(duì)應(yīng)兩個(gè)輸出接口。另外需要注意的就是,雖然在框圖中將每個(gè)通道輸入接口和輸出接口分開(kāi)畫(huà)在框圖的左右兩側(cè),其實(shí)在物理上,名稱相同的接口為同一個(gè)接口。

    高級(jí)定時(shí)器與通用定時(shí)器的對(duì)外接口與F429的管腳對(duì)應(yīng)關(guān)系總結(jié)如下:

    通道TIM1TIM8TIM2TIM5TIM3TIM4TIM9TIM10TIM11TIM12TIM13TIM14
    CH1PA8/PE9/PC10PC6/PI15PA0/PA5/PA15PA0/PH10PA6/PC6/PB4PD12/PB6PE5/PA2PF6/PB8PF7/PB9PH6/PB14PF8/PA6PF9/PA7
    CH1NPA7/PE8/PB13PA5/PA7/PH13
    CH2PE11/PA9PC7/PI6PA1/PB3PA1/PH11PA7/PC7/PB5PD13/PB7PE6/PA3PH9/PB15
    CH2NPB0/PE10/PB14PB0/PB14/PH14
    CH3PE13/PA10PC8/PI7PA2/PB10PA2/PH12PB0/PC8PD14/PB8
    CH3NPB1/PE12/PB15PB1/PB15/PH15
    CH4PE14/PA11PC9/PI2PA3/PB11PA3/PI0PB1/PC9PD15/PB9
    ETRPE7/PA12PA0/PI3PA0/PA5/PA15PD2PE0
    BKINPA6/PE15/PB12PA6/PI4

    PWM模式

    PWM即脈沖寬度調(diào)制模式,PWM的頻率由TIMx_ARR寄存器值確定,其占空比由比較寄存器TIMx_CCRx值確定。

    在PWM模式中,信號(hào)流經(jīng)的主要模塊已經(jīng)通過(guò)紅色方框圈起來(lái),大致分成以下三個(gè)部分:

  • 時(shí)鐘來(lái)源和基礎(chǔ)定時(shí)器一樣,直接來(lái)自RCC提供的內(nèi)部時(shí)鐘。
  • 計(jì)數(shù)器模塊和基本定時(shí)器基本一致。和基本定時(shí)器相比,只是多了一個(gè)重復(fù)計(jì)數(shù)器(Repetion Counter)。該功能暫時(shí)不到,暫且不論。所以,這部分只需要當(dāng)做基本定時(shí)器的結(jié)構(gòu)處理即可。
  • 輸出通道。輸出通道共有4個(gè),本文圈出只是1通道,以此為例。
  • 關(guān)于基本定時(shí)器的更多知識(shí),可以參考博客<STM32F429第十八篇之基本定時(shí)器> 。

    其基本原理是,隨著內(nèi)部時(shí)鐘的脈沖,CNT的計(jì)數(shù)值不斷變化。當(dāng)CNT的值產(chǎn)生溢出或者等于Capture/Compare 1 寄存器時(shí),其OCxREF的電平發(fā)生變化,從而輸出通道與互補(bǔ)輸出通道的電平跟著變化。所以,自動(dòng)重載寄存器(AutoReload Register)的值決定了計(jì)數(shù)器(CNT)的計(jì)數(shù)周期,也就是PWM的頻率。而比較寄存器(Capture/Compare 1 Register)的值決定了PWM的占空比。

    以邊緣對(duì)齊模式為例,只要 TIMx_CNT < TIMx_CCRx,PWM 參考信號(hào) OCxREF 便為 高電平,否則為低電平。如果 TIMx_CCRx 中的比較值大于自動(dòng)重載值(TIMx_ARR 中),則 OCxREF 保持為“1”。如果比較值為 0,則 OCxRef 保持為“0”。


    注意:

  • ARR寄存器的數(shù)值加1,才是PWM波的周期數(shù)。
  • CCRx寄存器的值直接等于有效電平的時(shí)間。
  • 互補(bǔ)通道與剎車

    互補(bǔ)通道與剎車功能是高級(jí)寄存器特有的功能。

    在使用互補(bǔ)通道時(shí),往往還需要考慮死區(qū)等特殊功能。而本文為了簡(jiǎn)單起見(jiàn),不再考慮死區(qū)區(qū)間。通過(guò)配置TIMx_CCER寄存器,來(lái)使能互補(bǔ)通道,且將OCxREF 重定向到 OCx 輸出或 OCxN 輸出。

    互補(bǔ)信號(hào) OCx 和 OCxN 通過(guò)以下多個(gè)控制位的組合進(jìn)行激活:TIMx_CCER 寄存器中的 CCxE 和 CCxNE 位以及 TIMx_BDTR 和 TIMx_CR2 寄存器中的 MOE、OISx、OISxN、OSSI 和 OSSR 位。


    注意:
    此處中文文檔過(guò)于陳舊,最新的英文參考手冊(cè)有不同的描述,如下所示:

    關(guān)于OSSR和OSSI的作用,看文檔有點(diǎn)云里霧里,通過(guò)實(shí)驗(yàn),我個(gè)人認(rèn)為其主要作用如下:

    OSSR在MOE=1時(shí)起作用,即PWM處于運(yùn)行狀態(tài)。下面分條陳述:

  • 若互補(bǔ)通道都使能(CCxE=CCxNE=1),此時(shí)很容易理解,兩個(gè)端口按照配置正常輸出PWM波。
  • 若互補(bǔ)通道都禁用(CCxE=CCxNE=0),此時(shí)存疑,可以認(rèn)為兩個(gè)端口都處于高阻狀態(tài)。
  • 若互補(bǔ)通道有一個(gè)使能,一個(gè)禁用。則使能的端口正常輸出PWM波,禁用的端口的狀態(tài)與OSSR相關(guān)。
    若OSSR=0,則禁用端口輸出高阻(存疑),與CCxP或者CCxNP無(wú)關(guān)。
    若OSSR=1,則禁用端口輸出無(wú)效電平。假設(shè)OC1N為被禁用,即(CC1NE=0),則此時(shí)OC1N的輸出為無(wú)效電平,即CC1NP為0時(shí),高電平有效,輸出電平為0,CC1NP為1是,低電平有效,輸出電平為1。
  • OSSI與OSSR的作用很類似,其只有在MOE=0時(shí)起作用,即PWM處于高阻狀態(tài)。我們假定互補(bǔ)的兩個(gè)通道都使能,下面分條陳述:

  • 若OISx與OSIxN不同,有且只有一個(gè)電平為高電平,則通道輸出的電平對(duì)應(yīng)空閑狀態(tài)。即OCxN=OSIxN,OCx=OISx。
  • 若OISx=OSIxN=1時(shí),只有CCxP=CCxNP=0時(shí),OCx=OCxN=0;其余時(shí)候OCx=OCxN=1。
  • 若OISx=OSIxN=0時(shí),與前面相似,只有CCxP=CCxNP=1時(shí),OCx=OCxN=1,其余時(shí)候OCx=OCxN=0。
    上面3種情況是OSSI=1的效果,若OSSI=0,此時(shí)輸出高阻(存疑)。
  • 可以這樣理解:若是OISx=OSIxN且CCxP=CCxNP時(shí),此時(shí)輸出的是無(wú)效電平。其余的時(shí)候,OCxN=OSIxN,OCx=OISx。

    真值表如下:

    OSSI01111
    OSIxx0011
    OSIxNx0101
    CCxPx1xx0
    CCxNPx1xx0
    OCxx1010
    OCxNx1100
    OSSR01111
    CCxPx使能使能01
    CCxNPx01使能使能
    OCxx使能使能01
    OCxNx01使能使能

    發(fā)生斷路(斷路輸入上出現(xiàn)所選電平)時(shí):

    重要寄存器

    與PWM通道相關(guān)的重要寄存器如下所示:

    CCMR1

    在該寄存器中,需要配置以下幾位:

    CR1

    在該寄存器中,需要配置以下幾位:

    EGR

    CCER


    BDTR


    CR2



    總結(jié)

    以上是生活随笔為你收集整理的STM32F429第二十篇之高级定时器——PWM(OSSI,OSSR)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。