第4章LPC2000系列ARM硬件结 构(1~4)_第1页
第4章LPC2000系列ARM硬件结 构(1~4)_第2页
第4章LPC2000系列ARM硬件结 构(1~4)_第3页
第4章LPC2000系列ARM硬件结 构(1~4)_第4页
第4章LPC2000系列ARM硬件结 构(1~4)_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本章内容 1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器 (EMC) 7.引脚连接模块 8.GPIO 9.向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12.SPI接口 13.I2C接口 14.UART(0、1) 15.A/D转换器 16.看门狗 17.脉宽调制器(PWM) 18.实时时钟 本章学习要求 了解:LPC2000处理器的结构、特点及基本功能。 理解:嵌入式系统外围主要模块开发的特点 。 掌握:LPC2000处理器片上基本功能模块及其应用开发技 术。 重点内容:存储器寻址、系统控制模块

2、、外部存储器控制 器、向量中断控制器、定时器、看门狗、脉宽调制器、实 时时钟功能及应用开发。 教学难点:ARM处理器的启动程序设计。 4.1 LPC2000系列简介 LPC2000系列微控制器基于ARM7TDMI-S CPU内 核。支持ARM和Thumb指令集,芯片内集成丰富外设, 而且具有非常低的功率消耗。使该系列微控制器特别适 用于工业控制、医疗系统、访问控制和POS机等场合。 简介 LPC2000系列ARM产品 LPC2100系列 LPC2200系列 LPC2300系列 LPC2400系列 LPC2800系列 4.1 LPC2100/2200系列简介 器件器件引脚数引脚数片内片内RAMR

3、AM片内片内FlashFlash1010位位ADAD通道数通道数备注备注 LPC21146416KB128KB4 LPC21246416KB256KB4 LPC221014416KB8 带外部 存储器接口 LPC222014464KB8 LPC221214416KB128KB8 LPC221414416KB256KB8 器件信息 关于LPC2000其它器件的介绍请登录 “LPC2000系列ARM”专栏 ARM7TDMI-S CPU AHB To VPB桥桥 EMC VIC I2C串行接口 SPI串行接口 UART 0 数据宽度:8/16/32位。 4.3.2 片外存储器 片外Flash编程方法

4、 Flash的擦写操作需要配合一段符合Flash编程时序 的代码,这段代码称为装载程序,一般由用户编写。 程序代码(源)程序代码(目标) Loader 目标板 CPU BUS Flash 串口 下载用户代码时,首先得在CPU内运行装载程序, 通过它把从串口(或其它接口)接收的代码写到片外 Flash中。 4.3 存储器寻址 1.片内存储器 2.片外存储器 3.存储器映射 4.预取指中止和数据中止异常 5.存储器重映射及引导块 6.启动代码相关部分 4.3.3 存储器映射 概述 ARM芯片可以存在片内和片外存储器,这些存储 器本身不具有地址信息,它们在芯片中的地址是由芯 片厂家或用户分配的,那么

5、给物理存储器分配逻辑地 址的过程称为存储器映射。通过这些逻辑地址就可以 访问到相应存储器的物理存储单元。 0 x0000 0000 2.0GB 1.0GB 0.0GB 3.0GB 3.5GB 4.0GB 3.75GB 0 x0002 0000 0 x0004 0000 0 x4000 0000 0 x4000 4000 0 x7FFF E000 0 x8000 0000 0 x8100 0000 0 x8200 0000 0 x8300 0000 0 x8400 0000 0 xC000 0000 0 xE000 0000 0 xF000 0000 0 xFFFF FFFF 4.3.3 存储器

6、映射 系统存储器映射 256KB 片内非失忆性存 储器(LPC2124/2214) 2MB AHB外设 128KB 片内非失忆性存 储器(LPC2114/2212) 16KB 片内静态RAM 8KB Boot Block(片 内ROM存储器重映射) 2MB VPB外设 16MB Bank0 保留 保留给片内RAM存储器 保留给片内FLASH存储器 16MB Bank1 16MB Bank2 16MB Bank3 BUS FLASH AHB外设 FLASH RAM Boot Block VPB外设 ARM7 处理器核 AHB To VPB桥桥 保留给片外存储器 用户所见存储器的分布 4.3.3

7、存储器映射 AHB和VPB AHB(先进的高性能总线)和VPB(VLSI外设 总线)外设区域都为2M字节,可各分配128个外设。 每个外设空间的规格都为16K字节,这样就简化了每 个外设的地址译码。 注意:外设寄存器的地址都是字对齐。AHB 和 VPB外设区域中不管是字还是半字,都是一次性访 问。例如不可能对一个字寄存器的最高字节执行单 独的读或写操作。 4.3.3 存储器映射 外设存储器映射 注:AHB和VPB均 为128x16kB(2MB) 范围。 0 x0000 0000 2.0GB 1.0GB 0.0GB 3.0GB 3.5GB 0 x0002 0000 0 x0004 0000 0

