163

Click here to load reader

第 5 章 LPC2000 系列 ARM 硬件结构

  • Upload
    candra

  • View
    88

  • Download
    6

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 LPC2000 系列 ARM硬件结构

Page 2: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 目录1. 简介2. 引脚配置3. 存储器寻址4. 系统控制模块5. 存储器加速模块6. 外部存储器控制器7. 引脚连接模块8. 向量中断控制器9.GPIO

10.UART011.UART112.I2C 接口13.SPI 接口14. 定时器 0/115. 脉宽调制器( PW

M )16.A/D 转换器17. 实时时钟18. 看门狗

Page 3: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 目录1. 简介2. 引脚配置3. 存储器寻址4. 系统控制模块5. 存储器加速模块6. 外部存储器控制器7. 引脚连接模块8. 向量中断控制器9.GPIO

10.UART011.UART112.I2C 接口13.SPI 接口14. 定时器 0/115. 脉宽调制器( PW

M )16.A/D 转换器17. 实时时钟18. 看门狗

Page 4: 第 5 章   LPC2000 系列 ARM 硬件结构

5.1 简介• LPC2000 系列微控制器概述

LPC2000 系列微控制器基于 ARM7TDMI-S CPU 内核。支持 ARM 和 Thumb 指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和 POS 机等场合。

Page 5: 第 5 章   LPC2000 系列 ARM 硬件结构

器件型号 引脚数 片内 RAM 片内 Flash10 位 AD 通道

数 CAN 控制器 备注

LPC2114 64 16KB 128KB 4 - -LPC2124 64 16KB 256KB 4 - -LPC2210 144 16KB - 8 - 带外部

存储器接口

LPC2212 144 16KB 128KB 8 -LPC2214 144 16KB 256KB 8 -LPC2119 64 16KB 128KB 4 2 -LPC2129 64 16KB 256KB 4 2 -LPC2194 64 16KB 256KB 4 4 -LPC2290 144 16KB - 8 2 带外部

存储器接口

LPC2292 144 16KB 256KB 8 2

LPC2294 144 16KB 256KB 8 4

LPC2131 64 8KB 32KB 8 - -LPC2132 64 16KB 64KB 8 -

带 1 路DAC

LPC2134 64 16KB 128KB 双 8 路 -LPC2136 64 16KB 256KB 双 8 路 -LPC2138 64 32KB 512KB 双 8 路 -

• LPC2000 系列器件信息

Page 6: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部框图LPC2000 系列微控制器包含四大部分: ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

ARM7TDMI-S CPUARM7 局部总线及相关部件AHB 高性能总线及相关部件VLSI 外设总线及相关部件

Page 7: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部框图ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

LPC2000 系列微控制器将 ARM7TDMI-S 配置为小端模式( Little-endian )。

ARM7TDMI-SCPU

AHB 外设分配了 2M 字节的地址范围,它位于 4G 字节 ARM寻址空间的最顶端。每个 AHB外设都分配了 16KB 的地址空间。

EMC

VIC

LPC2000 系列微控制器的外设功能(除中断控制器)都连接到 VPB 总线。 AHB 到 VPB的桥将 VPB 总线与 AHB 总线相连。 VPB 外设也分配了 2M字节的地址范围,从 3.5GB 地址点开始。每个 VPB 外设都分配了 16KB 的地址空间。

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

AHB To VPB桥

Page 8: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部各单元简介ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

SRAM

Flash

内部存储器包括无等待 SRAM和 Flash ;

外部存储器控制器( EMC )支持 4 个 BANK 的外部 SRAM或 Flash ,每个 BANK 最多 16MB ;

系统功能包括维持芯片工作的一些基本功能,如系统时钟、复位等;

向量中断控制器( VIC )可以减少中断的响应时间,最多可以管理 32 个中断请求;

I2C 串行接口为标准的 I2C 总线接口,支持最高速度 400kb ;

EMC

系统功能

VIC

I2C 串行接口

Page 9: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部各单元简介ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

具有两个完全独立的 SPI 控制器,遵循 SPI 规范,可配置为SPI 主机或从机;具有两个 UART 接口,均包含16 字节的接收 / 发送 FIFO ,内置波特率发生器。其中 UART1 具有调制解调器接口功能;

在 LPC2119/2129/2290/2292等芯片中包含 CAN 总线接口;

看门狗定时器带有内部分频器,可以方便设置溢出时间,在软件使能看门狗后只有复位可以禁止(具有调试模式);

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

Page 10: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部各单元简介ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

系统控制模块包括一些与其它外设无关的功能,如功率控制等;

外部中断有 4 路多引脚输入,可用于 CPU掉电唤醒;

定时器 0/1 为两个独立的带可编程 32 位预分频器的 32 位定时器 /计数器,具有捕获和匹配输出功能;

具有 4/8路 10 位 ADC ,可以设置为多路循环采样模式。 10位转换时间最短为 2.44us ;

系统控制

外部中断

TIMER0/1

ADC

Page 11: 第 5 章   LPC2000 系列 ARM 硬件结构

• 芯片内部各单元简介ARM7TDMI-S

CPU

AHB To VPB桥 EMC

VIC

I2C 串行接口

SPI 串行接口

UART0 & 1

CAN

看门狗定时器

系统控制

外部中断

TIMER0/1

ADC

通用 I/O

PWM0

实时时钟

SRAM

Flash

AHB 总线

ARM7 局部总线系统功能

不同封装的芯片具有数目不等的 IO 口,它们可以承受 5V电压。每个 IO 口可以独立设置为输入 /输出模式,在作为输出模式时可以分别置位或清零;

脉宽调制器可以灵活设置,以适应不同的场合。可以设置为单边沿或双边缘输出方式,可以灵活的设置频率和占空比;

实时时钟具有可编程的积存时钟分频器,以适应不同的晶振频率。带日历和时钟功能,提供秒、分、时、日、月、年和星期,同时具有非常的功耗。

通用 I/O

PWM0

实时时钟

Page 12: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 目录1. 简介2. 引脚配置3. 存储器寻址4. 系统控制模块5. 存储器加速模块6. 外部存储器控制器7. 引脚连接模块8. 向量中断控制器9.GPIO

10.UART011.UART112.I2C 接口13.SPI 接口14. 定时器 0/115. 脉宽调制器( PW

M )16.A/D 转换器17. 实时时钟18. 看门狗

Page 13: 第 5 章   LPC2000 系列 ARM 硬件结构

5.2 引脚配置• LPC2000 系列芯片外形

LPC2210/2212/2214LPC2114/2124

Page 14: 第 5 章   LPC2000 系列 ARM 硬件结构

GPIO

TXD0

PWM1输出P0.0

5.2 引脚配置• 引脚功能选择使用示例

LPC2000 系列微控制器的引脚一般是多个功能复用,但是同一引脚在同一 引脚在同一时刻只能使用其中一个功能,这可以通过设置 PINSELx寄存器来选择,详细介绍见“引脚连接模块”小节。

通过 PINSEL0 控制引脚功能

Page 15: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 目录1. 简介2. 引脚配置3. 存储器寻址4. 系统控制模块5. 存储器加速模块6. 外部存储器控制器7. 引脚连接模块8. 向量中断控制器9.GPIO

10.UART011.UART112.I2C 接口13.SPI 接口14. 定时器 0/115. 脉宽调制器( PW

M )16.A/D 转换器17. 实时时钟18. 看门狗

Page 16: 第 5 章   LPC2000 系列 ARM 硬件结构

小节目录• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

Page 17: 第 5 章   LPC2000 系列 ARM 硬件结构

小节目录• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

Page 18: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址

地址空间 0xFFFFFFFF

0x00000000内部 Flas

