第二章TMS320F281xDSP控制器的总体结构_第1页
第二章TMS320F281xDSP控制器的总体结构_第2页
第二章TMS320F281xDSP控制器的总体结构_第3页
第二章TMS320F281xDSP控制器的总体结构_第4页
第二章TMS320F281xDSP控制器的总体结构_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第二章

F281xDSP控制器的结构、性能、资源◆本章主要内容:

2.1DSP的性能指标

2.2DSP芯片引脚及其功能

2.3DSP片内硬件资源2.4DSP片内FLASH和OTP存储器2.5时钟与系统控制

2.632位CPU定时器

2.7通用输入/输出GPIO2.8外设中断扩展PIE2.9中央处理器单元2.1TMS320F2812的性能指标◆

F2812的主要特点:

采用高性能的静态CMOS技术,时钟频率可达150MHz;核心电压:1.8V;I/O口电压和Flash编程电压:3.3V

32位CPU,可实现16×16位和32×32位乘法操作,哈佛总线结构,寻址程序空间可达4MB,寻址数据空间可达4GB

可向下兼容TMS320F24X/LF240X代码

采用PLL来控制系统各模块所需频率■

3个32位的CPU定时器和适合电机控制的事件管理模块EVA和EVB■

很强的外围通信功能,包括同步串行口SPI,通用异步串行口SCI,增强的eCAN和多通道缓存串行口MCBSP■16个通道、12位精度的A/D转换器■

56个多路通用输入/输出(GPIO)引脚等等2.1TMS320F2812的性能指标特征F2810F2812指令周期(150MHz)6.67ns6.67nsSRAM(16位/字)18K18K3.3V片内Flash(16位/字)64K128K片内Flash/SRAM的密钥有有BootROM有有掩膜ROM有有外部存储器接口无有事件管理器A和B(EVA和EVB)EVA、EVBEVA、EVB*通用定时器44*比较寄存器/脉宽调制1616*捕获/正交解码脉冲电路6/26/2看门狗定时器有有12位的ADC有有*通道数1616F2810和F2812的硬件特征(1)F2810和F2812的硬件特征(2)特征F2810F281232位的CPU定时器33串行外围接口有有串行通信接口(SCI)A和BSCIA、SCIBSCIA、SCIB控制器局域网络有有多通道缓冲串行接口有有数字输入/输出引脚(共享)有有外部中断源33供电电压核心电压1.8VI/O电压3.3V核心电压1.8VI/O电压3.3V封装128针PBK179针GHH,176针PGF温度选择:A:-40℃~+85℃ S:-40℃~+125℃PBK仅适用于TMSPGF和GHH仅适用于TMS

2.2TMS320F281x芯片引脚及其功能了解引脚信号名称、功能、特性、状态

图1TMS320F2812的顶视图F2812-176引脚封装底视图◆F281x的引脚:

GPIO(GeneralPurposeInput/Outputpin):56个,既可作为一般的数字I/O口,又可作为外设功能引脚,如PWM、eCAN等外部存储器接口XINTF:45个电源和地:38个A/D转换相关:23个

JTAG接口有关:7个

所有数字输入引脚的电平均与TTL兼容,输出引脚均为3.3VCMOS电平,输入不能承受5V电压

上拉电流/下拉电流均为100μA(20μA)

所有引脚的输出缓冲器驱动能力(有输出功能的)典型值是4mA2.3DSP片内硬件资源TMS320F281x主要由C28x核的CPU(C28xCPU)、系统时钟控制模块(系统控制部分)、事件和外设管理模块(EVA、EVB和外设中断控制等),片内存储模块(FLASH、ROM、RAM等)、CPU定时器模块(CPU定时器)、12位A/D转换模块(12bitADC)、扩展接口模块(扩展接口)、以及内部总线等构成。图2F281x片内外设连接框图外部扩展总线和内部总线

扩展接口:A18-A0和D15-D0是表示2812外部扩存储器的能力,2812外扩的存储空间最大是219*16bit(512K)。F281x的内部存储器空间被分成了2块,一块是程序空间,一块是数据空间,对它们的访问通过地址总线和数据总线进行。281x的存储器接口具有3条地址总线和3条数据总线。PAB(ProgramAddressBus):32位程序地址总线,用于传送程序空间的读写地址。DRAB(Data-ReadAddressBus):32位数据读地址总线,用于传送数据空间的读地址。DWAB(Data-WriteAddressBus):32位数据写地址总线,用于传送数据空间写地址。PRDW(Program-ReadDataBus):32位程序读数据总线,用于传送读取程序空间时的指令或者数据。DRDB(Data-ReadDataBus):32位数据读数据总线,用来读取数据空间的数据。DWDB(Data/Program-WriteDataBus):32位数据/程序写数据总线,向数据空间/程序空间写相应的数据。TMS320F2812存储空间的映射◆SARAM均可映射到程序存储空间和数据存储空间,L0和L1受片上FLASH中的密码保护◆FLASH和一次可编程EPROM(OTP)也受FLASH的密码保护128K×16位FLASH18K×16位RAM:分成M0、M1、L0、L1和H0这5个块4K×16位BootROM1K×16位OTPROM

