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

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

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

PWM輸入原理解析

jf_78858299 ? 來(lái)源:魚(yú)鷹談單片機(jī) ? 作者:魚(yú)鷹談單片機(jī) ? 2023-03-28 16:55 ? 次閱讀

介紹之前,首先介紹一下 STM32F103 TIM 的一些相關(guān)特性:

  1. 無(wú)法使用外部引腳中斷觸發(fā) DMA (有些型號(hào)可以)
  2. 無(wú)法使用 TIM 同時(shí)捕獲 上升沿和下降沿 。你在庫(kù)里面看到的宏其實(shí)在使用時(shí)受到了限制,高級(jí)定時(shí)器1、8,通用定時(shí)器2、3、4、5都不行,而一般103 就只帶這些定時(shí)器。

圖片

圖片3、高頻信號(hào)輸入時(shí),中斷進(jìn)入很頻繁,如果是 100 K 頻率,你需要 5 us 進(jìn)入一次(高低電平各一次,還是在占空比為 50 % 情況下,其它占空比條件更為苛刻),如果采用中斷處理方式,你必須在中斷中完成很多操作(清標(biāo)志、計(jì)算、翻轉(zhuǎn)極性等),同時(shí)你需要保證這兩次中斷不能被全局中斷禁止,或者被高優(yōu)先級(jí)中斷打斷,否則,你得到的可能就不是一次脈沖的高電平了,這樣你的占空比、頻率都將計(jì)算出錯(cuò)。

正因?yàn)橛腥缟蠁?wèn)題,而捕獲 PWM 脈沖又是比較常見(jiàn)的功能,所以需要一個(gè)高效的捕獲程序完成該工作。而魚(yú)鷹今天介紹的實(shí)現(xiàn)原理我認(rèn)為就是最高效的。

100K 頻率誤差 0%,占空比誤差1%!

嵌入式中,100 K 頻率已經(jīng)算比較高的了,當(dāng)然是在關(guān)注占空比情況下,如果只關(guān)注頻率,那么可測(cè)量的頻率將更高。

可能有些人會(huì)抬杠,說(shuō),干嘛不使用 FPGA。魚(yú)鷹當(dāng)然知道有比單片機(jī)更有效的捕獲器件,因?yàn)槲易约嘿I(mǎi)的 邏輯分析儀 (想買(mǎi)這個(gè)的可以找魚(yú)鷹預(yù)定,可以給一定的優(yōu)惠,預(yù)定人數(shù)需要10個(gè)以上)就可以捕獲很高的頻率、精度,但問(wèn)題在于成本,在于有必要嗎?這個(gè)邏輯分析儀可是幾百大洋啊。

閑話不多說(shuō),魚(yú)鷹首先介紹一下該捕獲方法的基本原理。

很簡(jiǎn)單,就是利用二進(jìn)制溢出特性實(shí)現(xiàn)的。(2038問(wèn)題-動(dòng)圖)

圖片

這個(gè)特性魚(yú)鷹在筆記中也多次介紹了其中的應(yīng)用,比如無(wú)鎖隊(duì)列、擴(kuò)展定時(shí)器、編碼器、延時(shí)等,今天就再加一個(gè)應(yīng)用,PWM 捕獲(本篇筆記不介紹這個(gè)特性原理,可以看歷史相關(guān)筆記)。

可以說(shuō)理解了這個(gè)特性,在各種整型數(shù)據(jù)處理中如虎添翼,再也不擔(dān)心數(shù)據(jù)溢出的問(wèn)題,反而要利用該特性完成一些騷操作,比如今天 PWM 捕獲就是如此。

另一個(gè)絕技就是使用 DMA 了,這是它高效可靠的原因。

首先我們看看定時(shí)器的構(gòu)成框圖:

圖片

上面標(biāo)注部分就是為什么 PWM 輸入模式只能使用通道 1 或通道 2 的原因。

這里我們以TI1作為PWM輸入,兩個(gè)捕獲通道同時(shí)捕獲 TI1 為例說(shuō)明。

基本配置如下:

  1. 捕獲通道 1 觸發(fā) DMA,同時(shí)設(shè)置 捕獲上升沿 ,這樣,只要上升沿觸發(fā)了,可以自動(dòng)完成捕獲并DMA傳輸至用戶緩存。通道 2 下降沿捕獲 ,不觸發(fā) DMA。
  2. 配置DMA,傳輸外設(shè)地址不是某一個(gè)寄存器,而是 DMAR,同時(shí)設(shè)置傳輸數(shù)量,這一定是 2 的倍數(shù),因?yàn)橐淮涡枰獋鬏攦纱危?2 位寬度。
  3. 因?yàn)樾枰獋鬏攦纱?CCRx,所以需要正確設(shè)置 DCR 寄存器。

以上配置就是整個(gè)功能最為關(guān)鍵的部分。如果你理解了下面介紹的捕獲原理,你自然知道為什么需要這么設(shè)置了。

我們首先看看 PWM 捕獲時(shí)基本工作過(guò)程:

