第5部分LPC2000系列ARM硬件结构.ppt

上传人:本田雅阁 文档编号:2538775 上传时间:2019-04-05 格式:PPT 页数:163 大小:1.71MB
返回 下载 相关 举报
第5部分LPC2000系列ARM硬件结构.ppt_第1页
第1页 / 共163页
第5部分LPC2000系列ARM硬件结构.ppt_第2页
第2页 / 共163页
第5部分LPC2000系列ARM硬件结构.ppt_第3页
第3页 / 共163页
亲,该文档总共163页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5部分LPC2000系列ARM硬件结构.ppt》由会员分享,可在线阅读,更多相关《第5部分LPC2000系列ARM硬件结构.ppt(163页珍藏版)》请在三一文库上搜索。

1、第5章 LPC2000系列ARM 硬件结构,第5章 目录,1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO,10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗,第5章 目录,1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO,10.UART0 11.UART1 12.I2C接

2、口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗,5.1 简介,LPC2000系列微控制器概述,LPC2000系列微控制器基于ARM7TDMI-S CPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。,LPC2000系列器件信息,芯片内部框图,LPC2000系列微控制器包含四大部分:,ARM7TDMI-S CPU,ARM7局部总线及相关部件,AHB高性能总线及相关部件,VLSI外设总线及相关部件,芯片内部框图,LPC2

3、000系列微控制器将ARM7TDMI-S配置为小端模式(Little-endian)。,ARM7TDMI-S CPU,AHB外设分配了2M字节的地址范围,它位于4G字节ARM寻址空间的最顶端。每个AHB外设都分配了16KB的地址空间。,LPC2000系列微控制器的外设功能(除中断控制器)都连接到VPB总线。AHB到VPB的桥将VPB总线与AHB总线相连。VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。每个VPB外设都分配了16KB的地址空间。,AHB To VPB 桥,芯片内部各单元简介,内部存储器包括无等待SRAM和Flash;,外部存储器控制器(EMC)支持4个BANK的外部

4、SRAM或Flash,每个BANK最多16MB;,系统功能包括维持芯片工作的一些基本功能,如系统时钟、复位等;,向量中断控制器(VIC)可以减少中断的响应时间,最多可以管理32各中断请求;,I2C串行接口为标准的I2C总线接口,支持最高速度400kb;,EMC,系统功能,VIC,I2C串行接口,芯片内部各单元简介,具有两个完全独立的SPI控制器,遵循SPI规范,可配置为SPI主机或从机;,具有两个UART接口,均包含16字节的接收/发送FIFO,内置波特率发生器。其中UART1具有调制解调器接口功能;,在LPC2119/2129/2290/2292等芯片中包含CAN总线接口;,看门狗定时器带有

5、内部分频器,可以方便设置溢出时间,在软件使能看门狗后只有复位可以禁止(具有调试模式);,SPI串行接口,UART0 & 1,CAN,看门狗定时器,芯片内部各单元简介,系统控制模块包括一些与其它外设无关的功能,如功率控制等;,外部中断有4路多引脚输入,可用于CPU掉电唤醒;,定时器0/1为两个独立的带可编程32位预分频器的32位定时器/计数器,具有捕获和匹配输出功能;,具有4/8路10位ADC,可以设置为多路循环采样模式。10位转换时间最短为2.44us;,系统控制,外部中断,TIMER0/1,ADC,芯片内部各单元简介,不同封装的芯片具有数目不等的IO口,它们可以承受5V电压。每个IO口可以独

6、立设置为输入/输出模式,在作为输出模式时可以分别置位或清零;,脉宽调制器可以灵活设置,以适应不同的场合。可以设置为单边沿或双边缘输出方式,可以灵活的设置频率和占空比;,实时时钟具有可编程的积存时钟分频器,以适应不同的晶振频率。带日历和时钟功能,提供秒、分、时、日、月、年和星期,同时具有非常的功耗。,通用I/O,PWM0,实时时钟,第5章 目录,1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO,10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉

