• 沒有找到結果。

系统控制模块

在文檔中 1.1 嵌入式系统 (頁 146-150)

第5章 LPC2000系列ARM硬件结构

2. 存储器的重新映射

5.4 系统控制模块

ROM_EXEC 0x80000000 (2)

{

Startup.o (vectors, +First) (3)

* (+RO) (4)

} }

其中,程序清单5.2 (1),ROM_LOAD 为加载区的名称,其后面的 0x80000000 表示加载 区 的 起 始 地 址 ( 存 放 程 序 代 码 ), 也 可 以 在 后 面 添 加 其 空 间 大 小 , 如 “ROM_LOAD 0x80000000 0x20000”。程序清单 5.2 (2),ROM_EXEC 描述了执行区的地址,放在第 一块定义,其起始地址、空间大小与加载区起始地址、空间大小要一致。程序清单5.2 (3、

4),从起始地址开始放置向量表(即“Startup.o (vectors, +First)”,其中 startup.o 为 startup.s 的 目标文件),接着放置其它代码(即“* (+RO)”)。这样即可把向量表定义到 0x80000000 处,

LPC2210/2212/2214 芯片复位时若 BOOT1:0 引脚不为 11,则会自动 0x80000000~0x8000003F 映射到0x00000000~0x0000003F,实现程序的启动。

复位初始化程序ResetInit(在 startup.s 文件中)如程序清单 5.3 所示,调用 InitStack 子程序 (在 startup.s 文件中)来初始化各个模式下的堆栈,调用 TargetResetInit()函数(在 target.c 文件 中)来初始化与目标系统相关的设置,最后调用 ADS 提供的__main,初始化运行时库并进入 用户的main()函数。

程序清单 5.3 复位初始化程序 ResetInit

BL InitStack BL TargetResetInit

B __main

5.4 系统控制模块

5.4.1 系统控制模块功能汇总

系统控制模块包括几个系统构件和控制寄存器,这些寄存器具有众多与特定外设器件无 关的功能。系统控制模块包括:

晶体振荡器 复位

外部中断输入 存储器映射控制 PLL

VPB 分频器

- - 137 功率控制

唤醒定时器

每种类型的功能都有其自身的寄存器,不需要的位则定义为保留位。为了满足将来扩展 的需要,无关的功能不共用相同的寄存器地址。

5.4.2 引脚描述

表5.7 所示为系统控制模块功能相关的引脚。

表 5.7 系统控制模块引脚汇总

引脚名称 引脚方向 引脚描述

X1 输入 晶振输入 振荡器和内部时钟发生器电路的输入 X2 输出 晶振输出 振荡器放大器的输出

RESET 输入 外部复位输入 该引脚上的低电平将使芯片复位,使 I/O 口和外设恢复其 默认状态,并使处理器从地址0 开始执行程序。

EINT0 输入 外部中断 0 输入 该引脚可用于将处理器从空闲或掉电模式中唤醒。

P0.1、P0.16 引脚可设置为 EINT0 功能。

EINT1 输入 外部中断 1 输入 该引脚可用于将处理器从空闲或掉电模式中唤醒。

P0.3、P0.14 引脚可设置为 EINT1 功能。

EINT2 输入 外部中断 2 输入 该引脚可用于将处理器从空闲或掉电模式中唤醒。

P0.7、P0.15 引脚可设置为 EINT2 功能。

EINT3 输入 外部中断 3 输入 该引脚可用于将处理器从空闲或掉电模式中唤醒。

P0.9、P0.20、P0.30 引脚可设置为 EINT3 功能。

5.4.3 寄存器描述

系统控制模块寄存器汇总见表5.8,所有寄存器不管规格大小都以字地址作为边界。这 些寄存器的详细信息见相关功能的描述。

表 5.8 系统控制寄存器汇总

名称 描述 访问 复位值* 地址

外部中断

EXTINT 外部中断标志寄存器 R/W 0 0xE01FC140

EXTWAKE 外部中断唤醒寄存器 R/W 0 0xE01FC144

EXTMODE 外部中断方式寄存器 R/W 0 0xE01FC148

EXTPOLAR 外部中断极性寄存器 R/W 0 0xE01FC14C

存储器映射控制

MEMMAP 存储器映射控制 R/W 0 0xE01FC040

锁相环

PLLCON PLL 控制寄存器 R/W 0 0xE01FC080

PLLCFG PLL 配置寄存器 R/W 0 0xE01FC084

PLLSTAT PLL 状态寄存器 RO 0 0xE01FC088

PLLFEED PLL 馈送寄存器 WO NA 0xE01FC08C

