TMS320F28335中文资料(难得的资料)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

F2812与F28335的区别最大的区别就是28335是浮点的,而2812是定点的。F2812主要指标150MHz/EMIF/128KBFlash/36KBRAM/GPIO56路/McBSP/176-pinPackageF28335主要指标300MFLOPS/独立DMA/512KBFlash/68KBRAM/32-bitEMI/GPIO88路还有一点28335将2812的EV分解成了相互独立的epwm,ecap,eq三个模块互相之间互不干扰,因此可以比较方便地实现复杂的信号输出。尤其是epwm相对于EV中的pwm输出功能,有了很大的提高。F28335比F2812多了一个MAC单元,也就是速度增加了一倍。F28335是带浮点运算的,动态范围更大。F2833x的执行速度,比相同时钟频率的F28xx系列定点芯片,快50%。处理数学运算性能提升2.45倍,控制算法性能提升1.57倍,DSP性能提升1.38倍。总体性能提升近2倍。TMS320F28335的ADCTMS320F28335上有16通道、12位的模数转换器ADC。他可以被配置为两个独立的8通道输入模式,也可以通过配置AdcRegs.ADCTRL1.bit.SEQ_CASC=1,将其设置为一个16通道的级联输入模式。输入的方式可以通过配置AdcRegs.ADCTRL1.bit.ACQ_PS=1,将其设置为顺序采集。即从低通道开始到高通道结束。值得注意的是片上ADC的输入电压范围为0--3V,一旦超过3V,片上的ADC模块将会被烧掉。TI上的DATASHEET介绍其ADC的精度可达到12位,实际上达到不了。经测试,我们估计最好的时候可以达到11位就不错了。下面我们来简单介绍一下ADC模块的原理。其数字值由下面公司来计算,其中公式中的3为片内参考电压DigitalValue=4096*(InputAnalogVoltage-ADCLO)/3;(when0Vinput3V)。ADC可以分为SEQ1和SEQ2两个模块,其中SEQ1包括ADCIN00--ADCIN07;SEQ2包括ADCIN08--ADCIN15。SEQ1模块可以通过软件、PWM、外部中断引脚来启动,而SEQ2不可以通过外部中断引脚来启动。另外就是ADC可以与DMA进行数据交换。TMS320F28335的时钟介绍TMS320F28335上有一个基于PLL电路的片上时钟模块,为CPU及外设提供时钟有两种方式:一种是用外部的时钟源,将其连接到X1引脚上或者XCLKIN引脚上,X2接地;另一种是使用振荡器产生时钟,用30MHz的晶体和两个20PF的电容组成的电路分别连接到X1和X2引脚上,XCLKIN引脚接地。我们常用第二种来产生时钟。此时钟将通过一个内部PLL锁相环电路,进行倍频。由于F28335的最大工作频率是150M,所以倍频值最大是5。其中倍频值由PLLCR的低四位和PLLSTS的第7、8位来决定。其详细的倍频值可以参照TMS320F28335的Datasheet。下面是F28335的时钟设置:voidInitPll(Uint16val,Uint16divsel){//MakesurethePLLisnotrunninginlimpmodeif(SysCtrlRegs.PLLSTS.bit.MCLKSTS!=0){//Missingexternalclockhasbeendetected//Replacethislinewithacalltoanappropriate//SystemShutdown();function.asm(ESTOP0);}//DIVSELMUSTbe0beforePLLCRcanbechangedfrom//0x0000.Itissetto0byanexternalresetXRSn//Thisputsusin1/4if(SysCtrlRegs.PLLSTS.bit.DIVSEL!=0){EALLOW;SysCtrlRegs.PLLSTS.bit.DIVSEL=0;EDIS;}//ChangethePLLCRif(SysCtrlRegs.PLLCR.bit.DIV!=val){EALLOW;//BeforesettingPLLCRturnoffmissingclockdetectlogicSysCtrlRegs.PLLSTS.bit.MCLKOFF=1;SysCtrlRegs.PLLCR.bit.DIV=val;EDIS;//Optional:WaitforPLLtolock.//DuringthistimetheCPUwillswitchtoOSCCLK/2until//thePLLisstable.OncethePLLisstabletheCPUwill//switchtothenewPLLvalue.////Thistime-to-lockismonitoredbyaPLLlockcounter.////CodeisnotrequiredtositandwaitforthePLLtolock.//However,ifthecodedoesanythingthatistimingcritical,//andrequiresthecorrectclockbelocked,thenitisbestto//waituntilthisswitchinghascompleted.//WaitforthePLLlockbittobeset.//Thewatchdogshouldbedisabledbeforethisloop,orfedwithin//theloopviaServiceDog().//UncommenttodisablethewatchdogDisableDog();while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS!=1){//Uncommenttoservicethewatchdog//ServiceDog();}EALLOW;SysCtrlRegs.PLLSTS.bit.MCLKOFF=0;EDIS;}//Ifswitchingto1/2if((divsel==1)||(divsel==2)){EALLOW;SysCtrlRegs.PLLSTS.bit.DIVSEL=divsel;EDIS;}//Ifswitchingto1/1//*Firstgoto1/2andletthepowersettle//Thetimerequiredwilldependonthesystem,thisisonlyanexample//*Thenswitchto1/1if(divsel==3){EALLOW;SysCtrlRegs.PLLSTS.bit.DIVSEL=2;DELAY_US(50L);SysCtrlRegs.PLLSTS.bit.DIVSEL=3;EDIS;}}如果我们希望DSP工作在某一个频率下,我们就可以对Uint16val,Uint16divsel两个参数进行设定。TMS320F28335外部中断总结在这里我们要十分清楚DSP的中断系统。C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE通过12根线与28335核的12个中断线相连。而PIE的另外一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控制,即IER确定每个中断到底属于哪一组大中断(如IER|=M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需要再由PIEIER确定)。接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制12组的中断,PIE的所有中断寄存器控制每组内8个的中断。除此之外,我们用到哪一个外部中断,相应的还有外部中断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而PIE和CPU的中断标志寄存器由硬件来清零。EALLOW;//ThisisneededtowritetoEALLOWprotectedregistersPieVectTable.XINT2=&ISRExint;//告诉中断入口地址EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregistersPieCtrlRegs.PIECTRL.bit.ENPIE=1;//EnablethePIEblock使能PIEPieCtrlRegs.PIEIER1.bit.INTx5=1;//使能第一组中的中断5IER|=M_INT1;//EnableCPU第一组中断EINT;//EnableGlobalinterruptINTMERTM;//EnableGlobalrealtimeinterruptDBGM也就是说,12组中的每个中断都要完成上面的相同配置,剩下的才是去配置自己的中断。如我们提到的EXINT,即外面来个低电平我们就进入中断,完成我们的程序。在这里要介绍一下,DSP的GPIO口都可以配置为外部中断口,其配置方法如下:GpioCtrlRegs.GPBMUX2.bit.GPIO54=0;//选择他们是GPIO口GpioCtrlRegs.GPBMUX2.bit.GPIO55=0;GpioCtrlRegs.GPBMUX2.bit.GPIO56=0;GpioCtrlRegs.GPBMUX2.bit.GPIO57=0;GpioCtrlRegs.GPBDIR.bit.GPIO54=0;//选择他们都是输入口GpioCtrlRegs.GPBDIR.bit.GPIO55=0;GpioCtrlRegs.GPBDIR.bit.GPIO56=0;GpioCtrlRegs.GPBDIR.bit.GPIO57=0;GpioCtrlRegs.GPBQSEL2.bit.GPIO54=0;//GPIO时钟和系统时钟一样且支持GPIOGpioCtrlRegs.GPBQSEL2.bit.GPIO55=0;GpioCtrlRegs.GPBQSEL2.bit.GPIO56=0;GpioCtrlRegs.GPBQSEL2.bit.GPIO57=0;GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL=54;//中断3选择GPIOGpioIntRegs.GPIOXINT4SEL.bit.GPIOSEL=55;GpioIntRegs.GPIOXINT5SEL.bit.GPIOSEL=56;GpioIntRegs.GPIOXINT6SEL.bit.GPIOSEL=57;XIntruptRegs.XINT3CR.bit.POLARITY=0;//触发模式为下降沿触发XIntruptRegs.XINT4CR.bit.POLARITY=0;XIntruptRegs.XINT5CR.bit.POLARITY=0;XIntruptRegs.XINT6CR.bit.POLARITY=0;XIntruptRegs.XINT3CR.bit.ENABLE=1;//使能中断XIntruptRegs.XINT4CR.bit.ENABLE=1;XIntruptRegs.XINT5CR.bit.ENABLE=1;XIntruptRegs.XINT6CR.bit.ENABLE=1;注意一点就是外部中断1和2只能对GPIO0—GPIO31配置;外部中断3和4、5、6、7只对GPIO32—GPIO63配置。F28335的McBSPM

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功