7、宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗,5.2 引脚配置,LPC2000系列芯片外形,LPC2210/2212/2214,LPC2114/2124,5.2 引脚配置,引脚功能选择使用示例,LPC2000系列微控制器的引脚一般是多个功能复用,但是同一引脚在同一 引脚在同一时刻只能使用其中一个功能,这可以通过设置PINSELx寄存器来选择,详细介绍见“引脚连接模块”小节。,通过PINSEL0控制引脚功能,第5章 目录,1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO

8、,10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗,小节目录,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,小节目录,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,5.3 存储器寻址,地址空间,片外存储器,片内存储器,一个具体应用可能存在的物理存储器,5.3 存储器寻址,不同芯片内部存储器分布,LPC2210,LPC2114/2212,LPC2124/2214,0x00000000,0x0001FFFF,0x0003

9、FFFF,0x40000000,0x40001FFF,小节目录,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,5.3 存储器寻址,片内Flash编程方法:,JTAG,串口,1. 通过内置JTAG接口;,2. 通过在系统编程(ISP),使用UART0通信;,3. 通过在应用编程(IAP);,5.3 存储器寻址,片外Flash编程方法(LPC2200):,在CPU上运行一个装载程序(Loader,一般由用户编写),该程序通过串口接收要烧写的数据,然后擦除编程Flash。,串口,Loder 程序,外部 Flash,5.3 存储器寻址,片内SRAM的写操作,SRAM控制器

10、包含一个回写缓冲区,它总是保存着软件发送到SRAM的最后一个字数据。该数据只有在软件请求下一次写操作时才写入SRAM。如果发生芯片复位,实际的SRAM内容将不会反映最近一次的写操作。,?,?,回写缓冲区,内部SRAM,写入地址,写入A,写入B,A,A,写入A,B,小节目录,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,5.3存储器寻址,存储器映射基本概念,ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。 通过地址映射的方法将各存

11、储器分配到特定的地址范围后,这时用户所看见的存储器分布为存储器映射。,5.3存储器寻址,芯片复位后用户看见的地址空间,128KB Flash(LPC2114/2212),256KB Flash(LPC2124/2214),16KB SRAM,8KB BootBlock,2MB VPB 外设,2MB AHB 外设,0x00000000,0xFFFFFFFF,保留给片内存储器使用,保留给片内存储器使用,保留给外部储器使用,0x40000000,0xE0000000,0x80000000,0xF0000000,0x00020000,地址空间,5.3存储器寻址,AHB和VPB,AHB(先进的高性能总线

12、)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。,注意:AHB和VPB外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作,5.3存储器寻址,外设存储器映射,均为12816KB(2MB)范围,5.3存储器寻址,AHB外设映射,5.3存储器寻址,VPB外设映射,5.3存储器寻址,Boot lock的映射地址安排,为了兼容将来的器件,整个Boot Block被映射到片内存储器空间的顶端。所以将来的芯片内置不同的RAM和FALSH都不会影响Boot Block的位

13、置。,地址空间,映射位置固定在内部存储器顶端,RAM和Flash 的变化不会影响BootBlock的位置,SRAM,Flash,0x80000000,5.3存储器寻址,存储器重新映射,存储器重新映射是将复位后用户所见的存储器中部分区域,再次映射到其它的地址上。 对于Philips的LPC系列ARM微控制器,存储器重新映射区域一共为64字节,分别为异常向量区(32字节)和紧随其后的32字节。存储器重新映射的方法允许在不同模式下处理中断,重新映射的存储器区域在地址0x000000000x0000003F处。存储器重新映射的控制见“存储器映射控制”小节。,5.3存储器寻址,使用存储器重新映射的原因

14、使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题 用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少 为超过单字转移指令范围的跳转提供空间来保存常量,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,小节目录,5.3存储器寻址,预取指中止和数据中止异常,如果试图访问一个保留地址或未分配区域的地址,ARM处理器将产生预取指中止或数据中止异常。,5.3存储器寻址,预取指中止和数据中止异常,这些区域分别为:,1.特定的ARM器件所没有的存储器映射区域;,2. AHB外设空间中未分配的区域;,3. VPB外设空间中未分

