關(guān)于28335各個(gè)模塊的理解_第1頁
關(guān)于28335各個(gè)模塊的理解_第2頁
關(guān)于28335各個(gè)模塊的理解_第3頁
關(guān)于28335各個(gè)模塊的理解_第4頁
關(guān)于28335各個(gè)模塊的理解_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PWM的使用/ Configure ePWM1  / Setup TBCLK   EPwm1Regs.TBPRD = EPWM_TIMER_TBPRD;           / Set timer period 1500/2 TBCLKs   EPwm1Regs.TBPHS.half.TBPHS = 0x0000;           /

2、 Phase is 0   EPwm1Regs.TBCTR = 0x0000;                 / Clear counter         / Set Compare values   EPwm1Regs.CMPA.half.CMPA = EPWM_CMPAB;    

3、 / Set compare A value/   EPwm1Regs.CMPB = EPWM_CMPAB;               / Set Compare B value      / Setup counter mode   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; / Count up down

4、0;     EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;      / enable phase loading use for sync   EPwm1Regs.TBCTL.bit.PHSDIR=TB_UP;   EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;      EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB

5、_DIV2+TB_DIV4+TB_DIV4;  / TBClock ratio = SYSCLKOUT/(2*HSPCLKDIV*   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;  /   2CLKDIV)   / Setup shadowing   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;/   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

6、60;  EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;  / Load on Zero /  EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;     / Set actions   EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;       / Set PWM1A on event A, up count  

7、; EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;      / Clear PWM1A on event A, down count  / EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR;     /Clear  PWM1B on event A, up count  / EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;      /&

8、#160; Set PWM1B on event A, down count   / Set DeadBand   EPwm1Regs.DBCTL.bit.IN_MODE=DBA_ALL;   EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;   EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;   EPwm1Regs.DBRED=Dbred;      / Dead

9、-band rising edge delay   EPwm1Regs.DBFED=Dbfed;      / Dead-band falling edge delay   / Set Trip Zone   EPwm1Regs.TZSEL.bit.OSHT1=TZ_ENABLE;   EPwm1Regs.TZCTL.bit.TZA=TZ_FORCE_LO;   EPwm1Regs.TZCTL.bit.TZB=TZ_FORCE_LO;&

10、#160;     / Interrupt where we will change the Compare Values   EPwm1Regs.ETSEL.bit.SOCBSEL= ET_CTR_ZERO;/ Select start ADC (EPWMxSOCB) on Zero event   EPwm1Regs.ETSEL.bit.SOCBEN= Enable;           / Enable

11、0;    EPwm1Regs.ETPS.bit.SOCBPRD=ET_1ST;主要注意的就是EPWM的死區(qū)子模塊。由比較器產(chǎn)生A,B個(gè)比較信號(hào)進(jìn)入動(dòng)作限定子模塊,并且出來EPWMxA(1)與EPWMxB(1)兩路信號(hào),然后進(jìn)入死區(qū)模塊。對(duì)于死區(qū)模塊是雙輸入雙輸出的,輸入為EPWMxA(1)與EPWMxB(1),輸出為EPWMxA(2)與EPWMxB(2),其中(2)的信號(hào)可以由(1)的其中一個(gè)或者兩個(gè)共同產(chǎn)生。對(duì)于我的使用時(shí)為了產(chǎn)生SVPWM去控制IPM,因此需要互補(bǔ)信號(hào),只要用EPWMxA(1)去產(chǎn)生EPWMxA(2)與EPWMxB(2)。一個(gè)ePWM mod

12、ule包括Time-base (TB) module,Counter-compare (CC) module,Action-qualifier (AQ) module,Dead-band (DB) module,PWM-chopper (PC) module,Event-trigger (ET) module,Trip-zone (TZ) module等七個(gè)模塊。正常的發(fā)出PWM波要配置TB、CC、AQ、DB、ET等五個(gè)模塊。Time-base (TB) module為定時(shí)器模塊,有TBCTL(控制寄存器)配置定時(shí)器的時(shí)鐘、計(jì)數(shù)模式、同步模式TBSTS(狀態(tài)寄存器)TBPHSHR(高速PWM用

13、)TBPHS(相位寄存器)計(jì)數(shù)器的起始計(jì)數(shù)位置,例如寄存器為0x0100則計(jì)數(shù)器從0x0100開始計(jì)數(shù)TBCTR(計(jì)數(shù)器)TBPRD(周期寄存器)設(shè)置計(jì)數(shù)器的計(jì)數(shù)周期。只有TBPRD(周期寄存器)有影子寄存器。本程序的設(shè)置為count-up-and-down mode計(jì)數(shù)模式,相位為零,ePWM2 、ePWM3、 ePWM4、 ePWM5、 ePWM6通過ePWM1的計(jì)數(shù)器到零時(shí)進(jìn)行同步,計(jì)數(shù)周期為0.5ms。Counter-compare (CC) module為比較器模塊有CMPCTL (比較控制寄存器)設(shè)置CMPA、CMPB的重載模式CM