圖片

另外還需要了解 TIM 一個(gè)很重要的DMA 傳輸特性:通過(guò)配置寄存器,可以一次觸發(fā),多次DMA連續(xù)傳輸,這個(gè)特性在這個(gè)功能中也被用上了。

圖片

圖片

如何利用這個(gè)功能呢?一般我們配置 DMA 傳輸時(shí),比如串口,一般外設(shè)地址就是 DR 寄存器。而如果我們想傳輸 TIM 的捕獲值,我們可以設(shè)置成 CCR1 寄存器的地址。

這樣也可以正常傳輸,但是只能在觸發(fā)時(shí)傳輸一個(gè)寄存器的值,如果需要把兩次捕獲值都傳輸,那么就需要配置兩個(gè) DMA 通道完成,但這里又涉及到了兩個(gè) DMA 通道同步的問(wèn)題,因?yàn)槟憧隙ㄏM看尾杉膬蓚€(gè)數(shù)據(jù)都屬于同一個(gè)脈沖。

所以 TIM 用了這兩個(gè)寄存器解決這個(gè)問(wèn)題,通過(guò) ** DMAR 中轉(zhuǎn)** ,就可以完成一次觸發(fā),連續(xù)傳輸兩個(gè) CCR 的值。

想必看到這里,你應(yīng)該大概知道該捕獲的原理是什么了。

圖片

這里魚(yú)鷹再結(jié)合上圖描述一下。

初始化(定時(shí)器、DMA、GPIO)完成后,定時(shí)器就準(zhǔn)備好工作了,一旦有一個(gè)脈沖輸入,上升沿觸發(fā),此時(shí)因?yàn)樵O(shè)置了 DMA 觸發(fā),同時(shí)設(shè)置了連續(xù)傳輸兩個(gè)寄存器,所以它會(huì)把當(dāng)前的 CCR1 和上一次捕獲的 CCR2 (下降沿觸發(fā))傳輸?shù)接脩艟彺?,這是 兩次 DMA 傳輸 ,所以DMA的計(jì)數(shù)器會(huì)遞減兩次。并且 CCR1 的值比 CCR2 的值大 (不考慮溢出情況下,并且差值情況下,大小沒(méi)有意義)。這樣,上面的三次觸發(fā),我們可以得到三組捕獲數(shù)據(jù)。

圖片

通過(guò) (uint16_t)(CCR1 – CCR2),我們可以得到 低電平 ,而通過(guò)兩次CCR1 或者 CCR2 的差值,我們可以得到 周期 。這樣計(jì)算頻率和占空比就不是什么難事了。特別需要注意的是,三次上升沿捕獲期間,定時(shí)器不可以產(chǎn)生溢出現(xiàn)象,這可以通過(guò)定時(shí)器分頻實(shí)現(xiàn)。分頻系數(shù)越小,分辨率越高,但越容易溢出。

這里要注意的是,如果頻率比較高,建議多測(cè)量幾組數(shù)據(jù),然后取后面幾組數(shù)據(jù)進(jìn)行簡(jiǎn)單平均或中值計(jì)算(具體根據(jù)捕獲值來(lái)確定),這樣準(zhǔn)確度更高一些,因?yàn)閯傞_(kāi)始可能因?yàn)槌跏蓟木壒?,?dǎo)致意外捕獲,這是可能的(剛開(kāi)始不確定可以測(cè)個(gè) 64 組再說(shuō))。

另外如果輸入 PWM 頻率或占空比會(huì) 不斷變化 ,也需要根據(jù)情況多測(cè)幾組(或定時(shí)測(cè)),并進(jìn)行簡(jiǎn)單處理,這樣不容易剛好捕獲到變化的脈沖,保證脈沖計(jì)算的可靠性。

