国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

這篇具有很好參考價值的文章主要介紹了DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

本人需要使用ePWM來控制一個永磁同步電機(jī)(PMSM), 本文記錄了對于TMS320F28377D ePWM模塊的學(xué)習(xí)筆記。主要內(nèi)容是FOC PMSM控制的ePWM配置,同時包含ADC觸發(fā)源的配置,關(guān)于ADC的學(xué)習(xí)筆記,請參考DSP_TMS320F28377D_ADC學(xué)習(xí)筆記_江湖上都叫我秋博的博客-CSDN博客。

正文

關(guān)于一些PWM的基礎(chǔ)知識,b站up主暗星歸來老師的這個視頻講得非常好。開發(fā)教程篇-第5期-EPWM使用(上)_嗶哩嗶哩_bilibili,為了避免視頻被刪除,我搬運(yùn)復(fù)述一下,好記性不如爛鍵盤。

PWM介紹

那么何謂PWM 呢?

字面意思上就是脈沖寬度調(diào)制,是通過固定開關(guān)周期,調(diào)節(jié)一個周期內(nèi)的高電平時間的寬度然后控制開關(guān)器件的導(dǎo)通時間,進(jìn)而調(diào)整單個周期內(nèi)輸入側(cè)向輸出側(cè)提供能量的時間長度,達(dá)到控制輸出的目的。說人話就是,控制給牛喂草的量。

PWM里面有幾個重要的指標(biāo):

1開通時間 Ton: 每次給牛喂草的時間,單位:S

2 關(guān)斷時間 Toff: 每次停止喂牛的時間,單位:S

3開關(guān)周期Tsw:每隔多長時間喂一次牛,Tsw = Ton + Toff,單位: S

4開關(guān)頻率 Fsw:一秒鐘之內(nèi)喂多少次牛,F(xiàn)sw = 1/Tsw,單位: Hz

以上4點(diǎn)指標(biāo)無論是在模擬 PWM 還是數(shù)字PWM 中都適用,其示意圖如下圖所示。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

而對于數(shù)字PWM,還有點(diǎn)特殊的特性

1 計數(shù)器: 相當(dāng)于模擬領(lǐng)域中的積分器

2 步長: 每多長時間計數(shù)一次。

以上兩點(diǎn)是數(shù)字 PWM 區(qū)別于模擬 PWM 的特點(diǎn),其中尤以“步長”重要,因?yàn)樗鼤可娴轿覀?PWM 的分辨率,通俗來講就是會影響到輸出的精度 (不是全部因素)。

數(shù)字PWM 的計數(shù)器通常有3 種計數(shù)方式:向上、向下及上下計數(shù)。對應(yīng)到模擬領(lǐng)域的波形就是鋸齒波、反鋸齒波及三角波,其對應(yīng)關(guān)系如下圖所示。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

可以看到,在模擬中計數(shù) (嚴(yán)格來說是積分器)都是連續(xù)的,不存在臺階,而數(shù)字中是存在這個步長的。在眾多仿真軟件中,上圖中的三種波形發(fā)生器都是存在的,但在實(shí)際的模擬芯片制造中,一般只會使用第一種方式,即鋸齒波,因?yàn)檫@種波形很容產(chǎn)生:通過一個恒流源對電容充電,在通過一個復(fù)位器對電容進(jìn)行瞬間放電,在電容兩端產(chǎn)生的電壓就是一個鋸齒波。而后面兩種方式在實(shí)現(xiàn)上是比較困難的,筆者沒有做過芯片設(shè)計,不知道這個難易程度以及制造成本,但從市場上大量應(yīng)用的芯片內(nèi)部構(gòu)造基本清一色的都是鋸齒波來看,后面兩種方式應(yīng)該不容易設(shè)計生產(chǎn)或者制造成本很高。

28377D的ePWM介紹,首先我們來看,他們由哪些部分組成。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

ePWM的組成:

1 Time-Base Submodule,時基模塊

2 Counter Compare Submodule,計數(shù)比較模塊

3 Action Qualifier Submodule,動作限定模塊

4 Dead-Band Generator Submodule,死區(qū)生成模塊

