28335實用板ccs3.3軟件用戶手冊_第1頁
28335實用板ccs3.3軟件用戶手冊_第2頁
28335實用板ccs3.3軟件用戶手冊_第3頁
28335實用板ccs3.3軟件用戶手冊_第4頁
28335實用板ccs3.3軟件用戶手冊_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章YXDSP-F28335B開發(fā)平臺硬件測試YXDSP-F28335系列開發(fā)板根據(jù)每個子產(chǎn)品所配備的外設(shè)資源不同,而配備不同的開發(fā)試驗例程,例程均為源代碼,載入均可直接運行,例程代碼有注釋說明。例程圖序號GPIO-LED測試GPIO-Button實驗TIMER0定時測試TIMER1定時測試External_Interrupt_button實驗FFTAIC23SCIB_RS232實驗SCIB_RS232實驗SD-DPI-Fatfs實驗EXRAMI2C-rtcEEPROMDMARAMCAP-CAPSPI_LOOKBACK_INTMcBSP-SPI-LOOKBACK實驗McBSP-SPI-LOOKBACK_INTMcBSP_DMA實驗ADADC_SOC_INT實驗CAP-A實HR_SFO實HR實發(fā)板的一些資源例程,請客戶隨時關(guān)注我們的學(xué)習(xí),我們會及時更新在中。。LED燈實1、實驗?zāi)康?、實驗設(shè)LEDGPIOLED3、實驗步驟的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);2-1-1連接界將FPU 的文件夾拷貝到CCS3.3安裝路徑中的MyProjects 下;(注:CCS工程文CCS中點擊菜單欄的project->Open……命令CCS3.3的MyProjectslab1- LED.pjt由于lab1-GPIO_output_LED工程已經(jīng)是一個可燒寫的可執(zhí)行文件,所以直接在CCS中點File->LoadProgram……命令,在FPU文件下加載 下的LED.out可執(zhí)行文件在CCS中點擊Debug->Run……運行程序;也可以使用CCS最左邊的仿真工具,直接點擊全速運行按鈕,即可運行程序,可以觀察開發(fā)板上LED燈的效果;浮點運算實驗1、實驗?zāi)康?、實驗設(shè)YX-F28335開發(fā)板一套;3、實驗步28335內(nèi)部有一個32位的單精度浮點運算單元,在代碼中如果有浮點計算部分28335自動啟動浮點計算單元,直接進(jìn)行浮點運算,而不需要像定點那樣通過移位將浮點變?yōu)檎偷腏ATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab11-FPU 的文件夾拷貝到CCS3.3安裝路徑中的MyProjects lab11- FPU.pjtProgram……命令,在FPU文件下加載Debug 下的FPU.out可執(zhí)行文件;此查看工具可以幫助用戶在分析程序運行過程中,相關(guān)變量的變化情況。如下圖2-2-3:4、實驗原理及程序說明:

TMS320F28335和其他的CPU一樣,也是需要進(jìn)行初始化,在此實驗中,由于未用到DSP的其他外設(shè),所以只需對TMS320F28335的時鐘和看門狗進(jìn)行初始化即可。TMS320F28335的時鐘原理圖如下圖2-2-4所示:

