电子工程世界电子工程世界电子工程世界

产品描述

搜索
 

LM3S300-IQC50-B0T

器件型号:LM3S300-IQC50-B0T
厂商名称:ETC2
下载文档

器件描述

Microcontroller

LM3S300-IQC50-B0T器件文档内容

                 PRELIMINARY

                 LM3S300 Microcontroller

                                                  DATA SHEET

DS-LM3S300-1728  Copyright 2007 Luminary Micro, Inc.
Legal Disclaimers and Trademark Information

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH LUMINARY MICRO PRODUCTS. NO LICENSE, EXPRESS OR
IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT
AS PROVIDED IN LUMINARY MICRO'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, LUMINARY MICRO ASSUMES NO
LIABILITY WHATSOEVER, AND LUMINARY MICRO DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR
USE OF LUMINARY MICRO'S PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR
PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
LUMINARY MICRO'S PRODUCTS ARE NOT INTENDED FOR USE IN MEDICAL, LIFE SAVING, OR LIFE-SUSTAINING APPLICATIONS.

Luminary Micro may make changes to specifications and product descriptions at any time, without notice. Contact your local Luminary Micro sales office
or your distributor to obtain the latest specifications before placing your product order.

Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Luminary Micro reserves these
for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.

Copyright 2007 Luminary Micro, Inc. All rights reserved. Stellaris is a registered trademark and Luminary Micro and the Luminary Micro logo are
trademarks of Luminary Micro, Inc. or its subsidiaries in the United States and other countries. ARM and Thumb are registered trademarks and Cortex
is a trademark of ARM Limited. Other names and brands may be claimed as the property of others.

Luminary Micro, Inc.
108 Wild Basin, Suite 350
Austin, TX 78746
Main: +1-512-279-8800
Fax: +1-512-279-8879
http://www.luminarymicro.com

2               October 01, 2007

   Preliminary
                                LM3S300 Microcontroller

Table of Contents

About This Document .................................................................................................................... 15
Audience .............................................................................................................................................. 15
About This Manual ................................................................................................................................ 15
Related Documents ............................................................................................................................... 15
Documentation Conventions .................................................................................................................. 15

1      Architectural Overview ...................................................................................................... 17
1.1    Product Features ...................................................................................................................... 17
1.2    Target Applications .................................................................................................................... 21
1.3    High-Level Block Diagram ......................................................................................................... 21
1.4    Functional Overview .................................................................................................................. 22
1.4.1  ARM CortexTM-M3 ..................................................................................................................... 23
1.4.2  Motor Control Peripherals .......................................................................................................... 23
1.4.3  Analog Peripherals .................................................................................................................... 24
1.4.4  Serial Communications Peripherals ............................................................................................ 24
1.4.5  System Peripherals ................................................................................................................... 25
1.4.6  Memory Peripherals .................................................................................................................. 26
1.4.7  Additional Features ................................................................................................................... 27
1.4.8  Hardware Details ...................................................................................................................... 27

2      ARM Cortex-M3 Processor Core ...................................................................................... 28
2.1    Block Diagram .......................................................................................................................... 29
2.2    Functional Description ............................................................................................................... 29
2.2.1  Serial Wire and JTAG Debug ..................................................................................................... 29
2.2.2  Embedded Trace Macrocell (ETM) ............................................................................................. 30
2.2.3  Trace Port Interface Unit (TPIU) ................................................................................................. 30
2.2.4  ROM Table ............................................................................................................................... 30
2.2.5  Memory Protection Unit (MPU) ................................................................................................... 30
2.2.6  Nested Vectored Interrupt Controller (NVIC) ................................................................................ 30

3      Memory Map ....................................................................................................................... 34

4      Interrupts ............................................................................................................................ 36

5      JTAG Interface .................................................................................................................... 38
5.1    Block Diagram .......................................................................................................................... 39
5.2    Functional Description ............................................................................................................... 39
5.2.1  JTAG Interface Pins .................................................................................................................. 40
5.2.2  JTAG TAP Controller ................................................................................................................. 41
5.2.3  Shift Registers .......................................................................................................................... 42
5.2.4  Operational Considerations ........................................................................................................ 42
5.3    Initialization and Configuration ................................................................................................... 43
5.4    Register Descriptions ................................................................................................................ 44
5.4.1  Instruction Register (IR) ............................................................................................................. 44
5.4.2  Data Registers .......................................................................................................................... 46

6      System Control ................................................................................................................... 48
6.1    Functional Description ............................................................................................................... 48
6.1.1  Device Identification .................................................................................................................. 48
6.1.2  Reset Control ............................................................................................................................ 48

October 01, 2007                3

                   Preliminary
Table of Contents

6.1.3  Power Control ........................................................................................................................... 51
6.1.4  Clock Control ............................................................................................................................ 51
6.1.5  System Control ......................................................................................................................... 54
6.2    Initialization and Configuration ................................................................................................... 54
6.3    Register Map ............................................................................................................................ 55
6.4    Register Descriptions ................................................................................................................ 56

7      Internal Memory ............................................................................................................... 103
7.1    Block Diagram ........................................................................................................................ 103
7.2    Functional Description ............................................................................................................. 103
7.2.1  SRAM Memory ........................................................................................................................ 103
7.2.2  Flash Memory ......................................................................................................................... 104
7.3    Flash Memory Initialization and Configuration ........................................................................... 106
7.3.1  Changing Flash Protection Bits ................................................................................................ 106
7.3.2  Flash Programming ................................................................................................................. 107
7.4    Register Map .......................................................................................................................... 107
7.5    Flash Register Descriptions (Flash Control Offset) ..................................................................... 108
7.6    Flash Register Descriptions (System Control Offset) .................................................................. 115

8      General-Purpose Input/Outputs (GPIOs) ....................................................................... 119
8.1    Functional Description ............................................................................................................. 119
8.1.1  Data Control ........................................................................................................................... 120
8.1.2  Interrupt Control ...................................................................................................................... 121
8.1.3  Mode Control .......................................................................................................................... 122
8.1.4  Pad Control ............................................................................................................................. 122
8.1.5  Identification ........................................................................................................................... 122
8.2    Initialization and Configuration ................................................................................................. 122
8.3    Register Map .......................................................................................................................... 123
8.4    Register Descriptions .............................................................................................................. 125

9      General-Purpose Timers ................................................................................................. 157
9.1    Block Diagram ........................................................................................................................ 158
9.2    Functional Description ............................................................................................................. 158
9.2.1  GPTM Reset Conditions .......................................................................................................... 158
9.2.2  32-Bit Timer Operating Modes .................................................................................................. 158
9.2.3  16-Bit Timer Operating Modes .................................................................................................. 160
9.3    Initialization and Configuration ................................................................................................. 164
9.3.1  32-Bit One-Shot/Periodic Timer Mode ....................................................................................... 164
9.3.2  32-Bit Real-Time Clock (RTC) Mode ......................................................................................... 165
9.3.3  16-Bit One-Shot/Periodic Timer Mode ....................................................................................... 165
9.3.4  16-Bit Input Edge Count Mode ................................................................................................. 166
9.3.5  16-Bit Input Edge Timing Mode ................................................................................................ 166
9.3.6  16-Bit PWM Mode ................................................................................................................... 167
9.4    Register Map .......................................................................................................................... 167
9.5    Register Descriptions .............................................................................................................. 168

10     Watchdog Timer ............................................................................................................... 193
10.1   Block Diagram ........................................................................................................................ 193
10.2   Functional Description ............................................................................................................. 193
10.3   Initialization and Configuration ................................................................................................. 194
10.4   Register Map .......................................................................................................................... 194

4                               October 01, 2007

                   Preliminary
                               LM3S300 Microcontroller

10.5 Register Descriptions .............................................................................................................. 195

11      Universal Asynchronous Receivers/Transmitters (UARTs) ......................................... 216
11.1    Block Diagram ........................................................................................................................ 217
11.2    Functional Description ............................................................................................................. 217
11.2.1  Transmit/Receive Logic ........................................................................................................... 217
11.2.2  Baud-Rate Generation ............................................................................................................. 218
11.2.3  Data Transmission .................................................................................................................. 219
11.2.4  FIFO Operation ....................................................................................................................... 219
11.2.5  Interrupts ................................................................................................................................ 219
11.2.6  Loopback Operation ................................................................................................................ 220
11.3    Initialization and Configuration ................................................................................................. 220
11.4    Register Map .......................................................................................................................... 221
11.5    Register Descriptions .............................................................................................................. 222

12 Synchronous Serial Interface (SSI) ................................................................................ 254
12.1 Block Diagram ........................................................................................................................ 254
12.2 Functional Description ............................................................................................................. 254
12.2.1 Bit Rate Generation ................................................................................................................. 255
12.2.2 FIFO Operation ....................................................................................................................... 255
12.2.3 Interrupts ................................................................................................................................ 255
12.2.4 Frame Formats ....................................................................................................................... 256
12.3 Initialization and Configuration ................................................................................................. 263
12.4 Register Map .......................................................................................................................... 264
12.5 Register Descriptions .............................................................................................................. 265

13 Inter-Integrated Circuit (I2C) Interface ............................................................................ 291
13.1 Block Diagram ........................................................................................................................ 291
13.2 Functional Description ............................................................................................................. 291
13.2.1 I2C Bus Functional Overview .................................................................................................... 292
13.2.2 Available Speed Modes ........................................................................................................... 294
13.2.3 Interrupts ................................................................................................................................ 295
13.2.4 Loopback Operation ................................................................................................................ 295
13.2.5 Command Sequence Flow Charts ............................................................................................ 295
13.3 Initialization and Configuration ................................................................................................. 302
13.4 I2C Register Map ..................................................................................................................... 303
13.5 Register Descriptions (I2C Master) ........................................................................................... 304
13.6 Register Descriptions (I2C Slave) ............................................................................................. 317

14 Analog Comparators ....................................................................................................... 326
14.1 Block Diagram ........................................................................................................................ 327
14.2 Functional Description ............................................................................................................. 327
14.2.1 Internal Reference Programming .............................................................................................. 329
14.3 Initialization and Configuration ................................................................................................. 330
14.4 Register Map .......................................................................................................................... 330
14.5 Register Descriptions .............................................................................................................. 331

October 01, 2007               5

                  Preliminary
Table of Contents

15 Pin Diagram ...................................................................................................................... 339

16 Signal Tables .................................................................................................................... 340

17 Operating Characteristics ............................................................................................... 347

18 Electrical Characteristics ................................................................................................ 348
18.1 DC Characteristics .................................................................................................................. 348
18.1.1 Maximum Ratings ................................................................................................................... 348
18.1.2 Recommended DC Operating Conditions .................................................................................. 348
18.1.3 On-Chip Low Drop-Out (LDO) Regulator Characteristics ............................................................ 349
18.1.4 Power Specifications ............................................................................................................... 349
18.1.5 Flash Memory Characteristics .................................................................................................. 350
18.2 AC Characteristics ................................................................................................................... 350
18.2.1 Load Conditions ...................................................................................................................... 350
18.2.2 Clocks .................................................................................................................................... 350
18.2.3 Analog Comparator ................................................................................................................. 351
18.2.4 I2C ......................................................................................................................................... 351
18.2.5 Synchronous Serial Interface (SSI) ........................................................................................... 352
18.2.6 JTAG and Boundary Scan ........................................................................................................ 353
18.2.7 General-Purpose I/O ............................................................................................................... 355
18.2.8 Reset ..................................................................................................................................... 355

19 Package Information ........................................................................................................ 358

A      Serial Flash Loader .......................................................................................................... 360
A.1    Serial Flash Loader ................................................................................................................. 360
A.2    Interfaces ............................................................................................................................... 360
A.2.1  UART ..................................................................................................................................... 360
A.2.2  SSI ......................................................................................................................................... 360
A.3    Packet Handling ...................................................................................................................... 361
A.3.1  Packet Format ........................................................................................................................ 361
A.3.2  Sending Packets ..................................................................................................................... 361
A.3.3  Receiving Packets ................................................................................................................... 361
A.4    Commands ............................................................................................................................. 362
A.4.1  COMMAND_PING (0X20) ........................................................................................................ 362
A.4.2  COMMAND_GET_STATUS (0x23) ........................................................................................... 362
A.4.3  COMMAND_DOWNLOAD (0x21) ............................................................................................. 362
A.4.4  COMMAND_SEND_DATA (0x24) ............................................................................................. 363
A.4.5  COMMAND_RUN (0x22) ......................................................................................................... 363
A.4.6  COMMAND_RESET (0x25) ..................................................................................................... 363

B Register Quick Reference ............................................................................................... 365

C Ordering and Contact Information ................................................................................. 377
C.1 Ordering Information ................................................................................................................ 377
C.2 Kits ......................................................................................................................................... 377
C.3 Company Information .............................................................................................................. 377
C.4 Support Information ................................................................................................................. 378

6                               October 01, 2007

                   Preliminary
                               LM3S300 Microcontroller

List of Figures

Figure 1-1. Stellaris 300 Series High-Level Block Diagram ................................................................ 22
Figure 2-1. CPU Block Diagram ......................................................................................................... 29
Figure 2-2. TPIU Block Diagram ........................................................................................................ 30
Figure 5-1. JTAG Module Block Diagram ............................................................................................ 39
Figure 5-2. Test Access Port State Machine ....................................................................................... 42
Figure 5-3. IDCODE Register Format ................................................................................................. 46
Figure 5-4. BYPASS Register Format ................................................................................................ 46
Figure 5-5. Boundary Scan Register Format ....................................................................................... 47
Figure 6-1. External Circuitry to Extend Reset .................................................................................... 49
Figure 6-2. Main Clock Tree .............................................................................................................. 52
Figure 7-1. Flash Block Diagram ...................................................................................................... 103
Figure 8-1. GPIO Port Block Diagram ............................................................................................... 120
Figure 8-2. GPIODATA Write Example ............................................................................................. 121
Figure 8-3. GPIODATA Read Example ............................................................................................. 121
Figure 9-1. GPTM Module Block Diagram ........................................................................................ 158
Figure 9-2. 16-Bit Input Edge Count Mode Example .......................................................................... 162
Figure 9-3. 16-Bit Input Edge Time Mode Example ........................................................................... 163
Figure 9-4. 16-Bit PWM Mode Example ............................................................................................ 164
Figure 10-1. WDT Module Block Diagram .......................................................................................... 193
Figure 11-1. UART Module Block Diagram ......................................................................................... 217
Figure 11-2. UART Character Frame ................................................................................................. 218
Figure 12-1. SSI Module Block Diagram ............................................................................................. 254
Figure 12-2. TI Synchronous Serial Frame Format (Single Transfer) .................................................... 257
Figure 12-3. TI Synchronous Serial Frame Format (Continuous Transfer) ............................................ 257
Figure 12-4. Freescale SPI Format (Single Transfer) with SPO=0 and SPH=0 ...................................... 258
Figure 12-5. Freescale SPI Format (Continuous Transfer) with SPO=0 and SPH=0 .............................. 258
Figure 12-6. Freescale SPI Frame Format with SPO=0 and SPH=1 ..................................................... 259
Figure 12-7. Freescale SPI Frame Format (Single Transfer) with SPO=1 and SPH=0 ........................... 260
Figure 12-8. Freescale SPI Frame Format (Continuous Transfer) with SPO=1 and SPH=0 .................... 260
Figure 12-9. Freescale SPI Frame Format with SPO=1 and SPH=1 ..................................................... 261
Figure 12-10. MICROWIRE Frame Format (Single Frame) .................................................................... 262
Figure 12-11. MICROWIRE Frame Format (Continuous Transfer) ......................................................... 263
Figure 12-12. MICROWIRE Frame Format, SSIFss Input Setup and Hold Requirements ........................ 263
Figure 13-1. I2C Block Diagram ......................................................................................................... 291
Figure 13-2. I2C Bus Configuration .................................................................................................... 292
Figure 13-3. START and STOP Conditions ......................................................................................... 292
Figure 13-4. Complete Data Transfer with a 7-Bit Address ................................................................... 293
Figure 13-5. R/S Bit in First Byte ........................................................................................................ 293
Figure 13-6. Data Validity During Bit Transfer on the I2C Bus ............................................................... 293
Figure 13-7. Master Single SEND ...................................................................................................... 296
Figure 13-8. Master Single RECEIVE ................................................................................................. 297
Figure 13-9. Master Burst SEND ....................................................................................................... 298
Figure 13-10. Master Burst RECEIVE .................................................................................................. 299
Figure 13-11. Master Burst RECEIVE after Burst SEND ........................................................................ 300
Figure 13-12. Master Burst SEND after Burst RECEIVE ........................................................................ 301

October 01, 2007               7

                  Preliminary
Table of Contents

Figure 13-13. Slave Command Sequence ............................................................................................ 302
Figure 14-1. Analog Comparator Module Block Diagram ..................................................................... 327
Figure 14-2. Structure of Comparator Unit .......................................................................................... 328
Figure 14-3. Comparator Internal Reference Structure ........................................................................ 329
Figure 15-1. Pin Connection Diagram ................................................................................................ 339
Figure 18-1. Load Conditions ............................................................................................................ 350
Figure 18-2. I2C Timing ..................................................................................................................... 352
Figure 18-3. SSI Timing for TI Frame Format (FRF=01), Single Transfer Timing Measurement .............. 352
Figure 18-4. SSI Timing for MICROWIRE Frame Format (FRF=10), Single Transfer ............................. 353
Figure 18-5. SSI Timing for SPI Frame Format (FRF=00), with SPH=1 ................................................. 353
Figure 18-6. JTAG Test Clock Input Timing ......................................................................................... 354
Figure 18-7. JTAG Test Access Port (TAP) Timing .............................................................................. 355
Figure 18-8. JTAG TRST Timing ........................................................................................................ 355
Figure 18-9. External Reset Timing (RST) .......................................................................................... 356
Figure 18-10. Power-On Reset Timing ................................................................................................. 356
Figure 18-11. Brown-Out Reset Timing ................................................................................................ 357
Figure 18-12. Software Reset Timing ................................................................................................... 357
Figure 18-13. Watchdog Reset Timing ................................................................................................. 357
Figure 18-14. LDO Reset Timing ......................................................................................................... 357
Figure 19-1. 48-Pin LQFP Package ................................................................................................... 358

8               October 01, 2007

   Preliminary
                               LM3S300 Microcontroller

List of Tables

Table 1.      Documentation Conventions ............................................................................................ 15
Table 3-1.    Memory Map ................................................................................................................... 34
Table 4-1.    Exception Types .............................................................................................................. 36
Table 4-2.    Interrupts ........................................................................................................................ 37
Table 5-1.    JTAG Port Pins Reset State ............................................................................................. 40
Table 5-2.    JTAG Instruction Register Commands ............................................................................... 44
Table 6-1.    System Control Register Map ........................................................................................... 55
Table 6-2.    PLL Mode Control ........................................................................................................... 69
Table 7-1.    Flash Protection Policy Combinations ............................................................................. 105
Table 7-2.    Flash Register Map ........................................................................................................ 108
Table 8-1.    GPIO Pad Configuration Examples ................................................................................. 122
Table 8-2.    GPIO Interrupt Configuration Example ............................................................................ 123
Table 8-3.    GPIO Register Map ....................................................................................................... 124
Table 9-1.    16-Bit Timer With Prescaler Configurations ..................................................................... 161
Table 9-2.    Timers Register Map ...................................................................................................... 167
Table 10-1.   Watchdog Timer Register Map ........................................................................................ 194
Table 11-1.   UART Register Map ....................................................................................................... 221
Table 12-1.   SSI Register Map .......................................................................................................... 264
Table 13-1.   Examples of I2C Master Timer Period versus Speed Mode ............................................... 294
Table 13-2.   Inter-Integrated Circuit (I2C) Interface Register Map ......................................................... 303
Table 13-3.   Write Field Decoding for I2CMCS[3:0] Field (Sheet 1 of 3) ................................................ 308
Table 14-1.   Comparator 0 Operating Modes ...................................................................................... 328
Table 14-2.   Comparator 1 Operating Modes ...................................................................................... 328
Table 14-3.   Comparator 2 Operating Modes ...................................................................................... 329
Table 14-4.   Internal Reference Voltage and ACREFCTL Field Values ................................................. 329
Table 14-5.   Analog Comparators Register Map ................................................................................. 331
Table 16-1.   Signals by Pin Number ................................................................................................... 340
Table 16-2.   Signals by Signal Name ................................................................................................. 342
Table 16-3.   Signals by Function, Except for GPIO ............................................................................. 344
Table 16-4.   GPIO Pins and Alternate Functions ................................................................................. 345
Table 17-1.   Temperature Characteristics ........................................................................................... 347
Table 17-2.   Thermal Characteristics ................................................................................................. 347
Table 18-1.   Maximum Ratings .......................................................................................................... 348
Table 18-2.   Recommended DC Operating Conditions ........................................................................ 348
Table 18-3.   LDO Regulator Characteristics ....................................................................................... 349
Table 18-4.   Detailed Power Specifications ........................................................................................ 349
Table 18-5.   Flash Memory Characteristics ........................................................................................ 350
Table 18-6.   Phase Locked Loop (PLL) Characteristics ....................................................................... 350
Table 18-7.   Clock Characteristics ..................................................................................................... 350
Table 18-8.   Analog Comparator Characteristics ................................................................................. 351
Table 18-9.   Analog Comparator Voltage Reference Characteristics .................................................... 351
Table 18-10.  I2C Characteristics ......................................................................................................... 351
Table 18-11.  SSI Characteristics ........................................................................................................ 352
Table 18-12.  JTAG Characteristics ..................................................................................................... 353
Table 18-13.  GPIO Characteristics ..................................................................................................... 355
Table 18-14.  Reset Characteristics ..................................................................................................... 355

October 01, 2007               9

                  Preliminary
Table of Contents
Table C-1. Part Ordering Information ............................................................................................... 377

10               October 01, 2007

    Preliminary
                               LM3S300 Microcontroller

List of Registers

System Control .............................................................................................................................. 48
Register 1: Device Identification 0 (DID0), offset 0x000 ....................................................................... 57
Register 2: Power-On and Brown-Out Reset Control (PBORCTL), offset 0x030 .................................... 59
Register 3: LDO Power Control (LDOPCTL), offset 0x034 ................................................................... 60
Register 4: Raw Interrupt Status (RIS), offset 0x050 ........................................................................... 61
Register 5: Interrupt Mask Control (IMC), offset 0x054 ........................................................................ 62
Register 6: Masked Interrupt Status and Clear (MISC), offset 0x058 .................................................... 64
Register 7: Reset Cause (RESC), offset 0x05C .................................................................................. 65
Register 8: Run-Mode Clock Configuration (RCC), offset 0x060 .......................................................... 66
Register 9: XTAL to PLL Translation (PLLCFG), offset 0x064 .............................................................. 70
Register 10: Deep Sleep Clock Configuration (DSLPCLKCFG), offset 0x144 .......................................... 71
Register 11: Clock Verification Clear (CLKVCLR), offset 0x150 ............................................................. 72
Register 12: Allow Unregulated LDO to Reset the Part (LDOARST), offset 0x160 ................................... 73
Register 13: Device Identification 1 (DID1), offset 0x004 ....................................................................... 74
Register 14: Device Capabilities 0 (DC0), offset 0x008 ......................................................................... 76
Register 15: Device Capabilities 1 (DC1), offset 0x010 ......................................................................... 77
Register 16: Device Capabilities 2 (DC2), offset 0x014 ......................................................................... 79
Register 17: Device Capabilities 3 (DC3), offset 0x018 ......................................................................... 81
Register 18: Device Capabilities 4 (DC4), offset 0x01C ......................................................................... 83
Register 19: Run Mode Clock Gating Control Register 0 (RCGC0), offset 0x100 .................................... 84
Register 20: Sleep Mode Clock Gating Control Register 0 (SCGC0), offset 0x110 .................................. 85
Register 21: Deep Sleep Mode Clock Gating Control Register 0 (DCGC0), offset 0x120 ......................... 86
Register 22: Run Mode Clock Gating Control Register 1 (RCGC1), offset 0x104 .................................... 87
Register 23: Sleep Mode Clock Gating Control Register 1 (SCGC1), offset 0x114 .................................. 89
Register 24: Deep Sleep Mode Clock Gating Control Register 1 (DCGC1), offset 0x124 ......................... 91
Register 25: Run Mode Clock Gating Control Register 2 (RCGC2), offset 0x108 .................................... 93
Register 26: Sleep Mode Clock Gating Control Register 2 (SCGC2), offset 0x118 .................................. 95
Register 27: Deep Sleep Mode Clock Gating Control Register 2 (DCGC2), offset 0x128 ......................... 97
Register 28: Software Reset Control 0 (SRCR0), offset 0x040 ............................................................... 99
Register 29: Software Reset Control 1 (SRCR1), offset 0x044 ............................................................. 100
Register 30: Software Reset Control 2 (SRCR2), offset 0x048 ............................................................. 102

Internal Memory ........................................................................................................................... 103
Register 1: Flash Memory Address (FMA), offset 0x000 .................................................................... 109
Register 2: Flash Memory Data (FMD), offset 0x004 ......................................................................... 110
Register 3: Flash Memory Control (FMC), offset 0x008 ..................................................................... 111
Register 4: Flash Controller Raw Interrupt Status (FCRIS), offset 0x00C ............................................ 113
Register 5: Flash Controller Interrupt Mask (FCIM), offset 0x010 ........................................................ 114
Register 6: Flash Controller Masked Interrupt Status and Clear (FCMISC), offset 0x014 ..................... 115
Register 7: USec Reload (USECRL), offset 0x140 ............................................................................ 116
Register 8: Flash Memory Protection Read Enable (FMPRE), offset 0x130 ......................................... 117
Register 9: Flash Memory Protection Program Enable (FMPPE), offset 0x134 .................................... 118

General-Purpose Input/Outputs (GPIOs) ................................................................................... 119
Register 1: GPIO Data (GPIODATA), offset 0x000 ............................................................................ 126
Register 2: GPIO Direction (GPIODIR), offset 0x400 ......................................................................... 127
Register 3: GPIO Interrupt Sense (GPIOIS), offset 0x404 .................................................................. 128

October 01, 2007               11

                  Preliminary
Table of Contents

Register 4:   GPIO Interrupt Both Edges (GPIOIBE), offset 0x408 ........................................................ 129
Register 5:   GPIO Interrupt Event (GPIOIEV), offset 0x40C ................................................................ 130
Register 6:   GPIO Interrupt Mask (GPIOIM), offset 0x410 ................................................................... 131
Register 7:   GPIO Raw Interrupt Status (GPIORIS), offset 0x414 ........................................................ 132
Register 8:   GPIO Masked Interrupt Status (GPIOMIS), offset 0x418 ................................................... 133
Register 9:   GPIO Interrupt Clear (GPIOICR), offset 0x41C ................................................................ 134
Register 10:  GPIO Alternate Function Select (GPIOAFSEL), offset 0x420 ............................................ 135
Register 11:  GPIO 2-mA Drive Select (GPIODR2R), offset 0x500 ........................................................ 137
Register 12:  GPIO 4-mA Drive Select (GPIODR4R), offset 0x504 ........................................................ 138
Register 13:  GPIO 8-mA Drive Select (GPIODR8R), offset 0x508 ........................................................ 139
Register 14:  GPIO Open Drain Select (GPIOODR), offset 0x50C ......................................................... 140
Register 15:  GPIO Pull-Up Select (GPIOPUR), offset 0x510 ................................................................ 141
Register 16:  GPIO Pull-Down Select (GPIOPDR), offset 0x514 ........................................................... 142
Register 17:  GPIO Slew Rate Control Select (GPIOSLR), offset 0x518 ................................................ 143
Register 18:  GPIO Digital Enable (GPIODEN), offset 0x51C ................................................................ 144
Register 19:  GPIO Peripheral Identification 4 (GPIOPeriphID4), offset 0xFD0 ....................................... 145
Register 20:  GPIO Peripheral Identification 5 (GPIOPeriphID5), offset 0xFD4 ....................................... 146
Register 21:  GPIO Peripheral Identification 6 (GPIOPeriphID6), offset 0xFD8 ....................................... 147
Register 22:  GPIO Peripheral Identification 7 (GPIOPeriphID7), offset 0xFDC ...................................... 148
Register 23:  GPIO Peripheral Identification 0 (GPIOPeriphID0), offset 0xFE0 ....................................... 149
Register 24:  GPIO Peripheral Identification 1 (GPIOPeriphID1), offset 0xFE4 ....................................... 150
Register 25:  GPIO Peripheral Identification 2 (GPIOPeriphID2), offset 0xFE8 ....................................... 151
Register 26:  GPIO Peripheral Identification 3 (GPIOPeriphID3), offset 0xFEC ...................................... 152
Register 27:  GPIO PrimeCell Identification 0 (GPIOPCellID0), offset 0xFF0 .......................................... 153
Register 28:  GPIO PrimeCell Identification 1 (GPIOPCellID1), offset 0xFF4 .......................................... 154
Register 29:  GPIO PrimeCell Identification 2 (GPIOPCellID2), offset 0xFF8 .......................................... 155
Register 30:  GPIO PrimeCell Identification 3 (GPIOPCellID3), offset 0xFFC ......................................... 156

General-Purpose Timers ............................................................................................................. 157
Register 1: GPTM Configuration (GPTMCFG), offset 0x000 .............................................................. 169
Register 2: GPTM TimerA Mode (GPTMTAMR), offset 0x004 ............................................................ 170
Register 3: GPTM TimerB Mode (GPTMTBMR), offset 0x008 ............................................................ 172
Register 4: GPTM Control (GPTMCTL), offset 0x00C ........................................................................ 174
Register 5: GPTM Interrupt Mask (GPTMIMR), offset 0x018 .............................................................. 177
Register 6: GPTM Raw Interrupt Status (GPTMRIS), offset 0x01C ..................................................... 179
Register 7: GPTM Masked Interrupt Status (GPTMMIS), offset 0x020 ................................................ 180
Register 8: GPTM Interrupt Clear (GPTMICR), offset 0x024 .............................................................. 181
Register 9: GPTM TimerA Interval Load (GPTMTAILR), offset 0x028 ................................................. 183
Register 10: GPTM TimerB Interval Load (GPTMTBILR), offset 0x02C ................................................ 184
Register 11: GPTM TimerA Match (GPTMTAMATCHR), offset 0x030 ................................................... 185
Register 12: GPTM TimerB Match (GPTMTBMATCHR), offset 0x034 .................................................. 186
Register 13: GPTM TimerA Prescale (GPTMTAPR), offset 0x038 ........................................................ 187
Register 14: GPTM TimerB Prescale (GPTMTBPR), offset 0x03C ....................................................... 188
Register 15: GPTM TimerA Prescale Match (GPTMTAPMR), offset 0x040 ........................................... 189
Register 16: GPTM TimerB Prescale Match (GPTMTBPMR), offset 0x044 ........................................... 190
Register 17: GPTM TimerA (GPTMTAR), offset 0x048 ........................................................................ 191
Register 18: GPTM TimerB (GPTMTBR), offset 0x04C ....................................................................... 192

Watchdog Timer ........................................................................................................................... 193
Register 1: Watchdog Load (WDTLOAD), offset 0x000 ...................................................................... 196

12                              October 01, 2007

                   Preliminary
                               LM3S300 Microcontroller

Register 2:   Watchdog Value (WDTVALUE), offset 0x004 ................................................................... 197
Register 3:   Watchdog Control (WDTCTL), offset 0x008 ..................................................................... 198
Register 4:   Watchdog Interrupt Clear (WDTICR), offset 0x00C .......................................................... 199
Register 5:   Watchdog Raw Interrupt Status (WDTRIS), offset 0x010 .................................................. 200
Register 6:   Watchdog Masked Interrupt Status (WDTMIS), offset 0x014 ............................................. 201
Register 7:   Watchdog Test (WDTTEST), offset 0x418 ....................................................................... 202
Register 8:   Watchdog Lock (WDTLOCK), offset 0xC00 ..................................................................... 203
Register 9:   Watchdog Peripheral Identification 4 (WDTPeriphID4), offset 0xFD0 ................................. 204
Register 10:  Watchdog Peripheral Identification 5 (WDTPeriphID5), offset 0xFD4 ................................. 205
Register 11:  Watchdog Peripheral Identification 6 (WDTPeriphID6), offset 0xFD8 ................................. 206
Register 12:  Watchdog Peripheral Identification 7 (WDTPeriphID7), offset 0xFDC ................................ 207
Register 13:  Watchdog Peripheral Identification 0 (WDTPeriphID0), offset 0xFE0 ................................. 208
Register 14:  Watchdog Peripheral Identification 1 (WDTPeriphID1), offset 0xFE4 ................................. 209
Register 15:  Watchdog Peripheral Identification 2 (WDTPeriphID2), offset 0xFE8 ................................. 210
Register 16:  Watchdog Peripheral Identification 3 (WDTPeriphID3), offset 0xFEC ................................. 211
Register 17:  Watchdog PrimeCell Identification 0 (WDTPCellID0), offset 0xFF0 .................................... 212
Register 18:  Watchdog PrimeCell Identification 1 (WDTPCellID1), offset 0xFF4 .................................... 213
Register 19:  Watchdog PrimeCell Identification 2 (WDTPCellID2), offset 0xFF8 .................................... 214
Register 20:  Watchdog PrimeCell Identification 3 (WDTPCellID3 ), offset 0xFFC .................................. 215

Universal Asynchronous Receivers/Transmitters (UARTs) ..................................................... 216
Register 1: UART Data (UARTDR), offset 0x000 ............................................................................... 223
Register 2: UART Receive Status/Error Clear (UARTRSR/UARTECR), offset 0x004 ........................... 225
Register 3: UART Flag (UARTFR), offset 0x018 ................................................................................ 227
Register 4: UART Integer Baud-Rate Divisor (UARTIBRD), offset 0x024 ............................................ 229
Register 5: UART Fractional Baud-Rate Divisor (UARTFBRD), offset 0x028 ....................................... 230
Register 6: UART Line Control (UARTLCRH), offset 0x02C ............................................................... 231
Register 7: UART Control (UARTCTL), offset 0x030 ......................................................................... 233
Register 8: UART Interrupt FIFO Level Select (UARTIFLS), offset 0x034 ........................................... 234
Register 9: UART Interrupt Mask (UARTIM), offset 0x038 ................................................................. 236
Register 10: UART Raw Interrupt Status (UARTRIS), offset 0x03C ...................................................... 238
Register 11: UART Masked Interrupt Status (UARTMIS), offset 0x040 ................................................. 239
Register 12: UART Interrupt Clear (UARTICR), offset 0x044 ............................................................... 240
Register 13: UART Peripheral Identification 4 (UARTPeriphID4), offset 0xFD0 ..................................... 242
Register 14: UART Peripheral Identification 5 (UARTPeriphID5), offset 0xFD4 ..................................... 243
Register 15: UART Peripheral Identification 6 (UARTPeriphID6), offset 0xFD8 ..................................... 244
Register 16: UART Peripheral Identification 7 (UARTPeriphID7), offset 0xFDC ..................................... 245
Register 17: UART Peripheral Identification 0 (UARTPeriphID0), offset 0xFE0 ...................................... 246
Register 18: UART Peripheral Identification 1 (UARTPeriphID1), offset 0xFE4 ...................................... 247
Register 19: UART Peripheral Identification 2 (UARTPeriphID2), offset 0xFE8 ...................................... 248
Register 20: UART Peripheral Identification 3 (UARTPeriphID3), offset 0xFEC ..................................... 249
Register 21: UART PrimeCell Identification 0 (UARTPCellID0), offset 0xFF0 ........................................ 250
Register 22: UART PrimeCell Identification 1 (UARTPCellID1), offset 0xFF4 ........................................ 251
Register 23: UART PrimeCell Identification 2 (UARTPCellID2), offset 0xFF8 ........................................ 252
Register 24: UART PrimeCell Identification 3 (UARTPCellID3), offset 0xFFC ........................................ 253

