一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲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)不再提示

本來(lái)同步的信號(hào)為何有相差了?

茶話(huà)MCU ? 來(lái)源:茶話(huà)MCU ? 2023-03-08 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人使用STM32H7系列芯片開(kāi)發(fā)產(chǎn)品,其中用到TIM1/TIM8兩個(gè)定時(shí)器做PWM輸出,并且TIM1/TIM8建立起主從關(guān)系同時(shí)啟動(dòng),使用完全相同的時(shí)間參數(shù)和PWM配置,各自輸出3路同頻同相的PWM驅(qū)動(dòng)信號(hào)。不過(guò),在使用過(guò)程中,可能時(shí)不時(shí)地需要暫停兩個(gè)定時(shí)器的輸出,等到適當(dāng)時(shí)機(jī)再啟動(dòng)全部通道PWM輸出??伤l(fā)現(xiàn),2個(gè)定時(shí)器的PWM輸出剛開(kāi)始還同步得好好的,但隨著程序的運(yùn)行,一段時(shí)間后,來(lái)自?xún)蓚€(gè)定時(shí)器的PWM輸出明顯不再同步了,而是出現(xiàn)了相移。

我這里各選TIM1/TIM8的CH1來(lái)做說(shuō)明。比方說(shuō),程序剛開(kāi)始運(yùn)行時(shí),來(lái)自2個(gè)定時(shí)器的2個(gè)通道PWM輸出是完全同步的,如下圖所示:

c67b6b32-bcfb-11ed-bfe3-dac502259ad0.png

LATER……

經(jīng)過(guò)一段時(shí)間后,2個(gè)定時(shí)器的PWM輸出變得有相差了,就像下面的樣子,兩個(gè)定時(shí)器的PWM輸出相差隨著程序的運(yùn)行還在不停變化,輸出不再有同步可言。

c68d8e2a-bcfb-11ed-bfe3-dac502259ad0.png

經(jīng)過(guò)測(cè)試發(fā)現(xiàn),如果沒(méi)有中途時(shí)不時(shí)的通道啟、停動(dòng)作,2個(gè)定時(shí)器的PWM輸出倒是一直同步得很好。也就是說(shuō),中途不時(shí)地對(duì)輸出通道的啟、停導(dǎo)致了PWM輸出的相移。

查看了他的相關(guān)操作代碼,大致是這樣操作的?!鞠旅媸俏覅⒖伎蛻?hù)寫(xiě)法重寫(xiě)的驗(yàn)證代碼。TIM8是MASTER,TIM1是SLAVE。功能簡(jiǎn)單、清晰,就是讓來(lái)自TIM1和TIM8的2個(gè)通道先運(yùn)行一會(huì),然后暫停一會(huì),這樣循環(huán)。下面代碼重點(diǎn)看while(1)循環(huán)體?!?/p>

HAL_TIM_PWM_Start(&htim1,  TIM_CHANNEL_1); //Start PWM of TIM1_CH1
HAL_TIM_PWM_Start(&htim8,  TIM_CHANNEL_1); //Start PWM of TIM8_CH1
。。。。。。
while (1)
  {
   HAL_TIM_PWM_Stop(&htim1,  TIM_CHANNEL_1);//Stop PWM of TIM1_CH1
   HAL_TIM_PWM_Stop(&htim8,  TIM_CHANNEL_1);//Stop PWM of TIM8_CH1


    HAL_Delay(2000);
    
  HAL_TIM_PWM_Start(&htim1,  TIM_CHANNEL_1); //Start PWM of TIM1_CH1
  HAL_TIM_PWM_Start(&htim8,  TIM_CHANNEL_1); //Start PWM of TIM8_CH1


    HAL_Delay(2000);
  }

使用上面測(cè)試代碼運(yùn)行一陣子后,本來(lái)同步得很好的2路PWM波形就漸漸產(chǎn)生相移了。

這里調(diào)用的HAL_TIM_PWM_Stop()函數(shù)來(lái)關(guān)閉指定通道的PWM輸出,是有效的。不過(guò),當(dāng)我們點(diǎn)進(jìn)該函數(shù)里面去閱讀時(shí),該函數(shù)不僅關(guān)閉了相應(yīng)通道的輸出功能,連計(jì)數(shù)器也關(guān)閉了。下面截圖是該函數(shù)的內(nèi)容,其中箭頭所指是關(guān)閉定時(shí)器的計(jì)數(shù)器的代碼。