圖2-2-4TMS320F28335的時鐘原理YX-F28335板上采用的是30MHz外部晶體給CPU提供時鐘,并使能F28335片上PLL電路。PLL倍頻系數(shù)由PLL控制寄存器PLLCR的低4位控制,可由軟件進(jìn)行動態(tài)修改。F28335的CPU最高可工作150MHz主頻下30MHz輸入頻率進(jìn)5倍頻。PLLCR控制位與倍頻系數(shù)的關(guān)系如下圖2-2-5所示:圖2-2-5PLLCR控制位與倍頻系數(shù)的關(guān)門狗的原理與使用,用戶可以參考TMS320F28335Datasheet和其他相關(guān)資料。TMS320F28335是浮點型處理器,相比于其他的TMS320F28xx定點型處理器,F(xiàn)28335具有更按鍵實驗1、實驗?zāi)康?、實驗設(shè)3、實驗步驟的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab2- 的文件夾拷貝到CCS3.3安裝路徑中的 下CCS中點擊菜單欄的project->Open……命令CCS3.3的MyProjectslab2-GPIO_input_button中GPIO_in.pjt由于lab2-GPIO_input_button工程已經(jīng)是一個可燒寫的可執(zhí)行文件,所以直接在CCS中點File->LoadProgramFPU件下加Debug下的GPIO_in.out外部SRAM實1、實驗?zāi)康?、實驗設(shè)器,它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部的數(shù)據(jù)。一個空間逐一比較是否正確,如果一致說明沒有問題,最后才寫入自然數(shù)。的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置); lab14- EXRAM.pjtFile->LoadProgram……命令,在FPU文件下加載Debug CCSDebug->Run,此時用戶可以發(fā)現(xiàn)程序運行到第一個斷點處,然后點擊0如下圖2-4-3所示;2-4-3個地址的值變?yōu)?XAAAA,如下圖2-4-4所示;2-4-4有改變了,如下圖2-4-5所示;2-4-5×16OTPROM和Zone7。Zone0區(qū)域:0X004000—0X004FFF,4K×16位可編程最少一個等待周期Zone6區(qū)域:0X100000—0X1FFFFF,1M×16位10ns最少一個等待周期Zone7區(qū)域:0X200000—0X2FFFFF1M×1670nsYX-F28335512K×16位的SDRAM映射到Zone6的前半部現(xiàn)此邏輯的方法是將CS6和地址19相與后送SDRAM片選線DSP其他地址線和數(shù)據(jù)線SDRAM的地址線和數(shù)據(jù)線相連、將DSPSDRAM的讀寫線相連即可。定義一個SDRAM的起始地址,使得程序更直觀易懂。如下所示: *ExRamStart=(Uint16*)0x100000for(i=0;i<0xFFFF;{*(ExRamStarti) { //一旦讀出的值與寫入的值不相等,那么程序?qū)⑦M(jìn)行死循環(huán) }for(i=0;i<0xFFFF;{*(ExRamStart+i)=0xAAAA; //前面向RAM0x5555,此處向其寫入0xAAAA{ //檢測SRAM的讀寫是否正}}for(i=0;i<0xFFFF;{*(ExRamStart+i)=i; RAM0、1、20xFFFFif(*(ExRamStarti)i)0x100000{ //檢測SRAM的讀寫是}}片外FLASH實(0x180000~0x1FFFFF)1、實驗?zāi)康?、實驗設(shè)3、實驗步的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置); lab13- 39VF800.pjt由于lab13-39VF800工程已經(jīng)是一個可燒寫的可執(zhí)行文件,所以直接在CCS中點擊File->LoadProgram……命令,在lab13-39VF800文件下加載Debug CCSTarget->Run,此時用戶可以發(fā)現(xiàn)程序運行到第一個斷點處,然后點擊內(nèi)容,如下圖2-5-3所示;2-5-3個地址的值如下圖2-5-4所示;2-5-4在CCS中Run,此時程序運行到第三個斷點,在地址欄輸入0x100000,memory各個地址的值變?yōu)橄聢D2-5-5所示,即對FLASH寫操作,把SDRAM中的值賦給FLASH各單2-5-5各個地址的值如下圖2-5-6所示,即對SDRAM進(jìn) 2-5-6memory2-5-7FLASHSDRAM;實驗原理及程序說明:

2-5-7YX-F28335將256K×16位的FLASH映射到Zone6的后半部分,實現(xiàn)此邏輯的方法是將地19取反后CS6相與后送FLASH、將DSP其他地址線和數(shù)據(jù)線直接FLASH的地址線和數(shù)據(jù)線相連、將DSP的讀寫線與FLASH的讀寫線相其原理圖如下圖2-5-8所些,其操作過程及命令如下圖2-5-10所示: { /***********以下過程需要嚴(yán)格遵守+=//需要對FLASH0x5555單元+=//需要對FLASH0x2AAA單元+=//隨后對FLASH0x5555單元+=//之后對FLASH0x5555單元*(FlashStart+0x5555)=0x1010; //需要對FLASH0x5555單元寫0x1010i=0;TimeOut=0;{Data=*(FlashStart+0x3FFFF); (Data==0xFFFF) (++TimeOut>0x return(TimeOutErr);} {Data=*(FlashStart+i);if(Data!=0xFFFF)return}return否則返回EraseErr,標(biāo)明擦除失敗} RamStart, RomStart,Uint16//FLASH寫函數(shù)里面有3個參數(shù),分別是源地址、目的地址、所傳地址長{Uint32i,TimeOut;Uint16Data1,Data2,j; {/*********以下3行過程需要嚴(yán)格遵守*(FlashStart+0x5555)=*(FlashStart+0x2AAA)=*(FlashStart+0x5555)=*(FlashStart+RomStart+i)=*(ExRamStart+RamStart+//將源地址(SDRAM)數(shù)據(jù)送給目的地址(FLASH)各個單TimeOut=0;{Data1=*(FlashStart+RomStart+i);Data2=*(FlashStart+RomStart+

}}for{

(Data1==Data2) if( )Data1=*(FlashStart+RomStart+i);Data2=*(ExRamStart+RamStartif(Data1!=Data2)return}return一樣的話返回WriteOK,否則返回VerifyErr,標(biāo)明操作失敗} RamStart,Uint32RomStart,Uint16{Uint32Uint16 {Temp=*(FlashStart+RomStart*(ExRamStart+RamStart+i)=}}定時器實驗1、實驗?zāi)康?、實驗設(shè)備3、實驗步驟的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab3- lab3- TIMER0.pjtFile->LoadProgram……命令,在lab3-TIMER0_LED文件下加載Debug TIMER0.out可執(zhí)行文件;在CCS中點擊Debug->Run……運行程序;也可以使用CCS最左邊的仿真工具,直接點擊全速運行按鈕,即可運行程序;此時用戶可以發(fā)現(xiàn)YX-F28335開發(fā)板上面的8個LED的狀態(tài)4、實驗原理及程序說明:中斷函數(shù)中來改變LED的狀態(tài),從而實現(xiàn)LED閃爍的效果。圖2-6-2TMS320F28335定時每來一個時鐘信號,預(yù)定標(biāo)計數(shù)器PSCH:PSC1,直到減到0后,它將會重載TIF:定時器中斷標(biāo)志位, 時將清除中斷標(biāo)志00;01;10;11個中斷請求,所以TMS320F2833x系列DSP的中斷要比其他處理器復(fù)雜。CPU2-6-32-6-4DSP1上外設(shè)。CPU沒有足夠的中斷源來管理所有的片上外設(shè)中斷請求,所以在F28x系列DSP中設(shè)置了一個外設(shè)中斷擴(kuò)展控制器(PIE)CPUINT1~I(xiàn)NT12。每個中斷源對應(yīng)一個中斷向量(對應(yīng)的中斷服務(wù)程序32+96=128個中斷向量。TMS320F283350(2-6-5):定時器中斷信號是經(jīng)過PIE后,再作為C28x處理器的中斷輸入信號,并且定時器的時鐘信號也是與處理器的時鐘同步的。由上面的原理圖可知,定時器0屬于PIE中斷,下面分析PIE模塊的框架圖(圖2-6-6):那么定時器0中斷到底屬于PIE的哪一組中斷呢?又屬于這一組的第幾個中斷呢?帶著這兩個問題我們來看PIE中斷向量表:大家請看下圖2-6-7中紅色框里面的TINT0就是定時器0中斷,用戶請再看兩個紅勾,橫向的INT1代表中斷組,縱向的INTx.7是第一組中斷的第7個

void{0CpuTimer0.RegsAddr=0CpuTimer0Regs.PRD.all=CpuTimer0Regs.TPR.all=CpuTimer0Regs.TPRH.all=//確保定時器為停止?fàn)顟B(tài):CpuTimer0Regs.TCR.bit.TSS1;CpuTimer0Regs.TCR.bit.TRB=CpuTimer0.InterruptCount=}voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,float //InitializetimerTimer->CPUFreqInMHz=Freq;Timer->PeriodInUSec=Period;temp=(long)(Freq*Timer->RegsAddr->PRD.alltemp;//Freq*Period的值給周期寄存//Setpre-scalecountertodivideby1(SYSCLKOUT):Timer->RegsAddr->TPR.all=0;Timer->RegsAddr->TPRH.all=//InitializetimercontrolTimer->RegsAddr->TCR.bit.TSS=1; //1=Stoptimer,0=Start/RestartTimerTimer->RegsAddr->TCR.bit.TRB=1; //1=reloadtimerTimer->RegsAddr->TCR.bit.SOFT=Timer->RegsAddr->TCR.bit.= //TimerRunTimer->RegsAddr->TCR.bit.TIE= //0=Disable/1=EnableTimer//Resetinterruptcounter:Timer->InterruptCount=0;} △T=Freq*Period/ 時鐘頻率)針對此實驗,F(xiàn)rep為150,Period為100000,那么△T=0.1s=100ms。void{PIEPIEPieCtrlRegs.PIEIER1.all=PieCtrlRegs.PIEIER2.all=PieCtrlRegs.PIEIER3.all=PieCtrlRegs.PIEIER4.all=PieCtrlRegs.PIEIER5.all=PieCtrlRegs.PIEIER6.all=PieCtrlRegs.PIEIER7.all=PieCtrlRegs.PIEIER8.all=PieCtrlRegs.PIEIER9.all=PieCtrlRegs.PIEIER10.all=PieCtrlRegs.PIEIER11.all=PieCtrlRegs.PIEIER12.all=PIEPieCtrlRegs.PIEIFR1.all=PieCtrlRegs.PIEIFR2.all=PieCtrlRegs.PIEIFR3.all=PieCtrlRegs.PIEIFR4.all=PieCtrlRegs.PIEIFR5.all=PieCtrlRegs.PIEIFR6.all=PieCtrlRegs.PIEIFR7.all=PieCtrlRegs.PIEIFR8.all=PieCtrlRegs.PIEIFR9.all=PieCtrlRegs.PIEIFR10.all=PieCtrlRegs.PIEIFR11.all=PieCtrlRegs.PIEIFR12.all=} //此函數(shù)初始化中斷向量表,將中斷服務(wù)函數(shù)與向量表關(guān){int16Uint32*Source=(void*)&PieVectTableInit;//中斷服務(wù)函數(shù)地Uint32*Dest(void*) for(i=0;i<128;*Dest++=*Source++;//把中斷地址送給中斷向量表,達(dá)到關(guān)聯(lián)的目//EnablethePIEVectorTable} //thisisneededtowritetoEALLOWprotectedregistersPieVectTable.TINT0=&ISRTimer0;IER|=PieCtrlRegs.PIEIER1.bit.INTx7=通過以上中斷的設(shè)置,定時器0就會每隔100ms進(jìn)入一次中斷服務(wù)函數(shù),但是中斷服務(wù)函數(shù)里面需要清除中斷標(biāo)志位,包括清除PIE第一組的中斷標(biāo)志位和定時器0本身的中斷標(biāo)志interruptvoid{//Acknowledgethisinterrupttoreceivemoreinterruptsfromgroup1PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;LedReg=if(i>=8)}外部中斷實驗1、實驗?zāi)康?、實驗設(shè)3、實驗步的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab5-External_Interrupt_button 的文件夾拷貝到CCS3.3安裝路徑中的 lab5-External_Interrupt_button中ExInt.pjtCCS中點擊File->LoadProgram……命令,在lab5-External_Interrupt_button文件DebugExInt.out在CCS中點擊Debug->Run……運行程序;也可以使用CCS最左邊的仿真工具,直接點擊全用戶可以按下YX-F28335開發(fā)板上面的S2—S5按鈕,觀察LED的變化效果。用戶將會發(fā)現(xiàn)不同的按鈕對應(yīng)不同的LED變化效果;外部輸入中斷那就必須要接收外部信號才行,所以就由GPIO接收外部輸入信號。GPIO0~GPIO31XINT1~XINT3XNMI的外部中斷輸入;XINT1的輸入通道,按鍵S1為中斷觸發(fā)源。DLOGINT12PIE)PIE12*8=96PIEPIEIER8斷。另外,PIEPIEIFR,88;CPU的IFR是大中斷的標(biāo)志寄存器。下面來看詳細(xì)的中斷流程圖(圖2-7-2):這64GPIO都可以通過軟件配置成外部中斷引腳,但是需要注意的是GPIO0—GPIO31只能配12,GPIO32—GPIO633、4、5、67。一旦某一個鈕來產(chǎn)生邊沿信號,其原理圖如下圖2-7-3所示:由上圖2-7-3得知,當(dāng)按鈕沒有按下時,XINT為高電平,當(dāng)按鈕按下的瞬間,XINT變?yōu)榈停瑥亩a(chǎn)生一個下降沿。這里面按鍵的邊沿信號是直接送給YX-F28335B板上的J2-74,通過J2-74DSP的管腳。GpioCtrlRegs.GPAMUX1.bit.GPIO12=GpioCtrlRegs.GPAMUX1.bit.GPIO13=GpioCtrlRegs.GPADIR.bit.GPIO12=GpioCtrlRegs.GPADIR.bit.GPIO13=GpioCtrlRegs.GPAQSEL1.bit.GPIO12=GpioCtrlRegs.GPAQSEL1.bit.GPIO13=0;GpioCtrlRegs.GPBCTRL.bit.QUALPRD0=0xFF;XIntruptRegs.XINT1CR.bit.POLARITY=0;//外部中斷1設(shè)置為下降沿觸XIntruptRegs.XINT2CR.bit.POLARITY=0;//外部中斷2設(shè)置為下降沿觸XIntruptRegs.XINT1CR.bit.ENABLE1 說明:GPxQSELx這個寄存器,我們通過這個寄存器可以把外部的觸發(fā)信號進(jìn)行分頻之后再送過GPIOinterruptvoid{PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;if(ExFlag)num=num=ExFlag=}實1、實驗?zāi)康?、實驗設(shè)3、實驗步的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab18-的文件夾拷貝到CCS3.3安裝路徑中的MyProjects lab18-中.pjt工程文件由于lab18- Program……命令,在lab18-文件下加載Debug 下的.out可執(zhí)行文件;YX-F28335的頻率應(yīng)該是10KHz;4、實驗原理及程序說明:

圖2-8-2波的控制方法:采樣控制理論中有一個重要結(jié)論:沖量相等而形狀不同的窄脈沖加在具有慣性的環(huán)節(jié)上時,其效果基本相同??刂萍夹g(shù)就是以該結(jié)論為理論基礎(chǔ),對半導(dǎo)體開中又有6路可以配置為高分辨率的 (HR)。在此主要分析12路增強型 圖如下圖2-8-3所示:圖2-8-3結(jié)構(gòu)框 (2-8-圖2-8-4模塊一個e模塊包括:Time-base(TB)module(定時器模塊), pare(CC),Action-,Dead-,Event-(觸發(fā)模塊),Trip-zone(TZ)module(行程區(qū)模塊)等七個模塊。正常的發(fā)出波模塊)、ET(觸發(fā)模塊)等五個模塊。,如下圖2-8-5:圖2-8-5模塊第一個定時器模塊TB用于設(shè) 的頻率,其包括以下寄存器:TBCTLTBCTR(計數(shù)器定時器模塊TB原理如下圖2-8-6所示:CMPCTL(比較控制寄存器)CMPA、CMPB(高速使用 CMPB(比較值寄存器B):設(shè)置E 比較模塊CC原理如下圖2-8-7所示:第三個比較方式預(yù)設(shè)模塊AQ用于設(shè)置 AQCTLA(輸出A比較方式控制寄存器):設(shè)置E 反向,當(dāng)OTSFB、OTSFA被寫1時,動作一次,寫0無效,無 AQCSFRC(軟件連續(xù)強制控制寄存器):可以強制EA、EB的輸出為low或highTBCLK=1時開始起作用。CBUTBCTR(計數(shù)器CMPBup計數(shù)時相等使輸出lowhigh或反向或不動作;CADTBCTR(計數(shù)器)CMPAdown時相等使輸出為lowhigh或反向或不動CAUTBCTR(計數(shù)器CMPAup計數(shù)時相等使輸出lowhigh或反向或不動作;PRDTBCTR(計數(shù)器)與TBPRD(周期寄存器)相等時使輸出為lowhigh或反向或例如:當(dāng)CMPA=100,CMPB=100,up計數(shù),EA初始為低,CAU設(shè)置高,CBU設(shè)置低,CMPA=100CPB=1,其它不變,當(dāng)TBCTR計到100時,EA輸出高,計到110時EA輸出低。 第五個中斷觸發(fā)模 用于觸發(fā)中斷,其包括以下寄存器: 停止計數(shù),當(dāng)標(biāo)志為清除時 置零重新計數(shù);ET 1;ETCLR(中斷標(biāo)志清除寄存器):寫1清除相應(yīng)標(biāo)志位;ETFRC(強制中斷寄存器):寫1強制相應(yīng)中斷發(fā)生。圖2-8-11中斷觸發(fā)模塊ET原理 析產(chǎn)生的程序編程過程,產(chǎn)生占空比為0.5,頻率為10K的波的配置程序如下:voidInitE GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0內(nèi)部上拉GpioCtrlRegs.GPAPUD.bit.GPIO1=0; //使能GPIO1內(nèi)部上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0=1; //將GPIO0配置為E1A功能GpioCtrlRegs.GPAMUX1.bit.GPIO1=1; //將GPIO1配置為E1B功能}voidE{ //初始 //初始化 2引腳 //相位寄存器設(shè)置為0 //CMPA和CMPB配置為立即模式 1Regs.CMPA.half.CMPA //設(shè)置占空比為0.5,SPEE // xA=1whenCTR=CMPAandcounter//ExA=0whenCTR=CMPAandcounterE1Regs.DBCTL.all=0xb;//E1B與E1A相關(guān)聯(lián),即E1B隨E1Regs.DBRED=0;//上升沿的死區(qū)時間設(shè)置為0E1Regs.DBFED=0;//下降沿的死區(qū)時間設(shè)置為0E1Regs.TZSEL.all=0;EE E //SP是時基周期寄存器的周期值,決 的頻}注意:TMS320F150MHzDSP,方便的應(yīng)用于電機(jī)控制,電力設(shè)備控制及工業(yè)控和應(yīng)用模塊還需要用戶仔細(xì)分析理解,理解模塊的工作原理。如需要參5、實驗思考:如何產(chǎn)生占空比為1/3的CAP實驗1、實驗?zāi)康?、實驗設(shè)3、實驗步的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);將lab19-CAP 的文件夾拷貝到CCS3.3安裝路徑中的MyProjects lab19- f28335_Cap.pjtProgram……命令,在lab19-CAP文件下加載Debug YX-F28335J72T1、T2T1T215000;3腳CCSTarget->Run,CCS的WatchWindow,Watch1窗口中鍵T3、T415000CAP22-9-2:

輸入信號分頻Modulo4序列發(fā)生器對Eachedge(共4路)進(jìn)行驗證32bit過范圍時,則會產(chǎn)生相應(yīng)的溢出標(biāo)志,若溢出中斷使能,則產(chǎn)生中斷。此計數(shù)器在計算周期時非常有效,詳細(xì)關(guān)于CAP的資料請參。產(chǎn)生中斷。單獨地被極性選擇部分以及序列驗證部分審核。這些中的一個被選擇用來作為中斷源送入PIE。eCAP計數(shù);使能eCAP中斷;2~62,也可以選擇跳過分頻部分,此功能主要是針對輸入信號頻率很高的情況。經(jīng)過分生器產(chǎn)生的頻率為10KHz,所以T的值應(yīng)該是15000。為eCAP提供基準(zhǔn)。void{ //使能系統(tǒng)時鐘為CAP2提供基 //其他CAP模塊未用到,所以}void{//選擇設(shè)置GPIO24為CAP1,當(dāng)然用戶可以選擇其他GPIO,前提是所選的GPIO具有CAP功能即GpioCtrlRegs.GPAPUD.bit.GPIO24=0; //使能GPIO24(CAP1)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO240;GPIO24(CAP1)時鐘與系統(tǒng)時鐘輸出同步GpioCtrlRegs.GPAMUX2.bit.GPIO24=1;//配置GPIO24CAP1}#ifvoid{GpioCtrlRegs.GPAPUD.bit.GPIO25=0; //使能GPIO25(CAP2)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO250;//使GPIO25(CAP2)時鐘與系統(tǒng)時鐘輸出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1;//配置GPIO25CAP2}#endif//endifvoid{ECap1Regs.ECCTL1.bit.CAP1POL=EC_RISING; //一級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP2POL=EC_RISING; //二級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP3POL=EC_RISING; //三級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP4POL=EC_RISING; //四級捕捉上升沿ECap1Regs.ECCTL1.bit.CTRRST1=EC_ABS_MODE;//一級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE;//二級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST3=EC_ABS_MODE;//三級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST4=EC_ABS_MODE;//四級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CAPLDEN=EC_ENABLE; //使能捕捉時捕捉寄存器裝載計數(shù)器值ECap1Regs.ECCTL1.bit.PRESCALE //對外部信號不分ECap1Regs.ECCTL2.bit.CAP_A=EC_CAP_MODE; ECap1Regs.ECCTL2.bit.CONT_ONESHT=EC_CONTINUOUS; ECap1Regs.ECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;ECap1Regs.ECCTL2.bit.SYNCI_EN=EC_DISABLE; //關(guān)閉所有CAP中 ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //啟動CAP計數(shù)器 //使能四級中斷,即當(dāng)發(fā)生//第四次捕捉時進(jìn)入中}void{ECap2Regs.ECCTL1.bit.CAP1POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP2POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP3POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP4POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CTRRST1=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST3=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST4=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CAPLDEN=EC_ENABLE;ECap2Regs.ECCTL1.bit.PRESCALE=EC_DIV1;ECap2Regs.ECCTL2.bit.CAP_A=EC_CAP_MODE;ECap2Regs.ECCTL2.bit.CONT_ONESHT=EC_CONTINUOUS;ECap2Regs.ECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;ECap2Regs.ECCTL2.bit.SYNCI_EN=EC_DISABLE; //關(guān)閉所有中 ECap2Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //啟動開中斷 }-CAP實1、實驗?zāi)康?、實驗設(shè)3、實驗步驟的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);2-10-1將 lab20-- 中f28335_Cap.pjt工程文件由于lab20- File->LoadProgram……命令,在lab20--CAP文件下加載Debug f28335_Cap.out可執(zhí)行文件;T215000;2-10-4、實驗原理及程序說明:

此實驗是將TMS320F28335產(chǎn)生10K的波,通過短接線,直接將此信號送給CAP輸入引腳,由前面的實驗九可知,T值應(yīng)該為15000。那么程序在實現(xiàn)的時候應(yīng)該是先對進(jìn)行設(shè)置,之后再啟動CAP。具體程序請看以下分析過程。voidInitE GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0內(nèi)部上拉GpioCtrlRegs.GPAPUD.bit.GPIO1=0; //使能GPIO1內(nèi)部上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0=1; GpioCtrlRegs.GPAMUX1.bit.GPIO1= }void{PIEPIEPieCtrlRegs.PIEIER1.all=PieCtrlRegs.PIEIER2.all=PieCtrlRegs.PIEIER3.all=PieCtrlRegs.PIEIER4.all=PieCtrlRegs.PIEIER5.all=PieCtrlRegs.PIEIER6.all=PieCtrlRegs.PIEIER7.all=PieCtrlRegs.PIEIER8.all=PieCtrlRegs.PIEIER9.all=PieCtrlRegs.PIEIER10.all=PieCtrlRegs.PIEIER11.all=PieCtrlRegs.PIEIER12.all==========PieCtrlRegs.PIEIFR10.all=PieCtrlRegs.PIEIFR11.all=PieCtrlRegs.PIEIFR12.all=} //此函數(shù)初始化中斷向量表,將中斷服務(wù)函數(shù)與向量表關(guān){int16Uint32*Source=(void*)&PieVectTableInit;//中斷服務(wù)函數(shù)地Uint32*Dest=(void*)&PieVectTable; for(i=0;i<128;*Dest++=*Source++;//把中斷地址送給中斷向量表,達(dá)到關(guān)聯(lián)的目//EnablethePIEVectorTable}eCAP初始化設(shè)置,首先CAPvoid{ //使能系統(tǒng)時鐘為CAP2提供基 //其他CAP模塊未用到,所以}void{//選擇設(shè)置GPIO24為CAP1,當(dāng)然用戶可以選擇其他GPIO,前提是所選的GPIO具有CAP功能即GpioCtrlRegs.GPAPUD.bit.GPIO24 GpioCtrlRegs.GPAQSEL2.bit.GPIO240;GPIO24(CAP1)時鐘與系統(tǒng)時鐘輸出同步GpioCtrlRegs.GPAMUX2.bit.GPIO24=1;//配置GPIO24CAP1}#ifvoid{GpioCtrlRegs.GPAPUD.bit.GPIO25=0; //使能GPIO25(CAP2)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO250;//使GPIO25(CAP2)時鐘與系統(tǒng)時鐘輸出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1;//配置GPIO25CAP2}#endif//endifvoid{ECap1Regs.ECCTL1.bit.CAP1POL=EC_RISING; //一級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP2POL=EC_RISING; //二級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP3POL=EC_RISING; //三級捕捉上升沿ECap1Regs.ECCTL1.bit.CAP4POL=EC_RISING; //四級捕捉上升沿ECap1Regs.ECCTL1.bit.CTRRST1=EC_ABS_MODE;//一級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE;//二級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST3=EC_ABS_MODE;//三級捕捉后不計數(shù)器ECap1Regs.ECCTL1.bit.CTRRST4=EC_ABS_MODE;//四級捕捉后不計數(shù)器 //使能捕捉時捕捉寄存器裝載計數(shù)器ECap1Regs.ECCTL1.bit.PRESCALE=EC_DIV1; ECap1Regs.ECCTL2.bit.CAP_A=EC_CAP_MODE; ECap1Regs.ECCTL2.bit.CONT_ONESHT=EC_CONTINUOUS; ECap1Regs.ECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;ECap1Regs.ECCTL2.bit.SYNCI_EN=EC_DISABLE; //關(guān)閉所有CAP中 ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //啟動CAP計數(shù)器 //使能四級中斷,即當(dāng)發(fā)生//第四次捕捉時進(jìn)入中}void{ECap2Regs.ECCTL1.bit.CAP1POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP2POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP3POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CAP4POL=EC_FALLING; ECap2Regs.ECCTL1.bit.CTRRST1=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST3=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CTRRST4=EC_ABS_MODE;ECap2Regs.ECCTL1.bit.CAPLDEN=EC_ENABLE;ECap2Regs.ECCTL1.bit.PRESCALE=EC_DIV1;ECap2Regs.ECCTL2.bit.CAP_A=EC_CAP_MODE;ECap2Regs.ECCTL2.bit.CONT_ONESHT=EC_CONTINUOUS;ECap2Regs.ECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;==//關(guān)閉所有中//清除中斷標(biāo)志 }voidE{ //初始 2引腳 //相位寄存器設(shè)置為0EE CMPACMPB1Regs.CMPA.half.CMPA //設(shè)置占空比為0.5,SP是周期寄存器的E //ExA=1whenCTR=CMPAandcounter//ExA=0whenCTR=CMPAandcounterEEEE1Regs.DBCTL.all=0xb;// E1Regs.DBRED=0;EEEEEEEE1Regs.ETSEL.all=0;//中斷觸發(fā)的產(chǎn)EEEEE 增減模E }UART串口實1、實驗?zāi)康?、實驗設(shè)3、實驗步的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);2-11-1將lab9- lab9- SCI.pjtFile->LoadProgram……命令,在lab9-SCIC_RS485_PC文件下加載Debug SCI.out可執(zhí)行文件;片內(nèi)AD實1、實驗?zāi)康?、實驗設(shè)3、實驗步請不要直接連接到AD上面);的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);2-12-1將lab25-AD 的文件夾拷貝到CCS3.3安裝路徑中的MyProjects lab25- AD.pjt

2-12-3相同的方法的波形如下圖2-12-5所示:的波形如下圖2-12-6所示:看的波形如下圖2-12-7所示:4、實驗原理及程序說明:

TMS320F28335片上有112A/D轉(zhuǎn)換器,其前端為28選1多路切換器和2路時采樣/保持器,構(gòu)成16個模擬輸入通道,模擬通道的切換由硬件自動控制,并將各模擬通道16ADC

多種A/D觸發(fā)方式:軟件啟動、模塊和外部中斷2引腳;塊燒毀。下面我們通過程序進(jìn)行分析:SysCtrlRegs.HISPCP.allADC_MODCLK;HSPCLK25MHz,ADCvoid{externvoidDSP28x_usDelay(Uint32Count);ADC_cal();//調(diào)用ADC_cal匯編程序,它是TI編寫的ADC例行,用戶直接使用即AdcRegs.ADCTRL3.all ADC //在ADC轉(zhuǎn)換前要延時一}AdcRegs.ADCTRL1.bit.ACQ_PS= ==1==AdcRegs.ADCCHSELSEQ1.all= //A0AdcRegs.ADCMAXCONV.bit.MAX_CONV1=0x1;//最大通道數(shù),由于我們只用到A0,所以其值為0,如果我們最大通道數(shù)是3,那么其值為2/*******************接下來就是DA產(chǎn)生信號,AD采樣信號,再此需要注意的是一定要控制DA輸出信號的電壓范圍(0—3V)(注意比較試驗十一中DA各個信號和實驗十二中DA各個信{array_index===GpioDataRegs.GPBSET.bit.GPIO34AdcRegs.ADCST.bit.INT_SEQ1_CLR1;//SetGPIO34formonitoring-SampleTable[array_index++]=((AdcRegs.ADCRESULT0)>>4);if(array_index>(BUF_SIZE-1))array_index=0;GpioDataRegs.GPBCLEAR.bit.GPIO34=1;//ClearGPIO34formonitoring-}外擴(kuò)EEPROM實1、實驗?zāi)康?、實驗設(shè)在28335實用板上外擴(kuò)了一片128字節(jié)的EEPROM,EEPROM的測試過程主要是對EEPROM的如果相等,則說明對EEPROM的操作沒問題,否則說明硬件上面存在故障。3、實驗步驟在28335實用板上外擴(kuò)了一片128字節(jié)的EEPROM,EEPROM的測試過程主要是對EEPROM的如果相等,則說明對EEPROM的操作沒問題,否則說明硬件上面存在故障。的JATG針處(注意仿真器插入方向,請仔細(xì)核對防差錯針的位置);圖2-13-將lab16- lab16- EEPROM.pjtFile->LoadProgram……命令,在lab16-EEPROM文件下加載Debug WatchWindows輸入dat1,然后點擊暫停運行,你會看到如下圖2-13-2所示:

dat[]={RTC實時時鐘實驗1、實驗?zāi)康?、實驗設(shè)Y

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論