15、配的区域。,5.3存储器寻址,预取指中止和数据中止异常,注意: 只有在试图执行从非法地址取指的指令时,ARM才会将预取指中止标志与相关的指令(没有意义的指令)一起保存到流水线并对中止进行处理。当代码在非常靠近存储器边界执行时,防止了由预取指所导致的意外中止。,5.3存储器寻址,预取指中止和数据中止异常举例,指令流水线,存储器,程序 存储器,第N次取指,第N+1次取指,5.3存储器寻址,预取指中止和数据中止异常举例,指令流水线,存储器,程序 存储器,第N+2次取指,5.3存储器寻址,预取指中止和数据中止异常举例,指令流水线,存储器,程序 存储器,5.3存储器寻址,预取指中止和数据中止异常举例,指

16、令流水线,存储器,程序 存储器,第N+3次取指,此时流水线的执行级执行了无效指令,发生预取指中止。如果指令C为跳转指令则可以避免预取指中止的发生。,存储器分布 各存储器操作方法 存储器映射 预取指中止和数据中止 异常向量表,小节目录,5.3存储器寻址,异常向量表,对于每一个异常事件,都有一个与之相对应的处理程序,它们是关联在一起的,并以一张一维表的格式存储在存储器的固定单元中。这张指定了各异常中断及其处理程序的对应关系的表,称为异常向量表。,5.3存储器寻址,异常向量表,各异常向量的固定位置,该位置被Boot装载程序用作有效用户程序的检测标志。通过定义此保留值,使向量表所有数据32位累加和为0

17、,芯片复位后才能脱机运行用户程序。,5.3存储器寻址,位于启动代码中的异常向量表,什么是启动代码? 一般在32位ARM应用系统中,大多数采用C语言进行软件编程。但是在运行应用代码前需要进行系统初始化。 常用一个汇编文件作启动代码,它可以实现异常向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、外围部件初始化、地址重映射等操作。,位于启动代码中的异常向量表,CODE32 AREA vectors,CODE,READONLY ENTRY Reset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0xb9205f80 LDR

18、PC, PC, #-0xff0 LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,前32字节为异常入口,后32字节为跳转地址,异常向量表,位于启动代码中的异常向量表,CODE32 AREA vectors,CODE,READONLY ENTRY Reset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0xb9205f80 LDR PC,

19、PC, #-0xff0 LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,异常向量表,例如:发生未定义异常时,1.程序计数器(PC)指向0x00000004;,2.执行当前的指令,将Undefined地址值装入PC,实现至未定义异常处理程序的跳转。,装入,位于启动代码中的异常向量表,CODE32 AREA vectors,CODE,READONLY ENTRY Reset LDR PC, Re

20、setAddr LDR PC, UndefinedAddr . . . DCD 0xb9205f80 LDR PC, PC, #-0xff0 LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,异常向量表,注意:异常向量表中程序跳转使用LDR指令,而没有使用B指令。,原因: 1.LDR指令可以全地址范围跳转,而B指令只能在前后32MB范围内跳转; 2.芯片具有Remap功能。当向量表位于内部RA

21、M或外部存储器中,用B指令不能跳转到正确的位置。,B ResetAddr,第5章 目录,1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO,10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗,5.4 系统控制模块小节目录,系统控制模块概述 系统时钟 复位 外部中断 存储器映射控制 功率控制 唤醒定时器,5.4 系统控制模块小节目录,系统控制模块概述 系统时钟 复位 外部中断 存

22、储器映射控制 功率控制 唤醒定时器,5.4 系统控制模块,系统控制模块概述,系统控制模块包括一些系统构件和控制寄存器,它们具有众多与芯片内其它外设无关的功能。系统控制模块包括:系统时钟单元、复位、外部中断输入、存储器映射控制、功率控制和唤醒定时器。,5.4 系统控制模块小节目录,系统控制模块概述 系统时钟 复位 外部中断 存储器映射控制 功率控制 唤醒定时器,系统时钟小节目录,系统时钟概述 晶体振荡器(5.4.4) PLL(5.4.9) VPB分频器(5.4.10),系统时钟小节目录,系统时钟概述 晶体振荡器(5.4.4) PLL(5.4.9) VPB分频器(5.4.10),系统时钟,系统时钟