BootROM出厂时固化了BootLoader软件,根据引导信号确定上电引导装载方式,可从Flash引导装载程序,也可从外部存储器引导程序包括一些标准的数学运算表2.4DSP片内FLASH和OTP存储器

片内Flash存储器的特点可映射到程序空间或数据空间程序可分成多段,代码安全保护低功耗模式可根据CPU频率调整等待周期流水线模式可提高线性代码执行效率Flash和OTP存储器功耗模式睡眠(sleep)模式或复位模式:功耗最低备用(standby)模式:在该状态或睡眠模式下进行CPU读或取操作,将自动使DSP工作模式变为活跃模式活跃(active)模式或读模式:功耗最高CPU对Flash/OTP的操作,形式32位取址16或32位数据空间读取16位程序空间读Flash处于活跃状态时,存储器的读/写处理有3中类型Flash存储器随机存取Flash存储器页面存取OTP操作片内Flash和OTP存储器的配置寄存器名称地址功能描述FOPT0x00000A80Flash选择寄存器Reserved0x00000A81保留FPWR0x00000A82Flash电源方式寄存器FSTATUS0x00000A83状态寄存器FSTDBYWAIT0x00000A84Flash睡眠到待机等待寄存器FACTIVEWAIT0x00000A85Flash待机到活动等待寄存器FBANKWAIT0x00000A86Flash读访问等待状态寄存器FOTPWAIT0x00000A87OTP读访问等待状态寄存器Flash和OTP存储器的工作状态通过配置寄存器进行设置注意:

执行Flash寄存器配置任务的代码不能放在Flash或OTP存储器中执行,而应放在其他的RAM存储器空间中。而且当Flash或OTP存储器中正在运行程序时,也不要对Flash或OTP寄存器进行操作,程序结束后才可以进行操作。在Flash/OTP中运行的代码可以读Flash寄存器中的内容,但不要将内容写进去,要避免时序上的混乱。主要内容:锁相环PLL振荡器OSC

时钟

1、2、看门狗WD

给DSP做“身体检查”维持其正常工作的。

3、相关控制寄存器的设置2.5F281x的时钟及系统控制1、振荡器OSC和PLL模块F2812内的振荡器和PLL模块PLL模式说明SYSCLKOUTPLL禁止复位时如果XPLLDIS引脚是低电平,则PLL完全被禁止。处理器直接使用引脚X1/XCLKIN输入的时钟信号。XCLKINPLL旁路上电时的默认配置,如果PLL没有被禁止,则PLL将变成旁路,在X1/XCLKIN引脚输入的时钟经过2分频后提供给CPU。XCLKIN/2PLL使能使能PLL,在PLLCR寄存器中写入一个非零值n(XCLKIN×n)/2PLL配置模式F2812内部各种信号产生情况SYSOUTCLK组:CPU定时器和eCAN总线OSCCLK:看门狗电路低速组:SCI、SPI、McBSP高速组:EVA、EVB、ADC片上外设按输入时钟划分SYSCR:系统控制寄存器PLLCR:PLL控制寄存器HISPCP:高速片上外设分频器LOSPCP:低速片上外设分频器与PLL、时钟配置相关的寄存器DIV=000:旁路方式DIV=0001B~1010B,对应表中n=1~10DIV=1011B~1111B,保留15 43 0ReservedDIVR-0R/W-0PLL控制寄存器(PLLCR)高速外设时钟寄存器(HISPCP)15 32 0ReservedHSPVALR-0R/W-001如果HISPCP不等于0,HSPCLK=SYSCLKOUT/(HISPCPx2)如果HISPCP等于0,HSPCLK=SYSCLKOUT低速外设时钟寄存器(LOSPCP)15 32 0ReservedLSPVALR-0R/W-001如果LOSPCP不等于0,LSPCLK=SYSCLKOUT/(LOSPCPx2)如果LOSPCP等于0,LSPCLK=SYSCLKOUT2、看门狗模块看门狗加法计数寄存器WDCNTR:当计数到最大值时,产生一个输出脉冲。看门狗复位控制寄存器WDKEY:写入0x55+0xAA,会使WDCNTR清零,其它值使看门狗复位。防止WDCNTR溢出:(1)禁止看门狗;(2)向复位控制寄存器周期性写入0x55+0xAA,使WDCNTR清零。2.6CPU定时器1、什么是定时器?(计时工具)

F2812内部有3个32位的CPU定时器:Time0、

