主题: arm 开发流程

89
周周周周周周 周周ARM 周周周周

Upload: weston

Post on 26-Jan-2016

90 views

Category:

Documents


7 download

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 Presentation

TRANSCRIPT

Page 1: 主题: ARM 开发流程

周立功单片机

主题:ARM 开发流程

Page 2: 主题: ARM 开发流程

周立功单片机

6.2 最小系统设计6.2.1 最小系统概述6.2.2 电源设计6.2.3 时钟电路设计6.2.4 复位电路设计6.2.5 调试接口设计6.2.6 存储系统设计6.2.7 最小系统示例

Page 3: 主题: ARM 开发流程

周立功单片机

6.2.1 最小系统概述设计一个最小系统是学习 ARM 的好方法

一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7 处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。

Page 4: 主题: ARM 开发流程

周立功单片机

6.2.1 最小系统概述• 最小系统框图

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器

可选,但是在样品阶段通常都会设计这部分电路

Page 5: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

供电系统( 电源 )

电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。

6.2.2 电源设计

Page 6: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

供电系统( 电源 )

设计电源时要考虑的因素:

1.输出的电压、电流、功率;

2.输入的电压、电流;

3.安全因素;

4.输出纹波;

5.电磁兼容和电磁干扰;

6.体积限制;

7.功耗限制;

8.成本限制。

6.2.2 电源设计

Page 7: 主题: ARM 开发流程

周立功单片机

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 系列微控制所需要的电源类型

Page 8: 主题: ARM 开发流程

周立功单片机

1. 分析需求

6.2.2 电源设计

( 2)系统需求

主要考虑是否需要将数字电源和模拟电源分开。

( 1 )如果不使用芯片的 A/D 或者 D/A 功能,可以不区分数字电源和模拟电源。( 2 )如果使用了 A/D 或者 D/A ,还需考虑参考电源设计。

Page 9: 主题: ARM 开发流程

周立功单片机

输入15V

5V输出

5V输出

输出3.3V

输出1.8V

1模块

2模块

1模块

其它电路

1. 分析需求

6.2.2 电源设计

( 3)电源电路的前级和末级

电源前级 电源末级

Page 10: 主题: ARM 开发流程

周立功单片机

2. 设计末级电源电路6.2.2 电源设计

LPC2000 系列微控制 1.8V 消耗电流的极限值为 70mA 。为了保证可靠性并为以后升级留下余量,则电源系统 1.8V能够提供的电流应当大于 300mA 。

整个系统在 3.3V 上消耗的电流与外部条件有很大的关系,这里假设电流不超过 200mA ,这样,电源系统 3.3V 能够提供 600mA 电流即可。

分析得到以下参数:3.3V 电源设计最大电流: 600mA ;1.8V 电源设计最大电流: 300mA 。

Page 11: 主题: ARM 开发流程

周立功单片机

因为系统对这两组电压的要求比较高,且其功耗不是很大,所以不适合用开关电源,应当用低压差模拟电源( LDO )。合乎技术参数的 LDO 芯片很多, Sipex 半导体 SPX1117 是一个较好的选择,它的性价比高,且有一些产品可以与它直接替换,减少采购风险。

2. 设计末级电源电路6.2.2 电源设计

Page 12: 主题: ARM 开发流程

周立功单片机

SPX1117 主要特点:0.8A稳定输出电流;1A稳定峰值电流;3V可调节;低静态电流;0.8A0.8A 时低压差为时低压差为 1.1V1.1V ;;0.1%线形调整率;0.2%负载调整率;过流及温度保护;多种封装供选择。

6.2.2 电源设计

Page 13: 主题: ARM 开发流程

周立功单片机

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 电源设计

末级电源电路实例

Page 14: 主题: ARM 开发流程

周立功单片机

6.2.2 电源设计

模数隔离实例

4.7uF 104

10uH

10uH

104104

VDDA

VssA

VDD

Vss

LPC2131

+3.3V

模拟地VssA

数字电源+3.3V 模拟电源+3.3V

数字地Vss

Page 15: 主题: ARM 开发流程

周立功单片机

尽管 SPX1117允许的输入电压可达 20V (参考芯片数据手册),但太高的电压使芯片的发热量上升,散热系统不好设计,同时影响芯片的性能。这样,就需要前级电路调整一下。如果系统可能使用多种电源(如交流电和电池),各种电源的电压输出不一样,就更需要前级调整以适应末级的输入。通过之前的分析,前级的输出选择为 5V 。选择 5V 作为前级的输出有两个原因:

