一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何利用STM32G474芯片的高精度定時(shí)器實(shí)現(xiàn)兩對(duì)互補(bǔ)輸出

單片機(jī) ? 來(lái)源:茶話MC ? 作者:Miler ? 2021-08-23 11:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人利用STM32G474芯片的高精度定時(shí)器實(shí)現(xiàn)兩對(duì)互補(bǔ)輸出,即用到TIMA和TIMB兩個(gè)定時(shí)單元分別輸出兩對(duì)互補(bǔ)信號(hào)。

可是他發(fā)現(xiàn)兩個(gè)定時(shí)器單元輸出的同頻PWM波形存在著明顯的相位差,就像下面的截圖一樣。

0440eed8-02a4-11ec-9bcf-12bb97331649.png

但是他希望二者的輸出完全同步且無(wú)相位差,那有沒(méi)有辦法做到呢?

這是可以的。我們讓HRTIM的定時(shí)單元基于某個(gè)觸發(fā)事件來(lái)同步啟動(dòng)。對(duì)于HRTIM來(lái)說(shuō),可以利用外部觸發(fā)輸入信號(hào)或通用定時(shí)器TIM1的觸發(fā)輸出信號(hào)來(lái)同步HRTIM各定時(shí)單元的啟動(dòng)。這里就如何使用TIM1的觸發(fā)輸出作為HRTIM的同步信號(hào)讓HRTIM的定時(shí)器單元同步啟動(dòng)做下簡(jiǎn)單介紹。

HRTIM的各個(gè)單元間的同步操作是通過(guò)HRTIM里的Master TIMER進(jìn)行管理的,所以要實(shí)現(xiàn)HRTIM各單元間的同步就必須啟用Master TIMER,顯然,除了啟用TIMA/TIMB外,還得使能Master TIMER。

關(guān)于同步配置可以參考下面截圖:

0471b360-02a4-11ec-9bcf-12bb97331649.png

這里對(duì)Master TIMER的配置主要是開(kāi)啟它,讓它能工作,能管理同步事件即可。

經(jīng)過(guò)上面的配置,再對(duì)TIMA/TIMB做“同步事件啟動(dòng)定時(shí)器的配置”后,二者就能做到同步啟動(dòng)了,加上二者配置了相同的PER周期值,這樣就可以輸出如下圖所示的同步同相信號(hào)了。

04c8d3a2-02a4-11ec-9bcf-12bb97331649.png

如果說(shuō)除了TIMA/TIMB的輸出保持同步同相外,還希望中途不時(shí)修改周期及占空比且不破壞同相,那又怎么辦呢? 即如何在輸出頻率和占空比可調(diào)的情況下仍然保持著兩個(gè)定時(shí)器的輸出同步呢?

我們可以開(kāi)啟TIMA或TIMB的更新中斷,在其中任意一個(gè)定時(shí)器的更新中斷服務(wù)程序里同時(shí)修改兩個(gè)定時(shí)器的計(jì)數(shù)周期值和比較值,并開(kāi)啟預(yù)裝功能,讓參數(shù)在下一個(gè)溢出更新事件到來(lái)時(shí)生效,這樣就可以做到既能調(diào)整定時(shí)器的周期值和比較值,又能保證二者的輸出同步。

下面簡(jiǎn)單介紹下實(shí)現(xiàn)過(guò)程。

Master TIMER的配置沒(méi)啥特別的,主要是讓它工作起來(lái),能讓HRTIM的定時(shí)單元的同步起作用。TIMA和TIMB的配置這里基本一樣,二者的配置差別主要體現(xiàn)在比較值不一樣而已。

來(lái)看看TIMA的相關(guān)配置。重點(diǎn)留意下面截圖中下劃線標(biāo)識(shí)的地方。主要配置內(nèi)容包括設(shè)置PER、CMP1的參數(shù),開(kāi)啟同步啟動(dòng)、使能預(yù)裝功能、啟用TIM更新中斷,對(duì)TIMA-TA1/TA2的輸出進(jìn)行配置。

0504d032-02a4-11ec-9bcf-12bb97331649.png

上面是TIMA的基本配置,因?yàn)門(mén)IMB的配置跟TIMA的相比,除了CMP值不同外,其它基本一樣,這里就不重復(fù)貼圖了。

配置完成后,生成HAL類(lèi)初始化代碼。然后添加如下用戶代碼。