總之,怎么去讓你的程序更加可靠就是各位道友的事情了,魚(yú)鷹只是提供一個(gè)解決思路。另外魚(yú)鷹不準(zhǔn)備提供源碼給各位道友,自由發(fā)揮吧。如果確實(shí)有需要的話,在本篇文章更新前的時(shí)間里,道友有過(guò)贊賞或者留言被置頂或轉(zhuǎn)發(fā)支持的情況,那么也可以主動(dòng)聯(lián)系魚(yú)鷹,魚(yú)鷹可以給一份參考程序,僅供參考。以前沒(méi)有的就別找魚(yú)鷹了

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

    關(guān)注

    114

    文章

    5195

    瀏覽量

    214354
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41590
  • 高頻信號(hào)
    +關(guān)注

    關(guān)注

    1

    文章

    140

    瀏覽量

    21721
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    脈寬調(diào)制(PWM)設(shè)計(jì)及應(yīng)用原理解析

    脈寬調(diào)制(以下簡(jiǎn)稱為PWM)是數(shù)字系統(tǒng)產(chǎn)生模擬輸出的一種方式(通過(guò)將PWM信號(hào)通過(guò)一些附加電路和/或機(jī)械系統(tǒng))。PWM的一些應(yīng)用示例如下:   PWM信號(hào)可用于通過(guò)低通濾波器產(chǎn)生模擬
    發(fā)表于 11-28 12:31 ?5597次閱讀
    脈寬調(diào)制(<b class='flag-5'>PWM</b>)設(shè)計(jì)及應(yīng)用原<b class='flag-5'>理解析</b>

    手機(jī)通信原理解析

    `手機(jī)通信原理解析:第 1 章    無(wú)線通信原理第2 章    移動(dòng)通信系統(tǒng)第3 章    移動(dòng)通信系統(tǒng)的多址接入技術(shù)第4 章    移動(dòng)通信系統(tǒng)的語(yǔ)音編碼第5 章 GSM移動(dòng)通信系統(tǒng)的數(shù)字
    發(fā)表于 12-14 14:31

    stm32的定時(shí)器還可以PWM輸入檢測(cè)嗎,能解釋下嗎有點(diǎn)不理解

    stm32的定時(shí)器還可以PWM輸入檢測(cè)嗎,能解釋下嗎有點(diǎn)不理解
    發(fā)表于 03-29 16:15

    定位技術(shù)原理解析

    【追蹤嫌犯的利器】定位技術(shù)原理解析(4)
    發(fā)表于 05-04 12:20

    鋰電池基本原理解析

    【鋰知道】鋰電池基本原理解析:充電及放電機(jī)制電池充電最重要的就是這三步:第一步:判斷電壓
    發(fā)表于 09-15 06:47

    如何理解懸浮輸入?如何理解中斷懸浮輸入

    輸入?輸入阻抗較高,可以用于模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)1.2如何理解中斷懸浮輸入?略。。。1.3如何理解上拉
    發(fā)表于 01-25 07:22

    虛擬存儲(chǔ)器部件原理解析

    虛擬存儲(chǔ)器部件原理解析
    發(fā)表于 04-15 14:25 ?3139次閱讀

    觸摸屏的應(yīng)用與工作原理解析

    觸摸屏的應(yīng)用與工作原理解析
    發(fā)表于 02-08 02:13 ?38次下載

    關(guān)于PWM的應(yīng)用與知識(shí)解析

    PWM全稱Pulse Width Modulation:脈沖寬度調(diào)制(簡(jiǎn)稱脈寬調(diào)制,通俗的講就是調(diào)節(jié)脈沖的寬度),是電子電力應(yīng)用中非常重要的一種控制技術(shù),在理解TA之前我們先來(lái)了解幾個(gè)概念 。
    的頭像 發(fā)表于 04-12 09:13 ?4515次閱讀
    關(guān)于<b class='flag-5'>PWM</b>的應(yīng)用與知識(shí)<b class='flag-5'>解析</b>

    這樣理解PWM,想不懂都難!

    關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容PWM有非常廣泛的應(yīng)用,比如直流電機(jī)的無(wú)極調(diào)速,開(kāi)關(guān)電源、逆變器等等。個(gè)人認(rèn)為,要充分理解或掌握模擬電路、且有所突破,很有必要吃透這三個(gè)知識(shí)點(diǎn):PWM電感紋波...
    發(fā)表于 11-09 15:51 ?28次下載
    這樣<b class='flag-5'>理解</b><b class='flag-5'>PWM</b>,想不懂都難!

    清翔電子51單片機(jī)PWM理解

    清翔電子51單片機(jī)PWM理解
    發(fā)表于 11-12 13:36 ?16次下載
    清翔電子51單片機(jī)<b class='flag-5'>PWM</b><b class='flag-5'>理解</b>

    關(guān)于PWM模式的理解

    關(guān)于PWM模式的理解
    發(fā)表于 11-30 14:06 ?3次下載
    關(guān)于<b class='flag-5'>PWM</b>模式的<b class='flag-5'>理解</b>

    史密斯圓圖和阻抗匹配原理解析

    史密斯圓圖和阻抗匹配原理解析
    的頭像 發(fā)表于 11-02 20:16 ?2025次閱讀

    什么是晶振 晶振工作原理解析

    什么是晶振 晶振工作原理解析
    的頭像 發(fā)表于 12-30 17:13 ?4373次閱讀
    什么是晶振 晶振工作原<b class='flag-5'>理解析</b>

    最強(qiáng) PWM 輸入理解析

    無(wú)法使用**外部引腳中斷**觸發(fā) DMA (有些型號(hào)可以) 2. 無(wú)法使用 TIM 同時(shí)捕獲 **上升沿和下降沿** 。你在庫(kù)里面看到的宏其實(shí)在使用時(shí)受到了限制,高級(jí)定時(shí)器1、8,通用定時(shí)器2、3、4、5都不行,而一般103 就只帶這些定時(shí)器
    的頭像 發(fā)表于 05-10 15:01 ?908次閱讀
    最強(qiáng) <b class='flag-5'>PWM</b> <b class='flag-5'>輸入</b>原<b class='flag-5'>理解析</b>