




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、TMS320F28335 TechV_28335目錄1 DSP的PWM信號111簡介112端口對應(yīng)關(guān)系213初始化程序注釋22 DSP的CAN通信321CAN2.0B協(xié)議簡述322CAN總線電平423CAN總線上的120歐電阻624DSP的CAN時鐘模塊625郵箱初始化例程注解726消息發(fā)送和接收827CAN的適配器存在的一些問題93 DSP的32位浮點運算測試104 DSP定時器中斷1141 DSP28335的定時器1142定時器分頻1143 計數(shù)器計數(shù)1244定時器時鐘周期125 DSP看門狗復(fù)位1251看門狗時鐘1252看門狗系統(tǒng)控制和狀態(tài)寄存器(SCSR)1353看門狗計數(shù)寄存器(WD
2、CNTR)1354看門狗重啟管理器(WDKEY)1455看門狗控制寄存器(WDCR)146 軟件報錯與處理1561CCS Setup中仿真器的配置1562Connect報錯1145換仿真器解決1763CAN口測試A發(fā)B收,數(shù)據(jù)發(fā)不出去1964編譯Pwm測試文件出錯1965could not open source file "DSP2833x_Device.h207 備注與注意事項228 附錄 C源程序2281PWM初始化及脈沖產(chǎn)生函數(shù)2282郵箱初始化函數(shù)3383浮點運算測試函數(shù)3684定時器中斷初始化函數(shù)3785采用定時器的延時函數(shù)3986看門狗初始化函數(shù)40DSP28335測試
3、總結(jié)1 DSP的PWM信號11簡介DSP28335共12路16位的ePWM,能進行頻率和占空比控制。ePWM的時鐘TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信號頻率由時基周期寄存器TBPDR和時基計數(shù)器的計數(shù)模式?jīng)Q定。初始化程序采用的計數(shù)模式為遞增計數(shù)模式。在遞增計數(shù)模式下,時基計數(shù)器從零開始增加,直到達到周期寄存器值(TBPDR)。然后時基計數(shù)器復(fù)位到零,再次開始增加。PWM信號周期與頻率的計算如下:12端口對應(yīng)關(guān)系通道相應(yīng)PWM的A/B對應(yīng)JP0B端口號1ePWMA92ePWM103ePWMA114ePWM125ePWMA136ePWM147eP
4、WMA158ePWM169ePWMA1710ePWM1811ePWMA1912ePWM20說明:JP0B的端口號按“Z”字形順序數(shù)。13初始化程序注釋void InitPwm1AB(float32 f)Uint16 T= 2343750/f-1.0;/系統(tǒng)時鐘SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在連續(xù)增計數(shù)模式下,f=150000000/(TBPDR+1)EALLOW;/先初始化通用輸入輸出口/GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GP
5、APUD.bit.GPIO1 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; EPwm1Regs.TBPHS.half.TBPHS = 0; / 在相位寄存器中設(shè)置計數(shù)器的起始計數(shù)位置/下面兩條語句組合對PWM的時鐘進行分頻EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; /在周期寄存器中設(shè)置計數(shù)器的計數(shù)周期/TBCTL為定時器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; /設(shè)置計數(shù)模式位為
6、連續(xù)增計數(shù)模式,產(chǎn)生對稱方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; / 將定時器相位使能位關(guān)閉EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;/映射寄存器SHADOW使能并配置映射寄存器為自動讀寫EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; / 定時器時鐘源選擇,一共有四種時鐘源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;/ 設(shè)置EPWM1A比較值寄存器的比較值,即體現(xiàn)EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.C
7、MPCTL.bit.SHDWAMODE = CC_SHADOW;/A模塊比較模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;/B模塊比較模式EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; / A模塊比較使能,通過寫0來清除SHDWAMODE位來使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; / B模塊比較使能,通過寫0來清除SHDWBMODE位來使能load on CTR=Zero/AQCTLA為輸出A比較方式控制寄存器EPwm1
8、Regs.AQCTLA.bit.ZRO = AQ_SET; / TBCTR(計數(shù)器)計到零時使輸出為反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;/TBCTR(計數(shù)器)與CMPA在up計數(shù)時相等使輸出為high,這關(guān)系的輸出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;2 DSP的CAN通信21CAN2.0B協(xié)議簡述TMS320F28335上有2個增強型CAN總線控制器,符合CAN2.0B協(xié)議,其總線波特率可達到1Mbps。符合CAN2.0B協(xié)議的數(shù)據(jù)
9、幀為擴展數(shù)據(jù)幀,即采用29位標識符。數(shù)據(jù)幀的數(shù)據(jù)域最多可含8個字節(jié),則DSP28335的數(shù)據(jù)幀位數(shù)為64128位。CAN協(xié)議規(guī)定采用幀的形式進行通信,有4種不同類型的幀: 數(shù)據(jù)幀:攜帶數(shù)據(jù)從一個發(fā)送節(jié)點到一個接收節(jié)點; 遠程幀:它被一個節(jié)點發(fā)送出去用以請求發(fā)送具有相同標識符的數(shù)據(jù)幀,通過發(fā)送遠程幀,一個節(jié)點需要的數(shù)據(jù)可以通過請求另一個節(jié)點發(fā)送相應(yīng)的數(shù)據(jù)幀來獲得,數(shù)據(jù)幀和相應(yīng)的遠程幀使用相同標識符; 錯誤幀:在總線錯誤檢測時由任意節(jié)點發(fā)送的幀; 超載幀:在前后兩個數(shù)據(jù)幀或遠程幀之間提供一個額外的延遲。通信報文的優(yōu)先級由標識符決定,標識符數(shù)值越小,優(yōu)先級越高。最高優(yōu)先級的報文在總線仲裁的過程中獲得
10、總線的訪問權(quán),低優(yōu)先級報文在下一個總線空閑自動重發(fā)。CAN2.0B協(xié)議的數(shù)據(jù)幀格式如下圖所示:對于CAN2.0B協(xié)議的消息,其標識符擴展位IDE(MSGID31)必須置1,由此可知給DSP的郵箱初始化標識符ID時,其16進制賦值的最高位至少應(yīng)當為8.在不同的系統(tǒng)中,CAN總線的波特率可以不同,其可適應(yīng)的信息傳輸距離也不同;但在同一個系統(tǒng)中,其總線波特率必須一致,所以DSP28335在初始化波特率時,A路和B路應(yīng)當同時進行一致的初始化。22CAN總線電平CAN總線的理論電平如下圖所示:高速CAN與低速CAN在總線電平上有區(qū)別,如下圖所示:高速CAN與低速CAN的高速低速之分在于支持的總線波特率不
11、一樣。實驗用的開發(fā)板上的收發(fā)器PCA82C250第8腳接地,故為高速CAN模式。高速CAN為提高通信的抗干擾性和可靠性,應(yīng)進行光耦隔離。開發(fā)板的CAN接口部分電路如下圖所示:23CAN總線上的120歐電阻CAN總線終端以及各個節(jié)點終端通常均有120歐電阻,其作用在于匹配總線阻抗,提高數(shù)據(jù)通信的抗干擾性及可靠行,有效地增強信號強度。高頻信號傳輸時,信號波長相對傳輸線較短,信號在傳輸線終端會形成反射波,干擾原信號,所以需要在傳輸線末端加終端電阻,根據(jù)傳輸線理論,終端電阻可以吸收網(wǎng)絡(luò)上的反射波,使信號到達傳輸線末端后不反射。兩個終端電阻并聯(lián)后的值應(yīng)當基本等于傳輸線在通信頻率上的特性阻抗。終端電阻典型
12、值為120歐姆.在網(wǎng)絡(luò)連接線非常短、臨時或?qū)嶒炇覝y試時也可以不使用終端電阻。24DSP的CAN時鐘模塊CAN的時鐘頻率 其中,為波特率預(yù)定標寄存器,用于將系統(tǒng)時鐘分頻為CAN時鐘,。若采用3次采樣模式,必須滿足。CAN總線上的時間周期長度由、以及決定:,;,(注意必須大于或等于);波特率25郵箱初始化例程注解void InitMboxA0(Uint32 MID,Uint16 DTL,Uint16 TR)struct ECAN_REGS ECanaShadow;EALLOW; ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; ECanaShadow
13、.CANTIOC.bit.TXFUNC = 1; ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all; ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; ECanaShadow.CANRIOC.bit.RXFUNC = 1; ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;ECanaShadow.CANMC.bit.SCB = 1; /選擇eCAN模式,將32個郵箱寄存
14、器全部使用起來ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; ECanaMboxes.MBOX0.MSGCTRL.all = 0x00000000;/此語句含郵箱號,可以修改/以下狀態(tài)或標志寄存器通過寫1清零/ECanaRegs.CANTA.all= 0xFFFFFFFF;ECanaRegs.CANRMP.all= 0xFFFFFFFF;ECanaRegs.CANGIF0.all= 0xFFFFFFFF;ECanaRegs.CANGIF1.all= 0xFFFFFFFF;/配置郵箱收發(fā)方向/ ECanaShadow.CANMD.all = ECanaR
15、egs.CANMD.all; ECanaShadow.CANMD.bit.MD0 = TR; /此語句含郵箱號,可以修改 ECanaRegs.CANMD.all = ECanaShadow.CANMD.all; /配置標識符ID,寫標識符前必須關(guān)閉使能位/ ECanaShadow.CANME.all = ECanaRegs.CANME.all; ECanaRegs.CANME.bit.ME0= 0; /此語句含郵箱號,可以修改 ECanaRegs.CANME.all = ECanaShadow.CANME.all;ECanaMboxes.MBOX0.MSGID.all = MID; /此語句含
16、郵箱號,可以修改/標識符配置結(jié)束后使能相應(yīng)的郵箱/ ECanaShadow.CANME.all = ECanaRegs.CANME.all; ECanaShadow.CANME.bit.ME0 = 1; /此語句含郵箱號,可以修改 ECanaRegs.CANME.all = ECanaShadow.CANME.all;/設(shè)置數(shù)據(jù)長度的字節(jié)數(shù)/ ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = DTL;/此語句含郵箱號,可以修改EDIS;26消息發(fā)送和接收1、消息發(fā)送/往發(fā)送郵箱中寫數(shù)據(jù),分別寫低32位4字節(jié)和高32位4字節(jié)ECanaMboxes.MBOX0.MDL.all
17、 = MDL;ECanaMboxes.MBOX0.MDH.all = MDH;/置位準備發(fā)送,將發(fā)送請求位置位,使能郵箱發(fā)送功能ECanaShadow.CANTRS.all = 0;ECanaShadow.CANTRS.bit.TRS0 = 1; ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;doECanaShadow.CANTA.all = ECanaRegs.CANTA.all; while(ECanaShadow.CANTA.bit.TA0 = 0 ); /當郵箱的消息被成功發(fā)送時,發(fā)送應(yīng)答位TA將置1ECanaShadow.CANTA.bi
18、t.TA0 = 1; /寫1清零,準備判別下一次發(fā)送與否ECanaRegs.CANTA.all=ECanaShadow.CANTA.all;2、消息的接收struct ECAN_REGS ECanaShadow;ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;dowhile(ECanaShadow.CANRMP.bit.RMP1 != 1 );/當接收消息成功時,接收待決位RMP0置位為1 ECanaShadow.CANRMP.bit.RMP1 = 1;/接收消息待決位通過寫1清零ECanaRegs.CANRMP.all=ECanaShadow.CA
19、NRMP.all;27CAN的適配器存在的一些問題過濾器配置明顯不對但任然能接受數(shù)據(jù):波特率是2倍關(guān)系3 DSP的32位浮點運算測試TESTCOUNT1對應(yīng)于正弦運算的時鐘周期數(shù)TESTCOUNT2對應(yīng)于加法運算的時鐘周期數(shù)TESTCOUNT3對應(yīng)于除法運算的時鐘周期數(shù)1、單單次運算:2、循環(huán)10次運算:3、循環(huán)100次運算:4、結(jié)果分析:按多次統(tǒng)計求平均的原則,DSP28335的32位浮點運算時間為:單次加法:20個時鐘周期,約為單次除法:250個時鐘周期,約為單次正弦:82個時鐘周期,約為5、補充說明:系統(tǒng)時鐘周期為6、浮點運算正弦值并畫圖4 DSP定時器中斷41 DSP28335的定時器
20、TMS320F28335一共有3個32位CPU定時器,其中定時器0可以被用戶使用,定時器1和定時器2則被保留為實時操作系統(tǒng)使用(這是文件DSP2833x_CpuTimers.c中的說法,而手冊2823x System Control and Interrupts Reference Guide中講0和1可用而2被保留。這一點如有必要需更多的測試)。本程序中主要涉及的定時器寄存器有計數(shù)寄存器TIM(32位,分高16位和低16位)、周期寄存器PRD(32位,分高16位和低16位)、定時器分頻寄存器TDDR(16位,分高8位和低8位)以及定時器控制寄存器TCR。42定時器分頻本程序定時器的分頻值為零
21、,則進行1分頻,定時器周期等于系統(tǒng)輸出時鐘周期。如下圖,分頻值可以在文件DSP2833x_CpuTimers.c中的函數(shù)void InitCpuTimers(void)中去修改。43 計數(shù)器計數(shù)每過一個定時器時鐘周期,定時器計數(shù)器寄存器TIM減1,當TIM遞減到0時,產(chǎn)生一個CPU中斷信號并將PRD的值重載到TIM中,TIM繼續(xù)遞減計數(shù)。詳參資料2823x System Control and Interrupts Reference Guide第62頁,如下圖:44定時器時鐘周期定時器時鐘周期即對系統(tǒng)時鐘進行分頻而得到。注:詳參任潤柏,周荔丹等.TMS320F28x源碼解讀,北京:電子工業(yè)出
22、版社,2010,2437.5 DSP看門狗復(fù)位51看門狗時鐘看門狗時鐘發(fā)生器:WDCLK = CLKOUT/512,當HALT時停止。6-bits預(yù)定標WDPS選擇:將WDCLK再分頻后送給看門狗定時器。WDPS為WDCR的20 位。其6-bits配置作用如下:000 WDCLK=OSCCLK/512/1;001 WDCLK=OSCCLK/512/1;010 WDCLK=OSCCLK/512/2;011 WDCLK=OSCCLK/512/4;100 WDCLK=OSCCLK/512/8;101 WDCLK=OSCCLK/512/16;110 WDCLK=OSCCLK/512/32;111 WD
23、CLK=OSCCLK/512/64;52看門狗系統(tǒng)控制和狀態(tài)寄存器(SCSR)高13位均保留,只控制低3位:53看門狗計數(shù)寄存器(WDCNTR)計數(shù)器WDCNTR:低8位為計數(shù)器,當?shù)?位溢出時,產(chǎn)生一個復(fù)位信號。此寄存器為只讀寄存器。54看門狗重啟管理器(WDKEY)利用軟件定時向看門狗復(fù)位控制寄存器WDKEY寫“0x55+0xAA”序列,即可以復(fù)位看門狗計數(shù)器:void ServiceDog(void) EALLOW; SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x00AA; EDIS;看門狗重啟管理器(WDKEY)的低8位參與控制,只
24、有先寫入55h后寫入AAh后重啟看門狗計數(shù)器。不是此順序?qū)懭?5h或AAh,則無效。寫入其他數(shù)值時則產(chǎn)生復(fù)位信號。55看門狗控制寄存器(WDCR)看門狗檢測位WDCHK:需要向WDCHK(20)寫1、0、1,寫其他任何值都會引起器件內(nèi)核的復(fù)位(看門狗已經(jīng)使能),此檢測位執(zhí)行讀操作將返回0、0、0.6 軟件報錯與處理61CCS Setup中仿真器的配置新的開發(fā)板買回來,安裝軟件不連接硬件,直接打開后報錯:Error initializing emulatorI/O Port = 510Board Name: F28335 XDS510USB EmulatorCpu Name: cpu_0Abor
25、t:Close Code Composer Studio.Retry:Try to initialize the emulator again.Ignore:Ignore the initialization error and startpotentially without target debugging access.Diagnostic:Run diagnostic utility.問題解決:如下圖,一定要在family中找到F28XX,而不能在C28XX中去選F28335在屬性配置中一定設(shè)成下圖所示的選項:62Connect報錯1145換仿真器解決Error connecting
26、to the target:Error 0x00001200/-1145Error during: OCS, Target, Unrecoverable emulation errorI/O Port = 240Board Name: F28335 XDS510-USB2.0 emulatorCpu Name: TMS320C2800_0Abort:Close Code Composer Studio.Retry:Try to connect to the target again.Cancel:Remain disconnected from the targetDiagnostic:Run
27、 diagnostic utility.繼續(xù)RETRY之后,會出下面錯誤1037再RETRY一次,錯誤變成了1031此時關(guān)閉軟件,系統(tǒng)還總會出現(xiàn)下面的錯誤解決:用了一個ICETEK_5100USBV2.0仿真器,此問題解決??磥矸抡嫫骺赡艽嬖谄ヅ浠蛴布葐栴}。63CAN口測試A發(fā)B收,數(shù)據(jù)發(fā)不出去一般都是導(dǎo)線沒有穩(wěn)定連接而造成。64編譯Pwm測試文件出錯<Linking>error: symbol "_main" redefined: first defined in "E:coreboard_Examples28335_ePWM_generateDe
28、bugCAN.obj" redefined in "E:coreboard_Examples28335_ePWM_generateDebugePWM_Generate.obj"warning: creating ".stack" section with default size of 0x400; use the -stack option to change the default sizeerror: errors encountered during linking; "./Debug/28335_ePWM_generate.
29、out" not built經(jīng)檢查,在工程的源文件中多導(dǎo)入了一個無關(guān)文件多的can文件中也調(diào)用了main函數(shù),所以出現(xiàn)編譯錯誤。65could not open source file "DSP2833x_Device.h 出現(xiàn)這個錯誤,需要對工程的buile option做設(shè)置如下:打開build option: 復(fù)制圖中的選中部分$(Proj_dir),打開Category的倒數(shù)第二項Preprocessor將之粘貼到圖示鼠標箭頭處,并在之后寫Include,即將編譯制定到當前工程中,就可以打開頭文件了。7 備注與注意事項1、 CCS開發(fā)環(huán)境的工程文件夾的路徑中不能出現(xiàn)
30、中文,否側(cè)工程打開出錯。2、 當前USB2CAN適配器的串口波特率的配置為115200bps。3、 CAN通信在編譯可執(zhí)行文件時,如果在原工程中做修改,需要將原來工程中的DSP2833x_eCAN.C移除,因為該文件與新編寫的三個初始化函數(shù)有近似的功能。就8月3日進行的測試來看,A路CAN的0號郵箱數(shù)據(jù)字節(jié)位失控、1號和2號郵箱的ID標識符寄存器失控。8 附錄 C源程序81PWM初始化及脈沖產(chǎn)生函數(shù)#include "DSP2833x_Device.h" / DSP2833x Headerfile Include File#include "DSP2833x_Ex
31、amples.h" / DSP2833x Examples Include File/-/ InitPwm:/-/必要的函數(shù)聲明/void InitPwm(int16 c,float32 f);void UpdatePwm(int16 c,float32 pw,float32 f);void InitPwm1AB(float32 f);void InitPwm2AB(float32 f);void InitPwm3AB(float32 f);void InitPwm4AB(float32 f);void InitPwm5AB(float32 f);void InitPwm6AB(fl
32、oat32 f);void UpdatePwm1A(float32 pw,float32 f);void UpdatePwm1B(float32 pw,float32 f);void UpdatePwm2A(float32 pw,float32 f);void UpdatePwm2B(float32 pw,float32 f);void UpdatePwm3A(float32 pw,float32 f);void UpdatePwm3B(float32 pw,float32 f);void UpdatePwm4A(float32 pw,float32 f);void UpdatePwm4B(f
33、loat32 pw,float32 f);void UpdatePwm5A(float32 pw,float32 f);void UpdatePwm5B(float32 pw,float32 f);void UpdatePwm6A(float32 pw,float32 f);void UpdatePwm6B(float32 pw,float32 f);/初始化PWM函數(shù)/void InitPwm(int16 c,float32 f)switch(c)case 0:InitPwm1AB(f); break;case 1:InitPwm1AB(f);break;case 2:InitPwm2AB(
34、f); break;case 3:InitPwm2AB(f);break;case 4:InitPwm3AB(f); break;case 5:InitPwm3AB(f);break;case 6:InitPwm4AB(f); break;case 7:InitPwm4AB(f);break;case 8:InitPwm5AB(f); break;case 9:InitPwm5AB(f);break;case 10:InitPwm6AB(f); break;case 11:InitPwm6AB(f);break;default: break;/PWM信號產(chǎn)生函數(shù)/void UpdatePwm(
35、int16 c,float32 pw,float32 f)/入口參數(shù):通道、占空比、頻率if(pw<=0.0001)pw=0.0001;else if(pw>99.9999)pw=99.9999;pw = pw/100.0;switch(c)case 0:UpdatePwm1A(pw,f);break;case 1:UpdatePwm1B(pw,f);break;case 2:UpdatePwm2A(pw,f);break;case 3:UpdatePwm2B(pw,f);break;case 4:UpdatePwm3A(pw,f);break;case 5:UpdatePwm3B
36、(pw,f);break;case 6:UpdatePwm4A(pw,f);break;case 7:UpdatePwm4B(pw,f);break;case 8:UpdatePwm5A(pw,f);break;case 9:UpdatePwm5B(pw,f);break;case 10:UpdatePwm6A(pw,f);break;case 11:UpdatePwm6B(pw,f);break;default:break;/初始化子函數(shù),對第一個函數(shù)作注釋/void InitPwm1AB(float32 f)Uint16 T= 2343750/f-1.0;/系統(tǒng)時鐘SYSCLKOUT=15
37、0MHz,TBCLK=6.6666667ns,在連續(xù)增計數(shù)模式下,f=150000000/(TBPDR+1)/ T = 150 000 000 /CLKDIV/HSPCLKDIV/f - 1.0EALLOW;/先初始化通用輸入輸出口/GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; EPwm1Regs.TBPHS.half.TBPHS = 0; / 在相位寄存器中設(shè)置
38、計數(shù)器的起始計數(shù)位置/下面兩條語句組合對PWM的時鐘進行分頻EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; /在周期寄存器中設(shè)置計數(shù)器的計數(shù)周期/TBCTL為定時器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; /設(shè)置計數(shù)模式位為連續(xù)增計數(shù)模式,產(chǎn)生對稱方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; / 將定時器相位使能位關(guān)閉EPwm1Regs.TBCTL.bit.PRDLD = TB_S
39、HADOW;/映射寄存器SHADOW使能并配置映射寄存器為自動讀寫EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; / 定時器時鐘源選擇,一共有四種時鐘源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;/ 設(shè)置EPWM1A比較值寄存器的比較值,即體現(xiàn)EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;/A模塊比較模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;/B模塊比較模式EPwm1Reg
40、s.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; / A模塊比較使能,通過寫0來清除SHDWAMODE位來使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; / B模塊比較使能,通過寫0來清除SHDWBMODE位來使能load on CTR=Zero/AQCTLA為輸出A比較方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; / TBCTR(計數(shù)器)計到零時使輸出為反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;/TBCTR(計數(shù)器)
41、與CMPA在up計數(shù)時相等使輸出為high,這關(guān)系的輸出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;void InitPwm2AB(float32 f)Uint16 T= 2343750/f-1.0;EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO3
42、= 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; EPwm2Regs.TBPHS.half.TBPHS = 0; EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm2Regs.CM
43、PA.half.CMPA= 0.0001*T;EPwm2Regs.CMPB= 0.0001*T;EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;EPw
44、m2Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;void InitPwm3AB(float32 f)Uint16 T= 2343750/f-1.0;EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6
45、;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T;EPwm3Regs.TBPHS.half.TBPHS = 0; EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm3Regs.CMPA.half.CMPA= 0.0001*T;EPwm3Regs.CMP
46、B= 0.0001*T;EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm3Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR;EPwm3Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm
47、3Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;void InitPwm4AB(float32 f)Uint16 T= 2343750/f-1.0;EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;E
48、Pwm1Regs.TBPRD = T; EPwm4Regs.TBPHS.half.TBPHS = 0; EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW;EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm4Regs.CMPA.half.CMPA= 0.0001*T;EPwm4Regs.CMPB= 0.0001*T;EPwm4Regs.CMPCTL.bit.SH
49、DWAMODE = CC_SHADOW;EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDI
50、S;void InitPwm5AB(float32 f)Uint16 T= 2343750/f-1.0;EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; EPwm5Regs.TBPHS
51、.half.TBPHS = 0; EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm5Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm5Regs.CMPA.half.CMPA= 0.0001*T;EPwm5Regs.CMPB= 0.0001*T;EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm5Regs.CMPCT
52、L.bit.SHDWBMODE = CC_SHADOW;EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;EPwm5Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm5Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;void InitPwm6AB(float32 f)Uint16 T= 2343750/f-1.0;EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025汽車買賣合同范本
- 快遞鄉(xiāng)鎮(zhèn)安全協(xié)議合同
- 2025年度網(wǎng)站開發(fā)建設(shè)委托合同
- 商標咨詢合同協(xié)議
- 正規(guī)熟食購銷合同協(xié)議
- 2025商店買賣合同書標準版
- 2025年的合同范本:地坪漆施工協(xié)議
- 2025商場店鋪租賃合同書范本
- 《衛(wèi)生法規(guī)》課件 項目7 母嬰保健法律制度;項目8 中醫(yī)藥法律制度
- 2025建筑材料采購銷售合同模板
- GB/T 45369-2025吸收性衛(wèi)生用紙制品及原材料消臭效果評價方法
- 第一章+動量守恒定律+章末復(fù)習高二上學期物理人教版(2019)選擇性必修第一冊
- 信創(chuàng)產(chǎn)業(yè)面試題及答案
- 學校崗位安全手冊指南
- 2025-2030體外診斷儀器行業(yè)市場深度分析及發(fā)展策略研究報告
- 五方股權(quán)投資合作協(xié)議書合同協(xié)議范本模板8篇
- 幼兒園大班建構(gòu)游戲中幼兒自主學習行為的研究
- 警衛(wèi)安檢任務(wù)流程
- 展覽會議展前展中展后服務(wù)方案(技術(shù)方案)
- 高中家長會 高一下學期期中考試家長會課件
- 慢性病護理的畢業(yè)論文范文
評論
0/150
提交評論