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

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

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

一個(gè)定時(shí)器輸出4路不同頻率波形的應(yīng)用示例

冬至子 ? 來(lái)源:茶話MCU ? 作者:MilerShao ? 2023-07-06 15:57 ? 次閱讀

一般來(lái)講,一個(gè)STM32定時(shí)器輸出基于同一頻率的各路信號(hào)比較方便。但經(jīng)常也會(huì)有人問(wèn)使用STM32一個(gè)定時(shí)器是否可以實(shí)現(xiàn)多路不同頻率的輸出。從實(shí)現(xiàn)這個(gè)功能角度來(lái)講,答案是肯定的,并可以滿足相應(yīng)的應(yīng)用需求。

這里利用STM32G4的Nucleo開(kāi)發(fā)板進(jìn)行一個(gè)簡(jiǎn)單的實(shí)現(xiàn)示例,順便交流和分享些思路,以拓寬STM32定時(shí)器的應(yīng)用場(chǎng)景。示例中使用STM32定時(shí)器輸出模式中的比較切換模式,即Toggle模式,結(jié)合定時(shí)器的比較事件及DMA傳輸來(lái)完成。

我使用STM32G431RB片內(nèi)TIM1,通過(guò)它實(shí)現(xiàn)4路不同頻率的PWM輸出,分別是20KHz,50KHz,70KHz,80KHz,讓TIM1運(yùn)行在10Khz的循環(huán)計(jì)數(shù)狀態(tài)。TIMER的計(jì)數(shù)時(shí)鐘源為170Mhz,沒(méi)有對(duì)時(shí)鐘進(jìn)行分頻。

基于上述條件,TIM1的10KHz更新頻率所對(duì)應(yīng)的計(jì)數(shù)脈沖個(gè)數(shù)則為17000,那么,20KHz、50KHz、70KHz、80KHz所對(duì)應(yīng)的計(jì)數(shù)脈沖個(gè)數(shù)分別是8500、3400、2428、2125,分別對(duì)應(yīng)著TIM1四個(gè)通道CH1/CH2/CH3/CH4的PWM輸出?!究蓞⒖枷旅姹砀瘛?/p>

圖片

現(xiàn)在開(kāi)始使用STM32CubeMx進(jìn)行初始化配置。TIM1的時(shí)基配置如下:

圖片

將TIM1的CH1/CH2/CH3/CH4的比較輸出模式配置為匹配切換模式。這里關(guān)閉了CCR寄存器的預(yù)裝功能。

圖片

上圖中綠色圓圈里的用于比較的初始數(shù)據(jù),依據(jù)不同通道的占空比來(lái)擬定,不是很重要,只會(huì)影響到第一個(gè)脈沖的占空比。當(dāng)然,也不能亂寫(xiě)。【為什么呢,請(qǐng)自行思考下】

再來(lái)看看有關(guān)DMA的配置,4個(gè)通道都開(kāi)啟了基于比較事件的DMA觸發(fā)請(qǐng)求,并使用循環(huán)傳輸模式。

圖片

基于CubeMx配置完成后,生成初始化工程代碼。

下面進(jìn)行用戶代碼的添加和整理。假設(shè)四個(gè)通道輸出的占空比分別為70%,70%,40%,40%。為了實(shí)現(xiàn)4路不同輸出頻率及占空比的波形,需擬定一些用于比較切換的數(shù)據(jù),借助各個(gè)通道的比較事件觸發(fā)DMA,讓DMA適時(shí)修改相應(yīng)通道的比較寄存器的值,即修改CCRx的值?!具@個(gè)地方的實(shí)現(xiàn)原理很難一兩句完全寫(xiě)清楚,有興趣的請(qǐng)先了解STM32定時(shí)器的比較切換模式,再結(jié)合DMA傳輸琢磨琢磨。下面表格是實(shí)現(xiàn)上面輸出需要用到的一些數(shù)據(jù)?!?/p>

圖片

結(jié)合上述表格的數(shù)據(jù),定義一些宏參數(shù)和內(nèi)存數(shù)組。內(nèi)存數(shù)組用來(lái)存放各個(gè)通道不同時(shí)刻的比較值?!颈鞠敕旁创a文本上來(lái)的,因?yàn)榭赡苡腥诵枰?yàn)證測(cè)試。但這里實(shí)在不好排版,只能貼圖了。抱歉!】

圖片

圖片

圖片

圖片

