LPC2000系列微处理器组成与中断技术.ppt

上传人:tia****nde 文档编号:11497056 上传时间:2020-04-25 格式:PPT 页数:132 大小:2.04MB
返回 下载 相关 举报
LPC2000系列微处理器组成与中断技术.ppt_第1页
第1页 / 共132页
LPC2000系列微处理器组成与中断技术.ppt_第2页
第2页 / 共132页
LPC2000系列微处理器组成与中断技术.ppt_第3页
第3页 / 共132页
点击查看更多>>
资源描述
1,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,2,5.1LPC2000系列芯片简介,嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola68K等,其中ARM占据了绝对主流。基于ARM平台的嵌入式系统设计在工业控制、无线通讯、网络应用、消费类电子产品、成像和安全产品等领域内均有广泛地应用。ARM处理器根据其应用及其特点,分为控制类芯片、特殊应用类芯片、数字信号处理器、消费类电子的嵌入式芯片以及安全芯片。控制类芯片要求相对较低,具有中断控制器、片内存储器;应用处理器具有MMU、支持SDRAM、附带LCD控制器或接口并具有DMA;消费类电子的嵌入式芯片一般具有较强的专业性;数字信号处理器通过使用协处理器和DSP等方式提高运算能力;安全芯片使用专门的SecurCore内核。,3,5.1LPC2000系列芯片简介,ARM系列种类繁多,本章我们主要讨论一般控制类的芯片,以NXP公司LPC2000系列处理器为例进行介绍。LPC2000系列微控制器基于ARM7TDMI-SCPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。,简介,LPC2100系列LPC2200系列LPC2300系列LPC2400系列LPC2800系列,4,5.1.1LPC2100系列芯片,LPC2100系列MCU基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-SCPU,并带有128/256KB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。如果在实际应用中对代码规模有严格控制,使用16位Thumb模式可将代码规模降低超过30%,而性能的损失却很小。,5,LPC2100系列MCU主要特点:,16/32位ARM7TDMI-S核,超小LQFP和HVQFN封装;16/32/64kB片内SRAM;128/256kB片内Flash程序存储器;128位宽度接口/加速器可实现高达60MHz工作频率;通过片内boot装载程序实现在系统编程(ISP)和在应用编程(IAP);EmbeddedICE可实现断点和观察点;嵌入式跟踪宏单元(ETM)支持对执行代码进行无干扰的高速实时跟踪;10位A/D转换器,转换时间低至2.44s;CAN接口,带有先进的验收滤波器;包括2个16C550工业标准UART、高速I2C接口(400kHz)和2个SPI接口。,6,表5.1LPC2100系列MCU参数规格,7,5.1.2LPC2200系列芯片特点:,处理器和封装:16/32位ARM7TDMI-S微控制器,LQFP144和TFBGA144封装;RAM:16/64kB片内静态RAM(LPC2210/LPC2220);串行boot装载程序通过UART0来实现在系统下载和编程;调试:EmbeddedICE-RT和嵌入式跟踪接口使用片内RealMonitor软件对任务进行实时调试;支持对执行代码进行无干扰的高速实时跟踪;8路10位A/D转换器,转换时间低至2.44s;定时器:2个32位定时器(LPC2220也具有外部事件计数器)带4路捕获和4路比较通道;PWM单元(6路输出)、实时时钟(RTC)和看门狗;串口:包括2个16C550工业标准UART、高速I2C总线(400kbit/s)和2个SPI接口;在LPC2220上,可选择带有数据缓冲区和可变长度传输的同步串行口(SSP)来代替一个SPI;,8,LPC2200系列MCU芯片资源及特点(续),向量中断控制器(VIC),可配置优先级和向量地址;外存:通过外部存储器接口可将存储器配置成4组,每组的容量高达16Mb,数据宽度为8/16/32位;多达76个通用I/O口(可承受5V电压)。可使用9个边沿或电平触发的外部中断管脚;通过可编程的片内锁相环(PLL)可实现最大为60/75MHz(LPC2210/2220)的CPU操作频率;频率:带外部晶体的片内振荡器频率范围:130MHz,外部振荡器的频率高达50MHz;2个低功耗模式:空闲和掉电;唤醒:通过外部中断将处理器从掉电模式中唤醒;优化功耗:通过个别使能/禁止外部功能来优化功耗;双电源,CPU操作电压范围:1.65V1.95V(1.8V0.15V);I/O操作电压范围:3.03.6V(3.3V10%),I/O口可承受5V电压。,9,表5.2LPC2200系列MCU参数规格表,10,5.1LPC2100/2200系列简介,器件信息,关于LPC2000其它器件的介绍请登录“LPC2000系列ARM”专栏,11,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,12,5.2芯片内部结构,LPC2000系列微控制器包含4大部分:,13,5.2芯片内部结构,LPC2200系列芯片内部结构如图5.1所示,芯片内部有三种总线,分别是局部总线、AHB和VPB,14,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,15,嵌入式系统中存储器部分按其位置分为片内和片外存储器,其存储器主要分为RAM、ROM和FlashMemory。Flashmemory(闪速存储器)是嵌入式系统中重要的组成部分,用来存储程序和数据。FlashMemory是一种非易失性存储器NVM(Non-VolatileMemory),掉电后数据不会丢失,但在使用FlashMemory时,必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。,5.3存储器结构,16,5.3存储器寻址,5.3.1存储器映射5.3.2片内存储器5.3.3片外存储器5.3.4存储器重映射及引导块5.3.5启动代码相关部分,17,LPC2000系列微处理器的片内储存器大小,1MB,512KB,64KB,32KB,256KB,128KB,64KB,32KB,16KB,LPC2104LPC2114LPC2119LPC2134LPC2144LPC2212,8KB,LPC2210LPC2290,LPC2220LPC2880,片内SRAM,0KB,4KB,2KB,16KB,8KB,LPC2124LPC2194LPC2129LPC2214LPC2292LPC2294,LPC2136LPC2146,LPC2103LPC2131LPC2141,LPC2101,LPC2102,LPC2105,LPC2106,LPC2132LPC2142,LPC2138LPC2148,LPC2888,片内Flash,LPC2101,LPC2102,LPC2103LPC2131LPC2141,LPC2210LPC2290,LPC2132LPC2142,LPC2104LPC2114LPC2119LPC2134LPC2144LPC2212,LPC2124LPC2194LPC2129LPC2214LPC2292LPC2294,LPC2105,LPC2136LPC2146,LPC2220LPC2880,LPC2138LPC2148,LPC2106,LPC2888,18,概述,5.3.1存储器映射,ARM芯片存储器分布可以在片内和片外,这些存储器本身不具有地址信息,它们在芯片中的地址是由芯片厂家或用户分配的。给物理存储器分配逻辑地址的过程称为存储器映射。通过这些逻辑地址就可以访问到相应存储器的物理存储单元。,19,LPC2210存储器地址分布,图5.2LPC2210存储器地址分布,ARM芯片存储器分布可以在片内和片外,地址从低到高分布有片内FLASH、片内SRAM、BOOTBLOCK、保留的外存储器空间、VPB外设以及AHB外设。,20,系统存储器映射,5.3.1存储器映射,256KB片内非失忆性存储器(LPC2124/2214),2MBAHB外设,128KB片内非失忆性存储器(LPC2114/2212),16KB片内静态RAM,8KBBootBlock(片内ROM存储器重映射),2MBVPB外设,16MBBank0,保留,保留给片内RAM存储器,保留给片内FLASH存储器,16MBBank1,16MBBank2,16MBBank3,保留给片外存储器,用户所见存储器的分布,图5.3系统存储器地址映射,21,ARM存储器映射空间,ARM7TDMI的存储器映射空间0X000000000XFFFFFFFF起始地址依次为:FLASH0X00000000,SRAM0X40000000,BOOTBLOCK,外部存储器0X80000000,VPB(低速外设地址)0XE0000000,AHB(高速外设:向量中断控制器,外部存储器控制器)从0XFFFFFFFF回头。,22,5.3.1存储器映射,AHB和VPB,AHB(先进的高性能总线)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。,注意:外设寄存器的地址都是字对齐。AHB和VPB外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作。,23,外设存储器映射,5.3.1存储器映射,注:AHB和VPB均为128x16kB(2MB)范围。,24,AHB外设映射,5.3.1存储器映射,注:只有LPC2200系列微处理器有外部总线控制器,25,VPB外设映射,4.3.3存储器映射,26,5.3.2片内存储器,LPC2000系列中除了LPC2210/2220/2290外,其它的ARM微处理器内部都带有容量不等的Flash,这为ARM芯片的单片应用带来可能。片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,加上特有的存储器加速功能,因此可以将程序直接放在Flash上运行。,片内FLASH程序存储器,27,5.3.2片内存储器,片内Flash编程方法,1.使用JTAG仿真/调试器,通过芯片的JTAG接口下载程序;,2.使用在系统编程技术(即ISP),通过UART0接口下载程序;,3.使用在应用编程技术(即IAP),在用户程序运行时对Flash进行擦除和/或编程操作,实现数据的存储和固件的现场升级。,JTAG,UART0,28,5.3.2片内存储器,LPC2000系列微控制器的片内RAM为静态RAM(SRAM),它们可用作代码和/或数据的存储。SRAM支持8位、16位和32位的读写访问。,片内静态RAM,29,5.3.3片外存储器,概述,在CPU外部扩展连接的存储器芯片称为片外存储器,这些器件通常都具有数据线、地址线和控制线等。主要器件有ROM、FLASH、SRAM等。,Bank0,Bank1,Bank2,Bank3,LPC2200,每个Bank寻址空间:16M字节;数据宽度:8/16/32位。,30,5.3.3片外存储器,片外Flash编程方法,Flash的擦写操作需要配合一段符合Flash编程时序的代码,这段代码称为装载程序,一般由用户编写。,程序代码(源),程序代码(目标),Loader,下载用户代码时,首先得在CPU内运行装载程序,通过它把从串口(或其它接口)接收的代码写到片外Flash中。,31,5.3.4存储器重映射及引导块,存储器重映射,将已经过映射的存储器再次映射的过程称为存储器重映射,它使同一物理存储单元出现多个不同的逻辑地址。这些存储单元主要包括引导块“BootBlock”和用于保存异常向量表的少量存储单元。,Addr1,0 x1234,0 x1234,注意:存储器重映射并不是对映射单元的内容进行了复制,而只是将多个地址指向了同一个存储单元,这种效果是通过芯片内部的“存储器管理部件”实现的。,32,5.3.4存储器重映射及引导块,存储器映射:为存储器分配地址的过程.存储器重映射:为了增加系统的灵活性,系统中有部分地址可以同时出现在不同的地址上,这就叫做存储器重映射。包括引导块“BootBlock”重映射和异常向量表的重映射。1.引导块“BootBlock”及其重映射引入的原因:BootBlock中有些程序可被用户调用,如擦写片内Flash的IAP代码。为了增加用户代码的可移植性,所以最好把BootBlock的代码固定的某个地址上。但由于各芯片的片内Flash大小不尽相同,如果把BootBlock的地址安排在内部Flash结束的位置上,那就无法固定BootBlock的地址。厂家为了BOOTBLOCK在芯片中的位置固定,就在编址的2G靠前编址的位置虚拟划分一个区域作为BOOTBLOCK区域,这就是重映射,这样访问2G即0X80000000的位置时,就可以访问到在FLASH尾部的BOOTBLOCK区了。,33,5.3.4存储器重映射及引导块,1.引导块及其重映射,引导块(BootBlock)是芯片设计厂家在LPC2000系列ARM内部固化的一段代码,用户无法修改或删除。这段代码在芯片复位后被首先运行,其功能主要是:,判断运行哪个存储器上的程序;检查用户代码是否有效;判断芯片是否被加密;芯片的在应用编程(IAP)以及在系统编程功能(ISP)。,注意:部分器件内部虽然没有用户Flash空间(比如LPC2210/2220/2290),但它们仍然存在BootBlock,并且复位后会被首先运行。,34,5.3.4存储器重映射及引导块,引导块在存储器中的状态,LPC2200系列芯片的BootBlock为8KB大小,它们占用了用户的Flash空间。,LPC2130系列芯片的BootBlock为12KB大小,除了LPC2138占用用户的Flash空间外,该系列中其它的芯片不占用用户Flash空间。,35,BootBlock重新映射,BootBlock重新映射,5.3.4存储器重映射及引导块,BootBlock,BootBlock,引导块(BootBlock)的重映射,36,引入原因:由于ARM处理器的存储器结构比较复杂,可能同时存在片内存储器和片外存储器等,他们在存储器映射上的起始地址都不一样,因此ARM内核要访问的中断向量表可能不在0 x00000 x003F地址上,因此采用了存储器重映射来实现将存在与不同地方的中断向量表都映射到0 x00000 x003F地址上。ARM内核在发生异常后,会使程序跳转到0 x00000 x001C的异常向量表处,再经过向量跳转到异常服务程序。但ARM单条指令的寻址范围有限,无法用一条指令实现4G范围的跳转,所以应在其后面的0 x00200 x003F地址上放置跳转目标,这样就可以实现4G范围内的任意跳转,因此一个异常向量表实际上占用了16个字的存储单元(64字节)。,5.3.4存储器重映射及引导块,2.异常向量表概述,37,5.3.4存储器重映射及引导块,ARM异常入口,该位置被Boot装载程序用作有效用户程序的检测标志。通过定义此保留值,使向量表所有数据32位累加和为0,芯片复位后才能脱机运行用户程序。,38,5.3.4存储器重映射及引导块,异常向量表的重映射,异常向量表可以来自四个不同的区域:BootBlock、片内Flash、片内RAM和外部存储器。微控制器可以执行这些存储器中的代码。除了片内Flash的向量表位于0 x00000 x003F地址上,其他存储器的向量表都不位于这个地址。为了能让ARM内核通过访问0 x00000 x003F地址访问到其他存储区域的向量表,这样向量表必须进行重映射。,注意:除了“用户片内Flash模式”外,其它模式下都无法访问片内Flash的0 x00000 x003F区域。,39,来自不同区域的异常向量表,异常向量表,地址重映射,复位后,首先运行BootBlock程序,将BootBlock内0 x7FFFE0000 x7FFFE03F的异常向量表重映射到0 x00000 x003F地址以允许处理异常并在Boot装载过程中使用中断。,此时无需进行Flash向量表的重映射,其向量表本身就处于0 x00000 x003F地址空间。,异常向量表,异常向量表,再根据MEMMAP寄存器的设置运行片内Flash代码。,片内RAM代码。,片外存储器代码。,此时需将片内RAM0 x400000000 x4000003F的向量表重映射到0 x00000 x003F地址空间。,此时需将外部存储器0 x800000000 x8000003F的向量表重映射到0 x00000 x003F地址空间。,地址重映射,地址重映射,40,外扩存储器异常向量表实现示例,应用程序的异常向量表就存放在0 x80000000起始的64个物理存储单元中。但是ARM核发生异常(中断)后是从0 x000000000 x0000003F地址范围取异常向量的。所以要把0 x800000000 x8000003F范围内的存储单元重新映射到0 x000000000 x0000003F地址范围上。以后CPU存取0 x000000000 x0000003F地址就是存取0 x800000000 x8000003F范围内的存储单元。,41,ARM芯片的另外一种重映射方式,为了提高异常相应速度我们采取以下做法:(1)先把0 x000000000 x0000003F(FLASH)存储单元内的异常向量表复制到0 x400000000 x4000003F(片内RAM的最低端64个字节的存储单元)范围内存储单元中。(2)把0 x400000000 x4000003F范围内存储单元地址重新映射到0 x000000000 x0000003F地址范围。这样做了以后,当异常发生的时候,CPU取异常向量就是从RAM区中的异常向量表中区,速度快了。,42,异常向量表的重映射的实现机制,存储器映射控制寄存器,存储器映射控制寄存器(MEMMAP)是一个可读可写的寄存器。,异常向量表可以重新映射到:BootBlock;片内Flash;片内SRAM;外部存储器Bank0。,目的:为了允许运行在不同存储器空间中的代码对中断进行控制,需要使用存储器映射控制机制改变地址0 x00000 x003F的中断向量的映射。,43,存储器映射控制,系统引导与存储器映射,对于LPC2200系列微处理器,当nRESET为低时,BOOT1:0脚的状态控制着引导方式。,44,MAP1:0设置值与各种异常地址范围的关系,当发生异常时,对应的向量表实际访问到0 x800000000 x8000003C地址。,当发生异常时,对应的向量表实际访问到0 x7FFFE0000 x7FFFE03C地址。,当发生异常时,对应的向量表实际访问到0 x400000000 x4000003C地址。,当发生异常时,对应的向量表实际访问到0 x000000000 x0000003C地址。,异常向量表从片外存储器中重映射。,异常向量表从BootBlock中重映射。,异常向量表从SRAM中重映射。,异常向量表来自片内Flash。,45,5.3.5系统启动代码介绍,概述,ARM微处理器在上电或复位后首先运行BootBlock中的一段代码,这段代码称为“引导代码”,由芯片厂商固化在芯片中。此后,在正式运行用户main函数之前,还需要运行一段“启动代码”,由用户添加。,引导代码(BootBlock),用户main函数,启动代码,向量表定义;堆栈初始化;系统变量初始化;中断系统初始化;I/O初始化;外围初始化;地址重映射等操作。,上电/复位,46,启动代码流程图,47,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,48,5.4系统控制模块,系统控制模块通常包括很多功能部件,这些功能部件的影响是全局性的,它们的状态改变时可能引起整个系统运行状态的改变,它们包括时钟系统、功率控制、复位、存储器映射控制。,49,5.4系统控制模块功能汇总,概述,一个ARM芯片中通常有很多功能部件,有一些部件是全局性的,它们状态的改变可能引起整个系统运行状态的改变,这些部件我们统一称之为系统控制模块。,在这些系统控制模块中,有些部件需要外部引脚的配合,如晶体振荡器、外部复位输入。,50,5.4系统控制模块功能汇总,在系统控制模块中,有些部件需要在进行寄存器配置后才能正常工作,如存储器映射控制、锁相环、功率控制、VPB分频器。,51,5.4.1时钟系统,概述,时钟是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等。所以时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等。,52,5.4.1时钟系统,时钟系统结构,LPC2000系列微控制器的时钟系统包括四个部分:晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。,外接晶体或外接时钟源,产生稳定的时钟信号,将Fosc提升到合适的频率,1,3,4,2,53,5.4.1时钟部件晶体振荡器,1.晶体振荡器,LPC2000系列微控制器的晶体振荡器可以使用外部时钟源(从属模式),也可以使用外接晶体和片内振荡电路(振荡模式)产生时钟。,54,时钟部件晶体振荡器,从属模式,使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:150(MHz),其幅度范围为:200mV1.8V。,55,时钟部件晶体振荡器,振荡模式,使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:130(MHz)。,56,时钟部件晶体振荡器,注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在1025(MHz)之间。,57,5.4.1时钟部件唤醒定时器,2.唤醒定时器,唤醒定时器能够确保振荡器和芯片内部硬件电路在处理器开始执行指令之前有足够的时间初始化。工作原理如图:,对输入时钟计数,计数满4096个周期后,控制开关闭合,为CPU提供时钟,58,5.4.1时钟部件唤醒定时器,当给芯片加电或某个事件使芯片退出掉电模式后,振荡器就开始工作,但是需要一段时间来产生足够振幅的信号驱动时钟逻辑。振荡的波形大致如下:,注:唤醒定时器就通过监测晶振状态来判断是否能开始可靠的执行代码。,59,5.4.1时钟部件唤醒定时器,唤醒定时器与时钟的关系,唤醒定时器检测到有效时钟信号后,计数4096个时钟脉冲,并在这段时间里初始化系统硬件。如芯片满足运行条件(Flash初始化完成、外部复位信号已撤除等),接通系统时钟,处理器开始执行指令。总之,LPC2000系列芯片的唤醒定时器是根据晶振的情况来执行最短时间的复位,它在处理器从掉电模式中唤醒或发生了任何复位时激活。,60,5.4.1时钟部件PLL(锁相环),3.锁相环,LPC2000系列芯片内部均具有PLL电路,振荡器产生的时钟Fosc通过PLL升频,可以获得更高的系统时钟(Fcclk)。,输入范围1025MHz,将FOSC提升到1060MHz,61,PLL内部结构框图,5.4.1时钟部件PLL(锁相环),62,5.4.1时钟部件PLL(锁相环),PLL的锁定过程,CCO的输出频率受到“相位频率检测”部件的控制,输出所需频率的过程不是一蹴而就的,而是一个拉锯反复的过程。,CCO的输出频率在高低起伏一段时间后渐渐稳定在了预期的频率值,输出频率稳定后即“锁定”成功,63,5.4.1时钟部件PLL(锁相环),寄存器描述,与PLL相关的寄存器有四个,其中三个为控制寄存器,还有一个是状态寄存器。,64,寄存器描述,PLLCFG.MSEL4:0,PLLCON.PLLE,PLLCFG.PSEL1:0,PLLCON.PLLC,PLL控制寄存器(PLLCON):,PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;,PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。,PLL配置寄存器(PLLCFG):,MSEL4:0:PLL倍频器值,在PLL频率计算中其值为(M-1);,PSEL1:0:PLL分频器值,在PLL频率计算中其值为P。,PLL状态寄存器(PLLSTAT):,MSEL4:0、PSEL1:0、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;,PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。,PLL控制位组合:,65,寄存器描述,PLL馈送寄存器(PLLFEED):,PLLFEED7:0:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效。馈送序列分两步进行,如下所示:step1.将值0 xAA写入PLLFEEDstep2.将值0 x55写入PLLFEED,操作示例DISABLE_IRQ();/关闭中断,防止馈送序列操作被打断PLLFEED=0 xAA;/馈送序列第一步PLLFEED=0 x55;/馈送序列第二步ENABLE_IRQ();/馈送序列操作结束,打开中断注:这两个写操作的顺序必须正确,且必须是连续的VPB总线周期。,66,5.4.1时钟部件PLL(锁相环),PLL和掉电模式,掉电模式会自动关闭并断开PLL。从掉电模式唤醒不会自动恢复PLL的设定,PLL的恢复必须由软件来完成。通常,首先将PLL激活并等待锁定,然后再将PLL连接。注:不要试图在掉电唤醒之后简单地执行馈送序列来重新启动PLL,因为这会在PLL锁定建立之前同时使能并连接PLL。,67,5.4.1时钟部件PLL(锁相环),PLL频率计算,Fosc为晶体振荡器的输出频率,即PLL的输入频率,FOSC,FCCO,FCCO/(2p),FCCO/(2pM),连接PLL之后FCCLK=FCCO/(2p),Fcco为PLL电流控制振荡器的输出频率,Fcclk为PLL最终的输出频率(也是处理器的时钟频率),Fcco经过“2P分频”部件后得到Fcco/(2p)的频率,Fcco/(2p)信号经过“M分频”部件,得到Fcco/(2pM)的频率,PLL锁定后相位频率检测的两输入端信号的频率相等,68,5.4.1时钟部件PLL(锁相环),PLL频率计算,可以得出以下几个等式:Fosc=Fcco/(2pM)Fcco=Fosc(2pM)Fcclk=Fcco/(2p)Fcco=Fcclk(2p)最后得出PLL的输出频率(当PLL激活并连接时)为:Fcclk=MFosc或Fcclk=Fcco/(2P)CCO输出频率为:Fcco=Fcclk2P或Fcco=FoscM2P,69,5.4.1时钟部件PLL(锁相环),确定PLL设定的过程,2.选择合适的晶振频率,3.计算M值,4.计算P值,1.确定处理器时钟频率,70,PLL设置举例,系统要求Fosc10MHz,Fcclk60MHz。根据这些要求:确定Fcclk60MHz;选择Fosc10MHz;计算M=Fcclk/Fosc60MHz/10MHz6。M-15,所以写入PLLCFG4:000101;计算P=Fcco/(Fcclk*2),其中Fcco为156320MHz。当Fcco156MHz时,P=156MHz/(2*60MHz)1.3当Fcco320MHz时,P=2.67P取整数2,所以写入PLLCFG6:5=01。,71,PLL设置举例,PLL配置过程:,uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco)uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i)case2:plldat=(Fcclk/Fosc)-1)|(05);break;case4:plldat=(Fcclk/Fosc)-1)|(15);break;case8:plldat=(Fcclk/Fosc)-1)|(25);break;case16:plldat=(Fcclk/Fosc)-1)|(3=300ns,振荡器处于稳定工作状态,5.4.3复位,外部复位,81,5.4.3复位,复位与电源上电次序,V18:数字1.8V供电电源V18A:模拟1.8V供电电源,V3:数字3.3V供电电源V3A:模拟3.3V供电电源,CPU内核,片内外设,电源管理,1.8V为内核供电,因此1.8V电源必须正常上电。,82,5.4.3复位,外部复位和内部WDT复位的区别,判断引脚:P1.20/TRACESYNCP1.26/RTCKBOOT1和BOOT0,判断引脚:P0.14,执行用户程序或运行ISP程序,外部复位,时间,T0,T1,T2,WDT复位,时间,T0,执行用户程序或运行ISP程序,83,Boot程序工作流程LPC2114/2124,84,Boot程序工作流程LPC2210/2212/2214,85,5.4.3复位,复位与BootBlock,BootBlock的功能包括:,LPC2200系列微控制器可以同时存在片内存储器和片外存储器,BootBlock通过芯片上的BOOT0和BOOT1引脚来判断程序的运行。,注:LPC2100系列微控制器只有片内Flash,它们无需判断。,86,5.4.3复位,复位与BootBlock,BootBlock的功能包括:,BootBlock在将芯片的控制权交给用户程序之前,要先判断用户程序是否有效,否则将不运行用户程序,这样可以避免在现场设备中的芯片因为代码损坏而导致程序乱飞引起事故的情况发生。,87,CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr.DCD0 xb9205f80LDRPC,PC,#-0 xff0LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined.NouseDCD0IRQ_AddrDCD0,异常向量表源代码,Reset0 xe59ff0180 xe59ff018.0 xb9205f800 xe51ffff00 xe59ff0180 x8000008c0 x80000040.0 x000000000 x00000000,指令机器码,获取跳转地址,用户代码有效判别方案,调整该字使累加和为0,88,5.4.3复位,复位与BootBlock,BootBlock的功能包括:,芯片可加密可以保护芯片用户的知识产权不受侵害。加密后:芯片禁止JTAG接口调试;芯片限制ISP命令,只能执行芯片整片擦除。,对芯片加密的方法:在芯片Flash的0 x01FC地址处写入数据0 x87654321即可。当BootBlock检测到该地址存在加密标志字时,就对芯片的JTAG和ISP操作进行限制,达到加密的效果。,89,5.4.3复位,复位与BootBlock,BootBlock的功能包括:,LPC2000系列微控制器内部的Flash是无法从外部直接擦写的,这些功能必须通过IAP代码来实现。IAP可以实现片内Flash的擦除、查空、将数据从RAM写入指定Flash空间、校验、读器件ID等功能。应用实例:数据存储在线升级,90,5.4.3复位,复位与BootBlock,BootBlock的功能包括:,ISP功能是一种非常有用的片内Flash烧写方式。ISP工作时,通过UART0使用约定协议与计算机上的ISP软件进行通信,并按用户的操作要求,调用内部的IAP代码实现各种功能。比如把用户代码下载到片内Flash中。有两种情况可以使芯片进入ISP状态1、将芯片的P0.14引脚拉低后,复位芯片可以进入ISP状态;2、在芯片内部无有效用户代码时,BootBlock进入ISP状态。,91,5.4.3复位,复位及复位芯片配置,一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。阻容式复位电路:,电容两端电压不能突变,产生低电平脉冲复位,电源消失提供迅速放电回路,对电容充电,电容两端电压稳定为电源电压,这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用CAT809、SP708和CAT1025等专门的复位芯片。,92,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,93,5.5中断技术,5.5.1中断概念日常生活引入:“读书敲门电话”事件处理过程,94,中断概念,什么是中断,计算机在执行正常程序过程中,当出现某种异常事件或某种外部请求时,处理器就暂停执行当前的程序,而转去执行对异常事件或某种外部请求的处理操作。当处理完毕后,CPU再返回到被暂停执行的程序,继续执行,这个过程称为中断。主程序被打断的地方称其为断点,在计算机系统中,实现中断处理过程打的技术就称为中断技术,实现该技术包含的软件、硬件的总体称为中断系统。,95,5.5.2中断源及管理,中断源,是指引起中断的原因或发出中断请求的来源。中断源可分为硬件中断源和软件中断源两类。中断请求是随机发生的,当系统具有多个中断源时,有时会同时出现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次序称为中断优先级。中断系统优先级有两层含义:中断事件同时发生时,CPU响应谁;CPU正在执行ISR过程中,又有中断事件,CPU如何处理。,96,不同级别的中断请求处理原则,不同优先级的多个中断源同时发出中断请求,按优先级由高到低依次处理。低优先级中断正在处理,出现高优先级请求,应转去处理高优先级请求,服务结束后再返回原优先级较低的中断服务程序继续执行。高优先级中断正在处理,出现低优先级请求,可暂不响应。中断处理时,出现同级别请求,应在当前中断处理结束以后再处理新的请求。,97,中断优先级的确定,有多个中断源时,多个中断优先级的确定是我们面临的一个问题,在一般系统中通常用三种方法来确定中断源的优先级别:软件查询法,增加简单硬件电路,进入中断后,通过软件按优先级进行查询确定,首先处理高优先级中断;硬件排队电路法,通过链式硬件排队电路,硬件确定优先级,高优先级直接可以屏蔽低优先级;专用中断控制电路法,在ARM嵌入式系统中,通过向量中段控制器确定。,98,中断源管理,99,5.5.3中断处理过程,中断处理过程一般包括以下五个步骤::中断请求、中断响应、断点保护、中断处理和中断返回。1.中断请求物理事件转换成一个电信号作为事件请求处理的申请。中断处理过程中,首先要有中断请求(中断申请)。该信号可被屏蔽控制。,100,5.5.3中断处理过程,2.中断响应(软件设置,硬件自动工作)CPU收到请求并进入到ISR的一系列动作:CPU总是在每条指令执行的最后一个时钟周期检测有无中断请求,若有中断申请则对其进行响应。中断响应的同时,中断系统自动屏蔽控制,以保证中断逻辑的正确性。中断响应还要获得相应的中断向量,找到对应的ISR并运行它。一般有两种方式:非向量中断方式和向量中断方式。不同的中断系统,中断响应的具体操作差别较大,基本原理相似。,101,5.5.3中断处理过程,3.断点保护(硬件自动工作)保护断点,保障ISR能返回到主程序的断点处继续运行;断点保护-主程序被打断时的PC当前值备份。不同的系统中,保护的方法不一样:x86将PC值入堆栈,ARM将PC值保护到LR。此操作都是由硬件自动完成。PSW-程序状态字的保护;不同的系统中,保护的方法不一样:x86需要软件方式将PSW值入堆栈,ARM中CPSR硬件自动保护到SPSR。,102,5.5.3中断处理过程,4.中断处理(软件编程)保护CPU数据现场,事件业务处理,恢复CPU数据现场;CPU数据现场保护-ISR运行中用到的数据寄存器要先保护后使用,以保证返回时主程序的中间结果不被影响;一般通过入堆栈实现,也有些场合通过切换CPU的寄存器组实现;PSW-程序状态字的保护;不同的系统中,保护的方法不一样;事件处理代码完成对应的事件服务功能;恢复CPU数据现场-将保护数据原样恢复。,103,5.5.3中断处理过程,5.中断返回(软件编程)执行完ISR后,要返回到原先被中断的主程序的断点处继续运行;断点保护的逆过程,使用之前保护的PC值,重置PC;不同的计算机有不同的中断返回方法;x86使用专用的中断返回指令(reti),ARM则是使用LR的值重置PC。,104,5.1LPC2000系列简介5.2芯片内部结构5.3存储器结构5.4系统控制模块5.5中断技术5.6向量中断控制器,LPC2000系列微处理器组成与中断技术,105,5.6向量中断控制器,5.6.1向量中断分类ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC,VectoredInterruptController)负责管理芯片的中断源,最多可以管理32个中断输入请求,16个向量IRQ中断和1个非向量中断。常见的中断源有:WDT(看门狗)、Timer(定时计数器)、PWM(脉宽调制器)、UART(通用异步收发器)、I2C(I2C接口)、SPI(SPI接口)、RTC(实时时钟)、A/D(模数转换器)、EINT(外中断)等.,106,LPC2000系列处理器各功能模块中断标志以及VIC通道分配,107,5.6.2向量中断结构,108,5.6.2向量中断结构,ARM技术中的中断和异常:在ARM中包含有7种异常:复位异常、SWI异常(软中断异常)、未定义指令异常、数据中止异常、指令中止异常、IRQ异常和FIQ异常。中断是异常的两个特例。习惯上将以IRQ异常方式传递、响应的中断称之为“IRQ中断”;以FIQ异常方式传递、响应的中断称之为“FIQ中断”。IRQ中断又根据中断服务程序入口地址的定位方式,被进一步划分为向量IRQ中断和非向量IRQ中断。,109,5.6.2向量中断结构,程序状态寄存器CPSR与VIC的关系,ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。,CPU,ARM7TDMI-S,VIC,IRQ,FIQ,CPSR7(I),CPSR6(F),110,5.6.2向量中断结构,程序状态寄存器CPSR与VIC的关系,当I=1时,禁止IRQ中断,当I=0时,使能IRQ中断,111,5.6.2向量中断结构,程序状态寄存器CPSR与VIC的关系,当F=1时,禁止FIQ中断,当F=0时,使能FIQ中断,112,5.6.2向量中断结构,中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量IRQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;,这三类中断中,FIQ中断优先级最高,1个FIQ中断时响应最快,当分配给FIQ中断请求多于1个,VIC将FIQ中断“相或”后向ARM产生FIQ信号,FIQ服务程序通过读取状态寄存器识别FIQ请求源,并分别予以处理。向量中断IRQ(VectoredIRQ)优先级中等,该级别可分配32个请求中的16个,32个中断请求可灵活配置,中断通道号可灵活配置到插槽slot0slot15中,其中配置到slot0优先级最高,配置到slot15级别在16个向量IRQ中最低。非向量IRQ(Non-vectoredIRQ)优先级在VIC控制中最低。VIC将所有向量和非向量IRQ“相或”后向ARM处理器产生IRQ信号。,113,114,5.6.3向量中断寄存器,115,控制寄存器功能描述,5.6.3向量中断寄存器,116,寄存器描述参数设置寄存器,117,IRQ中断相关寄存器,5.6.3向量中断寄存器,注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。,118,产生中断后的服务程序地址,5.6.3向量中断寄存器,119,寄存器描述状态寄存器,注意:读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类。,120,保护使能寄存器,5.6.3向量中断寄存器,保护使能寄存器(VICProtection):,在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。,121,5.6.4向量中断的处理过程,ARM的FIQ、IRQ中断是五种异常中的两种,ARM使用对“异常”响应处理的方法响应处理FIQ、IRQ中断。FIQ异常响应的服务入口地址固定为:0 x0000001C;IRQ异常响应的服务入口地址固定为:0 x00000018;IRQ中断一般要对应多个中断源,IRQ_ISR入口地址处理需要特殊处理;ARM启动代码的异常向量表部分:0 x00LDRPC,ResetAddr;跳转到ResetAddr单元0 x04LDRPC,UndefinedAddr0 x08LDRPC,SWI_Addr0 x0CLDRPC,PrefetchAddr0 x10LDRPC,DataAbortAddr0 x14DCD0 xb9205f80;用户代码有效性检查码0 x18LDRPC,PC,#-0 xff0;PC(PC)0 xff00 x1CLDRPC,FIQ_Addr,122,5.6.4向量中断的处理过程,ARM启动代码的异常向量表部分说明:IRQ语句含义如下:0 x18LDRPC,PC,#-0 xff0;PC(PC)0 xff0这条指令的地址是0 x18,执行该指令时PC=0 x20;执行的结果为PC=0 x200 xff0=0 xfffff030;0 xfffff030恰是VICVectAddr寄存器的地址;结论:ARM处理器响应IRQ异常时,固定按VICVectAddr寄存器间接转移。FIQ中断语句含义,通常系统中仅安排一个FIQ中断源,因此,FIQ异常响应的服务入口地址就是“FIQ_ISR”入口地址:0 x1CLDRPC,FIQ_Addr,123,FIQ中断处理,5.6.4向量中断的处理过程,SUBSPC,LR,#4,124,IRQ中断处理,5.6.4向量中断的处理过程,硬件处理,软件处理,125,5.6.5IRQ中断的设计实例,将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR。,C代码:,步骤:,IRQ通道0控制寄存器VICVectCntl0,向量IRQ通道0控制寄存器位分配,位,数值,126,图示IRQ中断的发生过程,1.正在执行用户程序;,2.外部中断0发生中断;,3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;,4.程序跳转至异常向量表中IRQ入口0 x0018处;,5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;,6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。,127,图示IRQ中断的发生过程,IRQ_Eint0,注意:任何IRQ中断产生之后,微控制器跳转到地址0 x18执行代码,该地址处的指令为:LDRPC,PC,#-0 xff0在执行该指令时,PC指向当前指令后的第2条指令,即地址0 x20。该指令将内存地址:0 x20-0 xFF00 xFFFFF030处的内容存入PC,该地址正是VICVectAddr寄存器的地址。所以一条ARM指令即可实现程序向中断服务程序的跳转。,128,使用VIC的注意要点,如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式;将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源;ADS1.2规定在定义中断服务函数时必须加入关键字“_irq”,保证函数返回时会切换处理器模式;在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。,129,VIC相关启动代码分析,./*初始化VIC*/VICIntEnClr=0 xffffffff;VICVectAddr=0;VICIntSelect=0;.,在LPC2100、LPC2200的启动代码中包含有VIC初始化程序,默认是禁止所有中断。,TargetResetInit函数:,InitStack.MSRCPSR_c,#0 xdfLDRSP,=StackUsrMOVPC,R0,在LPC2100、LPC2200的启动代码中默认是关闭IRQ和FIQ中断的。如果用户需要使用这两个中断,则要设置CPSR寄存器的I位或F位,这需要在特权模式下处理。最简单的方法是在启动代码中设置(修改0 xdf值)。,处理器各模式堆栈设置:,130,5.6.5IRQ中断的设计实例VIC相关启动代码分析,CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr.DCD0 xb9205f80LDRPC,PC,#-0 xff0LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined.NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler,异常向量表:,一旦产生IRQ中断,微控制器切换到IRQ模式,并跳转到向量表0 x0018地址执行指令。,一旦产生FIQ中断,微控制器切换到FIQ模式,并跳转到向量表0 x001C地址执行指令,然后跳转到FIQ_Handler代码段。,131,本章小结,本章首先介绍了ARM系列芯片特点及其内部结构,芯片内部由ARM7内核、局部总线、先进的高性能(AHB)总线和连接外设的外围总线(VPB)连接各种资源。通过对存储器结构分析,介绍了ARM处理器各种资源的地址分布以及地址映射,片内外存储器资源及编程作了介绍,引入存储器重映射概念,增加了系统的灵活性,包括引导块“BootBlock”重映射和异常向量表的重映射,分析了引入重映射的目的,重映射的原理以及重映射的实现机制,给出了ARM微处理器在上电或复位后程序运行流程以及启动代码流程。系统控制模块的功能部件影响全局,系统控制模块对时钟、锁相环、功率控制以及复位等电路做了介绍。中断是嵌入式处理器与外设传输数据很重要的一种方式,在中断技术中讲述了中断概念、多个中断源的管理以及一般中断的处理过程。嵌入式处理器中断源很多,LPC2000系列处理器通过向量中断控制器VIC统一管理,通过对向量中断控制器VIC的结构分析,给出了向量中断的处理过程。,132,作业,2,3,4,5,7,8,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!