这个电压满足 SPX1117 的要求;目前很多器件还是需要 5V 供电的,这个 5V 可以兼做前级和末级了。

6.2.2 电源设计3. 设计前级电源电路

Page 16: 主题: ARM 开发流程

周立功单片机

根据系统在 5V 上消耗的电流和体积、成本等方面的考虑,前级电路可以使用开关电源,也可以使用模拟电源。 它们的特别如下:

开关电源:效率较高,可以减少发热量,因而在功率较大时可以减小电源模块的体积;模拟电源:电路简单,输出电压纹波较小,并且干扰较开关电源小得多。

6.2.2 电源设计3. 设计前级电源电路

Page 17: 主题: ARM 开发流程

周立功单片机

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

模拟电源

开关电源

前级电源电路实例

Page 18: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。

时钟系统

6.2.3 时钟电路设计

Page 19: 主题: ARM 开发流程

周立功单片机

6.2.3 时钟电路设计

目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。

LPC2000

X1 X2

C CXtal

LPC2000

X1 X2

C

Clock

使用内部振荡器 使用外部时钟源

可以使用稳定的时钟信号源,如有源晶振等。

Page 20: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

微控制器在上电时状态并不确定,这造成微控制器不能正确工作。为解决这个问题,所有微控制器均有一个复位逻辑,它负责将微控制器初始化为某个确定的状态。这个复位逻辑需要一个复位信号才能工作。一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。这个信号的稳定性和可靠性对微控制器的正常工作有重大影响。

复位及其配置系统

6.2.4 复位电路设计

Page 21: 主题: ARM 开发流程

周立功单片机

复位电路可以使用简单的阻容复位,这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用专门的复位芯片。

阻容复位

R1

10K

+3.3V

LPC2000C147u

6.2.4 复位电路设计

最好避免使用!

Page 22: 主题: ARM 开发流程

周立功单片机

常用的复位专用芯片有 CATALYST公司的 CAT800 系列, Sipex公司的 SP700 系列和 SP800 系列。为了适应嵌入式系统的应用,这些公司还推出带有 EEPROM 存储器和看门狗的复位芯片,这可以降低系统成本和缩小产品体积,减少元件数量也有利于系统的稳定性。

如果系统不需要手动复位功能,可以选择 CAT809 。如果需要手动复位功能,可以选择 SP705/706 、 SP708SCN 。

种类繁多的复位芯片可以满足不同工作电压和不同复位方式的系统,这里仅介绍其中部分。

注意:复位芯片的复位门槛的选择至关重要,一般应当选择微控制器的 IO 口供电电压范围为标准。 LPC2000 这个范围为: 3.0V ~ 3.6V ,所以选择复位门槛电压为 2.93V ,即电源电压低于 2.93V 时产生复位信号。

6.2.4 复位电路设计

Page 23: 主题: ARM 开发流程

周立功单片机

6.2.4 复位电路设计复位电路实例 CAT809

低有效复位; 在工业级温度范围的应用中可直接代替 MAX809 ; Vcc 低至 1.0V 时,复位信号仍然有效; 6uA 的电源电流; 抗电源的瞬态干扰; 紧凑的 3脚 SOT23 和 SC70封装; 工业级温度范围:- 40℃~ +85 ℃ 。

GND

VCC

RST

LPC2000

RST

+3.3V

CAT809

R1

10K

Page 24: 主题: ARM 开发流程

周立功单片机

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支持高 / 低电平两种方式。

Page 25: 主题: ARM 开发流程

周立功单片机

6.2.4 复位电路设计复位电路实例 SP6200/6201 适用于要求高精度、快速操作和方便使用的应用; 极低的关断电流:最大为 1uA ; 低压差: 160mV@100mA 。输出电压高精度: 2% ; 逻辑控制的电子使能; 复位输出 (VOUT良好 ) ; 1uF 的陶瓷电容就可保持器件无条件稳定工作。

电压输出使能 复位输出

Page 26: 主题: ARM 开发流程

周立功单片机

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

Page 27: 主题: ARM 开发流程

周立功单片机

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 状态

Page 28: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