5 PWM Chopper Submodule,高頻斬波模塊

6 Trip Zone Submodule,觸發(fā)區(qū)域模塊

7 Event Triger Submodule,事件觸發(fā)模塊

8 Digital Compare Submodule,數(shù)字比較模塊

?

?

TB 時基模塊

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

如圖所示,關(guān)鍵部位已經(jīng)使用紅色字體標(biāo)出,TB 模塊工作的大致流程如

  • 分頻器對 SYSCLK 分頻得到 ePWM TB 時鐘
  • 2計數(shù)器按照所設(shè)置的計數(shù)方式進(jìn)行計數(shù)
  • 計數(shù)器按照設(shè)定的同步方式進(jìn)行同步操作
  • 生成相應(yīng)的同步信號進(jìn)行輸出

其實(shí) TB 模塊也就這么簡單而已,歸根究底它的本質(zhì)就是一個計數(shù)器

Shadow影子寄存器,怎么理解它,不太恰當(dāng)?shù)谋扔鳎汗糯实坶喿x奏折,最底層九品芝麻官的奏折無法直接遞上來給皇帝看的,大部分情況下,都是由丞相審理出來,先過一道手,再交給皇帝。Shadow跟這個有點(diǎn)類似,你不是要給我寫東西嗎?你先把數(shù)據(jù)先放到影子寄存器,到某一個時刻,我再從影子寄存器里面取走,拿到我真的用的地方去。那么好處是什么?在環(huán)路控制的時候,如果說環(huán)路輸出值計算完了以后,要往這個寄存器里面裝載,剛好這個周期,還沒完,如果這時候你讓它立即生效的話,就可能會導(dǎo)致環(huán)路震蕩,你本周期正在執(zhí)行的,應(yīng)該是上周期計算出來的理論值,結(jié)果你把上一個周期計算的理論值打破了。也就是Shadow寄存器的好處是當(dāng)我本周期結(jié)束的時候,才把計算出來的東西放在下個周期來用,這樣來講要穩(wěn)定一些。

對于這個計數(shù)器,我們重點(diǎn)需要設(shè)置的點(diǎn)包括:

  • 1 分頻系數(shù): 關(guān)系到計數(shù)步長,宏觀上影響占空比/周期的最小刻度
  • 2 計數(shù)方式: Up、Down、Up-Down,前面章節(jié)已經(jīng)介紹過;
  • 3 周期值: 直接影響開關(guān)頻率
  • 4 同步輸入:直接影響周期/占空比
  • 5 同步輸出:影響其他 ePWM 模塊
  • 6 周期生效方式:在 PFM 場景下,影響環(huán)路的控制方式,(上面講的影子寄存器相關(guān)

這里需要額外關(guān)注的是246,因?yàn)檫@3 項(xiàng)對能否熟練使用ePWM 控制環(huán)路影響很深遠(yuǎn),我們在后面基于實(shí)物的操作中會再講解,這里讀者只需要有個印象知道它很重要就行。

?

CC 計數(shù)比較模塊

CC,Counter-Compare,:很明顯這里是比較器,用來產(chǎn)生跳邊沿的,脈沖信號

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

?

從圖中可以看到,CC 模塊的主體是 TB 模塊的計數(shù)值 TBCTR,和比較值CMPx,當(dāng)CTR = CMPx時,就會產(chǎn)生一個脈沖,這個脈沖信號會送到 AQ模塊和ET模塊。

用于比較的值CMPx都有一個Shadow,TB 中的PRD寄存器也有一個Shadow, 這個 Shadow 到底是什么的? 有什么作用呢? 簡單來說Shadow 就是一個緩存器將寫入的值先放入到緩存器,然后再適時的加載到比較器中。官方稱呼為影子寄存器,都是一個道理。前面我們也講過了。

那么這里的CC模塊輸出的4個脈沖信號是否就是我們所謂的PWM 波波呢?當(dāng)然不是,這里輸出的脈沖信號,它就僅僅是脈沖信號而已,沒錯就是脈沖。那么PWM 波波到底是在哪里產(chǎn)生的呢?