23、概述,CPU正常工作需要有合适的时钟信号,包括ARM7内核使用的CCLK时钟,和芯片外设使用的PCLK时钟。 通过LPC2000系列微控制器的时钟产生单元产生ARM7内核和芯片外设正常工作所需要的时钟节拍。,系统时钟,系统时钟概述,FOSC,CPU时钟结构,系统时钟,时钟产生单元,时钟产生单元包括晶体振荡器、锁相环振荡器(PLL)和VPB分频器。,系统时钟概述 晶体振荡器(5.4.4) PLL(5.4.9) VPB分频器(5.4.10),系统时钟小节目录,系统时钟,晶体振荡器,LPC2000微控制器可以使用内部的晶体振荡器产生时钟信号,也可以从外部引入时钟信号。,从属模式,振荡模式,系统时钟,

24、晶体振荡器,使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:150(MHz),其幅度不小于200m Vrms。,系统时钟,晶体振荡器,使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:130(MHz)。,系统时钟,晶体振荡器,注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在1025(MHz)之间。,从属模式,振荡模式,系统时钟小节目录,系统时钟概述 晶体振荡器(5.4.4) PLL(5.4.9) VPB分频器(5.4.10),系统时钟,锁相环(PLL),由晶体振荡器输出的时钟信号,通过PLL升频,可以获得更高的系统时钟

25、(CCLK)。 PLL接受的输入时钟频率范围为1025MHz,通过一个电流控制振荡器(CCO)倍增到1060MHz。,10MHz25MHz,10MHz60MHz,PLL,PLL内部结构,相位频率 检测,CCO,1 0,2P 分频,M 分频,0 1,0 1,FOSC,FCCO,FCLK,晶体振荡器输入时钟,对输入的两路时钟信号进行相位频率检测,将两者差值以电流形式输出,电流控制振荡器,根据输入电流控制振荡频率,对输入时钟分频,输入时钟 2选1开关,PLL内部结构,相位频率 检测,CCO,1 0,2P 分频,M 分频,0 1,0 1,FOSC,FCCO,FCLK,FCCO / 2P,FCCO /

26、(2P*M),CCO自由振荡,输出频率FCCO,根据两个输入时钟的相位偏差,控制CCO。当两个时钟相位同步时,回路锁定。,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;,PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。,注:其中“”表示该位保留,用户不要向该位写入1,读取的值将不确定,PLLC,PLLE,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLLC,PLLE,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLL配置

27、寄存器(PLLCFG):,MSEL4:0:PLL倍频器值,在PLL频率计算中其值为(M-1);,PSEL1:0:PLL分频器值,在PLL频率计算中其值为P 。,PLL相关寄存器,PLL状态寄存器(PLLSETA):,MSEL4:0、PSEL1:0、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;,PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。,PLL相关寄存器,PLL馈送寄存器(PLLFEED):,PLLFEDD7:0:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效;,PLL相关寄存器,馈送序列为: 1.将值0xAA写入P

28、LLFEED; 2.将值0x55写入PLLFEED。,PLL相关寄存器,PLL馈送寄存器(PLLFEED):,PLL频率计算,回路锁定后:FOSC = FCCO / (2P M) FCLK = FOSC M,FOSC:晶振频率; FCCO :CCO振荡器输出频率FCCLK:处理器时钟频率; M:PLL倍频值 P:PLL分频值,必须满足的条件: FOSC范围:10MHz25MHz; FCCLK范围:10MHz60MHz; FCCO范围:156MHz320MHz;,系统时钟,锁相环(PLL)计算流程,1.选择处理器的 工作频率(CCLK),2.选择振荡器 频率(FOSC),3.计算M值 配置MSE

