28335至尊板ccs3.3软件用户手册_第1页
28335至尊板ccs3.3软件用户手册_第2页
28335至尊板ccs3.3软件用户手册_第3页
28335至尊板ccs3.3软件用户手册_第4页
28335至尊板ccs3.3软件用户手册_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

研旭电气科技第一章YXDSP-F28335AYXDSP-F28335系列开发板根据每个子产品所配备的外设资源不同,而配备不同的开发试验例程,例程均为源代码,载入均可直接运行,例程代码有注释说明。例程图序号1GPIO-LED测试2GPIO-Setup实验3TIMER0定时测试4TIMER1定时测试5TIMER2定时测试6DA7ADC8ADC-SEQ9AD、DA联合试验AIC23音频测试CAN39VF800外扩FLASHExInt外部中断测试EXRAMSRAMDMARAMRTL8019网口测试IPSCIBSCIC-AQ-TIMER-INT-CAP联合实验_DEADBAND实验-EQEP实验HR实HR_SFO实CAPCAP-A实QEP-FREQCAL实验QEP-POS-SPEED实验外扩EEPROM读写测试LCD12864图形显示测试USBRTC实时时钟测试浮点运算试验实时操作系统uC-OS2F28335的移植直流电机驱动实验步进电机驱动实验SD卡测试试验 了一些常用例程的操作与详解,在后续的时间里不断完善开发板的一些资源例程,请客户随时关注我们的学习,我们会及时更新在中。。第二章浮点运算实验1、实验目的:2、实验设备:3、实验步骤:板的JATG针处(注意仿真器方向,请仔细核对防差错针的位置); 将FPU 的文件夹拷贝到CCS3.3安装路径中的MyProjects 加载FPU 中FPU.pjt工程文件; 2-1-2Watch此查看工具可以帮助用户在分析程序运行过程中,相关变量的变化情况。如下图2-1-3:4、实验原理及程序说明:TMS320F28335和其他的CPU一样,也是需要进行初始化,在此实验中,由于未用到DSP的其他外设,所以只需对TMS320F28335的时钟和看门狗进行初始化即可。TMS320F28335的时钟原理图如下图2-1-4所示:图2-1-4TMS320F28335的时钟原理系数的关系如下图2-1-5所示:图2-1-5PLLCR控制位与倍频系数的关门狗的原理与使用,用户可以参考TMS320F28335Datasheet和其他相关资料。TMS320F28335是浮点型处理器,相比于其他的TMS320F28xx定点型处理器,F28335具y1=y2=m1=m2=x1=x2=b1=b2=y1=m1*x1 y2=m2*x2+LED跑马灯实1、实验目的:2、实验设3、实验步发板的JATG针处(注意仿真器方向,请仔细核对防差错针的位置);将 中 4、实验原理及程序说明:在YX-F28335开发板中,DSP的8个管脚通过74LVC245缓冲、限流电阻与8个发光二极管相连,其原理图如右图所示,其中有D7D8CAP/QEP捕捉指示灯,所以此时只用据手册资料,可以知道控D1—D6的管脚DSPGPIO0—GPIO5。由于此8LED都是共时候,LED熄灭。如下图2-2-2: 20.1 2C23 2C24 2C25 2C26 2C27 2C28 2C29 需要注意的TMS320F28335IO管脚具有多功能复用GPAMUX寄存器的设置可这些IO口配置为输出口,详细原理请参照TMS320F28335的中的GPIO部分。void{GpioCtrlRegs.GPAMUX1.bit.GPIO0=0; //GPIO0=GPIO0通用的IOGpioCtrlRegs.GPADIR.bit.GPIO0=1; //GPIO0配置为输出口GpioCtrlRegs.GPAMUX1.bit.GPIO1=0; //GPIO1=GPIO1通用的IOGpioCtrlRegs.GPADIR.bit.GPIO1=1; //GPIO1配置为输出口GpioCtrlRegs.GPAMUX1.bit.GPIO2=0; //GPIO2=GPIO2通用的IOGpioCtrlRegs.GPADIR.bit.GPIO2=1; //GPIO2配置为输出口GpioCtrlRegs.GPAMUX1.bit.GPIO3=0; //GPIO3=GPIO3通用的IOGpioCtrlRegs.GPADIR.bit.GPIO3=1; //GPIO3配置为输出口GpioCtrlRegs.GPAMUX1.bit.GPIO4=0; //GPIO4=GPIO4通用的IOGpioCtrlRegs.GPADIR.bit.GPIO4=1; //GPIO4配置为输出口GpioCtrlRegs.GPAMUX1.bit.GPIO5=0; //GPIO5=GPIO5通用的IOGpioCtrlRegs.GPADIR.bit.GPIO5=1; //GPI5配置为输出口}#defineLED1GpioDataRegs.GPADAT.bit.GPIO0LED1GPIO0#defineLED2GpioDataRegs.GPADAT.bit.GPIO1LED2GPIO1defineLED3GpioDataRegs.GPADAT.bit.GPIO2//LED3GPIO2#defineLED4GpioDataRegs.GPADAT.bit.GPIO3LED4GPIO3#defineLED5GpioDataRegs.GPADAT.bit.GPIO4//LED5GPIO4#defineLED6GpioDataRegs.GPADAT.bit.GPIO5//LED6GPIO5{ }5、实验思考:外部SRAM实1、实验目的:了解TMS320F28335 2、实验设3、实验步骤:板的JATG针处;将 中 CCSDebug->Run,此时用户可以发现程序运行到第一个断点处,然后点击如下图2-3-3所示;2-3-3各个地址的值变为0XAAAA,如下图2-3-4所示;的值有改变了,如下图2-3-5所示;空间中,即程 器和数。其图2-3- 已将程序空间和数据空间成一个4M×16位的空间。TMS320F28335片上有256K×16位FLASH器,34K×16位单周期单次随机器的SARAM,8K×16BOOTROM,1KZone0,Zone6Zone7Zone0区域:0X004000—0X004FFF,4K×16位可编程最少一个等待周期Zone6区域:0X100000—0X1FFFFF,1M×16位10ns最少一个等待周期Zone7区域:0X200000—0X2FFFFF,1M×16位70ns最少一个等待周YX-F28335YX-F28335512K×16位的到Zone6的前半部实现此逻辑的方法是将和地址线19相“与”后送给SDRAM片选线、将DSP其他地址线和数据线直接和SDRAM的地其原理如下图2-3-7所示:void{GpioCtrlRegs.GPCMUX1.bit.GPIO64=3;//XD15GpioCtrlRegs.GPCMUX1.bit.GPIO65=3;//XD14GpioCtrlRegs.GPCMUX1.bit.GPIO66=3;//XD13GpioCtrlRegs.GPCMUX1.bit.GPIO67=3;//XD12GpioCtrlRegs.GPCMUX1.bit.GPIO68=3;//XD11GpioCtrlRegs.GPCMUX1.bit.GPIO69=3;//XD10GpioCtrlRegs.GPCMUX1.bit.GPIO70=3;//XD19GpioCtrlRegs.GPCMUX1.bit.GPIO71=3;//XD8GpioCtrlRegs.GPCMUX1.bit.GPIO72=3;//XD7GpioCtrlRegs.GPCMUX1.bit.GPIO73=3;//XD6GpioCtrlRegs.GPCMUX1.bit.GPIO74=3;//XD5GpioCtrlRegs.GPCMUX1.bit.GPIO75=3;//XD4GpioCtrlRegs.GPCMUX1.bit.GPIO76=3;//XD3GpioCtrlRegs.GPCMUX1.bit.GPIO77=3;//XD2GpioCtrlRegs.GPCMUX1.bit.GPIO78=3;//XD1GpioCtrlRegs.GPCMUX1.bit.GPIO79=3;//XD0GpioCtrlRegs.GPBMUX1bit.GPIO40=3;//XA0/XWE1nGpioCtrlRegs.GPBMX.bitGPIO41=3;//XA1GpioCtrlRegs.GPBMUX.bit.GPIO42=3;//XA2GpioCtrlRegsGPBMUX1.bit.GPIO43=3;//XA3GpioCtrlRegs.GPBMUX1.bit.GPIO44=3;//XA4GpioCtrlRegs.GPBMUX1.bit.GPIO45=3;//XA5GpioCtrlRegs.GPBMUX1.bit.GPIO46=3;//XA6GpioCtrlRegs.GPBMUX1.bit.GPIO47=3;//XA7GpioCtrlRegs.GPCMUX2.bit.GPIO80=3;//XA8GpioCtrlRegs.GPCMUX2.bit.GPIO81=3;//XA9GpioCtrlRegs.GPCMUX2.bit.GPIO82=3;//XA10GpioCtrlRegs.GPCMUX2.bit.GPIO83=3;//XA11GpioCtrlRegs.GPCMUX2.bit.GPIO84=3;//XA12GpioCtrlRegs.GPCMUX2.bit.GPIO85=3;//XA13GpioCtrlRegs.GPCMUX2.bit.GPIO86=3;//XA14GpioCtrlRegs.GPCMUX2.bit.GPIO87=3;//XA15GpioCtrlRegs.GPBMUX1.bit.GPIO39=3;//XA16=========} *ExRamStart=(Uint16*)0x180000for(i=0;i<0xFFFF;{*(ExRamSarti) //从0x180000起始地址开始写,一共写0xFFFF{ 环,说明SDRAM有问题}}for(i=0;i<0xFFFF;{*(ExRamStart+i)=0xAAAA; RAM0x55550xAAAA{ }}for(i=0;i<0xFFFF;{*(ExRamStart+i)=i; if(*(ExRamStarti)i)0x180000{ }}5、实验思考:片外FLASH实1、实验目的: 2、实验设3、实验步板的JATG针处;将 中 CCSDebug->Run,此时用户可以发现程序运行到第一个断点处,然后点击内容,如下图2-4-3所示;0各个地址的值如下图2-4-4所示;memory2-4-6SDRAMmemory2-4-7FLASHSDRAM;4、实验原理及程序说明:YX-F28335将256K×16位的FLASH到Zone6的后半部分,实现此逻辑的方法是将地其原理图如下图2-4-8和图2-4-9所示:图图2-4- { +=需要对FLASH0x5555单元写+=需要对FLASH0x2AAA单元写+=随后对FLASH0x5555单元写+=之后对FLASH0x5555单元写+=需要对FLASH0x2AAA单元写*(FlashStart0x5555)0x1010;FLASH0x5555i=TimeOut=0;{Data=*(FlashStart+0x3FFFF); (Data==0xFFFF)

(++TimeOut>0x1000000)return(TimeOutErr);} {Data=*(FlashStart+i);if(Data!=0xFFFF)return}return以上部分检测FLASH是否擦除正确,正确的话返回EraseOK.;否则返回EraseErr,标明擦除失} RamStart,Uint32 RomStart,Uint16Length)FLASH3{Uint32i,TimeOut;Uint16Data1,Data2,j; {以下3行过程需要严格遵*(FlashStart+0x5555)=*(FlashStart+0x2AAA)=*(FlashStart+0x5555)=*(FlashStartRomStarti)*(ExRamStartRamStarti);TimeOut=0;{

}}for{

Data1=*(FlashStart+RomStart+i);Data2=*(FlashStart+RomStart+i);if(Data1==Data2)j++;elseif(++TimeOut>0x1000000)Data1=*(FlashStar+RomStart+i);Data2=*(ExRamStart+RamStartif(Data1!=Data2)return}eturn以上部分同样是检测FLASH写入的数据和读出的数据是否一样,一样的话返回WriteOK,否则返回VerifyErr标明操作失败} RamStart,Uint32RomStart,Uint16{Uint32Uint16 {Temp=*(FlashStart+RomStart*(ExRamStart+RamStart+i)=}}5、实验思考:定时器实验1、实验目的:2、实验设3、实验步板的JATG针处将 中 6LED4、实验原理及程序说明中断函数中来改变LED的状态,从而实现LED闪烁的效果。图图2-5-3TMS320F28335每来一个时钟信号,预定标计数器PSCH:PSC1,直到减到0后,它将会重载TIF:定时器中断标志位,写1时将清除中断标志;TIE:00硬件停止;01停止;10运行;11运个中断请求,所以TMS320F2833x系列DSP的中断要比其他处理器复杂。CPU2-5-42-5-5图2-5-4外设中断扩展控制器图2-5-5外设中断扩展控制器 列DSP上有很多片上外设,每个片上外设都可能产生1个或多个中断请求,以响应众多的片上外设事件。CPU没有足够的中断源来管理所有的片上外设中断请求,所以在F28x系列DSP中设置了一个外设中断扩展控制器(PIE)来管理片上外设和外部引脚引起的中断请求CPUINT1~INT12。每个中断源对应一个中断向量(对应的中断服务程序定时器中断信号是经过PIE后,再作为C28x处理器的中断输入信号,并且定时器的时钟定时器中断信号是经过PIE后,再作为C28x处理器的中断输入信号,并且定时器的时钟信号也是与处理器的时钟同步的。由上面的原理图可知,定时器0属于PIE中断,下面分析PIE(2-5-那么定时器0中断到底属于PIE的哪一组中断呢?又属于这一组的第几个中断呢?带着这两个问题我们来看PIE中断向量表:大家请看下图2-5-8中红色框里面的TINT0就是定时0中断,用户请再看两个红勾,横向的INT1代表中断组,纵向的INTx.7是第一组中断的第void{定时器0初始CpuTimer0.RegsAddr=CpuTimer0Regs.PRD.all=设置预定标计数器值为CpuTimer0Regs.TPR.all=CpuTimer0Regs.TPRH.all=CpuTimer0Regs.TCR.bit.TSS1;CpuTimer0Regs.TCR.bit.TRB=CpuTimer0.InterruptCount=}voidConfigCpuTimer(structCPUTIMER_VARS*TimerflotFreq,float 初始化定时器Timer->CPUFreqInMHz=Freq;Timer->PeriodInUSc=Period;temp=(long)(Freq*Timer->RegsAddr->PRD.all Timer->RgsAddr->TPR.all=0; //Setpre-scalecountertodivideby1Timer->RegsAddr->TPRH.all=Timer->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.FREE= //TimerFreeRunTimer->RegsAddr->TCR.bit.TIE= //0=Disable/1=EnableTimer中断计数复位Timer->InterruptCount=}时钟频率)针对此实验,Frep为150,Period为100000,那么△T=0.1s=100ms。void{PIEPieCtrlRegs.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=清除所有PIE中断标志位PieCtrlRegs.PIEIFR1.all0;PieCtrlRegs.PIEIFR2allPieCtrlRegsPIEIFR3.all=0;PieCtrlRgsPIEIFR4.all=0;PieCtrlRegs.PIEIFR5.all=PieCtrlRegs.PIEIFR6.all=PieCtrlRegs.PIEIFR7.all=PieCtrlRegs.PIEIFR8.all=PieCtrlRegs.PIEIFR9.all=PieCtrlRegs.PIEIFR10.all=PieCtrlRegs.PIEIFR11.all=PieCtrlRegs.PIEIFR12.all=}{int16Uint32*Source=(void*)&PieVectTableInit;//中断服务函数地Uint32*Dest(void*) for(i=0;i<128;*Dest++=*Source++;//把中 //EnablethePIEVectorPieCtrlRegs.PIECTRL.bit.ENPIE }PieVectTable.TINT0=&ISRTimer0;IER|=PieCtrlRegs.PIEIER1.bit.INTx7=通过以上中断的设置,定时器0就会每隔100ms进入一次中断服务函数,但是中断服务函数里面需要清除中断标志位,包括清除PIE第一组的中断标志位和定时器0本身的中断标志InterruptvoidISRTimer0{//acknowledgethisinterrupttoreceivemoreinterruptsfromgroup1PieCtrlRegs.PIEACKall=PIEACK_GROUP1;CpuTimer0RegsTCR.bitTIF=1;CpuTimer0RgsTCRbit.TRB=1;改变LED的状态LED1=LED1;}5、实验思考:外部中断实验1、实验目的:2、实验设3、实验步骤:板的JATG针处;将 中 4、实验原理及程序说明:DLOGINT12PIE)PIE12*8=96PIEPIEIER8断。另外,PIEPIEIFR,88;CPUIFR(26-2)钮来产生边沿信号,其原理图如下图2-6-3所示:—K_INT3K_INT0—K_INT3voidconfigexgp{EA通过前面的实验二,作为通用IO通过前面的实验二,作为通用IO通过前面的实验二,作为通用IO通过前面的实验二,作为通用IO通过前面的实验二,作为输入IO通过前面的实验二,作为输入IO通过前面的实验二,作为输入IO通过前面的实验二,作为输入IOGpioCtrlRegs.GPBQSEL2.bit.GPIO540;//GPIO54GPIOGpioCtrlRegs.GPBQSEL2.bit.GPIO550;//GPIO55GPIOGpioCtrlRegs.GPBQSEL2.bit.GPIO560;//GPIO56GPIO//说明:GPxQSELx这个寄存器,我们通过这个寄存器可以把外部的触发信号进行分频之后再送 GPIO=GPIO54被配置为中断=GPIO55被配置为中断=GPIO56被配置为中断=GPIO57被配置为中断 外部中断3设置为下降沿触 外部中断4设置为下降沿触 外部中断5设置为下降沿触外部中断6设置为下降沿触说明:当此XIntruptRegs.XINT6CR.bit.POLARITY=1时为上升沿触发,等于2时就是双边XIntruptRegs.XINT3CR.bit.ENABLE XIntruptRegs.XINT4CR.bit.ENABLE XIntruptRegs.XINT5CR.bit.ENABLE XIntruptRegs.XINT6CR.bit.ENABLE=1; 6}点是GPIO外LED是需要一定的延时,否则GPIO响应不过来)。/*************GPIOx的置位寄存器为1表明为高,那么LED1就被点亮/*************GPIOx的清零寄存器为1表明为低,那么LED1就熄灭*****************/#defineLED1_ON #defineLED1_OFFGpioDataRegs.GPACLEAR.bit.GPIO0=1#defineLED2_ON #defineLED2_OFFGpioDataRegs.GPACLEAR.bit.GPIO1=1#defineLED3_ON #defineLED3_OFFGpioDataRegs.GPACLEAR.bit.GPIO2=1#defineLED4_ON 5、实验思考:实验1、实验目的:2、实验设(2)XDS510仿真器一套;3、实验步骤:板的JATG针处;将拷贝到CCS开发环境中的 在CCS菜单栏点击project->Open……命令加 中在CCS菜单栏点击File->LoadProgram……命令,加载Debug下的所示的,通过示波器查看的频率应该是10KHz;4、实验原理及程序说明:

的控制方法:采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。控制技术就是以该结论为理论基础,对半导体开TMS320F2833518(这些引脚需要进行配置,类似于前面的GPIO),12路增强型(e)6路普通,12中又有6路可以配置为高分辨率的(HR)在此主要分析12路增强型,其结构框图如下图2-7-3所示:图2-7-3结构框图(图2-7-4):图2-7-4模块框一个e模块包括:Time-base(TB)module(定时器模块), pare(CC),Action-,Dead-,Event-(事件触发模块),Trip-zone(TZ)module(行程区模块)等七个模块。正常的发出模块)、ET(事件触发模块)等五个模块。如下图2-7-5:图2-7- TBCTR(计数器 器 CMPA(比较值寄存器A):设置ExA的比较值,有寄存器;CMPB(比较值寄存器B):设置ExB的比较值,寄存CC2-7-7反向,当OTSFB、OTSFA被写1时,动作一次,写0无效,无 AQCSFRC(连续强制控制寄存器):可以强制EA、EB的输出为low或highTBCLK=1时开始起作用。作TBCT(其它不变,当TBCTR计到100时,EA输出高,计到110时EA输出低。第四个死区模块DB用于设置的死区时间,其包括以下寄存器: 中断事件触发模块ET原理图如下图2-7-11所示:2-7-11中断事件触发模块ET原理 析产生的程序编程过程,产生占空比为0.5,频率为10K的 voidInitE GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0上拉GpioCtrlRegs.GPAPUD.bitGPIO1=0; //使能GPIO1上拉GpioCtrlRegs.PAMUX1.bit.GPIO0=1; GpioCtlReg.GPAMUX1.bit.GPIO1=1; }void { //初始 1引 //初始化 2引脚 //将时基的状态寄存器清零 //相位寄存器设置为0 //时基计数器清零 = //设置占空比为0.5,SP E //ExA=1whenCTR=CMPAandcounter// xA=0whenCTR=CMPAandcounterEEE1Regs.DBCTL.all=0xb;//E1B与E1A相关联,即E1B随 //上升沿的死区时间设置为0 //下降沿的死区时间设置为0EE1Regs.ETSEL.all=0;//中断触发事件的产E1Regs.ET.all=0;E1Regs.ETCLRall=0E1Regs.EFRC.aE1RegsERegs.TBCTL.all=0x0010+TBCTLVALE1Regs.TBPRD=SP;//SP决定的频}地理解和应用模块还需要用户仔细分析理解,理解模块的工作原理5、实验思考:如何产生占空比为1/3 CAP实1、实验目的:2、实验设(2)XDS510仿真器一套;3、实验步骤:板的JATG针处;将 f28335_Cap线接到开发板的地线端,另一端接到YX-F28335J82CCSDebug->Run,CCSWatchWindow,在Watch1窗口中键入T1、T2T1T215000;3脚CCSDebug->Run,CCSWatchWindow,Watch1T3、T415000CAP22-8-1:2-8-1Watch4、实验原理及程序说明:功能,主要应用在速度测量,脉冲序列周期测量等方面。其原理框图如下图2-8-2输入信号分频4Captureevent32bit周期时非常有效,详细关于CAP的资料请参。中断能够获事件所(CEVT1-CEVT4,CTROVF)触发,计数器(TSCTR)计数溢出同样会来作为中断源送入PIE。停止eCAP计数;使能eCAP中断;生器产生的频率为10KHz,所以T的值应该是15000。为eCAP提供基准。void{ //使能系统时钟为CAP2提供基}设置CAP的输入引脚如下void{选择设置GPIO24为CAP1,当然用户可以选择其他GPIO,前提是所选的GPIO具有CAP功能即GpioCtrlRegs.GPAPUD.bit.GPIO24=0; //使能GPIO24(CAP1)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO24=0; //使GPIO24(CAP1)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO24=1; //配置GPIO24作为CAP1}#ifvoid{GpioCtrlRegs.GPAPUD.bit.GPIO25 GpioCtrlRegs.GPAQSEL2.bit.GPIO25=0; //使GPIO25(CAP2)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1; //配置GPIO25作为CAP2}void{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; //一级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE; //二级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST3=EC_AB_MODE; //三级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST4=EC_ABS_MODE; //四级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bitCAPLDEN=EC_ENABLE; //使能事件捕捉时捕捉寄存器装载计数器值ECap1Regs.ECCTL1bit.PRESCALE ECap1RegsECCTL2bit.CAP_A =EC_CAP_MODE; //捕捉模式ECap1RgsECCTL2.bit.CONT_ONESHT=EC_CONTINUOUS; ECapRegs.ECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;ECap1Regs.ECCTL2.bit.SYNCI_EN=EC_DISABLE; //清除所有中断标志位ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动CAP计数器 捉时进入中}void{ECap2Regs.ECCTL1.bit.CAP1POL ECap2Regs.ECCTL1.bit.CAP2POL ECap2Regs.ECCTL1.bit.CAP3POLEC_FALLING;//三级事件捕捉下降沿ECap2Regs.ECCTL1.bit.CAP4POLEC_FALLING;//四级事件捕捉下降沿ECap2Regs.ECCTL1.bit.CTRRST1=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; //清除中断标志位ECap2Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动开中断 //使能CEVT4中断}5、实验思考(2)若把信号发生器的信号变为30K,此时T1的值为多少?(3)TMS320F28335的CAP能测量300M的信号吗?如果可以怎么测量?2.9-CAP实1、实验目的:2、实验设JATGYX-F28335J82J51(或者将J8的第2脚和J5的第2脚短接起来也可以)如果您使用JATG - 中CCSFile->LoadProgram…DebugCCSDebug->Run,打开CCSWatchWindow,如果用户是将J8-2J5-1短接的话,那么请Watch1窗口中键T1、T2后回车,用户将会看T1T2的值15000;T3T415000;如下图2-9-2:4、实验原理及程序说明:

2-9-2WatchTMS320F2833510K波,通过短接线,直接将此信号送CAP输入引脚,由前面的实验九可知,T值应该为15000。那么程序在实现的时候应该是先对进行设置,之后再启动CAP。具体程序请看以下分析过程。void 1Gpi( GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0上拉GpioCtrlRegs.GPAPUD.bit.GPIO1=0; //使能GPIO1上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0=1; GpioCtrlRegs.GPAMUX1.bit.GPIO1=1; }void{PIEPieCtrlRegs.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.all0;清除所有PIE中断标志位PieCtrlRegs.PIEIFR1.all=0;PieCtrlRegs.PIEIFR2.all=0;PieCtrlRegs.PIEIFR3all=0;PieCtrlRegsPIEFR4.all=0;PieCtrlRegsPIEIFR5.all=0;PieCtlRegsPIEIFR6.all=0;PieCrlRegs.PIEIFR7.all=0;PieCtrlRegs.PIEIFR8.all=PieCtrlRegs.PIEIFR9.all=PieCtrlRegs.PIEIFR10.all=PieCtrlRegs.PIEIFR11.all=PieCtrlRegs.PIEIFR12.all=}{int16Uint32*Source=(void*)&PieVectTableInit;//中断服务函数地Uint32*Dest(void*) for(i=0;i<128;*Dest++= 把中 地址送给中断向量表,达到关联的目//EnablethePIEVectorTablePieCtrlRegs.PIECTRL.bit.ENPIE1;PIE}eCAP初始化设置,首先CAPvoid{ //使能系统时钟为CAP2提供基 CAP }void{选择设置GPIO24为CAP1,当然用户可以选择其他GPIO,前提是所选的GPIO具有CAP功能即GpioCtrlRegs.GPAPUD.bit.GPIO24=0; //使能GPIO24(CAP1)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO24=0;//使GPIO24(CAP1)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO24=1; //配置GPIO24作为CAP1}#ifvoid{GpioCtrlRegs.GPAPUD.bit.GPIO25=0; //使能GPIO25(CAP2)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO250;GPIO25(CAP2)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1; }void{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; //一级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST2=EC_ABS_MODE; //二级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST3=EC_ABS_MODE; //三级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CTRRST4=EC_AB_MODE; //四级事件捕捉后不清零计数器ECap1Regs.ECCTL1.bit.CAPLDEN=EC_ENABLE; //使能事件捕捉时捕捉寄存器装载计数器值ECap1Regs.ECCTL1.bitPRESCALE=EC_DIV1; //对外部信号不分频ECap1Regs.ECCTL2bit.CAP_A =EC_CAP_MODE; //捕捉模式ECap1RegsECCTL2bit.CONT_ONESHT=EC_CONTINUOUS; //连续模式ECap1RgsECCTL2.bit.SYNCO_SEL=EC_SYNCO_DIS;ECapRegs.ECCTL2.bit.SYNCI_EN= //清除所有中断标志位ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动CAP计数器 捉时进入中}void{ECap2Regs.ECCTL1.bit.CAP1POL=EC_FALLING;//一级事件捕捉下降沿ECap2Regs.ECCTL1.bit.CAP2POL=EC_FALLING;//二级事件捕捉下降沿ECap2Regs.ECCTL1.bit.CAP3POLEC_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; ECap2Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动开中断 }void { 1Gp //初始化1引 //初始化2引 //将时基的状态寄存器清零 //相位寄存器设置为0 //时基计数器清零 //CMPA和CMPB配置为立即模式E1Regs.CMPA.half.CMPA=SP/2; //设置占空比为0.5,SP是周期寄存器的值E //ExA=1whenCTR=CMPAandcounter// xA=0whenCTR=CMPAandcounterEE //E1B与E1A相关联,即E1B随 //上升沿的死区时间设置为0 //下降沿的死区时间设置为0E EE1Regs.ETSEL.all=0;//中断触发事件的产生E 增减模E }5、实验思考: UART串口实1、实验目的:2、实验设(2)XDS510仿真器一套;3、实验步骤:PC板的JATG针处;2-10-12-10-32-10-5将 中 4、实验原理及程序说明:本程序针对SCIC。其原理框图如下图2-10-7:

SCITXD、SCISCIRXD。波特率可编程:有64K种设置BRR=0时:波特率=LSPCLK÷16通过程序对SCI进行详细分析:void{GpioCtrlRegs.GPBPUD.bit.GPIO62=0;//使能GPIO62(SCIRXDC)上拉功能GpioCtrlRegs.GPBPUD.bit.GPIO63=0;//使能GPIO63(SCITXDC)上拉功能GpioCtrlRegs.GPBQSEL2.bit.GPIO62=3;GpioCtrlRegs.GPBQSEL2bit.GPIO63=GpioCtrlResGPBMUX2bit.GPIO62=1;//配置GPIO62为SCIRXDCGpioCtrlRegsGPBMUX2.bit.GPIO631;//配置GPIO63SCITXDC}void{ScicRegs.SCICCR.all=0x0007; //1位停止位,无奇偶校验位,8个数据位ScicRegs.SCICTL1.all=0x0003; //使能TX,RX,关闭睡眠模式,关闭接受纠错ScicRegs.SCICTL2.all=0x0003;ScicRegs.SCICTL2.bit.TXINTENA=ScicRegs.SCICTL2.bit.RXBKINTENA#if ScicRegs.SCIHBAUD ScicRegs.SCILBAUD#if(CPU_FRQ_100MHZ) //DSP工作在100MHz下ScicRegs.SCIHBAUD=0x0001; //9600baud@LSPCLK=20MHz.ScicRegs.SCILBAUD=0x0044;ScicRegs.SCICTL1.all //RelinquishSCIfrom}voidscic_xmit(int{while(ScicRegs.SCIFFTX.bit.TXFFST!= 查询是否发送完毕,如果未发送完,就在此等 }voidscic_msg(charvoidscic_msg(char*{inti;i=while(msg[i]!={}}此实验SCI实现msg="\r\n\n\noYanXu!\0"; //定义oYanXu!数组 //在PC上显示oYanXu!msgr\nYouwillenteracharacter,andtheDSPwillechoitback! 数 //PC上显Youwillenteracharacter,andthewillechoitfor(;;{msg="\r\nEnteracharacter:\0";while(ScicRegs.SCIFFRX.bit.RXFFST!=1){} //等待接受完毕,否则在此等待ReceivedChar=ScicRegs.SCIRXBUF.all; //将PC机发送来的数据存ReceivedChar中msg="Yousent:\0"; }5、实验思考:DA实1、实验目的:2实验设备(1)WindowsPC(2)XDS510仿真器一套;3、实验步骤:板的JATG针处;2-11-1将 在CCS菜单栏中点击project->Open…命令,加载 中CCSFile->LoadProgram…Debug在CCS菜单栏中点击Debug->Run,用户可以将示波器的地线接到开发板的地线端,另一端分别接到YX-F28335开发板上面J3的第1—4脚,用户可以依次在示波器上看到如下图4、实验原理及程序说明:

DA选取的是DAC7724,它是12位数模转换器,输出电压范围-10V到+10V、12位并行数据输入、4通道模拟信号输出。其典型电路接法如下图2-11-3所示:由电路图我们可以知道,DA有两条地址线,此两条地址线是用来确定输出口的。即:DAC7724的读写线直接与TMS320F28335的读写线相连,12根地址线也直接与2-11-4#define *(Uint16*)0x4100//A道输出口定#define *(Uint16*)0x4102//B道输出口定#define *(Uint16*)0x4104//C道输出口定#define *(Uint16*)0x4106//D道输出口定#dfine *(Uint16 if {CHA_DATA if(CHA_DATA {flagA }} {CHA_DATA if(CHA_DATA {flagA }} CHB_DATA CHB_DATA if(CHC_DATA CHC_DATA CHC_DATA CHD_DATA=2047*sin((float)(2*314*CHC_DATA/4000.0))+DA_CHA= DA_CHB= //DA_CHC= DA_CHD= DA_TRANS= DA_TRANS= 5、实验思片内AD实1、实验目的:2、实验设(2)XDS510仿真器一套;3、实验步骤:强烈建议先运行程序,然后用示波器或者万用表测量J3信号输出口,确定其电压输出范围在注意:此实验既可用于至尊底板又可用于实用底板,区别在于实用底板是没有DA的,故需要用信号发生器来产生信号,直接接在J426脚即可。图2-12- 发板的JATG针处;2-12-2将lab9-DA- 中 2-12-3图图2-12-3View->Graph->time/frequency设2-12-52-12-62-12-74、实验原理及程序说明:TMS320F28335片上有112A/D转换器,其前端为281多路切换器和2路ADC时采样/保持器,构成16个模拟输入通道,模拟通ADC多种A/D触发方式:启动、模块和外部中断2引脚;此实验主要是通过YX-F28335板上的DAC7724产生各种信号源,然后将这些信号送入AD模块进行模数转换。但此处一定要保证DAC产生的信号电压范围在0—3V之间,否则将会把AD模块烧毁。下面我们通过程序进行分析:SysCtrlRegs.HISPCP.allADC_MODCLK;//HSPCLK25MHz,ADCvoid{externvoidDSP28x_usDelay(Uint32Count);ADC_cal();//调用ADC_cal汇编程序,它是 编写的ADC例行,用户直接使用即AdcRegs.ADCTRL3.all= //给 //在ADC转换前要延时一}AdcRegs.ADCTRL1.bit.ACQ_PS=ADC_SHCLK; //顺序采样方式AdcRegs.ADCTRL3.bit.ADCCLKPS=ADC_CKPS; //ADC工作25M下,不再分频AdcRegs.ADCTRL.it.SEQ_ASC=1; //1通道模式AdcRegsADCTRL1.biCNT_RUN AdcRegs.ADCTRL1.bit.SEQ_OVRD AdRegsADCCHSELSEQ1.all A0AdcRegs.ADCMAXCONV.bit.MAX_CONV1=0x1;//最大通道数,由于我们只用到A0,所以其值为0,如果我们最大通道数是3,那么其值为2接下来就是DA产生信号,AD采样信号,再此需要注意的是一定要控制DA输出信号的电压范围(0—3V)(注意比较试验十一中DA各个信号和实验十二中DA各个信号的电压范围的While{array_index for(i=0;i<(BUF_SIZE);{DA_TRANS={CHA_DATA-=if(CHA_DATA=={flagA=}}{CHA_DATA+=if(CHA_DATA=={flagA=}}CHB_DATA=}}CHB_DATA=CHB_DATA=CHC_DATA=CHC_DATA+==511***(float)CHC_DATA/DA_CHADA_CHB//DA_CHCDA_CHD=DA_TRANS=while(AdcRegs.ADCST.bit.INT_SEQ1==0){}AdcRegs.ADCST.bit.INT_SEQ1_CLR SampleTable[array_index++]=((AdcRegs.ADCRESULT0)>>4);//将转换的结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论