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

下载本文档

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

文档简介

电气科技保留随时对其产品进行修改、改进和完善的权利,同时也保获取相关信息的版本,并验证这些信息是当前的和完整的。 电气科技第一章YXDSP-F28335A开发平台硬件测 第二章实验例程详 浮点运算实 LED跑马灯实 外部SRAM实 片外FLASH实 定时器实 外部中断实 实 CAP实 -CAP实 CAN实 RTL8019网口测 UART串口实 DA实 DA与AD联合实 外扩EEPROM实 RTC实时时钟测 LCD液晶实 USB实 AIC23实 第二章保修与服 第三章其他产 第一章YXDSP-F28335A开发平台硬件测试YXDSP-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针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS中点击Run- 运行程序利用CCS查看工具观察变量值,点击View->Expressions,然后在弹出Expressions窗口,输入变量y1和y2,即可查看y1、y2变量的值。此查看工具可以帮助用户在分析程序运行过程中,相关变量的变化情况。如下图2-3-2:\4、实验原理及程序说明:

TMS320F28335和其他的CPU一样,也是需要进行初始化,在此实验中,由于未用到DSP的其他外设,所以只需对TMS320F28335的时钟和看门狗进行初始化即可。TMS320F28335的时钟原理图如下图2-1-3所示:

图2-1-3TMS320F28335的时钟原理YX-F28335板上采用的是30MHz外部晶体给CPU提供时钟,并使能F28335片上PLL电路。PLL倍频系数由PLL控制寄存器PLLCR的低4位控制,可由软件进行动态修改。F28335的CPU最高可工作在150MHz主频下,即对30MHz输入频率进行5倍频。PLLCR控制位与倍频系数的关系如下图2-1-4所示:图2-1-4PLLCR控制位与倍频系数的关门狗的原理与使用,用户可以参考TMS320F28335Datasheet和其他相关资料。TMS320F28335是浮点型处理器,相比于其他的TMS320F28xx定点型处理器,F28335具有y1=y2=m1=m2=x1=x2=b1=b2=y1=m1*x1+b1; y2=m2*x2+b2;LED跑马灯实1、实验目的:2、实验设备:(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);4、实验原理及程序说明在YX-F28335开发板中,DSP的8个管脚通过74LVC245缓冲、限流电阻与8个发光二极管相连,其原理图如下图2-2-2所示,其中有D7和D8是CAP/QEP捕捉指示灯,所以此时只用控制D1—D6光盘附带的YX-F28335开发板的原理图以及TMS320F28335平的时候,LED熄灭。 2C22 2C23 2C24 2C25 2C26 2C27 2C28 2C29 需要注意的TMS320F28335IO管脚具有多功能复用GPAMUX寄存器的设置可这些IO口配置为输出口,详细原理请参照TMS320F28335的中的GPIO部分。void{GpioCtrlRegs.GPAMUX1.bit.GPIO0=GPIO0GPIO0GpioCtrlRegs.GPADIR.bit.GPIO0=GPIO0配置为输出GpioCtrlRegs.GPAMUX1.bit.GPIO1=GpioCtrlRegs.GPADIR.bit.GPIO1=GPIO1配置为输出GpioCtrlRegs.GPAMUX1.bit.GPIO2=GpioCtrlRegs.GPADIR.bit.GPIO2=GPIO2配置为输出GpioCtrlRegs.GPAMUX1.bit.GPIO3=GpioCtrlRegs.GPADIR.bit.GPIO3=GPIO3配置为输出GpioCtrlRegs.GPAMUX1.bit.GPIO4=GpioCtrlRegs.GPADIR.bit.GPIO4=GPIO4配置为输出GpioCtrlRegs.GPAMUX1.bit.GPIO5=GpioCtrlRegs.GPADIR.bit.GPIO5=GPIO5配置为输出}LED1LED1GPIO0LED2LED2GPIO1LED3LED3GPIO2LED4LED4GPIO3LED5LED5GPIO4LED6LED6GPIO5{ }外部SRAM实1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS中点击Run- 运行程序在CCS中点击Run->Resume,此时用户可以发现程序运行到第一个断点处,然后点击View->MemoryBrowser查看器,在地址栏输入中0X180000,memory各个地址的值变为0X5555,如下图2-3-3所示;2-3-30XAAAA,2-3-42-3-4址的值有改变了,如下图2-3-5所示;4、实验原理及程序说明:

