精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

STM32定時器同步啟動示例及應用提醒

茶話MCU ? 來源:茶話MCU ? 2023-11-09 10:49 ? 次閱讀

我們有時會利用STM32片內的多個TIMER進行級聯(lián),實現(xiàn)同步啟動。不過有人會遇到沒法同步啟動的情況;或者說基于相同的配置,某次可以成功,下次再來又不行了;或者說同樣的芯片、同樣的代碼,別人的可以,而自己卻不行云云。所謂不行、不成功就是指基于同步啟動后,主從TIMER的PWM輸出相位肉眼可見的不同步,明顯存在啟動時間差。

我這里不妨先以STM32G4芯片內TIM1/TIM2/TIM3為例來演示下實現(xiàn)過程。看看到底能否實現(xiàn),會不會碰到無法同步的情形。如果有,可否解決。

根據(jù)該系列參考手冊有關TIMER內部互聯(lián)關系圖可知TIM1/TIM2/TIM3就可以建立起主從關系。下圖便是其中的一部分TIMER信號互聯(lián)觸發(fā)關系圖。

93ebfe7c-7eaa-11ee-939d-92fbcf53809c.png

我將TIM1/TIM2/TIM3按照下面的方式前后主從級聯(lián)。

940b22ca-7eaa-11ee-939d-92fbcf53809c.png

TIM1的觸發(fā)輸出TRGO作為TIM2的觸發(fā)輸入【ITR0】,TIM2的觸發(fā)輸出TRGO作為TIM3的觸發(fā)輸入【ITR1】,其中TIM2/TIM3均配置在Trigger從模式。至于TIM1和TIM2的觸發(fā)輸出【TRGO】信號均選擇各自計數(shù)器的使能動作,即對定時器的TIMx_CR1@CEN位置1。對于處在Trigger從模式的定時器,外來觸發(fā)信號具有對TIMER計數(shù)器使能的同等效果。TIM3的TRGO不必關注,因為TIMER級聯(lián)應用時,TRGO信號是給下一級TIMER用的。

使用CubeMx對STM32G431進行配置。配置過程中將主從模式控制位MSM使能,具體參考下面配置。【注:3個定時器的時基參數(shù)及PWM配置都一樣。未對計數(shù)時鐘做分頻。最后希望輸出3路完全同頻同相的波形。】

94467fc8-7eaa-11ee-939d-92fbcf53809c.png

9468bf0c-7eaa-11ee-939d-92fbcf53809c.png

947ff03c-7eaa-11ee-939d-92fbcf53809c.png

利用CubeMx完成配置后,基于STM32 HAL庫添加用戶代碼進行驗證測試。經測試,發(fā)現(xiàn)3路輸出同步與否 跟 3個定時器的初始化代碼順序有明顯的關系。

94ab6708-7eaa-11ee-939d-92fbcf53809c.png

比如,基于上面初始配置順序的3路輸出就沒有做到同步啟動,貌似互不理睬。

94cd9f4e-7eaa-11ee-939d-92fbcf53809c.png

同樣,基于上面初始配置順序的3路輸出也沒有做到完美同步啟動,中間那路明顯異類。

94e7ee08-7eaa-11ee-939d-92fbcf53809c.png

然而,基于上面初始化順序的3路輸出倒是同步完美。

現(xiàn)在3個TIMER,初始化配置代碼擺放先后順序共6種組合,我把6種組合的實現(xiàn)結果集中在下面表格里一起來看。

9510f442-7eaa-11ee-939d-92fbcf53809c.png

我們發(fā)現(xiàn)上面6種組合中,僅表格里最后一組可以實現(xiàn)完美同步輸出,符合預期。

也就是說,只有初始化時遵循先主后從的配置順序才可能實現(xiàn)完美同步啟動。

95387562-7eaa-11ee-939d-92fbcf53809c.png

在正確的配置順序下,我們不妨看看啟動后三個定時器的計數(shù)情況:【下圖是兩次隨機暫停程序讀到的3個計數(shù)器的值,見紅線下劃線標示的】

954ddd26-7eaa-11ee-939d-92fbcf53809c.png

我們可以清晰地看到任意兩次暫停得到的三個計數(shù)器的值,兩兩主從定時器的計數(shù)值相差1個定時器外設時鐘單位,注意是TIMER外設時鐘,并不是計數(shù)時鐘,具體到這里就是1us/170。【因此刻沒有對時鐘源分頻,計數(shù)時鐘剛好等于TIMER外設時鐘】

957a4e56-7eaa-11ee-939d-92fbcf53809c.png