h

0x40000000内部 SRAM

0x80000000外部存储器

0x7FFFE000Boot Block

片外存储器

片内存储器

• 一个具体应用可能存在的物理存储器

Page 19: 第 5 章   LPC2000 系列 ARM 硬件结构

256K

16K

5.3 存储器寻址• 不同芯片内部存储器分布

16K

128K

16K

LPC2210 LPC2114/2212 LPC2124/2214

片内Flash

片内RAM

0x00000000

0x0001FFFF

0x0003FFFF

0x40000000

0x40001FFF

Page 20: 第 5 章   LPC2000 系列 ARM 硬件结构

小节目录• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

Page 21: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 片内 Flash编程方法:

JTAG

串口

1. 通过内置 JTAG 接口;2. 通过在系统编程( ISP ),使用 UART0 通信;3. 通过在应用编程( IAP );

Page 22: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 片外 Flash编程方法 (LPC2200) :

在 CPU上运行一个装载程序( Loader,一般由用户编写),该程序通过串口接收要烧写的数据,然后擦除编程 Flash 。

串口

Loder程序

外部Flash

Page 23: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 片内 SRAM 的写操作

SRAM 控制器包含一个回写缓冲区,它总是保存着软件发送到 SRAM 的最后一个字数据。该数据只有在软件请求下一次写操作时才写入 SRAM 。如果发生芯片复位,实际的 SRAM 内容将不会反映最近一次的写操作。

??

回写缓冲区内部 SRA

M

写入地址写入 A写入 B A A写入 AB

Page 24: 第 5 章   LPC2000 系列 ARM 硬件结构

小节目录• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

Page 25: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 存储器映射基本概念

ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。

通过地址映射的方法将各存储器分配到特定的地址范围后,这时用户所看见的存储器分布为存储器映射。

Page 26: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 芯片复位后用户看见的地址空间

128KB Flash(LPC2114/2212)

256KB Flash(LPC2124/2214)

16KB SRAM

8KB BootBlock

2MB VPB 外设2MB AHB 外设

0x00000000

0xFFFFFFFF

保留给片内存储器使用

保留给片内存储器使用

保留给外部储器使用

0x40000000

0xE00000000x80000000

0xF0000000

0x00020000 地址空间

Page 27: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• AHB 和 VPB

AHB (先进的高性能总线)和 VPB ( VLSI 外设总线)外设区域都为 2M 字节,可各分配 128 个外设。每个外设空间的规格都为 16K 字节,这样就简化了每个外设的地址译码。

注意: AHB 和 VPB 外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作

Page 28: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 外设存储器映射

VPB 外设

AHB 外设

保留

3.5GB

3.5GB+2MB

4.0GB-2MB

地址空间

4.0GB

0xE0000000

0xE0000000

0xFFE00000

0xFFE00000

VPB 外设AHB 外设

均为 128×16KB ( 2MB )范围

Page 29: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• AHB 外设映射

AHB 外设# 126

地址空间0xFFE00000

0xFFE04000

0xFFFF4000

0xFFFF8000AHB 外设# 125

AHB 外设# 0AHB 外设# 1

0xFFFFF000

0xFFFFC000

向量中断控制器AHB 外设# 127

Page 30: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• VPB 外设映射

VPB 外设# 3

地址空间0xE0000000

0xE0004000

0xE0008000

0xE000C000VPB 外设# 2

VPB 外设# 0VPB 外设# 1

0xE01FC000

VPB 外设# 127

看门狗定时器定时器 0

系统控制模块

定时器 1UART 0

Page 31: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• Boot lock 的映射地址安排

为了兼容将来的器件,整个 Boot Block被映射到片内存储器空间的顶端。所以将来的芯片内置不同的 RAM 和 FALSH 都不会影响 Boot Block 的位置。

地址空间Flash

SRAM

Boot Block

AHB & VPB

映射位置固定在内部存储器顶端

RAM 和 Flash 的变化不会影响 Bo

otBlock 的位置

SRAM

Flash

0x80000000

Page 32: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 存储器重新映射

存储器重新映射是将复位后用户所见的存储器中部分区域,再次映射到其它的地址上。

对于 Philips 的 LPC 系列 ARM 微控制器,存储器重新映射区域一共为 64 字节,分别为异常向量区( 32 字节)和紧随其后的 32 字节。存储器重新映射的方法允许在不同模式下处理中断,重新映射的存储器区域在地址 0x00000000~ 0x0000003F处。存储器重新映射的控制见“存储器映射控制”小节。

Page 33: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 使用存储器重新映射的原因

使 Flash 存储器中的 FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题

用来处理代码空间中段边界仲裁的 SRAM 和 Boot Block 向量的使用大大减少

为超过单字转移指令范围的跳转提供空间来保存常量

Page 34: 第 5 章   LPC2000 系列 ARM 硬件结构

• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

小节目录

Page 35: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 预取指中止和数据中止异常

如果试图访问一个保留地址或未分配区域的地址, ARM处理器将产生预取指中止或数据中止异常。

Page 36: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 预取指中止和数据中止异常

这些区域分别为:

Flash

SRAM

Boot Block

VPB

地址空间

AHB

1. 特定的 ARM 器件所没有的存储器映射区域;2. AHB 外设空间中未分配的区域;3. VPB 外设空间中未分配的区域。

Page 37: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 预取指中止和数据中止异常

注意:

只有在试图执行从非法地址取指的指令时,ARM才会将预取指中止标志与相关的指令(没有意义的指令)一起保存到流水线并对中止进行处理。当代码在非常靠近存储器边界执行时,防止了由预取指所导致的意外中止。

Page 38: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 预取指中止和数据中止异常举例

指令流水线 指令 C

指令 B

指令 A

存储器无效区域

取指译码执行

指令 C指令 B指令 A

取指译码执行

存储器

程序 存储器

第 N次取指

Page 39: 第 5 章   LPC2000 系列 ARM 硬件结构

第 N+1次取指

5.3 存储器寻址• 预取指中止和数据中止异常举例

指令流水线 指令 C

指令 B

指令 A

存储器无效区域

取指译码执行

指令 C指令 B指令 A

无效指令指令 C指令 B

取指译码执行

存储器

程序 存储器

Page 40: 第 5 章   LPC2000 系列 ARM 硬件结构

第 N+2次取指

5.3 存储器寻址• 预取指中止和数据中止异常举例

指令流水线 指令 C

指令 B

指令 A

存储器无效区域

取指译码执行

指令 C指令 B指令 A

无效指令指令 C指令 B

取指译码执行

无效指令无效指令

指令 C

存储器

程序 存储器

Page 41: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 预取指中止和数据中止异常举例

指令流水线 指令 C

指令 B

指令 A

存储器无效区域

取指译码执行

指令 C指令 B指令 A

无效指令指令 C指令 B

取指译码执行

无效指令无效指令

指令 C

无效指令无效指令无效指令

存储器

程序 存储器

第 N+3次取指,此时流水线的执行级执行了无效指令,发生预取指中止。如果指令 C 为跳转指令则可以避免预取指中止的发生。

Page 42: 第 5 章   LPC2000 系列 ARM 硬件结构

• 存储器分布• 各存储器操作方法• 存储器映射• 预取指中止和数据中止• 异常向量表

小节目录

Page 43: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 异常向量表

对于每一个异常事件,都有一个与之相对应的处理程序,它们是关联在一起的,并以一张一维表的格式存储在存储器的固定单元中。这张指定了各异常中断及其处理程序的对应关系的表,称为异常向量表。

Page 44: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 异常向量表