圖片

上面的四個(gè)數(shù)組分別對(duì)應(yīng)四個(gè)通道做比較切換輸出時(shí)需用到的比較值。這些數(shù)據(jù)的擬定需好好琢磨下。我剛開(kāi)始在代碼里都是放的具體數(shù)據(jù),但考慮到不太好理解各個(gè)數(shù)據(jù)的含義。我這里特意將它們改成宏替換,旨在以宏替換的形式順便做個(gè)比較直觀的注釋,希望幫到有需要或感興趣的工程師。

接下來(lái)添加具體的功能實(shí)現(xiàn)代碼。代碼不多,很簡(jiǎn)單,都是基于HAL庫(kù)的??吹胶瘮?shù)名就大致知道什么意思了。下面的代碼就是本示例中用到功能代碼。它們的功能分別是使能相關(guān)定時(shí)器通道的比較輸出事件;開(kāi)啟基于定時(shí)器比較事件的DMA傳輸并完成相關(guān)配置;使能各個(gè)定時(shí)器通道比較事件的DMA請(qǐng)求;使能TIM1的主輸出功能并開(kāi)啟計(jì)數(shù)器的工作。

圖片

編譯調(diào)試整理后,運(yùn)行程序查看結(jié)果.

圖片

從上面示波器測(cè)得結(jié)果來(lái)看,輸出波形滿足前面提到的設(shè)計(jì)要求。頻率、占空比跟我們?cè)O(shè)計(jì)要求的一致。【注:手機(jī)模式下可點(diǎn)擊圖片放大查看】

在上面代碼的基礎(chǔ)上,我保持4個(gè)通道輸出的脈沖頻率不變,對(duì)各自占空比做下調(diào)整,分別調(diào)整為30%,30%,60%,60%【在上面代碼里只需調(diào)整那幾個(gè)Dutyn值】,顯然也能很好地實(shí)現(xiàn)各自的輸出。波形圖如下:

圖片

在上面示例中,我將TIM1的10Khz更新頻率做為配置CH1~CH4四個(gè)通道輸出的一個(gè)參考或基準(zhǔn)。既然一個(gè)定時(shí)器可以實(shí)現(xiàn)4路不同頻率,那么多個(gè)定時(shí)器實(shí)現(xiàn)更多不同頻率的PWM輸出也就不難了。

關(guān)于使用1個(gè)定時(shí)器實(shí)現(xiàn)多路不同頻率輸出的示例就介紹到這里。本質(zhì)上它是基于定時(shí)器比較輸出功能的比較切換模式與DMA的靈活運(yùn)用,拋磚引玉似地給大家提供些方法或思路。當(dāng)我們將STM32各種定時(shí)器事件、定時(shí)器比較輸出切換模式以及DMA傳輸靈活而巧妙加以運(yùn)用時(shí),往往可以實(shí)現(xiàn)很多客制化的東西。

