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

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

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

遠(yuǎn)程修改STM32 TIMER占空比的方案

茶話MCU ? 來源:茶話MCU ? 作者:茶話MCU ? 2022-09-30 09:23 ? 次閱讀

現(xiàn)在有人有這樣一個(gè)需求,他使用STM32F429芯片做開發(fā),其中用到32位的TIM2實(shí)現(xiàn)3路PWM輸出。

另外有上位機(jī)跟STM32的UART接口相連,上位機(jī)可能不定期地需要通過UART接口給STM32發(fā)送新的占空比參數(shù),而且每次都發(fā)送3個(gè)比較輸出通道的參數(shù)【12個(gè)字節(jié)】。

如何快捷地實(shí)現(xiàn)這個(gè)功能呢?要求收到數(shù)據(jù)后盡快修改3個(gè)比較通道的參數(shù)。

e850fd1c-3ffb-11ed-b1c7-dac502259ad0.png

前一篇重點(diǎn)介紹了利用DMAFIFO和UART接收事件觸發(fā)DMA傳輸實(shí)現(xiàn)了3個(gè)CCR寄存器的批量修改。

我們不妨就該話題稍作拓展,不再局限于某個(gè)STM32系列,而是從整個(gè)STM32的資源上考慮當(dāng)前需求。上次提到3種實(shí)現(xiàn)方案,我想借此機(jī)會(huì)再給大家介紹另外一種實(shí)現(xiàn)方案,以拓寬未來解決類似問題的思路。

STM32 家族里有些系列是內(nèi)置DMAMUX模塊的,即DMA路由器,利用DMAMUX可以實(shí)現(xiàn)DMA請(qǐng)求與DMA傳輸通道的靈活配置;可以將一些通常不能直接產(chǎn)生DMA請(qǐng)求的事件通過它后而可以產(chǎn)生DMA請(qǐng)求;或者基于部分DMA完成事件產(chǎn)生新的DMA請(qǐng)求發(fā)起新的傳輸。目前,STM32家族中內(nèi)置DMAMUX模塊的系列有下面這些:

e8be6a0a-3ffb-11ed-b1c7-dac502259ad0.png

那么 我這里就利用DMAMUX的其中一個(gè)特性,即通過它可以讓部分DMA完成事件產(chǎn)生新的DMA請(qǐng)求從而發(fā)起新的DMA傳輸。具體到這里,我們讓UART 的DMA接收完成事件映射到DMAMUX的DMA generator,再申請(qǐng)新的DMA請(qǐng)求,讓DMA將UART 接收到的數(shù)據(jù)從內(nèi)存搬運(yùn)到定時(shí)器的3個(gè)CCR寄存器,形成一個(gè)級(jí)聯(lián)模式。大致流程是:

上位機(jī)數(shù)據(jù) 經(jīng)UARTRX+DMA 接收到內(nèi)存, 然后DMA 接收完成事件 經(jīng)DMAMUX申請(qǐng)的新的DMA請(qǐng)求和 DMA通道,再將內(nèi)存數(shù)據(jù)寫到定時(shí)器的3個(gè)比較寄存器控制占空比。

下面我使用STM32G4系列芯片重點(diǎn)演示下實(shí)現(xiàn)過程,配置是關(guān)鍵。至于原理細(xì)節(jié)還請(qǐng)閱讀相關(guān)手冊(cè)。

我還是用UART1自發(fā)自收來模擬上位機(jī)發(fā)送新的CCR數(shù)據(jù)。

TIM2使用3個(gè)通道做PWM輸出,使用CubeMx工具的參考配置如下:

e8fe104c-3ffb-11ed-b1c7-dac502259ad0.png

我同樣開啟USART1的TX/RX事件的DMA傳輸功能。參考配置如下【注意UART RX DMA的配置與前一篇的差別】:

e9191c3e-3ffb-11ed-b1c7-dac502259ad0.png

e9b1e400-3ffb-11ed-b1c7-dac502259ad0.png

注意上圖中的事件使能及DMA請(qǐng)求配置。接著看看下面關(guān)于DMA generator的相關(guān)配置:

e9e4260e-3ffb-11ed-b1c7-dac502259ad0.png