AQ 動作限定模塊

AQ,Action Qualifier,動作限定,用于產(chǎn)生 PWM 波形的模塊??催@名字取的多么晦澀,如果沒接觸過 C2000 的 ePWM,大概率會以為這個是限幅用的而上面那個 CC 才是產(chǎn)生 PWM的,只能說TI的腦洞跟普通人有點(diǎn)不一樣了。那么 AQ 是如何產(chǎn)生 PWM 的呢? 從下圖 中可以得到答案。

?DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

AQ 模塊依據(jù) TBCLK 作為心跳,依據(jù) CTR=Zero/PRD/CMPA/CMPB 以及CTR dir 5個輸入信號,產(chǎn)生所設(shè)定的波形。例如,TB 模塊設(shè)定計數(shù)方式為 Up-Mode,CC 模塊設(shè)定的 CMPA/CMPB 非0且不等于 PRD,AQ 模塊設(shè)定如下: CTR=0 時ePWMA/B 輸出高;向上計數(shù)過程中,CTR=CMPA時EPWMA 輸出低,CTR=CMPB時 ePWMB 輸出低。則可以得到如下圖 所示的輸出波形。、

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記?

?

還有很多其他設(shè)置方式,這里不進(jìn)行一一舉例,讀者可自行查閱 TI 官方手冊閱讀

AQ 模塊中有兩個比較有意思的寄存器

  1. AQSFRC,Action Qualifier Software Forced Register Control。
  2. AQCSFRC,Action Qualifier Continuous Software Forced Register Control。從英文全稱上也可以猜出來它是干啥的: 強(qiáng)制讓 EPWM 輸出變成某個狀態(tài)只是 AQSFRC 設(shè)置只能單次有效(下個周期繼續(xù)按照PWM的產(chǎn)生邏輯輸出),而 AQCSFRC 則是持續(xù)有效。

在控制具有驅(qū)動芯片的PMSM時,AQCSFRC是有可能被用到的。

DB 死區(qū)模塊

死區(qū)一般在上下管驅(qū)動電路(專業(yè)點(diǎn):半橋拓?fù)洌┲惺褂?,為什么要加死區(qū)? 看下面這個圖

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

由于功率器件并不是理想的器件,狀態(tài)切換的時候?qū)嶋H上是存在斜率的,并非垂直的瞬間切換,所以需要設(shè)計死區(qū),在Q1打開前,需要先把Q2關(guān)斷一段時間,Q2打開前,要把Q1關(guān)斷一段時間,否則就有可能同時導(dǎo)通的。 如果沒有死區(qū),Q1和Q2有可能會被同時導(dǎo)通,最終導(dǎo)致電源接低短路,導(dǎo)致炸雞。 當(dāng)然,有些PMSM配有驅(qū)動芯片,死區(qū)的問題驅(qū)動芯片已經(jīng)考慮在內(nèi)了,這時候不用考慮死區(qū)的問題。 如果你是用DSP接MOS管去控制PMSM,那么就要考慮死區(qū)了。

看下圖,用DB模塊配置一個帶死區(qū)的互補(bǔ)的模型

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記?

PC 高頻斬波模塊

TI官方說這個模塊用在脈沖變壓器的, 對于咱們要用它來控制PMSM來講,這個模塊肯定是用不上的,簡單了解一下就好。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

看下面這個波形圖,這個模塊可以把低頻的PWM波,弄成高頻的。不多講了

?DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

TZ 保護(hù)模塊

TZ,Trip Zone,即觸發(fā)區(qū)域模塊。該模塊一般用于封鎖 PWM 波形保護(hù)電源。這部分的筆記就不贅述了。 當(dāng)我們觸發(fā)了保護(hù)之后,PWM波形就被拉低了??梢猿虺蛳旅孢@個圖

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記?

詳情請去看這個視頻。開發(fā)教程篇-第6講-EPWM使用(中②)_嗶哩嗶哩_bilibili

ET 事件觸發(fā)模塊

事件觸發(fā)模塊,這個模塊,我們在控制PMSM的時候,是可以用到的,重點(diǎn)關(guān)注一下。