8、x4000 0000 0 x4000 4000 0 x7FFF E000 0 x8000 0000 0 x8100 0000 0 x8200 0000 0 x8300 0000 0 x8400 0000 0 xC000 0000 0 xE000 0000 256KB 片内非失忆性存 储器(LPC2124/2214) 128KB 片内非失忆性存 储器(LPC2114/2212) 16KB 片内静态RAM 8KB Boot Block(片 内ROM存储器重映射) 16MB Bank0 保留给片内RAM存储器 保留给片内FLASH存储器 16MB Bank1 16MB Bank2 16MB Bank

9、3 保留给片外存储器 4.0GB 3.75GB 0 xF000 0000 0 xFFFF FFFF 2MB AHB外设 2MB VPB外设 保留 0 xE000 00003.5GB 4.0GB-2MB 保留 4.0GB 0 xFFE0 0000 AHB外设 0 xF000 0000 3.75GB 0 xFFFF FFFF 3.5GB 3.5GB+2MB VPB外设 保留 0 xE000 0000 0 xE020 0000 4.3.3 存储器映射 AHB外设映射 4.0GB-2MB 保留 保留 0 xE000 0000 3.75GB 3.5GB 3.5GB+2MB VPB外设 0 xE020 0

10、000 0 xF000 0000 0 xFFE0 0000 4.0GB AHB外设 0 xFFFF FFFF 0 xFFE0 00004.0GB-2MB 0 xFFE00000 0 xFFE04000 0 xFFFF8000 0 xFFFFC000 向量中断控制器 0 xFFFFF000 0 xFFFFFFFF (AHB外设 #1- AHB外设 #125) 未使用 (AHB外设#0) 未使用 (AHB外设#126) 未使用 外部总线控制器 注:只有 LPC2200系列 微处理器有外 部总线控制器 4.3.3 存储器映射 VPB外设映射 4.0GB-2MB 保留 保留 3.75GB 3.5GB+

11、2MB 4.0GB AHB外设 0 xFFFF FFFF 0 xFFE0 0000 0 xF000 0000 0 xE020 0000 3.5GB VPB外设 0 xE000 0000 3.5GB+2MB0 xE020 0000 系统控制模块 (VPB外设#127) 10位A/D (VPB外设#13) 看门狗定时器 (VPB外设#0) TIMER0 (VPB外设#1) 0 xE000 0000 0 xE000 4000 0 xE000 8000 0 xE003 4000 0 xE003 8000 0 xE01F C000 0 xE01F FFFF 0 xE005 C000 I2C1 (VPB外

12、设#23) 未使用 未使用 SSP (VPB外设#26) 未使用 0 xE006 C000 0 xE006 8000 0 xE006 0000 Flash SRAM Boot Block VPB AHB EX-Memory 部分器件没有 0 xFFFF FFFF 0 x0000 0000 0 x4000 0000 0 x8000 0000 0 xE000 0000 4.3.4 预取指中止和数据中止异常 概述 如果试图访问一个保留区域地址或未分配区域地 址,ARM处理器将产生预取指中止或数据中止异常。 未定义 区域 2 保留区域1 a b c d 4.3.4 预取指中止和数据中止异常 保留地址区

13、域 Flash SRAM Boot Block VPB AHB EX-Memory a b c d 片内非易失性存储器与片内SRAM之间 保留给片内存储器的地址空间。 a 片内静态RAM与外部存储器之间保留 给片内存储器的地址空间。 b 外部存储器区域中无法通过外部存储器 控制器(EMC)来访问的地址空间。 c AHB和VPB空间的保留区域。 d 4.3.4 预取指中止和数据中止异常 未分配地址区域 向量中断控制器 (AHB外设 #1- AHB外设 #125) 未使用 (AHB外设#0) 未使用 (AHB外设#126) 未使用 外部总线控制器 (VPB外设#14- VPB外设#126 #23,

14、#26除外) 未使用 系统控制模块 (VPB外设#127) 10位A/D (VPB外设#13) 看门狗定时器 (VPB外设#0) TIMER0 (VPB外设#1) AHB外设空间 中未分配区域 VPB外设空间 中未分配区域 4.3 存储器寻址 1.片内存储器 2.片外存储器 3.存储器映射 4.预取指中止和数据中止异常 5.存储器重映射及引导块 6.启动代码相关部分 4.3.5 存储器重映射及引导块 存储器重映射 将已经过映射的存储器再次映射的过程称为存储 器重映射,它使同一物理存储单元出现多个不同的逻 辑地址。这些存储单元主要包括引导块“Boot Block” 和用于保存异常向量表的少量存储

15、单元。 Addr1 程序所见存储器 . Addr2 Addr1 存储器管理部件 0 x1234 0 x1234 实际物理存储器 0 x1234 注意:存储器重映射并不是对映射单元的内容进 行了复制,而只是将多个地址指向了同一个存储单元, 这种效果是通过芯片内部的“存储器管理部件”实现 的。 实际物理存储单元通过 存储器管理部件进行存储器 映射,获得逻辑地址Addr1。 1 实际物理存储单元通过 存储器管理部件进行存储器 重映射,获得逻辑地址 Addr2。此时,逻辑地址 Addr1和Addr2可以访问同一 实际物理存储单元。 2 4.3.5 存储器重映射及引导块 引导块及其重映射 引导块(Boo

16、t Block)是芯片设计厂家在LPC2000 系列ARM内部固化的一段代码,用户无法修改或删除。 这段代码在芯片复位后被首先运行,其功能主要是: 判断运行哪个存储器上的程序; 检查用户代码是否有效; 判断芯片是否被加密; 芯片的在应用编程(IAP)以及在系统编程功能(ISP)。 注意:部分器件内部虽然没有用户Flash空间(比如 LPC2210/2220/2290),但它们仍然存在Boot Block,并且 复位后会被首先运行。 4.3.5 存储器重映射及引导块 引导块在存储器中的状态 LPC2200系列芯片的Boot Block为8KB大小,它们 占用了用户的Flash空间。 248KB

17、用户Flash 0 x00000000 0 x0003FFFF Boot Block (8KB) 片内 256KB Flash (LPC2124/2214) 存储器空间 120KB 用户用户Flash 0 x00000000 0 x0001FFFF Boot Block(8KB) 片内 128KB Flash (LPC2114/2212) 存储器空间 LPC2130系列芯片的Boot Block为12KB大小,除了 LPC2138占用用户的Flash空间外,该系列中其它的芯片 不占用用户Flash空间。 用户用户Flash (32/64/128/256KB) 0 x00000000 0 x00

18、07D000 Boot Block(12KB) (LPC2131/2/4/6) 存储器空间 不被Boot Block占用 用户Flash (500KB) 0 x00000000 Boot Block(12KB) 片内 512KB Flash (LPC2138) 存储器空间 0 x0007D000 Boot Block 重新映射 Boot Block 重新映射 4.3.5 存储器重映射及引导块 保留于片内Flash VPH和AHB外设 保留于片内SRAM 16KB 片内SRAM 248KB 用户用户Flash 0 x00000000 0 x0003FFFF 0 x40000000 0 x4000

19、3FFF 0 xE0000000 0 xFFFFFFFF 0 x80000000 保留于片外存储器 Boot Block 片内 256KB Flash (LPC2124/2214)(LPC2114/2212) 保留于片内Flash VPH和AHB外设 保留于片内SRAM 16KB 片内SRAM 120KB 用户Flash 0 x00000000 0 x0001FFFF 0 x40000000 0 x40003FFF 0 xE0000000 0 xFFFFFFFF 0 x80000000 保留于片外存储器 Boot Block 片内 128KB Flash Boot BlockBoot Bloc

20、k 引导块(Boot Block)的重映射 异常向量表位于存储器映射的0 x00000 x001C地 址空间,定义了8个异常向量,每个异常向量占一个字。 通常在0 x00000 x001C地址空间每个异常入口放 置一条ARM 跳转指令,在其后的0 x00200 x0003F地 址空间上放置跳转目标地址,即异常服务函数的入口地 址。 所以一个异常向量表实际包含了8个字的异常入口和 8个字的跳转目标地址,占用了16个字(64字节)的存 储单元。 4.3.5 存储器重映射及引导块 异常向量表概述 4.3.5 存储器重映射及引导块 地址地址异常异常 0 x0000 0000复位 0 x0000 000

21、4未定义指令 0 x0000 0008软件中断 0 x0000 000C预取指中止(从存储器读取指令出错) 0 x0000 0010数据中止(访问存储器数据出错) 0 x0000 0014保留 * 0 x0000 0018IRQ 0 x0000 001CFIQ ARM异常入口 该位置被Boot装载程序用作有效 用户程序的检测标志。通过定义此保 留值,使向量表所有数据32位累加和 为0,芯片复位后才能脱机运行用户程 序。 4.3.5 存储器重映射及引导块 异常向量表的重映射 异常向量表可以来自四个不同的区域:Boot Block、 片内Flash、片内RAM和外部存储器。微控制器可以执 行这些存

22、储器中的代码。 除了片内Flash的向量表位于0 x00000 x003F地址 上,其他存储器的向量表都不位于这个地址。为了能 让ARM内核通过访问0 x00000 x003F地址访问到其 他存储区域的向量表,这样向量表必须进行重映射。 注意:除了“用户片内Flash 模式”外,其它模式 下都无法访问片内Flash的0 x00000 x003F区域。 来自不同区域的异常向量表 0 x0000 0000 0 x0000 003F 0 x4000 0000 0 x4000 003F 0 x7FFF E000 保留给片内SRAM 保留给片内Flash 保留给片外存储器 0 xFFFF FFFF 保留

23、 0 xE000 0000 0 x7FFF E03F 0 x8000 0000 0 x8000 003F 片内Flash 片内SRAM Boot Block 外部存储器 AHB外设 VPB外设 异常向量表 异常向量表 异常向量表 异常向量表 异常向量表 地址 重映射 复位后,首先运行Boot Block程序,需将Boot Block内 0 x7FFF E0000 x7FFF E03F的 异常向量表重映射到0 x0000 0 x003F地址以允许处理异常并 在Boot装载过程中使用中断。 此时无需进行Flash向量表 的重映射,其向量表本身就处 于0 x00000 x003F地址空间。 异常向量

24、表异常向量表 再根据MEMMAP寄存器的 设置运行片内Flash代码。片内RAM代码。片外存储器代码。 此时需将片内RAM0 x4000 00000 x4000 003F的向量表 重映射到0 x00000 x003F地 址空间。 此时需将外部存储器 0 x8000 00000 x8000 003F 的向量表重映射到0 x0000 0 x003F地址空间。 地址 重映射 地址 重映射 在中断向量表中不直接LDR PC,异常地址.而是使用一 个标号,然后再在后面使用DCD定义这个标号,其原 因是: LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转 到32MB 范围,而现在这样在LDR

25、 PC, xxxx这条指令 不远处用xxxxDCD 定义一个字,而这个字里面存放 最终异常服务程序的地址,这样可以实现4GB 全范围 跳转。 4.3 存储器寻址 1.片内存储器 2.片外存储器 3.存储器映射 4.预取指中止和数据中止异常 5.存储器重映射及引导块 6.启动代码相关部分 4.3.6 系统启动代码介绍 概述 ARM微处理器在上电 或复位后首先运行Boot Block中的一段代码,这段 代码称为“引导代码”,由 芯片厂商固化在芯片中。 此后,在正式运行用户 main函数之前,还需要运行 一段 “启动代码”,由用 户添加。 引导代码 (BootBlock) 用户main函数 启动代码

26、 向量表定义; 堆栈初始化; 系统变量初始化; 中断系统初始化; I/O初始化; 外围初始化; 地址重映射等操作。 上电/复位 设置 存储器重映射 设置 系统时钟 设置 存储器加速 设置 中断向量控制器 target.c 异常向量表 初始化外部总线 (LPC2200) 初始化 各模式堆栈 初始化 系统硬件 初始化 执行环境 Startup.s 进入main函数 设置引脚功能 启动代码流程图 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控

27、制 9.功率控制 4.4.1 系统控制模块功能汇总 部件名称部件名称功能简介功能简介 晶体振荡器通过外接晶振或时钟源为系统提供时钟信号 复位复位使ARM内核与外设部件进入一个确定的初始状态 存储器映射控制控制异常向量表的重新映射方式 锁相环(PLL)将晶体振荡器输入的时钟倍频到一个合适的时钟频率 VPB分频器将内核时钟与外设时钟分开的部件 功率控制使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗 唤醒定时器系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信号 概述 一个ARM芯片中通常有很多功能部件,有一些部件 是全局性的,它们状态的改变可能引起整个系统运行状 态的改变,这些部

28、件我们统一称之为系统控制模块。 在这些系统控制模块中,有些部件需要外部引脚的 配合,如晶体振荡器、外部复位输入。 引脚名称引脚名称引脚方向引脚方向引脚描述引脚描述 X1输入 晶振输入 振荡器和内部时钟发生器电路的输入,使用外部 时钟源时,该引脚为时钟输入。 X2输出晶振输出 振荡器放大器的输出。 RESET输入 外部复位输入 该引脚上的低电平将使芯片复位,使I/O口 和外设恢复其默认状态,并使处理器从地址0开始执行程序。 名称名称描述描述访问访问 存储器映射控制 MEMMAP存储器映射控制R/W 锁相环 PLLCONPLL控制寄存器R/W PLLCFGPLL配置寄存器R/W PLLSTATPL

29、L状态寄存器RO PLLFEEDPLL馈送寄存器WO 功率控制 PCON功率控制寄存器R/W PCONP外设功率控制R/W VPB分频器 VPBDIVVPB分频器控制R/W 4.4.1 系统控制模块功能汇总 在系统控制模块中,有些部 件需要在进行寄存器配置后才能 正常工作,如存储器映射控制、 锁相环、功率控制、VPB分频器。 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控制 9.功率控制 4.4.2 时钟系统 概述 时钟是计算机系统的脉

30、搏,处理器核在一拍接一拍 的时钟驱动下完成指令执行、状态变换等动作。 外设部件在时钟的驱动下进行着各种工作,比如串 口数据的收发、A/D转换、定时器计数等。 所以时钟对于一个计算机系统是至关重要的,通常 时钟系统出现问题也是最致命的,比如振荡器不起振、 振荡不稳、停振等。 4.4.2 时钟系统 时钟系统结构 LPC2000系列微控制器的时钟系统包括四个部分: 晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。 外接晶体或 外接时钟源 产生稳定的 时钟信号 将Fosc提升到 合适的频率 PLL 晶体 振荡器 VPB 分频器 FCCLK FPCLK fOSC FOSC CPU内核 芯片外设

31、唤醒 定时器 ON/OFFON/OFF 13 4 2 为系统提供基本的时钟信号(Fosc) 。1 在复位或处理器从掉电模式被唤醒时,为输入的时 钟信号做计数延时,使芯片内部部件有时间进行初始化。 2 把Fosc信号提高到一个符合用户需要的频率(Fcclk) 其中Fcclk用于CPU内核。 3 用于把Fcclk信号降低到一个合适的Fpclk值(也可以 不降低),该信号用于外设部件 。 4 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控制

32、9.功率控制 4.4.3 时钟部件晶体振荡器 概述 LPC2000系列微控制器的晶体振荡器可以使用外部 时钟源(从属模式),也可以使用外接晶体和片内振荡电 路(振荡模式)产生时钟。 LPC2114/2124 LPC2212/2214 X1X2 Clock CC 从属模式 LPC2114/2124 LPC2212/2214 X1X2 CX1CX2XTAL 振荡模式 4.4.3 时钟部件晶体振荡器 从属模式 使用从属模式时,时钟信号通过X1引脚从外部输入, 输入频率范围:150(MHz)且占空比为50%,其幅度范围 为:200mV 1.8V。 LPC2114/2124 LPC2212/2214 X

33、1X2 Clock CC 从属模式 4.4.3 时钟部件晶体振荡器 振荡模式 使用振荡模式时,时钟信号由内部晶体振荡器和外 部连接的晶体振荡产生,振荡频率范围:130(MHz)。 LPC2114/2124 LPC2212/2214 X1X2 CX1CX2XTAL 振荡模式 4.4.3 时钟部件晶体振荡器 LPC2114/2124 LPC2212/2214 X1X2 Clock CC 从属模式 LPC2114/2124 LPC2212/2214 X1X2 CX1CX2XTAL 振荡模式 注意:如果使用了ISP下载功能或者连接PLL提高频率, 则输入的时钟频率范围必须在1025(MHz)之间。 4

34、.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控制 9.功率控制 4.4.4 复位 概述 复位指将计算机系统中的硬件逻辑归位到一个初始 的状态,比如让寄存器恢复默认值、让处理器从第一条 指令开始执行程序等。 LPC2000系列芯片有两个复位源: 1、外部复位 把nRESET引脚拉为低电平,并保持一个最小时间, 引发复位 2、看门狗复位 通过设置看门狗相关寄存器,当看门狗定时器溢 出后,引发复位 4.4.4 复位 硬件复位流程 OSC 0V

35、0V 处理器状态 1.65V 3.0V 复位时间 唤醒定时器 计数4096个时钟 Boot代码执行时间 执行用户代码 VDD3.3V VDD1.8V 3.3V 1.8V 稳定时钟0.5ms T0T1T2T3 RESET (振荡模式,12MHz晶振) 两个电源的上电顺 序没有限制 复位信号要保持一段时间 晶振开始起振 (系统上电) LPC2xxx nRESET POWER X1 X2 UX1 t 振荡器稳定 所需时间 芯片时钟 输入信号 在芯片未上电时,芯片振荡器没有工作; 1 芯片上电后,晶体振荡器开始振荡。因为振荡从 开始到稳定需要一过程,所以外部复位信号至少要 保持10ms; 2 在晶体振

36、荡器保持稳定振荡,或者使用有源晶振 时,外部复位信号可以缩短到不小于300ns。 3 =10ms=300ns 振荡器处于 稳定工作状态 4.4.4 复位 外部复位 4.4.4 复位 外部复位和内部WDT复位的区别 判断引脚: P1.20 /TRACESYNC P1.26/RTCK BOOT1和BOOT0 判断引脚: P0.14 执行用户程序 或 运行ISP程序 外部复位 时间 T0T1T2 WDT复位 时间 T0 执行用户程序 或 运行ISP程序 4.4.4 复位 复位与Boot Block Boot Block是芯片生成时由厂家固化在其中的一段 代码,用户无法修改或删除,这段代码在复位后被首

37、先 运行。 注:不同芯片的Boot Block功能也不尽相同。 Boot程序工作流程LPC2114/2124 复位 运行ISP服务程序 看门狗复位 根据硬件 (P1.20、P1.26) 配置 进入ISP状态吗? (P0.14为低) 初始化 用户代码 是否有效 执行用户代码 (片内Flash: 0 x00000000) N Y Y Y N N 在此检测特定引脚 检测用户代码是否有效 Boot程序工作流程LPC2210/2212/2214 复位复位 看门狗复位看门狗复位 进入进入ISPISP模式?模式? (P0.14(P0.14为低为低) ) 初始化初始化 用户代码用户代码 是否有效是否有效 芯片

38、加密芯片加密允许调试允许调试 BOOT1:0BOOT1:0 =11?=11? 芯片加密芯片加密 运行运行ISPISP服务程序服务程序 执行外部用户代码执行外部用户代码 (0 x80000000)(0 x80000000) 执行内部用户代码执行内部用户代码 (0 x00000000)(0 x00000000) N N N N Y Y Y YY Y N N N NN N Y Y Y Y Y Y N N 在此检测特定引脚在此检测特定引脚 检测用户代码是否有效检测用户代码是否有效 4.4.4 复位 P2.27/D27/BOOT1P2.27/D27/BOOT1P2.26/D26/BOOT0P2.26/D

39、26/BOOT0引导方式引导方式 00CS0控制的8位存储器 01CS0控制的16位存储器 10CS0控制的32位存储器 11内部Flash存储器 复位与Boot Block Boot Block的功能包括: 运行哪个存储器上的程序。 1 LPC2200系列微控制器可以同时存在片内存储器和 片外存储器,Boot Block通过芯片上的BOOT0和BOOT1 引脚来判断复位后运行片内还是片外存储器上的用户代 码 注:LPC2100系列微控制器只有片内Flash,它们无 需判断。 4.4.4 复位 复位与Boot Block Boot Block的功能包括: 用户代码是否有效。 2 Boot Bl

40、ock在将芯片的控制权交给用户程序之前, 要先判断用户程序是否有效,否则将不运行用户程序, 这样可以避免在现场设备中的芯片因为代码损坏而导致 程序乱飞引起事故的情况发生。 4.4.4 复位 复位与Boot Block Boot Block的功能包括: 芯片是否加密。 3 芯片可加密可以保护芯片用户的知识产权不受侵害。 加密后: 芯片禁止JTAG接口调试; 芯片限制ISP命令,只能执行芯片整片擦除。 对芯片加密的方法:在芯片Flash的0 x01FC地址处写 入数据0 x87654321即可。当Boot Block检测到该地址存 在加密标志字时,就对芯片的JTAG和ISP操作进行限制, 达到加密

41、的效果。 4.4.4 复位 复位与Boot Block Boot Block的功能包括: 在应用编程(IAP)。 4 LPC2000系列微控制器内部的Flash是无法从外部直 接擦写的,这些功能必须通过IAP代码来实现。IAP可以 实现片内Flash的擦除、查空、将数据从RAM写入指定 Flash空间、校验、读器件ID等功能。 应用实例: 数据存储 在线升级 4.4.4 复位 复位与Boot Block Boot Block的功能包括: 在系统编程(ISP)。5 ISP功能是一种非常有用的片内Flash烧写方式。ISP 工作时,通过UART0使用约定协议与计算机上的ISP软 件进行通信,并按用

42、户的操作要求,调用内部的IAP代 码实现各种功能。比如把用户代码下载到片内Flash中。 有两种情况可以使芯片进入ISP状态 1、将芯片的P0.14引脚拉低后,复位芯片可以进入ISP状态; 2、在芯片内部无有效用户代码时,Boot Block进入ISP状态。 4.4.4 复位 复位及复位芯片配置 一些微控制器自己在上电时会产生复位信号,但 大多数微控制器需要外部输入这个信号。 阻容式复位电路: VCC 2 GND 111 RST 135 U1 LPC2200 R1 10K C1 4.7u VCC D1 VC 3.3V Vc t 电容两端 电压不能 突变 产生低电平 脉冲复位 电源消失 提供迅速

43、 放电回路 对电容充电 电容两端电压稳 定为电源电压 这个电路成本低廉,但不能保证任何情况产生稳 定可靠的复位信号,所以一般场合需要使用CAT809、 SP708和CAT1025等专门的复位芯片。 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控 制 9.功率控制 唤醒定时器 启动 晶体 振荡器 PLL 时 钟 信 号 复位或掉电唤醒 激活唤醒定时器 4.4.5 时钟部件唤醒定时器 概述 唤醒定时器能够确保振荡器和芯片内部硬件电路在 处理

44、器开始执行指令之前有足够的时间初始化 。 工作原理如图: 对输入时钟计数 计数满4096个 周期后,控制 开关闭合 为CPU提供时钟 4.4.5 时钟部件唤醒定时器 概述 当给芯片加电或某个事件使芯片退出掉电模式后, 振荡器就开始工作,但是需要一段时间来产生足够振幅 的信号驱动时钟逻辑。振荡的波形大致如下: 从第一个有效时钟开始,计数4096个时 钟,在此期间内部部件完成初始化 振荡开始 CPU开始 执行指令 时间(t) 振幅(V) 注:唤醒定时器就通过监测晶振状态来判断是否能 开始可靠的执行代码。 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器

45、4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控 制 9.功率控制 4.4.6 时钟部件PLL(锁相环) 概述 LPC2000系列芯片内部均具有PLL电路,振荡器产 生的时钟Fosc通过PLL升频,可以获得更高的系统时钟 (Fcclk)。 输入范围 1025MHz 将FOSC提升到 1060MHz PLL 晶体 振荡器 VPB 分频器 FCCLK FPCLK fOSC FOSC CPU内核 芯片外设 FOSC 相位频率 检测 流控 振荡器 CCO 2P 分频 M分频 FCCLK 1025MHz 156320MHz 1060MHz

46、调整M值,实现 Fosc到Fcclk的 倍频 检测两路输入信号的 相位频率,并根据误 差,输出不同大小的 电流信号 由输入电流 大小来控制 其振荡频率 调整P值,使 CCO振荡在 规定频率范 围内 PLL连接开关, 在PLL锁定前, 系统使用Fosc时 钟 PLL内部结构框图 4.4.6 时钟部件PLL(锁相环) PLL的锁定过程 CCO的输出频率受到“相位频率检测”部件的控制, 输出所需频率的过程不是一蹴而就的,而是一个拉锯反 复的过程。 时间(t) 输出频率(f) 预期频率 锁定 CCO的输出频率在高低起 伏一段时间后渐渐稳定 在了预期的频率值 输出频率稳定后即 “锁定”成功 4.4.6

47、时钟部件PLL(锁相环) 地址地址名称名称描述描述访问访问 0 xE01FC080PLLCON PLL控制寄存器。最新的PLL控制位的保持寄存器。写 入该寄存器的值在有效的PLL馈送序列执行之前不 起作用。 R/W 0 xE01FC084PLLCFG PLL配置寄存器。最新的PLL配置值的保持寄存器。写 入该寄存器的值在有效的PLL馈送序列执行之前不 起作用。 R/W 0 xE01FC088PLLSTAT PLL状态寄存器。PLL控制和配置信息的读回寄存器。 如果曾对PLLCON或PLLCFG执行了写操作,但没有 产生PLL馈送序列,这些值将不会反映PLL的当前 状态。读取该寄存器提供了控制P

48、LL和PLL状态的 真实值。 RO 0 xE01FC08CPLLFEED PLL馈送寄存器。该寄存器使能装载PLL控制和配置信 息,该配置信息从PLLCON和PLLCFG寄存器装入实 际影响PLL操作的映像寄存器。 WO 寄存器描述 与PLL相关的寄存器有四个,其中三个为控制寄存器, 还有一个是状态寄存器。 寄存器描述 FOSC 相位频率 检测 流控 振荡器 CCO 2P 分频 M分频 FCCLK PLLCFG.MSEL4:0 PLLCON.PLLE PLLCFG.PSEL1:0 PLLCON.PLLC 控制寄存器 PLLCONPLLCPLLE 7 : 210 PLL控制寄存器(PLLCON)

49、: PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率; PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL 作为时钟源连接到CPU,否则直接使用振荡器时钟。 控制寄存器 PLLCFGPSEL1 : 0MSEL4 : 0 76 : 54 : 0 PLL配置寄存器(PLLCFG): MSEL4:0:PLL倍频器值,在PLL频率计算中其值为(M-1); PSEL1:0:PLL分频器值,在PLL频率计算中其值为P。 PLL状态寄存器(PLLSTAT): 状态寄存器 PLLSTATPLOCKPLLCPLLEPSEL1:0 MSEL4:0 15 : 1110

50、9876 : 54 : 0 MSEL4:0、PSEL1:0、PLLE、PLLC:读出反映这几个参数的设置值, 写入无效; PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到 指定频率。 PLLCPLLCPLLEPLLEPLLPLL功能功能 00PLL被关闭,并断开连接。 01PLL被激活但是尚未连接。可以在PLOCK置位后连接。 10与00组合相同。避免PLL已连接,当还没有使能的情况。 11PLL已经使能,并连接到处理器作为系统时钟源。 PLL控制位组合: PLLCON=0 x01 ;使能使能PLL PLLCON=0 x03 ;连接连接PLL(必须在(必须在PLL

51、使能并锁定之后)使能并锁定之后) PLLCFG=(25)|(5);M=5+1,P=4 寄存器描述 馈送寄存器 PLLFEEDPLLFEED7 : 0 7 : 0 PLL馈送寄存器(PLLFEED): PLLFEED7:0:PLL馈送序列必须写入该寄存器才能使PLL配置和控 制寄存器的更改生效。 注:这两个写操作的顺序必须正确,且必须是连续的VPB总线周期。 操作示例 DISABLE_IRQ(); /关闭中断,防止馈送序列操作被打断 PLLFEED=0 xAA; /馈送序列第一步 PLLFEED=0 x55; /馈送序列第二步 ENABLE_IRQ(); /馈送序列操作结束,打开中断 馈送序列分

52、两步进行,如下所示: step1. 将值0 xAA写入PLLFEED step2. 将值0 x55写入PLLFEED 4.4.6 时钟部件PLL(锁相环) PLL频率计算 Fosc为晶体振荡器的输出频率,即PLL的输入频率 相位频率 检测 流控 振荡器 CCO 2P 分频 M分频 FOSC FCCO FCCO/(2p) FCCO/(2pM) 1 2 3 锁定之后这两个频率相等 FOSC= FCCO/(2pM) 连接PLL之后 FCCLK= FCCO/(2p) Fcco为PLL电流控制振荡器的输出频率 Fcclk为PLL最终的输出频率(也是处理器的时钟频率) Fcco经过“2P分频”部件后得到F

53、cco/(2p)的频率 Fcco/(2p)信号经过“M分频”部件,得到Fcco/ (2pM)的频率 PLL锁定后相位频率检测的两输入端信号的频率相等 4.4.6 时钟部件PLL(锁相环) PLL频率计算 最后得出PLL的输出频率(当PLL激活并连接时)为: Fcclk = MFosc 或 Fcclk = Fcco / (2P) CCO输出频率为: Fcco = Fcclk2P 或 Fcco = FoscM2P PLL输入和设定必须满足下面的条件: Fosc的范围为1025MHz; Fcclk的范围为10MHzFmax(最大允许频率); Fcco的范围为156320MHz。 相位频率 检测 流控

54、 振荡器 CCO 2P 分频 M分频 FCCLK FOSC 4.4.6 时钟部件PLL(锁相环) 确定PLL设定的过程 2.选择合适 的晶振频率 3.计算M值 4.计算P值 1.确定处理 器时钟频率 选择处理器的操作频率(Fcclk)。这可以根据处理器的 整体要求、UART波特率的支持等因素来决定。 1 选择振荡器频率(Fosc)。Fcclk一定要是Fosc的整数倍。 2 计算M值以配置MSEL位。M = Fcclk/Fosc,M的取值 范围为132。实际写入MSEL位的值为M-1。 3 选择P值以配置PSEL位。通过设置P值,使Fcco在定义 的频率限制范围内。P必须是1, 2, 4或8其中

55、的一个。 4 PLL设置举例 系统要求Fosc10MHz,Fcclk60MHz。 根据这些要求: 1. 确定Fcclk60MHz; 2. 选择Fosc10MHz; 3. 计算M= Fcclk/Fosc60MHz/10MHz6。M-15, 所以写入PLLCFG4:000101; 4. 计算P=Fcco/( Fcclk*2),其中Fcco为156320 MHz。 当Fcco156MHz时,P=156MHz/(2*60MHz)1.3 当Fcco320MHz时, P=2.67 P取整数2,所以写入PLLCFG6:5=01。 PLL设置举例 PLL配置过程: uint8 PLLSet(uint32 Fc

56、clk, uint32 Fosc, uint32 Fcco) uint8 i; uint32 plldat; i = (Fcco / Fcclk); switch(i) case 2: plldat = (Fcclk / Fosc) - 1) | (0 5); break; case 4: plldat = (Fcclk / Fosc) - 1) | (1 5); break; case 8: plldat = (Fcclk / Fosc) - 1) | (2 5); break; case 16: plldat = (Fcclk / Fosc) - 1) | (3 5); break; de