Synchronous Serial Interface (SSI) ............................................................................................ 254
Register 1: SSI Control 0 (SSICR0), offset 0x000 .............................................................................. 266
Register 2: SSI Control 1 (SSICR1), offset 0x004 .............................................................................. 268
Register 3: SSI Data (SSIDR), offset 0x008 ...................................................................................... 270

October 01, 2007               13

                  Preliminary
Table of Contents

Register 4: SSI Status (SSISR), offset 0x00C ................................................................................... 271

Register 5: SSI Clock Prescale (SSICPSR), offset 0x010 .................................................................. 273

Register 6: SSI Interrupt Mask (SSIIM), offset 0x014 ......................................................................... 274

Register 7: SSI Raw Interrupt Status (SSIRIS), offset 0x018 .............................................................. 276

Register 8: SSI Masked Interrupt Status (SSIMIS), offset 0x01C ........................................................ 277

Register 9: SSI Interrupt Clear (SSIICR), offset 0x020 ....................................................................... 278

Register 10: SSI Peripheral Identification 4 (SSIPeriphID4), offset 0xFD0 ............................................. 279

Register 11: SSI Peripheral Identification 5 (SSIPeriphID5), offset 0xFD4 ............................................. 280

Register 12: SSI Peripheral Identification 6 (SSIPeriphID6), offset 0xFD8 ............................................. 281

Register 13: SSI Peripheral Identification 7 (SSIPeriphID7), offset 0xFDC ............................................ 282

Register 14: SSI Peripheral Identification 0 (SSIPeriphID0), offset 0xFE0 ............................................. 283

Register 15: SSI Peripheral Identification 1 (SSIPeriphID1), offset 0xFE4 ............................................. 284

Register 16: SSI Peripheral Identification 2 (SSIPeriphID2), offset 0xFE8 ............................................. 285

Register 17: SSI Peripheral Identification 3 (SSIPeriphID3), offset 0xFEC ............................................ 286

Register 18: SSI PrimeCell Identification 0 (SSIPCellID0), offset 0xFF0 ............................................... 287

Register 19: SSI PrimeCell Identification 1 (SSIPCellID1), offset 0xFF4 ............................................... 288

Register 20: SSI PrimeCell Identification 2 (SSIPCellID2), offset 0xFF8 ............................................... 289

Register 21: SSI PrimeCell Identification 3 (SSIPCellID3), offset 0xFFC ............................................... 290

Inter-Integrated Circuit (I2C) Interface ........................................................................................ 291
Register 1: I2C Master Slave Address (I2CMSA), offset 0x000 ........................................................... 305
Register 2: I2C Master Control/Status (I2CMCS), offset 0x004 ........................................................... 306
Register 3: I2C Master Data (I2CMDR), offset 0x008 ......................................................................... 310
Register 4: I2C Master Timer Period (I2CMTPR), offset 0x00C ........................................................... 311
Register 5: I2C Master Interrupt Mask (I2CMIMR), offset 0x010 ......................................................... 312

Register 6:   I2C Master Raw Interrupt Status (I2CMRIS), offset 0x014 ................................................. 313
Register 7:   I2C Master Masked Interrupt Status (I2CMMIS), offset 0x018 ........................................... 314
Register 8:   I2C Master Interrupt Clear (I2CMICR), offset 0x01C ......................................................... 315
Register 9:   I2C Master Configuration (I2CMCR), offset 0x020 ............................................................ 316
Register 10:  I2C Slave Own Address (I2CSOAR), offset 0x000 ............................................................ 318

Register 11:  I2C Slave Control/Status (I2CSCSR), offset 0x004 ........................................................... 319
Register 12:  I2C Slave Data (I2CSDR), offset 0x008 ........................................................................... 321
Register 13:  I2C Slave Interrupt Mask (I2CSIMR), offset 0x00C ........................................................... 322
Register 14:  I2C Slave Raw Interrupt Status (I2CSRIS), offset 0x010 ................................................... 323
Register 15:  I2C Slave Masked Interrupt Status (I2CSMIS), offset 0x014 .............................................. 324

Register 16: I2C Slave Interrupt Clear (I2CSICR), offset 0x018 ............................................................ 325

Analog Comparators ................................................................................................................... 326
Register 1: Analog Comparator Masked Interrupt Status (ACMIS), offset 0x00 .................................... 332
Register 2: Analog Comparator Raw Interrupt Status (ACRIS), offset 0x04 ......................................... 333
Register 3: Analog Comparator Interrupt Enable (ACINTEN), offset 0x08 ........................................... 334
Register 4: Analog Comparator Reference Voltage Control (ACREFCTL), offset 0x10 ......................... 335
Register 5: Analog Comparator Status 0 (ACSTAT0), offset 0x20 ....................................................... 336
Register 6: Analog Comparator Status 1 (ACSTAT1), offset 0x40 ....................................................... 336
Register 7: Analog Comparator Status 2 (ACSTAT2), offset 0x60 ....................................................... 336
Register 8: Analog Comparator Control 0 (ACCTL0), offset 0x24 ....................................................... 337
Register 9: Analog Comparator Control 1 (ACCTL1), offset 0x44 ....................................................... 337
Register 10: Analog Comparator Control 2 (ACCTL2), offset 0x64 ...................................................... 337

14                              October 01, 2007

                   Preliminary
                                                                                 LM3S300 Microcontroller

About This Document

This data sheet provides reference information for the LM3S300 microcontroller, describing the
functional blocks of the system-on-chip (SoC) device designed around the ARM CortexTM-M3
core.

Audience

                This manual is intended for system software developers, hardware designers, and application
                developers.

About This Manual

                This document is organized into sections that correspond to each major feature.

Related Documents

                The following documents are referenced by the data sheet, and available on the documentation CD
                or from the Luminary Micro web site at www.luminarymicro.com:

                 ARM CortexTM-M3 Technical Reference Manual

                 ARM CoreSight Technical Reference Manual

                 ARM v7-M Architecture Application Level Reference Manual

                The following related documents are also referenced:

                 IEEE Standard 1149.1-Test Access Port and Boundary-Scan Architecture

                This documentation list was current as of publication date. Please check the Luminary Micro web
                site for additional documentation, including application notes and white papers.

Documentation Conventions

                This document uses the conventions shown in Table 1 on page 15.

Table 1. Documentation Conventions

Notation          Meaning

General Register Notation

REGISTER          APB registers are indicated in uppercase bold. For example, PBORCTL is the Power-On and
                  Brown-Out Reset Control register. If a register name contains a lowercase n, it represents more
                  than one register. For example, SRCRn represents any (or all) of the three Software Reset Control
                  registers: SRCR0, SRCR1 , and SRCR2.

bit               A single bit in a register.

bit field         Two or more consecutive and related bits.

offset 0xnnn      A hexadecimal increment to a register's address, relative to that module's base address as specified
                  in "Memory Map" on page 34.

Register N        Registers are numbered consecutively throughout the document to aid in referencing them. The
                  register number has no meaning to software.

October 01, 2007                                                                                             15

                           Preliminary
About This Document

    Notation             Meaning
    reserved             Register bits marked reserved are reserved for future use. In most cases, reserved bits are set to
                         0; however, user software should not rely on the value of a reserved bit. To provide software
    yy:xx                compatibility with future products, the value of a reserved bit should be preserved across a
    Register Bit/Field   read-modify-write operation.
    Types                The range of register bits inclusive from xx to yy. For example, 31:15 means bits 15 through 31 in
    RC                   that register.
    RO                   This value in the register bit diagram indicates whether software running on the controller can
    R/W                  change the value of the bit field.
    R/W1C                Software can read this field. The bit or field is cleared by hardware after reading the bit/field.
                         Software can read this field. Always write the chip reset value.
    W1C                  Software can read or write this field.
                         Software can read or write this field. A write of a 0 to a W1C bit does not affect the bit value in the
    WO                   register. A write of a 1 clears the value of the bit in the register; the remaining bits remain unchanged.
    Register Bit/Field
    Reset Value          This register type is primarily used for clearing interrupt status bits where the read operation
    0                    provides the interrupt status and the write of the read value clears only the interrupts being reported
    1                    at the time the register was read.
    -                    Software can write this field. A write of a 0 to a W1C bit does not affect the bit value in the register.
    Pin/Signal Notation  A write of a 1 clears the value of the bit in the register; the remaining bits remain unchanged. A
    []                   read of the register returns no meaningful data.
    pin
    signal               This register is typically used to clear the corresponding bit in an interrupt register.
    assert a signal      Only a write by software is valid; a read of the register returns no meaningful data.
                         This value in the register bit diagram shows the bit/field value after any reset, unless noted.
    deassert a signal
    SIGNAL               Bit cleared to 0 on chip reset.
                         Bit set to 1 on chip reset.
    SIGNAL               Nondeterministic.
    Numbers
    X                    Pin alternate function; a pin defaults to the signal without the brackets.
                         Refers to the physical connection on the package.
    0x                   Refers to the electrical signal encoding of a pin.
                         Change the value of the signal from the logically False state to the logically True state. For active
                         High signals, the asserted signal value is 1 (High); for active Low signals, the asserted signal value
                         is 0 (Low). The active polarity (High or Low) is defined by the signal name (see SIGNAL and SIGNAL
                         below).
                         Change the value of the signal from the logically True state to the logically False state.
                         Signal names are in uppercase and in the Courier font. An overbar on a signal name indicates that
                         it is active Low. To assert SIGNAL is to drive it Low; to deassert SIGNAL is to drive it High.
                         Signal names are in uppercase and in the Courier font. An active High signal has no overbar. To
                         assert SIGNAL is to drive it High; to deassert SIGNAL is to drive it Low.

                         An uppercase X indicates any of several values is allowed, where X can be any legal pattern. For
                         example, a binary value of 0X00 can be either 0100 or 0000, a hex value of 0xX is 0x0 or 0x1, and
                         so on.
                         Hexadecimal numbers have a prefix of 0x. For example, 0x00FF is the hexadecimal number FF.

                         All other numbers within register tables are assumed to be binary. Within conceptual information,
                         binary numbers are indicated with a b suffix, for example, 1011b, and decimal numbers are written
                         without a prefix or suffix.

16                                    October 01, 2007

                         Preliminary
                                                                                                                               LM3S300 Microcontroller

1 Architectural Overview

                The Luminary Micro Stellaris family of microcontrollers--the first ARM CortexTM-M3 based
                controllers--brings high-performance 32-bit computing to cost-sensitive embedded microcontroller
                applications. These pioneering parts deliver customers 32-bit performance at a cost equivalent to
                legacy 8- and 16-bit devices, all in a package with a small footprint.
                The LM3S300 microcontroller is targeted for industrial applications, including test and measurement
                equipment, factory automation, HVAC and building control, motion control, medical instrumentation,
                fire and security, and power/energy.
                In addition, the LM3S300 microcontroller offers the advantages of ARM's widely available
                development tools, System-on-Chip (SoC) infrastructure IP applications, and a large user community.
                Additionally, the microcontroller uses ARM's Thumb-compatible Thumb-2 instruction set to reduce
                memory requirements and, thereby, cost. Finally, the LM3S300 microcontroller is code-compatible
                to all members of the extensive Stellaris family; providing flexibility to fit our customers' precise
                needs.
                Luminary Micro offers a complete solution to get to market quickly, with evaluation and development
                boards, white papers and application notes, an easy-to-use peripheral driver library, and a strong
                support, sales, and distributor network.

1.1 Product Features

                The LM3S300 microcontroller includes the following product features:

                 32-Bit RISC Performance

                     32-bit ARM CortexTM-M3 v7M architecture optimized for small-footprint embedded
                         applications

                     System timer (SysTick), providing a simple, 24-bit clear-on-write, decrementing, wrap-on-zero
                         counter with a flexible control mechanism

                     Thumb-compatible Thumb-2-only instruction set processor core for high code density

                     25-MHz operation

                     Hardware-division and single-cycle-multiplication

                     Integrated Nested Vectored Interrupt Controller (NVIC) providing deterministic interrupt
                         handling

                     21 interrupts with eight priority levels

                     Memory protection unit (MPU), providing a privileged mode for protected operating system
                         functionality

                     Unaligned data access, enabling data to be efficiently packed into memory

                     Atomic bit manipulation (bit-banding), delivering maximum memory utilization and streamlined
                         peripheral control

                 Internal Memory

October 01, 2007               17

                  Preliminary
Architectural Overview

         16 KB single-cycle flash
             User-managed flash block protection on a 2-KB block basis
             User-managed flash data programming
             User-defined and managed flash-protection block

         4 KB single-cycle SRAM
     General-Purpose Timers

         Three General-Purpose Timer Modules (GPTM), each of which provides two 16-bit
            timer/counters. Each GPTM can be configured to operate independently as timers or event
            counters as a single 32-bit timer, as one 32-bit Real-Time Clock (RTC) to event capture, or
            for Pulse Width Modulation (PWM)

         32-bit Timer modes
             Programmable one-shot timer
             Programmable periodic timer
             Real-Time Clock when using an external 32.768-KHz clock as the input
             User-enabled stalling in periodic and one-shot mode when the controller asserts the CPU
                 Halt flag during debug

         16-bit Timer modes
             General-purpose timer function with an 8-bit prescaler
             Programmable one-shot timer
             Programmable periodic timer
             User-enabled stalling when the controller asserts CPU Halt flag during debug

         16-bit Input Capture modes
             Input edge count capture
             Input edge time capture

         16-bit PWM mode
             Simple PWM mode with software-programmable output inversion of the PWM signal

     ARM FiRM-compliant Watchdog Timer
         32-bit down counter with a programmable load register
         Separate watchdog clock with an enable
         Programmable interrupt generation logic with interrupt masking
         Lock register protection from runaway software

18                                   October 01, 2007

                        Preliminary
                               LM3S300 Microcontroller

    Reset generation logic with an enable/disable
    User-enabled stalling when the controller asserts the CPU Halt flag during debug
Synchronous Serial Interface (SSI)
    Master or slave operation
    Programmable clock bit rate and prescale
    Separate transmit and receive FIFOs, 16 bits wide, 8 locations deep
    Programmable interface operation for Freescale SPI, MICROWIRE, or Texas Instruments

        synchronous serial interfaces
    Programmable data frame size from 4 to 16 bits
    Internal loopback test mode for diagnostic/debug testing
UART
    Two fully programmable 16C550-type UARTs
    Separate 16x8 transmit (TX) and 16x12 receive (RX) FIFOs to reduce CPU interrupt service

        loading
    Programmable baud-rate generator with fractional divider
    Programmable FIFO length, including 1-byte deep operation providing conventional

        double-buffered interface
    FIFO trigger levels of 1/8, 1/4, 1/2, 3/4, and 7/8
    Standard asynchronous communication bits for start, stop, and parity
    False-start-bit detection
    Line-break generation and detection
Analog Comparators
    Three independent integrated analog comparators
    Configurable for output to: drive an output pin or generate an interrupt
    Compare external pin input to external pin input or to internal programmable voltage reference
I2C
    Master and slave receive and transmit operation with transmission speed up to 100 Kbps in

        Standard mode and 400 Kbps in Fast mode
    Interrupt generation
    Master with arbitration and clock synchronization, multimaster support, and 7-bit addressing

        mode

October 01, 2007               19

                  Preliminary
Architectural Overview

                 GPIOs
                     8-36 GPIOs, depending on configuration
                     5-V-tolerant input/outputs
                     Programmable interrupt generation as either edge-triggered or level-sensitive
                     Bit masking in both read and write operations through address lines
                     Programmable control for GPIO pad configuration:
                         Weak pull-up or pull-down resistors
                         2-mA, 4-mA, and 8-mA pad drive
                         Slew rate control for the 8-mA drive
                         Open drain enables
                         Digital input enables

                 Power
                     On-chip Low Drop-Out (LDO) voltage regulator, with programmable output user-adjustable
                         from 2.25 V to 2.75 V
                     Low-power options on controller: Sleep and Deep-sleep modes
                     Low-power options for peripherals: software controls shutdown of individual peripherals
                     User-enabled LDO unregulated voltage detection and automatic reset
                     3.3-V supply brown-out detection and reporting via interrupt or reset

                 Flexible Reset Sources
                     Power-on reset (POR)
                     Reset pin assertion
                     Brown-out (BOR) detector alerts to system power drops
                     Software reset
                     Watchdog timer reset
                     Internal low drop-out (LDO) regulator output goes unregulated

                 Additional Features
                     Six reset sources
                     Programmable clock source control
                     Clock gating to individual peripherals for power savings

20               October 01, 2007

    Preliminary
                                                                                                                               LM3S300 Microcontroller

                     IEEE 1149.1-1990 compliant Test Access Port (TAP) controller
                     Debug access via JTAG and Serial Wire interfaces
                     Full JTAG boundary scan
                 Industrial-range 48-pin RoHS-compliant LQFP package

1.2 Target Applications

                 Factory automation and control
                 Industrial control power devices
                 Building and home automation
                 Stepper motors
                 Brushless DC motors
                 AC induction motors

1.3 High-Level Block Diagram

                Figure 1-1 on page 22 represents the full set of features in the Stellaris 300 series of devices; not
                all features may be available on the LM3S300 microcontroller.

October 01, 2007               21

                  Preliminary
Architectural Overview
                Figure 1-1. Stellaris 300 Series High-Level Block Diagram

1.4 Functional Overview

                The following sections provide an overview of the features of the LM3S300 microcontroller. The
                page number in parenthesis indicates where that feature is discussed in detail. Ordering and support
                information can be found in "Ordering and Contact Information" on page 377.

22                                                                          October 01, 2007

    Preliminary
                               LM3S300 Microcontroller

1.4.1    ARM CortexTM-M3
1.4.1.1
1.4.1.2  Processor Core (see page 28)

1.4.1.3  All members of the Stellaris product family, including the LM3S300 microcontroller, are designed
         around an ARM CortexTM-M3 processor core. The ARM Cortex-M3 processor provides the core for
1.4.2    a high-performance, low-cost platform that meets the needs of minimal memory implementation,
1.4.2.1  reduced pin count, and low-power consumption, while delivering outstanding computational
         performance and exceptional system response to interrupts.

         "ARM Cortex-M3 Processor Core" on page 28 provides an overview of the ARM core; the core is
         detailed in the ARM CortexTM-M3 Technical Reference Manual.

         System Timer (SysTick)

         Cortex-M3 includes an integrated system timer, SysTick. SysTick provides a simple, 24-bit
         clear-on-write, decrementing, wrap-on-zero counter with a flexible control mechanism. The counter
         can be used in several different ways, for example:

          An RTOS tick timer which fires at a programmable rate (for example, 100 Hz) and invokes a
             SysTick routine.

          A high-speed alarm timer using the system clock.

          A variable rate alarm or signal timer--the duration is range-dependent on the reference clock
             used and the dynamic range of the counter.

          A simple counter. Software can use this to measure time to completion and time used.

          An internal clock source control based on missing/meeting durations. The COUNTFLAG bit-field
             in the control and status register can be used to determine if an action completed within a set
             duration, as part of a dynamic clock management control loop.

         Nested Vectored Interrupt Controller (NVIC)

         The LM3S300 controller includes the ARM Nested Vectored Interrupt Controller (NVIC) on the ARM
         Cortex-M3 core. The NVIC and Cortex-M3 prioritize and handle all exceptions. All exceptions are
         handled in Handler Mode. The processor state is automatically stored to the stack on an exception,
         and automatically restored from the stack at the end of the Interrupt Service Routine (ISR). The
         vector is fetched in parallel to the state saving, which enables efficient interrupt entry. The processor
         supports tail-chaining, which enables back-to-back interrupts to be performed without the overhead
         of state saving and restoration. Software can set eight priority levels on 7 exceptions (system
         handlers) and 21 interrupts.

         "Interrupts" on page 36 provides an overview of the NVIC controller and the interrupt map. Exceptions
         and interrupts are detailed in the ARM CortexTM-M3 Technical Reference Manual.

         Motor Control Peripherals

         To enhance motor control, the LM3S300 controller features Pulse Width Modulation (PWM) outputs.

         PWM (see page 163)

         Pulse width modulation (PWM) is a powerful technique for digitally encoding analog signal levels.
         High-resolution counters are used to generate a square wave, and the duty cycle of the square
         wave is modulated to encode an analog signal. Typical applications include switching power supplies
         and motor control.

October 01, 2007               23

                  Preliminary
Architectural Overview

1.4.3    On the LM3S300, PWM motion control functionality can be achieved through the motion control
1.4.3.1  features of the general-purpose timers (using the CCP pins).

1.4.4    CCP Pins (see page 163)
1.4.4.1  The General-Purpose Timer Module's CCP (Capture Compare PWM) pins are software programmable
         to support a simple PWM mode with a software-programmable output inversion of the PWM signal.

         Analog Peripherals

         For support of analog signals, the LM3S300 microcontroller offers three analog comparators.

         Analog Comparators (see page 326)

         An analog comparator is a peripheral that compares two analog voltages, and provides a logical
         output that signals the comparison result.
         The LM3S300 microcontroller provides three independent integrated analog comparators that can
         be configured to drive an output or generate an interrupt .
         A comparator can compare a test voltage against any one of these voltages:

          An individual external reference voltage

          A shared single external reference voltage

          A shared internal reference voltage

         The comparator can provide its output to a device pin, acting as a replacement for an analog
         comparator on the board, or it can be used to signal the application via interrupts to cause it to start
         capturing a sample sequence.

         Serial Communications Peripherals

         The LM3S300 controller supports both asynchronous and synchronous serial communications with:

          Two fully programmable 16C550-type UARTs

          One SSI module

          One I2C module

         UART (see page 216)

         A Universal Asynchronous Receiver/Transmitter (UART) is an integrated circuit used for RS-232C
         serial communications, containing a transmitter (parallel-to-serial converter) and a receiver
         (serial-to-parallel converter), each clocked separately.
         The LM3S300 controller includes two fully programmable 16C550-type UARTs that support data
         transfer speeds up to 460.8 Kbps. (Although similar in functionality to a 16C550 UART, it is not
         register-compatible.)
         Separate 16x8 transmit (TX) and 16x12 receive (RX) FIFOs reduce CPU interrupt service loading.
         The UART can generate individually masked interrupts from the RX, TX, modem status, and error
         conditions. The module provides a single combined interrupt when any of the interrupts are asserted
         and are unmasked.

24                                   October 01, 2007

                        Preliminary
                               LM3S300 Microcontroller

1.4.4.2  SSI (see page 254)

1.4.4.3  Synchronous Serial Interface (SSI) is a four-wire bi-directional communications interface.

1.4.5    The LM3S300 controller includes one SSI module that provides the functionality for synchronous
1.4.5.1  serial communications with peripheral devices, and can be configured to use the Freescale SPI,
         MICROWIRE, or TI synchronous serial interface frame formats. The size of the data frame is also
         configurable, and can be set between 4 and 16 bits, inclusive.

         The SSI module performs serial-to-parallel conversion on data received from a peripheral device,
         and parallel-to-serial conversion on data transmitted to a peripheral device. The TX and RX paths
         are buffered with internal FIFOs, allowing up to eight 16-bit values to be stored independently.

         The SSI module can be configured as either a master or slave device. As a slave device, the SSI
         module can also be configured to disable its output, which allows a master device to be coupled
         with multiple slave devices.

         The SSI module also includes a programmable bit rate clock divider and prescaler to generate the
         output serial clock derived from the SSI module's input clock. Bit rates are generated based on the
         input clock and the maximum bit rate is determined by the connected peripheral.

         I2C (see page 291)

         The Inter-Integrated Circuit (I2C) bus provides bi-directional data transfer through a two-wire design
         (a serial data line SDA and a serial clock line SCL).

         The I2C bus interfaces to external I2C devices such as serial memory (RAMs and ROMs), networking
         devices, LCDs, tone generators, and so on. The I2C bus may also be used for system testing and
         diagnostic purposes in product development and manufacture.

         The LM3S300 controller includes one I2C module that provides the ability to communicate to other
         IC devices over an I2C bus. The I2C bus supports devices that can both transmit and receive (write
         and read) data.

         Devices on the I2C bus can be designated as either a master or a slave. The I2C module supports
         both sending and receiving data as either a master or a slave, and also supports the simultaneous
         operation as both a master and a slave. The four I2C modes are: Master Transmit, Master Receive,
         Slave Transmit, and Slave Receive.
         A Stellaris I2C module can operate at two speeds: Standard (100 Kbps) and Fast (400 Kbps).

         Both the I2C master and slave can generate interrupts. The I2C master generates interrupts when
         a transmit or receive operation completes (or aborts due to an error). The I2C slave generates
         interrupts when data has been sent or requested by a master.

         System Peripherals

         Programmable GPIOs (see page 119)

         General-purpose input/output (GPIO) pins offer flexibility for a variety of connections.
         The Stellaris GPIO module is composed of five physical GPIO blocks, each corresponding to an
         individual GPIO port. The GPIO module is FiRM-compliant (compliant to the ARM Foundation IP
         for Real-Time Microcontrollers specification) and supports 8-36 programmable input/output pins.
         The number of GPIOs available depends on the peripherals being used (see "Signal Tables" on page
         340 for the signals available to each GPIO pin).

October 01, 2007               25

                  Preliminary
Architectural Overview

1.4.5.2  The GPIO module features programmable interrupt generation as either edge-triggered or
         level-sensitive on all pins, programmable control for GPIO pad configuration, and bit masking in
1.4.5.3  both read and write operations through address lines.

1.4.6    Three Programmable Timers (see page 157)
1.4.6.1
1.4.6.2  Programmable timers can be used to count or time external events that drive the Timer input pins.
         The Stellaris General-Purpose Timer Module (GPTM) contains three GPTM blocks. Each GPTM
         block provides two 16-bit timer/counters that can be configured to operate independently as timers
         or event counters, or configured to operate as one 32-bit timer or one 32-bit Real-Time Clock (RTC).

         When configured in 32-bit mode, a timer can run as a one-shot timer, periodic timer, or Real-Time
         Clock (RTC). When in 16-bit mode, a timer can run as a one-shot timer or periodic timer, and can
         extend its precision by using an 8-bit prescaler. A 16-bit timer can also be configured for event
         capture or Pulse Width Modulation (PWM) generation.

         Watchdog Timer (see page 193)

         A watchdog timer can generate nonmaskable interrupts (NMIs) or a reset when a time-out value is
         reached. The watchdog timer is used to regain control when a system has failed due to a software
         error or to the failure of an external device to respond in the expected way.
         The Stellaris Watchdog Timer module consists of a 32-bit down counter, a programmable load
         register, interrupt generation logic, and a locking register.

         The Watchdog Timer can be configured to generate an interrupt to the controller on its first time-out,
         and to generate a reset signal on its second time-out. Once the Watchdog Timer has been configured,
         the lock register can be written to prevent the timer configuration from being inadvertently altered.

         Memory Peripherals

         The LM3S300 controller offers both single-cycle SRAM and single-cycle Flash memory.

         SRAM (see page 103)

         The LM3S300 static random access memory (SRAM) controller supports 4 KB SRAM. The internal
         SRAM of the Stellaris devices is located at offset 0x0000.0000 of the device memory map. To
         reduce the number of time-consuming read-modify-write (RMW) operations, ARM has introduced
         bit-banding technology in the new Cortex-M3 processor. With a bit-band-enabled processor, certain
         regions in the memory map (SRAM and peripheral space) can use address aliases to access
         individual bits in a single, atomic operation.

         Flash (see page 104)

         The LM3S300 Flash controller supports 16 KB of flash memory. The flash is organized as a set of
         1-KB blocks that can be individually erased. Erasing a block causes the entire contents of the block
         to be reset to all 1s. These blocks are paired into a set of 2-KB blocks that can be individually
         protected. The blocks can be marked as read-only or execute-only, providing different levels of code
         protection. Read-only blocks cannot be erased or programmed, protecting the contents of those
         blocks from being modified. Execute-only blocks cannot be erased or programmed, and can only
         be read by the controller instruction fetch mechanism, protecting the contents of those blocks from
         being read by either the controller or by a debugger.

26                                   October 01, 2007

                        Preliminary
                               LM3S300 Microcontroller

1.4.7    Additional Features
1.4.7.1
1.4.7.2  Memory Map (see page 34)

1.4.7.3  A memory map lists the location of instructions and data in memory. The memory map for the
1.4.8    LM3S300 controller can be found in "Memory Map" on page 34. Register addresses are given as
         a hexadecimal increment, relative to the module's base address as shown in the memory map.

         The ARM CortexTM-M3 Technical Reference Manual provides further information on the memory
         map.

         JTAG TAP Controller (see page 38)

         The Joint Test Action Group (JTAG) port provides a standardized serial interface for controlling the
         Test Access Port (TAP) and associated test logic. The TAP, JTAG instruction register, and JTAG
         data registers can be used to test the interconnects of assembled printed circuit boards, obtain
         manufacturing information on the components, and observe and/or control the inputs and outputs
         of the controller during normal operation. The JTAG port provides a high degree of testability and
         chip-level access at a low cost.

         The JTAG port is comprised of the standard five pins: TRST, TCK, TMS, TDI, and TDO. Data is
         transmitted serially into the controller on TDI and out of the controller on TDO. The interpretation of
         this data is dependent on the current state of the TAP controller. For detailed information on the
         operation of the JTAG port and TAP controller, please refer to the IEEE Standard 1149.1-Test
         Access Port and Boundary-Scan Architecture.

         The Luminary Micro JTAG controller works with the ARM JTAG controller built into the Cortex-M3
         core. This is implemented by multiplexing the TDO outputs from both JTAG controllers. ARM JTAG
         instructions select the ARM TDO output while Luminary Micro JTAG instructions select the Luminary
         Micro TDO outputs. The multiplexer is controlled by the Luminary Micro JTAG controller, which has
         comprehensive programming for the ARM, Luminary Micro, and unimplemented JTAG instructions.

         System Control and Clocks (see page 48)

         System control determines the overall operation of the device. It provides information about the
         device, controls the clocking of the device and individual peripherals, and handles reset detection
         and reporting.

         Hardware Details

         Details on the pins and package can be found in the following sections:

          "Pin Diagram" on page 339

          "Signal Tables" on page 340

          "Operating Characteristics" on page 347

          "Electrical Characteristics" on page 348

          "Package Information" on page 358

October 01, 2007               27

                  Preliminary
ARM Cortex-M3 Processor Core

2 ARM Cortex-M3 Processor Core

                The ARM Cortex-M3 processor provides the core for a high-performance, low-cost platform that
                meets the needs of minimal memory implementation, reduced pin count, and low power consumption,
                while delivering outstanding computational performance and exceptional system response to
                interrupts. Features include:

                 Compact core.

                 Thumb-2 instruction set, delivering the high-performance expected of an ARM core in the memory
                    size usually associated with 8- and 16-bit devices; typically in the range of a few kilobytes of
                    memory for microcontroller class applications.

                 Rapid application execution through Harvard architecture characterized by separate buses for
                    instruction and data.

                 Exceptional interrupt handling, by implementing the register manipulations required for handling
                    an interrupt in hardware.

                 Memory protection unit (MPU) to provide a privileged mode of operation for complex applications.

                 Migration from the ARM7TM processor family for better performance and power efficiency.

                 Full-featured debug solution with a:

                     Serial Wire JTAG Debug Port (SWJ-DP)

                     Flash Patch and Breakpoint (FPB) unit for implementing breakpoints

                     Data Watchpoint and Trigger (DWT) unit for implementing watchpoints, trigger resources,
                         and system profiling

                     Instrumentation Trace Macrocell (ITM) for support of printf style debugging

                     Trace Port Interface Unit (TPIU) for bridging to a Trace Port Analyzer
                The Stellaris family of microcontrollers builds on this core to bring high-performance 32-bit computing
                to cost-sensitive embedded microcontroller applications, such as factory automation and control,
                industrial control power devices, building and home automation, and stepper motors.
                For more information on the ARM Cortex-M3 processor core, see the ARM CortexTM-M3 Technical
                Reference Manual. For information on SWJ-DP, see the ARM CoreSight Technical Reference
                Manual.

28               October 01, 2007

    Preliminary
                                                                            LM3S300 Microcontroller

2.1 Block Diagram

                Figure 2-1. CPU Block Diagram

                          Nested     Interrupts        CM3 Core                ARM                           Serial
                         Vectored      Sleep                                Cortex-M3                         Wire
                         Interrupt    Debug      Instructions Data                                           Output
                         Controller                     Memory                                               Trace
                                                      Protection                                  Trace Port
                                                          Unit                                     Port (SWO)
                                                                                                Interface
                                                                                                   Unit

                                                 Flash                  Data Instrumentation      Private
                                              Patch and             Watchpoint Trace Macrocell  Peripheral
                                              Breakpoint            and Trace
                                                                                                    Bus
                         Private Peripheral                                                     (external)
                                  Bus
                                                                                                  ROM
                               (internal)                                                         Table

                             Adv. High-                                     Adv. Peripheral
                              Perf. Bus                                            Bus
                            Access Port
                                                                     Bus                        I-code bus
                                                                    Matrix                      D-code bus
                                                                                                System bus
       Serial Wire JTAG
           Debug Port

2.2    Functional Description

2.2.1  Important: The ARM CortexTM-M3 Technical Reference Manual describes all the features of an
                       ARM Cortex-M3 in detail. However, these features differ based on the implementation.
                       This section describes the Stellaris implementation.

       Luminary Micro has implemented the ARM Cortex-M3 core as shown in Figure 2-1 on page 29. As
       noted in the ARM CortexTM-M3 Technical Reference Manual, several Cortex-M3 components are
       flexible in their implementation: SW/JTAG-DP, ETM, TPIU, the ROM table, the MPU, and the Nested
       Vectored Interrupt Controller (NVIC). Each of these is addressed in the sections that follow.

       Serial Wire and JTAG Debug

       Luminary Micro has replaced the ARM SW-DP and JTAG-DP with the ARM CoreSightTM-compliant
       Serial Wire JTAG Debug Port (SWJ-DP) interface. This means Chapter 12, "Debug Port," of the
       ARM CortexTM-M3 Technical Reference Manual does not apply to Stellaris devices.

       The SWJ-DP interface combines the SWD and JTAG debug ports into one module. See the
       CoreSightTM Design Kit Technical Reference Manual for details on SWJ-DP.

October 01, 2007                                                                                29

                                               Preliminary
ARM Cortex-M3 Processor Core

2.2.2  Embedded Trace Macrocell (ETM)
2.2.3
       ETM was not implemented in the Stellaris devices. This means Chapters 15 and 16 of the ARM
       CortexTM-M3 Technical Reference Manual can be ignored.

       Trace Port Interface Unit (TPIU)

       The TPIU acts as a bridge between the Cortex-M3 trace data from the ITM, and an off-chip Trace
       Port Analyzer. The Stellaris devices have implemented TPIU as shown in Figure 2-2 on page 30.
       This is similar to the non-ETM version described in the ARM CortexTM-M3 Technical Reference
       Manual, however, SWJ-DP only provides SWV output for the TPIU.

       Figure 2-2. TPIU Block Diagram

       Debug    ATB           Asynchronous FIFO  Trace Out     Serial Wire
        ATB   Interface                          (serializer)  Trace Port
       Slave
        Port                                                     (SWO)

       APB      APB
       Slave  Interface
        Port