地址 异常0x0000 0000 复位0x0000 0004 未定义指令0x0000 0008 软件中断0x0000 000C 预取指中止(从存储器取指出错)0x0000 0010 数据中止(访问存储器数据出错)0x0000 0014 保留 *

0x0000 0018 IRQ

0x0000 001C FIQ

各异常向量的固定位置

该位置被 Boot装载程序用作有效用户程序的检测标志。通过定义此保留值,使向量表所有数据 32 位累加和为0 ,芯片复位后才能脱机运行用户程序。

Page 45: 第 5 章   LPC2000 系列 ARM 硬件结构

5.3 存储器寻址• 位于启动代码中的异常向量表

什么是启动代码?一般在 32 位 ARM 应用系统中,大多数采用 C语言进行软件编程。但是在运行应用代码前需要进行系统初始化。 常用一个汇编文件作启动代码,它可以实现异常向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、 I/O初始化、外围部件初始化、地址重映射等操作。

Page 46: 第 5 章   LPC2000 系列 ARM 硬件结构

• 位于启动代码中的异常向量表

CODE32

AREA vectors,CODE,READONLY

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 字节为跳转地址

异常向量表

Page 47: 第 5 章   LPC2000 系列 ARM 硬件结构

• 位于启动代码中的异常向量表

CODE32

AREA vectors,CODE,READONLY

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

异常向量表

例如:发生未定义异常时

1.程序计数器( PC)指向 0x00000004;

2.执行当前的指令,将 Undefined地址值装入 PC,实现至未定义异常处理程序的跳转。

装入

Page 48: 第 5 章   LPC2000 系列 ARM 硬件结构

• 位于启动代码中的异常向量表

CODE32

AREA vectors,CODE,READONLY

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

异常向量表

注意:异常向量表中程序跳转使用 LDR指令,而没有使用 B指令。

原因:

1.LDR指令可以全地址范围跳转,而 B指令只能在前后32MB范围内跳转;

2.芯片具有 Remap功能。当向量表位于内部 RAM或外部存储器中,用 B指令不能跳转到正确的位置。

B ResetAddr

Page 49: 第 5 章   LPC2000 系列 ARM 硬件结构

第 5 章 目录1. 简介2. 引脚配置3. 存储器寻址4. 系统控制模块5. 存储器加速模块6. 外部存储器控制器7. 引脚连接模块8. 向量中断控制器9.GPIO

10.UART011.UART112.I2C 接口13.SPI 接口14. 定时器 0/115. 脉宽调制器( PW

M )16.A/D 转换器17. 实时时钟18. 看门狗

Page 50: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 51: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 52: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块• 系统控制模块概述

系统控制模块包括一些系统构件和控制寄存器,它们具有众多与芯片内其它外设无关的功能。系统控制模块包括:系统时钟单元、复位、外部中断输入、存储器映射控制、功率控制和唤醒定时器。

Page 53: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 54: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟小节目录• 系统时钟概述• 晶体振荡器( 5.4.4 )• PLL ( 5.4.9 )• VPB 分频器( 5.4.10 )

Page 55: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟小节目录• 系统时钟概述• 晶体振荡器( 5.4.4 )• PLL ( 5.4.9 )• VPB 分频器( 5.4.10 )

Page 56: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 系统时钟概述

CPU正常工作需要有合适的时钟信号,包括 ARM7 内核使用的 CCLK 时钟,和芯片外设使用的 PCLK 时钟。

通过 LPC2000 系列微控制器的时钟产生单元产生 ARM7 内核和芯片外设正常工作所需要的时钟节拍。

Page 57: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 系统时钟概述

ARM7 核 桥 外设

时钟产生

FCCLK FPCLK

FOSC

CPU 时钟结构

Page 58: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 时钟产生单元

时钟产生单元包括晶体振荡器、锁相环振荡器( PLL )和 VPB 分频器。

PLL晶体振荡器

VPB 分频器

FCCLK

FPCLK

FOSC

Page 59: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟概述• 晶体振荡器( 5.4.4 )• PLL ( 5.4.9 )• VPB 分频器( 5.4.10 )

系统时钟小节目录

Page 60: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 晶体振荡器

LPC2000 微控制器可以使用内部的晶体振荡器产生时钟信号,也可以从外部引入时钟信号。

LPC2000 LPC2000

X1 X2 X1 X2

Clock CX1 CX2

CC

XTAL

从属模式 振荡模式

Page 61: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 晶体振荡器

使用从属模式时,时钟信号通过 X1 引脚从外部输入,输入频率范围: 1~ 50 ( MHz),其幅度不小于 200m Vrms 。

LPC2000

X1 X2

Clock

CC

从属模式

Page 62: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 晶体振荡器

使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围: 1~30 ( MHz)。

LPC2000

X1 X2

CX1 CX2XTAL

振荡模式

Page 63: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 晶体振荡器

注意:如果使用了 ISP下载功能或者连接 PLL提高频率,则输入的时钟频率范围必须在 10~ 25 ( MHz)之间。

LPC2000 LPC2000

X1 X2 X1 X2

Clock CX1 CX2

CC

XTAL

从属模式 振荡模式

Page 64: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟小节目录• 系统时钟概述• 晶体振荡器( 5.4.4 )• PLL ( 5.4.9 )• VPB 分频器( 5.4.10 )

Page 65: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 锁相环( PLL )

由晶体振荡器输出的时钟信号,通过 PLL升频,可以获得更高的系统时钟( CCLK )。

PLL 接受的输入时钟频率范围为 10~ 25MHz,通过一个电流控制振荡器( CCO )倍增到 10~ 60MHz。

PLL晶体振荡器

VPB 分频器

FCCLK

FPCLK

FOSC

10MHz~25MHz

10MHz~60MHzPLL

Page 66: 第 5 章   LPC2000 系列 ARM 硬件结构

• PLL 内部结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

晶体振荡器输入时钟

对输入的两路时钟信号进行相位频率检测,将两者差值

以电流形式输出

电流控制振荡器,根据输入电流控制振荡频率

对输入时钟分频

输入时钟 2选 1 开关

Page 67: 第 5 章   LPC2000 系列 ARM 硬件结构

• PLL 内部结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

FCCO / 2P

FCCO / (2P*M)

CCO自由振荡,输出频率 FCCO

根据两个输入时钟的相位偏差,控制 CCO 。当两个时钟相位同步时,回路锁定。

Page 68: 第 5 章   LPC2000 系列 ARM 硬件结构

• PLL 相关寄存器

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

PLL 控制寄存器 (PLLCON):

位 7 6 5 4 3 2 1 0

功能 - - - - - - PLLC PLLE

PLLE : PLL 使能,该位为 1 时将激活 PLL并允许其锁定到指定的频率;PLLC : PLL 连接,当 PLLE 为 1 ,并且在 PLL锁定后,该位为 1 ,将把 PLL 作为时钟源连接到 CPU ,否则直接使用振荡器时钟。

PLLC

PLLE

Page 69: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

位 7 6 5 4 3 2 1 0

功能 - - - - - - PLLC PLLE

注:其中“-”表示该位保留,用户不要向该位写入 1 ,读取的值将不确定

PLLC

PLLE

• PLL 相关寄存器

PLL 控制寄存器 (PLLCON):

Page 70: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

PLLC PLLE PLL 功能0 0 PLL被关闭,并断开连接。0 1 PLL被激活但是尚未连接。可以在 PLOCK 置位后连接。1 0 与 00组合相同。避免 PLL已连接,当还没有使能的情况。1 1 PLL已经使能,并连接到处理器作为系统时钟源。

PLLC

PLLE

• PLL 相关寄存器

PLL 控制寄存器 (PLLCON):

Page 71: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

PLL 配置寄存器 (PLLCFG):

位 7 6 5 4 3 2 1 0