c6b2dd10-bcfb-11ed-bfe3-dac502259ad0.png

根據(jù)客戶(hù)的需求,每次關(guān)閉通道輸出只是臨時(shí)性的,每次一同把計(jì)數(shù)器也關(guān)斷似乎太過(guò)了,不是很合適的做法,明顯不必要。那么,如果我們把這個(gè)函數(shù)換成只針對(duì)定時(shí)器通道的輸出功能做關(guān)閉、開(kāi)啟的函數(shù)會(huì)怎么樣呢?

在HAL庫(kù)里,有個(gè)函數(shù)就是實(shí)現(xiàn)此功能的:

//關(guān)閉通道輸出功能

TIM_CCxChannelCmd(TIMx, TIM_CHANNEL_1, TIM_CCx_DISABLE);

//啟用通道輸出功能

TIM_CCxChannelCmd(TIMx, TIM_CHANNEL_1, TIM_CCx_ENABLE);

我們把前面的測(cè)試代碼改換成下面的寫(xiě)法再來(lái)驗(yàn)證。

HAL_TIM_PWM_Start(&htim1,  TIM_CHANNEL_1); //Start PWM of TIM1_CH1
HAL_TIM_PWM_Start(&htim8,  TIM_CHANNEL_1); //Start PWM of TIM8_CH1
。。。。。。
while (1)
  {
TIM_CCxChannelCmd(htim1.Instance,TIM_CHANNEL_1,TIM_CCx_DISABLE);//關(guān)閉輸出
TIM_CCxChannelCmd(htim8.Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); //關(guān)閉輸出


    HAL_Delay(2000);
    
TIM_CCxChannelCmd(htim1.Instance,TIM_CHANNEL_1,TIM_CCx_ENABLE);//啟用輸出
TIM_CCxChannelCmd(htim8.Instance,TIM_CHANNEL_1,TIM_CCx_ENABLE);//啟用輸出


    HAL_Delay(2000);
  }

針對(duì)修改過(guò)的測(cè)試代碼進(jìn)行驗(yàn)證,結(jié)果發(fā)現(xiàn)來(lái)自2個(gè)定時(shí)器的PWM輸出同步得很好很穩(wěn)定,不飄不移了。

第2種新寫(xiě)法跟原寫(xiě)法的最大差別就在于-----新寫(xiě)法的代碼里對(duì)通道輸出做啟停操作時(shí)完全不涉及計(jì)數(shù)器的開(kāi)、關(guān), 2個(gè)TIMER的計(jì)數(shù)器自始至終就不曾受到其它干預(yù)而影響正常計(jì)數(shù),一直在持續(xù)地、按部就班地、周期性地計(jì)數(shù),因?yàn)橥耆嗤臅r(shí)間參數(shù),所以2個(gè)計(jì)數(shù)器的計(jì)數(shù)也保持著很好的同步。

現(xiàn)在的問(wèn)題是,為何第一種寫(xiě)法會(huì)讓2個(gè)定時(shí)器的PWM輸出產(chǎn)生相移呢?

原因就出在使用HAL_TIM_PWM_Stop()函數(shù)來(lái)關(guān)閉通道輸出這個(gè)做法上,這里調(diào)用它來(lái)實(shí)現(xiàn)通道的關(guān)閉不合理。前面我們分析了,該函數(shù)不僅關(guān)閉通道輸出,而且還停止了相應(yīng)計(jì)數(shù)器。我們看看其中的兩行關(guān)閉通道PWM輸出的代碼:

c6cc6d16-bcfb-11ed-bfe3-dac502259ad0.png