57、fault: return(FALSE); break; PLLCON = 1; PLLCFG = plldat; PLLFEED = 0 xaa; PLLFEED = 0 x55; while(PLLSTAT PLLCON = 3; PLLFEED = 0 xaa; PLLFEED = 0 x55; return(TRUE); 计算PLL分频值 参数是否合 法 使能PLL 设置PLL分频值 PLL馈送序列 等待PLL锁 定 连接PLL PLL馈送序列 正确返回 错误返回 计算PLL分频值 参数是否合法 使能PLL 设置PLL分频值 等待PLL锁 定 连接PLL PLL馈送序列 正确返回 错误

58、返回 PLL馈送序列 N Y 4.4 系统控制模块 1.系统控制模块 功能汇总 2.系统时钟概述 3.时钟部件 晶体振荡器 4.复位 5.时钟部件 唤醒定时器 6.时钟部件 PLL(锁相环) 7.时钟部件 VPB分频器 8.存储器映射控制 9.功率控制 4.4.7 时钟部件VPB分频器 概述 VPB总线是芯片的内部总线,上面挂接着绝大部分 的外设,而这些外设的工作速度相对于ARM内核来说都 要慢一些,VPB分频器决定了处理器时钟(cclk)与外设 器件所使用的时钟(pclk)之间的关系。 VPB 分频器 PLL 晶体 振荡器 FCCLK FPCLK fOSC CPU内核 芯片外设 VPB分频器

59、主要有两个用途: 1. 将处理器时钟(cclk)分频,以便外设在合适的速度 下工作。 2. 降低系统功耗。 4.4.7 时钟部件VPB分频器 VPBDIV1:0VPBDIV1:0说明说明 00VPB总线时钟为处理器时钟的1/4。 01VPB总线时钟与处理器时钟相同。 10VPB总线时钟为处理器时钟的1/2。 11保留。写入该值将不改变分频值。 VPBDIV寄存器 控制寄存器 VPBDIVVPBDIV1:0 7 : 63 : 21 : 0 XCLKDIV1:0 5 : 4 VPBDIV1:0:设置分频值,可以设定3个值; XCLKDIV1:0:这些位用于控制LPC2200系列微控制器 A23/X

60、CLK引脚上的时钟驱动,编码方式与VPBDIV相同。 VPBDIV设置示例 void VPBSet(uint32 Fcclk, uint32 Fpclk) uint8 i; if(Fpclk / (Fcclk / 4) = 4) VPBDIV = 1; else if(Fpclk / (Fcclk / 4) = 2) VPBDIV = 2; else if(Fpclk / (Fcclk / 4) = 1) VPBDIV = 0 根据外设时钟与内核时 钟的关系,设置对应的VPB 值: 外设时钟和内核时钟相等。外设时钟是内核时钟二分 频。 外设时钟是内核时钟四分 频。 4.4.7 时钟部件VPB分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论