何為事件觸發(fā)?即EPWM 在某一時刻發(fā)生了某件事,這件事被 ET 模塊知曉了,然后向外散播一個觸發(fā)信號,告訴其他模塊或 CPU 我這里出事了,你自己看著辦

這里就牽涉到時間、事件,注意這里的時間是相對時間而非絕對時間。

看一下ET 模塊的系統(tǒng)框圖,就能知曉它能夠接收哪種事件、向外散播的又是什么事件。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

需要注意一點(diǎn)的是, 生成事件觸發(fā)信號是可以有個計數(shù)的,比如當(dāng)CTR = CMPA發(fā)生1次時候,我不觸發(fā)事件,我要發(fā)生10次的時候再觸發(fā)事件。這也是可以的。

DC 模塊

DC,Digital Compare,即數(shù)字比較模塊。簡單來說,這就是一個針對各種觸發(fā)信號的一個調(diào)理模塊,調(diào)理成所需要的最終信號 DCAEVT1/2、DCBEVT1/2。那么 DC模塊可以用來調(diào)理哪些輸入信號呢? ?用于擴(kuò)大用于保護(hù)的TZ信號的輸入范圍

?DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

這個有點(diǎn)復(fù)雜,不想記了,感興趣的朋友看開發(fā)教程篇-第6講-EPWM使用(中③)_嗶哩嗶哩_bilibili。?

?

代碼理解

EPWM的相關(guān)代碼可以分為三個部分,一部分是GPIO復(fù)用的配置,一部分是EPWM的控制器寄存器配置,最后一部分就是EPWM的使用。

void epwm_init(void){
    epwm_gpio_init();
    epwm_register_init();
}

void epwm_gpio_init(void){
    InitEPwm1Gpio();
    InitEPwm2Gpio();
    InitEPwm3Gpio();
}

void epwm_register_init(void){

    EPwm1Regs.TBCTL.bit.CTRMODE     = TB_COUNT_UPDOWN;      // Count updown
    EPwm1Regs.TBPRD                 = EPWM1_TIMER_TBPRD;    // Set timer period
    EPwm1Regs.TBCTL.bit.PHSEN       = TB_DISABLE;           // Disable phase loading
    EPwm1Regs.TBPHS.bit.TBPHS       = 0x0000;               // Phase is 0
    EPwm1Regs.TBCTR                 = 0x0000;               // Clear counter
    EPwm1Regs.TBCTL.bit.HSPCLKDIV   = TB_DIV1;              // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV      = TB_DIV1;

    // Setup shadow register load on ZERO
    EPwm1Regs.CMPCTL.bit.SHDWAMODE  = CC_SHADOW;
    // EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE  = CC_CTR_ZERO;
    // EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    // Set Compare values
    EPwm1Regs.CMPA.bit.CMPA         = EPWM1_MIN_CMPA;       // Set compare A value
    // EPwm1Regs.CMPB.bit.CMPB = EPWM1_MIN_CMPB;            // Set Compare B value

    // Set actions
    EPwm1Regs.AQCTLA.bit.CAU        = AQ_SET;               // Set PWM1A on event A, down count
    EPwm1Regs.AQCTLA.bit.CAD        = AQ_CLEAR;             // Clear PWM1A on event A, up count

    // EPwm1Regs.AQCTLB.bit.CBU     = AQ_SET;               // Set PWM1B on Zero
    // EPwm1Regs.AQCTLB.bit.CBD     = AQ_CLEAR;             // Clear PWM1B on event B, up count
    // EPwm1Regs.DBCTL.bit.POLSEL   = 0x02;
    // EPwm1Regs.DBCTL.bit.OUT_MODE = 0x01;

    // Interrupt where we will change the Compare Values
    EPwm1Regs.ETSEL.bit.SOCAEN      = 0x00;                 // 0 Disable 1 Enable
    EPwm1Regs.ETSEL.bit.SOCASEL     = 0x01;                 // Start-of-Conversion(SOC) 選擇什么時候產(chǎn)生SOCA脈沖, 當(dāng)計數(shù)器等于零時產(chǎn)生SOCA事件,以觸發(fā)ADC的SEQ1開始采集電流
    EPwm1Regs.ETPS.bit.SOCAPRD      = 0x02;                 //

… EPwm2、EPwm3的配置類似
}