請(qǐng)關(guān)注上圖中所有配置。其中,DMAMUX生成的DMA請(qǐng)求由DMA2_CH2響應(yīng),工作在Circular模式。

我依然使用32位TxData【3】數(shù)組存放待傳輸?shù)?個(gè)CCR值,用RxData[3]存放接收的數(shù)據(jù)。使用CubeMx配置完成后,添加相關(guān)用戶代碼?!净贖AL庫組織代碼】

ea04b9be-3ffb-11ed-b1c7-dac502259ad0.png

我在UARTDMA接收完成中斷的回調(diào)函數(shù)里對(duì)接收到新數(shù)據(jù)事件做標(biāo)志更新。

ea912034-3ffb-11ed-b1c7-dac502259ad0.png

為了便于演示,我依然在主程序里循環(huán)模擬遠(yuǎn)程命令,動(dòng)態(tài)修改CCR寄存器的值。參考代碼如下截圖:

eab43a92-3ffb-11ed-b1c7-dac502259ad0.png

稍作調(diào)試我們就可以查看輸出結(jié)果【借助斷點(diǎn)實(shí)時(shí)查看內(nèi)存和寄存器的數(shù)據(jù)】:

eb8415aa-3ffb-11ed-b1c7-dac502259ad0.png

ebb9100c-3ffb-11ed-b1c7-dac502259ad0.png

從上面貼圖不難看出,從UART的發(fā)送數(shù)據(jù)、接收到的內(nèi)存數(shù)據(jù)、寄存器的數(shù)據(jù)都在保持同步更新。

在上面演示過程中,我是將DMAMUX生成的新DMA請(qǐng)求申請(qǐng)的 DMA通道配置為Circular模式來著手測(cè)試的,如果配置為Normal模式也應(yīng)該是可以的,只是需將Generator生成的新的DMA配置以及用戶代碼稍微做些調(diào)整,有興趣的話可以自行測(cè)試驗(yàn)證。

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

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352482
  • 占空比
    +關(guān)注

    關(guān)注

    0

    文章

    97

    瀏覽量

    28976
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1199

    瀏覽量

    100829