14、PAHR(高速PWM用),CMPA(比較值寄存器A)設(shè)置EPWMxA的比較值,有影子寄存器。CMPB(比較值寄存器B)設(shè)置EPWMxB的比較值,有影子寄存器。本程序只應(yīng)用了CMPA,設(shè)置計(jì)數(shù)器到零時(shí)重載CMPA。Action-qualifier (AQ) module比較方式預(yù)設(shè)模塊AQCTLA (輸出A比較方式控制寄存器)設(shè)置EPWMA的比較方式有CBD、CBU、CAD、CAU、PRD、ZRO,無影子寄存器,立即裝載AQCTLB (輸出B比較方式控制寄存器)設(shè)置EPWMB的比較方式有CBD、CBU、CAD、CAU、PRD、ZRO,無影子寄存器,立即裝載AQSFRC

15、0;(軟件強(qiáng)制控制寄存器)設(shè)置AQCSFRC重載方式(RLDCSF),通過(OTSFB、ACTSFB)設(shè)置EPWMB、(OTSFA、ACTSFA)設(shè)置EPWMA啟動(dòng)一次強(qiáng)制置位無效、置零、置高、反向,當(dāng)OTSFB、OTSFA被寫1時(shí),動(dòng)作一次,寫0無效,無影子寄存器AQCSFRC (軟件連續(xù)強(qiáng)制控制寄存器)可以強(qiáng)制EPWMA、EPWMB的輸出為low或high或AQCSFRC不起作用,有影子寄存器,當(dāng)寄存期被加載后的第二個(gè)時(shí)鐘開始作用,如TBCLK=0時(shí)加載,TBCLK=1時(shí)開始起作用說明:CBD為TBCTR(計(jì)數(shù)器)與CMPB在down計(jì)數(shù)時(shí)相等使輸出為low或high或反向或不動(dòng)

16、作CBU為TBCTR(計(jì)數(shù)器)與CMPB在up計(jì)數(shù)時(shí)相等使輸出為low或high或反向或不動(dòng)作CAD為TBCTR(計(jì)數(shù)器)與CMPA在down計(jì)數(shù)時(shí)相等使輸出為low或high或反向或不動(dòng)作CAU為TBCTR(計(jì)數(shù)器)與CMPA在up計(jì)數(shù)時(shí)相等使輸出為low或high或反向或不動(dòng)作PRD為TBCTR(計(jì)數(shù)器)與TBPRD(周期寄存器)相等時(shí)使輸出為low或high或反向或不動(dòng)作ZRO為TBCTR(計(jì)數(shù)器)計(jì)到零時(shí)使輸出為low或high或反向或不動(dòng)作注意:以上均是相等時(shí)起作用,其它時(shí)間不管,只有AQCSFRC(軟件連續(xù)強(qiáng)制控制寄存器)持續(xù)起作用如同時(shí)出現(xiàn)比較則優(yōu)先級(jí)如圖例:CMPA=100,C