在程序里面,一前一后,即先停止TIM1的計(jì)數(shù)器,然后才停止TIM8的計(jì)數(shù)器。顯然,因?yàn)檫@個(gè)先后關(guān)系,導(dǎo)致TIM8停止時(shí)總要比TIM1多計(jì)些數(shù)。這里我們簡(jiǎn)單點(diǎn)以便于溝通,假設(shè)TIM8停止計(jì)數(shù)時(shí)比TIM1多計(jì)2個(gè)數(shù)。也就是說(shuō)每次對(duì)2個(gè)通道做關(guān)閉操作時(shí),同時(shí)對(duì)2個(gè)計(jì)數(shù)器也做一次停止操作,每次對(duì)定時(shí)器的停止操作使得TIM8比TIM1多計(jì)2個(gè)數(shù)。隨著這種操作次數(shù)的增加,每次重新啟動(dòng)2個(gè)定時(shí)器時(shí),2個(gè)計(jì)數(shù)器的起點(diǎn)值的差距也在增加【當(dāng)然,這個(gè)差距變化可能會(huì)有周期性】,最終導(dǎo)致2個(gè)定時(shí)器的PWM輸出產(chǎn)生了相移,而且相移還在不斷變化。

關(guān)于頻繁啟停通道導(dǎo)致2個(gè)計(jì)數(shù)器每次停止后再次啟動(dòng)時(shí)的計(jì)數(shù)器起始值的差值總在變化的結(jié)論,我換個(gè)比較通俗形象的類(lèi)比說(shuō)法來(lái)解釋。

假設(shè)有2個(gè)運(yùn)動(dòng)員A和B,下圖中的紅星和綠星分別代表這兩個(gè)運(yùn)動(dòng)員。他倆經(jīng)常一起繞圈跑步訓(xùn)練,跑步速度一樣。我們現(xiàn)在模擬2個(gè)場(chǎng)景。

第一個(gè)場(chǎng)景,就是他倆一起從某點(diǎn)開(kāi)始跑步,要跑就一起跑,要停就一起停。顯然,這樣的話(huà),任何時(shí)候他倆都是在一起,物理上來(lái)看二人相對(duì)靜止。此場(chǎng)景對(duì)應(yīng)下圖中的左邊圓圈情形。

第二個(gè)場(chǎng)景,還是他倆一起繞圈跑步,跑步速度始終一樣,不過(guò)這時(shí)旁邊多了個(gè)教練。當(dāng)他倆從某點(diǎn)開(kāi)始跑起來(lái)后,若要停下歇息需得到教練指令。這個(gè)教練有個(gè)習(xí)慣,每次都是先叫A停下,然后才叫B停下歇息,導(dǎo)致每次2個(gè)人停下歇息時(shí),B總要比A多跑兩步,但二人每次重新起跑時(shí)又是同時(shí)的。就這樣持續(xù),不難想象二人之間的距離總是在變化,再也看不到場(chǎng)景1情形下的相對(duì)靜止了。這兩個(gè)運(yùn)動(dòng)員在跑道上的間距變化就像基于第一種代碼寫(xiě)法下的2個(gè)計(jì)數(shù)器值的差值變動(dòng)。見(jiàn)下圖的右邊圓圈紅星與綠星的間距變化。這里只畫(huà)一圈示意下。

c6e4c8f2-bcfb-11ed-bfe3-dac502259ad0.png

我們知道,這里定時(shí)器的PWM輸出是根據(jù)TIMER比較器的值與計(jì)數(shù)器值的比較結(jié)果而決定其輸出電平。盡管2個(gè)定時(shí)器的基本配置參數(shù)都一樣,但由于頻繁啟停計(jì)數(shù)器,導(dǎo)致每次啟動(dòng)時(shí)計(jì)數(shù)初始值都在變化,進(jìn)而導(dǎo)致PWM波形輸出不再保持同步。

這樣說(shuō)可能有點(diǎn)抽象,我們不妨結(jié)合下面圖形看看會(huì)直觀點(diǎn)。下圖帶箭頭斜線示意計(jì)數(shù)方向、計(jì)數(shù)起點(diǎn)、終點(diǎn)。紅色虛線表示2個(gè)定時(shí)器CH1設(shè)置的CCR值的水平。

基于客戶(hù)原寫(xiě)法代碼,假設(shè)經(jīng)過(guò)多次針對(duì)通道的啟、停操作后的某個(gè)時(shí)刻【Tx】重新啟動(dòng)2個(gè)定時(shí)器及PWM輸出,A,B兩點(diǎn)表示TIM1和TIM8計(jì)數(shù)器在Tx時(shí)刻的起始值,其它配置參數(shù)都一樣。下面是基于應(yīng)用當(dāng)前場(chǎng)景,分別來(lái)自TIM1/TIM8的2路PWM輸出波形示意圖?!具@里假定TIM1和TIM8的使用相同配置,且當(dāng)CCR>CNT時(shí)輸出高,否則輸出低】