2-3-52-3-6TMS320F28335DSP,哈佛结构是一种将程序指令和数据分开的存储器结构。哈佛结构是一种并行体系结构,其主要特点是将程序和数据在不同的空间中,即程序器和数据器是两个独立的器,每个器独立编址、独立。 ×16OTPROM和Zone7。Zone0区域:0X004000—0X004FFF,4K×16位可编程最少一个等待周期Zone6区域:0X100000—0X1FFFFF,1M×16位10ns最少一个等待周期Zone7区域:0X200000—0X2FFFFF,1M×16位70ns最少一个等待周2-3-7YX-F28335将512K×16位的SDRAM映射到Zone6的前半部分,实现此逻辑的方法是将地址线19取反后再与CS6相与送给SDRAM片选线DSP其他地址线和数据线直接和SDRAM的地址线和数据线相连、将DSPSDRAM的读写线相连即可。2-3-8SRAM{==========================================}定义一个SDRAM的起始地址,使得程序更直观易懂。如下所示: *ExRamStart=(Uint16*)0x180000for(i=0;i<0xFFFF;{*(ExRamStarti) //从0x180000起始地址开始写,一共写0xFFFF{ 环,说明SDRAM有问题}}for(i=0;i<0xFFFF;{*(ExRamStart+i)=0xAAAA; RAM0x55550xAAAA{ }}for(i=0;i<0xFFFF;{*(ExRamStart+i)=i; if(*(ExRamStarti)i)0x180000{ }片外FLASH实1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS中点击Run- 运行程序在CCS中用Run->Resume,此时用户可以发现程序运行到第一个断点处,然后点击view->memory,在地址栏输入0x100000,memory各个地址的值变为0xFFFF,即擦除FLASH内容,如下图2-4-3所示;2-4-3在CCSRun->Resume,此时程序运行到第二个断点,在地址栏输入0x180000,memory各个地址的值如下图2-4-4所示;2-4-4CCSRun->Resume,此时程序运行到第三个断点,在地址栏输入0x100000,给FLASH各单元;2-4-5memory2-4-6SDRAM2-4-6memory2-4-7FLASHSDRAM;4、实验原理及程序说明:

2-4-7YX-F28335将256K×16位的FLASH映射到Zone6的前半部分,实现此逻辑的方法是将地址线19和CS6相与后送给FLASHDSP其他地址线和数据线直接和FLASH的地址线和数据线相连、将DSP的读写线与FLASH的读写线相连即可。其接法和SDRAM类似,其原理图如下图2-4-8所示:Uint16{Uint16Data;/***********以下过程需要严格遵守*(FlashStart0x5555)0x1010;FLASH0x55550x1010i=0;TimeOut=0;{Data=*(FlashStart+0x3FFFF);if(Data==0xFFFF)elseif(++TimeOut>0x return(TimeOutErr);}{Data=*(FlashStart+i);if(Data!=0xFFFF)return(EraseErr);}return}以上部分检测FLASH是否擦除正确,正确的话返回EraseOK.;否则返回EraseErr,标明擦除失败。FLASH写操作程序如下:Uint16FlashWrite(Uint32RamStart,Uint32RomStart,Uint16//FLASH写函数里面有3个参数,分别是源地址、目的地址、所传地址长{Uint32i,TimeOut;Uint16Data1,Data2,j;{//*********以下3行过程需要严格遵守*(FlashStart+0x5555)=*(FlashStart+0x2AAA)=*(FlashStart+0x5555)=*(FlashStart+RomStart+i)=*(ExRamStart+RamStart+TimeOut=0;{Data1=*(FlashStart+RomStart+i);Data2=*(FlashStart+RomStart+i);if(Data1==Data2)elseif(++TimeOut>0x return(TimeOutErr);}}for{Data1=*(FlashStart+RomStart+i);Data2=*(ExRamStart+RamStartif(Data1!=Data2)return}return//以上部分同样是检测FLASH写入的数据和读出的数据是否一样,一样的话返回WriteOK,否则返回}FLASH的读操作比较简单,具体程序如下所示 FlashRead(Uint32RamStart,Uint32RomStart,Uint16{Uint32Uint16{Temp=*(FlashStart+RomStart*(ExRamStart+RamStart+i)=}}定时器实验1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS中点击Run- 运行程序在CCS中点击Run- ,此时用户可以发现程序运行到断点处在CCS中点击Run->Resume……,此时程序第二次运行到断点,然后查看4、实验原理及程序说明中断函数中来改变LED的状态,从而实现LED闪烁的效果。图2-5-3TMS320F28335定时器工每来一个时钟信号,预定标计数器PSCH:PSC1,直到减到0后,它将会重载 时将清除中断标志;TIE:定时器中断使能位,写1时使能中断,写0时不使能中断;FREE、SOFT:定时器仿真模式选择位:00;01;10;11个中断请求,所以TMS320F2833x系列DSP的中断要比其他处理器复杂。CPU2-5-42-5-5DSP1上外设事件。CPU没有足够的中断源来管理所有的片上外设中断请求,所以在F28x系列DSP中设置了一个外设中断扩展控制器(PIE)CPUINT1~INT12。每个中断源对应一个中断向量(对应的中断服务程序专门用作PIE的中断向量表,用于存放每个中断源所对应的中断服务程序(ISR)的地址。为什么是128个中断向量呢?在复位时,F2833x的PIE被,所以只有32个CPU中断,所以也只需32个中断向量,而当PIE被使能后,除了32CPU中断外,还有96PIE中断,所以需要3296128TMS320F2833xExternalInterface(XINTF)User’sGuideTMS320F2833502-5-6):定时器中断信号是经过PIE后,再作为C28x处理器的中断输入信号,并且定时器的时钟信号也是与处理器的时钟同步的。由上面的原理图可知,定时器0属于PIE中断,下面分析PIE模块的框架图(图2-5-7):那么定时器0中断到底属于PIE的哪一组中断呢?又属于这一组的第几个中断呢?带着这两个问题我们来看PIE中断向量表:大家请看下图2-5-8中红色框里面的TINT0就是0中断,用户请再看两个红勾,横向的INT1代表中断组,纵向的INTx.7是第一组中断的第

void {CpuTimer0.RegsAddr=&CpuTimer0Regs;//指向定时0的寄存器地址CpuTimer0Regs.PRD.all=0xFFFFFFFF;//设置定时器0的周期寄存器值CpuTimer0Regs.TPR.all=0; //设置预定标计数器值为0CpuTimer0Regs.TPRH.all=CpuTimer0Regs.TCR.bit.TSS=1; CpuTimer0Regs.TCR.bit.TRB=1; //重载使能CpuTimer0.InterruptCount=0; //中断计数清0}voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,float{Uint32temp;Timer->CPUFreqInMHz=Freq;Timer->PeriodInUSec=Period;temp(long)(Freq*Period);Timer->RegsAddr->PRD.all= //Freq*PeriodTimer->RegsAddr->TPR.all=Timer->RegsAddr->TPRH.all=//InitializetimercontrolTimer->RegsAddr->TCR.bit.TSS=1; //1为停止,0为启动Timer->RegsAddr->TCR.bit.TRB=1; //写1重载计数Timer->RegsAddr->TCR.bit.SOFT=0;Timer->RegsAddr->TCR.bit.FREE=Timer->RegsAddr->TCR.bit.TIE= 1Timer->InterruptCount= }△T=Freq*Period/ 时钟频率)针对此实验,Frep为150,Period为100000,那么△T=0.1s=100ms。void{ PieCtrlRegs.PIECTRL.bit.ENPIE= ================PieCtrlRegs.PIEIFR5.all=PieCtrlRegs.PIEIFR6.all=PieCtrlRegs.PIEIFR7.all=PieCtrlRegs.PIEIFR8.all=PieCtrlRegs.PIEIFR9.all=PieCtrlRegs.PIEIFR10.all=PieCtrlRegs.PIEIFR11.all=PieCtrlRegs.PIEIFR12.all=}voidInitPieVectTable(void){int16Uint32*Source=(void*)&PieVectTableInit;//中断服务函数地Uint32*Dest=(void*) for(i=0;i<128;*Dest++=*Source++; PieCtrlRegs.PIECTRL.bit.ENPIE= } //写保护PieVectTable.TINT0&ISRTimer0; IER|=M_INT1;PieCtrlRegs.PIEIER1.bit.INTx7=interruptvoid{PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; }外部中断实验1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS中点击Run- 运行程序,之后用户可以按下YX-4、实验原理及程序说明:DLOGINT12PIE)PIE12*8=96PIEPIEIER8的IFR是大中断的标志寄存器。下面来看详细的中断流程图(图2-6-2):钮来产生边沿信号,其原理图如下图2-6-3所示:K_INT0—K_INT3K_INT0—K_INT3GPIO57void{=通过前面的实验二,将GPIO54作为通用IO=通过前面的实验二,将GPIO55作为通用IO=通过前面的实验二,将GPIO56作为通用IO=通过前面的实验二,将GPIO57作为通用IO=通过前面的实验二,将GPIO54作为输入IO=通过前面的实验二,将GPIO55作为输入IO==通过前面的实验二,将GPIO56作为输入IO通过前面的实验二,将GPIO57作为输入IOGPIO54时钟和系统时钟一样且支持GPIO55时钟和系统时钟一样且支持GPIO56时钟和系统时钟一样且支持GPIO57时钟和系统时钟一样且支持说明: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; }操作,而在此实验中是对GPIO的置位寄存器和清零寄存器写入1来控制LED。这样控制的优点是GPIO外设响应的时间快,不用延时(用户可以对照前面实验的LED控制程序,通过数据寄存器来控制LEDGPIO响应不过来)。/*************GPIOx的置位寄存器为1表明为高,那么LED1就被点亮/*************GPIOx的清零寄存器为1表明为低,那么LED1就熄灭*****************/#defineLED1_ON #defineLED1_OFF#defineLED2_ON #defineLED2_OFFGpioDataRegs.GPACLEAR.bit.GPIO1=1#defineLED3_ON #defineLED3_OFFGpioDataRegs.GPACLEAR.bit.GPIO2=1#defineLED4_ON #defineLED4_OFFGpioDataRegs.GPACLEAR.bit.GPIO3=1#defineLED5_ON #defineLED5_OFFGpioDataRegs.GPACLEAR.bit.GPIO4=1#defineLED6_ON #defineLED6_OFFGpioDataRegs.GPACLEAR.bit.GPIO5=1实1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 在CCS中点击Run- 器上看见如下图2-7-2所示的,通过示波器查看 的频率应该是10KHz;图2-7-2波4、实验原理及程序说明:的控制方法:采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。控制技术就是以该结论为理论基础,对半导体开中又有6路可以配置为高分辨率的(HR)。在此主要分析12路增强型,其结构框图如下图2-7-3所示:图2-7-3结构框一共有6组 模块,每一组又有2路 A和B。下图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-5模块框TBCTR(计数器CMPCTL(比较控制寄存器):设置CMPA、CMPB的重载模式; CMPA(比较值寄存器A):设置ExA的比较值,有寄存器;CMPB(比较值寄存器B):设置ExB的比较值,有寄存器。比较模块CC原理如下图2-7-7所示:CBU为TBCTR(计数器)与CMPB在up计数时相等使输出为low或high作;CAD为TBCTR(计数器)与CMPA在down计数时相等使输出为low或high或反向或不动CAUTBCTR(计数器)CMPAuplowhigh作;PRDTBCTR(计数器)与TBPRD(周期寄存器)相等时使输出为lowhigh或反向或图2-7-9中断优先例如:当CMPA=100,CMPB=100,up计数,EA初始为低,CAU设置高,CBU设置低,CMPA=100CPB=1,其它不变,当TBCTR计到100时,EA输出高,计到110时EA输出低。 DB2-7-10第五个中断触发模 用于触发中断事件,其包括以下寄存器: 停止计数,当标志为清除时 置零重新计数;ET 1;ETCLR(中断标志清除寄存器):写1清除相应标志位;ETFRC(强制中断寄存器):写1强制相应中断发生。图2-7-11中断事件触发模块ET原理至于的详细工作原理需要用户参考其和相关实验自己学习和体会。以下来分析产生的程序编程过程,产生占空比为0.5,频率为10K的波的配置程序如下:先是输出引脚GPIO需要进行如下所示的配置:voidInitE GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0内部上拉GpioCtrlRegs.GPAPUD.bit.GPIO1=0; //使能GPIO1内部上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0=1; GpioCtrlRegs.GPAMUX1.bit.GPIO1=1; //将GPIO1配置为E }voidE{ //相位寄存器设置为0 //CMPA和CMPB配置为立即模式E1Regs.CMPA.half.CMPA=SP/2;//设置占空比为0.5,SP是周期寄存器的EE1Regs.AQCTLA.all=0x60;//ExA=1whenCTR=CMPAandcounterinc,E=0whenCTR=CMPAandcounterinc//E //E1B与E1A相关联,即E1B随//E1A的变化而变化,具体变化过程需要参照说明手册 //上升沿的死区时间设置为0 //下降沿的死区时间设置为0E1Regs.TZSEL.all=0;//行程区模块我们没有用到,把他的寄存器可以全部清零 E1Regs.ETSEL.all=0;//中断触发事件的产E1Regs.ET.all=0;EE1Regs.TBCTL.all=0x0010+TBCTLVAL;//增减模E1Regs.TBPRD=SP;//SP是时基周期寄存器的周期值,决定的频}注意:TMS320F150MHzDSP,方便的应用于电机控制,电力设备控制及工业解和应用模块还需要用户仔细分析理解,理解模块的工作原理。如需CAP实1、实验目的:2、实验设3、实验步板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 的地线接到开发板的地线端,另一端接到YX-F28335J723脚CCSRun->Resume……,打CCSView->Expressions,Expressions窗口4、实验原理及程序说明:

功能,主要应用在速度测量,脉冲序列周期测量等方面。其原理框图如下图2-9-3输入信号分频Modulo4Eachedge(4)32bit周期时非常有效,详细关于CAP的资料请参。来作为中断源送入PIE。停止eCAP计数;使能eCAP中断;中断执行控制部分。此实验利用CAP捕捉信号发生器产生,T1和T2、T3和T4所测值的公式为:T=TMS320F28335工作频率/所测信号频率;TMS320F28335工作频率为150MHz,信号发生器产生的频率为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=0; //使能GPIO25(CAP2)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO25=0;//使GPIO25(CAP2)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1; //配置GPIO25作为CAP2}#endif//endifvoid{//下面为寄存器赋值大部分采用了宏定义方式,具体参数值需要查看源程序的宏定义部//一级事件捕捉上升//二级事件捕捉上升//三级事件捕捉上升//四级事件捕捉上升//一级事件捕捉后不清零计数//二级事件捕捉后不清零计数//三级事件捕捉后不清零计数//四级事件捕捉后不清零计数ECap1Regs.ECCTL1.bit.CAPLDEN 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; //关闭所有CAP中 ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动CAP计数器}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; //关闭所有中 ECap2Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动开中断 }-CAP实1、实验目的:2、实验设3、实验步板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 4、实验原理及程序说明:此实验是将TMS320F28335产生10K的波,通过短接线,直接将此信号送给CAP输入引脚,由前面的实验九可知,T值应该为15000。那么程序在实现的时候应该是先对进行设置,之后再启动CAP。具体程序请看以下分析过程。voidInitE{GpioCtrlRegs.GPAPUD.bit.GPIO0=0; //使能GPIO0内部上拉GpioCtrlRegs.GPAPUD.bit.GPIO1=0; //使能GPIO1内部上拉GpioCtrlRegs.GPAMUX1.bit.GPIO0=1; //将GPIO0配置为E1A功能GpioCtrlRegs.GPAMUX1.bit.GPIO1=1; //将GPIO1配置为E1B功能}void{ =======PieCtrlRegs.PIEIER8.all=PieCtrlRegs.PIEIER9.all=PieCtrlRegs.PIEIER10.all=PieCtrlRegs.PIEIER11.all=PieCtrlRegs.PIEIER12.all=PieCtrlRegs.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=} //此函数初始化中断向量表,将中断服务函数与向量表关{int16Uint32*Source=(void*)&PieVectTableInit;//中断服务函数地Uint32*Dest=(void*)&PieVectTable; for(i=0;i<128;PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能PIE模块的总}void{ //使能系统时钟为CAP2提供基 //其他CAP模块未用到,所以}CAP的输入引脚设置如下void{//选择设置GPIO24为CAP1,当然用户可以选择其他GPIO,前提是所选的GPIO具有CAP功能即GpioCtrlRegs.GPAPUD.bit.GPIO24=0; //使能GPIO24(CAP1)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO240;GPIO24(CAP1)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO24=1;//配置GPIO24CAP1}#ifvoid{GpioCtrlRegs.GPAPUD.bit.GPIO25=0; //使能GPIO25(CAP2)上拉GpioCtrlRegs.GPAQSEL2.bit.GPIO250;//使GPIO25(CAP2)时钟与系统时钟输出同步GpioCtrlRegs.GPAMUX2.bit.GPIO25=1;//配置GPIO25CAP2}#endif//endifDSP28_ECAP2CAP工作模式的配置如下所示:voidSetCap1Mode(void){//下面为寄存器赋值大部分采用了宏定义方式,具体参数值需要查看源程序的宏定义部=一级事件捕捉=二级事件捕捉=三级事件捕捉=四级事件捕捉=一级事件捕捉后不清零计数=二级事件捕捉后不清零计数=三级事件捕捉后不清零计数=四级事件捕捉后不清零计数=使能事件捕捉时捕捉寄存器装载计数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; //清除所有中断标志位ECap1Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动CAP计数器 捉时进入中}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; ECap2Regs.ECCTL2.bit.TSCTRSTOP=EC_RUN; //启动开中断 }voidE{ E //将时基的状态寄存器清E //相位寄存器设置为0E//时基计数器清零 //CMPA和CMPB配置为立即模式E1Regs.CMPA.half.CMPA=SP/2; //设置占空比为0.5,SP是周期寄存器的值E // xA=1whenCTR=CMPAandcounter//ExA=0whenCTR=CMPAandcounterE1Regs.DBCTL.all=0xb;//E1B与E1A相关联,即E1B随 //上升沿的死区时间设置为0 //下降沿的死区时间设置为0E E1Regs.TZEE1Regs.ETSEL.all=0;//中断触发事件的产生E 增减模E //SP是时基周期寄存器的周期值,决 }CAN实1、实验目的:2、实验设(1)CCS6.0PC(2)XDS100v2仿真器一套;交叉型串口线将板子与PC机连接;板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 击Run->Resume,你将会发现值在变化。4、实验原理及程序说明:CAN是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。CAN总线通口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数可配置的接收和发送可编程的接收(4)支(5)数据长度0到8个字节32 YXDSP-F28335CAN2.0:eCANB,32本测试程序采用eCAN模块本身提供的SELF-TEST32个邮箱设置为16个发送模式,另外16个设置为接收模式,采用自发自收的方式,循环发送,可以通过将接收邮箱里的接收数据读出,来判断CAN是否正常。RTL8019网口测试1、实验目的:RTL80192、实验设CCS6.0PCXDS100v2YX-F28335开发板一套;3、实验步骤:交叉型串口线将板子与PC机连接;板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);IP:0:;2-11-2

UART串口实1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;交叉型串口线将板子与PC机连接;板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置);在CCS菜单栏中点击Run->Resume……,这时候用户可以查看上面建立好的超级终端界面,如下图2-12-3:4、实验原理及程序说明:本程序针对SCIC。其原理框图如下图2-12-7:

SCITXD、SCISCIRXD。波特率可编程:有64K种设置BRR=0时:波特率=LSPCLK÷16通过程序对SCI进行详细分析:void{GpioCtrlRegs.GPBPUD.bit.GPIO620;//使能GPIO62(SCIRXDC)内部上拉功能GpioCtrlRegs.GPBPUD.bit.GPIO630;//使能GPIO63(SCITXDC)内部上拉功能GpioCtrlRegs.GPBQSEL2.bit.GPIO62=3;GpioCtrlRegs.GPBQSEL2.bit.GPIO63=GpioCtrlRegs.GPBMUX2.bit.GPIO621;//配置GPIO62为SCIRXDCGpioCtrlRegs.GPBMUX2.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(CPU_FRQ_150MHZ) ScicRegs.SCIHBAUD=0x0001; //波特率设置为9600ScicRegs.SCILBAUD=0x00E7;#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(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"; }DA实1、实验目的:2、实验设(2)XDS100v2仿真器一套;(3)YX-F28335开发板一套;3、实验步骤:板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 在CCS菜单栏中点击Run->Resume……,用户可以将示波器的地线接到开发板的地线端,另一端分别接到YX-F28335开发板上面J3的第1—4脚,用户可以依次在示波器上看到如下图2-15-3:4、实验原理及程序说明:

2-15-3DA可以知道,DA有两条地址线,此两条地址线是用来确定输出口的。即:2-15-4通道选择DAC7724的读写线直接与TMS320F28335的读写线相连,12根地址线也直接与2-15-5DAC77242-15-6时序图#define *(Uint16*)0x4100//A#define*(Uint16#define*(Uint16#define*(Uint16D#define*(Uint16if {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*3.14*CHC_DATA/4000.0))+====DA_TRANS DA_TRANS //高电平,从而会出现一个上升DA与AD联合实1、实验目的:TMS320F28335AD2、实验设3、实验步J31(此步骤一定要正确,如果接入AD的电压超3V或者低0V,将会导致0-3V,如果不是,请不要直接连接到AD);(接法如下图2-16-1)2-16-2DA-AD板的JATG针处(注意仿真器插入方向,请仔细核对防差错针的位置); 2-16-5波形查看窗口参数设置2-16-6波形查看窗口 的波形如下图2-16-7所示:按照相同的方法的波形如下图2-16-8所示:将短接线将J5的26脚与J3的4脚连接起来,点击RUN运行程序,然后点击暂 的波形如下图2-16-9所示:4、实验原理及程序说明:

TMS320F28335片上有112A/D转换器,其前端为281多路切换器和2路时采样/保持器,构成16个模拟输入通道,模拟通道的切换由硬件自动控制,并将各模拟通道的转换结果顺序存入16个结果寄存器中。如下图2-16-10: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汇编程序,它是TI编写的ADC例行,用户直接使用即AdcRegs.ADCTRL3.all ADC //在ADC转换前要延时一}ADC工作方式设AdcRegs.ADCTRL1.bit.ACQ_PS=ADC_SHCLK; //顺序采样方式AdcRegs.ADCTRL3.bit.ADCCLKPS=ADC_CKPS; //ADC工作25M下,不再分频AdcRegs.ADCTRL1.bit.SEQ_CASC=1; //1通道模式AdcRegs.ADCTRL1.bit.CONT_RUN AdcRegs.ADCTRL1.bit.SEQ_OVRD AdcRegs.ADCCHSELSEQ1.all A0AdcRegs.ADCMAXCONV.bit.MAX_CONV1= //最 其值为0,如果我们最大通道数是3,那么其值为接下来就是DA产生信号,AD采样信号,再此需要注意的是一定要控制DA输出信号的电压范围(0—3V)(注意比较试验十一中DA各个信号和实验十二中DA各个信号的电压范围的While{array_index for(i=0;i<(BUF_SIZE);{下面红色的代码表示是DAC产生的波形信DA_TRANS={CHA_DATA-=if(CHA_DATA=={flagA=}}{CHA_DATA+=if(CHA_DATA=={flagA=}}CHB_DATA=CHB_DATA=i

温馨提示

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

评论

0/150

提交评论