功能 - PSEL[1:0] MSEL[4:0]

MSEL[4:0]: PLL倍频器值,在 PLL频率计算中其值为 (M-1);PSEL[1:0]: PLL 分频器值,在 PLL频率计算中其值为 P 。

• PLL 相关寄存器

Page 72: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

PLL状态寄存器 (PLLSETA):

位 15 : 11 10 9 8 7 6 : 5 4 : 0

功能 - PLOCK PLLC PLLE - PSEL[1:0] MSEL[4:0]

MSEL[4:0]、 PSEL[1:0]、 PLLE 、 PLLC :读出反映这几个参数的设置值,写入无效;PLOCK :反映 PLL 的锁定状态。为 0 时, PLL未锁定;为 1 时, PLL锁定到指定频率。

• PLL 相关寄存器

Page 73: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

PLL馈送寄存器 (PLLFEED):

PLLFEDD[7:0]: PLL馈送序列必须写入该寄存器才能使 PLL 配置和控制寄存器的更改生效;

位 7 6 5 4 3 2 1 0

功能 PLLFEED[7:0]

• PLL 相关寄存器

Page 74: 第 5 章   LPC2000 系列 ARM 硬件结构

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

馈送序列为:

1. 将值 0xAA写入 PLLFEED ;

2. 将值 0x55写入 PLLFEED 。

位 7 6 5 4 3 2 1 0

功能 PLLFEED[7:0]

• PLL 相关寄存器

PLL馈送寄存器 (PLLFEED):

Page 75: 第 5 章   LPC2000 系列 ARM 硬件结构

• PLL频率计算

回路锁定后: FOSC = FCCO / (2P × M)

FCLK = FOSC × M

相位频率检测 CCO

1

0

2P分频

M分频

0

1

0

1

FOSC

FCCOFCLK

FCCO / 2P

FCCO / (2P*M)

FOSC :晶振频率; F

CCO : CCO振荡器输出频率 FC

CLK :处理器时钟频率; M :PLL倍频值 P :PLL 分频值

必须满足的条件:

FOSC 范围: 10MHz~ 25MHz ; FCCLK 范围: 10MHz~ 60MHz ; FCCO 范围: 156MHz~ 320MHz ;

Page 76: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 锁相环( PLL )计算流程

1.选择处理器的工作频率 (CCLK)

2.选择振荡器频率 (FOSC)

3.计算M值配置 MSEL 位

4.计算 P值配置 PSEL 位

根据处理器的整体要求、 UART 波特率的支持等因素来决定。外围器件的时钟频率可以低于处理器频率 CCLK 必须为 FOSC

的整数倍。 M = CCLK / FOSC ,取值范围 1~ 32 。写入MSEL 的值为 (M-1)。 选择合适的 P值,使 FCCO 在限制范围内。P只能取 1 、 2 、 4 或8。写入 PSEL 的值为 P 。

Page 77: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 锁相环( PLL )计算实例

系统要求: FOSC= 10MHz、 CCLK= 60MHz

1.计算M值: M= CCLK / FOSC = 6 ;2. 设置 MSEL 位:写入值为( M - 1 )= 5 ;3. 设置 PSEL 位: P= FCCO/(CCLK×2)

=( 156~ 320 ) /120= 1.3~ 2.67

所以 P取整数 2 , PSEL写入值为 2 。

Page 78: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• 锁相环( PLL )注意要点

PLL 在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复 PLL 的设定;PLL只能通过软件使能;PLL 在激活后必须等待其锁定,然后才能连接;PLL 如果设置不当将会导致芯片的错误操作。

Page 79: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟小节目录• 系统时钟概述• 晶体振荡器( 5.4.4 )• PLL ( 5.4.9 )• VPB 分频器( 5.4.10 )

Page 80: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• VPB 分频器

VPB 分频器将 PLL输出的时钟信号分频后作为芯片外设的时钟。

PLL晶体振荡器

VPB 分频器

FCCLK

FPCLK

FOSC

VPB 分频器

Page 81: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• VPB 分频器

VPB 分频器决定处理器时钟( CCLK )与外设器件所使用的时钟( PCLK )之间的关系。

VPB 用途 1 :通过 VPB 总线为外设提供所需的 PCLK 时钟,以便外设在合适的速度下工作;

VPB 用途 2 :在应用不需要任何外设全速运行时使功耗降低。

Page 82: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• VPB 分频器相关寄存器

位 7 6 5 4 3 2 1 0

功能 - - XCLKDIV[1:0] - - VPBDIV[1:0]

VPB 分频寄存器 (VPBDIV):

VPBDIV[1:0]:设置分频值,可以设定 3 个值;

XCLKDIV[1:0] :这些位用于控制 LPC2200 系列微控制器 (p3.23)A23/XCLK引脚上的时钟驱动,取值编码方式与 VPBDIV 相同;

Page 83: 第 5 章   LPC2000 系列 ARM 硬件结构

系统时钟• VPB 分频器相关寄存器

位 7 6 5 4 3 2 1 0

功能 - - XCLKDIV[1:0] - - VPBDIV[1:0]

VPB 分频寄存器 (VPBDIV):

VPBDIV[1:0] 说明00 VPB 总线时钟为处理器时钟的 1/4 。01 VPB 总线时钟与处理器时钟相同。10 VPB 总线时钟为处理器时钟的 1/2 。11 保留。写入该值将不改变分频值。

Page 84: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟初始化流程使能 PLL

设置 VPB 分频值

PLL馈送序列

等待 PLL锁定

设置 PLL 分频值

连接 PLL

PLL馈送序列

Page 85: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟初始化——启动代码实例

// 应当与实际一至晶振频率 ,10MHz~25MHz ,应当与实际一至

#define Fosc 11059200

// 系统频率,必须为 Fosc 的整数倍 (1~32) ,且 <=60MHZ

#define Fcclk (Fosc * 4)

//CCO频率,必须为 Fcclk 的 2 、 4 、 8 、 16倍,范围为 156MHz~320MHz

#define Fcco (Fcclk * 4)

//VPB 时钟频率,只能为 (Fcclk / 4) 的 1 、 2 、 4倍

#define Fpclk (Fcclk / 4) * 1

将系统内各时钟的频率定义为宏,方便用户操作。

设置晶振频率

设置内核工作频率

设置 CCO输出频率

设置外设工作频率

Page 86: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟初始化——启动代码实例使能 PLL

设置 VPB 分频值

PLL馈送序列

等待 PLL锁定

设置 PLL 分频值

连接 PLL

PLL馈送序列

使能 PLL

设置 VPB 分频值

C代码分析: PLLCON = 1;

#if (Fpclk / (Fcclk / 4)) == 1

VPBDIV = 0;

#endif

#if (Fpclk / (Fcclk / 4)) == 2

VPBDIV = 2;

#endif

#if (Fpclk / (Fcclk / 4)) == 4

VPBDIV = 1;

#endif

. . .注意:在启动代码中很多地方使用了条件编译的方法,根据用户定义的宏来决定要设置的值,可以方便用户使用。

Page 87: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟初始化——启动代码实例使能 PLL

设置 VPB 分频值

PLL馈送序列

等待 PLL锁定

设置 PLL 分频值

连接 PLL

PLL馈送序列

设置 PLL 分频值

C代码分析:. . .

#if(Fcco/Fcclk)==2

PLLCFG=((Fcclk/Fosc)-1)|(0<<5);

#endif

#if(Fcco/Fcclk)==4

PLLCFG=((Fcclk/Fosc)-1)|(1<<5);

#endif

#if(Fcco/Fcclk)== 8

PLLCFG=((Fcclk/Fosc)-1)|(2<<5);