17、MPB=100,up計(jì)數(shù),EPWMA初始為低,CAU設(shè)置高,CBU設(shè)置低,當(dāng)TBCTR計(jì)到100時(shí),CAU、CBU同時(shí)作用,根據(jù)優(yōu)先級(jí),EPWMA輸出低。當(dāng)CMPA=100,CMPB=110,其它不變,當(dāng)TBCTR計(jì)到100時(shí),EPWMA輸出高,計(jì)到110時(shí)EPWMA輸出低。本程序只應(yīng)用了EPWMA輸出通過Dead-band (DB) module產(chǎn)生互補(bǔ)的PWM波形。Action-qualifier (AQ) module比較方式預(yù)設(shè)模塊配置如下:AQCTLA (輸出A比較方式控制寄存器)的CAU置高,CAD置低,其它無效。在初始化中配置。AQCSFRC (軟件連續(xù)強(qiáng)制控

18、制寄存器)通過AQSFRC(軟件強(qiáng)制控制寄存器)的RLDCSF配置為TBCTR(計(jì)數(shù)器)計(jì)到零時(shí)裝載,根據(jù)需要每次中斷配置CSFA置高、置低或軟件連續(xù)強(qiáng)制無效。其優(yōu)先級(jí)最高,強(qiáng)制時(shí)CAU置高,CAD置低不起作用,無效時(shí)CAU置高,CAD置低起作用。AQSFRC(軟件強(qiáng)制控制寄存器)的ACTSFA配置為置低,當(dāng)本周期軟件連續(xù)強(qiáng)制無效時(shí),向OTSFA寫1,保證有效高周期的起始是低狀態(tài),防止上一周期結(jié)束時(shí)為高。Dead-band (DB) module死區(qū)模塊DBCTL(死區(qū)控制寄存器)設(shè)置S5,S4,S3,S2,S1,S0開關(guān)選擇的DBRED(死區(qū)上升沿延時(shí))上升沿延時(shí)時(shí)間DBFED(死區(qū)下降沿延

19、時(shí))下降沿延時(shí)時(shí)間本程序的設(shè)置為S5=0,S4=0,S3=1,S2=0,S1=1,S0=1;延時(shí)時(shí)間為5us。EPWMxA= EPWMxA in,EPWMxB為EPWMxA in的反向。Event-trigger (ET) module中斷事件模塊ETSEL(中斷選擇寄存器)使能及事件源選擇(SOCA觸發(fā)ADC轉(zhuǎn)換,SOCB觸發(fā)ADC轉(zhuǎn)換,中斷)ETPS(中斷預(yù)設(shè)寄存器)xxxCNT記錄時(shí)間發(fā)生次數(shù),當(dāng)與xxxPRD相等時(shí),發(fā)出中斷信號(hào),xxxCNT停止計(jì)數(shù),當(dāng)標(biāo)志為清除時(shí)xxxCNT置零重新計(jì)數(shù)ETFLG(中斷標(biāo)志寄存器)狀態(tài)標(biāo)志位,中斷時(shí)為1ETCLR(中斷標(biāo)志清除寄存器)寫1清除相應(yīng)標(biāo)志

20、位ETFRC(強(qiáng)制中斷寄存器)寫1強(qiáng)制相應(yīng)中斷發(fā)生本程序選擇SOCA觸發(fā)ADC轉(zhuǎn)換,TBCTR=0位中斷事件源,xxxPRD為1。TMS320F28335定時(shí)器配置簡介寫在最前,不喜請(qǐng)略過。本博文的主要內(nèi)容已在QQ空間、人人網(wǎng)、網(wǎng)易博客、百度空間等平臺(tái)發(fā)表過,作者為Mr_D_prince(斌斌-龍臻),也就是本人,前兩者均為我在非技術(shù)論壇的昵稱。在技術(shù)論壇我更喜歡newofcortexm3這個(gè)昵稱,原因無他,我就是個(gè)技術(shù)新人。之所以文章類型為什么是整理,是因?yàn)椴┪牡闹饕獌?nèi)容均來自TI相關(guān)的技術(shù)手冊(cè),我只是做了下解讀或者整理。    TMS320F28335的CPU

21、 Time有三個(gè),分別為Timer0,Timer1,Timer2,其中Timer2是為操作系統(tǒng)DSP/BIOS保留的,當(dāng)未移植操作系統(tǒng)時(shí),可用來做普通的定時(shí)器。這三個(gè)定時(shí)器的中斷信號(hào)分別為TINT0, TINT1, TINT2,分別對(duì)應(yīng)于中斷向量INT1,INT13,INT14。圖1為定時(shí)器的結(jié)構(gòu)框圖,圖中TIMH:TIM為計(jì)數(shù)寄存器,PRDH:PRD為周期寄存器,AH:A的形式表示一個(gè)32位的寄存器,是由兩個(gè)16位的寄存器構(gòu)成,AH是高16位,A是低16位。CPU定時(shí)器的計(jì)數(shù)復(fù)位時(shí),計(jì)數(shù)寄存器TIMH:TIM加載周期寄存器PRDH:PRD的值,經(jīng)歷一個(gè)計(jì)數(shù)器時(shí)鐘時(shí),TIMH:TIM內(nèi)的值就減

