Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

The insider's guide to the Philips ARM7-based microcontrollers (T. Martin, 2005)

.pdf
Скачиваний:
143
Добавлен:
12.08.2013
Размер:
6.1 Mб
Скачать

The Insider's Guide To The

Philips ARM7-Based

Microcontrollers

An Engineer's Introduction To The LPC2100 Series

Trevor Martin BSc. (hons.) CEng. MIEE

www.hitex.co.uk/arm

Introduction to the LPC2000

Introduction

 

 

Published by Hitex (UK) Ltd.

ISBN: 0-9549988 1

First Published February 2005

First Reprint April 2005

Hitex (UK) Ltd.

Sir William Lyons Road

University Of Warwick Science Park

Coventry, CV4 7EZ

Credits

 

Author:

Trevor Martin

Illustrator:

Sarah Latchford

Editors:

Alison Wenlock & Michael Beach

Cover:

Michael Beach

Acknowledgements

The author would like to thank Kees van Seventer and Chris Davies of Philips Semiconductors for their assistance in compiling this book

© Hitex (UK) Ltd., 21/04/2005

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical or photocopying, recording or otherwise without the prior written permission of the Publisher.

2

Introduction to the LPC2000

Introduction

 

 

3

Introduction to the LPC2000

Introduction

 

 

Introduction ........................................................................................................................

8

Chapter 1: The ARM7 CPU Core .................................................................

10

Outline...............................................................................................................................

10

The Pipeline ......................................................................................................................

10

Registers ............................................................................................................................

11

Current Program Status Register...................................................................................

12

Exception Modes ..............................................................................................................

13

ARM 7 Instruction Set.....................................................................................................

16

Branching .......................................................................................................................

18

Data Processing Instructions ..........................................................................................

19

Copying Registers ......................................................................................................

20

Copying Multiple Registers .......................................................................................

20

Swap Instruction ..............................................................................................................

21

Modifying The Status Registers......................................................................................

21

Software Interrupt ...........................................................................................................

22

MAC Unit..........................................................................................................................

23

THUMB Instruction Set ..................................................................................................

24

Summary...........................................................................................................................

26

Chapter 2: Software Development ................................................................

27

Outline...............................................................................................................................

27

Which Compiler? .............................................................................................................

27

uVISION IDE.................................................................................................................

28

Tutorial ...........................................................................................................................

28

Startup Code.....................................................................................................................

29

Interworking ARM/THUMB Code ................................................................................

31

STDIO Libraries ..............................................................................................................

32

Accessing Peripherals ......................................................................................................

33

Interrupt Service Routines ..............................................................................................

34

Exception source Constants table C function prototype .........................................

34

Software Interrupt ...........................................................................................................

36

Locating Code In RAM....................................................................................................

36

Operating System Support ..............................................................................................

38

Fixing Objects At Absolute Locations............................................................................

38

Inline Assembler...............................................................................................................

38

Hardware Debugging Tools.............................................................................................

39

4

Introduction to the LPC2000

Introduction

 

 

Important!...................................................................................................................

40

Even More Important .................................................................................................

40

Summary...........................................................................................................................

40

Chapter 3: System Peripherals ......................................................................

42

Outline...............................................................................................................................

42

Bus Structure....................................................................................................................

42

Memory Map ....................................................................................................................

44

Register Programming.....................................................................................................

45

Memory Accelerator Module ..........................................................................................

45

Example MAM Configuration .......................................................................................

49

FLASH Memory Programming......................................................................................

50

Memory Map Control.....................................................................................................

50

Bootloader ......................................................................................................................

51

Philips ISP Utility...........................................................................................................

52

In-Application Programming .........................................................................................

53

External Bus Interface.....................................................................................................

54

External Memory Interface ............................................................................................

54

Using The External Bus Interface ..................................................................................

57

Booting From ROM .........................................................................................................

58

Phase Locked Loop ..........................................................................................................

60

VLSI Peripheral Bus Divider..........................................................................................

62

Example Code: PLL And VPB Configuration........................................................

63

Power Control...................................................................................................................

64

LPC2000 Interrupt System .............................................................................................

66

Pin Connect Block..........................................................................................................

66

External Interrupt Pins ...................................................................................................

66

Interrupt Structure ..........................................................................................................

67

FIQ interrupt...................................................................................................................

68

Leaving An FIQ Interrupt ..............................................................................................

68

Example Program: FIQ Interrupt ..............................................................................

69

Vectored IRQ .................................................................................................................

70

Leaving An IRQ Interrupt ..............................................................................................

71

Leaving An IRQ Interrupt ..............................................................................................

72

Example Program: IRQ interrupt ...............................................................................

72

Non-Vectored Interrupts ................................................................................................

73

Leaving A Non-Vectored IRQ Interrupt ........................................................................

73

Example Program: Non-Vectored Interrupt...............................................................

73

Nested Interrupts ............................................................................................................

75

Summary...........................................................................................................................

76

Chapter 4: User Peripherals...........................................................................

78

Outline...............................................................................................................................

78

5

Introduction to the LPC2000

Introduction

 

 

General Purpose I/O ........................................................................................................

78

General Purpose Timers..................................................................................................

79

PWM Modulator ..............................................................................................................

82

Real Time Clock ...............................................................................................................

85

Watchdog ..........................................................................................................................

88

UART.................................................................................................................................

90

I2C Interface.....................................................................................................................

94

SPI Interface .....................................................................................................................

99

Analog To Digital Converter.........................................................................................

101

