11、系统时钟1)DSP时钟:30MHz,5倍频;2)高/低速外设时钟设置与使能第二讲内容回顾2、看门狗模块1)使能/屏蔽看门狗;2)复位看门狗(0x55+0xAA)4、通用I/O1)高达56个,与外设复用;2)可配置为输入或输出3、CPU通用定时器1)32+16位计数器;2)递减计数,产生周期性中断5、PIE中断1)12×8个中断源(INT1-INT12,INTx.1-INTx.8)2)中断向量表用来存在中断服务程序的地址2DSP原理及其应用技术3.1概述3.2片内存储器3.3外部扩展接口3.4与外部存储器的接口第三讲存储器及外部扩展接口33.1存储器概述程序存储器:ROM/PROMEPROMFLASHEEPROMDiskOnChip数据存储器:SRAMDRAMEEPROMDualPortRAMPC/104兼容的FlashDisk模块4F281X的存储器F2812提供了外部并行总线扩展接口,可提供1M字(三个外部扩展空间:两个512K,一个16K)的寻址空间,有利于开发较复杂的系统,如扩展FLASH、RAM、ADC、DAC、RTC、LCD、USB、LAN等。F281×采用增强的哈佛总线结构,能够并行访问程序和数据存储空间,如可以并行实现程序读、数据读、数据写这三个操作。片内集成了大量的SRAM、ROM、FLASH等存储器,采用统一编址方式,方便程序开发。CPU及内部总线程序读程序/数据空间的写操作共用数据总线DWDB,两个操作不能同时进行;从程序空间读(PAB、PRDB)从数据空间读(DRAB、DRDB)向数据空间写(DWAB、DWDB)这3个操作可以同时进行。数据写数据读CPU6FunctionalOverview片内存储器扩展接口①②③④0⑤⑥…7MemoryMap⑤⑥…⑤⑥…⑤⑥…①②③④0⑤⑥…/XZCS0AND1/XZCS2/XZCS6AND783.2片内存储器与寄存器FLASH具有如下特点:FLASH分成5/10个扇区,每个扇区可以单独擦除与编程;代码可安全保护(128位秘匙);片内存储器均采用32位数据总线;F2812采用32位格式访问存储器或外设时,分配的必须是偶地址。绝大部分指令是采用32位格式从程序存储空间读取的。各个数据存储器块M0(1k)、M1(1k)、L0(4k)、L1(4k)、H0(8k)均可以映射到程序和数据空间。可根据CPU频率调整等待状态;具有低功耗模式;流水线模式能够提高代码执行效率。9F281X的Flash地址表F2810F2812F2811128kW64kW10F2812的配置寄存器1/0-使能/关闭FLASH流水线模式D11..8--按页读取方式下的等待状态(0~15)D3..0--随机读取方式下的等待状态(1~15)11Flash初始化//下面的函数初始化Flash控制寄存器,DSP时钟频率150MHzvoidInitFlash(void){EALLOW;FlashRegs.FOPT.bit.ENPIPE=1;//使能Flash流水线模式以提高代码执行效率FlashRegs.FBANKWAIT.bit.RANDWAIT=5;//设置随机访问的等待状态数目FlashRegs.FBANKWAIT.bit.PAGEWAIT=5;//设置按页访问的等待状态数目EDIS;asm(“RPT#7||NOP”);//软件延迟,等待流水线刷新}提示:初始化Flash寄存器的代码必须从RAM中运行,从Flash中执行将导致不可预测的结果。12外设寄存器空间F281X和C281X器件包含三个外设寄存器空间。这些空间分为以下三组:1)PeripheralFrame0:直接映射到CPU的存储器总线,支持16位和32位数据访问。2)PeripheralFrame1:映射到32位的外设总线,必须采用32位读写方式(限对偶地址访问)。3)PeripheralFrame2:映射到16位的外设总线,仅支持16为访问。13外设寄存器帧016/32/*PeripheralFrame0:*/DEV_EMU:origin=0x000880,length=0x000180XINTF:origin=0x000B20,length=0x000020PIE_CTRL:origin=0x000CE0,length=0x000020PIE_VECT:origin=0x000D00,length=0x000100FLASH_REGS:origin=0x000A80,length=0x000060CSM:origin=0x000AE0,length=0x000010CPU_TIMER0:origin=0x000C00,length=0x000008CPU_TIMER1:origin=0x000C08,length=0x000008CPU_TIMER2:origin=0x000C10,length=0x000008F2812.cmd14外设寄存器帧132/*PeripheralFrame1:*/ECAN_A:origin=0x006000,length=0x000100ECAN_AMBOX:origin=0x006100,length=0x000100F2812.cmd15外设寄存器帧216/*PeripheralFrame2:*/SYSTEM:origin=0x007010,length=0x000020XINTRUPT:origin=0x007070,length=0x000010GPIOMUX:origin=0x0070C0,length=0x000020GPIODAT:origin=0x0070E0,length=0x000020EV_A:origin=0x007400,length=0x000040EV_B:origin=0x007500,length=0x000040MCBSP_A:origin=0x007800,length=0x000040SCI_A:origin=0x007050,length=0x000010SCI_B:origin=0x007750,length=0x000010SPI_A:origin=0x007040,length=0x000010ADC:origin=0x007100,length=0x000020F2812.cmd16存储器和寄存器的等待状态名称等待状态说明RAM块M0和M10无需设置等待状态外设帧PF00无需设置等待状态外设帧PF10(写操作)2(读操作)固定数目的等待周期外设帧PF20(写操作)2(读操作)固定数目的等待周期RAM块L0和L10无需设置等待状态Flash0-15(可编程)可通过Flash的等待状态寄存器编程SARAM块H00无需设置等待状态引导ROM1固定数目的等待周期XINTF1-54(可编程)可通过XINTF寄存器编程提示:Flash和XINTF的等待状态与DSP时钟频率有关。17外设寄存器的进一步说明C28×系列DSP中有些寄存器的内容是受保护的,其目的是为了避免用户程序错误地改变这些寄存器的值。当受保护后,允许CPU对该寄存器进行读操作,但任何写操作均被忽略。如果寄存器是EALLOW保护的,在对该寄存器进行写操作前必须首先执行EALLOW指令使能;而完成后执行EDIS指令则可以禁止写操作。183.3外部扩展接口F2812的外部接口(XINTF)采用非复用的扩展总线,与C240×的外部接口相似;F2812的XINTF映射到5个独立的存储空间。当访问相应的存储空间时,就会产生一个片选信号。每个空间都可以独立地设置访问建立、有效和跟踪时间,同时还可以通过XREADY信号来与外设的访问速度和时序匹配。8031单片机的外部总线?19外部接口框图16位19位XZCS7取决于MP/MP的状态XINTF20外部接口的时钟配置XINTF模块有两个时钟信号,下图给出了CPU时钟与XINTF时钟间的关系;所有外部扩展接口的建立、激活和跟踪时间均以时钟XTIMCLK为基准;所有外部接口的访问周期均在XCLKOUT的上升沿开始有效。21对XINTF空间的访问任何对XINTF空间的读/写时序都可以分为三个阶段:持续的XTIMCLK周期数(tc—XTIMCLK的周期;WS—XREADY引入的等待周期数)缺省值WS=0建立阶段:所访问空间的片选信号为低电平,产生有效的地址在AB上;跟踪阶段:读/写信号变为高后,保持片选信号为低电平的一段时间;有效阶段:读操作(/XRD=0)数据锁存到DSP;写(/XWE=0)操作数据至DB;缺省情况下,建立、有效、跟踪周期设置为最大值,见下表。22访问周期的计算(不使用XREADY信号)1~30~30~70~30~60~60~121~32~62~64~121~81~151~161~302SYSCLKOUT≤访问周期≤54SYSCLKOUT23XTIMCLK和XCLKOUT的波形Lead=2,Active=2,Trail=2XTIMCLK=SYSCLKOUT7724XTIMCLK和XCLKOUT的波形Lead=2,Active=2,Trail=2XTIMCLK=SYSCLKOUT/2141425XREADY信号XREADY信号?DSP通过检测XREADY信号,可以延长DSP访问外设的有效阶段;在对XREADY信号采样时刻,如果信号为低电平,则有效阶段将延长一个XTIMCLK周期,然后在下一个XTIMCLK的上升沿继续采样,直到检测到XREADY为高电平,完成正常的读/写周期;器件上所有外设空间共用一个XREADY信号,低电平有效;每个空间可以独立配置为检测或不检测XREADY信号;每个空间可以选择同步或异步检测(缺省方式)XREADY信号。同步检测:在设定的建立和有效周期结束之后,再对XREADY信号采样一个XTIMCLK周期。这样有效周期至少增加一个。异步检测:在设定的建立和有效周期结束之后,再对XREADY信号采样三个XTIMCLK周期。这样有效周期至少增加三个。26读周期波形(XTIMCLK=SYSCLKOUT)3XTIMCLK1XTIMCLK2异步检测2同步检测3/127写周期波形(XTIMCLK=SYSCLKOUT)1XTIMCLK3XTIMCLK同步检测异步检测223/128对XREADY信号的讨论1、什么情况下需要XREADY信号?2、是否有必要使用XREADY信号?讨论:通过软件可以设置的读写周期范围为:2~54个SYSCLKOUT。如果SYSCLKOUT=150MHz时,对应75MHz~2.78MHz。如果一个外设芯片的读写周期为500μs,是否需要使用XREADY信号?外设速度特别慢,依靠软件插入等待状态无法满足要求;一个XINTF区(ZONE)的外设较多,速度快慢差异较大。绝大多数情况下不必使用XREADY信号,直接将该引脚上拉至高电平;对于扩展外部设备较多,且访问速度相差较大的情况,可以将外设按快慢分组,分别配置到不同的XINTF空间。29XINTF的初始化voidInitXintf(void){//TimingforallzonesbasedonXTIMCLK=SYSCLKOUTXintfRegs.XINTCNF2.bit.XTIMCLK=0;//Zone0--设置写周期时序//缺省为使用XREADY信号,异步采样方式,ACTIVE必须大于或等于1。XintfRegs.XTIMING0.bit.XWRLEAD=1;XintfRegs.XTIMING0.bit.XWRACTIVE=3;XintfRegs.XTIMING0.bit.XWRTRAIL=1;XintfRegs.XTIMING0.bit.X2TIMING=0;//Zone0的Lead/Acitve/Trail时间不加倍//Zone2--设置读周期时序XintfRegs.XTIMING2.bit.USEREADY=0;//Zone2忽略XREADY信号,缺省为1XintfRegs