29、L位,4.计算P值 配置PSEL位,根据处理器的整体要求、UART波特率的支持等因素来决定。外围器件的时钟频率可以低于处理器频率,CCLK 必须为FOSC的整数倍。,M = CCLK / FOSC,取值范围132。写入MSEL的值为(M-1)。,选择合适的P值,使FCCO在限制范围内。P只能取1、2、4或8。写入PSEL的值为P。,系统时钟,锁相环(PLL)计算实例,系统要求:FOSC10MHz、CCLK 60MHz,1.计算M值:M CCLK / FOSC 6 ;,2.设置MSEL位:写入值为(M1)5;,3. 设置PSEL位:PFCCO/(CCLK2) (156320)/1201.32.6

30、7 所以P取整数2,PSEL写入值为2。,系统时钟,锁相环(PLL)注意要点,PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定; PLL只能通过软件使能; PLL在激活后必须等待其锁定,然后才能连接; PLL如果设置不当将会导致芯片的错误操作。,系统时钟小节目录,系统时钟概述 晶体振荡器(5.4.4) PLL(5.4.9) VPB分频器(5.4.10),系统时钟,VPB分频器,VPB分频器将PLL输出的时钟信号分频后作为芯片外设的时钟。,VPB分频器,系统时钟,VPB分频器,VPB分频器决定处理器时钟(CCLK)与外设器件所使用的时钟(PCLK)之间的关系。

31、VPB用途1:通过VPB总线为外设提供所需的PCLK时钟,以便外设在合适的速度下工作; VPB用途2:在应用不需要任何外设全速运行时使功耗降低。,系统时钟,VPB分频器相关寄存器,VPB分频寄存器(VPBDIV):,VPBDIV1:0:设置分频值,可以设定3个值;,XCLKDIV1:0:这些位用于控制LPC2200系列微控制器A23/XCLK引脚上的时钟驱动,取值编码方式与VPBDIV相同;,系统时钟,VPB分频器相关寄存器,VPB分频寄存器(VPBDIV):,系统时钟初始化流程,系统时钟初始化启动代码实例,/应当与实际一至晶振频率,10MHz25MHz,应当与实际一至 #define Fos

32、c 11059200 /系统频率,必须为Fosc的整数倍(132),且=60MHZ #define Fcclk (Fosc * 4) /CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz320MHz #define Fcco (Fcclk * 4) /VPB时钟频率,只能为(Fcclk / 4)的1、2、4倍 #define Fpclk (Fcclk / 4) * 1,将系统内各时钟的频率定义为宏,方便用户操作。,设置晶振频率,设置内核工作频率,设置CCO输出频率,设置外设工作频率,系统时钟初始化启动代码实例,使能PLL,设置VPB 分频值,C代码分析:,PLLCON = 1

33、; #if (Fpclk / (Fcclk / 4) = 1 VPBDIV = 0; #endif #if (Fpclk / (Fcclk / 4) = 2 VPBDIV = 2; #endif #if (Fpclk / (Fcclk / 4) = 4 VPBDIV = 1; #endif . . .,注意:在启动代码中很多地方使用了条件编译的方法,根据用户定义的宏来决定要设置的值,可以方便用户使用。,系统时钟初始化启动代码实例,设置PLL 分频值,C代码分析:,. . . #if(Fcco/Fcclk)=2 PLLCFG=(Fcclk/Fosc)-1)|(05); #endif #if(Fc

34、co/Fcclk)=4 PLLCFG=(Fcclk/Fosc)-1)|(15); #endif #if(Fcco/Fcclk)= 8 PLLCFG=(Fcclk/Fosc)-1)|(25); #endif #if(Fcco/Fcclk)=16 PLLCFG=(Fcclk/Fosc)-1)|(35); . . .,系统时钟初始化启动代码实例,PLL馈送序列,等待PLL锁定,连接PLL,PLL馈送序列,C代码分析:,. . . PLLFEED = 0xaa; PLLFEED = 0x55; while(PLLSTAT ,注意:在修改PLL的控制和配置寄存器后,必须写入馈送序列,使修改生效。,5.4