调试与测试接口不是系统运行必须的,但现代系统越来越强调可测性,调试、测试接口的设计也要重视了。LPC2000 有一个内置 JTAG 调试接口,通过这个接口可以控制芯片的运行并获取内部信息。

调试测试接口

6.2.5 调试接口设计

Page 29: 主题: ARM 开发流程

周立功单片机

调试接口电路一

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

Page 30: 主题: ARM 开发流程

周立功单片机

调试接口电路一

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 调试接口设计

Page 31: 主题: ARM 开发流程

周立功单片机

因为这种电路 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 调试接口设计

Page 32: 主题: ARM 开发流程

周立功单片机

调试接口电路二

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

Page 33: 主题: ARM 开发流程

周立功单片机

嵌入式控制器

时钟系统 调试测试接口

复位及其配置系统

存储器系统

供电系统( 电源 )

大部分 LPC2000 芯片都有片内 Flash ,可以不用再设计额外的存储器系统。如果微控制器没有片内存储器,就必须设计存储器系统,这一般通过微控制器的外部总线接口实现。

存储器系统

6.2.6 存储系统

Page 34: 主题: ARM 开发流程

周立功单片机

如果需要外扩存储系统,需要考虑:

( 1)总线宽度

( 2)总线速度

尽量避免使用 8位总线,推荐使用 16和 32 位总线,器件选型尽量选择高速存储器。

如果使用 16位总线,使用 Thumb 指令集可获得更高的性能。

6.2.6 存储系统

Page 35: 主题: ARM 开发流程

周立功单片机

示例: 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

Page 36: 主题: ARM 开发流程

周立功单片机

LPC2100 系列没有外部总线接口的最小系统;LPC2130 系列没有外部总线接口的最小系统;LPC2200 系列使用内部存储器的最小系统;LPC2200 系列使用外部存储器的最小系统。

6.2.7 最小系统实例

Page 37: 主题: ARM 开发流程

周立功单片机

完整的最小系统 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 电源

复位电路

时钟电路

Page 38: 主题: ARM 开发流程

周立功单片机

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 状态,如果该引脚悬空将影响

程序脱机运行

Page 39: 主题: ARM 开发流程

周立功单片机

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 状态,如果该引脚悬空将影响

程序脱机运行

Page 40: 主题: ARM 开发流程

周立功单片机

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

Page 41: 主题: ARM 开发流程

周立功单片机

6.3 软件开发平台

6.3.1 ISP 下载软件6.3.2 ADS 集成开发环境6.3.3 EasyJTAG使用6.3.4 LPC2000 工程模板

Page 42: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件•简介

ISP 下载软件是 Philips为 LPC2000 系列芯片编写的一款程序下载软件,全称是 LPC2000 Flash Utility,最新版本为 V2.2.2 ,支持 LPC2000 所有芯片。

常用于批量生产时下载程序,亦可用于检测最小系统。

Page 43: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件•界面

Page 44: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件•设置

设定晶振

设定串口波特率

Page 45: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件•操作

下载 校验

查空 擦除

读取 ID

芯片型号

Page 46: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件•重点提示

设计好最小系统后,最好先用 ISP软件对最小系统进行测试,如果能进行 ISP连接操作 (如读取 ID),则才能进行下一步的工作,如 JTAG调试。如果 ISP测试不能工作,则需要先检查最小系统硬件电路。 系统可以没有 JTAG调试电路,但不能没有 UART0 电路 /接口。

Page 47: 主题: ARM 开发流程

周立功单片机

UART0 电路 (ISP 电路 )

6.3.1 ISP 下载软件

Page 48: 主题: ARM 开发流程

周立功单片机

6.3.1 ISP 下载软件

ISP 不成功常见原因和解决办法

( 1)确保各路电源正常( 2)确保 UART0 电路正常,可用 PC检测( 3)确保晶振正常( 4)确保复位电路正常( 5)检测 PCB是否存在短路 / 断路

Page 49: 主题: ARM 开发流程

周立功单片机

6.3.2 ADS 集成开发环境•简介

ADS是目前国内使用最广泛的 ARM 开发环境。

ADS为 ARM公司所有,全称为 ARM Developer Suite,成熟版本为 ADS1.2 ,支持 ARM10之前的所有 ARM 控制器,支持软件调试和 JTAG 硬件仿真调试,支持汇编、 C、C++源程序;编译效率高、系统功能强,可以在 Win98/2000/XP 和 RedHat上运行。