// EPwm使用就下面這幾行代碼,也就是平時改一下比較器的值   
    EPwm1Regs.CMPA.bit.CMPA    =   (Uint16)(t_cm1*EPWM1_TIMER_TBPRD);
    EPwm2Regs.CMPA.bit.CMPA    =   (Uint16)(t_cm2*EPWM2_TIMER_TBPRD);
    EPwm3Regs.CMPA.bit.CMPA    =   (Uint16)(t_cm3*EPWM3_TIMER_TBPRD);

?

GPIO的配置

首先來看GPIO的配置,EPwm的GPIO復(fù)用配置函數(shù)是官方提供的,所以用的時候直接調(diào)用就行了, 不過需要注意是,EPWM的每組通道支持的IO有兩組,比如EPWM1A/1B支持的IO可以是GPIO0/1,也可以是GPIO145/146。這個根據(jù)硬件實(shí)際的連接來選擇就好了,官方代碼都寫好了,修改只需要修改注釋即可。

void InitEPwm1Gpio(void)
{
    EALLOW;

    //
    // Disable internal pull-up for the selected output pins
    // for reduced power consumption
    // Pull-ups can be enabled or disabled by the user.
    // Comment out other unwanted lines.
    //
    GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;    // Disable pull-up on GPIO0 (EPWM1A)
    GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;    // Disable pull-up on GPIO1 (EPWM1B)
    // GpioCtrlRegs.GPEPUD.bit.GPIO145 = 1;    // Disable pull-up on GPIO145 (EPWM1A)
    // GpioCtrlRegs.GPEPUD.bit.GPIO146 = 1;    // Disable pull-up on GPIO146 (EPWM1B)

    //
    // Configure EPWM-1 pins using GPIO regs
    // This specifies which of the possible GPIO pins will be EPWM1 functional
    // pins.
    // Comment out other unwanted lines.
    //
    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;   // Configure GPIO0 as EPWM1A
    GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;   // Configure GPIO1 as EPWM1B
    // GpioCtrlRegs.GPEMUX2.bit.GPIO145 = 1;   // Configure GPIO145 as EPWM1A
    // GpioCtrlRegs.GPEMUX2.bit.GPIO146 = 1;   // Configure GPIO0146 as EPWM1B

    EDIS;
}

Epwm-TB控制器寄存器的配置

EPwm1Regs.TBCTL.bit.CTRMODE???? = TB_COUNT_UPDOWN;

CTRMODE表示計數(shù)模式,PWM的計數(shù)模式可以配置成三種,PMSMFOC控制,一般使用上下計數(shù)模式。

#define TB_COUNT_UP? ????0x0

#define TB_COUNT_DOWN??? 0x1

#define TB_COUNT_UPDOWN? 0x2

EPwm1Regs.TBPRD???????????????? = EPWM1_TIMER_TBPRD;

TBPRD表示計數(shù)周期,注意,假設(shè)你的計數(shù)周期設(shè)置成100,你的計數(shù)模式是向上/向下模式,那么你Tsw = 100 * ΔT。但如果你的計數(shù)模式是上下計數(shù)模式,那么你的Tsw = 200 * ΔT

計數(shù)器TBCTR會從0開始遞增到100,然后再從100遞減到0。 因此Tsw = 200

EPwm1Regs.TBCTL.bit.PHSEN?????? = TB_DISABLE;

EPwm1Regs.TBPHS.bit.TBPHS?????? = 0x0000;

PHSEN表示相移模塊的使能,TBPHS表示相移多少,這個部分的功能我們沒有用到,因此把它關(guān)閉掉。

EPwm1Regs.TBCTR???????????????? = 0x0000;

TBCTR表示時基模塊TB的計數(shù)值,我們在初始化配置的時候,令其=0。

EPwm1Regs.TBCTL.bit.HSPCLKDIV?? = TB_DIV1;