35、 系统控制模块小节目录,系统控制模块概述 系统时钟 复位 外部中断 存储器映射控制 功率控制 唤醒定时器,复位,复位的分类 外部复位 把nRESET引脚拉为低电平,并保持一个最小时间,引发复位 看门狗复位 通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位,复位,外部复位 外部复位引脚(nRESET)连接内部的施密特触发器,通过施密特触发器可以滤除引脚输入的干扰信号,保证复位的可靠性。如果外部复位信号一直有效,芯片将保持复位状态。,注意: 如果芯片使用了外部晶体,上电后nRESET引脚的复位信号必须保持至少10ms,以便产生稳定的振荡信号。如果晶振已经稳定运行且X1引脚上以出现稳定信号时

36、,nRESET引脚的复位信号只需保持至少300ns时间。,1. 在芯片未上电时,芯片振荡器没有工作;,复位,UX1,t,外部复位,复位,振荡器稳定需要一段时间,UX1,t,外部复位,2. 芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms;,=10ms,=300ns,复位,此时振荡器稳定工作,外部复位,3. 在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns;,复位,任何复位源引起的芯片复位都会启动唤醒定时器,当计数到一个固定个数的时钟时,处理器开始执行指令。这确保振荡器和芯片所需要的其它模拟电路在处理器开始执行

37、指令之前能够正确工作。,外部复位与内部看门狗复位的共同点,复位,外部复位与内部看门狗复位的区别,外部复位将把某几个特定引脚的值锁存,来决定系统复位后的状态,而看门狗(WDT)复位则无此功能。,复位,复位后的系统状态,芯片被复位后,处理器和外设寄存器都恢复为默认状态。程序计数器(PC)值为0,即CPU复位后运行的第一条代码位于0x00000000处。此时位于该地址的程序并不位于片内Flash,而是来自Boot Block的异常向量表的重新映射。通过异常向量表的复位异常入口,程序跳转至Boot Block中执行Boot程序。,复位,复位后的系统状态,地址空间,1. 复位后用户见到的存储器分布,2.

38、 BootBlock中的异常向量表重新映射,复位,复位后的系统状态,地址空间,PC指向,3. PC指向0x0000地址处,CPU执行复位后的第一条指令,复位,复位后的系统状态,地址空间,复位异常入口,未定义异常入口,软件中断入口,. . .,0x00000004,0x00000008,0x00000040,4. 通过跳转指令,程序跳入Boot Block,执行Boot程序。,复位,复位后的系统状态,PC指向,地址空间,复位异常入口,未定义异常入口,软件中断入口,. . .,0x00000004,0x00000008,0x00000040,复位,Boot程序,Boot程序是芯片生产厂家固化在芯片

39、中的一段代码,它完成芯片复位后的初始化操作,并提供实现Flash编程的方法。Boot装载程序可启动对空片的编程、已编程器件的擦除和再编程,以及在运行的系统中由应用程序对Flash存储器进行编程。,Boot程序工作流程LPC2114/2124,复位,运行ISP服务程序,看门狗复位,根据硬件 (P1.20、P1.26) 配置,进入ISP状态吗? (P0.14为低),初始化,用户代码 是否有效,执行用户代码 (片内Flash: 0x00000000),N,Y,Y,Y,N,N,在此检测特定引脚,检测用户代码是否有效,Boot程序工作流程LPC2210/2212/2214,复位,看门狗复位,进入ISP模

40、式? (P0.14为低),初始化,用户代码 是否有效,芯片加密,允许调试,外部引导,芯片加密,运行ISP服务程序,执行外部用户代码 (0x80000000),执行内部用户代码 (0x00000000),N,N,Y,Y,N,N,N,N,Y,Y,Y,Y,在此检测特定引脚,检测用户代码是否有效,复位,有效用户代码的判别,LPC2000系列微控制器规定 “内部Flash中向量表所有数据的32位累加为零”时,判定内部Flash中的代码为有效可执行代码。即只有当向量表所有数据32位累加和为零时,用户的程序才能脱机运行。,有效用户代码的判别,CODE32 AREA vectors,CODE,READONLY