原文標(biāo)題:遠(yuǎn)程修改STM32 TIMER占空比的方案續(xù)1

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32 TIMER+DMA輸出PWM異常案例的問題解析

    有人使用STM32U575的TIMER加上DMA做PWM輸出。具體就是利用某TIMER的一個(gè)通道的比較事件觸發(fā)DMA,通過DMA修改CCR值來實(shí)現(xiàn)指定
    的頭像 發(fā)表于 09-28 09:04 ?6973次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>TIMER</b>+DMA輸出PWM異常案例的問題解析

    利用TIMER測(cè)量信號(hào)周期及占空比的精度

    有人使用STM32G4系列的通用型TIMER基于捕獲功能對(duì)外來信號(hào)進(jìn)行周期及占空比的測(cè)量。他用TIM3產(chǎn)生頻率、占空比可調(diào)的PWM輸出做為被測(cè)信號(hào)。TIM4用來進(jìn)行頻率測(cè)量,工作在復(fù)位
    的頭像 發(fā)表于 02-25 10:11 ?860次閱讀
    利用<b class='flag-5'>TIMER</b>測(cè)量信號(hào)周期及<b class='flag-5'>占空比</b>的精度

    STM32F103 timer8配置PWM輸出中間出現(xiàn)無法輸出PWM現(xiàn)象

    我使用STM32F103中的timer8作為PWM的定時(shí)器,來驅(qū)動(dòng)電機(jī)的控制橋,發(fā)現(xiàn)有的時(shí)候修改占空比后,配置的IO口無法輸出PWM波形,并且使用keil調(diào)試是程序上面沒有問題。同時(shí)我
    發(fā)表于 05-03 16:15

    教你一手 基于STM32Cube庫的Timer捕獲應(yīng)用

    STMCU官網(wǎng)更新了一則實(shí)戰(zhàn)經(jīng)驗(yàn)文件,重點(diǎn)介紹利用STM32CubeMx初始化配置工具和STM32Cube庫如何通過TIMER的捕獲功能完成對(duì)頻率、占空比的測(cè)試,同時(shí)我們對(duì)如何解決實(shí)
    發(fā)表于 06-25 15:05

    CC2530 Timer3 P1_3做為PWM輸出,可以修改輸出頻率,無法修改占空比,請(qǐng)問怎么辦?

    CC2530 Timer3 P1_3做為PWM輸出,可以修改輸出頻率,無法修改占空比?
    發(fā)表于 08-13 08:26

    請(qǐng)問STM32輸出比較模式如何同時(shí)修改占空比和相位?

    STM32輸出比較模式如何同時(shí)修改占空比和相位?
    發(fā)表于 10-15 11:29

    STM32F411REF產(chǎn)生不同占空比的PWM方波信號(hào)

    STM32F411REF產(chǎn)生不同占空比的PWM方波信號(hào)
    發(fā)表于 07-24 14:06 ?25次下載

    stm32捕獲占空比_基于STM32超聲波避障小車

    stm32捕獲占空比_基于STM32超聲波避障小車
    發(fā)表于 11-22 19:21 ?46次下載
    <b class='flag-5'>stm32</b>捕獲<b class='flag-5'>占空比</b>_基于<b class='flag-5'>STM32</b>超聲波避障小車

    stm32捕獲占空比_基于STM32超聲波避障小車

    stm32捕獲占空比_基于STM32超聲波避障小車
    發(fā)表于 11-23 16:21 ?56次下載
    <b class='flag-5'>stm32</b>捕獲<b class='flag-5'>占空比</b>_基于<b class='flag-5'>STM32</b>超聲波避障小車

    STM32產(chǎn)生固定頻率和占空比可變的PWM

    STM32產(chǎn)生PWM在筆者的上一個(gè)博客《STM32F103C8T6編寫簡單的程序并燒錄到板卡上》中,簡單介紹了如何產(chǎn)生一個(gè)PWM波,但讀者可能對(duì)設(shè)置PWM過程中修改的參數(shù)不是很理解。本篇博客將重點(diǎn)
    發(fā)表于 12-01 13:36 ?72次下載
    <b class='flag-5'>STM32</b>產(chǎn)生固定頻率和<b class='flag-5'>占空比</b>可變的PWM

    stm32捕獲占空比_【話說定時(shí)器系列】之七:STM32定時(shí)器比較輸出話題

    STM32定時(shí)器是 ST MCU 內(nèi)部最基礎(chǔ)且常用的外設(shè),實(shí)際應(yīng)用尤為普遍。去年,電堂推出了《STM32 TIMER基礎(chǔ)及常規(guī)應(yīng)用介紹》,為大家梳理了 STM32
    發(fā)表于 12-27 19:03 ?8次下載
    <b class='flag-5'>stm32</b>捕獲<b class='flag-5'>占空比</b>_【話說定時(shí)器系列】之七:<b class='flag-5'>STM32</b>定時(shí)器比較輸出話題

    通過STM32 UART及DMA修改TIMER占空比示例

    新的占空比參數(shù),而且每次都發(fā)送3個(gè)輸出通道的比較參數(shù)。如何快捷地實(shí)現(xiàn)這個(gè)功能呢?要求收到數(shù)據(jù)后盡快修改3個(gè)比較通道的參數(shù)。
    的頭像 發(fā)表于 11-12 15:33 ?2127次閱讀

    如何遠(yuǎn)程調(diào)試修改PLC

    PLC在現(xiàn)場(chǎng),客戶拉一條能通網(wǎng)的網(wǎng)線,遠(yuǎn)程就可以調(diào)試修改PLC。
    的頭像 發(fā)表于 07-05 10:12 ?2930次閱讀
    如何<b class='flag-5'>遠(yuǎn)程</b>調(diào)試<b class='flag-5'>修改</b>PLC

    STM32L4定時(shí)器(TIMER)介紹

    電子發(fā)燒友網(wǎng)站提供《STM32L4定時(shí)器(TIMER)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 14:24 ?0次下載
    <b class='flag-5'>STM32</b>L4定時(shí)器(<b class='flag-5'>TIMER</b>)介紹

    STM32G4 Advanced Timer Break功能詳解

    電子發(fā)燒友網(wǎng)站提供《STM32G4 Advanced Timer Break功能詳解.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 15:09 ?1次下載
    <b class='flag-5'>STM32</b>G4 Advanced <b class='flag-5'>Timer</b> Break功能詳解