2.2.4  ROM Table
2.2.5
2.2.6  The default ROM table was implemented as described in the ARM CortexTM-M3 Technical
       Reference Manual.

       Memory Protection Unit (MPU)

       The Memory Protection Unit (MPU) is included on the LM3S300 controller and supports the standard
       ARMv7 Protected Memory System Architecture (PMSA) model. The MPU provides full support for
       protection regions, overlapping protection regions, access permissions, and exporting memory
       attributes to the system.

       Nested Vectored Interrupt Controller (NVIC)

       The Nested Vectored Interrupt Controller (NVIC):

        Facilitates low-latency exception and interrupt handling

        Controls power management

        Implements system control registers

30                                                             October 01, 2007

                              Preliminary
                               LM3S300 Microcontroller

2.2.6.1  The NVIC supports up to 240 dynamically reprioritizable interrupts each with up to 256 levels of
2.2.6.2  priority. The NVIC and the processor core interface are closely coupled, which enables low latency
         interrupt processing and efficient processing of late arriving interrupts. The NVIC maintains knowledge
         of the stacked (nested) interrupts to enable tail-chaining of interrupts.
         You can only fully access the NVIC from privileged mode, but you can pend interrupts in user-mode
         if you enable the Configuration Control Register (see the ARM CortexTM-M3 Technical Reference
         Manual). Any other user-mode access causes a bus fault.
         All NVIC registers are accessible using byte, halfword, and word unless otherwise stated.
         All NVIC registers and system debug registers are little endian regardless of the endianness state
         of the processor.

         Interrupts

         The ARM CortexTM-M3 Technical Reference Manual describes the maximum number of interrupts
         and interrupt priorities. The LM3S300 microcontroller supports 21 interrupts with eight priority levels.

         System Timer (SysTick)

         Cortex-M3 includes an integrated system timer, SysTick. SysTick provides a simple, 24-bit
         clear-on-write, decrementing, wrap-on-zero counter with a flexible control mechanism. The counter
         can be used in several different ways, for example:

          An RTOS tick timer which fires at a programmable rate (for example, 100 Hz) and invokes a
             SysTick routine.

          A high-speed alarm timer using the system clock.

          A variable rate alarm or signal timer--the duration is range-dependent on the reference clock
             used and the dynamic range of the counter.

          A simple counter. Software can use this to measure time to completion and time used.

          An internal clock source control based on missing/meeting durations. The COUNTFLAG bit-field
             in the control and status register can be used to determine if an action completed within a set
             duration, as part of a dynamic clock management control loop.

         Functional Description
         The timer consists of three registers:

          A control and status counter to configure its clock, enable the counter, enable the SysTick
             interrupt, and determine counter status.

          The reload value for the counter, used to provide the counter's wrap value.

          The current value of the counter.

         A fourth register, the SysTick Calibration Value Register, is not implemented in the Stellaris devices.

         When enabled, the timer counts down from the reload value to zero, reloads (wraps) to the value
         in the SysTick Reload Value register on the next clock edge, then decrements on subsequent clocks.
         Writing a value of zero to the Reload Value register disables the counter on the next wrap. When
         the counter reaches zero, the COUNTFLAG status bit is set. The COUNTFLAG bit clears on reads.

October 01, 2007               31

                  Preliminary
ARM Cortex-M3 Processor Core

    Writing to the Current Value register clears the register and the COUNTFLAG status bit. The write
    does not trigger the SysTick exception logic. On a read, the current value is the value of the register
    at the time the register is accessed.

    If the core is in debug state (halted), the counter will not decrement. The timer is clocked with respect
    to a reference clock. The reference clock can be the core clock or an external clock source.

    SysTick Control and Status Register

    Use the SysTick Control and Status Register to enable the SysTick features. The reset is
    0x0000.0000.

    Bit/Field Name Type Reset Description

    31:17  reserved RO 0 Software should not rely on the value of a reserved bit. To provide compatibility with
                                              future products, the value of a reserved bit should be preserved across a
                                              read-modify-write operation.

    16 COUNTFLAG R/W 0 Returns 1 if timer counted to 0 since last time this was read. Clears on read by
                                                    application. If read by the debugger using the DAP, this bit is cleared on read-only
                                                    if the MasterType bit in the AHB-AP Control Register is set to 0. Otherwise, the
                                                    COUNTFLAG bit is not changed by the debugger read.

    15:3   reserved RO 0 Software should not rely on the value of a reserved bit. To provide compatibility with

                              future products, the value of a reserved bit should be preserved across a

                              read-modify-write operation.

    2 CLKSOURCE R/W 0 0 = external reference clock. (Not implemented for Stellaris microcontrollers.)

                              1 = core clock.

                              If no reference clock is provided, it is held at 1 and so gives the same time as the
                              core clock. The core clock must be at least 2.5 times faster than the reference clock.
                              If it is not, the count values are unpredictable.

    1      TICKINT R/W 0 1 = counting down to 0 pends the SysTick handler.

                              0 = counting down to 0 does not pend the SysTick handler. Software can use the
                              COUNTFLAG to determine if ever counted to 0.

    0      ENABLE R/W 0 1 = counter operates in a multi-shot way. That is, counter loads with the Reload

                              value and then begins counting down. On reaching 0, it sets the COUNTFLAG to

                              1 and optionally pends the SysTick handler, based on TICKINT. It then loads the

                              Reload value again, and begins counting.

                              0 = counter disabled.

    SysTick Reload Value Register

    Use the SysTick Reload Value Register to specify the start value to load into the current value
    register when the counter reaches 0. It can be any value between 1 and 0x00FF.FFFF. A start value
    of 0 is possible, but has no effect because the SysTick interrupt and COUNTFLAG are activated
    when counting from 1 to 0.

    Therefore, as a multi-shot timer, repeated over and over, it fires every N+1 clock pulse, where N is
    any value from 1 to 0x00FF.FFFF. So, if the tick interrupt is required every 100 clock pulses, 99
    must be written into the RELOAD. If a new value is written on each tick interrupt, so treated as single
    shot, then the actual count down must be written. For example, if a tick is next required after 400
    clock pulses, 400 must be written into the RELOAD.

    Bit/Field Name Type Reset Description

    31:24 reserved RO         0 Software should not rely on the value of a reserved bit. To provide compatibility with
                                    future products, the value of a reserved bit should be preserved across a read-modify-write
                                    operation.

32                                                                          October 01, 2007

                              Preliminary
                                                            LM3S300 Microcontroller

Bit/Field Name Type Reset Description
   23:0 RELOAD W1C - Value to load into the SysTick Current Value Register when the counter reaches 0.

SysTick Current Value Register
Use the SysTick Current Value Register to find the current value in the register.

Bit/Field Name Type Reset Description

31:24 reserved RO  0 Software should not rely on the value of a reserved bit. To provide compatibility with
                         future products, the value of a reserved bit should be preserved across a
                         read-modify-write operation.

23:0 CURRENT W1C - Current value at the time the register is accessed. No read-modify-write protection is
                                             provided, so change with care.

                   This register is write-clear. Writing to it with any value clears the register to 0. Clearing
                   this register also clears the COUNTFLAG bit of the SysTick Control and Status Register.

SysTick Calibration Value Register
The SysTick Calibration Value register is not implemented.

October 01, 2007                                                                                        33

                   Preliminary
Memory Map

3 Memory Map

       The memory map for the LM3S300 controller is provided in Table 3-1 on page 34.

       In this manual, register addresses are given as a hexadecimal increment, relative to the module's
       base address as shown in the memory map. See also Chapter 4, "Memory Map" in the ARM
       CortexTM-M3 Technical Reference Manual.

       Important: In Table 3-1 on page 34, addresses not listed are reserved.

Table 3-1. Memory Mapa

Start                   End           Description                                          For details on
                                                                                           registers, see
Memory                  0x0000.3FFF   On-chip flash b                                      page ...
0x0000.0000             0x2000.0FFF   Bit-banded on-chip SRAMc
0x2000.0000             0x200F.FFFF   Reserved                                             108
0x2010.0000             0x22001.FFFF  Bit-band alias of 0x2000.0000 through 0x200F.FFFF    108
0x2200.0000             0x23FF.FFFF   Reserved                                             -
0x2202.0000                                                                                103
FiRM Peripherals        0x4000.0FFF                                                        -
0x4000.0000             0x4000.4FFF
0x4000.4000             0x4000.5FFF   Watchdog timer                                       195
0x4000.5000             0x4000.6FFF
0x4000.6000             0x4000.7FFF   GPIO Port A                                          125
0x4000.7000             0x4000.8FFF
0x4000.8000             0x4000.CFFF   GPIO Port B                                          125
0x4000.C000             0x4000.DFFF
0x4000.D000                           GPIO Port C                                          125
Peripherals             0x4002.07FF
0x4002.0000             0x4002.0FFF   GPIO Port D                                          125
0x4002.0800             0x4002.7FFF
0x4002.4000             0x4003.0FFF   SSI0                                                 265
0x4003.0000             0x4003.1FFF
0x4003.1000             0x4003.2FFF   UART0                                                222
0x4003.2000             0x4003.CFFF
0x4003.C000             0x400F.DFFF   UART1                                                222
0x400F.D000             0x400F.FFFF
0x400F.E000             0x43FF.FFFF   I2C Master 0                                         304
0x4200.0000
Private Peripheral Bus                I2C Slave 0                                          317

                                      GPIO Port E                                          125

                                      Timer0                                               168

                                      Timer1                                               168

                                      Timer2                                               168

                                      Analog Comparators                                   326

                                      Flash control                                        108

                                      System control                                       56

                                      Bit-banded alias of 0x4000.0000 through 0x400F.FFFF  -

34                                                                                         October 01, 2007

                                      Preliminary
                                                                                                              LM3S300 Microcontroller

Start             End                                            Description                                  For details on
                                                                                                              registers, see
0xE000.0000       0xE000.0FFF                                    Instrumentation Trace Macrocell (ITM)        page ...
                                                                                                              ARM
0xE000.1000       0xE000.1FFF                                    Data Watchpoint and Trace (DWT)              CortexTM-M3
                                                                                                              Technical
0xE000.2000       0xE000.2FFF                                    Flash Patch and Breakpoint (FPB)             Reference
                                                                                                              Manual
0xE000.3000       0xE000.DFFF                                    Reserved
                                                                                                              -
0xE000.E000       0xE000.EFFF                                    Nested Vectored Interrupt Controller (NVIC)  -
                                                                                                              -
0xE000.F000       0xE003.FFFF                                    Reserved

0xE004.0000       0xE004.0FFF                                    Trace Port Interface Unit (TPIU)

0xE004.1000       0xE004.1FFF                                    Reserved

0xE004.2000       0xE00F.FFFF                                    Reserved

0xE010.0000       0xFFFF.FFFF                                    Reserved for vendor peripherals

a. All reserved space returns a bus fault when read or written.
b. The unavailable flash will bus fault throughout this range.
c. The unavailable SRAM will bus fault throughout this range.

October 01, 2007                                                                                              35

                                                                 Preliminary
Interrupts

4 Interrupts

            The ARM Cortex-M3 processor and the Nested Vectored Interrupt Controller (NVIC) prioritize and
            handle all exceptions. All exceptions are handled in Handler Mode. The processor state is
            automatically stored to the stack on an exception, and automatically restored from the stack at the
            end of the Interrupt Service Routine (ISR). The vector is fetched in parallel to the state saving, which
            enables efficient interrupt entry. The processor supports tail-chaining, which enables back-to-back
            interrupts to be performed without the overhead of state saving and restoration.

            Table 4-1 on page 36 lists all the exceptions. Software can set eight priority levels on seven of these
            exceptions (system handlers) as well as on 21 interrupts (listed in Table 4-2 on page 37).

            Priorities on the system handlers are set with the NVIC System Handler Priority registers. Interrupts
            are enabled through the NVIC Interrupt Set Enable register and prioritized with the NVIC Interrupt
            Priority registers. You can also group priorities by splitting priority levels into pre-emption priorities
            and subpriorities. All the interrupt registers are described in Chapter 8, "Nested Vectored Interrupt
            Controller" in the ARM CortexTM-M3 Technical Reference Manual.

            Internally, the highest user-settable priority (0) is treated as fourth priority, after a Reset, NMI, and
            a Hard Fault. Note that 0 is the default priority for all the settable priorities.

            If you assign the same priority level to two or more interrupts, their hardware priority (the lower the
            position number) determines the order in which the processor activates them. For example, if both
            GPIO Port A and GPIO Port B are priority level 1, then GPIO Port A has higher priority.

            See Chapter 5, "Exceptions" and Chapter 8, "Nested Vectored Interrupt Controller" in the ARM
            CortexTM-M3 Technical Reference Manual for more information on exceptions and interrupts.

            Note: In Table 4-2 on page 37 interrupts not listed are reserved.

            Table 4-1. Exception Types

            Exception Type     Position Prioritya Description

            -                  0        -         Stack top is loaded from first entry of vector table on reset.
            Reset
                               1        -3 (highest) Invoked on power up and warm reset. On first instruction, drops to lowest
            Non-Maskable
            Interrupt (NMI)                       priority (and then is called the base level of activation). This is

                                                  asynchronous.

                               2        -2        Cannot be stopped or preempted by any exception but reset. This is

                                                  asynchronous.

            Hard Fault         3           -1     An NMI is only producible by software, using the NVIC Interrupt Control
                                        settable  State register.
            Memory Management  4
                                                  All classes of Fault, when the fault cannot activate due to priority or the
                                                  configurable fault handler has been disabled. This is synchronous.

                                                  MPU mismatch, including access violation and no match. This is
                                                  synchronous.

                                                  The priority of this exception can be changed.

            Bus Fault          5        settable Pre-fetch fault, memory access fault, and other address/memory related

                                                  faults. This is synchronous when precise and asynchronous when

                                                  imprecise.

            Usage Fault          6      settable  You can enable or disable this fault.
                                                  Usage fault, such as undefined instruction executed or illegal state
            -                  7-10         -     transition attempt. This is synchronous.
            SVCall              11      settable  Reserved.
                                                  System service call with SVC instruction. This is synchronous.

36                                                                                                October 01, 2007

                                            Preliminary
                                                               LM3S300 Microcontroller

Exception Type           Position Prioritya Description

Debug Monitor            12      settable Debug monitor (when not halting). This is synchronous, but only active

                                        when enabled. It does not activate if lower priority than the current

                                        activation.

-                        13      -      Reserved.

PendSV                   14      settable Pendable request for system service. This is asynchronous and only

                                        pended by software.

SysTick                  15      settable System tick timer has fired. This is asynchronous.

Interrupts               16 and  settable Asserted from outside the ARM Cortex-M3 core and fed through the NVIC
                         above                 (prioritized). These are all asynchronous. Table 4-2 on page 37 lists the
                                               interrupts on the LM3S300 controller.

a. 0 is the default priority for all the settable priorities.

Table 4-2. Interrupts

   Interrupt (Bit in Interrupt Registers) Description

                  0              GPIO Port A

                  1              GPIO Port B

                  2              GPIO Port C

                  3              GPIO Port D

                  4              GPIO Port E

                  5              UART0

                  6              UART1

                  7              SSI0

                  8              I2C0

                  18             Watchdog timer

                  19             Timer0 A

                  20             Timer0 B

                  21             Timer1 A

                  22             Timer1 B

                  23             Timer2 A

                  24             Timer2 B

                  25             Analog Comparator 0

                  26             Analog Comparator 1

                  27             Analog Comparator 2

                  28             System Control

                  29             Flash Control

                  30-31          Reserved

October 01, 2007                                                                                               37

                                       Preliminary
JTAG Interface

5 JTAG Interface

                The Joint Test Action Group (JTAG) port is an IEEE standard that defines a Test Access Port and
                Boundary Scan Architecture for digital integrated circuits and provides a standardized serial interface
                for controlling the associated test logic. The TAP, Instruction Register (IR), and Data Registers (DR)
                can be used to test the interconnections of assembled printed circuit boards and obtain manufacturing
                information on the components. The JTAG Port also provides a means of accessing and controlling
                design-for-test features such as I/O pin observation and control, scan testing, and debugging.
                The JTAG port is comprised of the standard five pins: TRST, TCK, TMS, TDI, and TDO. Data is
                transmitted serially into the controller on TDI and out of the controller on TDO. The interpretation of
                this data is dependent on the current state of the TAP controller. For detailed information on the
                operation of the JTAG port and TAP controller, please refer to the IEEE Standard 1149.1-Test
                Access Port and Boundary-Scan Architecture.
                The Luminary Micro JTAG controller works with the ARM JTAG controller built into the Cortex-M3
                core. This is implemented by multiplexing the TDO outputs from both JTAG controllers. ARM JTAG
                instructions select the ARM TDO output while Luminary Micro JTAG instructions select the Luminary
                Micro TDO outputs. The multiplexer is controlled by the Luminary Micro JTAG controller, which has
                comprehensive programming for the ARM, Luminary Micro, and unimplemented JTAG instructions.
                The JTAG module has the following features:

                 IEEE 1149.1-1990 compatible Test Access Port (TAP) controller

                 Four-bit Instruction Register (IR) chain for storing JTAG instructions

                 IEEE standard instructions:

                     BYPASS instruction

                     IDCODE instruction

                     SAMPLE/PRELOAD instruction

                     EXTEST instruction

                     INTEST instruction

                 ARM additional instructions:

                     APACC instruction

                     DPACC instruction

                     ABORT instruction

                 Integrated ARM Serial Wire Debug (SWD)

                See the ARM CortexTM-M3 Technical Reference Manual for more information on the ARM JTAG
                controller.

38               October 01, 2007

    Preliminary
                                                       LM3S300 Microcontroller

5.1 Block Diagram

                Figure 5-1. JTAG Module Block Diagram

TRST              TAP Controller
TCK
TMS

TDI               Instruction Register (IR)

                  BYPASS Data Register                    TDO
                  Boundary Scan Data Register
                  IDCODE Data Register                 Cortex-M3
                  ABORT Data Register                  Debug
                  DPACC Data Register                  Port
                  APACC Data Register

5.2 Functional Description

                A high-level conceptual drawing of the JTAG module is shown in Figure 5-1 on page 39. The JTAG
                module is composed of the Test Access Port (TAP) controller and serial shift chains with parallel
                update registers. The TAP controller is a simple state machine controlled by the TRST, TCK and
                TMS inputs. The current state of the TAP controller depends on the current value of TRST and the
                sequence of values captured on TMS at the rising edge of TCK. The TAP controller determines when
                the serial shift chains capture new data, shift data from TDI towards TDO, and update the parallel
                load registers. The current state of the TAP controller also determines whether the Instruction
                Register (IR) chain or one of the Data Register (DR) chains is being accessed.

                The serial shift chains with parallel load registers are comprised of a single Instruction Register (IR)
                chain and multiple Data Register (DR) chains. The current instruction loaded in the parallel load
                register determines which DR chain is captured, shifted, or updated during the sequencing of the
                TAP controller.

                Some instructions, like EXTEST and INTEST, operate on data currently in a DR chain and do not
                capture, shift, or update any of the chains. Instructions that are not implemented decode to the
                BYPASS instruction to ensure that the serial path between TDI and TDO is always connected (see
                Table 5-2 on page 44 for a list of implemented instructions).

                See "JTAG and Boundary Scan" on page 353 for JTAG timing diagrams.

October 01, 2007                                       39

                  Preliminary
JTAG Interface

5.2.1    JTAG Interface Pins

         The JTAG interface consists of five standard pins: TRST, TCK, TMS, TDI, and TDO. These pins and
         their associated reset state are given in Table 5-1 on page 40. Detailed information on each pin
         follows.

         Table 5-1. JTAG Port Pins Reset State

                Pin Name  Data Direction  Internal Pull-Up Internal Pull-Down  Drive Strength  Drive Value
                   TRST         Input                                                 N/A           N/A
                    TCK         Input     Enabled      Disabled                       N/A           N/A
                    TMS         Input                                                 N/A           N/A
                    TDI         Input     Enabled      Disabled                       N/A           N/A
                    TDO        Output
                                          Enabled      Disabled                  2-mA driver      High-Z

                                          Enabled      Disabled

                                          Enabled      Disabled

5.2.1.1  Test Reset Input (TRST)
5.2.1.2
5.2.1.3  The TRST pin is an asynchronous active Low input signal for initializing and resetting the JTAG TAP
         controller and associated JTAG circuitry. When TRST is asserted, the TAP controller resets to the
         Test-Logic-Reset state and remains there while TRST is asserted. When the TAP controller enters
         the Test-Logic-Reset state, the JTAG Instruction Register (IR) resets to the default instruction,
         IDCODE.

         By default, the internal pull-up resistor on the TRST pin is enabled after reset. Changes to the pull-up
         resistor settings on GPIO Port B should ensure that the internal pull-up resistor remains enabled
         on PB7/TRST; otherwise JTAG communication could be lost.

         Test Clock Input (TCK)

         The TCK pin is the clock for the JTAG module. This clock is provided so the test logic can operate
         independently of any other system clocks. In addition, it ensures that multiple JTAG TAP controllers
         that are daisy-chained together can synchronously communicate serial test data between
         components. During normal operation, TCK is driven by a free-running clock with a nominal 50%
         duty cycle. When necessary, TCK can be stopped at 0 or 1 for extended periods of time. While TCK
         is stopped at 0 or 1, the state of the TAP controller does not change and data in the JTAG Instruction
         and Data Registers is not lost.

         By default, the internal pull-up resistor on the TCK pin is enabled after reset. This assures that no
         clocking occurs if the pin is not driven from an external source. The internal pull-up and pull-down
         resistors can be turned off to save internal power as long as the TCK pin is constantly being driven
         by an external source.

         Test Mode Select (TMS)

         The TMS pin selects the next state of the JTAG TAP controller. TMS is sampled on the rising edge
         of TCK. Depending on the current TAP state and the sampled value of TMS, the next state is entered.
         Because the TMS pin is sampled on the rising edge of TCK, the IEEE Standard 1149.1 expects the
         value on TMS to change on the falling edge of TCK.

         Holding TMS high for five consecutive TCK cycles drives the TAP controller state machine to the
         Test-Logic-Reset state. When the TAP controller enters the Test-Logic-Reset state, the JTAG
         Instruction Register (IR) resets to the default instruction, IDCODE. Therefore, this sequence can
         be used as a reset mechanism, similar to asserting TRST. The JTAG Test Access Port state machine
         can be seen in its entirety in Figure 5-2 on page 42.

40                                                                                             October 01, 2007

                                          Preliminary
                               LM3S300 Microcontroller

5.2.1.4  By default, the internal pull-up resistor on the TMS pin is enabled after reset. Changes to the pull-up
5.2.1.5  resistor settings on GPIO Port C should ensure that the internal pull-up resistor remains enabled
5.2.2    on PC1/TMS; otherwise JTAG communication could be lost.

         Test Data Input (TDI)

         The TDI pin provides a stream of serial information to the IR chain and the DR chains. TDI is
         sampled on the rising edge of TCK and, depending on the current TAP state and the current
         instruction, presents this data to the proper shift register chain. Because the TDI pin is sampled on
         the rising edge of TCK, the IEEE Standard 1149.1 expects the value on TDI to change on the falling
         edge of TCK.

         By default, the internal pull-up resistor on the TDI pin is enabled after reset. Changes to the pull-up
         resistor settings on GPIO Port C should ensure that the internal pull-up resistor remains enabled
         on PC2/TDI; otherwise JTAG communication could be lost.

         Test Data Output (TDO)

         The TDO pin provides an output stream of serial information from the IR chain or the DR chains.
         The value of TDO depends on the current TAP state, the current instruction, and the data in the
         chain being accessed. In order to save power when the JTAG port is not being used, the TDO pin
         is placed in an inactive drive state when not actively shifting out data. Because TDO can be connected
         to the TDI of another controller in a daisy-chain configuration, the IEEE Standard 1149.1 expects
         the value on TDO to change on the falling edge of TCK.

         By default, the internal pull-up resistor on the TDO pin is enabled after reset. This assures that the
         pin remains at a constant logic level when the JTAG port is not being used. The internal pull-up and
         pull-down resistors can be turned off to save internal power if a High-Z output value is acceptable
         during certain TAP controller states.

         JTAG TAP Controller

         The JTAG TAP controller state machine is shown in Figure 5-2 on page 42. The TAP controller
         state machine is reset to the Test-Logic-Reset state on the assertion of a Power-On-Reset (POR)
         or the assertion of TRST. Asserting the correct sequence on the TMS pin allows the JTAG module
         to shift in new instructions, shift in data, or idle during extended testing sequences. For detailed
         information on the function of the TAP controller and the operations that occur in each state, please
         refer to IEEE Standard 1149.1.

October 01, 2007               41

                  Preliminary
JTAG Interface

       Figure 5-2. Test Access Port State Machine

                Test Logic Reset

       1        0

           Run Test Idle           Select DR Scan           Select IR Scan
                                1                        1                       1

       0                                      0                       0

                                        Capture DR                Capture IR
                                   1                        1

                                                 0                        0

                                   Shift DR                 Shift IR

                                                   1  0     1                 0

                                   Exit 1 DR                Exit 1 IR
                                                     1                       1

                                          0                       0

                                   Pause DR                 Pause IR

                                                   1  0     1                 0

                                          Exit 2 DR                Exit 2 IR
                                   0                        0

                                                 1                        1

                                   Update DR                Update IR
                                       10                       10

5.2.3  Shift Registers
5.2.4
       The Shift Registers consist of a serial shift register chain and a parallel load register. The serial shift
       register chain samples specific information during the TAP controller's CAPTURE states and allows
       this information to be shifted out of TDO during the TAP controller's SHIFT states. While the sampled
       data is being shifted out of the chain on TDO, new data is being shifted into the serial shift register
       on TDI. This new data is stored in the parallel load register during the TAP controller's UPDATE
       states. Each of the shift registers is discussed in detail in "Register Descriptions" on page 44.

       Operational Considerations

       There are certain operational considerations when using the JTAG module. Because the JTAG pins
       can be programmed to be GPIOs, board configuration and reset conditions on these pins must be
       considered. In addition, because the JTAG module has integrated ARM Serial Wire Debug, the
       method for switching between these two operational modes is described below.

42                                                          October 01, 2007

                                   Preliminary
                               LM3S300 Microcontroller

5.2.4.1  GPIO Functionality

         When the controller is reset with either a POR or RST, the JTAG port pins default to their JTAG
         configurations. The default configuration includes enabling the pull-up resistors (setting GPIOPUR
         to 1 for PB7 and PC[3:0]) and enabling the alternate hardware function (setting GPIOAFSEL to
         1 for PB7 and PC[3:0]) on the JTAG pins.

         It is possible for software to configure these pins as GPIOs after reset by writing 0s to PB7 and
         PC[3:0] in the GPIOAFSEL register. If the user does not require the JTAG port for debugging or
         board-level testing, this provides five more GPIOs for use in the design.

         Caution If the JTAG pins are used as GPIOs in a design, PB7 and PC2 cannot have external pull-down
         resistors connected to both of them at the same time. If both pins are pulled Low during reset, the
         controller has unpredictable behavior. If this happens, remove one or both of the pull-down resistors,
         and apply RST or power-cycle the part.

         In addition, it is possible to create a software sequence that prevents the debugger from connecting to
         the Stellaris microcontroller. If the program code loaded into flash immediately changes the JTAG
         pins to their GPIO functionality, the debugger may not have enough time to connect and halt the
         controller before the JTAG pin functionality switches. This may lock the debugger out of the part. This
         can be avoided with a software routine that restores JTAG functionality based on an external or software
         trigger.

5.2.4.2  ARM Serial Wire Debug (SWD)

         In order to seamlessly integrate the ARM Serial Wire Debug (SWD) functionality, a serial-wire
         debugger must be able to connect to the Cortex-M3 core without having to perform, or have any
         knowledge of, JTAG cycles. This is accomplished with a SWD preamble that is issued before the
         SWD session begins.

         The preamble used to enable the SWD interface of the SWJ-DP module starts with the TAP controller
         in the Test-Logic-Reset state. From here, the preamble sequences the TAP controller through the
         following states: Run Test Idle, Select DR, Select IR, Capture IR, Exit1 IR, Update IR, Run Test
         Idle, Select DR, Select IR, Capture IR, Exit1 IR, Update IR, Run Test Idle, Select DR, Select IR,
         and Test-Logic-Reset states.

         Stepping through the JTAG TAP Instruction Register (IR) load sequences of the TAP state machine
         twice without shifting in a new instruction enables the SWD interface and disables the JTAG interface.
         For more information on this operation and the SWD interface, see the ARM CortexTM-M3 Technical
         Reference Manual and the ARM CoreSight Technical Reference Manual.

         Because this sequence is a valid series of JTAG operations that could be issued, the ARM JTAG
         TAP controller is not fully compliant to the IEEE Standard 1149.1. This is the only instance where
         the ARM JTAG TAP controller does not meet full compliance with the specification. Due to the low
         probability of this sequence occurring during normal operation of the TAP controller, it should not
         affect normal performance of the JTAG interface.

5.3 Initialization and Configuration

                After a Power-On-Reset or an external reset (RST), the JTAG pins are automatically configured for
                JTAG communication. No user-defined initialization or configuration is needed. However, if the user
                application changes these pins to their GPIO function, they must be configured back to their JTAG
                functionality before JTAG communication can be restored. This is done by enabling the five JTAG
                pins (PB7 and PC[3:0]) for their alternate function using the GPIOAFSEL register.

October 01, 2007               43

                  Preliminary
JTAG Interface

5.4      Register Descriptions

5.4.1    There are no APB-accessible registers in the JTAG TAP Controller or Shift Register chains. The
         registers within the JTAG controller are all accessed serially through the TAP Controller. The registers
         can be broken down into two main categories: Instruction Registers and Data Registers.

         Instruction Register (IR)

         The JTAG TAP Instruction Register (IR) is a four-bit serial scan chain with a parallel load register
         connected between the JTAG TDI and TDO pins. When the TAP Controller is placed in the correct
         states, bits can be shifted into the Instruction Register. Once these bits have been shifted into the
         chain and updated, they are interpreted as the current instruction. The decode of the Instruction
         Register bits is shown in Table 5-2 on page 44. A detailed explanation of each instruction, along
         with its associated Data Register, follows.

         Table 5-2. JTAG Instruction Register Commands

         IR[3:0]      Instruction  Description

                0000  EXTEST       Drives the values preloaded into the Boundary Scan Chain by the SAMPLE/PRELOAD
                                   instruction onto the pads.

                0001  INTEST       Drives the values preloaded into the Boundary Scan Chain by the SAMPLE/PRELOAD
                                   instruction into the controller.

                0010 SAMPLE / PRELOAD Captures the current I/O values and shifts the sampled values out of the Boundary Scan
                                                           Chain while new preload data is shifted in.

                1000  ABORT        Shifts data into the ARM Debug Port Abort Register.

                1010  DPACC        Shifts data into and out of the ARM DP Access Register.

                1011  APACC        Shifts data into and out of the ARM AC Access Register.

                1110  IDCODE       Loads manufacturing information defined by the IEEE Standard 1149.1 into the IDCODE
                                   chain and shifts it out.

                1111  BYPASS       Connects TDI to TDO through a single Shift Register chain.

         All Others   Reserved     Defaults to the BYPASS instruction to ensure that TDI is always connected to TDO.

5.4.1.1  EXTEST Instruction
5.4.1.2
         The EXTEST instruction does not have an associated Data Register chain. The EXTEST instruction
         uses the data that has been preloaded into the Boundary Scan Data Register using the
         SAMPLE/PRELOAD instruction. When the EXTEST instruction is present in the Instruction Register,
         the preloaded data in the Boundary Scan Data Register associated with the outputs and output
         enables are used to drive the GPIO pads rather than the signals coming from the core. This allows
         tests to be developed that drive known values out of the controller, which can be used to verify
         connectivity.

         INTEST Instruction

         The INTEST instruction does not have an associated Data Register chain. The INTEST instruction
         uses the data that has been preloaded into the Boundary Scan Data Register using the
         SAMPLE/PRELOAD instruction. When the INTEST instruction is present in the Instruction Register,
         the preloaded data in the Boundary Scan Data Register associated with the inputs are used to drive
         the signals going into the core rather than the signals coming from the GPIO pads. This allows tests
         to be developed that drive known values into the controller, which can be used for testing. It is
         important to note that although the RST input pin is on the Boundary Scan Data Register chain, it
         is only observable.

44                                                                                             October 01, 2007

                                   Preliminary
                               LM3S300 Microcontroller

5.4.1.3  SAMPLE/PRELOAD Instruction

5.4.1.4  The SAMPLE/PRELOAD instruction connects the Boundary Scan Data Register chain between
5.4.1.5  TDI and TDO. This instruction samples the current state of the pad pins for observation and preloads
5.4.1.6  new test data. Each GPIO pad has an associated input, output, and output enable signal. When the
5.4.1.7  TAP controller enters the Capture DR state during this instruction, the input, output, and output-enable
         signals to each of the GPIO pads are captured. These samples are serially shifted out of TDO while
         the TAP controller is in the Shift DR state and can be used for observation or comparison in various
         tests.

         While these samples of the inputs, outputs, and output enables are being shifted out of the Boundary
         Scan Data Register, new data is being shifted into the Boundary Scan Data Register from TDI.
         Once the new data has been shifted into the Boundary Scan Data Register, the data is saved in the
         parallel load registers when the TAP controller enters the Update DR state. This update of the
         parallel load register preloads data into the Boundary Scan Data Register that is associated with
         each input, output, and output enable. This preloaded data can be used with the EXTEST and
         INTEST instructions to drive data into or out of the controller. Please see "Boundary Scan Data
         Register" on page 46 for more information.

         ABORT Instruction

         The ABORT instruction connects the associated ABORT Data Register chain between TDI and
         TDO. This instruction provides read and write access to the ABORT Register of the ARM Debug
         Access Port (DAP). Shifting the proper data into this Data Register clears various error bits or initiates
         a DAP abort of a previous request. Please see the "ABORT Data Register" on page 47 for more
         information.

         DPACC Instruction

         The DPACC instruction connects the associated DPACC Data Register chain between TDI and
         TDO. This instruction provides read and write access to the DPACC Register of the ARM Debug
         Access Port (DAP). Shifting the proper data into this register and reading the data output from this
         register allows read and write access to the ARM debug and status registers. Please see "DPACC
         Data Register" on page 47 for more information.

         APACC Instruction

         The APACC instruction connects the associated APACC Data Register chain between TDI and
         TDO. This instruction provides read and write access to the APACC Register of the ARM Debug
         Access Port (DAP). Shifting the proper data into this register and reading the data output from this
         register allows read and write access to internal components and buses through the Debug Port.
         Please see "APACC Data Register" on page 47 for more information.

         IDCODE Instruction

         The IDCODE instruction connects the associated IDCODE Data Register chain between TDI and
         TDO. This instruction provides information on the manufacturer, part number, and version of the
         ARM core. This information can be used by testing equipment and debuggers to automatically
         configure their input and output data streams. IDCODE is the default instruction that is loaded into
         the JTAG Instruction Register when a power-on-reset (POR) is asserted, TRST is asserted, or the
         Test-Logic-Reset state is entered. Please see "IDCODE Data Register" on page 46 for more
         information.