41、 ENTRY Reset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0xb9205f80 LDR PC, PC, #-0xff0 LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,异常向量表,前32字节为异常入口,后32字节为跳转地址,有效用户代码的判别,Reset 0xe59ff018 ldr pc,ResetAddr 0xe59ff

42、018 ldr pc,UndefinedAddr . . . 0xb9205f80 dcd 0xb9205f80 0xe51ffff0 ldr pc,0x7ffff030 0xe59ff018 ldr pc,FIQ_Addr ResetAddr 0x8000008c dcd 0x8000008c UndefinedAddr 0x80000040 dcd 0x80000040 . . . Nouse 0x00000000 dcd 0x00000000 IRQ_Addr 0x00000000 dcd 0x00000000 FIQ_Addr 0x8000004c dcd 0x8000004c,异常向

43、量表反汇编代码,前32字节为异常入口,后32字节为跳转地址,有效用户代码的判别,Reset 0xe59ff018 ldr pc,ResetAddr 0xe59ff018 ldr pc,UndefinedAddr . . . 0xb9205f80 dcd 0xb9205f80 0xe51ffff0 ldr pc,0x7ffff030 0xe59ff018 ldr pc,FIQ_Addr ResetAddr 0x8000008c dcd 0x8000008c UndefinedAddr 0x80000040 dcd 0x80000040 . . . Nouse 0x00000000 dcd 0x0

44、0000000 IRQ_Addr 0x00000000 dcd 0x00000000 FIQ_Addr 0x8000004c dcd 0x8000004c,异常向量表反汇编代码,指令的机器码,指令,有效用户代码的判别,Reset 0xe59ff018 ldr pc,ResetAddr 0xe59ff018 ldr pc,UndefinedAddr . . . 0xb9205f80 dcd 0xb9205f80 0xe51ffff0 ldr pc,0x7ffff030 0xe59ff018 ldr pc,FIQ_Addr ResetAddr 0x8000008c dcd 0x8000008c U

45、ndefinedAddr 0x80000040 dcd 0x80000040 . . . Nouse 0x00000000 dcd 0x00000000 IRQ_Addr 0x00000000 dcd 0x00000000 FIQ_Addr 0x8000004c dcd 0x8000004c,异常向量表反汇编代码,8条指令的机器码累加和为0,表示用户代码有效,Reset 0xe59ff018 ldr pc,ResetAddr 0xe59ff018 ldr pc,UndefinedAddr . . . 0xb9205f80 dcd 0xb9205f80 0xe51ffff0 ldr pc,0x7

46、ffff030 0xe59ff018 ldr pc,FIQ_Addr ResetAddr 0x8000008c dcd 0x8000008c UndefinedAddr 0x80000040 dcd 0x80000040 . . . Nouse 0x00000000 dcd 0x00000000 IRQ_Addr 0x00000000 dcd 0x00000000 FIQ_Addr 0x8000004c dcd 0x8000004c,异常向量表反汇编代码,8条指令的机器码累加和为0,表示用户代码有效,有效用户代码的判别,0x00000000,0xe59ff018,0xe59ff018,. .

47、.,0xb9205f80,0xe51ffff0,0xe59ff018,跳转地址数据不在累加范围内,通过调整该保留字,使累加和为0,5.4 系统控制模块小节目录,系统控制模块概述 系统时钟 复位 外部中断 存储器映射控制 功率控制 唤醒定时器,外部中断,外部中断,外部中断是通过引脚输入符合要求的信号而触发的中断。LPC2114/2124/2212/2214含有4个外部中断输入(作为可选引脚功能,通过PINSEL0/1寄存器设置相应管脚为外部中断功能)。外部中断输入可用于将处理器从掉电模式唤醒。,外部中断,外部中断内部示意图,2.控制某几个引脚作为外部中断输入;,管脚 连接控制,1.可作为外部中断输入的引脚;,外部中断 极性控制,外部中断 方式控制,掉电 唤醒控制,中断标志,3.控制触发外部中断的信号波形;,4.控制外部中断产生后是否唤醒CPU;,5.外部中断产生后设置的标志位;,(2),(1),(4),(5),外部中断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1