主题: arm 开发流程
DESCRIPTION
主题: ARM 开发流程. 6.2 最小系统设计. 6.2.1 最小系统概述 6.2.2 电源设计 6.2.3 时钟电路设计 6.2.4 复位电路设计 6.2.5 调试接口设计 6.2.6 存储系统设计 6.2.7 最小系统示例. 6.2.1 最小系统概述. 设计一个最小系统是学习 ARM 的好方法 - PowerPoint PPT PresentationTRANSCRIPT
周立功单片机
主题:ARM 开发流程
周立功单片机
6.2 最小系统设计6.2.1 最小系统概述6.2.2 电源设计6.2.3 时钟电路设计6.2.4 复位电路设计6.2.5 调试接口设计6.2.6 存储系统设计6.2.7 最小系统示例
周立功单片机
6.2.1 最小系统概述设计一个最小系统是学习 ARM 的好方法
一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7 处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。
周立功单片机
6.2.1 最小系统概述• 最小系统框图
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器
可选,但是在样品阶段通常都会设计这部分电路
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
供电系统( 电源 )
电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。
6.2.2 电源设计
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
供电系统( 电源 )
设计电源时要考虑的因素:
1.输出的电压、电流、功率;
2.输入的电压、电流;
3.安全因素;
4.输出纹波;
5.电磁兼容和电磁干扰;
6.体积限制;
7.功耗限制;
8.成本限制。
6.2.2 电源设计
周立功单片机
1. 分析需求
电压 型号
3.3V 1.8V
数字电源 模拟电源 数字电源 模拟电源
LPC210x V3.3 无 V1.8 无LPC213x/214x V3.3D V3.3A 无 无LPC22xx/21xx V3.3D V3.3A V1.8D V1.8A
6.2.2 电源设计
( 1) LPC2000 系列微控制所需要的电源类型
周立功单片机
1. 分析需求
6.2.2 电源设计
( 2)系统需求
主要考虑是否需要将数字电源和模拟电源分开。
( 1 )如果不使用芯片的 A/D 或者 D/A 功能,可以不区分数字电源和模拟电源。( 2 )如果使用了 A/D 或者 D/A ,还需考虑参考电源设计。
周立功单片机
输入15V
5V输出
5V输出
输出3.3V
输出1.8V
1模块
2模块
1模块
其它电路
1. 分析需求
6.2.2 电源设计
( 3)电源电路的前级和末级
电源前级 电源末级
周立功单片机
2. 设计末级电源电路6.2.2 电源设计
LPC2000 系列微控制 1.8V 消耗电流的极限值为 70mA 。为了保证可靠性并为以后升级留下余量,则电源系统 1.8V能够提供的电流应当大于 300mA 。
整个系统在 3.3V 上消耗的电流与外部条件有很大的关系,这里假设电流不超过 200mA ,这样,电源系统 3.3V 能够提供 600mA 电流即可。
分析得到以下参数:3.3V 电源设计最大电流: 600mA ;1.8V 电源设计最大电流: 300mA 。
周立功单片机
因为系统对这两组电压的要求比较高,且其功耗不是很大,所以不适合用开关电源,应当用低压差模拟电源( LDO )。合乎技术参数的 LDO 芯片很多, Sipex 半导体 SPX1117 是一个较好的选择,它的性价比高,且有一些产品可以与它直接替换,减少采购风险。
2. 设计末级电源电路6.2.2 电源设计
周立功单片机
SPX1117 主要特点:0.8A稳定输出电流;1A稳定峰值电流;3V可调节;低静态电流;0.8A0.8A 时低压差为时低压差为 1.1V1.1V ;;0.1%线形调整率;0.2%负载调整率;过流及温度保护;多种封装供选择。
6.2.2 电源设计
周立功单片机
Vin1
GN
D2
Vout3
U12SPX1117M3-3.3
C33104
C610uF/16V
+5V VDD3.3
Vin1
GN
D2
Vout3
U11SPX1117M3-1.8
C44104
C710uF/16V
+5V VDD1.8
6.2.2 电源设计
末级电源电路实例
周立功单片机
6.2.2 电源设计
模数隔离实例
4.7uF 104
10uH
10uH
104104
VDDA
VssA
VDD
Vss
LPC2131
+3.3V
模拟地VssA
数字电源+3.3V 模拟电源+3.3V
数字地Vss
周立功单片机
尽管 SPX1117允许的输入电压可达 20V (参考芯片数据手册),但太高的电压使芯片的发热量上升,散热系统不好设计,同时影响芯片的性能。这样,就需要前级电路调整一下。如果系统可能使用多种电源(如交流电和电池),各种电源的电压输出不一样,就更需要前级调整以适应末级的输入。通过之前的分析,前级的输出选择为 5V 。选择 5V 作为前级的输出有两个原因:
这个电压满足 SPX1117 的要求;目前很多器件还是需要 5V 供电的,这个 5V 可以兼做前级和末级了。
6.2.2 电源设计3. 设计前级电源电路
周立功单片机
根据系统在 5V 上消耗的电流和体积、成本等方面的考虑,前级电路可以使用开关电源,也可以使用模拟电源。 它们的特别如下:
开关电源:效率较高,可以减少发热量,因而在功率较大时可以减小电源模块的体积;模拟电源:电路简单,输出电压纹波较小,并且干扰较开关电源小得多。
6.2.2 电源设计3. 设计前级电源电路
周立功单片机
6.2.2 电源设计Vin
1
GN
D2
Vout3
U11SPX1117M3-1.8
C2104
C3220uF/35V
+5V
C4104
C1220uF/35V
123
CZ1
POWER(9V)
C3220uF/35V
L1
330uH/1A
14
2
3 5VIN
GN
D
/ON
OF
F
FEEDBACK
OUTPUT
U4LM2575
D21N5819
D11N5819
C1
470uF/35V
C2104
C4
104
123
CZ1
POWER(9V)
D11N5819
+5V
模拟电源
开关电源
前级电源电路实例
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。
时钟系统
6.2.3 时钟电路设计
周立功单片机
6.2.3 时钟电路设计
目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。
LPC2000
X1 X2
C CXtal
LPC2000
X1 X2
C
Clock
使用内部振荡器 使用外部时钟源
可以使用稳定的时钟信号源,如有源晶振等。
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
微控制器在上电时状态并不确定,这造成微控制器不能正确工作。为解决这个问题,所有微控制器均有一个复位逻辑,它负责将微控制器初始化为某个确定的状态。这个复位逻辑需要一个复位信号才能工作。一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。这个信号的稳定性和可靠性对微控制器的正常工作有重大影响。
复位及其配置系统
6.2.4 复位电路设计
周立功单片机
复位电路可以使用简单的阻容复位,这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用专门的复位芯片。
阻容复位
R1
10K
+3.3V
LPC2000C147u
6.2.4 复位电路设计
最好避免使用!
周立功单片机
常用的复位专用芯片有 CATALYST公司的 CAT800 系列, Sipex公司的 SP700 系列和 SP800 系列。为了适应嵌入式系统的应用,这些公司还推出带有 EEPROM 存储器和看门狗的复位芯片,这可以降低系统成本和缩小产品体积,减少元件数量也有利于系统的稳定性。
如果系统不需要手动复位功能,可以选择 CAT809 。如果需要手动复位功能,可以选择 SP705/706 、 SP708SCN 。
种类繁多的复位芯片可以满足不同工作电压和不同复位方式的系统,这里仅介绍其中部分。
注意:复位芯片的复位门槛的选择至关重要,一般应当选择微控制器的 IO 口供电电压范围为标准。 LPC2000 这个范围为: 3.0V ~ 3.6V ,所以选择复位门槛电压为 2.93V ,即电源电压低于 2.93V 时产生复位信号。
6.2.4 复位电路设计
周立功单片机
6.2.4 复位电路设计复位电路实例 CAT809
低有效复位; 在工业级温度范围的应用中可直接代替 MAX809 ; Vcc 低至 1.0V 时,复位信号仍然有效; 6uA 的电源电流; 抗电源的瞬态干扰; 紧凑的 3脚 SOT23 和 SC70封装; 工业级温度范围:- 40℃~ +85 ℃ 。
GND
VCC
RST
LPC2000
RST
+3.3V
CAT809
R1
10K
周立功单片机
6.2.4 复位电路设计
MRNCPFIGND
VCCRSTRSTPFO
RST
LPC2000RST
+3.3V
SP708
复位电路实例 SP708/R/S/T 2.63V:SP708R ; 2.93V:SP708S ; 3.08V:SP708T ; 复位脉冲宽度 -200ms ; 最大电源电流 40uA ; 支持开关式 TTL/CMOS手动复位输入; Vcc 下降至 1V 时, nRESET 信号仍然有效; SP708/R/S/T支持高 / 低电平两种方式。
周立功单片机
6.2.4 复位电路设计复位电路实例 SP6200/6201 适用于要求高精度、快速操作和方便使用的应用; 极低的关断电流:最大为 1uA ; 低压差: 160mV@100mA 。输出电压高精度: 2% ; 逻辑控制的电子使能; 复位输出 (VOUT良好 ) ; 1uF 的陶瓷电容就可保持器件无条件稳定工作。
电压输出使能 复位输出
周立功单片机
6.2.4 复位电路设计复位电路实例 CAT1024/1025 具有 2K 字节 EEPROM 存储器,数据保存时间长达 100年; 存储器采用 400KHz 的 I2C总线接口, 16 字节的页写缓冲区; CAT1025 具有高、低电平复位信号, CAT1024 具有低电平复位信号。 Vcc 低至 1V 时复位仍有效; 工作电压范围: 2.7V~ 5.5V ; 手动复位输入。
VDD3.3
10K
10K
10K
MR1
RESET 2RESET3
VSS4 SDA 5SCL6
WP7
VCC 8U3
CAT1025JI-30
VDD3.3
nRST
RST
SCL0SDA0
周立功单片机
6.2.4 复位电路设计 微控制器在复位后可能有多种初始状态,具体复位到哪种初始状态是在复位的过程中决定的。复位逻辑可能通过片内只读存储器中的数据决定具体的初始状态,但更多的是通过复位期间的引脚状态决定,也可能通过两者共同决定。用引脚状态配置复位后的初始状态没有统一的方法,需要根据相关芯片的手册决定。
LPC2000
RSTP2.26P2.27 P1.26
P1.20P0.14
10K * 2
nRST+3.3V
10K * 2
+3.3V
P2.26 和 P2.27 决定复位后存储器的来源以及存储器的宽
度
P1.26 决定复位后是否使用 P1.31 ~ P1.2
6 作为调试端口
P1. 20 决定复位后是否使用 P1.25 ~
P1.16 作为跟踪端口
P0.14 决定复位后是否进入 ISP 状态
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
调试与测试接口不是系统运行必须的,但现代系统越来越强调可测性,调试、测试接口的设计也要重视了。LPC2000 有一个内置 JTAG 调试接口,通过这个接口可以控制芯片的运行并获取内部信息。
调试测试接口
6.2.5 调试接口设计
周立功单片机
调试接口电路一
TRACEPKT3TRACEPKT2
TRACEPKT0
TRST
RTCK
EXTIN0TRACECLKPIPESTAT2PIPESTAT1PIPESTAT0
TRACESYNC
TCKRESET
TDI
TDO
TRACEPKT1
TMS
U1
1
23
U2A74HC125
4
56
U2B74HC125
VDD3.3
VDD3.3
TRST RST
R1
10K
R2
10K
nRST
1 23 45 67 89 1011 1213 1415 1617 1819 20
J2
TRSTTDITMSTCKRTCKTDORST
R44.7K
JTAGVDD3.3
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 38
J18
ETM
TRSTTDITMSTCKRTCKTDORST
TRACECLK
EXTIN0
PIPESTAT0PIPESTAT1PIPESTAT2TRACESYNCTRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3
R3
4.7K
TRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3TRACESYNCPIPESTAT0PIPESTAT1PIPESTAT2TRACECLKEXTIN0
ETM
LPC
2200
ETM 功能仅在高级仿真器中具有,用户如果没有使用,可以将其省略,同时把 TRACESYNC 信号上的电阻也去掉。
6.2.5 调试接口设计
RTCK必须接 4.7K下拉电阻。
标准 20针 JTAG
周立功单片机
调试接口电路一
TRACEPKT3TRACEPKT2
TRACEPKT0
TRST
RTCK
EXTIN0TRACECLKPIPESTAT2PIPESTAT1PIPESTAT0
TRACESYNC
TCKRESET
TDI
TDO
TRACEPKT1
TMS
U1
1
23
U2A74HC125
4
56
U2B74HC125
VDD3.3
VDD3.3
TRST RST
R1
10K
R2
10K
nRST
1 23 45 67 89 1011 1213 1415 1617 1819 20
J2
TRSTTDITMSTCKRTCKTDORST
R44.7K
JTAGVDD3.3
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 38
J18
ETM
TRSTTDITMSTCKRTCKTDORST
TRACECLK
EXTIN0
PIPESTAT0PIPESTAT1PIPESTAT2TRACESYNCTRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3
R3
4.7K
TRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3TRACESYNCPIPESTAT0PIPESTAT1PIPESTAT2TRACECLKEXTIN0
ETM
LPC
2200
在该电路中,复位电路与前面介绍电路有所不同。它在复位信号和 CPU之间插入了三态门 74HC125 。使用三态门主要是为了复位芯片和 JTAG ( ETM )仿真器都可以复位芯片。如果没有 74HC125 ,当复位芯片输出高电平时, JTAG ( ETM )仿真器就不可能把它拉低,这不但不能实现需要的功能,还可能损坏复位芯片或 JTAG ( ETM )仿真器。
6.2.5 调试接口设计
周立功单片机
因为这种电路 JTAG ( ETM )仿真器对 LPC2000 有完全的控制,其仿真性能最好。不过,由于 74HC125 工作的电压范围低于复位芯片的工作电压范围,所以此电路一般用于样机。正式产品中可以不需要这部分电路。
TRACEPKT3TRACEPKT2
TRACEPKT0
TRST
RTCK
EXTIN0TRACECLKPIPESTAT2PIPESTAT1PIPESTAT0
TRACESYNC
TCKRESET
TDI
TDO
TRACEPKT1
TMS
U1
1
23
U2A74HC125
4
56
U2B74HC125
VDD3.3
VDD3.3
TRST RST
R1
10K
R2
10K
nRST
1 23 45 67 89 1011 1213 1415 1617 1819 20
J2
TRSTTDITMSTCKRTCKTDORST
R44.7K
JTAGVDD3.3
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 38
J18
ETM
TRSTTDITMSTCKRTCKTDORST
TRACECLK
EXTIN0
PIPESTAT0PIPESTAT1PIPESTAT2TRACESYNCTRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3
R3
4.7K
TRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3TRACESYNCPIPESTAT0PIPESTAT1PIPESTAT2TRACECLKEXTIN0
ETM
LPC
2200
6.2.5 调试接口设计
周立功单片机
调试接口电路二
TRACEPKT3TRACEPKT2
TRACEPKT0
TRST
RTCK
EXTIN0TRACECLKPIPESTAT2PIPESTAT1PIPESTAT0
TRACESYNC
TCKRESET
TDI
TDO
TRACEPKT1
TMS
U1
VDD3.3
nRST
1 23 45 67 89 1011 1213 1415 1617 1819 20
J2
TRSTTDITMSTCKRTCKTDO
R24.7K
JTAGVDD3.3
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 38
J18
ETM
TRSTTDITMSTCKRTCKTDO
TRACECLK
EXTIN0
PIPESTAT0PIPESTAT1PIPESTAT2TRACESYNCTRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3
R1
4.7K
TRACEPKT0TRACEPKT1TRACEPKT2TRACEPKT3TRACESYNCPIPESTAT0PIPESTAT1PIPESTAT2TRACECLKEXTIN0
ETML
PC22
00
6.2.5 调试接口设计
RTCK必须接 4.7K下拉电阻。
ETM跟踪接口
标准 20针 JTAG
周立功单片机
嵌入式控制器
时钟系统 调试测试接口
复位及其配置系统
存储器系统
供电系统( 电源 )
大部分 LPC2000 芯片都有片内 Flash ,可以不用再设计额外的存储器系统。如果微控制器没有片内存储器,就必须设计存储器系统,这一般通过微控制器的外部总线接口实现。
存储器系统
6.2.6 存储系统
周立功单片机
如果需要外扩存储系统,需要考虑:
( 1)总线宽度
( 2)总线速度
尽量避免使用 8位总线,推荐使用 16和 32 位总线,器件选型尽量选择高速存储器。
如果使用 16位总线,使用 Thumb 指令集可获得更高的性能。
6.2.6 存储系统
周立功单片机
示例: LPC2210 存储器系统
P2.22/D221
P2.23/D2310
P2.24/D2411
P2.25/D2512
P2.26/D26/BOOT013
P2.27/D27/BOOT116
P2.28/D28/RD617
P2.29/D29/TD618
P2.30/D30/AIN419
P2.31/D31/AIN520
P3.29/BLS2/AIN6 27
P3.28/BLS3/AIN7 28
P3.27/WE29
P3.26/CS1 30
P3.23/A23/XCLK 40P3.22/A22 41P3.21/A21
44P3.20/A20 45P3.19/A19 46P3.18/A18 47P3.17/A17 48P3.16/A16
53P3.15/A15 55P3.14/A1456P3.13/A13 62
P3.12/A12 63P3.11/A11 64P3.10/A10 65P3.9/A9
66P3.8/A8 71P3.7/A7 72P3.6/A6 73P3.5/A5 74P3.4/A4
80P3.3/A3 81P3.2/A287P3.1/A1 88
P3.0/A0 89
P1.1/OE 90
P1.0/CS091
P3.31/BLS0 96
P3.30/BLS197
P2.0/D098
P2.1/D1105
P2.2/D2106
P2.3/D3108
P2.4/D4109
P2.5/D5114
P2.6/D6115
P2.7/D7116
P2.8/D8117
P2.9/D9118
P2.10/D10120
P2.11/D11124
P2.12/D12125
P2.13/D13127
P2.14/D14129
P2.15/D15130
P2.16/D16131
P2.17/D17132
P2.18/D18133
P2.19/D19134
P2.20/D20136
P2.21/D21137
P3.25/CS2/RD635
P3.24/CS3/TD6 36
LPC2210
C?
A01
A12
A23
A34
A45
CE6
I/O0 7
I/O18
I/O2 9
I/O310
Vcc 11
Vss 12
I/O4 13
I/O5 14
I/O6 15
I/O7 16
WE17
A518
A619
A720
A821
A922
A1023
A1124
A1225
A1326
A1427
NC 28
I/O829
I/O9 30
I/O10 31
I/O11 32
Vcc33
Vss 34
I/O12 35
I/O1336
I/O14 37
I/O1538
BLE39 BHE40
OE41
A1542
A1643
A1744
U5
IS61LV25616AL
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17
nBLS0nBLS1nWE
nCS1nOE
VDD3.3
C14104
A18
A151 A142 A133
A124 A115A106 A9
7 A88
A199
NC10
WE11
NC 12NC 13NC 14NC 15
A1816A1717
A718 A619A520 A4
21 A322 A223 A124
A025
CE26
Vss 27OE28
DQ0 29
DQ8 30
DQ1 31
DQ932
DQ233
DQ10 34
DQ3 35
DQ11 36
Vdd 37
DQ438
DQ12 39
DQ5 40
DQ13 41
DQ6 42
DQ1443
DQ7 44
DQ15 45
Vss 46
NC47
A1648
U6
SST39VF160
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
nWEnOEnCS0
C15104
VDD3.3
A20
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15
nCS0nCS1
nBLS0nBLS1
nOEnWE
R24.7K
R110K
VDD3.3
LPC2210
SRAM FLASH
6.2.6 存储系统
复位后使用外部16位宽度存储器
16位 SRAM 16 位 FLASH
周立功单片机
LPC2100 系列没有外部总线接口的最小系统;LPC2130 系列没有外部总线接口的最小系统;LPC2200 系列使用内部存储器的最小系统;LPC2200 系列使用外部存储器的最小系统。
6.2.7 最小系统实例
周立功单片机
完整的最小系统 LPC2100 系列
VD
D1
.8X
TA
L1
XT
AL
2
nR
ST
+5V VDD1.8
C210uF/16V
+5V VDD3.3
C110uF/16V
VIN3
GN
D1
VOUT2
U2SPX1117M3-3.3
VIN3
GN
D1
VOUT2
U3SPX1117M3-1.8
VDD3.3
R1
10KSW1RST
MR1
VCC2
GND3
PFI4
PFO5
NC6
RST7
RST8
U4
SP708S
VDD3.3A
VDD1.8A
C3104
C4104
C5104
C6104
C7104
C8104
C10104
C9104
C11104
nRST
Y1
11.0
59
2M
Hz
C12
30P
C13
30P
R2
1M
P2.22/D221
V32
Vss3
P0.21/PWM5/RD3/CAP1.34
P0.22/TD3/CAP0.0/MAT0.05
P0.23/RD26
P1.19/TRACEPKT37
P0.24/TD28
Vss9
P2.23/D2310
P2.24/D2411
P2.25/D2512
P2.26/D26/BOOT013
V3A14
P1.18/TRACEPKT215
P2.27/D27/BOOT116
P2
.28
/D2
8/R
D6
17
P2
.29
/D2
9/T
D6
18
P2
.30
/D3
0/A
IN4
19
P2
.31
/D3
1/A
IN5
20
P0
.25
/RD
12
1
TD
12
2
P0
.27
/AIN
0/C
AP
0.1
/MA
T0
.12
3
P1
.17
/TR
AC
EP
KT
12
4
P0
.28
/AIN
1/C
AP
0.2
/MA
T0
.22
5
Vss
26
P3
.29
/BL
S2
/AIN
62
7
P3
.28
/BL
S3
/AIN
72
8
P3
.27
/WE
29
P3
.26
/CS
13
0
V3
31
P0
.29
/AIN
2/C
AP
0.3
/MA
T0
.33
2
CAP0.033
P1.1634
P3.25/CS2/RD635
P3.24/CS3/TD636
V1837
Vss38
V339
P3.23/A23/XCLK40
P3.22/A2241
P0.0/TxD0/PWM142
P1.31/TRST43
P3.21/A2144
P3.20/A2045
P3.19/A1946
P3.18/A1847
P3.17/A1748
P0
.1/R
xD
0/P
WM
3/E
INT
04
9P
0.2
/SC
L/C
AP
0.0
50
P1
.26
/RT
CK
52
P3
.16
/A1
65
3V
ss5
4P
3.1
5/A
15
55
P3
.14
/A1
45
6V
35
7P
0.3
/SD
A/M
AT
0.0
/EIN
T1
58
P0
.4/S
CK
0/C
AP
0.1
59
P1
.25
/EX
TIN
06
0P
0.5
/MIS
O0
/MA
T0
.16
1P
3.1
3/A
13
62
P3
.12
/A1
26
3P
3.1
1/A
116
4
V3
51
R?
LPC2100VDD3.3
P0.14_DCD1
R5
10K
VDD3.3
VD
D1
.8
VD
D3
.3
VDD3.3
VD
D3
.3
VD
D1
.8
决定是否进入 ISP 状态,如果该引脚悬空将影响
程序脱机运行
6.2.7 最小系统实例3.3V 电源
1.8V 电源
复位电路
时钟电路
周立功单片机
VD
D3
.3X
TAL1
XTA
L2
nRST
+5V VDD3.3
C110uF/16V
VIN3
GN
D1
VOUT2
U2SPX1117M3-3.3
VDD3.3
R1
10KSW1RST
MR1 VCC 2
GND3 PFI4
PFO5
NC6
RST 7
RST 8
U4
SP708S
VDD3.3A
VDD1.8A
C3104
C4104
C5104
C6104
C7104
C8104
C10104
C9104
C11104
nRST
Y1
11.0
592
MH
z
C12
30P
C13
30P
R2
1M
VDD3.3
P0.14_DCD1
R5
10K
VDD3.3
VD
D3
.3
VDD3.3
VD
D3
.3
VD
D3
.3
P0.21/PWM5/AD1.6/CAP1.31
P0.22/AD1.7/CAP0.0/MAT0.02
RTXC13
P1.19/TRACEPKT34
RTXC25
Vss6
V3a7
P1.18/TRACEPKT28
P0.25/AD0.4/Aout9
P0.26/AD0.510
P0.27/AD0.0/CAP0.1/MAT0.111
P1.17/TRACEPKT112
P0.28/AD0.1/CAP0.2/MAT0.213
P0.29/AD0.2/CAP0.3/MAT0.314
P0.30/AD0.3/EINT3/CAP0.015
P1.16/TRACEPKT016
P0.3
117
Vss
18
P0.0
/Tx
D0/
PWM
119
P1.3
1/T
RST
20
P0.1
/RxD
0/PW
M3
/EIN
T0
21
P0.2
/SC
L0/
CA
P0.0
22
V3
23
P1.2
6/R
TCK
24
Vss
25
P0.3
/SD
A0/
MA
T0.0
/EIN
T126
P0.4
/SC
K0/
CA
P0.1
/AD
0.6
27
P1.2
5/E
XTI
N0
28
P0.5
/MIS
O0
/MA
T0.
1/A
D0.
729
P0.6
/MO
SI0
/CA
P0.
2/A
D1.
030
P0.7
/SS
EL0
/PW
M2/
EIN
T231
P1.2
4/T
RA
CEC
LK32
P0.8/TxD1/PWM4/AD1.133P0.9/RxD1/PWM6/EINT3 34
P0.10/RTS1/CAP1.0/AD1.2 35P1.23/PIPESTAT236P0.11/CTS1/CAP1.1/SCL1 37P0.12/DSR1/MAT1.0/AD1.338P0.13/DTR1/MAT1.1/AD1.4 39
P1.22/PIPESTAT1 40P0.14/DCD1/EINT1/SDA1 41Vss 42V3
43P1.21/PIPESTAT0 44P0.15/RI1/EINT2/AD1.5 45P0.16/EINT0/MAT0.2/CAP0.2 46
P0.17/CAP1.2/SCK1/MAT1.2 47P1.20/TRACESYNC48
Vba
t49
Vss
50V
351
P1.3
0/T
MS
52P0
.18/
CA
P1.3
/MIS
O1
/MA
T1.
353
P0.1
9/M
AT1
.2/M
OS
I1/C
AP
1.2
54P0
.20/
MA
T1.3
/SS
EL1
/EIN
T3
55P1
.29/
TC
K56
RES
ET
57P0
.23
58V
ssa
59P1
.28/
TD
I60
XTA
L261
XTA
L162
Vre
f63
P1.2
7/T
DO
64
U1
LPC2138
完整的最小系统 LPC2130 系列
6.2.7 最小系统实例
3.3V 电源
复位电路
时钟电路
决定是否进入 ISP 状态,如果该引脚悬空将影响
程序脱机运行
周立功单片机
6.2.7 最小系统实例
VD
D1
.8
VD
D3
.3
VD
D3
.3
VD
D3
.3
VDD3.3
R5
10K
R2
1M
C13
30P
C12
30P
VD
D3
.3
Y1
11.0
59
2M
Hz
nRST
VD
D1
.8
VD
D1
.8
C11104
C9104
C10104
C8104
C7104
C6104
C5104
VD
D3
.3
C4104
C3104
P2.26_D26
P2.27_D27
VDD3.3
VDD3.3
VDD1.8A
VDD3.3
VDD3.3A
VDD3.3
VDD3.3
MR1
VCC2
GND3
PFI4
PFO5
NC6
RST7
RST8
U4
SP708S
VDD3.3
SW1RST
XT
AL
1X
TA
L2
P0.14_DCD1R1
10K
nR
ST
P2.22/D221
V32
Vss3
P0.21/PWM5/RD3/CAP1.34
P0.22/TD3/CAP0.0/MAT0.05
P0.23/RD26
P1.19/TRACEPKT37
P0.24/TD28
Vss9
P2.23/D2310
P2.24/D2411
P2.25/D2512
P2.26/D26/BOOT013
V3A14
P1.18/TRACEPKT215
P2.27/D27/BOOT116
P2.28/D28/RD617
P2.29/D29/TD618
P2.30/D30/AIN419
P2.31/D31/AIN520
P0.25/RD121
TD122
P0.27/AIN0/CAP0.1/MAT0.123
P1.17/TRACEPKT124
P0.28/AIN1/CAP0.2/MAT0.225
Vss26
P3.29/BLS2/AIN627
P3.28/BLS3/AIN728
P3.27/WE29
P3.26/CS130
V331
P0.29/AIN2/CAP0.3/MAT0.332
P0.30/AIN3/EINT3/CAP0.033
P1.16/TRACEPKT034
P3.25/CS2/RD635
P3.24/CS3/TD636
V1
83
7
Vss
38
V3
39
P3
.23
/A2
3/X
CL
K4
0
P3
.22
/A2
24
1
P0
.0/T
xD
0/P
WM
14
2
P1
.31
/TR
ST
43
P3
.21
/A2
14
4
P3
.20
/A2
04
5
P3
.19
/A1
94
6
P3
.18
/A1
84
7
P3
.17
/A1
74
8
P0
.1/R
xD
0/P
WM
3/E
INT
04
9
P0
.2/S
CL
/CA
P0
.05
0
P1
.26
/RT
CK
52
P3
.16
/A1
65
3
Vss
54
P3
.15
/A1
55
5
P3
.14
/A1
45
6
V3
57
P0
.3/S
DA
/MA
T0
.0/E
INT
15
8
P0
.4/S
CK
0/C
AP
0.1
59
P1
.25
/EX
TIN
06
0
P0
.5/M
ISO
0/M
AT
0.1
61
P3
.13
/A1
36
2
P3
.12
/A1
26
3
P3
.11
/A11
64
P3
.10
/A1
06
5
P3
.9/A
96
6
Vss
67
P0
.6/M
OS
I0/C
AP
0.2
68
P0
.7/S
SE
L0
/PW
M2
/EIN
T2
69
P1
.24
/TR
AC
EC
LK
70
P3
.8/A
87
1
P3
.7/A
77
2
V3
51
P3.6/A673
P3.5/A574
P0.8/TxD1/PWM475
P0.9/RxD1/PWM6/EINT376
V377
P0.10/RTS1/CAP1.0/RD578
Vss79
P3.4/A480
P3.3/A381
P1.23/PIPESTAT282
P0.11/CTS1/CAP1.1/TD583
P0.12/DSR1/MAT1.0/RD484
P0.13/DTR1/MAT1.1/TD485
P1.22/PIPESTAT186
P3.2/A287
P3.1/A188
P3.0/A089
P1.1/OE90
P1.0/CS091
P0.14/DCD1/EINT192
Vss93
V394
P1.21/PIPESTAT095
P3.31/BLS096
P3.30/BLS197
P2.0/D098
P0.15/Ri1/EINT299
P0.16/EINT0/MAT0.2/CAP0.2100
P0.17/CAP1.2/SCK1/MAT1.2101
P1.20/TRACESYNC102
Vss103
V3104
P2.1/D1105
P2.2/D2106
Vss107
P2.3/D3108
P2
.4/D
41
09
V1
811
0V
ss11
1V
311
2P
1.3
0/T
MS
113
P2
.5/D
511
4P
2.6
/D6
115
P2
.7/D
711
6P
2.8
/D8
117
P2
.9/D
911
8V
311
9P
2.1
0/D
10
12
0P
0.1
8/C
AP
1.3
/MIS
O1
/MA
T1
.31
21
P0
.19
/MA
T1
.2/M
OS
I1/M
AT
1.3
12
2P
0.2
0/M
AT
1.3
/SS
EL
1/E
INT
31
23
P2
.11
/D11
12
4P
2.1
2/D
12
12
5P
1.2
9/T
CK
12
6P
2.1
3/D
13
12
7V
ss1
28
P2
.14
/D1
41
29
P2
.15
/D1
51
30
P2
.16
/D1
61
31
P2
.17
/D1
71
32
P2
.18
/D1
81
33
P2
.19
/D1
91
34
RE
SE
T1
35
P2
.20
/D2
01
36
P2
.21
/D2
11
37
Vss
A_
PL
L1
38
Vss
A1
39
P1
.28
/TD
I1
40
XT
AL
21
41
XT
AL
11
42
V1
8A
14
3P
1.2
7/T
DO
14
4
U1
LPC2212/2214
VDD3.3
VDD3.3 R310K
VIN3
GN
D1
VOUT2
U3SPX1117M3-1.8
R410K
VIN3
GN
D1
VOUT2
U2SPX1117M3-3.3
C110uF/16V
VDD3.3
+5V
+5V
VDD1.8
C210uF/16V
完整的最小系统 LPC2200 不使用外部存储器
复位后使用内部存储器
3.3V 电源
1.8V 电源
复位电路
时钟电路
决定是否进入 ISP 状态,如果该引脚悬空将影响
程序脱机运行
周立功单片机
6.2.7 最小系统实例
完整的最小系统 LPC2200 使用外部存储器
VD
D1
.8
VD
D3
.3
VD
D3
.3
VD
D3
.3
VD
D3
.3
VD
D1
.8
VD
D1
.8
VD
D3
.3
D0
D1D2
D3
D4
D5
D6
D7
D8
D9
D1
0
D11
D1
2
D1
3
D1
4D
15
P2.26_D26
P2.27_D27
A2
3A
22
A2
1A
20
A1
9A
18
A1
7
A1
6
A1
5A
14
A1
3A
12
A11
A1
0A
9
A8
A7
A6A5
A4A3
A2A1A0
VDD3.3
VDD3.3
VDD3.3
VDD3.3
VDD3.3
VDD3.3
nBLS1nBLS0
nWE
nOE
nCS1
nCS0
nCS2nCS3
XT
AL
1X
TA
L2
P0.14_DCD1
nR
ST
P2.22/D221
V32
Vss3
P0.21/PWM5/RD3/CAP1.34
P0.22/TD3/CAP0.0/MAT0.05
P0.23/RD26
P1.19/TRACEPKT37
P0.24/TD28
Vss9
P2.23/D2310
P2.24/D2411
P2.25/D2512
P2.26/D26/BOOT013
V3A14
P1.18/TRACEPKT215
P2.27/D27/BOOT116
P2.28/D28/RD617
P2.29/D29/TD618
P2.30/D30/AIN419
P2.31/D31/AIN520
P0.25/RD121
TD122
P0.27/AIN0/CAP0.1/MAT0.123
P1.17/TRACEPKT124
P0.28/AIN1/CAP0.2/MAT0.225
Vss26
P3.29/BLS2/AIN627
P3.28/BLS3/AIN728
P3.27/WE29
P3.26/CS130
V331
P0.29/AIN2/CAP0.3/MAT0.332
P0.30/AIN3/EINT3/CAP0.033
P1.16/TRACEPKT034
P3.25/CS2/RD635
P3.24/CS3/TD636
V1
83
7
Vss
38
V3
39
P3
.23
/A2
3/X
CL
K4
0
P3
.22
/A2
24
1
P0
.0/T
xD
0/P
WM
14
2
P1
.31
/TR
ST
43
P3
.21
/A2
14
4
P3
.20
/A2
04
5
P3
.19
/A1
94
6
P3
.18
/A1
84
7
P3
.17
/A1
74
8
P0
.1/R
xD
0/P
WM
3/E
INT
04
9
P0
.2/S
CL
/CA
P0
.05
0
P1
.26
/RT
CK
52
P3
.16
/A1
65
3
Vss
54
P3
.15
/A1
55
5
P3
.14
/A1
45
6
V3
57
P0
.3/S
DA
/MA
T0
.0/E
INT
15
8
P0
.4/S
CK
0/C
AP
0.1
59
P1
.25
/EX
TIN
06
0
P0
.5/M
ISO
0/M
AT
0.1
61
P3
.13
/A1
36
2
P3
.12
/A1
26
3
P3
.11
/A11
64
P3
.10
/A1
06
5
P3
.9/A
96
6
Vss
67
P0
.6/M
OS
I0/C
AP
0.2
68
P0
.7/S
SE
L0
/PW
M2
/EIN
T2
69
P1
.24
/TR
AC
EC
LK
70
P3
.8/A
87
1
P3
.7/A
77
2
V3
51
P3.6/A6 73P3.5/A5 74P0.8/TxD1/PWM4 75
P0.9/RxD1/PWM6/EINT3 76V3 77P0.10/RTS1/CAP1.0/RD5 78Vss 79
P3.4/A4 80P3.3/A3 81P1.23/PIPESTAT2 82P0.11/CTS1/CAP1.1/TD5 83
P0.12/DSR1/MAT1.0/RD4 84P0.13/DTR1/MAT1.1/TD4 85P1.22/PIPESTAT1 86P3.2/A2 87
P3.1/A1 88P3.0/A089P1.1/OE 90P1.0/CS0 91
P0.14/DCD1/EINT1 92Vss 93V3 94P1.21/PIPESTAT0 95
P3.31/BLS0 96P3.30/BLS1 97P2.0/D0 98P0.15/Ri1/EINT2 99
P0.16/EINT0/MAT0.2/CAP0.2 100P0.17/CAP1.2/SCK1/MAT1.2 101P1.20/TRACESYNC 102Vss 103
V3 104P2.1/D1 105P2.2/D2 106Vss 107P2.3/D3 108
P2
.4/D
41
09
V1
811
0V
ss11
1V
311
2P
1.3
0/T
MS
113
P2
.5/D
511
4P
2.6
/D6
115
P2
.7/D
711
6P
2.8
/D8
117
P2
.9/D
911
8V
311
9P
2.1
0/D
10
12
0P
0.1
8/C
AP
1.3
/MIS
O1
/MA
T1
.31
21
P0
.19
/MA
T1
.2/M
OS
I1/M
AT
1.3
12
2P
0.2
0/M
AT
1.3
/SS
EL
1/E
INT
31
23
P2
.11
/D11
12
4P
2.1
2/D
12
12
5P
1.2
9/T
CK
12
6P
2.1
3/D
13
12
7V
ss1
28
P2
.14
/D1
41
29
P2
.15
/D1
51
30
P2
.16
/D1
61
31
P2
.17
/D1
71
32
P2
.18
/D1
81
33
P2
.19
/D1
91
34
RE
SE
T1
35
P2
.20
/D2
01
36
P2
.21
/D2
11
37
Vss
A_
PL
L1
38
Vss
A1
39
P1
.28
/TD
I1
40
XT
AL
21
41
XT
AL
11
42
V1
8A
14
3P
1.2
7/T
DO
14
4
U1
LPC2210
A01
A12
A23
A34
A45
CE6
I/O0 7
I/O1 8
I/O2 9
I/O3 10
Vcc 11
Vss 12
I/O4 13
I/O5 14
I/O6 15
I/O7 16
WE17
A518
A619
A720
A821
A922
A1023
A1124
A1225
A1326
A1427
NC 28
I/O8 29
I/O9 30
I/O10 31
I/O11 32
Vcc 33
Vss 34
I/O12 35
I/O13 36
I/O14 37
I/O15 38
BLE39BHE40
OE41
A1542
A1643
A1744
IS61LV25616AL
A151 A142A133 A124A115 A106A97 A88
A199
NC10
WE11
NC 12NC 13NC 14NC 15
A1816A1717
A718 A619A520 A421A322 A223A124 A025
CE26
Vss 27OE28
DQ0 29
DQ8 30
DQ1 31
DQ9 32
DQ2 33
DQ10 34
DQ3 35
DQ11 36
Vdd 37
DQ4 38
DQ12 39
DQ5 40
DQ13 41
DQ6 42
DQ14 43
DQ7 44
DQ15 45
Vss 46
NC 47A1648
SST39VF160
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
nBLS0nBLS1nWE
nCS1nOE
VDD3.3
C14104
nWEnOEnCS0
C15104
VDD3.3
VDD3.3
R3
10K
R4
4.7K
A18
A20
+5V VDD1.8
C210uF/16V
+5V VDD3.3
C110uF/16V
VIN3
GN
D1
VOUT 2
U2SPX1117M3-3.3
VIN3
GN
D1
VOUT 2
U3SPX1117M3-1.8
VDD3.3
VDD3.3A
VDD1.8A
R1
10K
C3104
SW1RST
C4104
C5104
MR1 VCC 2
GND3 PFI4
PFO 5
NC6
RST7
RST8
U4
SP708S
C6104
C7104
C8104
C10104
C9104
C11104
Y1
11.0
59
2M
Hz
C12
30P
C13
30P
R2
1M
R5
10K
VDD3.3
nRST
复位后使用外部 16 位宽
度存储器
3.3V 电源
1.8V 电源
复位电路
时钟电路
决定是否进入 ISP 状态,如果该引脚悬空将影响
程序脱机运行
SRAM
FLASH
周立功单片机
6.3 软件开发平台
6.3.1 ISP 下载软件6.3.2 ADS 集成开发环境6.3.3 EasyJTAG使用6.3.4 LPC2000 工程模板
周立功单片机
6.3.1 ISP 下载软件•简介
ISP 下载软件是 Philips为 LPC2000 系列芯片编写的一款程序下载软件,全称是 LPC2000 Flash Utility,最新版本为 V2.2.2 ,支持 LPC2000 所有芯片。
常用于批量生产时下载程序,亦可用于检测最小系统。
周立功单片机
6.3.1 ISP 下载软件•界面
周立功单片机
6.3.1 ISP 下载软件•设置
设定晶振
设定串口波特率
周立功单片机
6.3.1 ISP 下载软件•操作
下载 校验
查空 擦除
读取 ID
芯片型号
周立功单片机
6.3.1 ISP 下载软件•重点提示
设计好最小系统后,最好先用 ISP软件对最小系统进行测试,如果能进行 ISP连接操作 (如读取 ID),则才能进行下一步的工作,如 JTAG调试。如果 ISP测试不能工作,则需要先检查最小系统硬件电路。 系统可以没有 JTAG调试电路,但不能没有 UART0 电路 /接口。
周立功单片机
UART0 电路 (ISP 电路 )
6.3.1 ISP 下载软件
周立功单片机
6.3.1 ISP 下载软件
ISP 不成功常见原因和解决办法
( 1)确保各路电源正常( 2)确保 UART0 电路正常,可用 PC检测( 3)确保晶振正常( 4)确保复位电路正常( 5)检测 PCB是否存在短路 / 断路
周立功单片机
6.3.2 ADS 集成开发环境•简介
ADS是目前国内使用最广泛的 ARM 开发环境。
ADS为 ARM公司所有,全称为 ARM Developer Suite,成熟版本为 ADS1.2 ,支持 ARM10之前的所有 ARM 控制器,支持软件调试和 JTAG 硬件仿真调试,支持汇编、 C、C++源程序;编译效率高、系统功能强,可以在 Win98/2000/XP 和 RedHat上运行。
周立功单片机
6.3.2 ADS 集成开发环境•简介 ADS1.2 集成开发环境组成部分名称 描述 使用方式
代码生成工具
ARM汇编器ARM C/C++ 编译器Thumb C/C++ 编译器ARM 链接器
由 Code Warrior调用
集成开发环境 Code Warrior 工程管理,编译链接调试器 AXD/ADW/ADU/armsd 仿真调试指令模拟器 ARMulator 由 AXD 调用
ARM 开发包 一些底层的例程,实用程序(如 fromELF) 由 Code Warrior调用
ARM 应用库 C/C++ 等函数库 用户程序调用
周立功单片机
6.3.2 ADS 集成开发环境Code Worriar IDE 界面
源程序编辑窗口
工程管理窗口
周立功单片机
6.3.2 ADS 集成开发环境AXD 调试器界面
源代码查看区
调试控制快捷图标
周立功单片机
6.3.2 ADS 集成开发环境
ADS使用注意:
最好不要将 ADS工程放在有中文的路径下。
周立功单片机
6.4 启动代码6.4.1 启动代码内容6.4.2 启动代码工作流程
周立功单片机
6.4.1 启动代码内容
(1)启动代码简介 广州致远电子有限公司为 LPC2000 系列芯片编写的启动代码由 3 个文件组成。
(1)startup.s -异常向量表定义、各模式堆栈初始化、跳转到 C程序 main入口等。
(2)target.c-目标板初始化,如时钟分频、 PLL设置、 VIC 设置等。
(3)irq.s -用于管理中断嵌套。
周立功单片机
6.4.1 启动代码内容 (1)startup.s CODE32
AREA vectors,CODE,READONLY ENTRY
; 中断向量表Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 LDR PC, [PC, #-0xff0] LDR PC, FIQ_Addr
ResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler
汇编入口
异常向量表
地址跳转表
周立功单片机
6.4.1 启动代码内容 (1)startup.s ; 未定义指令
Undefined B Undefined
; 软中断SoftwareInterrupt B SoftwareInterrupt ; 取指令中止PrefetchAbort B PrefetchAbort
; 取数据中止DataAbort B DataAbort
; 快速中断FIQ_Handler STMFD SP!, {R0-R3, LR} BL FIQ_Exception LDMFD SP!, {R0-R3, LR} SUBS PC, LR, #4
异常处理程序
FIQ处理程序,在target.c中实现
周立功单片机
6.4.1 启动代码内容 (1)startup.s
InitStack MOV R0, LR MSR CPSR_c, #0xd3 ;设置管理模式堆栈 LDR SP, StackSvc
MSR CPSR_c, #0xd2 ;设置中断模式堆栈 LDR SP, StackIrq
MSR CPSR_c, #0xd1 ;设置快速中断模式堆栈 LDR SP, StackFiq
MSR CPSR_c, #0xd7 ;设置中止模式堆栈 LDR SP, StackAbt
MSR CPSR_c, #0xdb ;设置未定义模式堆栈 LDR SP, StackUnd
MSR CPSR_c, #0xdf ;设置系统模式堆栈 LDR SP, =StackUsr
MOV PC, R0
ResetInit BL InitStack ;初始化堆栈 BL TargetResetInit ;目标板基本初始化 B __main ;跳转到 c语言入口
设置各模式堆栈
周立功单片机
6.4.1 启动代码内容 (1)startup.sSVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 0IRQ_STACK_LEGTH EQU 256ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0
AREA MyStacks, DATA, NOINIT, ALIGN=2SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ; 管理模式栈空间IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ; 中断模式栈空间FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ; 快速中断模式栈空间AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ; 中止义模式栈空间UndtStackSpace SPACE UND_STACK_LEGTH * 4 ; 未定义模式栈
StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4
AREA Heap, DATA, NOINITbottom_of_heap SPACE 1
AREA Stacks, DATA, NOINITStackUsr
定义各模式堆大小
计算并分配各模式栈空间 分散加载
文字池: 各模式栈起点
堆空间,分散加载
用户堆栈空间,分散加载
周立功单片机
6.3.4 LPC2000 工程模板(1)mem_a.scf
mem_c.scf
ROM_LOAD 0x00000000{ ROM_EXEC 0x00000000 { Startup.o (vectors, +First) * (+RO) }
IRAM 0x40000000 { Startup.o (MyStacks) * (+RW,+ZI) }
HEAP +0 UNINIT { Startup.o (Heap) }
STACKS 0x40002000 UNINIT { Startup.o (Stacks) }}
周立功单片机
6.4.1 启动代码内容 (2)target.cvoid FIQ_Exception(void)
{ while(1); // 这一句替换为自己的代码}
void TargetResetInit(void){#ifdef __DEBUG_RAM MEMMAP = 0x2; //remap#endif
#ifdef __DEBUG_FLASH MEMMAP = 0x1; //remap#endif
#ifdef __IN_CHIP MEMMAP = 0x1; //remap#endif
/* 设置系统各部分时钟 */ PLLCON = 1;#if (Fpclk / (Fcclk / 4)) == 1 VPBDIV = 0;#endif
FIQ处理程序
调试时,根据用户选择的目标设置Remap
根据 config.h用户定义的时钟自动设定 VPB分频值
周立功单片机
6.4.1 启动代码内容 (2)target.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
#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);#endif
根据 config.h用户定义的时钟自动设定 PLL 的 P和 M
根据 config.h用户定义的时钟自动设定 VPB分频值
周立功单片机
6.4.1 启动代码内容 (2)target.c /* 设置存储器加速模块 */
MAMCR = 0;#if Fcclk < 20000000 MAMTIM = 1;#else#if Fcclk < 40000000 MAMTIM = 2;#else MAMTIM = 3;#endif#endif MAMCR = 2; /* 初始化 VIC */ VICIntEnClr = 0xffffffff; VICVectAddr = 0; VICIntSelect = 0;
/* 添加自己的代码 */ /* …… */}
设定 MAM
设定 VIC
留给用户使用
周立功单片机
6.4.2 启动代码工作流程 复位后,启动代码工作及内容:
(1)复位后, PC= 0 ,根据异常向量表,跳转到复位处理程序。
(2)执行复位程序。
-堆栈初始化
-目标板初始化
-跳到 C程序 main入。
(3)执行用户程序。
周立功单片机
复位
(1)ResetInit的地址转入 PC
(2)程序跳转到 ResetInit
(3) 各模式堆栈初始化
6.4.2 启动代码工作流程
周立功单片机
(1)ResetInit的地址转入 PC
(2)程序跳转到 ResetInit
(3) 各模式堆栈初始化
(4) 进行目标板初始化
6.4.2 启动代码工作流程
周立功单片机
(1)ResetInit的地址转入 PC
(2)程序跳转到 ResetInit
(3) 各模式堆栈初始化
(4) 进行目标板初始化
(5)跳转到 main入口
6.4.2 启动代码工作流程
周立功单片机
参考资料
启动代码和分散加载在《深入浅出 ARM7- LPC213x/ LPC214x(上册 )》中有详细描述。
详见 3.9《启动代码综述》一节。
周立功单片机
ARMARM之旅之旅
设计最小系统建立开发环境(软件、硬件 )
HelloWorld程序
概述
产品开发
ARM 的特性了解 ARM 内部结构
ARM 程序的组成了解 ARM指令系统
掌握部分 ARM指令
选择合适的 ARM 芯片充分了解该 ARM 芯片
入门级别
了解级别当前位置当前位置
周立功单片机
6.5 GPIO模块
(一 ) 特性
LPC2000 的 GPIO具有如下的特性:可以独立控制每个 GPIO口的方向(输入 /输出模式)可以独立设置每个 GPIO的输出状态(高 /低电平)所有 GPIO口在复位后默认为输入状态部分 GPIO有快速 GPIO特性
周立功单片机
6.5 GPIO模块
(二 )应用
R3
10K
RST C16104
LED1
POWER
+3.3V
R3
10K
+3.3V
QB1
QC2
QD3
QE4
QF5
QG6
QH7
GND8
SQH9
SCLR10
SCK11
RCK12
OE13
SI14
QA15
VCC16
U11
74HC595
+3.3VLPC2000
检测数字输入,如键盘或开关信号
驱动 LED 或其它指示器
控制片外器件
周立功单片机
6.5 GPIO模块
( 三 )引脚描述
LPC2114/2124 微控制器具有两个端口—— P0 和P1 ,可以作为 GPIO 使用的引脚数为 46 个。
LPC2210/2212/2214 微控制器还包含另外两个端口—— P2 和 P3 ,这个两个端口与外部存储器总线复用,当它们全部作为 GPIO 使用时, GPIO引脚数多达 112个。
周立功单片机
6.5 GPIO模块
(四 )内部结构
GPIO内部结构示意
PINSELx
IOxDIR IOxCLR
IOxPIN
IOxSET
in
out1
0
引脚
周立功单片机
6.5 GPIO模块
(五 )GPIO操作除了设定管脚连接之外, GPIO还有如下操作:(1)设定 GPIO方向(2)控制 GPIO(3) 读取管脚电平(4) 读取 GPIO设置
周立功单片机
6.5 GPIO模块
(1)设定 GPIO方向通过 GPIO 方向寄存器 IODIR 进行控制。
IOxDIR 描述 复位值
31 : 0IOxDIR[0]对应于 Px.0 … IOxDIR[31]对应于 Px.31引脚 未定义
方向控制: 1-输出 0-输入
每个 P口都有自己的 IODIR寄存器。 IOxDIR 和相应的 Px口对应。
周立功单片机
6.5 GPIO模块
(2)控制 GPIO拉高某位口线通过置位相应的 IO 置位寄存器 IOSET 中对应位实现。
IOxSET 描述 复位值
31 : 0 IOxSET[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义
置位控制:写入 1-输出高电平
写 0 无效
周立功单片机
6.5 GPIO模块
(2)控制 GPIO拉低某位口线通过置位相应的 IO 清零寄存器 IOCLR 中对应位实现。
IOxCLR 描述 复位值
31 : 0 IOxCLR[0]对应于 Px.0 … IOxCLR[31]对应于 Px.31引脚 未定义
清零控制:写入 1-输出低电平
写 0 无效写该寄存器会清除 IOSET寄存器 /输出寄存器中对应位。
周立功单片机
6.5 GPIO模块(2)控制 GPIO
同时拉高 /拉低某些口线通过写相应的 IO 管脚值寄存器IOPIN 中对应位实现。
IOxPIN 描述 复位值
31 : 0 IOxPIN[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义
清零控制:写入 1-输出高电平
写入 0-输出低电平
周立功单片机
6.5 GPIO模块
(3) 读取管脚电平读取管脚电平通过读取相应的 IO 管脚值寄存器 IOPIN 实现。
IOxPIN 描述 复位值
31 : 0IOxPIN[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义
管脚电平: 1-管脚为高电平
0-管脚为低电平
周立功单片机
6.5 GPIO模块
(4) 读取 GPIO设置读取管脚设置通过读取相应的 IO 管脚置位寄存器 IOSET 实现。
IOxSET 描述 复位值
31 : 0 GPIO管脚设置状态 未定义
管脚设置:仅反映程序设定状态,不反映外部实际情况。
周立功单片机
6.5 GPIO模块
(六 ) 注意要点引脚设置为输出方式时,输出状态由 IOxSET和 IOxCLR 中最后操作的寄存器决定;大部分 GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出 /灌入电流均为 4mA (短时间极限值40mA );复位后默认所有 GPIO为输入模式。
周立功单片机
6.5 GPIO模块
...
PINSEL0 &= 0xFFFFFFFC;
IO0DIR |= 0x00000001;
IO0SET = 0x00000001;
...
C 代码:
PINSEL0
IO0DIR IO0CLR
IO0PIN
IO0SET
in
out1
0
• GPIO应用示例 1——设置 P0.0 输出高电平
P0.0
(1) 设置引脚连接模块, P0.0 为 GPIO
(2) 设置 P0.0 口方向,设置为输出(3) 设置 P0.0 口状态,输出高电平
1
周立功单片机
6.5 GPIO模块
...
uint32 PinStat;
PINSEL0 &= 0xFFFFFFFC;
IO0DIR &= 0xFFFFFFFE;
PinStat = IO0PIN;
...
C 代码:
PINSEL0
IO0DIR IO0CLR
IO0PIN
IO0SET
in
out1
0
• GPIO应用示例 2——读取 P0.0引脚状态
P0.0
(1) 设置引脚连接模块, P0.0 为 GPIO
(2) 设置 P0.0 口方向,设置为输入(3) 从 IO0PIN 读取引脚状态
IO0PIN
周立功单片机
6.5 GPIO模块
#define DataBus 0xFF
PINSEL0 &= 0xFFFF0000;
IO0DIR |= DataBus;
IO0CLR = DataBus;
IO0SET = Data;
...
使用 IOxSET 和 IOxCLR 实现:
• GPIO应用示例 3——输出多位数据至 IO口
(1) 设置引脚连接模块, P0.0 ~ 7 为 GPIO
(2) 设置 P0.0 口方向,设置为输出(3) 清零 8 位 IO 口的输出状态
在需要将多位数据同时输出到某几个 IO口线时,通常使用 IOxSET和 IOxCLR来实现,在某些情况下也可以使用 IOxPIN寄存器实现。后者可以在多个 IO口上直接输出 0和 1电平。
本例将 8位无符号整数变量 Data的值输出到 P0.0~ P0.7。
(4) Data 变量中为 1 的位将输出高电平
0x?? 0x00 Data数据输出线:
周立功单片机
6.5 GPIO模块
#define DataBus 0xFF
PINSEL0 &= 0xFFFF0000;
IO0DIR |= DataBus;
IO0PIN = (IO0PIN & 0xFFFFFF00) | Data;
...
• GPIO应用示例 4——输出多位数据至 IO口
(1) 设置引脚连接模块, P0.0 为 GPIO
(2) 设置 P0.0 口方向,设置为输出(3) 写 IO0PIN ,输出数据
在需要将多位数据同时输出到某几个 IO口线时,通常使用 IOxSET和 IOxCLR来实现,在某些情况下也可以使用 IOxPIN寄存器实现。后者可以在多个 IO口上直接输出 0和 1电平。
本例将 8位无符号整数变量 Data的值输出到 P0.0~ P0.7。
使用 IOxPIN 实现:
0x?? Data数据输出线:
0x?? 0x00 Data与前者对比:
周立功单片机
GPIO实验演示 GPIO控制蜂鸣器
6.5 GPIO模块
周立功单片机
实验电路
6.5 GPIO模块
B1
BUZZER
Q1
8550
VDD3.3
R42 1KBEEP
LPC2131
P0.7
R2210K
VDD3.3
蜂鸣器控制电路
周立功单片机
实验流程图
6.5 GPIO模块开始
设置 P0.7 为 GPIO
设置 P0.7 为输出模式
拉高 P0.7 ,关闭蜂鸣器
延时
拉低 P0.7 ,打开蜂鸣器
延时
周立功单片机
实验代码
6.5 GPIO模块#include "config.h"#define BEEP 1 << 7 // P0.7 控制蜂鸣器
void DelayNS (uint32 dly){ uint32 i; for ( ; dly>0; dly--) for (i=0; i<50000; i++);}
int main (void){ PINSEL0 = 0x00000000; // 设置管脚连接 GPIO IO0DIR = BEEP; // 设置 BEEP 控制口为输出
while (1) { IO0SET = BEEP; //BEEP 停止蜂鸣 DelayNS(50); IO0CLR = BEEP; //BEEP 蜂鸣 DelayNS(50); }
return 0;}