22、1,一直減到0,這時(shí)產(chǎn)生定時(shí)器周期中斷事件,并重新裝載PRDH:PRD的值,重新開始計(jì)數(shù)。置于每隔多少時(shí)間,定時(shí)器計(jì)數(shù)器才會(huì)減1由預(yù)定標(biāo)寄存器TPRH:TPR來決定。TPRH和TPR這兩個(gè)寄存器由兩部分組成,高8位為定時(shí)器預(yù)定標(biāo)計(jì)數(shù)器PSC,低8位是定時(shí)器分頻TDDR。也即是說,TPRH是由PSCH和TDDRH構(gòu)成,而TDDR由PSC和TDDR構(gòu)成。且其工作的原理與定時(shí)器計(jì)數(shù)器類似,復(fù)位時(shí),PSCH:PSC加載TDDRH:TDDR的值,然后經(jīng)過一個(gè)CPU時(shí)鐘,PSCH:PSC的值減1,當(dāng)PSCH:PSC的值減到0時(shí),會(huì)再次裝載TDDRH:TDDR的值,并且產(chǎn)生一個(gè)計(jì)數(shù)器時(shí)鐘,TIMH:TIM減

23、1。以上寄存器測值在配置函數(shù)ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)中設(shè)置。形參Freq為定時(shí)頻率,Period為計(jì)時(shí)周期。假若Freq為15,Period為1000000,則時(shí)間t = 15*1000000/150M = 0.1s (系統(tǒng)時(shí)鐘頻率為150M)。不過這個(gè)算式的成立是有條件的,這個(gè)條件就是以下兩條語句:Timer->RegsAddr->TPR.all = 0Timer->RegsAddr->TPRH.all = 0上文曾提及,定時(shí)器的計(jì)數(shù)時(shí)鐘是有預(yù)定標(biāo)寄存器T

24、PRH:TPR決定的。CpuTimerxRegs.TPR.all = 0, CpuTimerxRegs.TPRH.all = 0這兩句話決定了1個(gè)時(shí)鐘源周期為定時(shí)器的時(shí)鐘周期,若CpuTimerxRegs.TPR.all = y,CpuTimerxRegs.TPRH.all = 0,則計(jì)y+1個(gè)時(shí)鐘周期為定時(shí)器的時(shí)鐘周期。X表示0,1,2中的任意值。因此,真正的定時(shí)時(shí)間為:time =TPRH:TPR/SYSCLKOUT*Freq*Peroid。只有當(dāng)TPRH:TPR=0時(shí),time =Freq*Peroid/SYSCLKOUT。另外,在定時(shí)器配置函數(shù)中,Timer->RegsAddr-

25、>TCR.bit.TSS = 1 表示停止定時(shí)器 ;Timer->RegsAddr->TCR.bit.TRB = 1 表示重裝定時(shí)器;Timer->RegsAddr->TCR.bit.FREE = 1 表示定時(shí)器自由運(yùn)行;Timer->RegsAddr->TCR.bit.TIE = 1 表示使能定時(shí)器中斷。如果要利用定時(shí)器產(chǎn)生一定周期的時(shí)間中斷,別忘了在主函數(shù)中設(shè)置響應(yīng)的中斷向量即可。TMS320F28335的GPIO的簡單應(yīng)用GPIO(General-Purpose Input/Output)通用輸入/輸出口,對(duì)大多數(shù)從事電子行業(yè)的人來說并不是什么陌

26、生的東西。但它卻是基礎(chǔ)性的,很多MCU的后續(xù)開發(fā)都得用到GPIO。F28335有88個(gè)IO口,為GPIO0至GPIO87,其中GPIO0至GPIO63可以配置為8個(gè)核心中斷。28335的GPIO口可以分為三組,分別為A口(GPIO0至GPIO31),B口(GPIO32至GPIO63)和C口(GPIO64至GPIO87)。GPIO的寄存器可以分為三種,分別是GPIO控制寄存器,GPIO數(shù)據(jù)寄存器和GPIO中斷與低功耗模式選擇寄存器。每個(gè)通用I/O端口都受多路復(fù)用(MUX),方向(DIR),數(shù)據(jù)(DAT),置位(SET),清楚(CLEAR),以及切換(TOGGLE)寄存器的控制。多路復(fù)用寄存器GP