#endif

#if(Fcco/Fcclk)==16

PLLCFG=((Fcclk/Fosc)-1)|(3<<5);

. . .

Page 88: 第 5 章   LPC2000 系列 ARM 硬件结构

• 系统时钟初始化——启动代码实例使能 PLL

设置 VPB 分频值

PLL馈送序列

等待 PLL锁定

设置 PLL 分频值

连接 PLL

PLL馈送序列

PLL馈送序列

等待 PLL锁定

连接 PLL

PLL馈送序列

C代码分析:. . .

PLLFEED = 0xaa;

PLLFEED = 0x55;

while((PLLSTAT & (1 << 10)) == 0);

PLLCON = 3;

PLLFEED = 0xaa;

PLLFEED = 0x55;

注意:在修改 PLL 的控制和配置寄存器后,必须写入馈送序列,使修改生效。

Page 89: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 90: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 复位的分类

外部复位—把 nRESET 引脚拉为低电平,并保持一个最小时间,

引发复位看门狗复位

—通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位

Page 91: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 外部复位

外部复位引脚( nRESET )连接内部的施密特触发器,通过施密特触发器可以滤除引脚输入的干扰信号,保证复位的可靠性。如果外部复位信号一直有效,芯片将保持复位状态。

注意:

如果芯片使用了外部晶体,上电后 nRESET 引脚的复位信号必须保持至少 10ms ,以便产生稳定的振荡信号。如果晶振已经稳定运行且 X1 引脚上以出现稳定信号时, nRESET 引脚的复位信号只需保持至少 300ns 时间。

Page 92: 第 5 章   LPC2000 系列 ARM 硬件结构

1. 在芯片未上电时,芯片振荡器没有工作;

复位

UX1

tLPC2xxx

nRESET

电源输入

X1

X2

• 外部复位

Page 93: 第 5 章   LPC2000 系列 ARM 硬件结构

复位

振荡器稳定需要一段时间

UX1

tLPC2xxx

nRESET

电源输入

X1

X2

• 外部复位2. 芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持 10ms ;

>=10ms

Page 94: 第 5 章   LPC2000 系列 ARM 硬件结构

>=300ns

复位

UX1

t

此时振荡器稳定工作

• 外部复位

LPC2xxx

nRESET

电源输入

X1

X2

3. 在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于 300ns ;

Page 95: 第 5 章   LPC2000 系列 ARM 硬件结构

复位

任何复位源引起的芯片复位都会启动唤醒定时器,当计数到一个固定个数的时钟时,处理器开始执行指令。这确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。

• 外部复位与内部看门狗复位的共同点

Page 96: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 外部复位与内部看门狗复位的区别

外部复位将把某几个特定引脚的值锁存,来决定系统复位后的状态,而看门狗(WDT )复位则无此功能。

检测引脚 锁存状态 对应功能

P1.20/TRACESYNC 0 P1.25~ P1.16 作为跟踪端口

P1.26/RTCK 0 P1.31~ P1.26 作为调试端口

P0.14 0 进入 ISP状态

BOOT0 BOOT1(p2.26,p2.27)

全 1 内部 Flash启动,否则外部启动

Page 97: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 复位后的系统状态

芯片被复位后,处理器和外设寄存器都恢复为默认状态。程序计数器( PC )值为 0 ,即 CPU 复位后运行的第一条代码位于 0x00000000处。此时位于该地址的程序并不位于片内 Flash ,而是来自Boot Block 的异常向量表的重新映射 ( 复位时 memmap=00) 。通过异常向量表的复位异常入口,程序跳转至 Boot Block 中执行 Boot程序。

Page 98: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 复位后的系统状态

Flash

SRAM

Boot Block

AHB & VPB

0x00000000

0xFFFFFFFF

0x40000000

0x80000000

地址空间

1. 复位后用户见到的存储器分布

Page 99: 第 5 章   LPC2000 系列 ARM 硬件结构

2. BootBlock 中的异常向量表重新映射

复位• 复位后的系统状态

Flash

SRAM

Boot Block

AHB & VPB

0x00000000

0xFFFFFFFF

0x40000000

0x80000000

地址空间

复位异常入口未定义异常入口软件中断入口

. . .

0x00000000

0x00000004

0x00000008

0x00000040

Page 100: 第 5 章   LPC2000 系列 ARM 硬件结构

PC 指向

3. PC 指向 0x0000 地址处, CPU执行复位后的第一条指令

复位• 复位后的系统状态

Flash

SRAM

Boot Block

AHB & VPB

0x00000000

0xFFFFFFFF

0x40000000

0x80000000

地址空间

复位异常入口未定义异常入口软件中断入口

. . .

0x00000004

0x00000008

0x00000040

Page 101: 第 5 章   LPC2000 系列 ARM 硬件结构

4. 通过跳转指令,程序跳入 Boot Block ,执行 Boot程序。

复位• 复位后的系统状态

PC 指向 Flash

SRAM

Boot Block

AHB & VPB

0x00000000

0xFFFFFFFF

0x40000000

0x80000000

地址空间

复位异常入口未定义异常入口软件中断入口

. . .

0x00000004

0x00000008

0x00000040

Page 102: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• Boot程序

Boot程序是芯片生产厂家固化在芯片中的一段代码,它完成芯片复位后的初始化操作,并提供实现 Flash编程的方法。 Boot装载程序可启动对空片的编程、已编程器件的擦除和再编程,以及在运行的系统中由应用程序对 Flash 存储器进行编程。

Page 103: 第 5 章   LPC2000 系列 ARM 硬件结构

• Boot程序工作流程—— LPC2114/2124

复位

运行 ISP服务程序

看门狗复位

根据硬件( P1.20 、 P1.26 )

配置

进入 ISP状态吗?(P0.14 为低 )

初始化

用户代码是否有效

执行用户代码(片内 Flash :0x00000000 )

N

Y

Y

Y

N

N

在此检测特定引脚

检测用户代码是否有效

Page 104: 第 5 章   LPC2000 系列 ARM 硬件结构

• Boot程序工作流程—— LPC2210/2212/2214

复位

看门狗复位

进入 ISP 模式?(P0.14 为低 )

初始化

用户代码是否有效

芯片加密 允许调试

外部引导

芯片加密

运行 ISP服务程序 执行外部用户代码(0x80000000)

执行内部用户代码(0x00000000)

N

N

Y

Y N

N

NNY

YY

Y

在此检测特定引脚

检测用户代码是否有效

Page 105: 第 5 章   LPC2000 系列 ARM 硬件结构

复位• 有效用户代码的判别

LPC2000 系列微控制器规定 “内部 Flash 中向量表所有数据的 32 位累加为零”时,判定内部 Flash 中的代码为有效可执行代码。即只有当向量表所有数据 32 位累加和为零时,用户的程序才能脱机运行。

Page 106: 第 5 章   LPC2000 系列 ARM 硬件结构

• 有效用户代码的判别

CODE32

AREA vectors,CODE,READONLY

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 字节为跳转地址

Page 107: 第 5 章   LPC2000 系列 ARM 硬件结构

• 有效用户代码的判别

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 0x00000000

IRQ_Addr

[0x00000000] dcd 0x00000000

FIQ_Addr

[0x8000004c] dcd 0x8000004c

异常向量表反汇编代码

前 32 字节为异常入口

后 32 字节为跳转地址

Page 108: 第 5 章   LPC2000 系列 ARM 硬件结构

• 有效用户代码的判别

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 0x00000000

IRQ_Addr

[0x00000000] dcd 0x00000000

FIQ_Addr

[0x8000004c] dcd 0x8000004c

异常向量表反汇编代码

指令的机器码

指令