一般來講,主從間的這1個TIMER外設時鐘的延時不該對應用構成影響,若覺得有影響,大概率是您選錯芯片了,或許該選個主頻更高的。何況當對計數(shù)時鐘做分頻后,計數(shù)器往往沒法感覺和區(qū)分這個細小延時的。當然,實在有強迫癥或其它想法,如果計數(shù)時鐘跟TIMER外設時鐘相同,即未做分頻前提下,我們還可以通過修改計數(shù)器初始值保證啟動后保持相同計數(shù)值或預期值。比方,在正確初始配置順序下,啟動前將三個計數(shù)器的初始值稍作調整,見下圖紅線方框里的代碼。

959626d0-7eaa-11ee-939d-92fbcf53809c.png

這樣調整后,每次暫停程序運行時,三個計數(shù)器的值總是保持高度一致,不差分毫。

提醒:剛才通過調整計數(shù)初值實現(xiàn)徹底的計數(shù)器同步計數(shù)僅限于計數(shù)時鐘源沒有做分頻的前提下,若計數(shù)時鐘有被分頻是不需要這么做的,也不能這么做。因為那1個主從啟動硬件延時是跟著外設時鐘走的,不是跟著計數(shù)時鐘走的。當計數(shù)時鐘被分頻后,計數(shù)器往往感受不到那個延時了,顯然分頻系數(shù)越大越感覺不到主從間的那個延時。如果此時手動額外在計數(shù)器初值上加1或加2就弄巧成拙了,本來可以忽略的延時被你這么一加反而加大延時了。當然,為產生啟動相差而有意調整計數(shù)初始值又是另外一回事了。

到此,我們也順便看看像下面級聯(lián)的情形,主從級聯(lián),從級并列多個定時器被同一觸發(fā)信號觸發(fā)。

95c1dde8-7eaa-11ee-939d-92fbcf53809c.png

95dbfdc2-7eaa-11ee-939d-92fbcf53809c.png

具體到這里,TIM1的觸發(fā)輸出同時接到TIM2/TIM3/TIM4的內部觸發(fā)輸入。內部信號接法見上圖。

我們照樣使用cubeMx配置4個TIMER。

9600a8a2-7eaa-11ee-939d-92fbcf53809c.png

962585c8-7eaa-11ee-939d-92fbcf53809c.png

9643114c-7eaa-11ee-939d-92fbcf53809c.png

966796ac-7eaa-11ee-939d-92fbcf53809c.png

完成配置后,添加用戶代碼、稍加整理 。注意各定時器的初始化順序,必須按照先主后從的順序進行,同級并聯(lián)的無所謂先后。至于各定時器的啟動函數(shù)順序,原則上要求跟初始化順序反過來,即按照先從后主的順序來啟動。

運行代碼,可以看到4個TIMER輸出的PWM輸出同步得很完美。同樣,我們也可以通過隨機暫停程序查看4個定時器的計數(shù)值的情況。下圖就是任意時刻暫停程序后得到的4個計數(shù)器的數(shù)據(jù)。詳見下面截圖底部表格說明。

9695d4fe-7eaa-11ee-939d-92fbcf53809c.png

顯然,在初始計數(shù)值相同情況下,主從定時器的計數(shù)值相差1個定時外設時鐘,這點跟上面的測試是一致的。另外,基于一個觸發(fā)信號下的同級定時器沒有計數(shù)差值。

總的說來,STM32芯片內多個TIMER實現(xiàn)同步啟動完全可以實現(xiàn),而且可以做到很好的同步,配置也簡單。通常使用計數(shù)器的使能信號作為觸發(fā)信號。應用中最常見的問題莫過于定時器初始化順序不當,記得按照先主后從的順序進行,否則會導致無法實現(xiàn)整體同步啟動及預期輸出,這里特作提醒。

審核編輯:湯梓紅

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

    關注

    453

    文章

    50406

    瀏覽量

    421813
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5144

    瀏覽量

    213401
  • STM32
    +關注

    關注

    2266

    文章

    10871

    瀏覽量

    354801
  • 定時器
    +關注

    關注

    23

    文章

    3237

    瀏覽量

    114467