Digital To Analog Converter.........................................................................................

104

CAN Controller ..............................................................................................................

105

ISO 7 Layer Model...................................................................................................

105

CAN Node Design .......................................................................................................

106

CAN Message Objects .................................................................................................

107

CAN Bus Arbitration ...................................................................................................

109

Bit Timing ....................................................................................................................

110

CAN Message Transmission........................................................................................

112

CAN Error Containment ..............................................................................................

115

CAN Message Reception .............................................................................................

118

Acceptance Filtering ....................................................................................................

119

Configuring The Acceptance Filter..........................................................................

120

Summary.........................................................................................................................

122

Chapter 5: Keil Tutorial ...............................................................................

124

Installation ......................................................................................................................

124

Using the Keil UVISION IDE .....................................................................................

125

Exercise 1: Using the Keil Toolset...................................................................

126

Using The Debugger.......................................................................................................

133

Using The ULINK Hardware Debugger ......................................................................

138

Setting up the ULINK JTAG hardware debugger:.......................................................

138

Exercise 2: Startup code...................................................................................

141

Exercise 3: Using THUMB code .....................................................................

142

Exercise 4: Using STDIO libraries..................................................................

144

Exercise 5: Simple interrupt.............................................................................

146

Exercise 6: Software Interrupt..........................................................................

148

Exercise 7: Memory Accelerator Module ........................................................

149

Exercise 8: In-Application programming.........................................................

152

Exercise 9: External Bus Interface ...................................................................

153

Exercise 10 Phase Locked Loop ......................................................................

157

Exercise 11: Fast Interrupt ...............................................................................

159

Exercise 12: Vectored Interrupt .......................................................................

160

Exercise 13 : Non Vectored Interrupt ..............................................................

162

Exercise 14: Nested Interrupts ........................................................................

163

6

Introduction to the LPC2000

Introduction

 

 

Exercise 15: General purpose IO pins..............................................................

164

Exercise 16: Timer Capture..............................................................................

165

Exercise 17: Timer Match ................................................................................

167

Exercise 18: Dual-Edge (Symmetrical) PWM Generation. .............................

170

Exercise 19: Real Time Clock..........................................................................

172

Exercise 20: UART ..........................................................................................

173

Exercise 21: I2C interface ................................................................................

174

Exercise 22: SPI ...............................................................................................

175

Exercise 22: SPI ...............................................................................................

176

Exercise 23: Analog To Digital Converter.......................................................

177

Exercise 24: Digital to Analogue Converter ...................................................

178

Exercise 25: Transmitting CAN Data ..............................................................

179

Exercise 26: Receiving CAN Data...................................................................

180

Chapter 6: Tutorial With GNU Tools .........................................................

182

Intoduction......................................................................................................................

182

GCC Startup Code.........................................................................................................

182

Interworking ARM/THUMB Code ..............................................................................

182

Accessing Peripherals ....................................................................................................

182

Interrupt Service Routines ............................................................................................

182

Software Interrupt ........................................................................................................

183

Inline Functions..............................................................................................................

183

Exercise 1: Using The Keil Toolset With The GNU Compiler .......................

184

Exercise 2: Startup Code ..................................................................................

189

Exercise 3: Using THUMB Code.....................................................................

190

Exercise 4: Using The GNU Libraries .............................................................

192

Exercise 5: Simple Interrupt.............................................................................

193

Exercise 6: Software Interrupt..........................................................................

195

Appendices .....................................................................................................

197

Appendix A .....................................................................................................................

197

Bibliography.................................................................................................................

197

Webliography ...............................................................................................................

197

Reference Sites.........................................................................................................

197

Tools and Software Development ................................................................................

197

Evaluation Boards And Modules..................................................................................

197

7

Introduction to the LPC2000

Introduction

 

 

Introduction

This book is intended as a hands-on guide for anyone planning to use the Philips LPC2000 family of microcontrollers in a new design. It is laid out both as a reference book and as a tutorial. It is assumed that you have some experience in programming microcontrollers for embedded systems and are familiar with the C language. The bulk of technical information is spread over the first four chapters, which should be read in order if you are completely new to the LPC2000 and the ARM7 CPU.

The first chapter gives an introduction to the major features of the ARM7 CPU. Reading this chapter will give you enough understanding to be able to program any ARM7 device. If you want to develop your knowledge further, there are a number of excellent books which describe this architecture and some of these are listed in the bibliography. Chapter Two is a description of how to write C programs to run on an ARM7 processor and, as such, describes specific extensions to the ISO C standard which are necessary for embedded programming. In this book a commercial compiler is used in the main text, however the GCC tools have also been ported to ARM.

Appendix A details the ARM-specific features of the GCC tools. Having read the first two chapters you should understand the processor and its development tools. Chapter Three then introduces the LPC2000 system peripherals. This chapter describes the system architecture of the LPC2000 family and how to set the chip up for its best performance. In Chapter Four we look at the on-chip user peripherals and how to configure them for our application code.

Throughout these chapters various exercises are listed. Each of these exercises are described in detail in Chapter Five, the Tutorial section. The Tutorial contains a worksheet for each exercise which steps you through an important aspect of the LPC200. All of the exercises can be done with the evaluation compiler and simulator which come on the CD provided with this book. A low-cost starter kit is also available which allows you to download the example code on to some real hardware and “prove” that it does in fact work. It is hoped that by reading the book and doing the exercises you will quickly become familiar with the LPC2000.

8

Introduction to the LPC2000

Introduction

 

 

9