27、xMUX(x=A,B,C)用來配置引腳的功能,是外設(shè)操作還是I/O操作。復(fù)位時(shí),所有的GPIO引腳都配置成數(shù)字I/O功能。當(dāng)寄存器中某位置1時(shí),相應(yīng)的引腳配置成相應(yīng)的外設(shè)。具體的管腳與外設(shè)功能見技術(shù)手冊(cè)sprufb0dSystem Control and Interrupts的Table 50(GPAMUX1)。方向控制寄存器GPxDIR用來將相應(yīng)的I/O管腳配置成輸出或輸入,復(fù)位時(shí),所有的GPIO引腳配置成輸入,當(dāng)GPxDIR.bi t= 1時(shí),引腳配置成輸出。在采用GPxDIR寄存器位將輸入端口改變成輸出端口之前,引腳的當(dāng)前電平反應(yīng)到GPXDAT寄存器上。在改變輸入成輸出狀態(tài)之前,初始化G

28、PxDAT用寄存器GPxSET、GPxCLEAR、GPxTOGGLE實(shí)現(xiàn)。上拉電阻使能寄存器GPxPUD用來配置是否使能上拉電阻。復(fù)位時(shí),所有的GPIO引腳使能上拉電阻,當(dāng)GPxPUD寄存器的某位置1時(shí),相應(yīng)的引腳的上拉電阻不使能。數(shù)據(jù)寄存器GPxDAT,是一個(gè)讀/寫寄存器,讀入的該寄存器的值反應(yīng)了輸入限制后輸入引腳當(dāng)前的電平,寫寄存器可設(shè)置輸出引腳為相應(yīng)的電平。但在實(shí)驗(yàn)過程中發(fā)現(xiàn),要對(duì)該寄存器的某個(gè)位寫1或置零,必須延遲多個(gè)系統(tǒng)周期才能實(shí)現(xiàn)。鑒于此對(duì)GPIO的某個(gè)具體引腳操作時(shí)不建議使用此寄存器,使用置位寄存器和清楚寄存器要來的高效的多。置位寄存器GPxSET是一個(gè)只寫寄存器,讀為0。如果對(duì)

29、應(yīng)的引腳配置為輸出,則向置位寄存器的該位寫1,將對(duì)應(yīng)引腳的電平拉高,寫0則無效。清除寄存器GPxCLEAR是一個(gè)只寫寄存器,讀為0。如果對(duì)應(yīng)的引腳配置為輸出,則向清除寄存器的該位寫1,將把對(duì)應(yīng)引腳的電平拉低,寫0無效。切換寄存器GPxTOGGLE,是一個(gè)只寫寄存器,讀為0。如果對(duì)應(yīng)的引腳配置為輸出,則向切換寄存器的該位寫1,將把對(duì)應(yīng)引腳拉成反向電平,寫0無效。中斷選擇寄存器GPIOXIMTnSEL的功能是選擇某位I/O引腳來配置中斷。具體的配置見表6。該表配置的是GPIO0至GPIO31,對(duì)應(yīng)的是XINT1和XINT2,具體的中斷配置見寄存器XINT1CR和XINT2CR。低功耗模式喚醒選擇寄

30、存器GPIOLPMSEL針對(duì)的是GPIO0至GPIO31,向寄存器的某位寫1,則相應(yīng)的信號(hào)引腳將喚醒設(shè)備,無論設(shè)備處于HALT或者STANDBY低功耗模式。寫0則無效。下面介紹一個(gè)簡單的例子,點(diǎn)亮LED。電路圖如下圖所示:在圖中,LED所連接的GPIO引腳是GPIO60和GPIO61和GPIO61,當(dāng)GPIO60和GPIO61為低時(shí),D1和D2發(fā)光。程序如下:#define LED1 GpioDataRegs.GPBDAT.bit.GPIO60#define LED2 GpioDataRegs.GPBDAT.bit.GPIO61LED 的初始化程序void configLED(void)EALLOW;GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;EDIS;在主函數(shù)中調(diào)用configLED()函數(shù),再對(duì)LED1和LED2進(jìn)行簡單的賦值即可實(shí)現(xiàn)LED的控制。例如:LED1亮,LED2滅,即LED1=0;LED2=1.TMS320F28335 GPIO引腳的輸入限制用戶可以通過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論