HAL_HRTIM_WaveformCountStart_IT(&hhrtim1,HRTIM_TIMERID_TIMER_A);//使能TIMA

HAL_HRTIM_WaveformOutputStart(&hhrtim1 , HRTIM_OUTPUT_TA1);

HAL_HRTIM_WaveformOutputStart(&hhrtim1 , HRTIM_OUTPUT_TA2);

HAL_HRTIM_WaveformCountStart_IT(&hhrtim1, HRTIM_TIMERID_TIMER_B); //使能TIMB

HAL_HRTIM_WaveformOutputStart(&hhrtim1 , HRTIM_OUTPUT_TB1);

HAL_HRTIM_WaveformOutputStart(&hhrtim1 , HRTIM_OUTPUT_TB2);

HAL_TIM_Base_Start(&htim1);//讓TIM1產(chǎn)生同步觸發(fā)信號(hào)

上面的黃色代碼行,基本功能就是開(kāi)啟TIM1,它的TRGO輸出信號(hào)作為HRTIM-TIMA/TIMB的同步啟動(dòng)信號(hào)。如果沒(méi)有這行代碼,此時(shí)的TIMA/TIMB是不會(huì)工作的。

我在TIMA的更新中斷服務(wù)程序里修改TIMA/TIMB的PER/CMP的值,查看輸出結(jié)果。

extern uint16_t Interrupt_Count;

#define HRTIMReg (HRTIM1-》sTimerxRegs)

void HRTIM1_TIMA_IRQHandler(void)

{

/*USER CODE BEGIN HRTIM1_TIMA_IRQn 0 */

/*USER CODE END HRTIM1_TIMA_IRQn 0 */

HAL_HRTIM_IRQHandler(&hhrtim1,HRTIM_TIMERINDEX_TIMER_A);

/*USER CODE BEGIN HRTIM1_TIMA_IRQn 1 */

Interrupt_Count++;

if(Interrupt_Count 《 20000)

{

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].PERxR= 0xa000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].CMP1xR= 0x2000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].PERxR= 0xa000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].CMP1xR= 0x3000;

}

else if(Interrupt_Count 《 40000)

{

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].PERxR= 0x9000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].CMP1xR= 0x4000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].PERxR= 0x9000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].CMP1xR= 0x5000;

}

else

{

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].PERxR= 0x7000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_A].CMP1xR= 0x2000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].PERxR= 0x7000;

HRTIMReg[HRTIM_TIMERINDEX_TIMER_B].CMP1xR= 0x5000;

}

}

經(jīng)過(guò)測(cè)試,即使修改了兩個(gè)定時(shí)器單元的計(jì)時(shí)周期和占空比,二者的同步一直都可以保持得很好。關(guān)于這個(gè)話題就交流到這里,分享以上內(nèi)容供有需要的人士參考,祝君好運(yùn)!

編輯:jq

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

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118794
  • CMP
    CMP
    +關(guān)注

    關(guān)注

    6

    文章

    156

    瀏覽量

    26658
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    18343

原文標(biāo)題:STM32高精度定時(shí)器定時(shí)單元間的同步問(wèn)題

