周立功单片机第5章目录1.简介2.引脚配置3.存储器寻址4.系统控制模块5.存储器加速模块6.外部存储器控制器7.引脚连接模块8.向量中断控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定时器0/115.脉宽调制器(PWM)16.A/D转换器17.实时时钟18.看门狗周立功单片机5.5存储器加速模块(MAM)•概述LPC2114/2124/2210/2212/2214微控制器的ARM内核工作在最高频率60MHz时,执行一条指令约为17ns。而Flash存储器的访问周期需要50ns,即最高频率20MHz。所以如果将代码存放在Flash中,将影响ARM内核发挥最大效能。为了能将指令从内部Flash存储器更高效快速地提取到ARM内核,而设计产生了一个存储器加速模块(MAM)。周立功单片机分支跟踪缓存分支跟踪缓存总线接口Flash存储器组0Flash存储器组1预取指缓存预取指缓存数据缓存区选择ARM局部总线2×128位2×128位•MAM结构使能MAM模块后,ARM内核将通过MAM模块访问Flash存储器。Flash存储器组0Flash存储器组1分支跟踪缓存分支跟踪缓存预取指缓存预取指缓存数据缓存区选择总线接口周立功单片机•MAM结构Flash存储器被分为两组,当CPU执行其中一组Flash内的指令时,另一组进行读取缓存操作。使能MAM模块后,ARM内核将通过MAM模块访问Flash存储器。每个Flash组包含预取指缓存和分支跟踪缓存。分支跟踪缓存分支跟踪缓存总线接口Flash存储器组0Flash存储器组1预取指缓存预取指缓存数据缓存区选择ARM局部总线2×128位2×128位MAM模块中的数据总线宽度为128位,所以一次读取操作可以读出4条ARM指令或8条Thumb指令。分支跟踪缓存预取指缓存分支跟踪缓存Flash存储器组1预取指缓存分支跟踪缓存预取指缓存分支跟踪缓存预取指缓存Flash存储器组0分支跟踪缓存分支跟踪缓存预取指缓存预取指缓存周立功单片机分支跟踪缓存分支跟踪缓存•MAM结构总线接口Flash存储器组0Flash存储器组1预取指缓存预取指缓存数据缓存区选择ARM局部总线当程序向前跳转时,尝试从预取指缓存区取指。2×128位2×128位如果程序跳转出缓存的范围,CPU将要停止,等待若干个周期,直到正确的指令从Flash中被读出。当程序向后跳转时,尝试从分支跟踪缓存区取指。预取指缓存区保存有将要执行的指令。而分支跟踪缓存区保存有程序跳转后可能执行到的指令。周立功单片机分支跟踪缓存分支跟踪缓存•MAM结构总线接口Flash存储器组0Flash存储器组1预取指缓存预取指缓存数据缓存区ARM局部总线2×128位2×128位Flash中除了存储指令之外,还可用来存储不修改或者很少修改的数据,所以在MAM模块中设计有数据缓冲区。数据缓存区可以提高顺序读取数据的操作速度。但是对随机读取操作几乎没有加速效果。数据缓存区Flash编程由另一个独立的模块完成,Flash在进行编程操作时禁止访问。在编程操作结束后,缓存区的数据将自动失效,可以避免读取到无效的数据。选择周立功单片机5.5存储器加速模块(MAM)•存储器加速模块寄存器描述MAM控制寄存器(MAMCR):MAMCR[1:0]:用于MAM的模式控制,具体关系如下表。位765432[1:0]功能------模式控制MAMCR[1:0]描述00禁止MAM功能01部分使能MAM功能10完全使能MAM功能11保留周立功单片机5.5存储器加速模块(MAM)•存储器加速模块寄存器描述MAM定时寄存器(MAMTIM):MAMTIM[2:0]:决定使用多少个CCLK周期访问Flash存储器,这样可以调整MAM时序使其匹配处理器操作频率,具体关系如下表。位76543[2:0]功能-----取指周期控制MATIM[2:0]描述MATIM[2:0]描述000保留100取指周期为4个CCLK001取指周期为1个CCLK101取指周期为5个CCLK010取指周期为2个CCLK110取指周期为6个CCLK011取指周期为3个CCLK111取指周期为7个CCLK周立功单片机5.5存储器加速模块(MAM)•存储器加速模块寄存器描述MAM定时寄存器(MAMTIM):MATIM[2:0]描述MATIM[2:0]描述000保留100取指周期为4个CCLK001取指周期为1个CCLK101取指周期为5个CCLK010取指周期为2个CCLK110取指周期为6个CCLK011取指周期为3个CCLK111取指周期为7个CCLK当访问周期设置为1个CCLk时,实际上关闭了MAM,但是仍可以选择MAM模式对功耗进行优化。注意:不正确的设定会导致器件的错误操作周立功单片机5.5存储器加速模块(MAM)•MAM使用要点当改变MAM定时值时,必须先将MAMCR设置为0关闭MAM,然后将新值写入MAMTIM。最后将需要的操作模式的对应值(1或2)写入MAMCR,再次打开MAM;对于低于20MHz的系统时钟,MAMTIM设定为001,将Flash访问时间设定为1CCLK;对于20MHz到40MHz之间的系统时钟,建议将Flash访问时间设定为2CCLK;高于40MHz的系统时钟,建议使用3CCLK。周立功单片机•相关启动代码分析...MAMCR=0;#ifFcclk20000000MAMTIM=1;#else#ifFcclk40000000MAMTIM=2;#elseMAMTIM=3;#endif#endifMAMCR=2;...设置步骤:1.关闭MAM模块;2.根据用户定义的系统时钟频率决定MAM定时寄存器的值;3.打开MAM模块,完全使能MAM模块;系统时钟(CCLK)MAM定时值20MHz120MHz~40MHz240MHz3C代码:周立功单片机第5章目录1.简介2.引脚配置3.存储器寻址4.系统控制模块5.存储器加速模块6.外部存储器控制器7.引脚连接模块8.向量中断控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定时器0/115.脉宽调制器(PWM)16.A/D转换器17.实时时钟18.看门狗周立功单片机ARM7TDMI-SCPUAHBToVPB桥EMCVICI2C串行接口SPI串行接口UART0&1CAN看门狗定时器系统控制外部中断TIMER0/1ADC通用I/OPWM0实时时钟SRAMFlashAHB总线ARM7局部总线系统功能EMC•外部存储器控制器概述只有LPC2200系列的微控制器含有EMC模块。外部静态存储器控制器是一个AHB总线上的从模块。EMC模块为AHB系统总线和外部存储器件之间提供了一个接口。周立功单片机ARM7TDMI-SCPUAHBToVPB桥EMCVICI2C串行接口外部中断TIMER0/1SRAMFlashAHB总线ARM7局部总线系统功能EMC外部存储器或外部I/O器件外部存储器或外部I/O器件外部存储器或外部I/O器件外部存储器或外部I/O器件•外部存储器控制器概述EMC模块支持4个独立配置的存储器组,每个存储器组的总线宽度可设置为8、16或者32位,但是同一个存储器组的器件必须宽度相同。每个存储器组最大支持16MB寻址空间。支持字节定位读取。周立功单片机ARM7TDMI-SCPUAHBToVPB桥EMCVICI2C串行接口外部中断TIMER0/1SRAMFlashAHB总线ARM7局部总线系统功能EMC外部存储器或外部I/O器件外部存储器或外部I/O器件外部存储器或外部I/O器件外部存储器或外部I/O器件•外部存储器控制器概述地址输出线是A[23:0],其中地址位A[25:24]用于4个存储器组的译码(CS[3:0])。总线存储器组选择线CS[3:0]Bank地址范围配置寄存器00x80000000~0x80FFFFFFBCFG010x81000000~0x81FFFFFFBCFG120x82000000~0x82FFFFFFBCFG230x83000000~0x83FFFFFFBCFG3Bank0Bank1Bank2Bank3周立功单片机•外部存储器总线接口描述引脚名类型引脚描述D[31:0]输入/输出外部存储器数据线A[23:0]输出外部存储器地址线OE输出输出使能信号,低有效BLS输出字节定位选择信号,低有效WE输出写使能信号,低有效CS[3:0]输出芯片选择信号,低有效接口引脚描述:这些引脚与P1、P2和P3口GPIO功能复用,所以在使用外部总线前首先要正确设置PINSEL2寄存器。可以在硬件上对引脚BOOT1:0设定,复位时微处理器自动初始化PINSEL2。或者在软件上字节初始化PINSEL2,这只适用于片内FLASH引导程序运行的系统中。周立功单片机XCLKCSOEWE/BLSAddrData外部存储器读访问典型波形:•外部存储器总线接口描述外部存储器写访问典型波形:XCLKCSOEWE/BLSAddrData有效数据有效地址有效地址变化数据有效数据经过一个等待状态后,存储器输出有效数据。周立功单片机5.6外部存储器控制器(EMC)•相关寄存器外部存储器控制器包含4个寄存器,它们分别对应一个存储器组。通过这些寄存器,可以分别设置每个存储器组读写访问之间插入的等待周期个数、每个存储器组的总线宽度等。名称描述访问复位值地址BCFG0存储器组0的配置寄存器读/写0x2000FBEF0xFFE00000BCFG1存储器组1的配置寄存器读/写0x2000FBEF0xFFE00004BCFG2存储器组2的配置寄存器读/写0x1000FBEF0xFFE00008BCFG3存储器组3的配置寄存器读/写0x0000FBEF0xFFE0000C周立功单片机5.6外部存储器控制器(EMC)•相关寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存储器组配置寄存器0~3(BCFG0~3):IDCY:在两个存储器组之间切换访问时,为了避免器件间的总线竞争,需要插入空闲的CCLK周期,该域控制着这个周期数。计算公式为:空闲CCLK周期数=IDCY+1;(IDCY的复位值为15)周立功单片机5.6外部存储器控制器(EMC)•相关寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存储器组配置寄存器0~3(BCFG0~3):WST1:一些慢速的外部存储器可能不能适应EMC最高速度的读操作,所以需要在读周期中插入若干个空闲等待周期,以降低读操作的速度。该域控制着读周期中插入的空闲CCLK周期数。计算公式为:读操作周期长度=WST1+3;(WST1的复位值为15)周立功单片机5.6外部存储器控制器(EMC)•相关寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存储器组配置寄存器0~3(BCFG0~3):XCLKCSOEWE/BLSAddrData有效地址变化数据有效数据WST1=01个等待周期外部存储器读访问波形(WST1=0):读操作,共需3个周期周立功单片机5.6外部存储器控制器(EMC)•相关寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存储器组配置寄存器0~3(BCFG0~3):XCLKCSOEWE/BLSAddrData有效地址变化数据有效数据WST1=01个等待周期读操作,共需3个周期外部存储器读访问波形(WST1=1):增加1个等待周期周立功单片机5.6外部存储器控制器(EMC)•相关寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存储器