收藏 人收藏

    評論

    相關推薦

    定時器的使用方法 MM32主/從定時器同步與精準定時操作實例

    。這里所謂某一個條件可以是定時到時、定時器超時、比較成功等許多條件。這種通過一個定時器觸發(fā)另一個定時器的工作方式稱為定時器
    發(fā)表于 01-11 11:25 ?4340次閱讀

    STM32F1通用定時器示例詳解--TIM15_Compleme

    STM32F1通用定時器示例詳解--TIM15_ComplementarySignals
    發(fā)表于 12-07 18:15 ?0次下載

    STM32F1通用定時器示例講解_Timebase

    STM32F1通用定時器示例詳解—Timebase
    發(fā)表于 12-07 18:14 ?0次下載

    stm32定時器中斷程序

    STM32定時器是個強大的模塊,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做PWM輸出或者輸入捕獲功能。 以下是進行
    發(fā)表于 10-12 16:59 ?1.3w次閱讀

    如何進行多個定時器主從級聯(lián)同步輸出詳細配置示例說明

    有些應用場合,我們需要使用多個定時器主從級聯(lián),然后讓各個定時器同時啟動并做同頻同相的PWM波形輸出。要完成這個功能,有時發(fā)現(xiàn)實現(xiàn)起來似乎并沒有那么順暢,這里基于STM32F1系列芯片做
    的頭像 發(fā)表于 02-03 12:27 ?4.5w次閱讀
    如何進行多個<b class='flag-5'>定時器</b>主從級聯(lián)<b class='flag-5'>同步</b>輸出詳細配置<b class='flag-5'>示例</b>說明

    關于STM32定時器觸發(fā)SPI逐字收發(fā)之應用示例

    STM32定時器觸發(fā)SPI逐字收發(fā)之應用示例
    的頭像 發(fā)表于 01-14 16:35 ?5495次閱讀

    基于STM32定時器捕獲測量脈寬的應用示例

    我們知道,利用單片機定時器捕獲功能測量脈沖信號寬度及占空比是種很常見的做法。這里以STM32定時器為例來介紹基于其捕獲功能實現(xiàn)對脈寬的測量的思路及過程。 一般來講,使用STM32
    的頭像 發(fā)表于 01-02 18:17 ?1.3w次閱讀
    基于<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>捕獲測量脈寬的應用<b class='flag-5'>示例</b>

    [STM32]通用定時器的使用

    STM32的通用定時器定時、輸出PWM功能的使用本次還是使用發(fā)光二極管來驗證定時器的使用目錄STM32的通用
    發(fā)表于 11-22 19:06 ?24次下載
    [<b class='flag-5'>STM32</b>]通用<b class='flag-5'>定時器</b>的使用

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數(shù)時鐘計數(shù)自動重裝載寄存
    發(fā)表于 11-23 18:21 ?31次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    STM32——高級定時器、通用定時器、基本定時器的區(qū)別

    STM32——高級定時器、通用定時器、基本定時器的區(qū)別
    發(fā)表于 11-26 15:21 ?110次下載
    <b class='flag-5'>STM32</b>——高級<b class='flag-5'>定時器</b>、通用<b class='flag-5'>定時器</b>、基本<b class='flag-5'>定時器</b>的區(qū)別

    STM32定時器學習---基本定時器

    STM32F1系列的產品,除了互聯(lián)網(wǎng)產品外,工作8個,3種定時器,其中一種就是基本定時器。那么STM32單片機的基本定時器如何操作以及編程呢
    發(fā)表于 12-02 14:06 ?27次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>學習---基本<b class='flag-5'>定時器</b>

    ???STM32之玩轉定時器TIMX???

    TIM8是STM32的高級定時器,TIM6,TIM7為基本定時器,其他為通用定時器基本定時器TIM6和TIM7
    發(fā)表于 12-28 19:08 ?18次下載
    ???<b class='flag-5'>STM32</b>之玩轉<b class='flag-5'>定時器</b>TIMX???

    STM32各類系列定時器概覽

    時鐘源;介紹了如何使用各種可用模式與功能;介紹了如何計算各種配置下的時基;除基本定時器模式外,還介紹了定時器同步序列以及用于電機控制應用的高級功能。本文檔針對各模式提供了典型配置以及使用方法的
    發(fā)表于 08-31 10:49 ?0次下載

    定時器定時啟動信號特點

    定時器定時啟動信號特點? 定時器是一種常用的計時,可以在指定的時間后發(fā)出信號。它們在各種電器、儀器和控制系統(tǒng)中被廣泛應用。
    的頭像 發(fā)表于 10-24 11:49 ?836次閱讀

    STM32H7芯片系列中定時器同步啟動并輸出PWM波形的實現(xiàn)方法

    本文主要研究了STM32H7芯片系列中定時器同步啟動并輸出PWM波形的實現(xiàn)方法。
    的頭像 發(fā)表于 10-24 14:56 ?1718次閱讀
    <b class='flag-5'>STM32</b>H7芯片系列中<b class='flag-5'>定時器</b><b class='flag-5'>同步</b><b class='flag-5'>啟動</b>并輸出PWM波形的實現(xiàn)方法