Time1、Time2(系统保留)2、CPU定时器内部结构定时器的工作示意图TIMCLK值如何确定?1)给PRDH:PRD赋值2)装载TIMH:TIM3)每隔一个TIMCLK计数器的值减少1,一直减到0完成一个周期的计数。1)给TDDRH:TDDR赋值2)装载PSCH:PSC3)每隔一个SYSCLKOUT

PSCH:PSC值减少1,直到为0,就会输出一个TIMCLK。计数器每走一步所需要的时间:CPU一个周期所计量的时间为:其中:X为系统时钟SYSCLKOUT的值(MHz)。3、定时器寄存器(书本)2.7通用输入/输出I/O口(GPIO)

GPIO:通用输入输出(56个);

GPIO引脚是多功能复用的,即可作为数字I/O口,也可作为特殊功能接口(如SCI、SPI)。

GPIO分A、B、D、E、F、G六组,通过GPxMux、GPxDIR、GPxQUAL寄存器进行控制。

如果GPIO配置为数字I/O,则可通过GPxDAT、

GPxSET、GPxCLEAR、GPxTOGGLE寄存器对其引脚进行操作。GPxDAT:GPIOx数据寄存器GPxSET:GPIOx置位寄存器GPxCLEAR:GPIOx清楚寄存器GPxTOGGLE:GPIOx取反寄存器GPxMux:GPIOx功能控制选择寄存器GPxDIR:GPIOx方向控制寄存器GPxQUAL:GPIOx输入限定寄存器控制数字x:A\B\D\E\F\GGPxMux:GPIOx功能选择控制寄存器每各I/O口都有一个对应的功能选择寄存器位,控制该口位特殊功能口或通用数字I/O口;如:GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=0;//设置GPIOA0口为数字I/O口GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=1;//设置GPIOA0口为特殊功能口(PWM1输出口)GPxDIR:GPIOx方向控制寄存器每各I/O口都有一个对应的方向控制寄存器位,控制该口输入输出方向;如:GpioMuxRegs.GPADIR.bit.GPIOA0=0;//设置GPIOA0口为数字输入口GpioMuxRegs.GPADIR.bit.GPIOA0=1;//设置GPIOA0口为数字输出口GPxQUAL:GPIOx输入限制寄存器控制GPIO引脚输入信号的采样周期,目的是消除输入信号的噪声。如:GpioMuxRegs.GPAQUAL.BIT.QUALPRD=5;//设置GPIOA组全部引脚输入信号采用周期为5GPxDAT:GPIOx数据寄存器每各I/O口都有一个对应的数据寄存器位,控制该口状态;如:GpioDataRegs.GPADAT.bit.GPIOA0=0;//设置GPIOA0口为低电平GpioDataRegs.GPADAT.bit.GPIOA0=1;//设置GPIOA0口为高电平GPxSET:GPIOx置位寄存器每各I/O口都有一个对应的置位寄存器位,控制该口状态;GpioDataRegs.GPASET.bit.GPIOA0=0;//没影响GpioDataRegs.GPASET.bit.GPIOA0=1;//将A0引脚置位高电平GPxCLEAR:GPIOx清除寄存器每各I/O口都有一个对应的清除寄存器位,将该口清楚位低电平;GpioDataRegs.GPACLEAR.bit.GPIOA0=0;//没影响GpioDataRegs.GPACLEAR.bit.GPIOA0=1;//将A0引脚置位低电平GPxTOGGLE:GPIOx取反寄存器每各I/O口都有一个对应的取反·寄存器位,将该口电平取反;GpioDataRegs.GPATOGGLE.bit.GPIOA0=0;//没影响GpioDataRegs.GPATOGGLE.bit.GPIOA0=1;//将A0引脚置电平取反2.8F281x外设中断扩展模块1、什么是中断?中断(Interrupt)是硬件和软件驱动事件,它使得CPU暂停当前的主程序,并转而去执行一个中断服务程序。写代码电话铃声响接电话接完电话继续写代码执行主程序有一个中断请求暂停主程序,执行中断服务子程序返回主程序继续执行

PIE可以支持96个不同的中断,这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到CPU内核的12条中断线中的某一条上(INT1-INT12),我们平时用到的所有的外设中断都被归入了这96个中断中,被分布在不同的组里,使用多路复用的原理。PIE目前只使用了96个中断中的45个,其他的等待将来的功能扩展。