HSPCLKDIV表示高速EPWM的分頻,其實(shí)我們沒有用的高速EPWM,因此暫時把它1分頻。

EPwm1Regs.TBCTL.bit.CLKDIV????? = TB_DIV1;

CLKDIV表示EPWM時基模塊分頻,為了讓PWM有盡量高的分辨率,時基模塊一般都是1分頻。

Epwm-CMP(CC)控制器寄存器的配置

EPwm1Regs.CMPCTL.bit.SHDWAMODE? = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADAMODE? = CC_CTR_ZERO;

SHDWAMODE 表示CC模塊影子寄存器的模式,前面也提到了,影子寄存器是一種穩(wěn)妥的辦法,因此我們肯定是配置成影子模式(CC_SHADOW),而不是立即生效模式(CC_IMMEDIATE)

LOADAMODE 表示CC模塊比較寄存器的加載模式,即,我在什么時候把影子寄存器里面的比較值加載進(jìn)來使用。我們有4中選擇

#define CC_CTR_ZERO????? 0x0

#define CC_CTR_PRD?????? 0x1

#define CC_CTR_ZERO_PRD? 0x2

#define CC_LD_DISABLE??? 0x3

而,我們選擇了CC_CTR_ZERO,即計數(shù)器(CTR),等于0(ZERO)的時刻。

// EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

// EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

這兩行注釋,解釋一下,由于在PWM作為半橋拓?fù)潆娐返妮斎氩ㄐ螘r,常需要帶死區(qū)且互補(bǔ)的兩個PWM波形,因此一個PWM模塊一般都可以輸出兩個PWM波。 但是呢,我們控制PMSM的硬件電路里面有驅(qū)動芯片,而驅(qū)動芯片已經(jīng)把死區(qū)、互補(bǔ)的相關(guān)工作做了,所以每相我們DSP這邊只需要1個PWM波。 因此在我們的配置中,就不配置EPWM1的B PWM波了。PMSM控制需要三個相的PWM波,我們用的分別是EPWM1A、EPWM2A、EPWM3A。而EPWM1B、EPWM2B、EPWM3B就都不配置了。

EPwm1Regs.CMPA.bit.CMPA???????? = 0;

CMPA表示CC模塊EPwm1APWM波的比較值。 初始化為0,后續(xù)FOC控制主要就是改變這個寄存器的值了,還有另兩相EPwm2Regs.CMPA.bit.CMPAEPwm3Regs.CMPA.bit.CMPA。由于前面的配置,影子寄存器模式會自動運(yùn)行了。

Epwm-AQ控制器寄存器的配置

EPwm1Regs.AQCTLA.bit.CAU??????? = AQ_SET;

EPwm1Regs.AQCTLA.bit.CAD??????? = AQ_CLEAR;

CAU表示AQ模塊,當(dāng)計數(shù)值大于比較值時,PWM的輸出是拉高還是拉低。

CAD表示AQ模塊,當(dāng)計數(shù)值小于比較值時,PWM的輸出是拉高還是拉低。

我們的設(shè)置是當(dāng)計數(shù)值大于比較值時,PWM輸出拉高,反之,則拉低。

Epwm-DB控制器寄存器的配置

// EPwm1Regs.DBCTL.bit.POLSEL?? = 0x02;

// EPwm1Regs.DBCTL.bit.OUT_MODE = 0x01;

上面也提到了,由于死區(qū)的工作在驅(qū)動芯片上做了,所以我們不配置死區(qū)功能。

Epwm-ET控制器寄存器的配置

EPwm1Regs.ETSEL.bit.SOCAEN????? = 0x00;???????????????? // 0 Disable 1 Enable

EPwm1Regs.ETSEL.bit.SOCASEL???? = 0x01;???????????????? // Start-of-ConversionSOC 選擇什么時候產(chǎn)生SOCA脈沖, 當(dāng)計數(shù)器等于零時產(chǎn)生SOCA事件,以觸發(fā)ADCSEQ1開始采集電流

EPwm1Regs.ETPS.bit.SOCAPRD????? = 0x02;???????????????? //