Page 109: 第 5 章   LPC2000 系列 ARM 硬件结构

• 有效用户代码的判别

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 0x00000000

IRQ_Addr

[0x00000000] dcd 0x00000000

FIQ_Addr

[0x8000004c] dcd 0x8000004c

异常向量表反汇编代码

8条指令的机器码累加和为 0 ,表示用户代码有效

Page 110: 第 5 章   LPC2000 系列 ARM 硬件结构

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 0x00000000

IRQ_Addr

[0x00000000] dcd 0x00000000

FIQ_Addr

[0x8000004c] dcd 0x8000004c

异常向量表反汇编代码

8条指令的机器码累加和为 0 ,表示用户代码有效

• 有效用户代码的判别

[0x00000000]

[0xe59ff018][0xe59ff018]. . .

[0xb9205f80][0xe51ffff0][0xe59ff018]

跳转地址数据不在累加范围内

通过调整该保留字,使累加和为 0

Page 111: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 112: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 外部中断

外部中断是通过引脚输入符合要求的信号而触发的中断。 LPC2114/2124/2212/2214 含有 4 个外部中断输入(作为可选引脚功能,通过 PINSEL0/1寄存器设置相应管脚为外部中断功能)。外部中断输入可用于将处理器从掉电模式唤醒。

Page 113: 第 5 章   LPC2000 系列 ARM 硬件结构

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

外部中断• 外部中断内部示意图

2. 控制某几个引脚作为外部中断输入;

管脚连接控制

1. 可作为外部中断输入的引脚;

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

3. 控制触发外部中断的信号波形;4. 控制外部中断产生后是否唤醒 CPU ;5. 外部中断产生后设置的标志位;

(2)

(1)

(3)

(3)

(4)

(5)

Page 114: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

外部中断极性控制寄存器 (EXTPOLAR):

位 7 : 4 3 2 1 0

功能 - EXTPOLAR3 EXTPOLAR2 EXTPOLAR1 EXTPOLAR0

该寄存器控制着外部中断输入信号的极性,其中低四位( EXTPOLAR[3:0] )分别对应外部中断 3~ 0 。

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

外部中断极性控制

Page 115: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

外部中断 3 外部中断 2 外部中断 1 外部中断 0

(EINT3) (EINT2) (EINT1) (EINT0)

分别控制着

• 外部中断相关寄存器

外部中断极性控制寄存器 (EXTPOLAR):

位 7 : 4 3 2 1 0

功能 - EXTPOLAR3 EXTPOLAR2 EXTPOLAR1 EXTPOLAR0

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

Page 116: 第 5 章   LPC2000 系列 ARM 硬件结构

当 EXTPOLARx 设置为 1 时 EINTx 引脚输入信号高电平或上升沿有效。

当 EXTPOLARx 设置为 0 时 EINTx 引脚输入信号低电平或下降沿有效。

• 外部中断相关寄存器• 外部中断相关寄存器

外部中断极性控制寄存器 (EXTPOLAR):

位 7 : 4 3 2 1 0

功能 - EXTPOLAR3 EXTPOLAR2 EXTPOLAR1 EXTPOLAR0

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

Page 117: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

外部中断方式控制寄存器 (EXTMODE):

位 7 : 4 3 2 1 0

功能 - EXTMODE3 EXTMODE2 EXTMODE1 EXTMODE0

该寄存器控制着外部中断输入信号的有效触发方式,其中低四位( EXTMODE [3:0] )分别对应外部中断 3~ 0 。

• 外部中断相关寄存器

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

外部中断方式控制

Page 118: 第 5 章   LPC2000 系列 ARM 硬件结构

当 EXTMODEx 设置为 0 时输入信号为电平触发有效。

当 EXTMODEx 设置为 1 时输入信号为边沿触发有效。

• 外部中断相关寄存器

外部中断方式控制寄存器 (EXTMODE):

位 7 : 4 3 2 1 0

功能 - EXTMODE3 EXTMODE2 EXTMODE1 EXTMODE0

• 外部中断相关寄存器

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

Page 119: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

极性与方式控制的组合关系:

• 外部中断相关寄存器

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

外部中断极性控制寄存器

(EXTPOLAR)

外部中断方式控制寄存器

(EXTMODE)

外部中断触发信号波形 说明

0 0 低电平0 1 下降沿1 0 高电平1 1 上升沿

Page 120: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

外部中断唤醒寄存器 (EXTWAKE):

位 7 : 4 3 2 1 0

功能 - EXTWAKE3 EXTWAKE2 EXTWAKE1 EXTWAKE0

设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉电唤醒不需要在向量中断控制器( VIC )中使能相应的中断。该寄存器的低四位( EXTWAKE[3:0])分别对应外部中断 3~ 0 。

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

掉电唤醒控制

Page 121: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

当 EXTWAKEx 设置为 1 时对应的外部中断将处理器从掉电模式唤醒。

外部中断唤醒寄存器 (EXTWAKE):

位 7 : 4 3 2 1 0

功能 - EXTWAKE3 EXTWAKE2 EXTWAKE1 EXTWAKE0

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

Page 122: 第 5 章   LPC2000 系列 ARM 硬件结构

• 外部中断相关寄存器

外部中断标志寄存器 (EXTINT):

位 7 : 4 3 2 1 0

功能 - EINT3 EINT2 EINT1 EINT0

若引脚上出现了符合要求的信号, EXTINT寄存器中对应的中断标志将被置位。向该寄存器的 EINT0~ EINT3 位写入 1 ,可将其清零。

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

中断标志

Page 123: 第 5 章   LPC2000 系列 ARM 硬件结构

注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清除中断标志。

• 外部中断相关寄存器

外部中断标志寄存器 (EXTINT):

位 7 : 4 3 2 1 0

功能 - EINT3 EINT2 EINT1 EINT0

管脚连接控制

外部中断极性控制

外部中断方式控制

掉电唤醒控制

中断标志

CPU其它部件

PINSELx

EXTPOLAR EXTMODE

EXTINT

EXTWAKE

Page 124: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 外部中断引脚设置

通过软件设置引脚选择寄存器( PINESLEx),可以将多个引脚同时作为同一个外部中断的输入引脚。 EINT3~ EINT0 外部中断的逻辑电路接收所有与之相连引脚的状态和信号。

Page 125: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 外部中断引脚设置

根据其方式位和极性位的不同,外部中断逻辑处理如下:低电平触发方式:作为 EINT 功能的全部引脚的状态相与后作为输入信号;高电平触发方式:作为 EINT 功能的全部引脚的状态相或后作为输入信号;边沿触发方式:只使用 GPIO 端口号最低的那个引脚,并且与极性设置无关。

Page 126: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 外部中断应用示例 1—— 设置 EINT0 为低电平触发中断

...

PINSEL1 = (PINSEL1 & 0xFFFFFFFC) | 0x01;

EXTMODE &= 0x0E;

EXTPOLAR &= 0x0E;

...

C代码:

1. 设置引脚连接模块,将 P0.16 设置为外部中断功能;2. 设置中断方式寄存器,将外部中断 0 设置为电平触发;3. 设置中断极性寄存器,将外部中断 0 设置为低电平触发;

步骤:

(1)(2)(3)

Page 127: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 外部中断应用示例 2—— 设置 EINT0 为下降沿触发中断

...

PINSEL1 = (PINSEL1 & 0xFFFFFFFC) | 0x01;

EXTMODE |= 0x01;

EXTPOLAR &= 0x0E;

...

C代码:

1. 设置引脚连接模块,将 P0.16 设置为外部中断功能;2. 设置中断方式寄存器,将外部中断 0 设置为边沿触发;3. 设置中断极性寄存器,将外部中断 0 设置为下降沿触发;