F2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。就像一个文件需要三级领导批示一样,任意一级领导的不同意,都不能被送至上一级领导,更不可能得到最终的批准,中断机制的原理也是如此。F2812的中断工作过程(1)外设级中断假如在程序的执行过程中,某一个外设产生了一个中断事件,那么在这个外设的某个寄存器中与该中断事件相关的中断标志位(IF=InterruptFlag)被置为1。此时,如果该中断相应的中断使能位(IE=InterruptFlag)已经被置位,也就是为1,外设就会向PIE控制器发出一个中断请求。相反的,如果虽然中断事件产生了,相应的中断标志位也被置1了,但是该中断没有被使能(相应的使能位为0),那么外设就不会向PIE发出中断请求,但是相应的中断标志位会一直保持置位状态,直到用程序清楚它为止。当然,在中断标志位保持在1的时候,一旦该中断被使能了,那么外设立马会向PIE发出中断申请。以T1PINT为例:当定时器T1的计寄存器T1CNT计数到和T1周期寄存器T1PINT的值匹配时(相等时),就产生了一个T1PINT事件,即T1的周期中断。这时候,事件管理器EVA的中断标志寄存器A(EVAIFRA)中的第7位T1PINTFLAG被置为1,这时候如果EVA的中断屏蔽寄存器A(EVAIMRA)中的第7位T1PINT的使能位是1,则EVA就会向PIE发出中断请求,当然,如果该位的值是0,也就是该中断未被使能(被屏蔽),则EVA不会向PIE发出中断请求,而且EVAIFRA中T1PINTFLAG位将一直保持为1,除非通过程序将其清除。需要注意的是,不管在什么情况下,外设寄存器中的中断标志位都必须手工清除。清除T1PINT标志位的语句EvaRegs.EVAIFRA.bit.T1PINT=1;(1)外设级中断举例:(2)PIE级中断当外设把中断请求提交给PIE模块。PIE控制器中的每组都有一个中断标志寄存器PIEIFRx和中断使能寄存器PIEIERx。每个寄存器的低8位对应于8个外设中断,高8位保留。例如T1PINT对应于PIEIFR2的第4位和PIEIER2的第4位。因为PIE模块是多路复用的,那么每一组同一时间应该只能是一个中断被响应,PIE是怎么做到的呢?PIE除了每组具有刚才的PIEIERx,PIEIFRx寄存器之外,还有一个PIEACK寄存器,它的低12位分别对应着12个组,即INT1-INT12,高位保留。假如T1的周期中断被响应了,则PIEACK寄存器的第2位(对应于INT2)就会被置位,并且一直保持直到手动清除这个标志位。当CPU在响应T1PNT的时候,PIEACK的第2位一直是1,这时候如果PIE2组内发生其他的外设中断,则暂时不会被PIE响应送给CPU,必须等到PIEACK的第2位被复位之后,如果该中断请求还存在,那么立马由PIE控制块将中断请求送至CPU。所以,每个外设中断被响应之后,一定要对PIEACK的相关位进行手动服务,否则同组内的其他中断都不会被响应。清除PIE中与T1PINT相关的应答位的语句PieCtrl.PIEACK.bit.ACK2=1;

PIE中断需注意的问题将PIE级的中断和外设级的中断相比较之后发现,外设中断的中断标志位是需要手工清除的,而PIE级的中断标志位都是自动置位或者清除的。但是PIE多了一个PIEACK寄存器,相当于一个同行的关卡,同一时间只能放一个中断过去,只有等到这个中断被响应,给关卡一个放行命令之后,才能让同组的下一个中断过去,被CPU响应。(3)CPU级CPU也有中断标志寄存器IFR和使能寄存器IER。当某一个外设中断请求通过PIE发送到CPU时,与INTx相关的中断标志位就会被置位。例如,T1的周期中断T1PINT的请求到达CPU这边时,与其相关的INT2的标志位就会被置位,该标志位就会被锁存在IFR中,这时候,如果IER中的相关位被置位了,并且INTM的值为0,则中断就会被CPU响应。在T1PINT的例子里,当IER的第2位即INT2被置位,INTM为0,则CPU就会响应定时器T1的周期中断。CPU接到了中断的请求,就得暂停正在执行的程序,转而去响应中断程序,但是此时,它必须得做一些准备工作,以便于执行完中断程序之后回过头来还能找到原来的地方和原来的状态。CPU会将相应的IER和IFR位进行清除,EALLOW也被清除,INTM被置位,就是不能响应其他中断了,CPU向其他中断发出了通知,正在忙,没空来处理你们的请求了,得等到处理完手上的中断之后才能再来处理其他请求。然后,CPU会存储返回地址并自动保存相关的信息,例如将正在处理的数据放入堆栈等等,做好这些准备工作之后,CPU会从PIE块中取出对应的中断向量ISR,从而转去执行中断子程序。TI例程中与中断相关的几个文件DSP28_PieCtrl.h,这个文件定义了和PIE相关的寄存器的数据结构,我们对应于相关寄存器的定义会发现,两者是一样的。

DSP28_PieVect.h,这个头文件定义了PIE的中断向量。DSP28_PieCtrl.c文件里只有1个函数,InitPieCtrl(),其作用是对PIE模块进行初始化的,例如在程序开始

温馨提示

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

评论

0/150

提交评论