SOCAEN表示EPWM1SOCA事件的使能,這里初始化先Disable,后面所有模塊都初始化完了,再Enable

SOCASEL表示選擇什么時候產(chǎn)生EPWM1SOCA事件,0x01表示當(dāng)時基模塊的計數(shù)值為0的時候產(chǎn)生這個事件。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記

SOCAPRD 表示當(dāng)SOCASEL發(fā)生多少次之后,才產(chǎn)生EPWM1SOCA事件,事件產(chǎn)生周期。0x02,表示時基模塊的計數(shù)值為0第二次發(fā)生的時候才產(chǎn)生一次EPWM1SOCA事件。

DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記?

?

結(jié)束語

關(guān)于EPWM2和EPWM3的配置和EPWM1是類似的,只是ADC觸發(fā)源這塊不需要配置了,終于把這坑填上了,不覺身邊的人都走完了,已經(jīng)下班很久了。

感謝您的閱讀,歡迎留言討論、收藏、點(diǎn)贊、分享。文章來源地址http://www.zghlxwxcb.cn/news/detail-424955.html

到了這里,關(guān)于DSP_TMS320F28377D_ePWM學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [DSP學(xué)習(xí)筆記]基于TMS320F28335的FIR濾波實(shí)現(xiàn)

    [DSP學(xué)習(xí)筆記]基于TMS320F28335的FIR濾波實(shí)現(xiàn)

    首先進(jìn)入TI官網(wǎng),搜索C2000 wave,進(jìn)行下載安裝。 安裝完成后,在2000 wave的安裝目錄下,進(jìn)入以下目錄:C2000Ware_4_02_00_00librariesdspFPUc28 以我本地的安裝目錄為例:E:tic2000C2000Ware_4_02_00_00librariesdspFPUc28 復(fù)制include、source文件夾到新建工程中。再根據(jù)選用的DSP型號對文件夾內(nèi)

    2024年02月10日
    瀏覽(43)
  • DSP TMS320F2803x、TMS320F2806x COMP比較器模塊開發(fā)筆記(代碼基于TMS320F28069 詳解)

    DSP TMS320F2803x、TMS320F2806x COMP比較器模塊開發(fā)筆記(代碼基于TMS320F28069 詳解)

    比較器模塊是一個真正的模擬電壓比較器在VDDA領(lǐng)域。核心模擬電路包括比較器,它的輸入和輸出,以及內(nèi)部的DAC參考。支持的數(shù)字電路包括DAC控制、與其他片上邏輯的接口、輸出確認(rèn)塊和可編程控制信號。 比較器塊可以監(jiān)視兩個外部模擬輸入,或者使用內(nèi)部DAC引用監(jiān)視另一

    2024年02月13日
    瀏覽(28)
  • 【輪式平衡機(jī)器人】——TMS320F28069片內(nèi)外設(shè)之ePWM

    【輪式平衡機(jī)器人】——TMS320F28069片內(nèi)外設(shè)之ePWM

    聲明:本系列博客參考有關(guān)專業(yè)書籍,截圖均為自己實(shí)操,僅供交流學(xué)習(xí)! 脈沖寬度調(diào)制(PWM)是一種對模擬信號進(jìn)行數(shù)字編碼的方法,硬件原理是根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實(shí)現(xiàn) 開關(guān) 穩(wěn)壓電源輸出晶體管 或 晶體管導(dǎo)通時間的 改變。 一個重要

    2024年03月11日
    瀏覽(21)
  • TMS320F28374S之X-BAR

    TMS320F28374S之X-BAR

    X-BAR可翻譯為 交叉開關(guān) 或者 交換總線 ,在DSP中有四種 X-BAR,分別是: Input X-BAR、 Output X-BAR、 CLB X-BAR 和 ePWM X-BAR。Input X-BAR可以將外部信號傳輸?shù)紺PU內(nèi)部,Output X-BAR則可以將內(nèi)部信號傳輸?shù)酵獠縂PIO端口。CLB X-BAR 和ePWM X-BAR將內(nèi)部信號傳輸?shù)紺LB和 ePWM模塊。 Input X-BAR用于將信號從

    2024年02月13日
    瀏覽(24)
  • 11.TMS320C5509V+Win10+CCS8開發(fā)環(huán)境搭建

    11.TMS320C5509V+Win10+CCS8開發(fā)環(huán)境搭建

    眾所周知,相較于TMS320F28335,TMS320C5509V屬于較老的平臺,在新版本的CCS版本上支持一直是一個問題。 最基本的問題便是,無法新建基礎(chǔ)工程。各開發(fā)版廠商提供的例程無法在CCS8上使用,只支持CCS3.3環(huán)境,但是由于目前Win7、Win10等系統(tǒng)均不再支持CCS3.3,所以只能折騰虛擬機(jī)來

    2024年02月07日
    瀏覽(25)
  • 【TES600】基于XC7K325T與TMS320C6678的通用信號處理平臺

    【TES600】基于XC7K325T與TMS320C6678的通用信號處理平臺

    板卡概述 ??????? TES600是一款基于FPGA+DSP協(xié)同處理架構(gòu)的通用高性能實(shí)時信號處理平臺,該平臺采用1片TI的KeyStone系列多核浮點(diǎn)/定點(diǎn)DSP TMS320C6678作為主處理單元,采用1片Xilinx的Kintex-7系列FPGA XC7K325T作為協(xié)處理單元,具有1個FMC子卡接口,具有4路SFP+萬兆光纖接口,具有2路

    2024年02月06日
    瀏覽(32)
  • 基帶信號處理設(shè)計原理圖:2-基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板

    基帶信號處理設(shè)計原理圖:2-基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板

    基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板 ?????????綜合圖像處理硬件平臺包括圖像信號處理板2塊,視頻處理板1塊,主控板1塊,電源板1塊,VPX背板1塊。 一、板卡概述 ?????????圖像信號處理板包括2片TI 多核DSP處理器-TMS320C6678,1片Xilinx FPGA XC7K420T-

    2024年03月15日
    瀏覽(104)
  • 圖像信號處理板設(shè)計原理圖:2-基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板

    圖像信號處理板設(shè)計原理圖:2-基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板

    ?????????綜合圖像處理硬件平臺包括圖像信號處理板2塊,視頻處理板1塊,主控板1塊,電源板1塊,VPX背板1塊。 一、板卡概述 ?????????圖像信號處理板包括2片TI 多核DSP處理器-TMS320C6678,1片Xilinx FPGA XC7K420T-1FFG1156,1片Xilinx FPGA XC3S200AN。實(shí)現(xiàn)四路千兆以太網(wǎng)輸出,兩路

    2024年02月04日
    瀏覽(90)
  • DSP28335學(xué)習(xí)筆記:定時器中斷

    DSP28335學(xué)習(xí)筆記:定時器中斷

    F28335的CPU定時器有3個且均為32位,分別是Timer0、Timer1、Timer2, 其中 Timer2 是為操作系統(tǒng) DSP/BIOS 保留的,當(dāng)未移植操作系統(tǒng)時,可用來做普 通的定時器。這三個定時器的中斷信號分別為 TINT0,TINT1,TINT2,分別對應(yīng)于中斷向量 INT1,INT13,INT14。 一、F28335定時器介紹(CPU定時器)

    2024年04月10日
    瀏覽(24)
  • DSP28335學(xué)習(xí)筆記-產(chǎn)生PWM波 ——從應(yīng)用角度出發(fā)

    DSP28335學(xué)習(xí)筆記-產(chǎn)生PWM波 ——從應(yīng)用角度出發(fā)

    關(guān)于DSP28335的書籍有很多,但都是從乏味的寄存器開始入手。對于新手可能不是很友好,因此關(guān)于DSP的學(xué)習(xí)記錄我打算從應(yīng)用入手去學(xué)習(xí)寄存器的用法和配置。 此次實(shí)驗(yàn)用J4模塊引腳的XPWM1和XPWM2分別產(chǎn)生ePWM1A和ePWM1B,對應(yīng)芯片GPIO0和GPIO1引腳。 黃色線為EPWM1A,紫色線為EPWM1B。

    2024年02月06日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包