1.LPC2000系列简介2.引脚描述3.存储器寻址4.系统控制模块5.存储器加速模块(MAM)6.外部存储器控制器(EMC)7.引脚连接模块8.GPIOLPC2000系列ARM硬件结构9.向量中断控制器10.外部中断输入11.定时器0和定时器112.SPI接口13.I2C接口14.UART(0、1)15.A/D转换器16.看门狗17.脉宽调制器(PWM)18.实时时钟4.5存储器加速模块(MAM)•概述LPC2000微控制器扩展了器件内部Flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(MAM)来控制。•MAM内部结构LPC2200系列芯片把Flash存储器被分成两组,它们轮番工作,及时的为CPU提供需要的指令和数据,以防止CPU取指暂停。每组Flash存储器都有自己的预取指缓冲区、分支跟踪缓冲区和数据缓冲区。分支跟踪缓存分支跟踪缓存总线接口Flash存储器组0Flash存储器组1预取指缓存预取指缓存数据缓存区选择ARM7局部总线2×128位2×128位存储器地址存储器数据/指令Flash组2Flash组1CPU执行指令取指阶段等待指令提供指令1提供指令3......取指阶段提供指令4取指阶段等待3等待取指阶段提供指令2取指阶段等待124•关闭MAM指令执行情况从Flash组1中读取指令,CPU处于等待状态。1CPU从1组指令缓存区中获取指令并执行。2从Flash组2中读取指令,CPU处于等待状态。3CPU从2组指令缓存区中获取指令并执行。4所有存储器操作请求都会直接对Flash操作,由此产生了CPU停止,等待若干周期的情况。Flash组2Flash组1CPU执行指令•开启MAM指令执行情况...1413提供指令13141516取指阶段1211109取指阶段提供指令91011128765取指阶段提供指令56784321提供指令12345678取指阶段取指阶段等待指令......两组指令缓存区中不存在指令,启动Flash存储器指令读取周期,CPU停止,等待若干周期。1CPU执行Flash组1指令缓存区中的指令。2CPU执行Flash组2指令缓存区中的指令,同时从Flash组1中读取指令。3只要指令存在两个组的指令缓存区中,CPU的指令执行是连续的,由此大大提高了指令执行效率。4.5存储器加速模块(MAM)•程序顺序执行每个128位值包括了4个32位ARM指令或8个16位Thumb指令。在连续执行代码时,通常一个Flash组包含当前正在取指的指令和包含该指令的整个Flash行,而另一个Flash组则包含或正在预取指下一个连续的代码行。4.5存储器加速模块(MAM)•程序出现分支在预取指缓存区中保存着将要执行的指令,在分支跟踪缓存区中保存着程序跳转后可执行到的指令。CPU取跳转之后的指令跳转方向从Flash读取指令将指令行放入分支跟踪缓存区和预取指缓存区指令在预取指缓存区指令在分支跟踪缓存区读取指令读取指令向后向前否否是是4.5存储器加速模块(MAM)•程序获取数据当CPU在从Flash中获取数据时,如果这些数据没有出现在MAM的数据缓冲区中,那么MAM会执行一次Flash读操作,并把一个128位的数据行存入数据缓冲区,这样就加快了按顺序访问数据的速度。数据访问使用一个单行的缓冲区,和访问代码时提供两个缓冲区不同,因为数据访问不需要预取指功能。4.5存储器加速模块(MAM)•MAM与Flash编程Flash编程功能不受存储器加速器模块的控制,而是作为一个独立的功能进行处理。Flash存储器的布线使其每个扇区同时存在于两个组当中,这样扇区擦除操作可同时对两个组执行。4.5存储器加速模块(MAM)•MAM的操作模式LPC2000系列芯片允许用户设置MAM的加速级别,使芯片适用于某些对功耗和可预测性有要求的场合。MAM定义了三种操作模式:加速级别顺序执行程序分支数据功耗可预测性关闭不预取代码不缓冲代码不缓冲数据低高部分使能预取代码缓冲代码缓冲但时序固定中中完全使能预取代码缓冲代码缓冲数据高低4.5存储器加速模块(MAM)•MAM的配置在复位后,MAM默认为禁止状态。软件可以随时将存储器访问加速打开或关闭。通常我们都会把加速设置为完全使能,这可使程序以最高速度运行。而运行某些要求更精确定时的代码时,我们可以关闭或部分使能MAM,以较慢但可预测的速度运行代码。4.5存储器加速模块(MAM)•寄存器描述控制寄存器MAMCR——7:21:0模式控制控制寄存器MAMTIM——7:32:0取指周期控制MAM控制寄存器(MAMCR):MAMCR[1:0]:用于MAM的模式控制,具体关系如下表。MAMCR[1:0]描述00禁止MAM功能01部分使能MAM功能10完全使能MAM功能11保留MAM定时寄存器(MAMTIM):MAMTIM[2:0]:决定使用多少个CCLK周期访问Flash存储器,这样可以调整MAM时序使其匹配处理器操作频率,具体关系如下表。MAMTIM[2:0]描述MAMTIM[2:0]描述000保留100取指周期为4个CCLK001取指周期为1个CCLK101取指周期为5个CCLK010取指周期为2个CCLK110取指周期为6个CCLK011取指周期为3个CCLK111取指周期为7个CCLK当访问周期设置为1个CCLk时,实际上关闭了MAM,但是仍可以选择MAM模式对功耗进行优化。注意:不正确的设定会导致器件的错误操作4.5存储器加速模块(MAM)•MAM使用注意事项MAM定时问题:在改变MAM定时值时必须先关闭MAM。其设置的定时值和系统时钟有如下关系,目的是为了确保Flash的访问周期不会小于50ns,否则会导致操作错误。系统时钟(CCLK)MAM定时值20MHz120MHz~40MHz240MHz~60MHz3Flash编程问题:在编程和擦除操作过程中不允许访问Flash存储器。为了防止从Flash存储器中读取无效的数据,在Flash编程或擦除操作开始后MAM将不缓冲任何数据。所以在Flash操作结束后,任何对Flash地址的读操作都将启动新的取指操作。4.5存储器加速模块(MAM)•MAM应用示例voidMAMSet(uint32Fcclk){MAMCR=0;If(Fcclk200000000){MAMTIM=1;}elseif(Fcclk40000000){MAMTIM=2;}else{MAMTIM=3;}MAMCR=2;}MAM部件Flash访问时钟的配置:关闭MAM部件;1启动MAM部件。3根据系统时钟配置取指周期;21.LPC2000系列简介2.引脚描述3.存储器寻址4.系统控制模块5.存储器加速模块(MAM)6.外部存储器控制器(EMC)7.引脚连接模块8.GPIOLPC2000系列ARM硬件结构9.向量中断控制器10.外部中断输入11.定时器0和定时器112.SPI接口13.I2C接口14.UART(0、1)15.A/D转换器16.看门狗17.脉宽调制器(PWM)18.实时时钟4.6外部存储器控制器(EMC)•概述外部存储器控制器是AMBAAHB总线上的一个从模块,它为AMBAAHB系统总线和外部(片外)存储器器件提供了一个接口。该模块可同时支持多达4个单独配置的存储器组,每个存储器组都支持SRAM、ROM、FlashEPROM、BurstROM存储器或一些外部I/O器件。存储器或外部I/O口器件存储器或外部I/O口器件存储器或外部I/O口器件存储器或外部I/O口器件ARM7TDMI-S内核EMC模块Bank0Bank1Bank2Bank3AMBAAHB注:每个存储器组的总线宽度为8、16或32位,但是同一个存储器组不要使用两个不同宽度的器件。总线CS0/1/2/34.6外部存储器控制器(EMC)•特性•支持静态存储器映射器件;•4个存储器组(Bank0~Bank3)可单独配置,每个存储器组可访问16M字节空间;•总线空闲周期可编程;•可对静态RAM器件的读写等待时间进行编程;•可编程外部数据总线宽度——8位、16位和32位。4.6外部存储器控制器(EMC)•引脚描述引脚名称类型引脚描述复用引脚D[31:0]输入/输出外部存储器数据线P2.0~P2.31A[23:0]输出外部存储器地址线P3.0~P3.23OE输出读使能信号,低有效P1.1WE输出写使能信号,低有效P3.27CS[3:0]输出片选信号,低有效P1.0、P3.24~P3.26BLS[3:0]输出字节定位选择信号,低有效P3.28~P3.31注:每个这些引脚是与P1、P2和P3口GPIO功能复用,所以在使用外部总线前首先要正确配置PINSEL2寄存器。4.6外部存储器控制器(EMC)•寄存器描述外部存储器控制器包含4个配置寄存器。每个配置寄存器控制一个外部存储器接口的总线空闲时间、读访问长度、写访问长度、存储器组是否写保护、存储器组的总线宽度的设置等。ARM7TDMI-S内核EMC模块Bank0Bank1Bank2Bank3AMBAAHB配置寄存器BCFG1BCFG0BCFG2BCFG34.6外部存储器控制器(EMC)•寄存器描述配置寄存器BCFG0~33:0IDCY31:30AT4-9:5WST110RBLE15:11WST223:16-24BUSERR25WPERR26WP27BM29:28MWIDCYWST1IDCY:总线空闲时间控制位。该位控制着一个存储器内部的读写访问之间,以及访问一个存储器组和访问另一个存储器组之间EMC需要给定的“空闲”CCLK周期最小数目,以避免器件间的总线竞争。计算公式为:空闲CCLK周期数=IDCY+1;存储器组配置寄存器0~3(BCFG0~3):WST1:读写访问长度控制位。该位控制读访问的长度(对BurstROM的连续读访问除外),以调节对外部存储器的读访问时间。读访问的长度以CCLK周期来计量。计算公式为:读操作周期长度=WST1+3;XCLKCSOEWE/BLSAddrData有效地址变化数据有效数据WST1=01个等待周期外部存储器读访问波形(WST1=0):读操作,共需3个周期增加1个等待周期外部存储器读访问波形(WST1=1):WST1=1,2个等待周期有效地址变化数据有效数据读操作,共需4个周期4.6外部存储器控制器(EMC)•寄存器描述配置寄存器BCFG0~33:0IDCY31:30AT4-9:5WST110RBLE15:11WST223:16-24BUSERR25WPERR26WP27BM29:28MWRBLE存储器组配置寄存器0~3(BCFG0~3):RBLE:字节定位使能位。在LPC2200微处理器中,EMC提供了一组字节定位选择信号(BLS0~BLS3)实现对16位或32位外部存储器组的字节操作。设定RBLE可实现:•写访问时,RBLE位决定WE信号是否有效(低电平有效);•读访问时,RBLE位决定BLSn信号是否有效(低电平有效)。操作方式RBLEBLSOEWE读操作0无效有效无效1有效有效无效写操作0有效无效无效1有效无效有效RBLE位对总线信号的影响:4.6外部存储器控制器(EMC)•LPC2200读外部总线器件RBLE=0RBLE=1•LPC2200写外部总线器件RBLE=0RBLE=14.6外部存储器控制器(EMC)•寄存器描述配置寄存器BCFG0~33:0IDCY31:30AT4-9:5WST110RBLE15:11WST223:16-24BUSERR25WPERR26WP27BM29:28MWWST2存储器组配置寄存器0~3(BCFG0~3):WST2:写访问长度控制位。和读操作类似,该位控制写访问的长度(对BurstROM的连续读访问除外),以调节对外部存储器的写访问时间。写访问的长度以CCLK周期来计量。计算公式为:写操作周期长度=WST2+3;对于BurstROM,计算公式为:写操作周期长度=WST2+1;外部存储器写访问波形(WST2=0):