步骤:

(1)(2)(3)

Page 128: 第 5 章   LPC2000 系列 ARM 硬件结构

外部中断• 使用外部中断注意要点

把某个引脚设置为外部中断功能后,该引脚为输入模式,由于没有内部上拉电阻,所以必须外接一个上拉电阻,确保引脚不被悬空;除了引脚连接模块的设置,还需确设置 VIC 模块,才能产生外部中断,否则外部中断只能反映在 EXTINT寄存器中。要使器件进入掉电模式并通过外部中断唤醒,软件应该正确设置引脚的外部中断功能,再进入掉电模式。

Page 129: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 130: 第 5 章   LPC2000 系列 ARM 硬件结构

存储器映射控制• 存储器映射控制的作用

“存储器映射控制”用于控制地址范围为 0x0000 ~ 0x003F 存储区域的重新映射。该区域存放着异常向量表。

Page 131: 第 5 章   LPC2000 系列 ARM 硬件结构

AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .

当发生异常时,程序总是跳转到地址为 0x0000~0x003F 的对应入口处,在该地址范围内存储有异常向量表。

指令未定义中止入口软件中断入口

取数据中止入口预取指中止入口

复位入口

. . .

• 存储器映射控制的必要性

异常向量表

Page 132: 第 5 章   LPC2000 系列 ARM 硬件结构

AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .

• 存储器映射控制的必要性

复位后用户看见的地址空间

Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

可能存在的程序存储器

Flash

SRAM

BootBlock片外存储器

异常向量表

Page 133: 第 5 章   LPC2000 系列 ARM 硬件结构

AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

异常向量表 内部 Flash可以来自

• 存储器映射控制的必要性

复位后用户看见的地址空间

Page 134: 第 5 章   LPC2000 系列 ARM 硬件结构

内部 SRAM

AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

异常向量表可以来自

• 存储器映射控制的必要性

复位后用户看见的地址空间

Page 135: 第 5 章   LPC2000 系列 ARM 硬件结构

Boot Block

AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

异常向量表可以来自

• 存储器映射控制的必要性

复位后用户看见的地址空间

Page 136: 第 5 章   LPC2000 系列 ARM 硬件结构

外部存储器 AREA vectors,CODE,READONLY

ENTRY

Reset

LDR PC, ResetAddr

LDR PC, UndefinedAddr

LDR PC, SWI_Addr

LDR PC, PrefetchAddr

LDR PC, DataAbortAddr

. . .Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

异常向量表可以来自

• 存储器映射控制的必要性

复位后用户看见的地址空间

为了让运行在不同存储器空间中的程序对异常进行控制。可以通过存储器映射控制,将位于不同存储空间的异常向量表重新映射至固定地址 0x00~0x3F处,以实现异常向量表的来源控制。

Page 137: 第 5 章   LPC2000 系列 ARM 硬件结构

存储器映射控制寄存器( MEMMAP )是一个可读可写的寄存器 。

MAP[1:0] :用于存储器映射控制,实现部分地址的重新映射;

-:表示该位保留。

位 7 6 5 4 3 2 1 0

功能 - - - - - - MAP[1:0]

PLL 控制寄存器 (PLLCON):

存储器映射控制• 存储器映射控制寄存器描述

Page 138: 第 5 章   LPC2000 系列 ARM 硬件结构

MEMMAP 为不同值时, ARM 内核发生异常,程序跳转到异常向量表的来源也不相同。

MAP[1:0] 映射方式

00Boot装载程序模式。异常向量表从 Boot Block重新映射。

01片内 Flash 模式。异常向量表不重新映射,它位于 Flash 中。

10 片内 RAM 模式。异常向量表从静态 RAM重新映射。

11外部存储器模式。异常向量表从外部存储器重新映射。该模式仅适用于 LPC2200 系列。

存储器映射控制• 存储器映射控制寄存器描述

Page 139: 第 5 章   LPC2000 系列 ARM 硬件结构

存储器映射控制• MEMMAP 在芯片复位后被修改的条件 (自动修改 )

判断条件 MAP[1:0]

说明 微控制器型号

片内 Flash 中用户代码有效 01从内部 Flash执行用户程序 LPC2114/2124

1. 引脚 BOOT1:0 不全为高电平2. 芯片没有加密

11从外部 Flash 执行程序 LPC2210/2212/2214

1. 引脚 BOOT1:0 全为高电平2. 片内 Flash 中用户代码有效 01

从内部 Flash执行程序 2212/2214

在芯片复位时, MEMMAP值为 0 。首先得到运行的 Boot程序,根据上表最左栏的判断条件来修改MEMMAP值。上表不包括的其它情况, MEMMAP值均为 0x00 。

Page 140: 第 5 章   LPC2000 系列 ARM 硬件结构

• Boot程序对MEMMAP 的影响—— LPC2114/2124

进入 ISP状态吗?(P0.14 为低 )

复位

运行 ISP服务程序

看门狗复位

根据硬件( P1.20 、 P1.26 )

配置

初始化

用户代码是否有效

执行用户代码(片内 Flash :0x00000000 )

N

Y

Y

Y

N

N

在此检测特定引脚

检测用户代码是否有效

复位后MEMMAP= 00

其它情况下MEMMAP= 00

用户代码有效且 P0.14 为高电平MEMMAP= 01

复位

运行 ISP服务程序

执行用户代码(片内 Flash :0x00000000 )

Page 141: 第 5 章   LPC2000 系列 ARM 硬件结构

• Boot程序对MEMMAP 的影响—— LPC2210/2212/2214

复位

看门狗复位

进入 ISP 模式?(P0.14 为低 )

初始化

用户代码是否有效

芯片加密 允许调试

外部引导

芯片加密

运行 ISP服务程序 执行外部用户代码(0x80000000)

执行内部用户代码(0x00000000)

N

N

Y

Y N

N

NNY

YY

Y

在此检测特定引脚

检测用户代码是否有效

复位复位后MEMMAP= 00

其它情况下MEMMAP= 00

BOOT 引脚全为高且用户代码有效MEMMAP= 01

运行 ISP服务程序 执行外部用户代码(0x80000000)

执行内部用户代码(0x00000000)

芯片未加密且BOOT 引脚不全为高MEMMAP= 11

Page 142: 第 5 章   LPC2000 系列 ARM 硬件结构

0x00000000

0x40000000

0x80000000

0x7FFFE000

存储空间 0xFFFFFFFF

内核地址总线 存储器地址总线

Fl ash内部

SRAM内部

外部存储器

Boot Bl ock

异常向量表32 ARM位 指令

0x0000003F

0x4000003F

0x7FFFE03F

0x8000003F

地址转换器

0x00000000

0x0000003F0x00000040

映射的目标存储块

MEMMAP

11

00

10

01

内核执行的异常向量表地址范围

地址转换器 物理存储器的地址空间

内核与物理存储器的关系

• 存储器映射控制原理

Page 143: 第 5 章   LPC2000 系列 ARM 硬件结构

0x00000000

0x40000000

0x80000000

0x7FFFE000

存储空间 0xFFFFFFFF

内核地址总线 存储器地址总线

Fl ash内部

SRAM内部

外部存储器

Boot Bl ock

异常向量表32 ARM位 指令

0x0000003F

0x4000003F

0x7FFFE03F

0x8000003F

地址转换器

0x00000000

0x0000003F0x00000040

映射的目标存储块

MEMMAP

11

00

10

01

1. 内核产生地址 2.经过地址转换器

3.映射到物理存储器地址

存储器映射的流程

• 存储器映射控制原理

Page 144: 第 5 章   LPC2000 系列 ARM 硬件结构