Page 50: 主题: ARM 开发流程

周立功单片机

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++ 等函数库 用户程序调用

Page 51: 主题: ARM 开发流程

周立功单片机

6.3.2 ADS 集成开发环境Code Worriar IDE 界面

源程序编辑窗口

工程管理窗口

Page 52: 主题: ARM 开发流程

周立功单片机

6.3.2 ADS 集成开发环境AXD 调试器界面

源代码查看区

调试控制快捷图标

Page 53: 主题: ARM 开发流程

周立功单片机

6.3.2 ADS 集成开发环境

ADS使用注意:

最好不要将 ADS工程放在有中文的路径下。

Page 54: 主题: ARM 开发流程

周立功单片机

6.4 启动代码6.4.1 启动代码内容6.4.2 启动代码工作流程

Page 55: 主题: ARM 开发流程

周立功单片机

6.4.1 启动代码内容

(1)启动代码简介 广州致远电子有限公司为 LPC2000 系列芯片编写的启动代码由 3 个文件组成。

(1)startup.s -异常向量表定义、各模式堆栈初始化、跳转到 C程序 main入口等。

(2)target.c-目标板初始化,如时钟分频、 PLL设置、 VIC 设置等。

(3)irq.s -用于管理中断嵌套。

Page 56: 主题: ARM 开发流程

周立功单片机

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

汇编入口

异常向量表

地址跳转表

Page 57: 主题: ARM 开发流程

周立功单片机

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中实现

Page 58: 主题: ARM 开发流程

周立功单片机

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语言入口

设置各模式堆栈

Page 59: 主题: ARM 开发流程

周立功单片机

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

定义各模式堆大小

计算并分配各模式栈空间 分散加载

文字池: 各模式栈起点

堆空间,分散加载

用户堆栈空间,分散加载

Page 60: 主题: ARM 开发流程

周立功单片机

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) }}

Page 61: 主题: ARM 开发流程

周立功单片机

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分频值

Page 62: 主题: ARM 开发流程

周立功单片机

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分频值

Page 63: 主题: ARM 开发流程

周立功单片机

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

留给用户使用

Page 64: 主题: ARM 开发流程

周立功单片机

6.4.2 启动代码工作流程 复位后,启动代码工作及内容:

(1)复位后, PC= 0 ,根据异常向量表,跳转到复位处理程序。

(2)执行复位程序。

-堆栈初始化

-目标板初始化

-跳到 C程序 main入。

(3)执行用户程序。

Page 65: 主题: ARM 开发流程

周立功单片机

复位

(1)ResetInit的地址转入 PC

(2)程序跳转到 ResetInit

(3) 各模式堆栈初始化

6.4.2 启动代码工作流程

Page 66: 主题: ARM 开发流程

周立功单片机

(1)ResetInit的地址转入 PC

(2)程序跳转到 ResetInit

(3) 各模式堆栈初始化

(4) 进行目标板初始化

6.4.2 启动代码工作流程

Page 67: 主题: ARM 开发流程

周立功单片机

(1)ResetInit的地址转入 PC

(2)程序跳转到 ResetInit

(3) 各模式堆栈初始化

(4) 进行目标板初始化

(5)跳转到 main入口

6.4.2 启动代码工作流程

Page 68: 主题: ARM 开发流程

周立功单片机

参考资料

启动代码和分散加载在《深入浅出 ARM7- LPC213x/ LPC214x(上册 )》中有详细描述。

详见 3.9《启动代码综述》一节。

Page 69: 主题: ARM 开发流程

周立功单片机

ARMARM之旅之旅

设计最小系统建立开发环境(软件、硬件 )

HelloWorld程序

概述

产品开发

ARM 的特性了解 ARM 内部结构

ARM 程序的组成了解 ARM指令系统

掌握部分 ARM指令

选择合适的 ARM 芯片充分了解该 ARM 芯片

入门级别

了解级别当前位置当前位置

Page 70: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(一 ) 特性

LPC2000 的 GPIO具有如下的特性:可以独立控制每个 GPIO口的方向(输入 /输出模式)可以独立设置每个 GPIO的输出状态(高 /低电平)所有 GPIO口在复位后默认为输入状态部分 GPIO有快速 GPIO特性

Page 71: 主题: ARM 开发流程

周立功单片机

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 或其它指示器