c7022622-bcfb-11ed-bfe3-dac502259ad0.png

因2個(gè)定時(shí)器采用完全相同的配置,所以2路PWM波形特征是一樣的。但由于啟動(dòng)時(shí)刻2個(gè)定時(shí)器的計(jì)數(shù)初值不一樣,輸出的波形卻有了相差,如上圖所示。

這里或許有人會(huì)問(wèn),原始寫(xiě)法里調(diào)用HAL_TIM_PWM_Start();是不是也不太合理呢?談不上不合理,但用得不太合適,從功能實(shí)現(xiàn)上看不夠簡(jiǎn)潔、利落。這里TIM1/TIM8基于觸發(fā)啟動(dòng)的主從關(guān)系,作為主定時(shí)器的TIM8的啟動(dòng)放在TIM1的后面就可以了,TIM8啟動(dòng)的同時(shí)啟動(dòng)從TIM1。

結(jié)合這里的應(yīng)用,改過(guò)寫(xiě)的第2種代碼比較清爽簡(jiǎn)潔。那么,順便問(wèn)一句,可否在原寫(xiě)法的代碼基礎(chǔ)上不做大的改寫(xiě),只做局部微調(diào)來(lái)解決問(wèn)題呢?答案是肯定的,我也做過(guò)較長(zhǎng)時(shí)間的驗(yàn)證測(cè)試。有興趣的話(huà)可以自行研究下,其實(shí)前面文字里也隱含了答案。

審核編輯:湯梓紅

聲明:本文內(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)注

    116

    文章

    5499

    瀏覽量

    219289
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2851

    瀏覽量

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

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118813
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70671
  • stm32h7
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    1753