聲明:本文內(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119816
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3231

    瀏覽量

    114327
  • PWM輸出
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    5113
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    280

    瀏覽量

    14713
  • HAL庫(kù)
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    6144
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何用個(gè)定時(shí)器實(shí)現(xiàn)3時(shí)差和占空比可調(diào)的波形

    有人想實(shí)現(xiàn)下面的PWM輸出波形,三頻率相同,占空比同步可調(diào),且三輸出
    的頭像 發(fā)表于 07-06 15:22 ?1541次閱讀
    如何用<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>定時(shí)器</b>實(shí)現(xiàn)3<b class='flag-5'>路</b>時(shí)差和占空比可調(diào)的<b class='flag-5'>波形</b>

    stm32個(gè)定時(shí)器輸出4pwm

    我用stm32 103fvet6 寫(xiě)了個(gè)程序。用定時(shí)器3輸出4pwm,分別對(duì)應(yīng)PA6,PA7
    發(fā)表于 05-10 22:53

    stm32定時(shí)器14只能輸出一路pwm波形嗎?

    stm32定時(shí)器14只能輸出一路pwm波形嗎?
    發(fā)表于 03-26 14:11

    如何去實(shí)現(xiàn)定時(shí)器輸出一路PWM波形的設(shè)計(jì)呢

    PWM是什么?如何去實(shí)現(xiàn)定時(shí)器輸出一路PWM波形的設(shè)計(jì)呢?有哪些步驟?
    發(fā)表于 11-15 06:04

    利用定時(shí)器B的比較功能輸出PWM波形

    思路:利用定時(shí)器B的比較功能輸出PWM波形;定時(shí)器B定時(shí)器B的特點(diǎn):1)異步16位
    發(fā)表于 11-29 06:52

    STM32F103是怎樣使用TIM4定時(shí)器輸出PWM的

    STM32F103使用TIM4定時(shí)器輸出PWM通過(guò)定時(shí)器4實(shí)現(xiàn)兩
    發(fā)表于 01-06 07:30

    定時(shí)器介紹

    同時(shí)用兩個(gè)定時(shí)器控制蜂鳴器發(fā)聲, 定時(shí)器0控制頻率定時(shí)器1控制同個(gè)
    發(fā)表于 02-23 15:56 ?20次下載

    關(guān)于定時(shí)器輸出的PWM頻率范圍及占空比精度

    定時(shí)器輸出的PWM頻率范圍及占空比精度
    的頭像 發(fā)表于 03-12 10:37 ?1.3w次閱讀

    STM32單片機(jī)個(gè)定時(shí)器輸出不同頻率PWM波

    (TIMx_CCRx)來(lái)設(shè)置占空比。個(gè)定時(shí)器只有個(gè)自動(dòng)重裝載寄存(TIMx_ARR),但是
    發(fā)表于 11-23 18:21 ?18次下載
    STM32單片機(jī)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>定時(shí)器</b><b class='flag-5'>輸出</b>不同<b class='flag-5'>頻率</b>PWM波

    STM32-通用定時(shí)器-PWM輸出

    1 通用定時(shí)器PWM概述1.1STM32定時(shí)器輸出通道引腳這里以TIM3為例來(lái)講解。STM32的通用定時(shí)器分為T(mén)IM2、TIM3、TIM4、
    發(fā)表于 11-26 15:36 ?23次下載
    STM32-通用<b class='flag-5'>定時(shí)器</b>-PWM<b class='flag-5'>輸出</b>

    STM8學(xué)習(xí)筆記---定時(shí)器輸出7PWM波

    STM8S003F3P6單片機(jī)共有三個(gè)定時(shí)器定時(shí)器1、定時(shí)器2、定時(shí)器4。其中
    發(fā)表于 11-26 16:06 ?9次下載
    STM8學(xué)習(xí)筆記---<b class='flag-5'>定時(shí)器</b><b class='flag-5'>輸出</b>7<b class='flag-5'>路</b>PWM波

    通過(guò)TIM輸出比較做一個(gè)定時(shí)器

    TIM是定時(shí)器模塊的簡(jiǎn)稱。TIM的核心是個(gè)16位的自由定時(shí)器(TCNT)。有8個(gè)完整的16位的捕捉/比較(IC/OC)通道。 模塊運(yùn)行時(shí),
    發(fā)表于 11-26 20:21 ?11次下載
    通過(guò)TIM<b class='flag-5'>輸出</b>比較做<b class='flag-5'>一個(gè)</b><b class='flag-5'>定時(shí)器</b>

    STM32F4定時(shí)器獨(dú)立輸出PWM脈沖

    本文以STM32F405單片機(jī)為例,介紹如何用個(gè)定時(shí)器的四個(gè)通道獨(dú)立地輸出PWM脈沖。主要
    發(fā)表于 11-30 10:06 ?28次下載
    STM32F<b class='flag-5'>4</b>單<b class='flag-5'>定時(shí)器</b>獨(dú)立<b class='flag-5'>輸出</b>四<b class='flag-5'>路</b>PWM脈沖

    如何使用MAXQ微控制上的定時(shí)器B生成PWM波形

    MAXQ微控制有三種類(lèi)型的定時(shí)器定時(shí)器0、定時(shí)器1和定時(shí)器2。定時(shí)器B是
    的頭像 發(fā)表于 02-20 13:44 ?749次閱讀
    如何使用MAXQ微控制<b class='flag-5'>器</b>上的<b class='flag-5'>定時(shí)器</b>B生成PWM<b class='flag-5'>波形</b>

    stm32個(gè)定時(shí)器能同時(shí)控制兩個(gè)燈以不同頻率閃爍嗎?

    STM32的定時(shí)器功能強(qiáng)大,**STM32的定時(shí)器可以同時(shí)控制兩個(gè)燈以不同頻率閃爍** 。
    的頭像 發(fā)表于 12-13 10:43 ?1900次閱讀