October 01, 2007               45

                  Preliminary
JTAG Interface

5.4.1.8  BYPASS Instruction

         The BYPASS instruction connects the associated BYPASS Data Register chain between TDI and
         TDO. This instruction is used to create a minimum length serial path between the TDI and TDO ports.
         The BYPASS Data Register is a single-bit shift register. This instruction improves test efficiency by
         allowing components that are not needed for a specific test to be bypassed in the JTAG scan chain
         by loading them with the BYPASS instruction. Please see "BYPASS Data Register" on page 46 for
         more information.

5.4.2    Data Registers
5.4.2.1
         The JTAG module contains six Data Registers. These include: IDCODE, BYPASS, Boundary Scan,
         APACC, DPACC, and ABORT serial Data Register chains. Each of these Data Registers is discussed
         in the following sections.

         IDCODE Data Register

         The format for the 32-bit IDCODE Data Register defined by the IEEE Standard 1149.1 is shown in
         Figure 5-3 on page 46. The standard requires that every JTAG-compliant device implement either
         the IDCODE instruction or the BYPASS instruction as the default instruction. The LSB of the IDCODE
         Data Register is defined to be a 1 to distinguish it from the BYPASS instruction, which has an LSB
         of 0. This allows auto configuration test tools to determine which instruction is the default instruction.

         The major uses of the JTAG port are for manufacturer testing of component assembly, and program
         development and debug. To facilitate the use of auto-configuration debug tools, the IDCODE
         instruction outputs a value of 0x1BA00477. This value indicates an ARM Cortex-M3, Version 1
         processor. This allows the debuggers to automatically configure themselves to work correctly with
         the Cortex-M3 during debug.

         Figure 5-3. IDCODE Register Format

5.4.2.2  BYPASS Data Register

         The format for the 1-bit BYPASS Data Register defined by the IEEE Standard 1149.1 is shown in
         Figure 5-4 on page 46. The standard requires that every JTAG-compliant device implement either
         the BYPASS instruction or the IDCODE instruction as the default instruction. The LSB of the BYPASS
         Data Register is defined to be a 0 to distinguish it from the IDCODE instruction, which has an LSB
         of 1. This allows auto configuration test tools to determine which instruction is the default instruction.

         Figure 5-4. BYPASS Register Format

5.4.2.3  Boundary Scan Data Register

         The format of the Boundary Scan Data Register is shown in Figure 5-5 on page 47. Each GPIO
         pin, in a counter-clockwise direction from the JTAG port pins, is included in the Boundary Scan Data
         Register. Each GPIO pin has three associated digital signals that are included in the chain. These

46                                           October 01, 2007

                Preliminary
                                                                                   LM3S300 Microcontroller

         signals are input, output, and output enable, and are arranged in that order as can be seen in the
         figure. In addition to the GPIO pins, the controller reset pin, RST, is included in the chain. Because
         the reset pin is always an input, only the input signal is included in the Data Register chain.

         When the Boundary Scan Data Register is accessed with the SAMPLE/PRELOAD instruction, the
         input, output, and output enable from each digital pad are sampled and then shifted out of the chain
         to be verified. The sampling of these values occurs on the rising edge of TCK in the Capture DR
         state of the TAP controller. While the sampled data is being shifted out of the Boundary Scan chain
         in the Shift DR state of the TAP controller, new data can be preloaded into the chain for use with
         the EXTEST and INTEST instructions. These instructions either force data out of the controller, with
         the EXTEST instruction, or into the controller, with the INTEST instruction.

         Figure 5-5. Boundary Scan Register Format

         TDI      I  O         O  ... I            O       O    I  I  O         O  ... I            O       O TDO
                  N  U         E                N  U       E    N  N  U         E                N  U       E
                     T                             T                  T                             T

                     GPIO PB6                      GPIO m     RST     GPIO m+1                      GPIO n

5.4.2.4  For detailed information on the order of the input, output, and output enable bits for each of the
5.4.2.5  GPIO ports, please refer to the Stellaris Family Boundary Scan Description Language (BSDL) files,
5.4.2.6  downloadable from www.luminarymicro.com.

         APACC Data Register

         The format for the 35-bit APACC Data Register defined by ARM is described in the ARM
         CortexTM-M3 Technical Reference Manual.

         DPACC Data Register

         The format for the 35-bit DPACC Data Register defined by ARM is described in the ARM
         CortexTM-M3 Technical Reference Manual.

         ABORT Data Register

         The format for the 35-bit ABORT Data Register defined by ARM is described in the ARM
         CortexTM-M3 Technical Reference Manual.

October 01, 2007                                                                                                   47

                                                   Preliminary
System Control

6 System Control

6.1      System control determines the overall operation of the device. It provides information about the
         device, controls the clocking to the core and individual peripherals, and handles reset detection and
6.1.1    reporting.
6.1.2
6.1.2.1  Functional Description