文章出處:【微信號(hào):aidanpianji,微信公眾號(hào):?jiǎn)纹瑱C(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32G474如何實(shí)現(xiàn)Buck變換的COT控制模式?

    我想用STM32G474實(shí)現(xiàn)恒定導(dǎo)通時(shí)間模式控制,如下圖所示,我打算使用片上比較實(shí)現(xiàn)VOUT和Vref的比較功能以開(kāi)通pwm波,但是要如何實(shí)現(xiàn)
    發(fā)表于 07-10 06:35

    有一個(gè)關(guān)于STM32G474雙BANK的測(cè)試問(wèn)題求解答

    工程師朋友,您好有一個(gè)關(guān)于STM32G474 雙BANK的測(cè)試問(wèn)題請(qǐng)教各位:一個(gè)LED 閃爍的測(cè)試程序已經(jīng)在IAR環(huán)境構(gòu)建成功,使用STM32CubeProgrammer 加載到0X800 0000
    發(fā)表于 06-17 07:15

    求助,關(guān)于STM32G474雙BANK的測(cè)試問(wèn)題求解

    工程師朋友,您好有一個(gè)關(guān)于STM32G474 雙BANK的測(cè)試問(wèn)題請(qǐng)教各位:一個(gè)LED 閃爍的測(cè)試程序已經(jīng)在IAR環(huán)境構(gòu)建成功,使用STM32CubeProgrammer 加載到0X800 0000
    發(fā)表于 06-11 07:57

    STM32G474高精度定時(shí)器HRTIM配置死區(qū)互補(bǔ)PWM極端輸出問(wèn)題求解

    下圖是我在stm32cbueMX中的主要配置 按照這個(gè)配置,假如我將主通道TE1的PWM占空比設(shè)置為0%(將比較值1設(shè)置為18000),輔通道TE2的PWM占空比應(yīng)該為100%,但是實(shí)際情況如下
    發(fā)表于 06-09 06:45

    求助,關(guān)于STM32G474高精度定時(shí)器HRTIM配置死區(qū)互補(bǔ)PWM極端輸出問(wèn)題求解

    下圖是我在stm32cbueMX中的主要配置 按照這個(gè)配置,假如我將主通道TE1的PWM占空比設(shè)置為0%(將比較值1設(shè)置為18000),輔通道TE2的PWM占空比應(yīng)該為100%,但是實(shí)際情況如下
    發(fā)表于 05-28 07:32

    MCU定時(shí)器/計(jì)數(shù)

    架構(gòu)與功能特性? 定時(shí)器類(lèi)型與配置? 高級(jí)控制定時(shí)器?:支持互補(bǔ)PWM輸出與剎車(chē)功能,適用于電機(jī)驅(qū)動(dòng)等高精度控制場(chǎng)景。通用
    的頭像 發(fā)表于 04-27 13:54 ?283次閱讀

    求助,關(guān)于STM32G474高精度定時(shí)器HRTIM配置死區(qū)互補(bǔ)PWM極端輸出問(wèn)題求解

    下圖是我在stm32cbueMX中的主要配置 按照這個(gè)配置,假如我將主通道TE1的PWM占空比設(shè)置為0%(將比較值1設(shè)置為18000),輔通道TE2的PWM占空比應(yīng)該為100%,但是實(shí)際情況如下
    發(fā)表于 04-27 07:59

    stm32G474的flash模式如何判定?

    請(qǐng)教各位,使用的芯片stm32g474cbt6,按照手冊(cè)說(shuō)法,single bank是單一flash區(qū)域,最小擦除是4k,dual bank是支持雙flash區(qū)域,一邊操作不影響另外一塊,最小擦除
    發(fā)表于 03-12 08:18

    stm32g474 hrtim中怎么使用dual channel DAC trigger?

    stm32g474 hrtim 中怎么使用 dual channel DAC trigger
    發(fā)表于 03-12 07:33

    stm32g474的開(kāi)發(fā)板很燙的原因?

    stm32g474的開(kāi)發(fā)板很燙
    發(fā)表于 03-10 08:30

    STM32G474利用高精度HRTIM怎么捕獲外部波形計(jì)算波形頻率?

    STM32G474 利用高精度HRTIM怎么捕獲外部波形計(jì)算波形頻率,想用STM32Cube配置工程代碼,網(wǎng)上查了很多資料,沒(méi)有看到這個(gè)用法。希望大神指導(dǎo)一下。
    發(fā)表于 03-10 06:29

    STM32G474的DAC4無(wú)輸出怎么解決?

    STM32G474 的DAC4采用定時(shí)器4觸發(fā)dma,OUT1連接到比較5,測(cè)試下來(lái) DAC4沒(méi)輸出,是配置哪里有問(wèn)題嗎 定時(shí)器4的配置:
    發(fā)表于 03-07 06:06

    如何在MSP430?上實(shí)現(xiàn)內(nèi)置振蕩高精度定時(shí)器

    電子發(fā)燒友網(wǎng)站提供《如何在MSP430?上實(shí)現(xiàn)內(nèi)置振蕩高精度定時(shí)器.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 11:10 ?0次下載
    如何在MSP430?上<b class='flag-5'>實(shí)現(xiàn)</b>內(nèi)置振蕩<b class='flag-5'>器</b>的<b class='flag-5'>高精度</b><b class='flag-5'>定時(shí)器</b>

    stm32g474 qspi不進(jìn)dma中斷是怎么回事?

    stm32g474 qspi 不進(jìn)dma中斷
    發(fā)表于 09-13 07:10

    stm32g474的開(kāi)發(fā)板很燙的原因?

    stm32g474的開(kāi)發(fā)板很燙
    發(fā)表于 07-24 06:59