存储器映射控制• 存储器映射控制重新映射前后地址

转换前内核地址总线值 MEMMAP值 转换后

存储器地址总线值

0x00000000~ 0x0000003F

00 0x7FFFE000~ 0x7FFFE03F

01 0x00000000~ 0x0000003F

10 0x40000000~ 0x4000003F

11 0x80000000~ 0x8000003F

0x00000040~ 0xFFFFFFFF

任意 对应不变

Page 145: 第 5 章   LPC2000 系列 ARM 硬件结构

复位后用户看见的地址空间

Flash

SRAM

BootBlock

VPB 外设AHB 外设

0x00000000

0xFFFFFFFF

0x40000000

0xE0000000

0x80000000

片外存储器

存储器映射控制• 存储器映射控制重新映射前后地址

0 1MEMMAP[1:0]= 1 00 01 1

不重新映射

Page 146: 第 5 章   LPC2000 系列 ARM 硬件结构

存储器映射控制• Remap 应用实例——中断向量表位于片内 RAM

在某些应用中,为了能动态修改异常向量表的内容,需要把异常向量表放在 RAM 中,并设置存储器映射控制寄存器( MEMMAP )。

Page 147: 第 5 章   LPC2000 系列 ARM 硬件结构

1. 将异常向量表从 Flash 中复制到内部 SRAM的 0x40000000 到 0x4000003F 地址处

操作流程

2. 设置 MEMMAP值为 2

Vectors

地址空间

Fl ash内部Vectors+3F

0x400000000x4000003F

SRAM内部

存储器映射控制• Remap 应用实例——中断向量表位于片内 RAM

Page 148: 第 5 章   LPC2000 系列 ARM 硬件结构

. . .

cp1 = uint32(Vectors);

cp2 = 0x40000000;

for(i=0; i<16; i++)

{

*cp2++ = *cp1++;

}

MEMMAP = 2;

. . .

程序代码

存储器映射控制• Remap 应用实例——中断向量表位于片内 RAM

1. 将异常向量表从 Flash 中复制到内部 SRAM的 0x40000000 到 0x4000003F 地址处

操作流程

2. 设置 MEMMAP值为 2

Page 149: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 150: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——描述

LPC2114/2124/2210/2212/2214 支持两种节电模式:空闲模式和掉电模式。另外还具有外设的功率控制特性,允许独立关闭应用中不需要的外设,这样可以进一步降低功耗。

Page 151: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——空闲模式

在该模式下,内核停止执行指令,直到发生复位或中断为止,但系统时钟 CCLK 一直有效。外设功能在空闲模式下继续保持并可产生中断使处理器恢复运行。空闲模式使处理器、存储器系统和相关控制器以及内部总线不再消耗功率。

Page 152: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——掉电模式

在该模式下,振荡器关闭,这样芯片没有任何内部时钟。处理器状态和寄存器、外设寄存器以及内部 SRAM值在掉电模式下被保持。芯片引脚的逻辑电平保持掉电时的状态。复位或特定的不需要时钟仍能工作的中断可终止掉电模式并使芯片恢复正常运行。由于掉电模式使芯片所有的动态操作都挂起,因此芯片的功耗降低到几乎为零。

Page 153: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——两种模式对比

模式类别 内部时钟 外设工作 芯片状态 唤醒方式 功耗空闲 有 是 保持 复位、任何中断 低

掉电 无 需要时钟支持的外设停止工作 保持 复位、不需要时

钟支持的中断 几乎为零

Page 154: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——寄存器描述

功率控制寄存器 (PCON):

该寄存器控制芯片的节电模式,下表为低两位的设置关系。

位 7 6 5 4 3 2 1 0

功能 - - - - - - PD IDL

PD 位 IDL 位 芯片状态0 0 正常工作0 1 空闲模式1 0 掉电模式1 1 掉电模式

Page 155: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——寄存器描述

外设功率控制寄存器 (PCONP):

该寄存器允许将所选的外设功能关闭以实现节电的目的。芯片中有部分外设不能被关闭,分别为看门狗定时器、 GPIO 、引脚连接模块和系统控制模块。

该寄存器的每个位都控制一个外设,由于 LPC2210/2212/2214 具有 EMC 模块,而 LPC2114/2114没有,所以它们的 PCONP寄存器有所区别。

Page 156: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——寄存器描述

外设功率控制寄存器 (PCONP)——2112/2114 :

位 功能 控制外设0 - 保留1 PCTIM0 定时器 0

2 PCTIM1 定时器 1

3 PCURT0 串口 0

4 PCURT1 串口 1

5 PCPWM0 PWM0

6 - 保留7 PCI2C I2C

位 功能 控制外设8 PCSPI0 SPI0

9 PCRTC RTC

10 PCSPI1 SPI1 接口11 - 保留12 PCAD A/D 转换器13 - 保留14 - 保留15 - 保留

Page 157: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——寄存器描述

外设功率控制寄存器 (PCONP)——2210/2212/2214 :

位 功能 控制外设0 - 保留1 PCTIM0 定时器 0

2 PCTIM1 定时器 1

3 PCURT0 串口 0

4 PCURT1 串口 1

5 PCPWM0 PWM0

6 - 保留7 PCI2C I2C

位 功能 控制外设8 PCSPI0 SPI0

9 PCRTC RTC

10 PCSPI1 SPI1 接口11 PCEMC EMC 部件12 PCAD A/D 转换器13 - 保留14 - 保留15 - 保留

注意:在运行片外存储器的程序时,不要设置 PCEMC 为 0 ,否则由于 EMC 关闭,会导致程序运行错误。

Page 158: 第 5 章   LPC2000 系列 ARM 硬件结构

功率控制• 功率控制——注意要点

芯片复位后,硬件设置 PCONP 的值为使能芯片内所有的接口和外围模块。因此用户的应用程序除了对外围部件的相关寄存器进行配置外,不需要为了启用片内的某个外围功能而设置 PCONP寄存器;在需要控制功率的系统中,只要将应用中用到的外围模块对应在 PCONP寄存器的位置 1 ,而寄存器的其它“保留”位或当前无需使用的外围模块对应在寄存器中的位都必须清零。

Page 159: 第 5 章   LPC2000 系列 ARM 硬件结构

5.4 系统控制模块小节目录系统控制模块概述系统时钟复位外部中断存储器映射控制功率控制唤醒定时器

Page 160: 第 5 章   LPC2000 系列 ARM 硬件结构

唤醒定时器• 唤醒定时器——用途

唤醒定时器的用途:当给芯片复位或某个事件将处理器从掉电模式唤醒时,需要唤醒定时器来确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。

唤醒定时器的工作完全由硬件控制,不需要用户干预。

Page 161: 第 5 章   LPC2000 系列 ARM 硬件结构

唤醒定时器• 唤醒定时器——与时钟的关系

在检测到第一个有效的时钟后,唤醒定时器需要对 4096 个时钟计数,这段时间可使 Flash进行初始化。在 Flash 存储器初始化结束时,如果外部复位已撤除,处理器开始执行指令。

复位或掉电唤醒

振荡器输出

时钟产生单元

启动唤醒定时器启动唤醒定时器

复位或掉电唤醒

计数 4096 个时钟后控制开关闭合

对输入时钟计数

Page 162: 第 5 章   LPC2000 系列 ARM 硬件结构

唤醒定时器• 唤醒定时器——与外部中断的关系

如果使能了外部中断唤醒功能,并且所选中断事件出现,那么唤醒定时器将被启动。如果向量中断控制器( VIC )的中断功能也使能,那么实际的中断在唤醒定时器停止后产生。

Page 163: 第 5 章   LPC2000 系列 ARM 硬件结构