6.1.2.2  The System Control module provides the following capabilities:

          Device identification, see "Device Identification" on page 48

          Local control, such as reset (see "Reset Control" on page 48), power (see "Power
             Control" on page 51) and clock control (see "Clock Control" on page 51)

          System control (Run, Sleep, and Deep-Sleep modes), see "System Control" on page 54

         Device Identification

         Seven read-only registers provide software with information on the microcontroller, such as version,
         part number, SRAM size, flash size, and other features. See the DID0, DID1, and DC0-DC4 registers.

         Reset Control

         This section discusses aspects of hardware functions during reset as well as system software
         requirements following the reset sequence.

         Reset Sources

         The controller has six sources of reset:

         1. External reset input pin (RST) assertion, see "RST Pin Assertion" on page 48.

         2. Power-on reset (POR), see "Power-On Reset (POR)" on page 49.

         3. Internal brown-out (BOR) detector, see "Brown-Out Reset (BOR)" on page 49.

         4. Software-initiated reset (with the software reset registers), see "Software Reset" on page 50.

         5. A watchdog timer reset condition violation, see "Watchdog Timer Reset" on page 51.

         6. Internal low drop-out (LDO) regulator output

         After a reset, the Reset Cause (RESC) register is set with the reset cause. The bits in this register
         are sticky and maintain their state across multiple reset sequences,except when an external reset
         is the cause, and then all the other bits in the RESC register are cleared.
         Note: The main oscillator is used for external resets and power-on resets; the internal oscillator

                   is used during the internal process by internal reset and clock verification circuitry.

         RST Pin Assertion

         The external reset pin (RST) resets the controller. This resets the core and all the peripherals except
         the JTAG TAP controller (see "JTAG Interface" on page 38). The external reset sequence is as
         follows:

48                             October 01, 2007

                  Preliminary
                                                            LM3S300 Microcontroller

6.1.2.3  1. The external reset pin (RST) is asserted and then de-asserted.

         2. After RST is de-asserted, the main crystal oscillator is allowed to settle and there is an internal
              main oscillator counter that takes from 15-30 ms to account for this. During this time, internal
              reset to the rest of the controller is held active.

         3. The internal reset is released and the core fetches and loads the initial stack pointer, the initial
              program counter, the first instruction designated by the program counter, and begins execution.

         The external reset timing is shown in Figure 18-9 on page 356.

         Power-On Reset (POR)

         The Power-On Reset (POR) circuitry detects a rise in power-supply voltage (VDD) and generates
         an on-chip reset pulse. To use the on-chip circuitry, the RST input needs to be connected to the
         power supply (VDD) through a pull-up resistor (1K to 10K ).
         The device must be operating within the specified operating parameters at the point when the on-chip
         power-on reset pulse is complete. The specified operating parameters include supply voltage,
         frequency, temperature, and so on. If the operating conditions are not met at the point of POR end,
         the Stellaris controller does not operate correctly. In this case, the reset must be extended using
         external circuitry. The RST input may be used with the circuit as shown in Figure 6-1 on page 49.

         Figure 6-1. External Circuitry to Extend Reset

                  D1  R1            Stellaris
                              RST

                          R2
                      C1

6.1.2.4  The R1 and C1 components define the power-on delay. The R2 resistor mitigates any leakage from
         the RST input. The diode (D1) discharges C1 rapidly when the power supply is turned off.
         The Power-On Reset sequence is as follows:

         1. The controller waits for the later of external reset (RST) or internal POR to go inactive.

         2. After the resets are inactive, the main crystal oscillator is allowed to settle and there is an internal
              main oscillator counter that takes from 15-30 ms to account for this. During this time, internal
              reset to the rest of the controller is held active.

         3. The internal reset is released and the core fetches and loads the initial stack pointer, the initial
              program counter, the first instruction designated by the program counter, and begins execution.

         The internal POR is only active on the initial power-up of the controller. The Power-On Reset timing
         is shown in Figure 18-10 on page 356.
         Note: The power-on reset also resets the JTAG controller. An external reset does not.

         Brown-Out Reset (BOR)

         A drop in the input voltage resulting in the assertion of the internal brown-out detector can be used
         to reset the controller. This is initially disabled and may be enabled by software.

October 01, 2007                                            49

                                               Preliminary
System Control

6.1.2.5  The system provides a brown-out detection circuit that triggers if the power supply (VDD) drops
         below a brown-out threshold voltage (VBTH). The circuit is provided to guard against improper
         operation of logic and peripherals that operate off the power supply voltage (VDD) and not the LDO
         voltage. If a brown-out condition is detected, the system may generate a controller interrupt or a
         system reset. The BOR circuit has a digital filter that protects against noise-related detection for the
         interrupt condition. This feature may be optionally enabled.

         Brown-out resets are controlled with the Power-On and Brown-Out Reset Control (PBORCTL)
         register. The BORIOR bit in the PBORCTL register must be set for a brown-out condition to trigger
         a reset.

         The brown-out reset sequence is as follows:

         1. When VDD drops below VBTH, an internal BOR condition is set.

         2. If the BORWT bit in the PBORCTL register is set and BORIOR is not set, the BOR condition is
              resampled again, after a delay specified by BORTIM, to determine if the original condition was
              caused by noise. If the BOR condition is not met the second time, then no further action is taken.

         3. If the BOR condition exists, an internal reset is asserted.

         4. The internal reset is released and the controller fetches and loads the initial stack pointer, the
              initial program counter, the first instruction designated by the program counter, and begins
              execution.

         5. The internal BOR condition is reset after 500 s to prevent another BOR condition from being
              set before software has a chance to investigate the original cause.

         The internal Brown-Out Reset timing is shown in Figure 18-11 on page 357.

         Software Reset

         Software can reset a specific peripheral or generate a reset to the entire system .

         Peripherals can be individually reset by software via three registers that control reset signals to each
         peripheral (see the SRCRn registers). If the bit position corresponding to a peripheral is set and
         subsequently cleared, the peripheral is reset. The encoding of the reset registers is consistent with
         the encoding of the clock gating control for peripherals and on-chip functions (see "System
         Control" on page 54). Note that all reset signals for all clocks of the specified unit are asserted as
         a result of a software-initiated reset.

         The entire system can be reset by software by setting the SYSRESETREQ bit in the Cortex-M3
         Application Interrupt and Reset Control register resets the entire system including the core. The
         software-initiated system reset sequence is as follows:

         1. A software system reset is initiated by writing the SYSRESETREQ bit in the ARM Cortex-M3
              Application Interrupt and Reset Control register.

         2. An internal reset is asserted.

         3. The internal reset is deasserted and the controller loads from memory the initial stack pointer,
              the initial program counter, and the first instruction designated by the program counter, and
              then begins execution.

         The software-initiated system reset timing is shown in Figure 18-12 on page 357.

50                           October 01, 2007

                Preliminary
                               LM3S300 Microcontroller

6.1.2.6  Watchdog Timer Reset

6.1.2.7  The watchdog timer module's function is to prevent system hangs. The watchdog timer can be
         configured to generate an interrupt to the controller on its first time-out, and to generate a reset
6.1.3    signal on its second time-out.
6.1.4    After the first time-out event, the 32-bit counter is reloaded with the value of the Watchdog Timer
6.1.4.1  Load (WDTLOAD) register, and the timer resumes counting down from that value. If the timer counts
         down to its zero state again before the first time-out interrupt is cleared, and the reset signal has
         been enabled, the watchdog timer asserts its reset signal to the system. The watchdog timer reset
         sequence is as follows:

         1. The watchdog timer times out for the second time without being serviced.

         2. An internal reset is asserted.

         3. The internal reset is released and the controller loads from memory the initial stack pointer, the
              initial program counter, the first instruction designated by the program counter, and begins
              execution.

         The watchdog reset timing is shown in Figure 18-13 on page 357.

         Low Drop-Out

         A reset can be initiated when the internal low drop-out (LDO) regulator output goes unregulated.
         This is initially disabled and may be enabled by software. LDO is controlled with the LDO Power
         Control (LDOPCTL) register. The LDO reset sequence is as follows:

         1. LDO goes unregulated and the LDOARST bit in the LDOARST register is set.

         2. An internal reset is asserted.

         3. The internal reset is released and the controller fetches and loads the initial stack pointer, the
              initial program counter, the first instruction designated by the program counter, and begins
              execution.

         The LDO reset timing is shown in Figure 18-14 on page 357.

         Power Control

         The Stellaris microcontroller provides an integrated LDO regulator that is used to provide power
         to the majority of the controller's internal logic. The LDO regulator provides software a mechanism
         to adjust the regulated value, in small increments (VSTEP), over the range of 2.25 V to 2.75 V
         (inclusive)--or 2.5 V 10%. The adjustment is made by changing the value of the VADJ field in the
         LDO Power Control (LDOPCTL) register.

         Clock Control

         System control determines the control of clocks in this part.

         Fundamental Clock Sources

         There are two clock sources for use in the device:

          Internal Oscillator (IOSC): The internal oscillator is an on-chip clock source. It does not require
             the use of any external components. The frequency of the internal oscillator is 12 MHz 30%.

October 01, 2007               51

                  Preliminary
System Control

             Applications that do not depend on accurate clock sources may use this clock source to reduce
             system cost.

          Main Oscillator: The main oscillator provides a frequency-accurate clock source by one of two
             means: an external single-ended clock source is connected to the OSC0 input pin, or an external
             crystal is connected across the OSC0 input and OSC1 output pins. The crystal value allowed
             depends on whether the main oscillator is used as the clock reference source to the PLL. If so,
             the crystal must be one of the supported frequencies between 3.579545 MHz through 8.192
             MHz (inclusive). If the PLL is not being used, the crystal may be any one of the supported
             frequencies between 1 MHz and 8.192 MHz. The single-ended clock source range is from DC
             through the specified speed of the device. The supported crystals are listed in the XTAL bit in
             the RCC register (see page 66).

         The internal system clock (sysclk), is derived from any of the two sources plus two others: the output
         of the internal PLL, and the internal oscillator divided by four (3 MHz 30%). The frequency of the
         PLL clock reference must be in the range of 3.579545 MHz to 8.192 MHz (inclusive).

         Nearly all of the control for the clocks is provided by the Run-Mode Clock Configuration (RCC)
         register.

         Figure 6-2 on page 52 shows the logic for the main clock tree. The peripheral blocks are driven by
         the system clock signal and can be programmatically enabled/disabled.

         Figure 6-2. Main Clock Tree

                                                                                                   USESYSDIVa

         OSC1     Main                                                                                         System Clock
         OSC2     Osc
                1-8 MHz
                                                                                          SYSDIVa
                Internal
                  Osc     4                      PLL
                                      OSCSRCa
                12 MHz                          (200 MHz
                                                  output)
                                                           BYPASSa
                                                 OENa
                                                XTALa
                                               PWRDNa

         a. These are bit fields within the Run-Mode Clock Configuration (RCC) register.

6.1.4.2  Crystal Configuration for the Main Oscillator (MOSC)

         The main oscillator supports the use of a select number of crystals. If the main oscillator is used by
         the PLL as a reference clock, the supported range of crystals is 3.579545 to 8.192 MHz, otherwise,
         the range of supported crystals is 1 to 8.192 MHz.

         The XTAL bit in the RCC register (see page 66) describes the available crystal choices and default
         programming values.

         Software configures the RCC register XTAL field with the crystal number. If the PLL is used in the
         design, the XTAL field value is internally translated to the PLL settings.

52                                                                                                 October 01, 2007

                                      Preliminary
                               LM3S300 Microcontroller

6.1.4.3  PLL Frequency Configuration
6.1.4.4
6.1.4.5  The PLL is disabled by default during power-on reset and is enabled later by software if required.
         Software configures the PLL input reference clock source, specifies the output divisor to set the
6.1.4.6  system clock frequency, and enables the PLL to drive the output.
         If the main oscillator provides the clock reference to the PLL, the translation provided by hardware
         and used to program the PLL is available for software in the XTAL to PLL Translation (PLLCFG)
         register (see page 70). The internal translation provides a translation within 1% of the targeted
         PLL VCO frequency.
         The XTAL bit in the RCC register (see page 66) describes the available crystal choices and default
         programming of the PLLCFG register. The crystal number is written into the XTAL field of the
         Run-Mode Clock Configuration (RCC) register. Any time the XTAL field changes, the new settings
         are translated and the internal PLL settings are updated.

         PLL Modes

         The PLL has two modes of operation: Normal and Power-Down

          Normal: The PLL multiplies the input clock reference and drives the output.

          Power-Down: Most of the PLL internal circuitry is disabled and the PLL does not drive the output.

         The modes are programmed using the RCC register fields (see page 66).

         PLL Operation

         If the PLL configuration is changed, the PLL output frequency is unstable until it reconverges (relocks)
         to the new setting. The time between the configuration change and relock is TREADY (see Table
         18-6 on page 350). During this time, the PLL is not usable as a clock reference.
         The PLL is changed by one of the following:

          Change to the XTAL value in the RCC register--writes of the same value do not cause a relock.

          Change in the PLL from Power-Down to Normal mode.

         A counter is defined to measure the TREADY requirement. The counter is clocked by the main
         oscillator. The range of the main oscillator has been taken into account and the down counter is set
         to 0x1200 (that is, ~600 s at an 8.192 MHz external oscillator clock). Hardware is provided to keep
         the PLL from being used as a system clock until the TREADY condition is met after one of the two
         changes above. It is the user's responsibility to have a stable clock source (like the main oscillator)
         before the RCC register is switched to use the PLL.

         Clock Verification Timers

         There are three identical clock verification circuits that can be enabled though software. The circuit
         checks the faster clock by a slower clock using timers:

          The main oscillator checks the PLL.

          The main oscillator checks the internal oscillator.

          The internal oscillator divided by 64 checks the main oscillator.

         If the verification timer function is enabled and a failure is detected, the main clock tree is immediately
         switched to a working clock and an interrupt is generated to the controller. Software can then

October 01, 2007               53

                  Preliminary
System Control

6.1.5  determine the course of action to take. The actual failure indication and clock switching does not
       clear without a write to the CLKVCLR register, an external reset, or a POR reset. The clock
6.2    verification timers are controlled by the PLLVER , IOSCVER , and MOSCVER bits in the RCC register.

       System Control

       For power-savings purposes, the RCGCn , SCGCn , and DCGCn registers control the clock gating
       logic for each peripheral or block in the system while the controller is in Run, Sleep, and Deep-Sleep
       mode, respectively. The DC1 , DC2 and DC4 registers act as a write mask for the RCGCn , SCGCn,
       and DCGCn registers.

       In Run mode, the controller is actively executing code. In Sleep mode, the clocking of the device is
       unchanged but the controller no longer executes code (and is no longer clocked). In Deep-Sleep
       mode, the clocking of the device may change (depending on the Run mode clock configuration)
       and the controller no longer executes code (and is no longer clocked). An interrupt returns the device
       to Run mode from one of the sleep modes. Each mode is described in more detail in this section.

       There are four levels of operation for the device defined as:

        Run Mode. Run mode provides normal operation of the processor and all of the peripherals that
           are currently enabled by the RCGCn registers. The system clock can be any of the available
           clock sources including the PLL.

        Sleep Mode. Sleep mode is entered by the Cortex-M3 core executing a WFI (Wait for
           Interrupt) instruction. Any properly configured interrupt event in the system will bring the
           processor back into Run mode. See the system control NVIC section of the ARM CortexTM-M3
           Technical Reference Manual for more details.

           In Sleep mode, the Cortex-M3 processor core and the memory subsystem are not clocked.
           Peripherals are clocked that are enabled in the SCGCn register when auto-clock gating is enabled
           (see the RCC register) or the RCGCn register when the auto-clock gating is disabled. The system
           clock has the same source and frequency as that during Run mode.

        Deep-Sleep Mode. Deep-Sleep mode is entered by first writing the Deep Sleep Enable bit in
           the ARM Cortex-M3 NVIC system control register and then executing a WFI instruction. Any
           properly configured interrupt event in the system will bring the processor back into Run mode.
           See the system control NVIC section of the ARM CortexTM-M3 Technical Reference Manual
           for more details.

           The Cortex-M3 processor core and the memory subsystem are not clocked. Peripherals are
           clocked that are enabled in the DCGCn register when auto-clock gating is enabled (see the RCC
           register) or the RCGCn register when auto-clock gating is disabled. The system clock source is
           the main oscillator by default or the internal oscillator specified in the DSLPCLKCFG register if
           one is enabled. When the DSLPCLKCFG register is used, the internal oscillator is powered up,
           if necessary, and the main oscillator is powered down. If the PLL is running at the time of the
           WFI instruction, hardware will power the PLL down and override the SYSDIV field of the active
           RCC register to be /16 or /64, respectively. When the Deep-Sleep exit event occurs, hardware
           brings the system clock back to the source and frequency it had at the onset of Deep-Sleep
           mode before enabling the clocks that had been stopped during the Deep-Sleep duration.

       Initialization and Configuration

       The PLL is configured using direct register writes to the RCC register. The steps required to
       successfully change the PLL-based system clock are:

54                           October 01, 2007

                Preliminary
                                                                        LM3S300 Microcontroller

1. Bypass the PLL and system clock divider by setting the BYPASS bit and clearing the USESYS
     bit in the RCC register. This configures the system to run off a "raw" clock source (using the
     main oscillator or internal oscillator) and allows for the new PLL configuration to be validated
     before switching the system clock to the PLL.

2. Select the crystal value (XTAL) and oscillator source (OSCSRC), and clear the PWRDN and OEN
     bits in RCC. Setting the XTAL field automatically pulls valid PLL configuration data for the
     appropriate crystal, and clearing the PWRDN and OEN bits powers and enables the PLL and its
     output.

3. Select the desired system divider (SYSDIV) in RCC and set the USESYS bit in RCC. The SYSDIV
     field determines the system frequency for the microcontroller.

4. Wait for the PLL to lock by polling the PLLLRIS bit in the Raw Interrupt Status (RIS) register.

5. Enable use of the PLL by clearing the BYPASS bit in RCC.

Note: If the BYPASS bit is cleared before the PLL locks, it is possible to render the device unusable.

6.3 Register Map

                Table 6-1 on page 55 lists the System Control registers, grouped by function. The offset listed is a
                hexadecimal increment to the register's address, relative to the System Control base address of
                0x400F.E000.

                Note: Spaces in the System Control register space that are not used are reserved for future or
                           internal use by Luminary Micro, Inc. Software should not modify any reserved memory
                           address.

Table 6-1. System Control Register Map

Offset Name       Type                  Reset  Description                See
                                                                          page
0x000 DID0        RO                    -      Device Identification 0
0x004 DID1                                                                 57
0x008 DC0         RO                    -      Device Identification 1     74
0x010 DC1                                                                  76
0x014 DC2         RO    0x000F.0007 Device Capabilities 0                  77
0x018 DC3                                                                  79
0x01C DC4         RO    0x0000.709F Device Capabilities 1                  81
0x030 PBORCTL                                                              83
0x034 LDOPCTL     RO    0x0707.1013 Device Capabilities 2                  59
0x040 SRCR0                                                                60
0x044 SRCR1       RO    0x3F00.7FC0 Device Capabilities 3                  99
0x048 SRCR2                                                                100
0x050 RIS         RO    0x0000.001F Device Capabilities 4                  102
0x054 IMC                                                                  61
                  R/W   0x0000.7FFD Power-On and Brown-Out Reset Control   62

                  R/W   0x0000.0000 LDO Power Control

                  R/W   0x00000000 Software Reset Control 0

                  R/W   0x00000000 Software Reset Control 1

                  R/W   0x00000000 Software Reset Control 2

                  RO    0x0000.0000 Raw Interrupt Status

                  R/W   0x0000.0000 Interrupt Mask Control

October 01, 2007                                                          55

                                           Preliminary
System Control

Offset Name       Type   Reset        Description                                                    See
                                                                                                     page
0x058 MISC        R/W1C  0x0000.0000  Masked Interrupt Status and Clear
0x05C RESC         R/W           -    Reset Cause                                                     64
0x060 RCC          R/W                Run-Mode Clock Configuration                                    65
0x064 PLLCFG        RO   0x07A0.3AD1  XTAL to PLL Translation                                         66
0x100 RCGC0        R/W           -    Run Mode Clock Gating Control Register 0                        70
0x104 RCGC1        R/W                Run Mode Clock Gating Control Register 1                        84
0x108 RCGC2        R/W    0x00000040  Run Mode Clock Gating Control Register 2                        87
0x110 SCGC0        R/W    0x00000000  Sleep Mode Clock Gating Control Register 0                      93
0x114 SCGC1        R/W    0x00000000  Sleep Mode Clock Gating Control Register 1                      85
0x118 SCGC2        R/W    0x00000040  Sleep Mode Clock Gating Control Register 2                      89
0x120 DCGC0        R/W    0x00000000  Deep Sleep Mode Clock Gating Control Register 0                 95
0x124 DCGC1        R/W    0x00000000  Deep Sleep Mode Clock Gating Control Register 1                 86
0x128 DCGC2        R/W    0x00000040  Deep Sleep Mode Clock Gating Control Register 2                 91
0x144 DSLPCLKCFG   R/W    0x00000000  Deep Sleep Clock Configuration                                  97
0x150 CLKVCLR      R/W    0x00000000  Clock Verification Clear                                        71
0x160 LDOARST      R/W   0x0780.0000  Allow Unregulated LDO to Reset the Part                         72
                         0x0000.0000                                                                  73
                         0x0000.0000

6.4 Register Descriptions

                All addresses given are relative to the System Control base address of 0x400F.E000.

56                                                 October 01, 2007

                         Preliminary
                                                                                               LM3S300 Microcontroller

              Register 1: Device Identification 0 (DID0), offset 0x000

              This register identifies the version of the device.

Device Identification 0 (DID0)

Base 0x400F.E000
Offset 0x000
Type RO, reset -

       31         30  29        28         27  26     25  24           23  22  21          20         19   18  17  16

       reserved       VER                                                     reserved

Type RO           RO  RO        RO  RO         RO     RO  RO  RO           RO  RO          RO  RO          RO  RO  RO

Reset  0          0   0         0          0   0      0   0            0   0            0  0          0    0   0               0

       15         14  13        12         11  10     9   8            7   6            5  4          3    2   1               0

                                    MAJOR                                                      MINOR

Type RO           RO  RO        RO  RO         RO     RO  RO  RO           RO  RO          RO  RO          RO  RO  RO

Reset      -      -   -         -          -   -      -   -            -   -            -  -          -    -   -               -

Bit/Field              Name         Type           Reset  Description
   31                 reserved       RO               0
                                                          Software should not rely on the value of a reserved bit. To provide
30:28                  VER          RO             0x0   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          DID0 Version
                                                          This field defines the DID0 register format version. The version number
                                                          is numeric. The value of the VER field is encoded as follows:

                                                          Value Description
                                                          0x0 Initial DID0 register format definition for Stellaris

                                                                    Sandstorm-class devices.

27:16                 reserved             RO      0x0    Software should not rely on the value of a reserved bit. To provide
15:8                  MAJOR
                                                          compatibility with future products, the value of a reserved bit should be

                                                          preserved across a read-modify-write operation.

                                           RO      -      Major Revision

                                                          This field specifies the major revision number of the device. The major
                                                          revision reflects changes to base layers of the design. The major revision
                                                          number is indicated in the part number as a letter (A for first revision, B
                                                          for second, and so on). This field is encoded as follows:

                                                          Value Description
                                                          0x0 Revision A (initial device)
                                                          0x1 Revision B (first base layer revision)
                                                          0x2 Revision C (second base layer revision)

                                                          and so on.

October 01, 2007                                                                                                                  57

                                                          Preliminary
System Control

    Bit/Field    Name  Type  Reset  Description
       7:0      MINOR   RO      -
                                    Minor Revision
                                    This field specifies the minor revision number of the device. The minor
                                    revision reflects changes to the metal layers of the design. The MINOR
                                    field value is reset when the MAJOR field is changed. This field is numeric
                                    and is encoded as follows:

                                    Value Description
                                    0x0 Initial device, or a major revision update.
                                    0x1 First metal layer change.
                                    0x2 Second metal layer change.

                                    and so on.

58                                               October 01, 2007

                                    Preliminary
                                                                                               LM3S300 Microcontroller

           Register 2: Power-On and Brown-Out Reset Control (PBORCTL), offset 0x030

           This register is responsible for controlling reset conditions after initial power-on reset.

Power-On and Brown-Out Reset Control (PBORCTL)

Base 0x400F.E000
Offset 0x030
Type R/W, reset 0x0000.7FFD

       31  30                29   28   27    26      25   24          23        22   21   20   19          18   17   16

                                                                   reserved

Type RO    RO                RO   RO   RO    RO      RO   RO       RO           RO   RO   RO   RO          RO   RO   RO

Reset  0   0                 0    0    0     0       0          0            0  0    0    0    0           0    0              0

       15  14                13   12   11    10      9          8            7  6    5    4    3           2    1              0

                                                        BORTIM                                                  BORIOR BORWT

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W     R/W      R/W          R/W  R/W  R/W  R/W         R/W  R/W  R/W

Reset  0   1                 1    1    1     1       1          1            1  1    1    1    1           1    0              1

Bit/Field          Name                Type       Reset Description
31:16            reserved              RO
  15:2            BORTIM               R/W        0x0     Software should not rely on the value of a reserved bit. To provide

    1             BORIOR               R/W                compatibility with future products, the value of a reserved bit should be
    0             BORWT                R/W
                                                          preserved across a read-modify-write operation.

                                                  0x1FFF  BOR Time Delay

                                                          This field specifies the number of internal oscillator clocks delayed before
                                                          the BOR output is resampled if the BORWT bit is set.

                                                          The width of this field is derived by the t BOR width of 500 s and the
                                                          internal oscillator (IOSC) frequency of 12 MHz 30%. At +30%, the
                                                          counter value has to exceed 7,800.

                                                  0       BOR Interrupt or Reset

                                                          This bit controls how a BOR event is signaled to the controller. If set, a
                                                          reset is signaled. Otherwise, an interrupt is signaled.

                                                  1       BOR Wait and Check for Noise

                                                          This bit specifies the response to a brown-out signal assertion if BORIOR
                                                          is not set.

                                                          If BORWT is set to 1 and BORIOR is cleared to 0, the controller waits
                                                          BORTIM IOSC periods and resamples the BOR output. If still asserted,
                                                          a BOR interrupt is signalled. If no longer asserted, the initial assertion
                                                          is suppressed (attributable to noise).

                                                          If BORWT is 0, BOR assertions do not resample the output and any
                                                          condition is reported immediately if enabled.

October 01, 2007                                                                                                                  59

                                                         Preliminary
System Control

               Register 3: LDO Power Control (LDOPCTL), offset 0x034

               The VADJ field in this register adjusts the on-chip output voltage (VOUT).

LDO Power Control (LDOPCTL)

Base 0x400F.E000
Offset 0x034
Type R/W, reset 0x0000.0000

       31       30  29        28  27    26        25     24           23        22  21   20   19         18   17   16

                                                            reserved

    Type RO     RO  RO        RO  RO    RO        RO     RO     RO              RO  RO   RO   RO         RO   RO   RO

Reset  0        0   0         0   0            0  0      0            0         0   0    0    0          0    0    0

       15       14  13        12  11    10        9      8            7         6   5    4    3          2    1    0

                                     reserved                                                      VADJ

    Type RO     RO  RO        RO  RO    RO        RO     RO     RO              RO  R/W  R/W  R/W        R/W  R/W  R/W

Reset  0        0   0         0   0            0  0      0            0         0   0    0    0          0    0    0

    Bit/Field        Name         Type            Reset  Description
      31:6          reserved       RO                0
                                                         Software should not rely on the value of a reserved bit. To provide
       5:0            VADJ        R/W              0x0   compatibility with future products, the value of a reserved bit should be
                                                         preserved across a read-modify-write operation.

                                                         LDO Output Voltage

                                                         This field sets the on-chip output voltage. The programming values for
                                                         the VADJ field are provided below.

                                                         Value            VOUT (V)
                                                         0x00             2.50

                                                         0x01             2.45

                                                         0x02             2.40

                                                         0x03             2.35

                                                         0x04             2.30

                                                         0x05             2.25

                                                         0x06-0x3F Reserved

                                                         0x1B             2.75

                                                         0x1C             2.70

                                                         0x1D             2.65

                                                         0x1E             2.60

                                                         0x1F             2.55

60                                                                                                       October 01, 2007

                                                         Preliminary
                                                                                      LM3S300 Microcontroller

           Register 4: Raw Interrupt Status (RIS), offset 0x050

           Central location for system control raw interrupts. These are set and cleared by hardware.

Raw Interrupt Status (RIS)

Base 0x400F.E000
Offset 0x050
Type RO, reset 0x0000.0000

       31  30               29  28  27        26  25     24           23  22  21  20  19  18  17       16

                                                            reserved

Type RO    RO               RO  RO  RO        RO  RO     RO  RO           RO  RO  RO  RO  RO  RO       RO

Reset  0   0                0   0   0         0   0      0            0   0   0   0   0   0   0        0

       15  14               13  12  11        10  9      8            7   6   5   4   3   2   1        0

                                    reserved                              PLLLRIS CLRIS IOFRIS MOFRIS LDORIS BORRIS PLLFRIS

Type RO    RO               RO  RO  RO        RO  RO     RO  RO           RO  RO  RO  RO  RO  RO       RO

Reset  0   0                0   0   0         0   0      0            0   0   0   0   0   0   0        0

Bit/Field           Name            Type          Reset  Description
  31:7            reserved           RO              0
    6             PLLLRIS            RO              0   Software should not rely on the value of a reserved bit. To provide
    5              CLRIS             RO              0   compatibility with future products, the value of a reserved bit should be
    4              IOFRIS            RO              0   preserved across a read-modify-write operation.
    3             MOFRIS             RO              0
    2             LDORIS             RO              0   PLL Lock Raw Interrupt Status
    1             BORRIS             RO              0   This bit is set when the PLL TREADY Timer asserts.

    0             PLLFRIS            RO              0   Current Limit Raw Interrupt Status
                                                         This bit is set if the LDO's CLE output asserts.

                                                         Internal Oscillator Fault Raw Interrupt Status
                                                         This bit is set if an internal oscillator fault is detected.

                                                         Main Oscillator Fault Raw Interrupt Status
                                                         This bit is set if a main oscillator fault is detected.

                                                         LDO Power Unregulated Raw Interrupt Status
                                                         This bit is set if a LDO voltage is unregulated.

                                                         Brown-Out Reset Raw Interrupt Status
                                                         This bit is the raw interrupt status for any brown-out conditions. If set,
                                                         a brown-out condition is currently active. This is an unregistered signal
                                                         from the brown-out detection circuit. An interrupt is reported if the BORIM
                                                         bit in the IMC register is set and the BORIOR bit in the PBORCTL register
                                                         is cleared.

                                                         PLL Fault Raw Interrupt Status
                                                         This bit is set if a PLL fault is detected (stops oscillating).

October 01, 2007                                                                                           61

                                                         Preliminary
System Control

               Register 5: Interrupt Mask Control (IMC), offset 0x054

               Central location for system control interrupt masks.

Interrupt Mask Control (IMC)

Base 0x400F.E000
Offset 0x054
Type R/W, reset 0x0000.0000

       31       30           29  28  27        26  25     24           23  22   21   20   19   18   17   16

                                                             reserved

    Type RO     RO           RO  RO  RO        RO  RO     RO  RO           RO   RO   RO   RO   RO   RO   RO

Reset  0        0            0   0   0         0   0      0            0   0    0    0    0    0    0    0

       15       14           13  12  11        10  9      8            7   6    5    4    3    2    1    0

                                     reserved                              PLLLIM CLIM IOFIM MOFIM LDOIM BORIM PLLFIM

    Type RO     RO           RO  RO  RO        RO  RO     RO  RO           R/W  R/W  R/W  R/W  R/W  R/W  R/W

Reset  0        0            0   0   0         0   0      0            0   0    0    0    0    0    0    0

    Bit/Field        Name            Type          Reset  Description
      31:7          reserved          RO              0
        6           PLLLIM           R/W              0   Software should not rely on the value of a reserved bit. To provide
        5                            R/W              0   compatibility with future products, the value of a reserved bit should be
        4             CLIM           R/W              0   preserved across a read-modify-write operation.
        3            IOFIM           R/W              0
        2           MOFIM            R/W              0   PLL Lock Interrupt Mask
        1            LDOIM           R/W              0
                    BORIM                                 This bit specifies whether a current limit detection is promoted to a
                                                          controller interrupt. If set, an interrupt is generated if PLLLRIS in RIS
                                                          is set; otherwise, an interrupt is not generated.

                                                          Current Limit Interrupt Mask

                                                          This bit specifies whether a current limit detection is promoted to a
                                                          controller interrupt. If set, an interrupt is generated if CLRIS is set;
                                                          otherwise, an interrupt is not generated.

                                                          Internal Oscillator Fault Interrupt Mask

                                                          This bit specifies whether an internal oscillator fault detection is promoted
                                                          to a controller interrupt. If set, an interrupt is generated if IOFRIS is set;
                                                          otherwise, an interrupt is not generated.

                                                          Main Oscillator Fault Interrupt Mask

                                                          This bit specifies whether a main oscillator fault detection is promoted
                                                          to a controller interrupt. If set, an interrupt is generated if MOFRIS is set;
                                                          otherwise, an interrupt is not generated.

                                                          LDO Power Unregulated Interrupt Mask

                                                          This bit specifies whether an LDO unregulated power situation is
                                                          promoted to a controller interrupt. If set, an interrupt is generated if
                                                          LDORIS is set; otherwise, an interrupt is not generated.

                                                          Brown-Out Reset Interrupt Mask

                                                          This bit specifies whether a brown-out condition is promoted to a
                                                          controller interrupt. If set, an interrupt is generated if BORRIS is set;
                                                          otherwise, an interrupt is not generated.

62                                                                                             October 01, 2007

                                                          Preliminary
                                                    LM3S300 Microcontroller

Bit/Field          Name   Type  Reset  Description
    0             PLLFIM  R/W      0
                                       PLL Fault Interrupt Mask

                                       This bit specifies whether a PLL fault detection is promoted to a controller
                                       interrupt. If set, an interrupt is generated if PLLFRIS is set; otherwise,
                                       an interrupt is not generated.

October 01, 2007                                    63

                                       Preliminary
System Control

               Register 6: Masked Interrupt Status and Clear (MISC), offset 0x058

               Central location for system control result of RIS AND IMC to generate an interrupt to the controller.
               All of the bits are R/W1C and this action also clears the corresponding raw interrupt bit in the RIS
               register (see page 61).

Masked Interrupt Status and Clear (MISC)

Base 0x400F.E000
Offset 0x058
Type R/W1C, reset 0x0000.0000

       31       30  29         28  27        26  25     24           23  22  21  20  19  18  17  16

                                                           reserved

    Type RO     RO  RO         RO  RO        RO  RO     RO  RO           RO  RO  RO  RO  RO  RO  RO

Reset  0        0   0          0   0         0   0      0            0   0   0   0   0   0   0   0

       15       14  13         12  11        10  9      8            7   6   5   4   3   2   1   0

                                   reserved                              PLLLMIS CLMIS IOFMIS MOFMIS LDOMIS BORMIS reserved

    Type RO     RO  RO         RO  RO        RO  RO     RO  RO R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C RO

Reset  0        0   0          0   0         0   0      0            0   0   0   0   0   0   0   0

    Bit/Field         Name          Type         Reset  Description
      31:7          reserved         RO             0
        6           PLLLMIS        R/W1C            0   Software should not rely on the value of a reserved bit. To provide
        5            CLMIS         R/W1C            0   compatibility with future products, the value of a reserved bit should be
        4            IOFMIS        R/W1C            0   preserved across a read-modify-write operation.
        3           MOFMIS         R/W1C            0
        2           LDOMIS         R/W1C            0   PLL Lock Masked Interrupt Status
        1           BORMIS         R/W1C            0   This bit is set when the PLL TREADY timer asserts. The interrupt is cleared
                                                        by writing a 1 to this bit.
        0           reserved         RO             0
                                                        Current Limit Masked Interrupt Status
                                                        This bit is set if the LDO's CLE output asserts. The interrupt is cleared
                                                        by writing a 1 to this bit.

                                                        Internal Oscillator Fault Masked Interrupt Status
                                                        This bit is set if an internal oscillator fault is detected. The interrupt is
                                                        cleared by writing a 1 to this bit.

                                                        Main Oscillator Fault Masked Interrupt Status
                                                        This bit is set if a main oscillator fault is detected. The interrupt is cleared
                                                        by writing a 1 to this bit.

                                                        LDO Power Unregulated Masked Interrupt Status
                                                        This bit is set if LDO power is unregulated. The interrupt is cleared by
                                                        writing a 1 to this bit.

                                                        BOR Masked Interrupt Status
                                                        This bit is the masked interrupt status for any brown-out conditions. If
                                                        set, a brown-out condition was detected. An interrupt is reported if the
                                                        BORIM bit in the IMC register is set and the BORIOR bit in the PBORCTL
                                                        register is cleared. The interrupt is cleared by writing a 1 to this bit.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

64                                                                                       October 01, 2007

                                                        Preliminary
                                                                                           LM3S300 Microcontroller

           Register 7: Reset Cause (RESC), offset 0x05C

           This field specifies the cause of the reset event to software. The reset value is determined by the
           cause of the reset. When an external reset is the cause (EXT is set), all other reset bits are cleared.
           However, if the reset is due to any other cause, the remaining bits are sticky, allowing software to
           see all causes.

Reset Cause (RESC)

Base 0x400F.E000
Offset 0x05C
Type R/W, reset -

       31          30  29        28  27    26        25     24           23  22  21   20   19   18   17   16

                                                               reserved

Type RO            RO  RO        RO  RO    RO        RO     RO  RO           RO  RO   RO   RO   RO   RO   RO

Reset  0           0   0         0   0            0  0      0            0   0   0    0    0    0    0    0

       15          14  13        12  11    10        9      8            7   6   5    4    3    2    1    0

                                        reserved                                 LDO  SW   WDT  BOR  POR  EXT

Type RO            RO  RO        RO  RO    RO        RO     RO  RO           RO  R/W  R/W  R/W  R/W  R/W  R/W

Reset  0           0   0         0   0            0  0      0            0   0   -    -    -    -    -    -

Bit/Field               Name         Type            Reset  Description
  31:6                 reserved       RO                0
    5                                R/W                -   Software should not rely on the value of a reserved bit. To provide
                         LDO                                compatibility with future products, the value of a reserved bit should be
    4                                R/W                -   preserved across a read-modify-write operation.
    3                     SW         R/W                -
    2                    WDT         R/W                -   LDO Reset
    1                    BOR         R/W                -   When set, indicates the LDO circuit has lost regulation and has
    0                    POR         R/W                -   generated a reset event.
                         EXT
                                                            Software Reset
                                                            When set, indicates a software reset is the cause of the reset event.

                                                            Watchdog Timer Reset
                                                            When set, indicates a watchdog reset is the cause of the reset event.

                                                            Brown-Out Reset
                                                            When set, indicates a brown-out reset is the cause of the reset event.

                                                            Power-On Reset
                                                            When set, indicates a power-on reset is the cause of the reset event.

                                                            External Reset
                                                            When set, indicates an external reset (RST assertion) is the cause of
                                                            the reset event.

October 01, 2007                                                                                              65

                                                            Preliminary
System Control

               Register 8: Run-Mode Clock Configuration (RCC), offset 0x060

               This register is defined to provide source control and frequency speed.

Run-Mode Clock Configuration (RCC)

Base 0x400F.E000
Offset 0x060
Type R/W, reset 0x07A0.3AD1

       31       30           29          28   27    26   25     24               23   22         21   20   19   18         17   16

                            reserved          ACG               SYSDIV                USESYSDIV               reserved

    Type RO     RO           RO          RO   R/W   R/W  R/W    R/W              R/W  R/W        RO   RO   RO   RO         RO   RO

Reset  0                 0            0  0    0     1    1              1        1    0          0    0    0            0  0    0

       15       14           13          12   11    10   9              8        7    6          5    4    3            2  1    0

               reserved     PWRDN OEN BYPASS PLLVER                        XTAL                  OSCSRC    IOSCVER MOSCVER IOSCDIS MOSCDIS

    Type RO     RO          R/W          R/W  R/W   R/W  R/W    R/W              R/W  R/W        R/W  R/W  R/W  R/W        R/W  R/W

Reset  0                 0            1  1    1     0    1              0        1    1          0    0    0            0  0    1

    Bit/Field                Name             Type       Reset  Description
     31:28                  reserved           RO         0x0
                                                                Software should not rely on the value of a reserved bit. To provide
       27                     ACG             R/W           0   compatibility with future products, the value of a reserved bit should be
                                                                preserved across a read-modify-write operation.

                                                                Auto Clock Gating

                                                                This bit specifies whether the system uses the Sleep-Mode Clock
                                                                Gating Control (SCGCn) registers and Deep-Sleep-Mode Clock
                                                                Gating Control (DCGCn) registers if the controller enters a Sleep or
                                                                Deep-Sleep mode (respectively). If set, the SCGCn or DCGCn registers
                                                                are used to control the clocks distributed to the peripherals when the
                                                                controller is in a sleep mode. Otherwise, the Run-Mode Clock Gating
                                                                Control (RCGCn) registers are used when the controller enters a sleep
                                                                mode.

                                                                The RCGCn registers are always used to control the clocks in Run
                                                                mode.

                                                                This allows peripherals to consume less power when the controller is
                                                                in a sleep mode and the peripheral is unused.

66                                                                                                                      October 01, 2007

                                                                Preliminary
                                                                    LM3S300 Microcontroller

Bit/Field             Name    Type  Reset  Description
26:23               SYSDIV   R/W    0xF
                                           System Clock Divisor
   22             USESYSDIV   R/W      0
21:14              reserved   RO      0   Specifies which divisor is used to generate the system clock from the
                    PWRDN     R/W      1   PLL output.
   13                  OEN    R/W      1
   12                                      The PLL VCO frequency is 200 MHz.

                                           Value Divisor (BYPASS=1) Frequency (BYPASS=0)

                                           0x0 reserved  reserved

                                           0x1 /2        reserved

                                           0x2 /3        reserved

                                           0x3 /4        reserved

                                           0x4 /5        reserved

                                           0x5 /6        reserved

                                           0x6 /7        reserved

                                           0x7 /8        25 MHz

                                           0x8 /9        22.22 MHz

                                           0x9 /10       20 MHz

                                           0xA /11       18.18 MHz

                                           0xB /12       16.67 MHz

                                           0xC /13       15.38 MHz

                                           0xD /14       14.29 MHz

                                           0xE /15       13.33 MHz

                                           0xF /16       12.5 MHz (default)

                                           When reading the Run-Mode Clock Configuration (RCC) register (see
                                           page 66), the SYSDIV value is MINSYSDIV if a lower divider was
                                           requested and the PLL is being used. This lower value is allowed to
                                           divide a non-PLL source.

                                           Enable System Clock Divider

                                           Use the system clock divider as the source for the system clock. The
                                           system clock divider is forced to be used when the PLL is selected as
                                           the source.

                                           Software should not rely on the value of a reserved bit. To provide
                                           compatibility with future products, the value of a reserved bit should be
                                           preserved across a read-modify-write operation.

                                           PLL Power Down

                                           This bit connects to the PLL PWRDN input. The reset value of 1 powers
                                           down the PLL. See Table 6-2 on page 69 for PLL mode control.

                                           PLL Output Enable

                                           This bit specifies whether the PLL output driver is enabled. If cleared,
                                           the driver transmits the PLL clock to the output. Otherwise, the PLL
                                           clock does not oscillate outside the PLL module.

                                           Note: Both PWRDN and OEN must be cleared to run the PLL.

October 01, 2007                                                                          67

                                           Preliminary
System Control

    Bit/Field     Name   Type  Reset  Description
        11      BYPASS   R/W      1
        10       PLLVER  R/W          PLL Bypass
        9:6              R/W      0
                   XTAL         0xB   Chooses whether the system clock is derived from the PLL output or
        5:4              R/W          the OSC source. If set, the clock that drives the system is the OSC
         3      OSCSRC   R/W          source. Otherwise, the clock that drives the system is the PLL output
68              IOSCVER               clock divided by the system divider.

                                      PLL Verification

                                      This bit controls the PLL verification timer function. If set, the verification
                                      timer is enabled and an interrupt is generated if the PLL becomes
                                      inoperative. Otherwise, the verification timer is not enabled.

                                      Crystal Value

                                      This field specifies the crystal value attached to the main oscillator. The
                                      encoding for this field is provided below.

                                      Value        Crystal Frequency (MHz) Crystal Frequency (MHz)

                                            0x0    Not Using the PLL          Using the PLL
                                            0x1
                                            0x2          1.000                            reserved
                                            0x3
                                            0x4          1.8432                           reserved
                                            0x5
                                            0x6          2.000                            reserved
                                            0x7
                                            0x8          2.4576                           reserved
                                            0x9
                                            0xA                       3.579545 MHz
                                            0xB
                                           0xC                                3.6864 MHz
                                           0xD
                                            0xE                               4 MHz
                                            0xF
                                                                              4.096 MHz

                                                                              4.9152 MHz

                                                                              5 MHz

                                                                              5.12 MHz

                                                                 6 MHz (reset value)

                                                                              6.144 MHz

                                                                              7.3728 MHz

                                                                              8 MHz

                                                                              8.192 MHz

                               0x0    Oscillator Source

                                      Picks among the four input sources for the OSC. The values are:

                                      Value Input Source
                                      0x0 Main oscillator (default)
                                      0x1 Internal oscillator (default)
                                      0x2 Internal oscillator / 4 (this is necessary if used as input to PLL)
                                      0x3 reserved

                               0      Internal Oscillator Verification Timer

                                      This bit controls the internal oscillator verification timer function. If set,
                                      the verification timer is enabled and an interrupt is generated if the timer
                                      becomes inoperative. Otherwise, the verification timer is not enabled.

                                                                                          October 01, 2007

                                      Preliminary
                                                            LM3S300 Microcontroller

Bit/Field            Name   Type        Reset  Description
    2             MOSCVER   R/W            0
                                               Main Oscillator Verification Timer
    1              IOSCDIS  R/W            0   This bit controls the main oscillator verification timer function. If set, the
                                               verification timer is enabled and an interrupt is generated if the timer
    0             MOSCDIS   R/W            1   becomes inoperative. Otherwise, the verification timer is not enabled.

                                               Internal Oscillator Disable
                                               0: Internal oscillator (IOSC) is enabled.
                                               1: Internal oscillator is disabled.

                                               Main Oscillator Disable
                                               0: Main oscillator is enabled.
                                               1: Main oscillator is disabled (default).

           Table 6-2. PLL Mode Control

           PWRDN OEN Mode

           1      X Power down

           0      0 Normal

October 01, 2007                                            69

                                               Preliminary
System Control

                  Register 9: XTAL to PLL Translation (PLLCFG), offset 0x064

                  This register provides a means of translating external crystal frequencies into the appropriate PLL
                  settings. This register is initialized during the reset sequence and updated anytime that the XTAL
                  field changes in the Run-Mode Clock Configuration (RCC) register (see page 66).

                  The PLL frequency is calculated using the PLLCFG field values, as follows:

                  PLLFreq = OSCFreq * (F + 2) / (R + 2)

XTAL to PLL Translation (PLLCFG)

Base 0x400F.E000
Offset 0x064
Type RO, reset -

          31          30  29        28  27    26     25  24           23  22  21  20  19  18  17                           16

                                                            reserved

    Type RO           RO  RO        RO  RO    RO     RO  RO  RO           RO  RO  RO  RO  RO  RO                           RO

Reset     0           0   0         0   0     0      0   0            0   0   0   0   0   0                             0  0

          15          14  13        12  11    10     9   8            7   6   5   4   3   2                             1  0

                  OD                                 F                                    R

    Type RO           RO  RO        RO  RO    RO     RO  RO  RO           RO  RO  RO  RO  RO  RO                           RO

Reset          -      -   -         -   -     -      -   -            -   -   -   -   -   -                             -  -

    Bit/Field              Name         Type      Reset  Description
     31:16                reserved       RO        0x0
                                                         Software should not rely on the value of a reserved bit. To provide
     15:14                   OD          RO          -   compatibility with future products, the value of a reserved bit should be
                                                         preserved across a read-modify-write operation.

                                                         PLL OD Value
                                                         This field specifies the value supplied to the PLL's OD input.

                                                         Value Description
                                                         0x0 Divide by 1
                                                         0x1 Divide by 2
                                                         0x2 Divide by 4
                                                         0x3 Reserved

    13:5                  F             RO        -      PLL F Value

                                                         This field specifies the value supplied to the PLL's F input.

    4:0                   R             RO        -      PLL R Value

                                                         This field specifies the value supplied to the PLL's R input.

70                                                                                        October 01, 2007

                                                         Preliminary
                                                                                   LM3S300 Microcontroller

           Register 10: Deep Sleep Clock Configuration (DSLPCLKCFG), offset 0x144

           This register is used to automatically switch from the main oscillator to the internal oscillator when
           entering Deep-Sleep mode. The system clock source is the main oscillator by default. When this
           register is set, the internal oscillator is powered up and the main oscillator is powered down. When
           the Deep-Sleep exit event occurs, hardware brings the system clock back to the source and frequency
           it had at the onset of Deep-Sleep mode.

Deep Sleep Clock Configuration (DSLPCLKCFG)

Base 0x400F.E000
Offset 0x144
Type R/W, reset 0x0780.0000

       31  30                29  28  27    26  25     24           23  22  21  20  19  18  17  16

                                                         reserved

Type RO    RO                RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  RO

Reset  0   0                 0   0   0     0   0      0            0   0   0   0   0   0   0   0

       15  14                13  12  11    10  9      8            7   6   5   4   3   2   1   0

                                                      reserved                                 IOSC

Type RO    RO                RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  R/W

Reset  0   0                 0   0   0     0   0      0            0   0   0   0   0   0   0   0

Bit/Field          Name              Type      Reset  Description
  31:1            reserved            RO        0x0
                                                      Software should not rely on the value of a reserved bit. To provide
    0               IOSC             R/W          0   compatibility with future products, the value of a reserved bit should be
                                                      preserved across a read-modify-write operation.

                                                      IOSC Clock Source
                                                      When set, forces IOSC to be clock source during Deep-Sleep (overrides
                                                      DSOSCSRC field if set)

October 01, 2007                                                                                   71

                                                      Preliminary
System Control

               Register 11: Clock Verification Clear (CLKVCLR), offset 0x150

               This register is provided as a means of clearing the clock verification circuits by software. Since the
               clock verification circuits force a known good clock to control the process, the controller is allowed
               the opportunity to solve the problem and clear the verification fault. This register clears all clock
               verification faults. To clear a clock verification fault, the VERCLR bit must be set and then cleared
               by software. This bit is not self-clearing.

Clock Verification Clear (CLKVCLR)

Base 0x400F.E000
Offset 0x150
Type R/W, reset 0x0000.0000

       31       30           29  28  27    26  25     24           23  22  21  20  19  18  17  16

                                                         reserved

    Type RO     RO           RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  RO

Reset  0        0            0   0   0     0   0      0            0   0   0   0   0   0   0   0

       15       14           13  12  11    10  9      8            7   6   5   4   3   2   1   0

                                                      reserved                                 VERCLR

    Type RO     RO           RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  R/W

Reset  0        0            0   0   0     0   0      0            0   0   0   0   0   0   0   0

    Bit/Field         Name           Type      Reset  Description
      31:1          reserved          RO          0
                                                      Software should not rely on the value of a reserved bit. To provide
        0           VERCLR           R/W          0   compatibility with future products, the value of a reserved bit should be
                                                      preserved across a read-modify-write operation.

                                                      Clock Verification Clear
                                                      Clears clock verification faults.

72                                                                                     October 01, 2007

                                                      Preliminary
                                                                                   LM3S300 Microcontroller

           Register 12: Allow Unregulated LDO to Reset the Part (LDOARST), offset
           0x160

           This register is provided as a means of allowing the LDO to reset the part if the voltage goes
           unregulated. Use this register to choose whether to automatically reset the part if the LDO goes
           unregulated, based on the design tolerance for LDO fluctuation.

Allow Unregulated LDO to Reset the Part (LDOARST)

Base 0x400F.E000
Offset 0x160
Type R/W, reset 0x0000.0000

       31  30                29  28  27    26  25     24           23  22  21  20  19  18  17  16

                                                      Reserved

Type RO    RO                RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  RO

Reset  0   0                 0   0   0     0   0      0            0   0   0   0   0   0   0   0

       15  14                13  12  11    10  9      8            7   6   5   4   3   2   1   0

                                                      Reserved                                 LDOARST

Type RO    RO                RO  RO  RO    RO  RO     RO        RO     RO  RO  RO  RO  RO  RO  R/W

Reset  0   0                 0   0   0     0   0      0            0   0   0   0   0   0   0   0

Bit/Field            Name            Type      Reset  Description
  31:1            Reserved            RO          0
                                                      Software should not rely on the value of a reserved bit. To provide
    0             LDOARST            R/W          0   compatibility with future products, the value of a reserved bit should be
                                                      preserved across a read-modify-write operation.

                                                      LDO Reset
                                                      When set, allows unregulated LDO output to reset the part.

October 01, 2007                                                                                             73

                                                      Preliminary
System Control

               Register 13: Device Identification 1 (DID1), offset 0x004

               This register identifies the device family, part number, temperature range, and package type.

Device Identification 1 (DID1)

Base 0x400F.E000
Offset 0x004
Type RO, reset -

           31     30       29   28  27           26       25  24           23  22    21  20       19           18    17           16

                      VER                            FAM                                    PARTNO

    Type RO       RO       RO   RO  RO           RO       RO  RO      RO       RO    RO  RO       RO           RO    RO           RO

Reset      0      0        0    0            0   0        0   0            0   0     0   1          1          0     0             1

           15     14       13   12  11           10       9   8            7   6     5   4          3          2     1             0

                                   reserved                                    TEMP          PKG               ROHS      QUAL

    Type RO       RO       RO   RO  RO           RO       RO  RO      RO       RO    RO  RO       RO           RO    RO           RO

Reset      0      0        0    0            0   0        0   0            0   0     1   0          1          1     -             -

    Bit/Field         Name          Type             Reset    Description
     31:28            VER            RO               0x0
                                                              DID1 Version
                                                              This field defines the DID1 register format version. The version number
                                                              is numeric. The value of the VER field is encoded as follows (all other
                                                              encodings are reserved):

                                                              Value Description
                                                              0x0 Initial DID1 register format definition, indicating a Stellaris

                                                                        LM3Snnn device.

    27:24             FAM                    RO      0x0      Family

                                                              This field provides the family identification of the device within the
                                                              Luminary Micro product portfolio. The value is encoded as follows (all
                                                              other encodings are reserved):

                                                              Value Description

                                                              0x0 Stellaris family of microcontollers, that is, all devices with
                                                                       external part numbers starting with LM3S.

    23:16             PARTNO                 RO      0x19 Part Number

                                                              This field provides the part number of the device within the family. The
                                                              value is encoded as follows (all other encodings are reserved):

                                                              Value Description
                                                              0x19 LM3S300

    15:8              reserved               RO      0        Software should not rely on the value of a reserved bit. To provide

                                                              compatibility with future products, the value of a reserved bit should be

                                                              preserved across a read-modify-write operation.

74                                                                                                             October 01, 2007

                                                              Preliminary
                                                              LM3S300 Microcontroller

Bit/Field         Name  Type  Reset  Description
   7:5            TEMP   RO    0x1
                                     Temperature Range
   4:3             PKG   RO          This field specifies the temperature rating of the device. The value is
                                     encoded as follows (all other encodings are reserved):
    2             ROHS   RO
   1:0            QUAL   RO          Value Description
                                     0x1 Industrial temperature range (-40C to 85C)

                              0x1    Package Type

                                     This field specifies the package type. The value is encoded as follows
                                     (all other encodings are reserved):

                                     Value Description
                                     0x1 48-pin LQFP package

                              1      RoHS-Compliance

                                     This bit specifies whether the device is RoHS-compliant. A 1 indicates
                                     the part is RoHS-compliant.

                              -      Qualification Status

                                     This field specifies the qualification status of the device. The value is
                                     encoded as follows (all other encodings are reserved):

                                     Value Description
                                     0x0 Engineering Sample (unqualified)
                                     0x1 Pilot Production (unqualified)
                                     0x2 Fully Qualified

October 01, 2007                                                           75

                                     Preliminary
System Control

               Register 14: Device Capabilities 0 (DC0), offset 0x008

               This register is predefined by the part and can be used to verify features.

Device Capabilities 0 (DC0)

Base 0x400F.E000
Offset 0x008
Type RO, reset 0x000F.0007

          31    30          29  28  27    26  25      24       23   22       21  20         19         18  17  16

                                                         SRAMSZ

    Type RO     RO          RO  RO  RO    RO  RO      RO  RO        RO       RO  RO         RO         RO  RO  RO

Reset     0     0           0   0   0     0   0       0          0  0        0   0          1          1   1   1

          15    14          13  12  11    10  9       8          7  6        5   4          3          2   1   0

                                                      FLASHSZ

    Type RO     RO          RO  RO  RO    RO  RO      RO  RO        RO       RO  RO         RO         RO  RO  RO

Reset     0     0           0   0   0     0   0       0          0  0        0   0          0          1   1   1

    Bit/Field         Name          Type       Reset  Description
     31:16          SRAMSZ           RO       0x000F  SRAM Size
                                                      Indicates the size of the on-chip SRAM memory.
                                                      Value Description
                                                      0x000F 4 KB of SRAM

    15:0            FLASHSZ         RO        0x0007 Flash Size

                                                      Indicates the size of the on-chip flash memory.

                                                      Value Description
                                                      0x0007 16 KB of Flash

76                                                                                                     October 01, 2007

                                                  Preliminary
                                                                                                 LM3S300 Microcontroller

              Register 15: Device Capabilities 1 (DC1), offset 0x010

              This register provides a list of features available in the system. The Stellaris family uses this register
              format to indicate the availability of the following family features in the specific device: PWM, ADC,
              Watchdog timer, and debug capabilities. This register also indicates the maximum clock frequency
              and maximum ADC sample rate. The format of this register is consistent with the RCGC0, SCGC0,
              and DCGC0 clock control registers and the SRCR0 software reset control register.

Device Capabilities 1 (DC1)

Base 0x400F.E000
Offset 0x010
Type RO, reset 0x0000.709F

          31  30            29   28  27    26     25       24           23  22     21       20   19         18    17        16

                                                              reserved

Type RO       RO            RO   RO  RO    RO     RO       RO  RO           RO     RO       RO   RO         RO    RO        RO

Reset     0   0             0    0   0     0            0  0            0   0            0  0    0          0     0             0

          15  14            13   12  11    10           9  8            7   6            5  4    3          2     1             0

              MINSYSDIV                       reserved         MPU             reserved     PLL  WDT SWO SWD JTAG

Type RO       RO            RO   RO  RO    RO     RO       RO  RO           RO     RO       RO   RO         RO    RO        RO

Reset     0   1             1    1   0     0            0  0            1   0            0  1    1          1     1             1

Bit/Field             Name           Type      Reset       Description
31:16              reserved          RO          0
                                                           Software should not rely on the value of a reserved bit. To provide
15:12            MINSYSDIV           RO        0x7        compatibility with future products, the value of a reserved bit should be
                                                           preserved across a read-modify-write operation.

                                                           System Clock Divider
                                                           Minimum 4-bit divider value for system clock. The reset value is
                                                           hardware-dependent. See the RCC register for how to change the
                                                           system clock divisor using the SYSDIV bit.

                                                           Value Description
                                                           0x7 Specifies a 25-MHz clock with a PLL divider of 8.

11:8              reserved           RO        0           Software should not rely on the value of a reserved bit. To provide

                                                           compatibility with future products, the value of a reserved bit should be

                                                           preserved across a read-modify-write operation.

       7                    MPU      RO        1           MPU Present

                                                           When set, indicates that the Cortex-M3 Memory Protection Unit (MPU)
                                                           module is present. See the ARM Cortex-M3 Technical Reference Manual
                                                           for details on the MPU.

6:5               reserved           RO        0           Software should not rely on the value of a reserved bit. To provide

                                                           compatibility with future products, the value of a reserved bit should be

                                                           preserved across a read-modify-write operation.

       4                    PLL      RO        1           PLL Present

                                                           When set, indicates that the on-chip Phase Locked Loop (PLL) is
                                                           present.

       3                    WDT      RO        1           Watchdog Timer Present

                                                           When set, indicates that a watchdog timer is present.

October 01, 2007                                                                                                                   77

                                                           Preliminary
System Control

    Bit/Field   Name  Type  Reset  Description
        2       SWO    RO      1
                                   SWO Trace Port Present
        1       SWD    RO      1   When set, indicates that the Serial Wire Output (SWO) trace port is
        0       JTAG   RO      1   present.

                                   SWD Present
                                   When set, indicates that the Serial Wire Debugger (SWD) is present.

                                   JTAG Present
                                   When set, indicates that the JTAG debugger interface is present.

78                                              October 01, 2007

                                   Preliminary
                                                                                            LM3S300 Microcontroller

           Register 16: Device Capabilities 2 (DC2), offset 0x014

           This register provides a list of features available in the system. The Stellaris family uses this register
           format to indicate the availability of the following family features in the specific device: Analog
           Comparators, General-Purpose Timers, I2Cs, QEIs, SSIs, and UARTs. The format of this register
           is consistent with the RCGC1, SCGC1, and DCGC1 clock control registers and the SRCR1 software
           reset control register.

Device Capabilities 2 (DC2)

Base 0x400F.E000
Offset 0x014
Type RO, reset 0x0707.1013

       31  30               29  28    27    26  25     24           23  22  21        20    19  18          17  16

                     reserved               COMP2 COMP1 COMP0               reserved            TIMER2 TIMER1 TIMER0

Type RO    RO               RO  RO    RO    RO  RO     RO        RO     RO  RO        RO    RO  RO          RO  RO

Reset  0   0                0   0     0     1   1      1            0   0   0         0     0            1  1   1

       15  14               13   12   11    10  9      8            7   6   5         4     3            2  1   0

           reserved             I2C0                   reserved                       SSI0     reserved     UART1 UART0

Type RO    RO               RO  RO    RO    RO  RO     RO        RO     RO  RO        RO    RO  RO          RO  RO
                                  1
Reset  0   0                0         0     0   0      0            0   0   0         1     0            0  1   1

Bit/Field             Name            Type      Reset  Description
31:27               reserved          RO          0
   26                COMP2             RO          1   Software should not rely on the value of a reserved bit. To provide
   25                COMP1             RO          1   compatibility with future products, the value of a reserved bit should be
   24                COMP0             RO          1   preserved across a read-modify-write operation.
23:19               reserved          RO          0
   18                TIMER2            RO          1   Analog Comparator 2 Present
   17                TIMER1            RO          1   When set, indicates that analog comparator 2 is present.
   16                TIMER0            RO          1
15:13               reserved          RO          0   Analog Comparator 1 Present
   12                                  RO          1   When set, indicates that analog comparator 1 is present.
                       I2C0
                                                       Analog Comparator 0 Present
                                                       When set, indicates that analog comparator 0 is present.

                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

                                                       Timer 2 Present
                                                       When set, indicates that General-Purpose Timer module 2 is present.

                                                       Timer 1 Present
                                                       When set, indicates that General-Purpose Timer module 1 is present.

                                                       Timer 0 Present
                                                       When set, indicates that General-Purpose Timer module 0 is present.

                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

                                                       I2C Module 0 Present
                                                       When set, indicates that I2C module 0 is present.

October 01, 2007                                                                                                    79

                                                       Preliminary
System Control

    Bit/Field    Name     Type  Reset  Description
      11:5      reserved   RO      0
        4                  RO      1   Software should not rely on the value of a reserved bit. To provide
       3:2        SSI0     RO      0   compatibility with future products, the value of a reserved bit should be
        1       reserved   RO      1   preserved across a read-modify-write operation.
        0       UART1      RO      1
                UART0                  SSI0 Present
                                       When set, indicates that SSI module 0 is present.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       UART1 Present
                                       When set, indicates that UART module 1 is present.

                                       UART0 Present
                                       When set, indicates that UART module 0 is present.

80                                                  October 01, 2007

                                       Preliminary
                                                                                    LM3S300 Microcontroller

           Register 17: Device Capabilities 3 (DC3), offset 0x018

           This register provides a list of features available in the system. The Stellaris family uses this register
           format to indicate the availability of the following family features in the specific device: Analog
           Comparator I/Os, CCP I/Os, ADC I/Os, and PWM I/Os.

Device Capabilities 3 (DC3)

Base 0x400F.E000
Offset 0x018
Type RO, reset 0x3F00.7FC0

       31  30               29    28  27    26  25     24           23  22  21  20  19          18           17  16

           reserved         CCP5 CCP4 CCP3 CCP2 CCP1 CCP0                          reserved

Type RO    RO               RO    RO  RO    RO  RO     RO  RO           RO  RO  RO  RO          RO           RO  RO

Reset  0             0      1     1   1     1   1      1            0   0   0   0            0            0  0   0

       15  14               13    12  11    10  9      8            7   6   5   4            3            2  1   0

       reserved C2O C2PLUS C2MINUS C1O C1PLUS C1MINUS C0O C0PLUS C0MINUS                        reserved

Type RO    RO               RO    RO  RO    RO  RO     RO  RO           RO  RO  RO  RO          RO           RO  RO

Reset  0             1      1     1   1     1   1      1            1   1   0   0            0            0  0   0

Bit/Field                Name         Type      Reset  Description
31:30                  reserved       RO          0
   29                                  RO          1   Software should not rely on the value of a reserved bit. To provide
   28                    CCP5          RO          1   compatibility with future products, the value of a reserved bit should be
   27                    CCP4          RO          1   preserved across a read-modify-write operation.
   26                    CCP3          RO          1
   25                    CCP2          RO          1   CCP5 Pin Present
   24                    CCP1          RO          1   When set, indicates that Capture/Compare/PWM pin 5 is present.
23:15                   CCP0          RO          0
   14                   reserved       RO          1   CCP4 Pin Present
   13                     C2O          RO          1   When set, indicates that Capture/Compare/PWM pin 4 is present.
                        C2PLUS
                                                       CCP3 Pin Present
                                                       When set, indicates that Capture/Compare/PWM pin 3 is present.

                                                       CCP2 Pin Present
                                                       When set, indicates that Capture/Compare/PWM pin 2 is present.

                                                       CCP1 Pin Present
                                                       When set, indicates that Capture/Compare/PWM pin 1 is present.

                                                       CCP0 Pin Present
                                                       When set, indicates that Capture/Compare/PWM pin 0 is present.

                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

                                                       C2o Pin Present
                                                       When set, indicates that the analog comparator 2 output pin is present.

                                                       C2+ Pin Present
                                                       When set, indicates that the analog comparator 2 (+) input pin is present.

October 01, 2007                                                                                                     81

                                                       Preliminary
System Control

    Bit/Field     Name    Type  Reset  Description
       12       C2MINUS    RO      1
       11                  RO      1   C2- Pin Present
       10          C1O     RO      1   When set, indicates that the analog comparator 2 (-) input pin is present.
        9       C1PLUS     RO      1
        8       C1MINUS    RO      1   C1o Pin Present
        7                  RO      1   When set, indicates that the analog comparator 1 output pin is present.
        6          C0O     RO      1
       5:0      C0PLUS     RO      0   C1+ Pin Present
                C0MINUS                When set, indicates that the analog comparator 1 (+) input pin is present.
                reserved
                                       C1- Pin Present
                                       When set, indicates that the analog comparator 1 (-) input pin is present.

                                       C0o Pin Present
                                       When set, indicates that the analog comparator 0 output pin is present.

                                       C0+ Pin Present
                                       When set, indicates that the analog comparator 0 (+) input pin is present.

                                       C0- Pin Present
                                       When set, indicates that the analog comparator 0 (-) input pin is present.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

82                                                  October 01, 2007

                                       Preliminary
                                                                                     LM3S300 Microcontroller

           Register 18: Device Capabilities 4 (DC4), offset 0x01C

           This register provides a list of features available in the system. The Stellaris family uses this register
           format to indicate the availability of GPIOs in the specific device. The format of this register is
           consistent with the RCGC2, SCGC2, and DCGC2 clock control registers and the SRCR2 software
           reset control register.

Device Capabilities 4 (DC4)

Base 0x400F.E000
Offset 0x01C
Type RO, reset 0x0000.001F

       31  30               29  28  27    26        25  24           23  22  21  20  19  18  17  16

                                                           reserved

Type RO    RO               RO  RO  RO    RO        RO  RO  RO           RO  RO  RO  RO  RO  RO  RO

Reset  0   0                0   0   0     0         0   0            0   0   0   0   0   0   0   0

       15  14               13  12  11    10        9   8            7   6   5   4   3   2   1   0

                                          reserved                               GPIOE GPIOD GPIOC GPIOB GPIOA

Type RO    RO               RO  RO  RO    RO        RO  RO  RO           RO  RO  RO  RO  RO  RO  RO

Reset  0   0                0   0   0     0         0   0            0   0   0   1   1   1   1   1

Bit/Field          Name             Type      Reset     Description
  31:5            reserved           RO          0
    4              GPIOE             RO          1      Software should not rely on the value of a reserved bit. To provide
    3              GPIOD             RO          1      compatibility with future products, the value of a reserved bit should be
    2              GPIOC             RO          1      preserved across a read-modify-write operation.
    1              GPIOB             RO          1
    0              GPIOA             RO          1      GPIO Port E Present
                                                        When set, indicates that GPIO Port E is present.

                                                        GPIO Port D Present
                                                        When set, indicates that GPIO Port D is present.

                                                        GPIO Port C Present
                                                        When set, indicates that GPIO Port C is present.

                                                        GPIO Port B Present
                                                        When set, indicates that GPIO Port B is present.

                                                        GPIO Port A Present
                                                        When set, indicates that GPIO Port A is present.

October 01, 2007                                                                                     83

                                                        Preliminary
System Control

               Register 19: Run Mode Clock Gating Control Register 0 (RCGC0), offset 0x100

               This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
               function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
               disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
               The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
               disabled. It is the responsibility of software to enable the ports necessary for the application. Note
               that these registers may contain more bits than there are interfaces, functions, or units to control.
               This is to assure reasonable code compatibility with other family and future parts. RCGC0 is the
               clock configuration register for running operation, SCGC0 for Sleep operation, and DCGC0 for
               Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
               specifies that the system uses sleep modes.

Run Mode Clock Gating Control Register 0 (RCGC0)

Base 0x400F.E000
Offset 0x100
Type R/W, reset 0x00000040

       31       30          29  28  27    26      25      24           23  22  21  20  19   18  17        16

                                                             reserved

    Type RO     RO          RO  RO  RO    RO  RO          RO  RO           RO  RO  RO  RO   RO  RO        RO

Reset  0        0           0   0   0     0            0  0            0   0   0   0   0    0   0         0

       15       14          13  12  11    10           9  8            7   6   5   4   3    2   1         0

                                             reserved                                  WDT      reserved

    Type RO     RO          RO  RO  RO    RO  RO          RO  RO           RO  RO  RO  R/W  RO  RO        RO

Reset  0        0           0   0   0     0            0  0            0   0   0   0   0    0   0         0

    Bit/Field        Name           Type      Reset       Description
      31:4          reserved         RO          0
        3                           R/W          0        Software should not rely on the value of a reserved bit. To provide
                      WDT                                 compatibility with future products, the value of a reserved bit should be
       2:0                           RO          0        preserved across a read-modify-write operation.
                    reserved
                                                          WDT Clock Gating Control

                                                          This bit controls the clock gating for the WDT module. If set, the unit
                                                          receives a clock and functions. Otherwise, the unit is unclocked and
                                                          disabled. If the unit is unclocked, a read or write to the unit generates
                                                          a bus fault.

                                                          Software should not rely on the value of a reserved bit. To provide
                                                          compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

84                                                                                          October 01, 2007

                                                          Preliminary
                                                                                   LM3S300 Microcontroller

           Register 20: Sleep Mode Clock Gating Control Register 0 (SCGC0), offset
           0x110

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC0 is the
           clock configuration register for running operation, SCGC0 for Sleep operation, and DCGC0 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Sleep Mode Clock Gating Control Register 0 (SCGC0)

Base 0x400F.E000
Offset 0x110
Type R/W, reset 0x00000040

       31  30     29        28  27    26  25          24           23  22  21  20  19   18  17        16

                                                         reserved

Type RO    RO     RO        RO  RO    RO  RO          RO  RO           RO  RO  RO  RO   RO  RO        RO

Reset  0   0      0         0   0     0            0  0            0   0   0   0   0    0   0         0

       15  14     13        12  11    10           9  8            7   6   5   4   3    2   1         0

                                         reserved                                  WDT      reserved

Type RO    RO     RO        RO  RO    RO  RO          RO  RO           RO  RO  RO  R/W  RO  RO        RO

Reset  0   0      0         0   0     0            0  0            0   0   0   0   0    0   0         0

Bit/Field          Name         Type      Reset       Description
  31:4            reserved       RO          0
    3                           R/W          0        Software should not rely on the value of a reserved bit. To provide
                    WDT                               compatibility with future products, the value of a reserved bit should be
   2:0                           RO          0        preserved across a read-modify-write operation.
                  reserved
                                                      WDT Clock Gating Control

                                                      This bit controls the clock gating for the WDT module. If set, the unit
                                                      receives a clock and functions. Otherwise, the unit is unclocked and
                                                      disabled. If the unit is unclocked, a read or write to the unit generates
                                                      a bus fault.

                                                      Software should not rely on the value of a reserved bit. To provide
                                                      compatibility with future products, the value of a reserved bit should be
                                                      preserved across a read-modify-write operation.

October 01, 2007                                                                                          85

                                                      Preliminary
System Control

               Register 21: Deep Sleep Mode Clock Gating Control Register 0 (DCGC0),
               offset 0x120

               This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
               function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
               disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
               The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
               disabled. It is the responsibility of software to enable the ports necessary for the application. Note
               that these registers may contain more bits than there are interfaces, functions, or units to control.
               This is to assure reasonable code compatibility with other family and future parts. RCGC0 is the
               clock configuration register for running operation, SCGC0 for Sleep operation, and DCGC0 for
               Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
               specifies that the system uses sleep modes.

Deep Sleep Mode Clock Gating Control Register 0 (DCGC0)

Base 0x400F.E000
Offset 0x120
Type R/W, reset 0x00000040

       31       30  29        28  27    26  25          24           23  22  21  20  19   18  17        16

                                                            reserved

    Type RO     RO  RO        RO  RO    RO  RO          RO  RO           RO  RO  RO  RO   RO  RO        RO

Reset  0        0   0         0   0     0            0   0            0  0   0   0   0    0   0         0

       15       14  13        12  11    10           9   8            7  6   5   4   3    2   1         0

                                           reserved                                  WDT      reserved

    Type RO     RO  RO        RO  RO    RO  RO          RO  RO           RO  RO  RO  R/W  RO  RO        RO

Reset  0        0   0         0   0     0            0   0            0  0   0   0   0    0   0         0

    Bit/Field        Name         Type      Reset       Description
      31:4          reserved       RO          0
        3                         R/W          0        Software should not rely on the value of a reserved bit. To provide
                      WDT                               compatibility with future products, the value of a reserved bit should be
       2:0                         RO          0        preserved across a read-modify-write operation.
                    reserved
                                                        WDT Clock Gating Control

                                                        This bit controls the clock gating for the WDT module. If set, the unit
                                                        receives a clock and functions. Otherwise, the unit is unclocked and
                                                        disabled. If the unit is unclocked, a read or write to the unit generates
                                                        a bus fault.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

86                                                                                        October 01, 2007

                                                        Preliminary
                                                                                             LM3S300 Microcontroller

           Register 22: Run Mode Clock Gating Control Register 1 (RCGC1), offset 0x104

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC1 is the
           clock configuration register for running operation, SCGC1 for Sleep operation, and DCGC1 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Run Mode Clock Gating Control Register 1 (RCGC1)

Base 0x400F.E000
Offset 0x104
Type R/W, reset 0x00000000

       31  30               29  28    27    26    25    24           23  22  21        20    19  18          17   16

                     reserved               COMP2 COMP1 COMP0                reserved            TIMER2 TIMER1 TIMER0

Type RO    RO               RO  RO    RO    R/W  R/W    R/W       RO     RO  RO        RO    RO  R/W         R/W  R/W

Reset  0   0                0   0     0     0     0     0            0   0   0         0     0            0  0    0

       15  14               13  12    11    10    9     8            7   6   5         4     3            2  1    0

           reserved             I2C0                    reserved                       SSI0     reserved     UART1 UART0

Type RO    RO               RO  R/W   RO    RO   RO     RO        RO     RO  RO        R/W   RO  RO          R/W  R/W

Reset  0   0                0   0     0     0     0     0            0   0   0         0     0            0  0    0

Bit/Field             Name            Type       Reset  Description
31:27               reserved          RO           0
   26                COMP2            R/W           0   Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
   25                COMP1            R/W           0   preserved across a read-modify-write operation.

   24                COMP0            R/W           0   Analog Comparator 2 Clock Gating

23:19               reserved          RO           0   This bit controls the clock gating for analog comparator 2. If set, the unit
                                                        receives a clock and functions. Otherwise, the unit is unclocked and
                                                        disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                        a bus fault.

                                                        Analog Comparator 1 Clock Gating

                                                        This bit controls the clock gating for analog comparator 1. If set, the unit
                                                        receives a clock and functions. Otherwise, the unit is unclocked and
                                                        disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                        a bus fault.

                                                        Analog Comparator 0 Clock Gating

                                                        This bit controls the clock gating for analog comparator 0. If set, the unit
                                                        receives a clock and functions. Otherwise, the unit is unclocked and
                                                        disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                        a bus fault.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

October 01, 2007                                                                                                      87

                                                        Preliminary
System Control

    Bit/Field    Name     Type  Reset  Description
       18       TIMER2    R/W      0
                                       Timer 2 Clock Gating Control
       17       TIMER1    R/W      0
                                       This bit controls the clock gating for General-Purpose Timer module 2.
       16       TIMER0    R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
     15:13      reserved   RO      0   unit will generate a bus fault.
       12         I2C0    R/W      0
      11:5                 RO      0   Timer 1 Clock Gating Control
        4       reserved  R/W      0
       3:2        SSI0     RO      0   This bit controls the clock gating for General-Purpose Timer module 1.
        1                 R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                reserved               unclocked and disabled. If the unit is unclocked, reads or writes to the
        0       UART1     R/W      0   unit will generate a bus fault.

                UART0                  Timer 0 Clock Gating Control

                                       This bit controls the clock gating for General-Purpose Timer module 0.
                                       If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
                                       unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       I2C0 Clock Gating Control

                                       This bit controls the clock gating for I2C module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       SSI0 Clock Gating Control

                                       This bit controls the clock gating for SSI module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       UART1 Clock Gating Control

                                       This bit controls the clock gating for UART module 1. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

                                       UART0 Clock Gating Control

                                       This bit controls the clock gating for UART module 0. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

88                                                  October 01, 2007

                                       Preliminary
                                                                                            LM3S300 Microcontroller

           Register 23: Sleep Mode Clock Gating Control Register 1 (SCGC1), offset
           0x114

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC1 is the
           clock configuration register for running operation, SCGC1 for Sleep operation, and DCGC1 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Sleep Mode Clock Gating Control Register 1 (SCGC1)

Base 0x400F.E000
Offset 0x114
Type R/W, reset 0x00000000

       31  30        29        28    27    26   25     24           23  22  21        20    19  18          17   16

                     reserved              COMP2 COMP1 COMP0                reserved            TIMER2 TIMER1 TIMER0

Type RO    RO        RO        RO    RO    R/W  R/W    R/W       RO     RO  RO        RO    RO  R/W         R/W  R/W

Reset  0   0         0         0     0     0    0      0            0   0   0         0     0            0  0    0

       15  14        13        12    11    10   9      8            7   6   5         4     3            2  1    0

           reserved            I2C0                    reserved                       SSI0     reserved     UART1 UART0

Type RO    RO        RO        R/W   RO    RO   RO     RO        RO     RO  RO        R/W   RO  RO          R/W  R/W

Reset  0   0         0         0     0     0    0      0            0   0   0         0     0            0  0    0

Bit/Field             Name           Type       Reset  Description
31:27               reserved         RO           0
   26                COMP2           R/W           0   Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
   25                COMP1           R/W           0   preserved across a read-modify-write operation.

   24                COMP0           R/W           0   Analog Comparator 2 Clock Gating

23:19               reserved         RO           0   This bit controls the clock gating for analog comparator 2. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Analog Comparator 1 Clock Gating

                                                       This bit controls the clock gating for analog comparator 1. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Analog Comparator 0 Clock Gating

                                                       This bit controls the clock gating for analog comparator 0. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

October 01, 2007                                                                                                     89

                                                       Preliminary
System Control

    Bit/Field    Name     Type  Reset  Description
       18       TIMER2    R/W      0
                                       Timer 2 Clock Gating Control
       17       TIMER1    R/W      0
                                       This bit controls the clock gating for General-Purpose Timer module 2.
       16       TIMER0    R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
     15:13      reserved   RO      0   unit will generate a bus fault.
       12         I2C0    R/W      0
      11:5                 RO      0   Timer 1 Clock Gating Control
        4       reserved  R/W      0
       3:2        SSI0     RO      0   This bit controls the clock gating for General-Purpose Timer module 1.
        1                 R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                reserved               unclocked and disabled. If the unit is unclocked, reads or writes to the
        0       UART1     R/W      0   unit will generate a bus fault.

                UART0                  Timer 0 Clock Gating Control

                                       This bit controls the clock gating for General-Purpose Timer module 0.
                                       If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
                                       unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       I2C0 Clock Gating Control

                                       This bit controls the clock gating for I2C module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       SSI0 Clock Gating Control

                                       This bit controls the clock gating for SSI module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       UART1 Clock Gating Control

                                       This bit controls the clock gating for UART module 1. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

                                       UART0 Clock Gating Control

                                       This bit controls the clock gating for UART module 0. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

90                                                  October 01, 2007

                                       Preliminary
                                                                                            LM3S300 Microcontroller

           Register 24: Deep Sleep Mode Clock Gating Control Register 1 (DCGC1),
           offset 0x124

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC1 is the
           clock configuration register for running operation, SCGC1 for Sleep operation, and DCGC1 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Deep Sleep Mode Clock Gating Control Register 1 (DCGC1)

Base 0x400F.E000
Offset 0x124
Type R/W, reset 0x00000000

       31  30        29        28    27    26   25     24           23  22  21        20    19  18          17   16

                     reserved              COMP2 COMP1 COMP0                reserved            TIMER2 TIMER1 TIMER0

Type RO    RO        RO        RO    RO    R/W  R/W    R/W       RO     RO  RO        RO    RO  R/W         R/W  R/W

Reset  0   0         0         0     0     0    0        0          0   0   0         0     0            0  0    0

       15  14        13        12    11    10   9        8          7   6   5         4     3            2  1    0

           reserved            I2C0                    reserved                       SSI0     reserved     UART1 UART0

Type RO    RO        RO        R/W   RO    RO   RO     RO        RO     RO  RO        R/W   RO  RO          R/W  R/W

Reset  0   0         0         0     0     0    0        0          0   0   0         0     0            0  0    0

Bit/Field             Name           Type       Reset  Description
31:27               reserved         RO           0
   26                COMP2           R/W           0   Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
   25                COMP1           R/W           0   preserved across a read-modify-write operation.

   24                COMP0           R/W           0   Analog Comparator 2 Clock Gating

23:19               reserved         RO           0   This bit controls the clock gating for analog comparator 2. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Analog Comparator 1 Clock Gating

                                                       This bit controls the clock gating for analog comparator 1. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Analog Comparator 0 Clock Gating

                                                       This bit controls the clock gating for analog comparator 0. If set, the unit
                                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                                       a bus fault.

                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

October 01, 2007                                                                                                     91

                                                       Preliminary
System Control

    Bit/Field    Name     Type  Reset  Description
       18       TIMER2    R/W      0
                                       Timer 2 Clock Gating Control
       17       TIMER1    R/W      0
                                       This bit controls the clock gating for General-Purpose Timer module 2.
       16       TIMER0    R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
     15:13      reserved   RO      0   unit will generate a bus fault.
       12         I2C0    R/W      0
      11:5                 RO      0   Timer 1 Clock Gating Control
        4       reserved  R/W      0
       3:2        SSI0     RO      0   This bit controls the clock gating for General-Purpose Timer module 1.
        1                 R/W      0   If set, the unit receives a clock and functions. Otherwise, the unit is
                reserved               unclocked and disabled. If the unit is unclocked, reads or writes to the
        0       UART1     R/W      0   unit will generate a bus fault.

                UART0                  Timer 0 Clock Gating Control

                                       This bit controls the clock gating for General-Purpose Timer module 0.
                                       If set, the unit receives a clock and functions. Otherwise, the unit is
                                       unclocked and disabled. If the unit is unclocked, reads or writes to the
                                       unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       I2C0 Clock Gating Control

                                       This bit controls the clock gating for I2C module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       SSI0 Clock Gating Control

                                       This bit controls the clock gating for SSI module 0. If set, the unit receives
                                       a clock and functions. Otherwise, the unit is unclocked and disabled. If
                                       the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                       Software should not rely on the value of a reserved bit. To provide
                                       compatibility with future products, the value of a reserved bit should be
                                       preserved across a read-modify-write operation.

                                       UART1 Clock Gating Control

                                       This bit controls the clock gating for UART module 1. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

                                       UART0 Clock Gating Control

                                       This bit controls the clock gating for UART module 0. If set, the unit
                                       receives a clock and functions. Otherwise, the unit is unclocked and
                                       disabled. If the unit is unclocked, reads or writes to the unit will generate
                                       a bus fault.

92                                                  October 01, 2007

                                       Preliminary
                                                                                      LM3S300 Microcontroller

           Register 25: Run Mode Clock Gating Control Register 2 (RCGC2), offset 0x108

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC2 is the
           clock configuration register for running operation, SCGC2 for Sleep operation, and DCGC2 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Run Mode Clock Gating Control Register 2 (RCGC2)

Base 0x400F.E000
Offset 0x108
Type R/W, reset 0x00000000

       31  30               29  28  27    26        25  24           23  22  21  20   19   18   17   16

                                                           reserved

Type RO    RO               RO  RO  RO    RO        RO  RO  RO           RO  RO  RO   RO   RO   RO   RO

Reset  0   0                0   0   0     0         0   0            0   0   0   0    0    0    0    0

       15  14               13  12  11    10        9   8            7   6   5   4    3    2    1    0

                                          reserved                               GPIOE GPIOD GPIOC GPIOB GPIOA

Type RO    RO               RO  RO  RO    RO        RO  RO  RO           RO  RO  R/W  R/W  R/W  R/W  R/W

Reset  0   0                0   0   0     0         0   0            0   0   0   0    0    0    0    0

Bit/Field          Name             Type      Reset     Description
  31:5            reserved           RO          0
    4              GPIOE            R/W          0      Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
    3              GPIOD            R/W          0      preserved across a read-modify-write operation.

    2              GPIOC            R/W          0      Port E Clock Gating Control

    1              GPIOB            R/W          0      This bit controls the clock gating for Port E. If set, the unit receives a
                                                        clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                        the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                        Port D Clock Gating Control

                                                        This bit controls the clock gating for Port D. If set, the unit receives a
                                                        clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                        the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                        Port C Clock Gating Control

                                                        This bit controls the clock gating for Port C. If set, the unit receives a
                                                        clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                        the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                        Port B Clock Gating Control

                                                        This bit controls the clock gating for Port B. If set, the unit receives a
                                                        clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                        the unit is unclocked, reads or writes to the unit will generate a bus fault.

October 01, 2007                                                                                         93

                                                        Preliminary
System Control

    Bit/Field   Name   Type  Reset  Description
        0       GPIOA  R/W      0
                                    Port A Clock Gating Control

                                    This bit controls the clock gating for Port A. If set, the unit receives a
                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

94                                               October 01, 2007

                                    Preliminary
                                                                                  LM3S300 Microcontroller

           Register 26: Sleep Mode Clock Gating Control Register 2 (SCGC2), offset
           0x118

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC2 is the
           clock configuration register for running operation, SCGC2 for Sleep operation, and DCGC2 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Sleep Mode Clock Gating Control Register 2 (SCGC2)

Base 0x400F.E000
Offset 0x118
Type R/W, reset 0x00000000

       31  30     29        28  27    26        25  24           23  22  21  20   19   18   17   16

                                                       reserved

Type RO    RO     RO        RO  RO    RO        RO  RO  RO           RO  RO  RO   RO   RO   RO   RO

Reset  0   0      0         0   0     0         0   0            0   0   0   0    0    0    0    0

       15  14     13        12  11    10        9   8            7   6   5   4    3    2    1    0

                                      reserved                               GPIOE GPIOD GPIOC GPIOB GPIOA

Type RO    RO     RO        RO  RO    RO        RO  RO  RO           RO  RO  R/W  R/W  R/W  R/W  R/W

Reset  0   0      0         0   0     0         0   0            0   0   0   0    0    0    0    0

Bit/Field          Name         Type      Reset     Description
  31:5            reserved       RO          0
    4              GPIOE        R/W          0      Software should not rely on the value of a reserved bit. To provide
                                                    compatibility with future products, the value of a reserved bit should be
    3              GPIOD        R/W          0      preserved across a read-modify-write operation.

    2              GPIOC        R/W          0      Port E Clock Gating Control

    1              GPIOB        R/W          0      This bit controls the clock gating for Port E. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port D Clock Gating Control

                                                    This bit controls the clock gating for Port D. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port C Clock Gating Control

                                                    This bit controls the clock gating for Port C. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port B Clock Gating Control

                                                    This bit controls the clock gating for Port B. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

October 01, 2007                                                                                     95

                                                    Preliminary
System Control

    Bit/Field   Name   Type  Reset  Description
        0       GPIOA  R/W      0
                                    Port A Clock Gating Control

                                    This bit controls the clock gating for Port A. If set, the unit receives a
                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

96                                               October 01, 2007

                                    Preliminary
                                                                                      LM3S300 Microcontroller

           Register 27: Deep Sleep Mode Clock Gating Control Register 2 (DCGC2),
           offset 0x128

           This register controls the clock gating logic. Each bit controls a clock enable for a given interface,
           function, or unit. If set, the unit receives a clock and functions. Otherwise, the unit is unclocked and
           disabled (saving power). If the unit is unclocked, reads or writes to the unit will generate a bus fault.
           The reset state of these bits is 0 (unclocked) unless otherwise noted, so that all functional units are
           disabled. It is the responsibility of software to enable the ports necessary for the application. Note
           that these registers may contain more bits than there are interfaces, functions, or units to control.
           This is to assure reasonable code compatibility with other family and future parts. RCGC2 is the
           clock configuration register for running operation, SCGC2 for Sleep operation, and DCGC2 for
           Deep-Sleep operation. Setting the ACG bit in the Run-Mode Clock Configuration (RCC) register
           specifies that the system uses sleep modes.

Deep Sleep Mode Clock Gating Control Register 2 (DCGC2)

Base 0x400F.E000
Offset 0x128
Type R/W, reset 0x00000000

       31  30     29        28  27    26        25  24           23      22  21  20   19   18   17   16

                                                            reserved

Type RO    RO     RO        RO  RO    RO        RO  RO      RO           RO  RO  RO   RO   RO   RO   RO

Reset  0   0      0         0   0     0         0        0            0  0   0   0    0    0    0    0

       15  14     13        12  11    10        9        8            7  6   5   4    3    2    1    0

                                      reserved                                   GPIOE GPIOD GPIOC GPIOB GPIOA

Type RO    RO     RO        RO  RO    RO        RO  RO      RO           RO  RO  R/W  R/W  R/W  R/W  R/W

Reset  0   0      0         0   0     0         0        0            0  0   0   0    0    0    0    0

Bit/Field          Name         Type      Reset     Description
  31:5            reserved       RO          0
    4              GPIOE        R/W          0      Software should not rely on the value of a reserved bit. To provide
                                                    compatibility with future products, the value of a reserved bit should be
    3              GPIOD        R/W          0      preserved across a read-modify-write operation.

    2              GPIOC        R/W          0      Port E Clock Gating Control

    1              GPIOB        R/W          0      This bit controls the clock gating for Port E. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port D Clock Gating Control

                                                    This bit controls the clock gating for Port D. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port C Clock Gating Control

                                                    This bit controls the clock gating for Port C. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

                                                    Port B Clock Gating Control

                                                    This bit controls the clock gating for Port B. If set, the unit receives a
                                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

October 01, 2007                                                                                         97

                                                    Preliminary
System Control

    Bit/Field   Name   Type  Reset  Description
        0       GPIOA  R/W      0
                                    Port A Clock Gating Control

                                    This bit controls the clock gating for Port A. If set, the unit receives a
                                    clock and functions. Otherwise, the unit is unclocked and disabled. If
                                    the unit is unclocked, reads or writes to the unit will generate a bus fault.

98                                               October 01, 2007

                                    Preliminary
                                                                                       LM3S300 Microcontroller

           Register 28: Software Reset Control 0 (SRCR0), offset 0x040

           Writes to this register are masked by the bits in the Device Capabilities 1 (DC1) register.

Software Reset Control 0 (SRCR0)

Base 0x400F.E000
Offset 0x040
Type R/W, reset 0x00000000

       31  30               29  28  27    26  25          24           23  22  21  20  19   18  17        16

                                                             reserved

Type RO    RO               RO  RO  RO    RO  RO          RO  RO           RO  RO  RO  RO   RO  RO        RO

Reset  0   0                0   0   0     0            0  0            0   0   0   0   0    0   0         0

       15  14               13  12  11    10           9  8            7   6   5   4   3    2   1         0

                                             reserved                                  WDT      reserved

Type RO    RO               RO  RO  RO    RO  RO          RO  RO           RO  RO  RO  R/W  RO  RO        RO

Reset  0   0                0   0   0     0            0  0            0   0   0   0   0    0   0         0

Bit/Field          Name             Type      Reset       Description
  31:4            reserved           RO          0
                                                          Software should not rely on the value of a reserved bit. To provide
    3               WDT             R/W          0        compatibility with future products, the value of a reserved bit should be
   2:0            reserved           RO          0        preserved across a read-modify-write operation.

                                                          WDT Reset Control
                                                          Reset control for Watchdog unit.

                                                          Software should not rely on the value of a reserved bit. To provide
                                                          compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

October 01, 2007                                                                                              99

                                                          Preliminary
System Control

           Register 29: Software Reset Control 1 (SRCR1), offset 0x044

           Writes to this register are masked by the bits in the Device Capabilities 2 (DC2) register.

Software Reset Control 1 (SRCR1)

Base 0x400F.E000
Offset 0x044
Type R/W, reset 0x00000000

       31       30          29  28    27    26   25     24           23  22  21        20    19  18          17   16

                     reserved               COMP2 COMP1 COMP0                reserved            TIMER2 TIMER1 TIMER0

Type RO         RO          RO  RO    RO    R/W  R/W    R/W       RO     RO  RO        RO    RO  R/W         R/W  R/W

Reset  0        0           0   0     0     0    0      0            0   0   0         0     0            0  0    0

       15       14          13  12    11    10   9      8            7   6   5         4     3            2  1    0

           reserved             I2C0                    reserved                       SSI0     reserved     UART1 UART0

Type RO         RO          RO  R/W   RO    RO   RO     RO        RO     RO  RO        R/W   RO  RO          R/W  R/W

Reset  0        0           0   0     0     0    0      0            0   0   0         0     0            0  0    0

Bit/Field             Name            Type       Reset  Description
31:27               reserved          RO           0
   26                COMP2            R/W           0   Software should not rely on the value of a reserved bit. To provide
   25                COMP1            R/W           0   compatibility with future products, the value of a reserved bit should be
   24                COMP0            R/W           0   preserved across a read-modify-write operation.
23:19               reserved          RO           0
   18                TIMER2           R/W           0   Analog Comp 2 Reset Control
   17                TIMER1           R/W           0   Reset control for analog comparator 2.
   16                TIMER0           R/W           0
15:13               reserved          RO           0   Analog Comp 1 Reset Control
   12                                 R/W           0   Reset control for analog comparator 1.
  11:5                 I2C0            RO           0
                     reserved                           Analog Comp 0 Reset Control
                                                        Reset control for analog comparator 0.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

                                                        Timer 2 Reset Control
                                                        Reset control for General-Purpose Timer module 2.

                                                        Timer 1 Reset Control
                                                        Reset control for General-Purpose Timer module 1.

                                                        Timer 0 Reset Control
                                                        Reset control for General-Purpose Timer module 0.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

                                                        I2C0 Reset Control
                                                        Reset control for I2C unit 0.

                                                        Software should not rely on the value of a reserved bit. To provide
                                                        compatibility with future products, the value of a reserved bit should be
                                                        preserved across a read-modify-write operation.

100                                                                                                       October 01, 2007

                                                        Preliminary
                                                      LM3S300 Microcontroller

Bit/Field          Name     Type  Reset  Description
    4               SSI0    R/W      0
   3:2            reserved   RO      0   SSI0 Reset Control
                                         Reset control for SSI unit 0.
    1             UART1     R/W      0
    0             UART0     R/W      0   Software should not rely on the value of a reserved bit. To provide
                                         compatibility with future products, the value of a reserved bit should be
                                         preserved across a read-modify-write operation.

                                         UART1 Reset Control
                                         Reset control for UART unit 1.

                                         UART0 Reset Control
                                         Reset control for UART unit 0.

October 01, 2007                                      101

                                         Preliminary
System Control

           Register 30: Software Reset Control 2 (SRCR2), offset 0x048

           Writes to this register are masked by the bits in the Device Capabilities 4 (DC4) register.

Software Reset Control 2 (SRCR2)

Base 0x400F.E000
Offset 0x048
Type R/W, reset 0x00000000

       31       30          29  28  27    26        25  24           23  22  21  20   19   18   17      16

                                                           reserved

Type RO         RO          RO  RO  RO    RO        RO  RO  RO           RO  RO  RO   RO   RO   RO      RO

Reset  0        0           0   0   0     0         0   0            0   0   0   0    0    0    0       0

       15       14          13  12  11    10        9   8            7   6   5   4    3    2    1       0

                                          reserved                               GPIOE GPIOD GPIOC GPIOB GPIOA

Type RO         RO          RO  RO  RO    RO        RO  RO  RO           RO  RO  R/W  R/W  R/W  R/W     R/W

Reset  0        0           0   0   0     0         0   0            0   0   0   0    0    0    0       0

Bit/Field            Name           Type      Reset     Description
  31:5              reserved         RO          0
    4                GPIOE          R/W          0      Software should not rely on the value of a reserved bit. To provide
    3                GPIOD          R/W          0      compatibility with future products, the value of a reserved bit should be
    2                GPIOC          R/W          0      preserved across a read-modify-write operation.
    1                GPIOB          R/W          0
    0                GPIOA          R/W          0      Port E Reset Control
                                                        Reset control for GPIO Port E.

                                                        Port D Reset Control
                                                        Reset control for GPIO Port D.

                                                        Port C Reset Control
                                                        Reset control for GPIO Port C.

                                                        Port B Reset Control
                                                        Reset control for GPIO Port B.

                                                        Port A Reset Control
                                                        Reset control for GPIO Port A.

102                                                                                        October 01, 2007

                                                        Preliminary
                                                          LM3S300 Microcontroller

7 Internal Memory

                The LM3S300 microcontroller comes with 4 KB of bit-banded SRAM and 16 KB of flash memory.
                The flash controller provides a user-friendly interface, making flash programming a simple task.
                Flash protection can be applied to the flash memory on a 2-KB block basis.

7.1 Block Diagram

       Figure 7-1. Flash Block Diagram

                                        Flash Timing
                                           USECRL

                  Cortex-M3   ICode     Flash Control
                              DCode
                                              FMA
                                              FMD         Flash Array
                                              FMC
                  System Bus                 FCRIS
                                              FCIM
                                           FCMISC

                  Bridge      APB

                  SRAM Array            Flash Protection

                                              FMPRE
                                              FMPPE

7.2    Functional Description

7.2.1  This section describes the functionality of both the flash and SRAM memories.

       SRAM Memory

       The internal SRAM of the Stellaris devices is located at address 0x2000.0000 of the device memory
       map. To reduce the number of time consuming read-modify-write (RMW) operations, ARM has
       introduced bit-banding technology in the Cortex-M3 processor. With a bit-band-enabled processor,
       certain regions in the memory map (SRAM and peripheral space) can use address aliases to access
       individual bits in a single, atomic operation.

       The bit-band alias is calculated by using the formula:

October 01, 2007                                                       103

                                        Preliminary
Internal Memory

7.2.2    bit-band alias = bit-band base + (byte offset * 32) + (bit number * 4)
7.2.2.1
7.2.2.2  For example, if bit 3 at address 0x2000.1000 is to be modified, the bit-band alias is calculated as:

         0x2200.0000 + (0x1000 * 32) + (3 * 4) = 0x2202.000C

         With the alias address calculated, an instruction performing a read/write to address 0x2202.000C
         allows direct access to only bit 3 of the byte at address 0x2000.1000.

         For details about bit-banding, please refer to Chapter 4, "Memory Map" in the ARM CortexTM-M3
         Technical Reference Manual.

         Flash Memory

         The flash is organized as a set of 1-KB blocks that can be individually erased. Erasing a block
         causes the entire contents of the block to be reset to all 1s. An individual 32-bit word can be
         programmed to change bits that are currently 1 to a 0. These blocks are paired into a set of 2-KB
         blocks that can be individually protected. The protection allows blocks to be marked as read-only
         or execute-only, providing different levels of code protection. Read-only blocks cannot be erased
         or programmed, protecting the contents of those blocks from being modified. Execute-only blocks
         cannot be erased or programmed, and can only be read by the controller instruction fetch mechanism,
         protecting the contents of those blocks from being read by either the controller or by a debugger.

         See also "Serial Flash Loader" on page 360 for a preprogrammed flash-resident utility used to
         download code to the flash memory of a device without the use of a debug interface.

         Flash Memory Timing

         The timing for the flash is automatically handled by the flash controller. However, in order to do so,
         it must know the clock rate of the system in order to time its internal signals properly. The number
         of clock cycles per microsecond must be provided to the flash controller for it to accomplish this
         timing. It is software's responsibility to keep the flash controller updated with this information via the
         USec Reload (USECRL) register.

         On reset, the USECRL register is loaded with a value that configures the flash timing so that it works
         with the maximum clock rate of the part. If software changes the system operating frequency, the
         new operating frequency minus 1 (in MHz) must be loaded into USECRL before any flash
         modifications are attempted. For example, if the device is operating at a speed of 20 MHz, a value
         of 0x13 (20-1) must be written to the USECRL register.

         Flash Memory Protection

         The user is provided two forms of flash protection per 2-KB flash blocks in two 32-bit wide
         registers.The protection policy for each form is controlled by individual bits (per policy per block) in
         the FMPPEn and FMPREn registers.

          Flash Memory Protection Program Enable (FMPPEn): If set, the block may be programmed
             (written) or erased. If cleared, the block may not be changed.

          Flash Memory Protection Read Enable (FMPREn): If set, the block may be executed or read
             by software or debuggers. If cleared, the block may only be executed. The contents of the memory
             block are prohibited from being accessed as data and traversing the DCode bus.

         The policies may be combined as shown in Table 7-1 on page 105.

104                           October 01, 2007

                 Preliminary
                                                                                        LM3S300 Microcontroller

         Table 7-1. Flash Protection Policy Combinations

         FMPPEn FMPREn Protection

         0        0 Execute-only protection. The block may only be executed and may not be written or erased. This mode

                  is used to protect code.

         1        0 The block may be written, erased or executed, but not read. This combination is unlikely to be used.

         0        1 Read-only protection. The block may be read or executed but may not be written or erased. This mode

                  is used to lock the block from further modification while allowing any read or execute access.

         1        1 No protection. The block may be written, erased, executed or read.

7.2.2.3  An access that attempts to program or erase a PE-protected block is prohibited. A controller interrupt
         may be optionally generated (by setting the AMASK bit in the FIM register) to alert software developers
         of poorly behaving software during the development and debug phases.

         An access that attempts to read an RE-protected block is prohibited. Such accesses return data
         filled with all 0s. A controller interrupt may be optionally generated to alert software developers of
         poorly behaving software during the development and debug phases.

         The factory settings for the FMPREn and FMPPEn registers are a value of 1 for all implemented
         banks. This implements a policy of open access and programmability. The register bits may be
         changed by writing the specific register bit. The changes are not permanent until the register is
         committed (saved), at which point the bit change is permanent. If a bit is changed from a 1 to a 0
         and not committed, it may be restored by executing a power-on reset sequence.

         Flash Protection by Disabling Debug Access

         Flash memory may also be protected by permanently disabling access to the Debug Access Port
         (DAP) through the JTAG and SWD interfaces. This is accomplished by clearing the DBG field of
         the FMPRE register.

         Flash Memory Protection Read Enable (DBG field): If set to 0x2, access to the DAP is enabled
         through the JTAG and SWD interfaces. If clear, access to the DAP is disabled. The DBG field
         programming becomes permanent, and irreversible, after a commit sequence is performed.

         In the initial state, provided from the factory, access is enabled in order to facilitate code development
         and debug. Access to the DAP may be disabled at the end of the manufacturing flow, once all tests
         have passed and software loaded. This change will not take effect until the next power-up of the
         device. Note that it is recommended that disabling access to the DAP be combined with a mechanism
         for providing end-user installable updates (if necessary) such as the Stellaris boot loader.

         Important: Once the DBG field is cleared and committed, this field can never be restored to the
                         factory-programmed value--which means JTAG/SWD interface to the debug module
                         can never be re-enabled. This sequence does NOT disable the JTAG controller, it only
                         disables the access of the DAP through the JTAG or SWD interfaces. The JTAG interface
                         remains functional and access to the Test Access Port remains enabled, allowing the
                         user to execute the IEEE JTAG-defined instructions (for example, to perform boundary
                         scan operations).

         If the user will also be using the FMPRE bits to protect flash memory from being read as data (to
         mark sets of 2 KB blocks of flash memory as execute-only), these one-time-programmable bits
         should be written at the same time that the debug disable bits are programmed. Mechanisms to
         execute the one-time code sequence to disable all debug access include:

          Selecting the debug disable option in the Stellaris boot loader

October 01, 2007                                                                                                  105

                                            Preliminary
Internal Memory

7.3     Loading the debug disable sequence into SRAM and running it once from SRAM after
           programming the final end application code into flash
7.3.1
       Flash Memory Initialization and Configuration

       This section shows examples for using the flash controller to perform various operations on the
       contents of the flash memory.

       Changing Flash Protection Bits

       As discussed in "Flash Memory Protection" on page 104, changes to the protection bits must be
       committed before they take effect. The sequence below is used change and commit a block protection
       bit in the FMPRE or FMPPE registers. The sequence to change and commit a bit in software is as
       follows:

       1. The Flash Memory Protection Read Enable (FMPRE) and Flash Memory Protection Program
            Enable (FMPPE) registers are written, changing the intended bit(s). The action of these changes
            can be tested by software while in this state.

       2. The Flash Memory Address (FMA) register (see page 109) bit 0 is set to 1 if the FMPPE register
            is to be committed; otherwise, a 0 commits the FMPRE register.

       3. The Flash Memory Control (FMC) register (see page 111) is written with the COMT bit set. This
            initiates a write sequence and commits the changes.

       There is a special sequence to change and commit the DBG bits in the Flash Memory Protection
       Read Enable (FMPRE) register. This sequence also sets and commits any changes from 1 to 0 in
       the block protection bits (for execute-only) in the FMPRE register.

       1. The Flash Memory Protection Read Enable (FMPRE) register is written, changing the intended
            bit(s). The action of these changes can be tested by software while in this state.

       2. The Flash Memory Address (FMA) register (see ppage 109) is written with a value of 0x900.

       3. The Flash Memory Control (FMC) register (see page 111) is written with the COMT bit set. This
            initiates a write sequence and commits the changes.

       Below is an example code sequence to permanently disable the JTAG and SWD interface to the
       debug module using Luminary Micro's DriverLib peripheral driver library:

       #include "hw_types.h"
       #include "hw_flash.h"
       void
       permanently_disable_jtag_swd(void)
       {

                //
                // Clear the DBG field of the FMPRE register. Note that the value
                // used in this instance does not affect the state of the BlockN
                // bits, but were the value different, all bits in the FMPRE are
                // affected by this function!
                //
                HWREG(FLASH_FMPRE) &= 0x3fffffff;
                //
                // The following sequence activates the one-time

106                           October 01, 2007

                 Preliminary
                               LM3S300 Microcontroller

7.3.2             // programming of the FMPRE register.
7.3.2.1           //
                  HWREG(FLASH_FMA) = 0x900;
7.3.2.2           HWREG(FLASH_FMC) = (FLASH_FMC_WRKEY | FLASH_FMC_COMT);
7.3.2.3           //
                  // Wait until the operation is complete.
7.4               //
                  while (HWREG(FLASH_FMC) & FLASH_FMC_COMT)
                  {
                  }
         }

         Flash Programming

         The Stellaris devices provide a user-friendly interface for flash programming. All erase/program
         operations are handled via three registers: FMA, FMD, and FMC.

         To program a 32-bit word

         1. Write source data to the FMD register.

         2. Write the target address to the FMA register.

         3. Write the flash write key and the WRITE bit (a value of 0xA442.0001) to the FMC register.

         4. Poll the FMC register until the WRITE bit is cleared.

         To perform an erase of a 1-KB page

         1. Write the page address to the FMA register.

         2. Write the flash write key and the ERASE bit (a value of 0xA442.0002) to the FMC register.

         3. Poll the FMC register until the ERASE bit is cleared.

         To perform a mass erase of the flash

         1. Write the flash write key and the MERASE bit (a value of 0xA442.0004) to the FMC register.

         2. Poll the FMC register until the MERASE bit is cleared.

         Register Map

         Table 7-2 on page 108 lists the Flash memory and control registers. The offset listed is a hexadecimal
         increment to the register's address. The FMA, FMD, FMC, FCRIS, FCIM, and FCMISC registers
         are relative to the Flash control base address of 0x400F.D000. The FMPREn, FMPPEn, USECRL,
         USER_DBG, and USER_REGn registers are relative to the System Control base address of
         0x400F.E000.

October 01, 2007               107

                  Preliminary
Internal Memory

Table 7-2. Flash Register Map

Offset Name                    Type  Reset        Description                                         See
                                                                                                      page
Flash Control Offset    R/W          0x0000.0000  Flash Memory Address
  0x000 FMA             R/W          0x0000.0000  Flash Memory Data                                    109
  0x004 FMD             R/W          0x0000.0000  Flash Memory Control                                 110
  0x008 FMC              RO          0x0000.0000  Flash Controller Raw Interrupt Status                111
  0x00C FCRIS           R/W          0x0000.0000  Flash Controller Interrupt Mask                      113
  0x010 FCIM           R/W1C         0x0000.0000  Flash Controller Masked Interrupt Status and Clear   114
  0x014 FCMISC                                                                                         115
                               R/W   0x8000.00FF Flash Memory Protection Read Enable
System Control Offset                                                                                  117
  0x130 FMPRE                  R/W   0x0000.00FF Flash Memory Protection Program Enable                118
  0x134 FMPPE                                                                                          116
  0x140 USECRL                 R/W   0x16         USec Reload

7.5 Flash Register Descriptions (Flash Control Offset)

                The remainder of this section lists and describes the Flash Memory registers, in numerical order by
                address offset. Registers in this section are relative to the Flash control base address of 0x400F.D000.

108                                                                                      October 01, 2007

                                           Preliminary
                                                                                              LM3S300 Microcontroller

           Register 1: Flash Memory Address (FMA), offset 0x000

           During a write operation, this register contains a 4-byte-aligned address and specifies where the
           data is written. During erase operations, this register contains a 1 KB-aligned address and specifies
           which page is erased. Note that the alignment requirements must be met by software or the results
           of the operation are unpredictable.

Flash Memory Address (FMA)

Base 0x400F.D000
Offset 0x000
Type R/W, reset 0x0000.0000

       31  30                29   28   27    26   25     24           23  22        21   20   19   18   17   16

                                                            reserved

Type RO    RO                RO   RO   RO    RO   RO     RO   RO          RO        RO   RO   RO   RO   RO   RO

Reset  0             0       0    0    0     0    0      0            0          0  0    0    0    0    0    0

       15  14                13   12   11    10   9      8            7          6  5    4    3    2    1    0

           reserved                                                      OFFSET

Type  RO  RO                R/W  R/W  R/W   R/W  R/W    R/W  R/W         R/W       R/W  R/W  R/W  R/W  R/W  R/W
Reset
       0             0       0    0    0     0    0      0            0          0  0    0    0    0    0    0

Bit/Field                Name          Type       Reset  Description
31:14                  reserved        RO         0x0
                                                         Software should not rely on the value of a reserved bit. To provide
  13:0                  OFFSET         R/W         0x0   compatibility with future products, the value of a reserved bit should be
                                                         preserved across a read-modify-write operation.

                                                         Address Offset
                                                         Address offset in flash where operation is performed.

October 01, 2007                                                                                             109

                                                         Preliminary
Internal Memory

           Register 2: Flash Memory Data (FMD), offset 0x004

           This register contains the data to be written during the programming cycle or read during the read
           cycle. Note that the contents of this register are undefined for a read access of an execute-only
           block. This register is not used during the erase cycles.

Flash Memory Data (FMD)

Base 0x400F.D000
Offset 0x004
Type R/W, reset 0x0000.0000

       31  30                29   28   27    26   25     24           23  22   21         20   19   18   17   16

                                                              DATA

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W    R/W        R/W   R/W  R/W        R/W  R/W  R/W  R/W  R/W

Reset  0         0           0    0    0     0    0      0            0   0    0          0    0    0    0    0

       15  14                13   12   11    10   9      8            7   6    5          4    3    2    1    0

                                                              DATA

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W    R/W        R/W   R/W  R/W        R/W  R/W  R/W  R/W  R/W

Reset  0         0           0    0    0     0    0      0            0   0    0          0    0    0    0    0

Bit/Field           Name               Type       Reset  Description
  31:0              DATA               R/W         0x0   Data Value
                                                         Data value for write operation.

110                                                                                                 October 01, 2007

                                                         Preliminary
                                                                                        LM3S300 Microcontroller

           Register 3: Flash Memory Control (FMC), offset 0x008

           When this register is written, the flash controller initiates the appropriate access cycle for the location
           specified by the Flash Memory Address (FMA) register (see page 109). If the access is a write
           access, the data contained in the Flash Memory Data (FMD) register (see page 110) is written.

           This is the final register written and initiates the memory operation. There are four control bits in the
           lower byte of this register that, when set, initiate the memory operation. The most used of these
           register bits are the ERASE and WRITE bits.

           It is a programming error to write multiple control bits and the results of such an operation are
           unpredictable.

Flash Memory Control (FMC)

Base 0x400F.D000
Offset 0x008
Type R/W, reset 0x0000.0000

       31  30                29  28  27    26  25          24           23  22  21  20  19   18   17   16

                                                              WRKEY

Type WO    WO                WO  WO  WO    WO  WO          WO  WO           WO  WO  WO  WO   WO   WO   WO

Reset  0   0                 0   0   0     0            0  0            0   0   0   0   0    0    0    0

       15  14                13  12  11    10           9  8            7   6   5   4   3    2    1    0

                                              reserved                                  COMT MERASE ERASE WRITE

Type RO    RO                RO  RO  RO    RO  RO          RO  RO           RO  RO  RO  R/W  R/W  R/W  R/W

Reset  0   0                 0   0   0     0            0  0            0   0   0   0   0    0    0    0

Bit/Field           Name             Type      Reset       Description
31:16            WRKEY              WO         0x0
  15:4            reserved            RO        0x0        Flash Write Key
    3              COMT              R/W
                                                  0        This field contains a write key, which is used to minimize the incidence
    2             MERASE             R/W                   of accidental flash writes. The value 0xA442 must be written into this
                                                  0        field for a write to occur. Writes to the FMC register without this WRKEY
                                                           value are ignored. A read of this field returns the value 0.

                                                           Software should not rely on the value of a reserved bit. To provide
                                                           compatibility with future products, the value of a reserved bit should be
                                                           preserved across a read-modify-write operation.

                                                           Commit Register Value

                                                           Commit (write) of register value to nonvolatile storage. A write of 0 has
                                                           no effect on the state of this bit.

                                                           If read, the state of the previous commit access is provided. If the
                                                           previous commit access is complete, a 0 is returned; otherwise, if the
                                                           commit access is not complete, a 1 is returned.

                                                           This can take up to 50 s.

                                                           Mass Erase Flash Memory

                                                           If this bit is set, the flash main memory of the device is all erased. A
                                                           write of 0 has no effect on the state of this bit.

                                                           If read, the state of the previous mass erase access is provided. If the
                                                           previous mass erase access is complete, a 0 is returned; otherwise, if
                                                           the previous mass erase access is not complete, a 1 is returned.

                                                           This can take up to 250 ms.

October 01, 2007                                                                                       111

                                                           Preliminary
Internal Memory

Bit/Field         Name  Type  Reset  Description
    1            ERASE  R/W      0
                                     Erase a Page of Flash Memory
    0            WRITE  R/W      0
                                     If this bit is set, the page of flash main memory as specified by the
                                     contents of FMA is erased. A write of 0 has no effect on the state of this
                                     bit.

                                     If read, the state of the previous erase access is provided. If the previous
                                     erase access is complete, a 0 is returned; otherwise, if the previous
                                     erase access is not complete, a 1 is returned.

                                     This can take up to 25 ms.

                                     Write a Word into Flash Memory

                                     If this bit is set, the data stored in FMD is written into the location as
                                     specified by the contents of FMA. A write of 0 has no effect on the state
                                     of this bit.

                                     If read, the state of the previous write update is provided. If the previous
                                     write access is complete, a 0 is returned; otherwise, if the write access
                                     is not complete, a 1 is returned.

                                     This can take up to 50 s.

112                                               October 01, 2007

                                     Preliminary
                                                                                           LM3S300 Microcontroller

           Register 4: Flash Controller Raw Interrupt Status (FCRIS), offset 0x00C

           This register indicates that the flash controller has an interrupt condition. An interrupt is only signaled
           if the corresponding FCIM register bit is set.

Flash Controller Raw Interrupt Status (FCRIS)

Base 0x400F.D000
Offset 0x00C
Type RO, reset 0x0000.0000

       31  30               29  28  27    26      25     24           23       22  21  20  19  18  17  16

                                                                  reserved

Type RO    RO               RO  RO  RO    RO      RO     RO       RO           RO  RO  RO  RO  RO  RO  RO

Reset  0   0                0   0   0          0  0            0            0  0   0   0   0   0   0   0

       15  14               13  12  11    10      9            8            7  6   5   4   3   2   1   0

                                                     reserved                                      PRIS ARIS

Type RO    RO               RO  RO  RO    RO      RO     RO       RO           RO  RO  RO  RO  RO  RO  RO

Reset  0   0                0   0   0          0  0            0            0  0   0   0   0   0   0   0

Bit/Field          Name             Type          Reset  Description
  31:2            reserved           RO           0x00
    1                                RO                  Software should not rely on the value of a reserved bit. To provide
                    PRIS                             0   compatibility with future products, the value of a reserved bit should be
    0                                RO                  preserved across a read-modify-write operation.
                    ARIS                             0
                                                         Programming Raw Interrupt Status

                                                         This bit indicates the current state of the programming cycle. If set, the
                                                         programming cycle completed; if cleared, the programming cycle has
                                                         not completed. Programming cycles are either write or erase actions
                                                         generated through the Flash Memory Control (FMC) register bits (see
                                                         page 111).

                                                         Access Raw Interrupt Status

                                                         This bit indicates if the flash was improperly accessed. If set, the program
                                                         tried to access the flash counter to the policy as set in the Flash Memory
                                                         Protection Read Enable (FMPREn) and Flash Memory Protection
                                                         Program Enable (FMPPEn) registers. Otherwise, no access has tried
                                                         to improperly access the flash.

October 01, 2007                                                                                       113

                                                         Preliminary
Internal Memory

           Register 5: Flash Controller Interrupt Mask (FCIM), offset 0x010

           This register controls whether the flash controller generates interrupts to the controller.

Flash Controller Interrupt Mask (FCIM)

Base 0x400F.D000
Offset 0x010
Type R/W, reset 0x0000.0000

       31  30                29  28  27     26  25     24           23       22  21  20  19  18         17   16

                                                                reserved

Type RO    RO                RO  RO  RO     RO  RO     RO       RO           RO  RO  RO  RO  RO         RO   RO

Reset  0         0           0   0      0   0   0            0            0  0   0   0   0   0          0    0

       15  14                13  12     11  10  9            8            7  6   5   4   3   2          1    0

                                                   reserved                                      PMASK AMASK

Type RO    RO                RO  RO  RO     RO  RO     RO       RO           RO  RO  RO  RO  RO         R/W  R/W

Reset  0         0           0   0      0   0   0            0            0  0   0   0   0   0          0    0

Bit/Field            Name            Type       Reset  Description
  31:2              reserved          RO        0x00
    1               PMASK            R/W               Software should not rely on the value of a reserved bit. To provide
                                                   0   compatibility with future products, the value of a reserved bit should be
    0               AMASK            R/W               preserved across a read-modify-write operation.
                                                   0
                                                       Programming Interrupt Mask

                                                       This bit controls the reporting of the programming raw interrupt status
                                                       to the controller. If set, a programming-generated interrupt is promoted
                                                       to the controller. Otherwise, interrupts are recorded but suppressed from
                                                       the controller.

                                                       Access Interrupt Mask

                                                       This bit controls the reporting of the access raw interrupt status to the
                                                       controller. If set, an access-generated interrupt is promoted to the
                                                       controller. Otherwise, interrupts are recorded but suppressed from the
                                                       controller.

114                                                                                          October 01, 2007

                                                       Preliminary
                                                                                       LM3S300 Microcontroller

           Register 6: Flash Controller Masked Interrupt Status and Clear (FCMISC),
           offset 0x014

           This register provides two functions. First, it reports the cause of an interrupt by indicating which
           interrupt source or sources are signalling the interrupt. Second, it serves as the method to clear the
           interrupt reporting.

Flash Controller Masked Interrupt Status and Clear (FCMISC)

Base 0x400F.D000
Offset 0x014
Type R/W1C, reset 0x0000.0000

       31  30     29           28  27     26  25     24           23       22  21  20  19  18  17  16

                                                              reserved

Type RO    RO     RO           RO  RO     RO  RO     RO       RO           RO  RO  RO  RO  RO  RO  RO

Reset  0   0      0            0   0      0   0            0            0  0   0   0   0   0   0   0

       15  14     13           12  11     10  9            8            7  6   5   4   3   2   1   0

                                                 reserved                                      PMISC AMISC

Type RO    RO     RO           RO  RO     RO  RO     RO       RO           RO  RO  RO  RO  RO R/W1C R/W1C

Reset  0   0      0            0   0      0   0            0            0  0   0   0   0   0   0   0

Bit/Field          Name             Type      Reset  Description
  31:2            reserved           RO       0x00
    1              PMISC           R/W1C             Software should not rely on the value of a reserved bit. To provide
                                                 0   compatibility with future products, the value of a reserved bit should be
    0              AMISC           R/W1C             preserved across a read-modify-write operation.
                                                 0
                                                     Programming Masked Interrupt Status and Clear

                                                     This bit indicates whether an interrupt was signaled because a
                                                     programming cycle completed and was not masked. This bit is cleared
                                                     by writing a 1. The PRIS bit in the FCRIS register (see page 113) is also
                                                     cleared when the PMISC bit is cleared.

                                                     Access Masked Interrupt Status and Clear

                                                     This bit indicates whether an interrupt was signaled because an improper
                                                     access was attempted and was not masked. This bit is cleared by writing
                                                     a 1. The ARIS bit in the FCRIS register is also cleared when the AMISC
                                                     bit is cleared.

7.6 Flash Register Descriptions (System Control Offset)

                The remainder of this section lists and describes the Flash Memory registers, in numerical order by
                address offset. Registers in this section are relative to the System Control base address of
                0x400F.E000.

October 01, 2007                                                                                   115

                                                     Preliminary
Internal Memory

           Register 7: USec Reload (USECRL), offset 0x140

           Note: Offset is relative to System Control base address of 0x400F.E000

           This register is provided as a means of creating a 1-s tick divider reload value for the flash controller.
           The internal flash has specific minimum and maximum requirements on the length of time the high
           voltage write pulse can be applied. It is required that this register contain the operating frequency
           (in MHz -1) whenever the flash is being erased or programmed. The user is required to change this
           value if the clocking conditions are changed for a flash erase/program operation.

USec Reload (USECRL)

Base 0x400F.E000
Offset 0x140
Type R/W, reset 0x16

       31             30  29        28  27          26  25     24           23  22   21   20         19   18   17   16

                                                                  reserved

Type RO               RO  RO        RO  RO          RO  RO     RO  RO           RO   RO   RO         RO   RO   RO   RO

Reset  0              0   0         0            0  0   0      0            0   0    0    0          0    0    0    0

       15             14  13        12  11          10  9      8            7   6    5    4          3    2    1    0

                                       reserved                                                USEC

Type RO               RO  RO        RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W        R/W  R/W  R/W  R/W

Reset  0              0   0         0            0  0   0      0            0   0    0    1          1    0    0    0

Bit/Field                  Name         Type            Reset  Description
  31:8                    reserved       RO             0x00
                                                               Software should not rely on the value of a reserved bit. To provide
   7:0                     USEC         R/W             0x18   compatibility with future products, the value of a reserved bit should be
                                                               preserved across a read-modify-write operation.

                                                               Microsecond Reload Value

                                                               MHz -1 of the controller clock when the flash is being erased or
                                                               programmed.

                                                               USEC should be set to 0x18 (24 MHz) whenever the flash is being erased
                                                               or programmed.

116                                                                                                       October 01, 2007

                                                               Preliminary
                                                                                            LM3S300 Microcontroller

           Register 8: Flash Memory Protection Read Enable (FMPRE), offset 0x130

           Note: Offset is relative to System Control base address of 0x400FE000.

           This register stores the read-only protection bits for each 2-KB flash block (see the FMPPE registers
           for the execute-only protection bits). This register is loaded during the power-on reset sequence.
           The factory settingsare a value of 1 for all implemented banks. This implements a policy of open
           access and programmability. The register bits may be changed by writing the specific register bit.
           However, this register is R/W0; the user can only change the protection bit from a 1 to a 0 (and may
           NOT change a 0 to a 1). The changes are not permanent until the register is committed (saved), at
           which point the bit change is permanent. If a bit is changed from a 1 to a 0 and not committed, it
           may be restored by executing a power-on reset sequence. For additional information, see the "Flash
           Memory Protection" section.

Flash Memory Protection Read Enable (FMPRE)

Base 0x400F.E000
Offset 0x130
Type R/W, reset 0x8000.00FF

       31  30                29   28   27    26   25   24          23  22   21         20   19   18   17                           16

                                                       READ_ENABLE

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W  R/W    R/W      R/W  R/W        R/W  R/W  R/W  R/W                          R/W

Reset  1   0                 0    0    0     0    0    0           0   0            0  0    0    0    0                            0

       15  14                13   12   11    10   9    8           7   6            5  4    3    2    1                            0

                                                       READ_ENABLE

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W  R/W    R/W      R/W  R/W        R/W  R/W  R/W  R/W                          R/W

Reset  0   0                 0    0    0     0    0    0           1   1            1  1    1    1    1                            1

Bit/Field        Name                  Type       Reset Description
  31:0     READ_ENABLE
                                       R/W 0x800000FF Flash Read Enable
                                                                     Each bit position maps 2 Kbytes of Flash to be read-enabled.

                                                       Value           Description

                                                       0x800000FF Enables 16 KB of flash.

October 01, 2007                                                                                                                   117

                                                      Preliminary
Internal Memory

           Register 9: Flash Memory Protection Program Enable (FMPPE), offset 0x134

           Note: Offset is relative to System Control base address of 0x400FE000.

           This register stores the execute-only protection bits for each 2-KB flash block (see the FMPRE
           registers for the read-only protection bits). This register is loaded during the power-on reset sequence.
           The factory settings are a value of 1 for all implemented banks. This implements a policy of open
           access and programmability. The register bits may be changed by writing the specific register bit.
           However, this register is R/W0; the user can only change the protection bit from a 1 to a 0 (and may
           NOT change a 0 to a 1). The changes are not permanent until the register is committed (saved), at
           which point the bit change is permanent. If a bit is changed from a 1 to a 0 and not committed, it
           may be restored by executing a power-on reset sequence. For additional information, see the "Flash
           Memory Protection" section.

Flash Memory Protection Program Enable (FMPPE)

Base 0x400F.E000
Offset 0x134
Type R/W, reset 0x0000.00FF

       31  30                29   28   27    26   25   24          23  22   21         20   19   18   17                            16

                                                       PROG_ENABLE

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W  R/W    R/W      R/W  R/W        R/W  R/W  R/W  R/W                           R/W

Reset  0         0           0    0    0     0    0    0           0   0            0  0    0    0    0                             0

       15  14                13   12   11    10   9    8           7   6            5  4    3    2    1                             0

                                                       PROG_ENABLE

Type R/W   R/W               R/W  R/W  R/W   R/W  R/W  R/W    R/W      R/W  R/W        R/W  R/W  R/W  R/W                           R/W

Reset  0         0           0    0    0     0    0    0           1   1            1  1    1    1    1                             1

Bit/Field         Name                 Type       Reset Description
  31:0     PROG_ENABLE
                                       R/W 0x000000FF Flash Programming Enable
                                                                     Each bit position maps 2 Kbytes of Flash to be write-enabled.

                                                       Value           Description

                                                       0x000000FF Enables 16 KB of flash.

118                                                                                              October 01, 2007

                                                      Preliminary
                                                                                                                               LM3S300 Microcontroller

8 General-Purpose Input/Outputs (GPIOs)

                The GPIO module is composed of five physical GPIO blocks, each corresponding to an individual
                GPIO port (Port A, Port B, Port C, Port D, and Port E, ). The GPIO module is FiRM-compliant and
                supports 8-36 programmable input/output pins, depending on the peripherals being used.
                The GPIO module has the following features:
                 Programmable control for GPIO interrupts

                     Interrupt generation masking
                     Edge-triggered on rising, falling, or both
                     Level-sensitive on High or Low values
                 5-V-tolerant input/outputs
                 Bit masking in both read and write operations through address lines
                 Programmable control for GPIO pad configuration
                     Weak pull-up or pull-down resistors
                     2-mA, 4-mA, and 8-mA pad drive
                     Slew rate control for the 8-mA drive
                     Open drain enables
                     Digital input enables

8.1 Functional Description

                Important: All GPIO pins are inputs by default (GPIODIR=0 and GPIOAFSEL=0), with the exception
                                of the five JTAG pins (PB7 and PC[3:0]). The JTAG pins default to their JTAG
                                functionality (GPIOAFSEL=1). A Power-On-Reset (POR) or asserting an external reset
                                (RST) puts both groups of pins back to their default state.

                Each GPIO port is a separate hardware instantiation of the same physical block (see Figure
                8-1 on page 120). The LM3S300 microcontroller contains five ports and thus five of these physical
                GPIO blocks.

October 01, 2007               119

                  Preliminary
General-Purpose Input/Outputs (GPIOs)

         Figure 8-1. GPIO Port Block Diagram

                                                                Mode
                                                               Control
                                                            GPIOAFSEL

         Alternate Input                                                DEMUX  Pad Input
         Alternate Output                                                      Pad Output
         Alternate Output Enable   GPIO Input                           MUX    Pad Output Enable  Digital  Package I/O Pin
                                   GPIO Output                                                    I/O Pad
                           Data    GPIO Output Enable
                         Control                                        MUX
                       GPIODATA
                        GPIODIR

         Interrupt  Interrupt               Pad
                     Control             Control

                     GPIOIS            GPIODR2R
                    GPIOIBE            GPIODR4R
                    GPIOIEV            GPIODR8R
                     GPIOIM             GPIOSLR
                    GPIORIS            GPIOPUR
                    GPIOMIS            GPIOPDR
                    GPIOICR            GPIOODR
                                       GPIODEN

                                  Identification Registers

                    GPIOPeriphID0  GPIOPeriphID4       GPIOPCellID0
                    GPIOPeriphID1  GPIOPeriphID5       GPIOPCellID1
                    GPIOPeriphID2  GPIOPeriphID6       GPIOPCellID2
                    GPIOPeriphID3  GPIOPeriphID7       GPIOPCellID3

8.1.1    Data Control
8.1.1.1
8.1.1.2  The data control registers allow software to configure the operational modes of the GPIOs. The data
         direction register configures the GPIO as an input or an output while the data register either captures
         incoming data or drives it out to the pads.

         Data Direction Operation

         The GPIO Direction (GPIODIR) register (see page 127) is used to configure each individual pin as
         an input or output. When the data direction bit is set to 0, the GPIO is configured as an input and
         the corresponding data register bit will capture and store the value on the GPIO port. When the data
         direction bit is set to 1, the GPIO is configured as an output and the corresponding data register bit
         will be driven out on the GPIO port.

         Data Register Operation

         To aid in the efficiency of software, the GPIO ports allow for the modification of individual bits in the
         GPIO Data (GPIODATA) register (see page 126) by using bits [9:2] of the address bus as a mask.
         This allows software drivers to modify individual GPIO pins in a single instruction, without affecting
         the state of the other pins. This is in contrast to the "typical" method of doing a read-modify-write
         operation to set or clear an individual GPIO pin. To accommodate this feature, the GPIODATA
         register covers 256 locations in the memory map.

         During a write, if the address bit associated with that data bit is set to 1, the value of the GPIODATA
         register is altered. If it is cleared to 0, it is left unchanged.

120                                                                                                        October 01, 2007

                                                            Preliminary
                               LM3S300 Microcontroller

8.1.2  For example, writing a value of 0xEB to the address GPIODATA + 0x098 would yield as shown in
       Figure 8-2 on page 121, where u is data unchanged by the write.

       Figure 8-2. GPIODATA Write Example
              ADDR[9:2] 9 8 7 6 5 4 3 2 1 0
                    0x098 0 0 1 0 0 1 1 0 1 0

                     0xEB 1 1 1 0 1 0 1 1

             GPIODATA u u 1 u u 0 1 u

                                        76543210

       During a read, if the address bit associated with the data bit is set to 1, the value is read. If the
       address bit associated with the data bit is set to 0, it is read as a zero, regardless of its actual value.
       For example, reading address GPIODATA + 0x0C4 yields as shown in Figure 8-3 on page 121.

       Figure 8-3. GPIODATA Read Example
              ADDR[9:2] 9 8 7 6 5 4 3 2 1 0
                    0x0C4 0 0 1 1 0 0 0 1 0 0

             GPIODATA 1 0 1 1 1 1 1 0

        Returned Value 0 0 1 1 0 0 0 0

                                        76543210

       Interrupt Control

       The interrupt capabilities of each GPIO port are controlled by a set of seven registers. With these
       registers, it is possible to select the source of the interrupt, its polarity, and the edge properties.
       When one or more GPIO inputs cause an interrupt, a single interrupt output is sent to the interrupt
       controller for the entire GPIO port. For edge-triggered interrupts, software must clear the interrupt
       to enable any further interrupts. For a level-sensitive interrupt, it is assumed that the external source
       holds the level constant for the interrupt to be recognized by the controller.
       Three registers are required to define the edge or sense that causes interrupts:

        GPIO Interrupt Sense (GPIOIS) register (see page 128)

        GPIO Interrupt Both Edges (GPIOIBE) register (see page 129)

        GPIO Interrupt Event (GPIOIEV) register (see page 130)

       Interrupts are enabled/disabled via the GPIO Interrupt Mask (GPIOIM) register (see page 131).
       When an interrupt condition occurs, the state of the interrupt signal can be viewed in two locations:
       the GPIO Raw Interrupt Status (GPIORIS) and GPIO Masked Interrupt Status (GPIOMIS) registers
       (see page 132 and page 133). As the name implies, the GPIOMIS register only shows interrupt
       conditions that are allowed to be passed to the controller. The GPIORIS register indicates that a
       GPIO pin meets the conditions for an interrupt, but has not necessarily been sent to the controller.
       Interrupts are cleared by writing a 1 to the GPIO Interrupt Clear (GPIOICR) register (see page 134).

October 01, 2007               121

                  Preliminary
General-Purpose Input/Outputs (GPIOs)

            When programming the following interrupt control registers, the interrupts should be masked (GPIOIM
            set to 0). Writing any value to an interrupt control register (GPIOIS, GPIOIBE, or GPIOIEV) can
            generate a spurious interrupt if the corresponding bits are enabled.

8.1.3       Mode Control

            The GPIO pins can be controlled by either hardware or software. When hardware control is enabled
            via the GPIO Alternate Function Select (GPIOAFSEL) register (see page 135), the pin state is
            controlled by its alternate function (that is, the peripheral). Software control corresponds to GPIO
            mode, where the GPIODATA register is used to read/write the corresponding pins.

8.1.4       Pad Control

            The pad control registers allow for GPIO pad configuration by software based on the application
            requirements. The pad control registers include the GPIODR2R, GPIODR4R, GPIODR8R, GPIOODR,
            GPIOPUR, GPIOPDR, GPIOSLR, and GPIODEN registers.

8.1.5       Identification

            The identification registers configured at reset allow software to detect and identify the module as
            a GPIO block. The identification registers include the GPIOPeriphID0-GPIOPeriphID7 registers as
            well as the GPIOPCellID0-GPIOPCellID3 registers.

8.2 Initialization and Configuration

                To use the GPIO, the peripheral clock must be enabled by setting the appropriate GPIO Port bit
                field (GPIOn) in the RCGC2 register.

                On reset, all GPIO pins (except for the five JTAG pins) default to general-purpose inut mode
                (GPIODIR=0 and GPIOAFSEL=0). Table 8-1 on page 122 shows all possible configurations of the
                GPIO pads and the control register settings required to achieve them. Table 8-2 on page 123 shows
                how a rising edge interrupt would be configured for pin 2 of a GPIO port.

Table 8-1. GPIO Pad Configuration Examples

Configuration          GPIO Register Bit Valuea

                       AFSEL DIR     ODR            DEN  PUR      PDR      DR2R     DR4R     DR8R     SLR
                                                               ?        ?       X        X        X        X
Digital Input (GPIO)   0          0              0  1          ?        ?        ?        ?        ?        ?
                                                              X        X        X        X        X        X
Digital Output (GPIO)  0          1              0  1         X        X         ?        ?        ?        ?
                                                              X        X         ?        ?        ?        ?
Open Drain Input       0          0              1  1
                                                               ?        ?       X        X        X        X
(GPIO)                                                         ?        ?        ?        ?        ?        ?
                                                               ?        ?        ?        ?        ?        ?
Open Drain Output      0          1              1  1          ?        ?        ?        ?        ?        ?

(GPIO)

Open Drain             1          X              1  1

Input/Output (I2C)

Digital Input (Timer   1          X              0  1

CCP)

Digital Output (Timer  1          X              0  1

PWM)

Digital Input/Output   1          X              0  1

(SSI)

Digital Input/Output   1          X              0  1

(UART)

122                                                                                          October 01, 2007

                                                    Preliminary
                                                                                                  LM3S300 Microcontroller

Configuration         GPIO Register Bit Valuea

Analog Input          AFSEL       DIR            ODR      DEN       PUR       PDR       DR2R     DR4R     DR8R      SLR
(Comparator)                0           0              0        0         0         0        X        X        X         X

Digital Output                 1     X                 0        1         ?         ?         ?        ?        ?         ?
(Comparator)

a. X=Ignored (don't care bit)

?=Can be either 0 or 1, depending on the configuration

Table 8-2. GPIO Interrupt Configuration Example

Register        Desired        Pin 2 Bit Valuea
GPIOIS          Interrupt
                Event          7           6              5         4         3         2                 1         0
                Trigger                                          X         X         X         0                 X         X
                                  X              X                                   X         0                 X         X
                   0=edge                                                            X         1                 X         X

                1=level                                                              0         1                 0         0

GPIOIBE         0=single          X              X        X         X

                edge

                1=both
                edges

GPIOIEV 0=Low level,              X              X        X         X

                or negative

                edge

                1=High level,
                 or positive

                     edge

GPIOIM          0=masked          0              0        0         0

                       1=not
                      masked

a. X=Ignored (don't care bit)

8.3 Register Map

                Table 8-3 on page 124 lists the GPIO registers. The offset listed is a hexadecimal increment to the
                register's address, relative to that GPIO port's base address:

                 GPIO Port A: 0x4000.4000

                 GPIO Port B: 0x4000.5000

                 GPIO Port C: 0x4000.6000

                 GPIO Port D: 0x4000.7000

                 GPIO Port E: 0x4002.4000

                Important: The GPIO registers in this chapter are duplicated in each GPIO block, however,
                                depending on the block, all eight bits may not be connected to a GPIO pad. In those
                                cases, writing to those unconnected bits has no effect and reading those unconnected
                                bits returns no meaningful data.

October 01, 2007                                                                                                              123

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

     Note:   The default reset value for the GPIOAFSEL register is 0x0000.0000 for all GPIO pins, with
             the exception of the five JTAG pins (PB7 and PC[3:0]). These five pins default to JTAG
             functionality. Because of this, the default reset value of GPIOAFSEL for GPIO Port B is
             0x0000.0080 while the default reset value for Port C is 0x0000.000F.

Table 8-3. GPIO Register Map

Offset Name                   Type         Reset    Description                       See
                                                                                      page
0x000 GPIODATA                R/W      0x0000.0000  GPIO Data                          126
0x400 GPIODIR                 R/W      0x0000.0000  GPIO Direction                     127
0x404 GPIOIS                  R/W      0x0000.0000  GPIO Interrupt Sense               128
0x408 GPIOIBE                 R/W      0x0000.0000  GPIO Interrupt Both Edges          129
0x40C GPIOIEV                 R/W      0x0000.0000  GPIO Interrupt Event               130
0x410 GPIOIM                  R/W      0x0000.0000  GPIO Interrupt Mask                131
0x414 GPIORIS                  RO      0x0000.0000  GPIO Raw Interrupt Status          132
0x418 GPIOMIS                  RO      0x0000.0000  GPIO Masked Interrupt Status       133
0x41C GPIOICR                 W1C      0x0000.0000  GPIO Interrupt Clear               134
0x420 GPIOAFSEL               R/W                   GPIO Alternate Function Select     135
0x500 GPIODR2R                R/W              -    GPIO 2-mA Drive Select             137
0x504 GPIODR4R                R/W      0x0000.00FF  GPIO 4-mA Drive Select             138
0x508 GPIODR8R                R/W      0x0000.0000  GPIO 8-mA Drive Select             139
0x50C GPIOODR                 R/W      0x0000.0000  GPIO Open Drain Select             140
0x510 GPIOPUR                 R/W      0x0000.0000  GPIO Pull-Up Select                141
0x514 GPIOPDR                 R/W      0x0000.00FF  GPIO Pull-Down Select              142
0x518 GPIOSLR                 R/W      0x0000.0000  GPIO Slew Rate Control Select      143
0x51C GPIODEN                 R/W      0x0000.0000  GPIO Digital Enable                144
0xFD0 GPIOPeriphID4            RO      0x0000.00FF  GPIO Peripheral Identification 4   145
0xFD4 GPIOPeriphID5            RO      0x0000.0000  GPIO Peripheral Identification 5   146
0xFD8 GPIOPeriphID6            RO      0x0000.0000  GPIO Peripheral Identification 6   147
0xFDC GPIOPeriphID7            RO      0x0000.0000  GPIO Peripheral Identification 7   148
0xFE0 GPIOPeriphID0            RO      0x0000.0000  GPIO Peripheral Identification 0   149
0xFE4 GPIOPeriphID1            RO      0x0000.0061  GPIO Peripheral Identification 1   150
0xFE8 GPIOPeriphID2            RO      0x0000.0000  GPIO Peripheral Identification 2   151
0xFEC GPIOPeriphID3            RO      0x0000.0018  GPIO Peripheral Identification 3   152
0xFF0 GPIOPCellID0             RO      0x0000.0001  GPIO PrimeCell Identification 0    153
0xFF4 GPIOPCellID1             RO      0x0000.000D  GPIO PrimeCell Identification 1    154
0xFF8 GPIOPCellID2             RO      0x0000.00F0  GPIO PrimeCell Identification 2    155
                                       0x0000.0005

124                                                                                   October 01, 2007

                                       Preliminary
                                                                        LM3S300 Microcontroller

Offset Name         Type      Reset    Description                      See
0xFFC GPIOPCellID3   RO   0x0000.00B1  GPIO PrimeCell Identification 3  page

                                                                         156

8.4 Register Descriptions

                The remainder of this section lists and describes the GPIO registers, in numerical order by address
                offset.

October 01, 2007                                                        125

                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 1: GPIO Data (GPIODATA), offset 0x000

           The GPIODATA register is the data register. In software control mode, values written in the
           GPIODATA register are transferred onto the GPIO port pins if the respective pins have been
           configured as outputs through the GPIO Direction (GPIODIR) register (see page 127).

           In order to write to GPIODATA, the corresponding bits in the mask, resulting from the address bus
           bits [9:2], must be High. Otherwise, the bit values remain unchanged by the write.

           Similarly, the values read from this register are determined for each bit by the mask bit derived from
           the address used to access the data register, bits [9:2]. Bits that are 1 in the address mask cause
           the corresponding bits in GPIODATA to be read, and bits that are 0 in the address mask cause the
           corresponding bits in GPIODATA to be read as 0, regardless of their value.

           A read from GPIODATA returns the last bit value written if the respective pins are configured as
           outputs, or it returns the value on the corresponding input pin when these are configured as inputs.
           All bits are cleared by a reset.

GPIO Data (GPIODATA)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x000
Type R/W, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22   21   20         19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO         RO   RO   RO   RO

Reset  0   0          0        0            0  0   0      0            0   0    0    0          0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4          3    2    1    0

                                  reserved                                                DATA

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W        R/W  R/W  R/W  R/W

Reset  0   0          0        0            0  0   0      0            0   0    0    0          0    0    0    0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0           DATA              R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Data

                                                          This register is virtually mapped to 256 locations in the address space.
                                                          To facilitate the reading and writing of data to these registers by
                                                          independent drivers, the data read from and the data written to the
                                                          registers are masked by the eight address lines ipaddr[9:2]. Reads
                                                          from this register return its current state. Writes to this register only affect
                                                          bits that are not masked by ipaddr[9:2] and are configured as
                                                          outputs. See "Data Register Operation" on page 120 for examples of
                                                          reads and writes.

126                                                                                                  October 01, 2007

                                                          Preliminary
                                                                                               LM3S300 Microcontroller

           Register 2: GPIO Direction (GPIODIR), offset 0x400

           The GPIODIR register is the data direction register. Bits set to 1 in the GPIODIR register configure
           the corresponding pin to be an output, while bits set to 0 configure the pins to be inputs. All bits are
           cleared by a reset, meaning all GPIO pins are inputs by default.

GPIO Direction (GPIODIR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x400
Type R/W, reset 0x0000.0000

       31  30     29           28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14     13           12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                DIR

Type RO    RO     RO           RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0               DIR           R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Data Direction
                                                          The DIR values are defined as follows:

                                                          Value Description
                                                             0 Pins are inputs.
                                                             1 Pins are outputs.

October 01, 2007                                                                                              127

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 3: GPIO Interrupt Sense (GPIOIS), offset 0x404

           The GPIOIS register is the interrupt sense register. Bits set to 1 in GPIOIS configure the
           corresponding pins to detect levels, while bits set to 0 configure the pins to detect edges. All bits
           are cleared by a reset.

GPIO Interrupt Sense (GPIOIS)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x404
Type R/W, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22   21   20       19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO       RO   RO   RO   RO

Reset  0   0   0               0            0  0   0      0            0   0    0    0        0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4        3    2    1    0

                                  reserved                                                IS

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W      R/W  R/W  R/W  R/W

Reset  0   0   0               0            0  0   0      0            0   0    0    0        0    0    0    0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0             IS              R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Sense
                                                          The IS values are defined as follows:

                                                          Value Description
                                                             0 Edge on corresponding pin is detected (edge-sensitive).
                                                             1 Level on corresponding pin is detected (level-sensitive).

128                                                                                                October 01, 2007

                                                          Preliminary
                                                                                               LM3S300 Microcontroller

           Register 4: GPIO Interrupt Both Edges (GPIOIBE), offset 0x408

           The GPIOIBE register is the interrupt both-edges register. When the corresponding bit in the GPIO
           Interrupt Sense (GPIOIS) register (see page 128) is set to detect edges, bits set to High in GPIOIBE
           configure the corresponding pin to detect both rising and falling edges, regardless of the
           corresponding bit in the GPIO Interrupt Event (GPIOIEV) register (see page 130). Clearing a bit
           configures the pin to be controlled by GPIOIEV. All bits are cleared by a reset.

GPIO Interrupt Both Edges (GPIOIBE)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x408
Type R/W, reset 0x0000.0000

       31  30     29           28    27        26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14     13           12    11        10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                IBE

Type RO    RO     RO           RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field          Name              Type          Reset  Description
  31:8            reserved            RO           0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0               IBE             R/W           0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Both Edges
                                                          The IBE values are defined as follows:

                                                          Value Description
                                                             0 Interrupt generation is controlled by the GPIO Interrupt Event
                                                                    (GPIOIEV) register (see page 130).
                                                             1 Both edges on the corresponding pin trigger an interrupt.
                                                                    Note: Single edge is determined by the corresponding bit
                                                                                 in GPIOIEV.

October 01, 2007                                                                                              129

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 5: GPIO Interrupt Event (GPIOIEV), offset 0x40C

           The GPIOIEV register is the interrupt event register. Bits set to High in GPIOIEV configure the
           corresponding pin to detect rising edges or high levels, depending on the corresponding bit value
           in the GPIO Interrupt Sense (GPIOIS) register (see page 128). Clearing a bit configures the pin to
           detect falling edges or low levels, depending on the corresponding bit value in GPIOIS. All bits are
           cleared by a reset.

GPIO Interrupt Event (GPIOIEV)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x40C
Type R/W, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                IEV

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0            IEV              R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Event
                                                          The IEV values are defined as follows:

                                                          Value Description
                                                             0 Falling edge or Low levels on corresponding pins trigger
                                                                    interrupts.
                                                             1 Rising edge or High levels on corresponding pins trigger
                                                                    interrupts.

130                                                                                                 October 01, 2007

                                                          Preliminary
                                                                                               LM3S300 Microcontroller

           Register 6: GPIO Interrupt Mask (GPIOIM), offset 0x410

           The GPIOIM register is the interrupt mask register. Bits set to High in GPIOIM allow the corresponding
           pins to trigger their individual interrupts and the combined GPIOINTR line. Clearing a bit disables
           interrupt triggering on that pin. All bits are cleared by a reset.

GPIO Interrupt Mask (GPIOIM)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x410
Type R/W, reset 0x0000.0000

       31  30     29           28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14     13           12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                IME

Type RO    RO     RO           RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0               IME           R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Mask Enable
                                                          The IME values are defined as follows:

                                                          Value Description
                                                             0 Corresponding pin interrupt is masked.
                                                             1 Corresponding pin interrupt is not masked.

October 01, 2007                                                                                              131

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 7: GPIO Raw Interrupt Status (GPIORIS), offset 0x414

           The GPIORIS register is the raw interrupt status register. Bits read High in GPIORIS reflect the
           status of interrupt trigger conditions detected (raw, prior to masking), indicating that all the
           requirements have been met, before they are finally allowed to trigger by the GPIO Interrupt Mask
           (GPIOIM) register (see page 131). Bits read as zero indicate that corresponding input pins have not
           initiated an interrupt. All bits are cleared by a reset.

GPIO Raw Interrupt Status (GPIORIS)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x414
Type RO, reset 0x0000.0000

       31  30  29              28    27        26  25     24           23  22  21  20       19  18  17  16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO  RO  RO       RO  RO  RO  RO

Reset  0   0   0               0            0  0   0      0            0   0   0   0        0   0   0   0

       15  14  13              12    11        10  9      8            7   6   5   4        3   2   1   0

                                  reserved                                             RIS

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO  RO  RO       RO  RO  RO  RO

Reset  0   0   0               0            0  0   0      0            0   0   0   0        0   0   0   0

Bit/Field       Name                 Type          Reset  Description
  31:8         reserved               RO           0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0            RIS                 RO           0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Raw Status
                                                          Reflects the status of interrupt trigger condition detection on pins (raw,
                                                          prior to masking).
                                                          The RIS values are defined as follows:

                                                          Value Description
                                                             0 Corresponding pin interrupt requirements not met.
                                                             1 Corresponding pin interrupt has met requirements.

132                                                                                             October 01, 2007

                                                          Preliminary
                                                                                            LM3S300 Microcontroller

           Register 8: GPIO Masked Interrupt Status (GPIOMIS), offset 0x418

           The GPIOMIS register is the masked interrupt status register. Bits read High in GPIOMIS reflect
           the status of input lines triggering an interrupt. Bits read as Low indicate that either no interrupt has
           been generated, or the interrupt is masked.

           GPIOMIS is the state of the interrupt after masking.

GPIO Masked Interrupt Status (GPIOMIS)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x418
Type RO, reset 0x0000.0000

       31  30     29           28  27          26  25     24           23  22  21  20       19  18  17  16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO  RO  RO       RO  RO  RO  RO

Reset  0   0      0            0            0  0   0      0            0   0   0   0        0   0   0   0

       15  14     13           12  11          10  9      8            7   6   5   4        3   2   1   0

                                  reserved                                             MIS

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO  RO  RO       RO  RO  RO  RO

Reset  0   0      0            0            0  0   0      0            0   0   0   0        0   0   0   0

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0               MIS            RO             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Masked Interrupt Status
                                                          Masked value of interrupt due to corresponding pin.
                                                          The MIS values are defined as follows:

                                                          Value Description
                                                             0 Corresponding GPIO line interrupt not active.
                                                             1 Corresponding GPIO line asserting interrupt.

October 01, 2007                                                                                        133

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 9: GPIO Interrupt Clear (GPIOICR), offset 0x41C

           The GPIOICR register is the interrupt clear register. Writing a 1 to a bit in this register clears the
           corresponding interrupt edge detection logic register. Writing a 0 has no effect.

GPIO Interrupt Clear (GPIOICR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x41C
Type W1C, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22  21  20      19  18  17  16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO  RO  RO      RO  RO  RO  RO

Reset  0   0   0               0            0  0   0      0            0   0   0   0       0   0   0   0

       15  14  13              12  11          10  9      8            7   6   5   4       3   2   1   0

                                  reserved                                             IC

Type RO    RO  RO              RO  RO          RO  RO     RO  W1C W1C W1C W1C W1C W1C W1C W1C

Reset  0   0   0               0            0  0   0      0            0   0   0   0       0   0   0   0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0             IC              W1C             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Interrupt Clear
                                                          The IC values are defined as follows:

                                                          Value Description
                                                             0 Corresponding interrupt is unaffected.
                                                             1 Corresponding interrupt is cleared.

134                                                                                            October 01, 2007

                                                          Preliminary
                                                                                       LM3S300 Microcontroller

           Register 10: GPIO Alternate Function Select (GPIOAFSEL), offset 0x420

           The GPIOAFSEL register is the mode control select register. Writing a 1 to any bit in this register
           selects the hardware control for the corresponding GPIO line. All bits are cleared by a reset, therefore
           no GPIO line is set to hardware control by default.

           Important: All GPIO pins are inputs by default (GPIODIR=0 and GPIOAFSEL=0), with the exception
                           of the five JTAG pins (PB7 and PC[3:0]). The JTAG pins default to their JTAG
                           functionality (GPIOAFSEL=1). A Power-On-Reset (POR) or asserting an external reset
                           (RST) puts both groups of pins back to their default state.

           Caution If the JTAG pins are used as GPIOs in a design, PB7 and PC2 cannot have external pull-down
           resistors connected to both of them at the same time. If both pins are pulled Low during reset, the
           controller has unpredictable behavior. If this happens, remove one or both of the pull-down resistors,
           and apply RST or power-cycle the part.

           In addition, it is possible to create a software sequence that prevents the debugger from connecting to
           the Stellaris microcontroller. If the program code loaded into flash immediately changes the JTAG
           pins to their GPIO functionality, the debugger may not have enough time to connect and halt the
           controller before the JTAG pin functionality switches. This may lock the debugger out of the part. This
           can be avoided with a software routine that restores JTAG functionality based on an external or software
           trigger.

GPIO Alternate Function Select (GPIOAFSEL)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x420
Type R/W, reset -

       31  30     29        28  27          26  25     24           23  22   21   20         19  18   17   16

                                                          reserved

Type RO    RO     RO        RO  RO          RO  RO     RO  RO           RO   RO   RO         RO  RO   RO   RO

Reset  0   0      0         0            0  0   0      0            0   0    0    0          0   0    0    0

       15  14     13        12  11          10  9      8            7   6    5    4          3   2    1    0

                               reserved                                               AFSEL

Type RO    RO     RO        RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W  R/W       R/W  R/W  R/W

Reset  0   0      0         0            0  0   0      0            -   -    -    -          -   -    -    -

Bit/Field          Name         Type            Reset  Description
  31:8            reserved       RO             0x00
                                                       Software should not rely on the value of a reserved bit. To provide
                                                       compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

October 01, 2007                                                                                           135

                                                       Preliminary
General-Purpose Input/Outputs (GPIOs)

Bit/Field  Name   Type                 Reset  Description
   7:0     AFSEL  R/W                     -
                                              GPIO Alternate Function Select
                                              The AFSEL values are defined as follows:

                                              Value Description

                                                0 Software control of corresponding GPIO line (GPIO mode).

                                                1 Hardware control of corresponding GPIO line (alternate
                                                       hardware function).

                                              Note:        The default reset value for the GPIOAFSEL register
                                                           is 0x0000.0000 for all GPIO pins, with the exception
                                                           of the five JTAG pins (PB7 and PC[3:0]). These five
                                                           pins default to JTAG functionality. Because of this,
                                                           the default reset value of GPIOAFSEL for GPIO Port
                                                           B is 0x0000.0080 while the default reset value for
                                                           Port C is 0x0000.000F.

136                                                                                     October 01, 2007

                                              Preliminary
                                                                                       LM3S300 Microcontroller

           Register 11: GPIO 2-mA Drive Select (GPIODR2R), offset 0x500

           The GPIODR2R register is the 2-mA drive control register. It allows for each GPIO signal in the port
           to be individually configured without affecting the other pads. When writing a DRV2 bit for a GPIO
           signal, the corresponding DRV4 bit in the GPIODR4R register and the DRV8 bit in the GPIODR8R
           register are automatically cleared by hardware.

GPIO 2-mA Drive Select (GPIODR2R)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x500
Type R/W, reset 0x0000.00FF

       31  30     29        28     27       26  25     24           23  22   21   20         19   18   17   16

                                                          reserved

Type RO    RO     RO        RO  RO          RO  RO     RO  RO           RO   RO   RO         RO   RO   RO   RO

Reset  0   0      0         0            0  0   0      0            0   0    0    0          0    0    0    0

       15  14     13        12     11       10  9      8            7   6    5    4          3    2    1    0

                               reserved                                                DRV2

Type RO    RO     RO        RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W        R/W  R/W  R/W  R/W

Reset  0   0      0         0            0  0   0      0            1   1    1    1          1    1    1    1

Bit/Field          Name            Type         Reset  Description
  31:8            reserved          RO          0x00
                                                       Software should not rely on the value of a reserved bit. To provide
   7:0             DRV2            R/W          0xFF   compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

                                                       Output Pad 2-mA Drive Enable

                                                       A write of 1 to either GPIODR4[n] or GPIODR8[n] clears the
                                                       corresponding 2-mA enable bit. The change is effective on the second
                                                       clock cycle after the write.

October 01, 2007                                                                                            137

                                                       Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 12: GPIO 4-mA Drive Select (GPIODR4R), offset 0x504

           The GPIODR4R register is the 4-mA drive control register. It allows for each GPIO signal in the port
           to be individually configured without affecting the other pads. When writing the DRV4 bit for a GPIO
           signal, the corresponding DRV2 bit in the GPIODR2R register and the DRV8 bit in the GPIODR8R
           register are automatically cleared by hardware.

GPIO 4-mA Drive Select (GPIODR4R)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x504
Type R/W, reset 0x0000.0000

       31  30  29        28        27    26  25     24           23  22   21   20         19   18   17   16

                                                       reserved

Type RO    RO  RO        RO  RO          RO  RO     RO  RO           RO   RO   RO         RO   RO   RO   RO

Reset  0   0   0         0            0  0   0      0            0   0    0    0          0    0    0    0

       15  14  13        12        11    10  9      8            7   6    5    4          3    2    1    0

                            reserved                                                DRV4

Type RO    RO  RO        RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W        R/W  R/W  R/W  R/W

Reset  0   0   0         0            0  0   0      0            0   0    0    0          0    0    0    0

Bit/Field       Name               Type      Reset  Description
  31:8         reserved             RO       0x00
                                                    Software should not rely on the value of a reserved bit. To provide
   7:0          DRV4               R/W       0x00   compatibility with future products, the value of a reserved bit should be
                                                    preserved across a read-modify-write operation.

                                                    Output Pad 4-mA Drive Enable

                                                    A write of 1 to either GPIODR2[n] or GPIODR8[n] clears the
                                                    corresponding 4-mA enable bit. The change is effective on the second
                                                    clock cycle after the write.

138                                                                                            October 01, 2007

                                                    Preliminary
                                                                                       LM3S300 Microcontroller

           Register 13: GPIO 8-mA Drive Select (GPIODR8R), offset 0x508

           The GPIODR8R register is the 8-mA drive control register. It allows for each GPIO signal in the port
           to be individually configured without affecting the other pads. When writing the DRV8 bit for a GPIO
           signal, the corresponding DRV2 bit in the GPIODR2R register and the DRV4 bit in the GPIODR4R
           register are automatically cleared by hardware.

GPIO 8-mA Drive Select (GPIODR8R)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x508
Type R/W, reset 0x0000.0000

       31  30     29        28     27       26  25     24           23  22   21   20         19   18   17   16

                                                          reserved

Type RO    RO     RO        RO  RO          RO  RO     RO  RO           RO   RO   RO         RO   RO   RO   RO

Reset  0   0      0         0            0  0   0      0            0   0    0    0          0    0    0    0

       15  14     13        12     11       10  9      8            7   6    5    4          3    2    1    0

                               reserved                                                DRV8

Type RO    RO     RO        RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W        R/W  R/W  R/W  R/W

Reset  0   0      0         0            0  0   0      0            0   0    0    0          0    0    0    0

Bit/Field          Name            Type         Reset  Description
  31:8            reserved          RO          0x00
                                                       Software should not rely on the value of a reserved bit. To provide
   7:0             DRV8            R/W          0x00   compatibility with future products, the value of a reserved bit should be
                                                       preserved across a read-modify-write operation.

                                                       Output Pad 8-mA Drive Enable

                                                       A write of 1 to either GPIODR2[n] or GPIODR4[n] clears the
                                                       corresponding 8-mA enable bit. The change is effective on the second
                                                       clock cycle after the write.

October 01, 2007                                                                                            139

                                                       Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 14: GPIO Open Drain Select (GPIOODR), offset 0x50C

           The GPIOODR register is the open drain control register. Setting a bit in this register enables the
           open drain configuration of the corresponding GPIO pad. When open drain mode is enabled, the
           corresponding bit should also be set in the GPIO Digital Input Enable (GPIODEN) register (see
           page 144). Corresponding bits in the drive strength registers (GPIODR2R, GPIODR4R, GPIODR8R,
           and GPIOSLR ) can be set to achieve the desired rise and fall times. The GPIO acts as an open
           drain input if the corresponding bit in the GPIODIR register is set to 0; and as an open drain output
           when set to 1.

           When using the I2C module, the GPIO Alternate Function Select (GPIOAFSEL) register bit for
           PB2 and PB3 should be set to 1 (see examples in "Initialization and Configuration" on page 122).

GPIO Open Drain Select (GPIOODR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x50C
Type R/W, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                ODE

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0           ODE               R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          Output Pad Open Drain Enable
                                                          The ODE values are defined as follows:

                                                          Value Description
                                                             0 Open drain configuration is disabled.
                                                             1 Open drain configuration is enabled.

140                                                                                                 October 01, 2007

                                                          Preliminary
                                                                                               LM3S300 Microcontroller

           Register 15: GPIO Pull-Up Select (GPIOPUR), offset 0x510

           The GPIOPUR register is the pull-up control register. When a bit is set to 1, it enables a weak pull-up
           resistor on the corresponding GPIO signal. Setting a bit in GPIOPUR automatically clears the
           corresponding bit in the GPIO Pull-Down Select (GPIOPDR) register (see page 142).

GPIO Pull-Up Select (GPIOPUR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x510
Type R/W, reset 0x0000.00FF

       31  30     29           28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14     13           12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                PUE

Type RO    RO     RO           RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0      0            0            0  0   0      0            1   1    1    1         1    1    1    1

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0              PUE            R/W             0xFF   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          Pad Weak Pull-Up Enable

                                                          A write of 1 to GPIOPDR[n] clears the corresponding GPIOPUR[n]
                                                          enables. The change is effective on the second clock cycle after the
                                                          write.

October 01, 2007                                                                                              141

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 16: GPIO Pull-Down Select (GPIOPDR), offset 0x514

           The GPIOPDR register is the pull-down control register. When a bit is set to 1, it enables a weak
           pull-down resistor on the corresponding GPIO signal. Setting a bit in GPIOPDR automatically clears
           the corresponding bit in the GPIO Pull-Up Select (GPIOPUR) register (see page 141).

GPIO Pull-Down Select (GPIOPDR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x514
Type R/W, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                PDE

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0           PDE               R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          Pad Weak Pull-Down Enable

                                                          A write of 1 to GPIOPUR[n] clears the corresponding GPIOPDR[n]
                                                          enables. The change is effective on the second clock cycle after the
                                                          write.

142                                                                                                 October 01, 2007

                                                          Preliminary
                                                                                               LM3S300 Microcontroller

           Register 17: GPIO Slew Rate Control Select (GPIOSLR), offset 0x518

           The GPIOSLR register is the slew rate control register. Slew rate control is only available when
           using the 8-mA drive strength option via the GPIO 8-mA Drive Select (GPIODR8R) register (see
           page 139).

GPIO Slew Rate Control Select (GPIOSLR)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x518
Type R/W, reset 0x0000.0000

       31  30     29           28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14     13           12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                SRL

Type RO    RO     RO           RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0      0            0            0  0   0      0            0   0    0    0         0    0    0    0

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0              SRL            R/W             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          Slew Rate Limit Enable (8-mA drive only)
                                                          The SRL values are defined as follows:

                                                          Value Description
                                                             0 Slew rate control disabled.
                                                             1 Slew rate control enabled.

October 01, 2007                                                                                              143

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 18: GPIO Digital Enable (GPIODEN), offset 0x51C

           The GPIODEN register is the digital input enable register. By default, all GPIO signals are configured
           as digital inputs at reset. If a pin is being used as a GPIO or its Alternate Hardware Function, it
           should be configured as a digital input. The only time that a pin should not be configured as a digital
           input is when the GPIO pin is configured to be one of the analog input signals for the analog
           comparators.

GPIO Digital Enable (GPIODEN)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0x51C
Type R/W, reset 0x0000.00FF

       31  30  29              28  27          26  25     24           23  22   21   20        19   18   17   16

                                                             reserved

Type RO    RO  RO              RO  RO          RO  RO     RO  RO           RO   RO   RO        RO   RO   RO   RO

Reset  0   0   0               0            0  0   0      0            0   0    0    0         0    0    0    0

       15  14  13              12  11          10  9      8            7   6    5    4         3    2    1    0

                                  reserved                                                DEN

Type RO    RO  RO              RO  RO          RO  RO     RO  R/W          R/W  R/W  R/W       R/W  R/W  R/W  R/W

Reset  0   0   0               0            0  0   0      0            1   1    1    1         1    1    1    1

Bit/Field       Name               Type            Reset  Description
  31:8         reserved             RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0           DEN               R/W             0xFF   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          Digital Enable
                                                          The DEN values are defined as follows:

                                                          Value Description
                                                             0 Digital functions disabled.
                                                             1 Digital functions enabled.

144                                                                                                 October 01, 2007

                                                          Preliminary
                                                                                             LM3S300 Microcontroller

           Register 19: GPIO Peripheral Identification 4 (GPIOPeriphID4), offset 0xFD0

           The GPIOPeriphID4, GPIOPeriphID5, GPIOPeriphID6, and GPIOPeriphID7 registers can
           conceptually be treated as one 32-bit register; each register contains eight bits of the 32-bit register,
           used by software to identify the peripheral.

GPIO Peripheral Identification 4 (GPIOPeriphID4)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0xFD0
Type RO, reset 0x0000.0000

       31  30     29           28  27          26  25     24           23  22  21  20        19  18  17  16

                                                             reserved

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO  RO  RO        RO  RO  RO  RO

Reset  0   0      0            0            0  0   0      0            0   0   0   0         0   0   0   0

       15  14     13           12  11          10  9      8            7   6   5   4         3   2   1   0

                                  reserved                                             PID4

Type RO    RO     RO           RO  RO          RO  RO     RO  RO           RO  RO  RO        RO  RO  RO  RO

Reset  0   0      0            0            0  0   0      0            0   0   0   0         0   0   0   0

Bit/Field          Name            Type            Reset  Description
  31:8            reserved          RO             0x00
                                                          Software should not rely on the value of a reserved bit. To provide
   7:0              PID4            RO             0x00   compatibility with future products, the value of a reserved bit should be
                                                          preserved across a read-modify-write operation.

                                                          GPIO Peripheral ID Register[7:0]

October 01, 2007                                                                                         145

                                                          Preliminary
General-Purpose Input/Outputs (GPIOs)

           Register 20: GPIO Peripheral Identification 5 (GPIOPeriphID5), offset 0xFD4

           The GPIOPeriphID4, GPIOPeriphID5, GPIOPeriphID6, and GPIOPeriphID7 registers can
           conceptually be treated as one 32-bit register; each register contains eight bits of the 32-bit register,
           used by software to identify the peripheral.

GPIO Peripheral Identification 5 (GPIOPeriphID5)

GPIO Port A base: 0x4000.4000
GPIO Port B base: 0x4000.5000
GPIO Port C base: 0x4000.6000
GPIO Port D base: 0x4000.7000
GPIO Port E base: 0x4002.4000
Offset 0xFD4
Type RO, reset 0x0000.0000

       31  30  29              28  27          26  25     24           23  22  21  20        19  18  17  16