原文標(biāo)題:本來(lái)同步的信號(hào)為何有相差了?

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    DAC3162EVM輸出信號(hào)為何總是正負(fù)信號(hào)

    我購(gòu)買(mǎi)了德州的dac3162和其評(píng)估版,根據(jù)軟件存入的數(shù)據(jù)表都是正的信號(hào),存入一個(gè)階梯波的excel數(shù)據(jù),但最終輸出的波形出來(lái)的卻是正負(fù)電壓的波形,波形正確,但電壓不對(duì),請(qǐng)問(wèn)為何以及如何解決呢?
    發(fā)表于 11-22 06:30

    DDC112的CLK和CONV引腳如果同步效果差,比如相差0.1us,會(huì)影響什么?

    1.芯片的CLK和CONV引腳如果同步效果差,比如相差0.1us,會(huì)影響什么?如果影響,原理是什么? 2.芯片CLK是用來(lái)做什么功能的? 3.芯片可以測(cè)量電流方向從芯片流向帶檢測(cè)設(shè)備的信號(hào)
    發(fā)表于 12-12 06:09

    求教兩正弦信號(hào)同步的問(wèn)題

    各位大神我想請(qǐng)教下兩正弦信號(hào)同步的問(wèn)題,一路信號(hào)為fpga內(nèi)部產(chǎn)生的dds信號(hào),另一路信號(hào)由外部輸入給fpga,已知兩
    發(fā)表于 01-15 17:52

    請(qǐng)問(wèn)如何利用ADF4351實(shí)現(xiàn)多路相干信號(hào)

    `具體要求是這樣的,要利用ADF4351產(chǎn)生多路同頻并具有特定相位差(如相差為0)的信號(hào)。目前我利用同一個(gè)外部時(shí)鐘和STM32f103RCT6控制板實(shí)現(xiàn)4路同頻信號(hào)(我這里是151M
    發(fā)表于 11-18 18:06

    同步信號(hào)為鋸齒波的觸發(fā)電路的優(yōu)點(diǎn)是什么

    】符合下列真值表的是( )門(mén)電路。(D)A、與非B、或非C、或D、非2、【單選題】變壓器油應(yīng)無(wú)氣味,若感覺(jué)有酸味時(shí),說(shuō)明( )。(D)A、油干燥時(shí)過(guò)熱B、油內(nèi)水分含量高C、油內(nèi)產(chǎn)生過(guò)電弧D、油嚴(yán)重老化3、【單選題】下列不屬于同步信號(hào)為鋸齒波的觸發(fā)電路的優(yōu)點(diǎn)是( )。(D
    發(fā)表于 09-10 06:23

    直流聲光控開(kāi)關(guān)電路放大器U1A輸出信號(hào)為何出現(xiàn)失真?

    直流聲光控開(kāi)關(guān)電路放大器U1A輸出信號(hào)為何出現(xiàn)失真?失真對(duì)功能實(shí)現(xiàn)有影響嗎?
    發(fā)表于 04-25 10:33

    M261的比較器為何正負(fù)計(jì)數(shù)數(shù)值相差很多?

    M261的比較器,為何正負(fù)計(jì)數(shù)數(shù)值相差很多?
    發(fā)表于 06-20 06:15

    用AD9680做多通道同步,多次用脈沖信號(hào)同步觸發(fā)后,顯示相差不固定是為什么?

    用AD9680做多通道同步,同源時(shí)鐘,normal模式下,采集正弦波,多次用脈沖信號(hào)同步觸發(fā)后,顯示相差不固定。按照一般理解,射頻前端不變情況下,差值應(yīng)該是不變的。
    發(fā)表于 11-30 07:37

    同步信號(hào)為鋸齒波的觸發(fā)電路

    同步信號(hào)為鋸齒波的觸發(fā)電路 相控電
    發(fā)表于 06-24 23:05 ?1.6w次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>信號(hào)為</b>鋸齒波的觸發(fā)電路

    信號(hào)為能量收集設(shè)計(jì)提供傳感器解決方案

    本文檔內(nèi)容介紹基于信號(hào)為能量收集設(shè)計(jì)提供傳感器解決方案,供網(wǎng)友參考。
    發(fā)表于 09-15 19:19 ?2次下載
    <b class='flag-5'>信號(hào)為</b>能量收集設(shè)計(jì)提供<b class='flag-5'>了</b>傳感器解決方案

    5G信號(hào)為何難以入室

    5G信號(hào)為何難以“登堂入室” ?一家運(yùn)營(yíng)商的相關(guān)工作人員告訴記者,上世紀(jì)80年代的1G頻率為800MHz,如今5G的頻率已經(jīng)可以達(dá)到4900MHz。電磁波頻率越高,波長(zhǎng)越短,衰減也越快,更容易被
    發(fā)表于 09-02 11:48 ?851次閱讀

    同步信號(hào)為什么會(huì)出現(xiàn)相差

    的PWM驅(qū)動(dòng)信號(hào)。不過(guò),在使用過(guò)程中,可能時(shí)不時(shí)地需要暫停兩個(gè)定時(shí)器的輸出,等到適當(dāng)時(shí)機(jī)再啟動(dòng)全部通道PWM輸出??伤l(fā)現(xiàn),2個(gè)定時(shí)器的PWM輸出剛開(kāi)始還同步得好好的,但隨著程序的運(yùn)行,一段時(shí)間后,來(lái)自?xún)蓚€(gè)定時(shí)器的PWM輸出明顯不再同步
    發(fā)表于 03-08 15:24 ?998次閱讀
    <b class='flag-5'>同步</b>的<b class='flag-5'>信號(hào)為</b>什么會(huì)出現(xiàn)<b class='flag-5'>相差</b>

    已經(jīng)電阻,為何還要有電導(dǎo)?

    已經(jīng)電阻,為何還要有電導(dǎo)? 在電學(xué)領(lǐng)域中,電阻和電導(dǎo)是兩個(gè)基本的概念。電阻是電路中表征電阻器等元器件抵抗電流的量,而電導(dǎo)則是電路中表征導(dǎo)電性的量。雖然它們的定義是相反的,但在電路中同時(shí)存在著電阻
    的頭像 發(fā)表于 10-24 10:43 ?2050次閱讀

    高速信號(hào)為啥要走表層?

    高速信號(hào)為啥要走表層?
    的頭像 發(fā)表于 12-05 15:16 ?880次閱讀
    高速<b class='flag-5'>信號(hào)為</b>啥要走表層?

    觸發(fā)電路中同步電壓與同步信號(hào)何區(qū)別

    觸發(fā)電路中同步電壓與同步信號(hào)何區(qū)別? 觸發(fā)電路中同步電壓與同步
    的頭像 發(fā)表于 01-31 10:57 ?1717次閱讀