13.1存储器3.2外部扩展接口3.3通用I/O端口第3章存储器与通用I/O口▲内部集成了大量的SRAM、ROM以及Flash等存储器,并且采用统一寻址方式(程序、数据和I/O统一寻址)——提高了存储空间的利用率,方便程序的开发。▲提供外部并行总线扩展接口——有利于开发大规模复杂系统▲片内存储器操作的优点:速度快、价格低、功耗小。▲外部存储器操作的优点:可以访问更大的地址空间。3.1存储器第3章存储器与通用I/O口TMS320F2812所有存储空间采用统一寻址:▲低64KB地址存储器——相当于F24x/F240x处理器的数据存储空间,高64KB地址存储器——相当于F24x/F240x处理器的程序存储空间,与F24x/F240x兼容的代码只能定位在高64KB地址的存储空间运行。▲XMP/MC模式为低时——顶部的32KBFlash和H0SARAM模块可以用来运行24x/240x兼容的代码;XMP/MC模式为高时——F2812的代码则从外部存储器接口的XINTFZone7空间开始执行3.1存储器第3章存储器与通用I/O口TMS320F2812存储器分布第3章存储器与通用I/O口▲片内双访问存储器(DARAM)——每个机器周期可被访问2次的存储器▲片内单访问程序/数据RAM(SARAM)√每个存储器块都可以被单独访问。√每个存储器块都可映像到程序空间或数据空间,用以存放指令代码或存储数据变量。√每个存储器块在读/写访问时都可以全速运行,即等待状态为零等待。▲掩膜型片内ROM存储器——出厂时已写好的存储器,用户只能读不能写▲闪速存储器(Flash)——电可擦除与编程的非易失性存储器▲一次性可编程存储器(OTP)——只能编程一次,而不能擦除3.1存储器存储器的类型第3章存储器与通用I/O口3.1存储器▲C28x具有32位的数据地址和22位的程序地址,总地址空间可达4G字(每个字16位)的数据空间和4M字的程序空间。▲C28x所有存储器块都统一映像到程序空间和数据空间。▲程序/数据存储器:C28x芯片具有片内单周期随机存储器SRAM、只读存储器ROM和Flash存储器。它们被映像到程序空间或数据空间,用以存放执行代码或存储数据变量。▲保留空间:数据区的某些地址被保留作为CPU的仿真寄存器使用。▲CPU的中断向量:在程序地址中保留了64个地址作为CPU的32个中断向量。通过STl的位VMAP可以将CPU向量映像到程序空间的顶部或底部。存储器映射分成三部分片上程序/数据存储器第3章存储器与通用I/O口F2812程序和数据空间映射程序00003FF4007FF3F0000高64KC2xLP兼容的程序空间RAMM0中的向量表(VMAP=0)BlockM01K×16BlockM11K×16Reserved存储器或外设Vector(VMAP=1)数据RAMM0中的向量表(VMAP=0)BlockM01K×16BlockM11K×16Reserved存储器或外设SP(Reset)8009FF1000A000FFFFFFFF低64KC2xLP兼容的程序空间片上程序/数据存储器第3章存储器与通用I/O口C28x包含两个单周期访问的存储器SARAM.3.1存储器▲存储器空间:√低64K×16位地址为000000h~00FFFFh,可等价于C24x/240x的数据空间;√高64K×l6位地址为3F0000h~3FFFFFh,可等价于C24x/240x的程序空间。▲片内SARAM:为单口随机读/写存储器,在单个机器周期内只能被访问一次。C28x片内共有18K×16位的SARAM,它们分别是:√MO和M1:每块的大小为1K×16位,其中,MO映像至地址000000h~0003Fh,M1映像至地址000400h-0007FFh;复位状态下,堆栈指针指向M1块的起始位置。所有M0和M1同时映射到程序和数据空间,因此它们既可存放执行程序也可存放数据变量√LO和L1:每块的大小为4K×16位,其中,LO映像至地址008000h~008FFFh,L1映像至地址009000h~009FFFh;√HO:大小为8K×16位,映像至地址3F8000h~3F9FFFh。片上程序/数据存储器第3章存储器与通用I/O口▲C28x包含128Kxl6位的Flash存储器2Kxl6位的OTP▲Flash存储器被分成4个8Kxl6位单元和6个16Kxl6位的单元,用户可以单独地擦除、编程和验证每个单元,而且并不会影响其他Flash单元。▲Flash/OTP存储器可以映射到程序存储空间,存放执行的程序;也可以映射到数据空间存储数据信息。3.1存储器片上Flash存储器和OTP存储器第3章存储器与通用I/O口F2812内部Flash存储器单元寻址表寻址空间程序和数据空间寻址空间程序和数据空间0x3D80000x3D9FFFSectorJ,8KXl60x3F00000x3F3FFFSectorC,16KX160x3DA0000x3DBFFFSectorI,8KX160x3F40000x3F5FFFSectorB,8KX160x3DC0000x3DFFFFSectorH,16KX160x3F6000SectorA,8KX160x3E00000x3E3FFFSectorG,16KX160x3F7F800x3F7FF5当使用代码安全模块时,编程到0x00000x3E40000x3E7FFFSectorF,16KX160x3F7PP60x3F7FF7Boot-to-Flash(或ROM)人口(这里存放程序调转指令)0x3E80000x3EBFFFSectorE,16KX160x3F7FF80x3F7FFF安全密码(128位),不要将全部编程为00x3EC0000x3EFFFFSectorD,16KX163.1存储器片上Flash存储器和OTP存储器第3章存储器与通用I/O口,3.2外部扩展接口XINTF▲采用异步非复用模式总线▲外部接口(XINTF)映射到5个独立的存储空间ZONE0/1/2/6/7▲当访问相应的存储空间时,就会产生一个片选信号;另外,有的存储空间公用一个片选信号。▲每个空间都可以独立地设置访问等待、选择、建立以及保持时间,同时还可以使用XREADY信号来控制外设的访问。▲外部接口的访问时钟频率由内部的XTIMCLK提供,XTIMCLK可以等于SYSCLKOUT或SYSCLKOUT/2。第3章存储器与通用I/O口,F2812外部接口框图第3章存储器与通用I/O口▲复位状态下,如果XMP/MC=1或0,XINTFZone7片选信号选择微处理器或微计算机操作模式。√微处理器模式——Zone7映射到高位置地址空间,中断向量表可以定位在外部存储空间。该模式下,BootROM将被屏蔽。√微计算机模式——Zone7被屏蔽且中断向量表从BootROM中获取。因此,用户可以选择从片上存储器或片外存储器启动。▲上电复位时,XMP/MC的状态存放在XINTCNF2寄存器的XMP/MC模式位。用户可以通过软件改变该位来控制BootROM和XINTFZone7的映射。▲其他存储器并不受XMP/MC的状态的影响。▲F2812的外部扩展接口并不支持I/O空间。3.2外部扩展接口XINTF第3章存储器与通用I/O口外部接口的访问3.2外部扩展接口XINTF▲空间0(Zone0)和空间1(Zonel)公用片选信号ZCS0ANDCS1;▲空间6(Zone6)和空间7(Zone7)公用片选信号XZCS6ANDCS7。▲各空间可以独立设置访问等待、选择、建立以及保持时间。▲所有空间共享19位的外部地址总线,处理器根据所访问的空间产生相应的地址。▲Zone2和Zone6:Zone2和Zone6共享外部地址总线√CPU访问Zone2和Zone6空间的第一个字时,地址总线产生0x00000地址;√CPU访问Zone2和Zone6空间的最后一个字时,地址总线产生0xFFFFF地址。√访问两者的唯一区别在于控制的片选信号不同,分别是XZCS2和XZCS6ANDCS7。故可以使用片选信号来区分对两个空间的访问,使用地址线控制具体访问的地址。第3章存储器与通用I/O口外部接口的访问3.2外部扩展接口XINTF▲Zone0和Zonel√两者公用一个外部片选信号,但是采用不同的内部地址。√Zone0的寻址范围是0x20000~0x3FFFF,Zonel的是0x40000~0x5FFFF。√如果希望区分两个空间,需要增加其他控制逻辑在访问Zone0时,XA[13]为高电平,XA[14]为低电平;在访问Zonel时,XA[l3]为低电平,XA[14]为高电平。√写操作紧跟读操作流水线保护会影响Zonel空间的访问,故Zonel空间适合用于扩展外设,而不适合用来扩展外部存储器。第3章存储器与通用I/O口▲Zone7:Zone7是独立的地址空间,复位时,XMP/MC引脚为高电平,Zone7空间映射到0x3FC000。复位后,通过改变寄存器XINTCNF2中的MP/MC控制位,使能或屏蔽Zone7空间。如果XMP/面引脚为低电平,则Zone7不能映射到0x3FC000存储空间,而片上的ROM将映射到该存储空间。Zone7的映射与MC/MC有关,而Zone0,Zonel,Zonc2,Zone6总是有效的存储空间,与XMP/MC状态无关。如果用户需要建立自己的引导程序,存放在外部空间,可以使用Zone7空间进行程序的引导。引导成功后,通过软件使能内部的ROM,以便可以访问存放在ROM中的数学表。BootROM映射到Zone7空间时,Zone7空间的存储器仍然可以访问。这是因为Zone7和Zone6空间公用一个片选信号XZCS6ANDCS7。访问外部Zone7空间的地址范围是0x7C000~0x7FFFF,Zone6也使用这个地址空间。Zone7空间的使用只影响Zone6的高16K地址空间,外部接口的访问3.2外部扩展接口XINTF第3章存储器与通用I/O口外部接口的配置3.2外部扩展接口XINTF▲外部存储器接口能够配置各种参数,以便能够与众多不同外部扩展设备无缝接口▲主要由F2812器件的工作频率以及XINTF的特性进行配置▲配置前后,XINTF可能会产生很大的变化,所以尽量不要将配置程序放在XINTF扩展的存储器空间执行第3章存储器与通用I/O口SYSCLKOUT和XINTF时钟之间的关系▲XINTF时钟——有两种时钟模块XTIMCLKXCLOCK√所有的外部扩展访问都是以内部XINTF的时钟XTIMCLK为参考,因此配置XINTF,首先要通过XINTFCNF2寄存器配置XTIMCLK。√XTIMCLK可以配置为SYSCLKOUT,也可以配置为SYSCLKOUT/2,XTIMCLK默认的值是SYSCLKOUT/2。√外接口提供一个时钟输出XCLOCK,所有外部接口的访问都是在XCLOCK的上升沿开始。可以通过XINTFCNF2寄存器的CLKMODE位配置XCLOCK的频率外部接口的配置3.2外部扩展接口XINTF第3章存储器与通用I/O口外部接口的配置3.2外部扩展接口XINTF▲写缓冲——默认情况下写缓冲被屏蔽,为提高XINTF的性能,要使能写缓冲模式。在不停止CPU的情况下,最多可允许3个数据通过缓冲方式向XINTF写数据。写缓冲器的深度可以在XINTFCNF2内配置。▲每个Zone访问的建立(Lead)、激活(Active)和跟踪(Trail)的时序√对XINTF空间的读或写操作的时序都可分为三个阶段:建立、激活和跟踪。√通过寄存器XTIMING可设置各阶段时等待的XTIMCLK周期数。√读写访问操作的时序可以独立进行配置。√为了能够与慢速外设接口,还可以使用X2TIMING位使访问特定空间的建立、激活和跟踪等待状态延长1倍。第3章存储器与通用I/O口▲为适合具体外设接口的访问,可配置空间的建立、激活和跟踪周期长度。在配置过程中,需考虑:√最小等待状态的需要;√XINTF的时序特性;√外部器件的时序特性;√C28x芯片和外设间的附加延时