控制片外器件

Page 72: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

( 三 )引脚描述

LPC2114/2124 微控制器具有两个端口—— P0 和P1 ,可以作为 GPIO 使用的引脚数为 46 个。

LPC2210/2212/2214 微控制器还包含另外两个端口—— P2 和 P3 ,这个两个端口与外部存储器总线复用,当它们全部作为 GPIO 使用时, GPIO引脚数多达 112个。

Page 73: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(四 )内部结构

GPIO内部结构示意

PINSELx

IOxDIR IOxCLR

IOxPIN

IOxSET

in

out1

0

引脚

Page 74: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(五 )GPIO操作除了设定管脚连接之外, GPIO还有如下操作:(1)设定 GPIO方向(2)控制 GPIO(3) 读取管脚电平(4) 读取 GPIO设置

Page 75: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(1)设定 GPIO方向通过 GPIO 方向寄存器 IODIR 进行控制。

IOxDIR 描述 复位值

31 : 0IOxDIR[0]对应于 Px.0 … IOxDIR[31]对应于 Px.31引脚 未定义

方向控制: 1-输出 0-输入

每个 P口都有自己的 IODIR寄存器。 IOxDIR 和相应的 Px口对应。

Page 76: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(2)控制 GPIO拉高某位口线通过置位相应的 IO 置位寄存器 IOSET 中对应位实现。

IOxSET 描述 复位值

31 : 0 IOxSET[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义

置位控制:写入 1-输出高电平

写 0 无效

Page 77: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(2)控制 GPIO拉低某位口线通过置位相应的 IO 清零寄存器 IOCLR 中对应位实现。

IOxCLR 描述 复位值

31 : 0 IOxCLR[0]对应于 Px.0 … IOxCLR[31]对应于 Px.31引脚 未定义

清零控制:写入 1-输出低电平

写 0 无效写该寄存器会清除 IOSET寄存器 /输出寄存器中对应位。

Page 78: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块(2)控制 GPIO

同时拉高 /拉低某些口线通过写相应的 IO 管脚值寄存器IOPIN 中对应位实现。

IOxPIN 描述 复位值

31 : 0 IOxPIN[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义

清零控制:写入 1-输出高电平

写入 0-输出低电平

Page 79: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(3) 读取管脚电平读取管脚电平通过读取相应的 IO 管脚值寄存器 IOPIN 实现。

IOxPIN 描述 复位值

31 : 0IOxPIN[0]对应于 Px.0 … IOxPIN[31]对应于 Px.31引脚 未定义

管脚电平: 1-管脚为高电平

0-管脚为低电平

Page 80: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(4) 读取 GPIO设置读取管脚设置通过读取相应的 IO 管脚置位寄存器 IOSET 实现。

IOxSET 描述 复位值

31 : 0 GPIO管脚设置状态 未定义

管脚设置:仅反映程序设定状态,不反映外部实际情况。

Page 81: 主题: ARM 开发流程

周立功单片机

6.5 GPIO模块

(六 ) 注意要点引脚设置为输出方式时,输出状态由 IOxSET和 IOxCLR 中最后操作的寄存器决定;大部分 GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出 /灌入电流均为 4mA (短时间极限值40mA );复位后默认所有 GPIO为输入模式。

Page 82: 主题: ARM 开发流程

周立功单片机

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

Page 83: 主题: ARM 开发流程

周立功单片机

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

Page 84: 主题: ARM 开发流程

周立功单片机

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数据输出线:

Page 85: 主题: ARM 开发流程

周立功单片机

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与前者对比:

Page 86: 主题: ARM 开发流程

周立功单片机

GPIO实验演示 GPIO控制蜂鸣器

6.5 GPIO模块

Page 87: 主题: ARM 开发流程

周立功单片机

实验电路

6.5 GPIO模块

B1

BUZZER

Q1

8550

VDD3.3

R42 1KBEEP

LPC2131

P0.7

R2210K

VDD3.3

蜂鸣器控制电路

Page 88: 主题: ARM 开发流程

周立功单片机

实验流程图

6.5 GPIO模块开始

设置 P0.7 为 GPIO

设置 P0.7 为输出模式

拉高 P0.7 ,关闭蜂鸣器

延时

拉低 P0.7 ,打开蜂鸣器

延时

Page 89: 主题: ARM 开发流程

周立功单片机

实验代码

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;}