功率控制

PCON 功率控制寄存器 R/W 0 0xE01FC0C0

- - 138 接上表

名称 描述 访问 复位值* 地址

PCONP 外设功率控制 R/W 0x3BE 0xE01FC0C4

VPB 分频器

VPBDIV VPB 分频器控制 R/W 0 0xE01FC100

*: 复位值仅指已使用位中保存的数据,不包括保留位的内容。

5.4.4 晶体振荡器

对于LPC2114/2124/2210/2212/2214,如果是从 XTAL1 脚输入占空比因数为 50-50 的时 钟信号,时钟频率在 1MHz~50MHz 范围内;如果是使用外部晶体,微控制器的内部振荡 电路仅支持1MHz~30MHz 的外部晶体。如果需要使用片内 PLL 系统或引导装载程序(即 ISP 功能),输入时钟频率将被限制到 10MHz~25MHz。图 5.10 为选择振荡器的流程图。

fOSC选择

min fOSC = 10 MHz max fOSC = 25 MHz

True

True

min fOSC = 1 MHz max fOSC = 30 MHz True

min fOSC = 1 MHz max fOSC = 50 MHz

False

False

False 使用了片内PLL?

通过ISP下载初始代码?

使用外部晶振?

(图 5.11,模式 a 或 b) (图 5.11,模式 a) (图 5.11,模式 b) 图 5.10 Fosc 的选择

振荡器输出频率称为FOSC。为了便于频率等式的书写及本文档的描述,ARM 处理器时 钟频率称为cclk。除非 PLL 运行并连接,否则 FOSC和cclk 的值相同。

LPC2114/2124/2210/2212/2214 的振荡器可工作在两种模式下:从属模式和振荡模式。

从属模式,如图 5.11 中 a 图所示,输入时钟信号与一个 100pF(图 5.11 的 Cc)相 连,其幅值不少于200mVrms,X2 引脚不连接。如果选择从属模式,Fosc 信号(占 空比因数为50-50)的频率被限制在 1MHz~50MHz。

振荡模式,使用的外部元件和模型见图 5.11 中的 b 和 c 图以及表 5.9。由于片内集 成了反馈电阻,只需在外部连接一个晶体和电容Cx1、Cx2 就可形成基本模式的振 荡(基本频率用L、CL和Rs 来表示)。图 5.11 中 c 图的电容 Cp 是并联封装电容,

其值不能大于7pF。参数 Fc、CL、Rs 和 Cp 都由晶体制造商提供。

- - 139

LPC2114/2124/2210/2212/2214 有两个复位源:RESET引脚和看门狗复位。RESET引脚 为施密特触发输入引脚,带有一个额外的干扰滤波器。任何复位源引起的芯片复位都会启动 唤醒定时器(详见第5.4.12 小节的唤醒定时器的描述),复位将保持有效直至外部复位撤除,

此时振荡器已正常工作。当计数达到一个固定个数的时钟时,Flash 控制器完成其初始化。

- - 140

复位、振荡器以及唤醒定时器之间的关系见图5.12。LPC2114/2124 复位处理流程参考图 5.13,

LPC2210/2212/2214 复位处理流程参考图 5.14。

复位干扰滤波器使处理器可以忽略非常短的外部复位脉冲,它决定了RESET保证芯片复 位 所 必 须 保 持 的 最 短 时 间 。 RESET 一 旦 有 效 , 只 有 当 晶 振 运 行 稳 定 并 且 LPC2114/2124/2210/2212/2214 的 X1 脚上出现适当的信号时才能撤除。如果晶振子系统使用 的是外部晶体,上电后RESET脚的信号必须保持 10ms。对于晶振已经稳定运行且 X1 脚上 置,内部WDT 复位则无此功能。在外部复位时对引脚 P1.20/TRACESYNC,P1.26/RTCK,

BOOT1 和 BOOT0(见第5.2 节、第 5.7 节和第 5.6 节的描述)的状态进行判断,以实现不

PC2114/2124/2212/2214 规定了“向量表所有数据 32 位累加和为零”作为有效代用户代 码条件,也就是说,只有当向量表所有数据32 位累加和为零时,用户的程序才能脱机运行。

通过定义向量表中的保留字(0x00000014 地址)的值(使用 DCD 指令定义),使向量表所有数 据32 位累加和为零(0x00000000~0x0000001C 的 8 个字的机器码累加)。LPC2100、LPC2200 启动代码的向量表及指令机器码如程序清单5.4 所示。

在文檔中 1.1 嵌入式系统 (頁 146-150)