MSP430FR4xx And MSP430FR2xx Family (Rev. D) User Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 578

DownloadMSP430FR4xx And MSP430FR2xx Family (Rev. D) User Guide
Open PDF In BrowserView PDF
MSP430FR4xx and MSP430FR2xx Family

User's Guide

Literature Number: SLAU445D
October 2014 – Revised December 2015

Contents
Preface....................................................................................................................................... 23
1

System Resets, Interrupts, and Operating Modes, System Control Module (SYS)....................... 25
1.1
1.2
1.3

1.4

1.5
1.6
1.7
1.8
1.9

1.10

1.11

1.12

1.13

1.14

2

System Control Module (SYS) Introduction ............................................................................
System Reset and Initialization ...........................................................................................
1.2.1 Device Initial Conditions After System Reset ..................................................................
Interrupts ....................................................................................................................
1.3.1 (Non)Maskable Interrupts (NMIs) ...............................................................................
1.3.2 SNMI Timing .......................................................................................................
1.3.3 Maskable Interrupts ...............................................................................................
1.3.4 Interrupt Processing...............................................................................................
1.3.5 Interrupt Nesting ...................................................................................................
1.3.6 Interrupt Vectors ...................................................................................................
1.3.7 SYS Interrupt Vector Generators ................................................................................
Operating Modes ...........................................................................................................
1.4.1 Low-Power Modes and Clock Requests .......................................................................
1.4.2 Entering and Exiting Low-Power Modes LPM0 Through LPM4 .............................................
1.4.3 Low-Power Modes LPM3.5 and LPM4.5 (LPMx.5) ...........................................................
1.4.4 Extended Time in Low-Power Modes ..........................................................................
Principles for Low-Power Applications ..................................................................................
Connection of Unused Pins ...............................................................................................
Reset Pin (RST/NMI) Configuration .....................................................................................
Configuring JTAG Pins ....................................................................................................
Memory Map – Uses and Abilities .......................................................................................
1.9.1 Memory Map .......................................................................................................
1.9.2 Vacant Memory Space ...........................................................................................
1.9.3 FRAM Write Protection ...........................................................................................
1.9.4 Bootloader (BSL) ..................................................................................................
JTAG Mailbox (JMB) System ............................................................................................
1.10.1 JMB Configuration ...............................................................................................
1.10.2 SYSJMBO0 and SYSJMBO1 Outgoing Mailbox .............................................................
1.10.3 SYSJMBI0 and SYSJMBI1 Incoming Mailbox ................................................................
1.10.4 JMB NMI Usage ..................................................................................................
Device Security .............................................................................................................
1.11.1 JTAG and SBW Lock Mechanism (Electronic Fuse) ........................................................
1.11.2 BSL Security Mechanism .......................................................................................
Device-Specific Configurations ...........................................................................................
1.12.1 MSP430FR413x and MSP430FR203x Configurations ......................................................
1.12.2 MSP430FR2433 Configurations................................................................................
Device Descriptor Table ...................................................................................................
1.13.1 Identifying Device Type..........................................................................................
1.13.2 TLV Descriptors ..................................................................................................
1.13.3 Calibration Values ................................................................................................
SFR Registers ..............................................................................................................
1.14.1 SFRIE1 Register (offset = 00h) [reset = 0000h] .............................................................
1.14.2 SFRIFG1 Register (offset = 02h) [reset = 0082h]............................................................

Contents

26
26
28
28
29
29
29
30
31
31
32
32
35
36
36
38
39
39
39
40
40
40
42
42
42
43
43
43
43
43
44
44
45
45
45
47
48
49
50
50
53
54
55

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

1.15

1.16

2

56
57
58
59
60
61
61
62
62
63
63
64
65
65
69
73

Power Management Module (PMM) and Supply Voltage Supervisor (SVS) ................................. 77
2.1
2.2

2.3

3

1.14.3 SFRRPCR Register (offset = 04h) [reset = 001Ch] .........................................................
SYS Registers ..............................................................................................................
1.15.1 SYSCTL Register (offset = 00h) [reset = 0000h] ............................................................
1.15.2 SYSBSLC Register (offset = 02h) [reset = 0000h] ..........................................................
1.15.3 SYSJMBC Register (offset = 06h) [reset = 000Ch] ..........................................................
1.15.4 SYSJMBI0 Register (offset = 08h) [reset = 0000h] ..........................................................
1.15.5 SYSJMBI1 Register (offset = 0Ah) [reset = 0000h] ..........................................................
1.15.6 SYSJMBO0 Register (offset = 0Ch) [reset = 0000h] ........................................................
1.15.7 SYSJMBO1 Register (offset = 0Eh) [reset = 0000h] ........................................................
1.15.8 SYSUNIV Register (offset = 1Ah) [reset = 0000h] ...........................................................
1.15.9 SYSSNIV Register (offset = 1Ch) [reset = 0000h] ...........................................................
1.15.10 SYSRSTIV Register (offset = 1Eh) [reset = 0002h] ........................................................
System Configuration Registers ..........................................................................................
1.16.1 MSP430FR203x System Configuration Registers ...........................................................
1.16.2 MSP430FR413x System Configuration Registers ...........................................................
1.16.3 MSP430FR2433 System Configuration Registers ...........................................................
Power Management Module (PMM) Introduction ......................................................................
PMM Operation .............................................................................................................
2.2.1 VCORE and the Regulator ..........................................................................................
2.2.2 Supply Voltage Supervisor .......................................................................................
2.2.3 Supply Voltage Supervisor During Power-Up .................................................................
2.2.4 LPM3.5 and LPM4.5 (LPMx.5) ..................................................................................
2.2.5 Low-Power Reset .................................................................................................
2.2.6 Brownout Reset (BOR) ...........................................................................................
2.2.7 LPM3.5 Switch .....................................................................................................
2.2.8 Reference Voltage Generation and Output ....................................................................
2.2.9 Temperature Sensor ..............................................................................................
2.2.10 RST/NMI ...........................................................................................................
2.2.11 PMM Interrupts ...................................................................................................
2.2.12 Port I/O Control ...................................................................................................
PMM Registers .............................................................................................................
2.3.1 PMMCTL0 Register (offset = 00h) [reset = 9640h] ...........................................................
2.3.2 PMMCTL1 Register (offset = 02h) [reset = 0000h] ...........................................................
2.3.3 PMMCTL2 Register (offset = 04h) [reset = 3200h] ...........................................................
2.3.4 PMMIFG Register (offset = 0Ah) [reset = 0000h] .............................................................
2.3.5 PM5CTL0 Register (offset = 10h) [reset = 0011h] ............................................................

78
79
79
79
80
80
80
81
81
81
82
82
82
82
83
84
85
86
87
88

Clock System (CS) .............................................................................................................. 89
3.1
3.2

CS Introduction ............................................................................................................
CS Operation ...............................................................................................................
3.2.1 CS Module Features for Low-Power Applications ............................................................
3.2.2 Internal Very Low-Power Low-Frequency Oscillator (VLO) ..................................................
3.2.3 Internal Trimmed Low-Frequency Reference Oscillator (REFO)............................................
3.2.4 XT1 Oscillator ......................................................................................................
3.2.5 Digitally Controlled Oscillator (DCO)............................................................................
3.2.6 Frequency Locked Loop (FLL) ..................................................................................
3.2.7 DCO Modulator ....................................................................................................
3.2.8 Disabling FLL Hardware and Modulator ........................................................................
3.2.9 FLL Unlock Detection .............................................................................................
3.2.10 FLL Operation From Low-Power Modes ......................................................................
3.2.11 Operation From Low-Power Modes, Requested by Peripheral Modules .................................
3.2.12 Fail-Safe Operation ..............................................................................................
3.2.13 Synchronization of Clock Signals ..............................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Contents

90
92
92
92
92
93
93
94
94
95
95
96
96
97
99
3

www.ti.com

3.3

4

CPUX

.............................................................................................................................. 113

4.1
4.2
4.3

MSP430X CPU (CPUX) Introduction ...................................................................................
Interrupts ...................................................................................................................
CPU Registers ............................................................................................................
4.3.1 Program Counter (PC) ..........................................................................................
4.3.2 Stack Pointer (SP) ...............................................................................................
4.3.3 Status Register (SR) ............................................................................................
4.3.4 Constant Generator Registers (CG1 and CG2) .............................................................
4.3.5 General-Purpose Registers (R4 to R15) ......................................................................
Addressing Modes ........................................................................................................
4.4.1 Register Mode ....................................................................................................
4.4.2 Indexed Mode ....................................................................................................
4.4.3 Symbolic Mode ...................................................................................................
4.4.4 Absolute Mode ...................................................................................................
4.4.5 Indirect Register Mode ..........................................................................................
4.4.6 Indirect Autoincrement Mode ...................................................................................
4.4.7 Immediate Mode .................................................................................................
MSP430 and MSP430X Instructions ...................................................................................
4.5.1 MSP430 Instructions ............................................................................................
4.5.2 MSP430X Extended Instructions ..............................................................................
Instruction Set Description ...............................................................................................
4.6.1 Extended Instruction Binary Descriptions.....................................................................
4.6.2 MSP430 Instructions ............................................................................................
4.6.3 Extended Instructions ...........................................................................................
4.6.4 Address Instructions .............................................................................................

4.4

4.5

4.6

5

114
116
117
117
117
119
120
121
123
124
125
129
134
136
137
138
140
140
145
156
157
159
211
254

FRAM Controller (FRCTL) .................................................................................................. 269
5.1
5.2
5.3
5.4

5.5
5.6
5.7
5.8
5.9
5.10

4

3.2.14 Module Oscillator (MODOSC) .................................................................................. 99
CS Registers .............................................................................................................. 101
3.3.1 CSCTL0 Register ................................................................................................ 102
3.3.2 CSCTL1 Register ................................................................................................ 103
3.3.3 CSCTL2 Register ................................................................................................ 104
3.3.4 CSCTL3 Register ................................................................................................ 105
3.3.5 CSCTL4 Register ................................................................................................ 106
3.3.6 CSCTL5 Register ................................................................................................ 107
3.3.7 CSCTL6 Register ................................................................................................ 108
3.3.8 CSCTL7 Register ................................................................................................ 110
3.3.9 CSCTL8 Register ................................................................................................ 112

FRAM Introduction ........................................................................................................
FRAM Organization.......................................................................................................
FRCTL Module Operation ...............................................................................................
Programming FRAM Devices ...........................................................................................
5.4.1 Programming FRAM Through JTAG or Spy-Bi-Wire ........................................................
5.4.2 Programming FRAM Through the Bootloader (BSL) ........................................................
5.4.3 Programming FRAM Through a Custom Solution ...........................................................
Wait State Control ........................................................................................................
5.5.1 Wait State and Cache Hit .......................................................................................
FRAM ECC ................................................................................................................
FRAM Write Back ........................................................................................................
FRAM Power Control .....................................................................................................
FRAM Cache ..............................................................................................................
FRCTL Registers .........................................................................................................
5.10.1 FRCTL0 Register ...............................................................................................
5.10.2 GCCTL0 Register ...............................................................................................

Contents

270
270
270
271
271
271
271
271
272
272
272
272
273
274
275
276

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

5.10.3 GCCTL1 Register ............................................................................................... 277

6

Backup Memory (BKMEM) ................................................................................................. 278
6.1
6.2

7

Digital I/O ......................................................................................................................... 280
7.1
7.2

7.3

7.4

8

281
282
282
282
282
282
283
283
285
285
286
286
288
301
301
302
302
303
303
303
304
304
304
305
305
305
306

Capacitive Touch I/O Introduction ......................................................................................
Capacitive Touch I/O Operation ........................................................................................
CapTouch Registers ......................................................................................................
8.3.1 CAPTIOxCTL Register (offset = 0Eh) [reset = 0000h] ......................................................

308
309
310
311

CapTIvate™ Module .......................................................................................................... 312
9.1
9.2

9.3

10

Digital I/O Introduction ...................................................................................................
Digital I/O Operation ......................................................................................................
7.2.1 Input Registers (PxIN) ...........................................................................................
7.2.2 Output Registers (PxOUT)......................................................................................
7.2.3 Direction Registers (PxDIR) ....................................................................................
7.2.4 Pullup or Pulldown Resistor Enable Registers (PxREN) ...................................................
7.2.5 Function Select Registers (PxSEL0, PxSEL1) ...............................................................
7.2.6 Port Interrupts ....................................................................................................
I/O Configuration ..........................................................................................................
7.3.1 Configuration After Reset .......................................................................................
7.3.2 Configuration of Unused Port Pins ............................................................................
7.3.3 Configuration for LPMx.5 Low-Power Modes ................................................................
Digital I/O Registers ......................................................................................................
7.4.1 P1IV Register.....................................................................................................
7.4.2 P2IV Register.....................................................................................................
7.4.3 P3IV Register.....................................................................................................
7.4.4 P4IV Register.....................................................................................................
7.4.5 PxIN Register.....................................................................................................
7.4.6 PxOUT Register..................................................................................................
7.4.7 PxDIR Register ...................................................................................................
7.4.8 PxREN Register..................................................................................................
7.4.9 PxSEL0 Register .................................................................................................
7.4.10 PxSEL1 Register ................................................................................................
7.4.11 PxSELC Register ...............................................................................................
7.4.12 PxIES Register ..................................................................................................
7.4.13 PxIE Register ....................................................................................................
7.4.14 PxIFG Register ..................................................................................................

Capacitive Touch I/O ......................................................................................................... 307
8.1
8.2
8.3

9

Backup Memory Introduction ............................................................................................ 279
BKMEM Registers ........................................................................................................ 279

CapTIvate Introduction ...................................................................................................
CapTIvate Overview ......................................................................................................
9.2.1 Declarations ......................................................................................................
9.2.2 Terms ..............................................................................................................
9.2.3 CapTIvate Configurations .......................................................................................
9.2.4 Operation Modes.................................................................................................
CapTIvate Registers ......................................................................................................
9.3.1 CAPIE Register ..................................................................................................
9.3.2 CAPIFG Register ................................................................................................
9.3.3 CAPIV Register ..................................................................................................

313
313
313
314
316
317
318
319
320
321

CRC Module ..................................................................................................................... 322
10.1
10.2
10.3

Cyclic Redundancy Check (CRC) Module Introduction .............................................................. 323
CRC Standard and Bit Order ............................................................................................ 323
CRC Checksum Generation ............................................................................................. 324

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Contents

5

www.ti.com

10.4

11

11.3

12.3

13.3

Timer_A Introduction .....................................................................................................
Timer_A Operation .......................................................................................................
12.2.1 16-Bit Timer Counter ...........................................................................................
12.2.2 Starting the Timer ...............................................................................................
12.2.3 Timer Mode Control ............................................................................................
12.2.4 Capture/Compare Blocks ......................................................................................
12.2.5 Output Unit ......................................................................................................
12.2.6 Timer_A Interrupts ..............................................................................................
12.2.7 Updating Timer_A Configuration .............................................................................
Timer_A Registers ........................................................................................................
12.3.1 TAxCTL Register ...............................................................................................
12.3.2 TAxR Register ...................................................................................................
12.3.3 TAxCCTLn Register ............................................................................................
12.3.4 TAxCCRn Register ............................................................................................
12.3.5 TAxIV Register ..................................................................................................
12.3.6 TAxEX0 Register ...............................................................................................

338
340
340
340
341
344
346
350
352
353
354
355
356
358
358
359

RTC Counter Introduction ...............................................................................................
RTC Counter Operation ..................................................................................................
13.2.1 16-Bit Timer Counter ...........................................................................................
13.2.2 Clock Source Select and Divider .............................................................................
13.2.3 Modulo Register (RTCMOD) and Shadow Register .......................................................
13.2.4 RTC Counter Interrupt and External Event/Trigger ........................................................
RTC Counter Registers ..................................................................................................
13.3.1 RTCCTL Register ...............................................................................................
13.3.2 RTCIV Register .................................................................................................
13.3.3 RTCMOD Register..............................................................................................
13.3.4 RTCCNT Register ..............................................................................................

361
362
362
362
362
363
364
365
366
367
367

32-Bit Hardware Multiplier (MPY32) ..................................................................................... 368
14.1
14.2

6

331
333
333
333
333
333
334
334
335
336

Real-Time Clock (RTC) Counter .......................................................................................... 360
13.1
13.2

14

WDT_A Introduction ......................................................................................................
WDT_A Operation ........................................................................................................
11.2.1 Watchdog Timer Counter (WDTCNT) ........................................................................
11.2.2 Watchdog Mode ................................................................................................
11.2.3 Interval Timer Mode ............................................................................................
11.2.4 Watchdog Timer Interrupts ....................................................................................
11.2.5 Clock Fail-Safe Feature ........................................................................................
11.2.6 Operation in Low-Power Modes ..............................................................................
WDT_A Registers .........................................................................................................
11.3.1 WDTCTL Register ..............................................................................................

Timer_A ........................................................................................................................... 337
12.1
12.2

13

324
325
327
328
328
329
329

Watchdog Timer (WDT_A) .................................................................................................. 330
11.1
11.2

12

10.3.1 CRC Implementation ...........................................................................................
10.3.2 Assembler Examples ...........................................................................................
CRC Registers ............................................................................................................
10.4.1 CRCDI Register .................................................................................................
10.4.2 CRCDIRB Register .............................................................................................
10.4.3 CRCINIRES Register...........................................................................................
10.4.4 CRCRESR Register ............................................................................................

32-Bit Hardware Multiplier (MPY32) Introduction .....................................................................
MPY32 Operation .........................................................................................................
14.2.1 Operand Registers .............................................................................................
14.2.2 Result Registers ................................................................................................

Contents

369
371
372
373

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

14.3

15

374
375
379
381
381
382
383
385

LCD_E Controller .............................................................................................................. 386
15.1
15.2

15.3

16

14.2.3 Software Examples .............................................................................................
14.2.4 Fractional Numbers .............................................................................................
14.2.5 Putting It All Together ..........................................................................................
14.2.6 Indirect Addressing of Result Registers .....................................................................
14.2.7 Using Interrupts .................................................................................................
14.2.8 Using DMA ......................................................................................................
MPY32 Registers .........................................................................................................
14.3.1 MPY32CTL0 Register ..........................................................................................
LCD_E Introduction .......................................................................................................
LCD_E Operation .........................................................................................................
15.2.1 LCD Memory ....................................................................................................
15.2.2 Configuration of Port Pin as LCD Output ...................................................................
15.2.3 Configuration of LCD Pin as COM or SEG ..................................................................
15.2.4 LCD Timing Generation ........................................................................................
15.2.5 Blanking the LCD ...............................................................................................
15.2.6 LCD Blinking.....................................................................................................
15.2.7 LCD Voltage and Bias Generation ...........................................................................
15.2.8 LCD Operation Modes .........................................................................................
15.2.9 LCD Interrupts ...................................................................................................
15.2.10 Static Mode ....................................................................................................
15.2.11 2-Mux Mode ....................................................................................................
15.2.12 3-Mux Mode ....................................................................................................
15.2.13 4-Mux Mode ....................................................................................................
15.2.14 6-Mux Mode ....................................................................................................
15.2.15 8-Mux Mode ....................................................................................................
LCD_E Registers .........................................................................................................
15.3.1 LCDCTL0 Register .............................................................................................
15.3.2 LCDCTL1 Register .............................................................................................
15.3.3 LCDBLKCTL Register ..........................................................................................
15.3.4 LCDMEMCTL Register.........................................................................................
15.3.5 LCDVCTL Register .............................................................................................
15.3.6 LCDPCTL0 Register............................................................................................
15.3.7 LCDPCTL1 Register............................................................................................
15.3.8 LCDPCTL2 Register............................................................................................
15.3.9 LCDPCTL3 Register............................................................................................
15.3.10 LCDCSSEL0 Register ........................................................................................
15.3.11 LCDCSSEL1 Register ........................................................................................
15.3.12 LCDCSSEL2 Register ........................................................................................
15.3.13 LCDCSSEL3 Register ........................................................................................
15.3.14 LCDM[index] Register – Static, 2-Mux, 3-Mux, 4-Mux Mode ............................................
15.3.15 LCDM[index] Register – 5-Mux, 6-Mux, 7-Mux, 8-Mux Mode ...........................................
15.3.16 LCDIV Register ................................................................................................

387
389
389
391
392
394
395
395
398
401
403
405
406
407
408
409
410
412
420
421
422
423
424
426
428
430
432
434
436
438
440
442
444
446

ADC Module ..................................................................................................................... 447
16.1
16.2

ADC Introduction ..........................................................................................................
ADC Operation ............................................................................................................
16.2.1 ADC Core ........................................................................................................
16.2.2 ADC Inputs and Multiplexer ...................................................................................
16.2.3 Voltage Reference Generator .................................................................................
16.2.4 Automatic Power Down ........................................................................................
16.2.5 Sample and Conversion Timing ..............................................................................
16.2.6 Conversion Result ..............................................................................................
16.2.7 ADC Conversion Modes .......................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Contents

448
450
450
450
451
451
451
454
454
7

www.ti.com

16.3

17

17.4

Enhanced Universal Serial Communication Interface A (eUSCI_A) Overview ..................................
eUSCI_A Introduction – UART Mode ..................................................................................
eUSCI_A Operation – UART Mode ....................................................................................
17.3.1 eUSCI_A Initialization and Reset .............................................................................
17.3.2 Character Format ...............................................................................................
17.3.3 Asynchronous Communication Format ......................................................................
17.3.4 Automatic Baud-Rate Detection ..............................................................................
17.3.5 IrDA Encoding and Decoding .................................................................................
17.3.6 Automatic Error Detection .....................................................................................
17.3.7 eUSCI_A Receive Enable .....................................................................................
17.3.8 eUSCI_A Transmit Enable ....................................................................................
17.3.9 UART Baud-Rate Generation .................................................................................
17.3.10 Setting a Baud Rate ..........................................................................................
17.3.11 Transmit Bit Timing - Error calculation .....................................................................
17.3.12 Receive Bit Timing – Error Calculation .....................................................................
17.3.13 Typical Baud Rates and Errors ..............................................................................
17.3.14 Using the eUSCI_A Module in UART Mode With Low-Power Modes .................................
17.3.15 eUSCI_A Interrupts ...........................................................................................
eUSCI_A UART Registers ...............................................................................................
17.4.1 UCAxCTLW0 Register .........................................................................................
17.4.2 UCAxCTLW1 Register .........................................................................................
17.4.3 UCAxBRW Register ............................................................................................
17.4.4 UCAxMCTLW Register ........................................................................................
17.4.5 UCAxSTATW Register .........................................................................................
17.4.6 UCAxRXBUF Register .........................................................................................
17.4.7 UCAxTXBUF Register .........................................................................................
17.4.8 UCAxABCTL Register ..........................................................................................
17.4.9 UCAxIRCTL Register...........................................................................................
17.4.10 UCAxIE Register ..............................................................................................
17.4.11 UCAxIFG Register ............................................................................................
17.4.12 UCAxIV Register ..............................................................................................

482
482
484
484
484
484
487
488
489
490
490
491
493
494
494
495
497
497
499
500
501
502
502
503
504
504
505
506
507
508
509

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode ............................... 510
18.1
18.2
18.3

8

467
468
470
472
473
473
474
475
475
476
476
477
478
479
480

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode ............................ 481
17.1
17.2
17.3

18

ADC Registers ............................................................................................................
16.3.1 ADCCTL0 Register .............................................................................................
16.3.2 ADCCTL1 Register .............................................................................................
16.3.3 ADCCTL2 Register .............................................................................................
16.3.4 ADCMEM0 Register ............................................................................................
16.3.5 ADCMEM0 Register, 2s-Complement Format ..............................................................
16.3.6 ADCMCTL0 Register ...........................................................................................
16.3.7 ADCHI Register .................................................................................................
16.3.8 ADCHI Register, 2s-Complement Format ...................................................................
16.3.9 ADCLO Register ................................................................................................
16.3.10 ADCLO Register, 2s-Complement Format .................................................................
16.3.11 ADCIE Register ................................................................................................
16.3.12 ADCIFG Register ..............................................................................................
16.3.13 ADCIV Register ................................................................................................
16.3.14 MSP430FR413x SYSCFG2 Register (absolute address = 0164h) [reset = 0000h] ..................

Enhanced Universal Serial Communication Interfaces (eUSCI_A, eUSCI_B) Overview .......................
eUSCI Introduction – SPI Mode ........................................................................................
eUSCI Operation – SPI Mode ...........................................................................................
18.3.1 eUSCI Initialization and Reset ................................................................................
18.3.2 Character Format ...............................................................................................

Contents

511
511
513
513
514

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

18.4

18.5

19

18.3.3 Master Mode ....................................................................................................
18.3.4 Slave Mode ......................................................................................................
18.3.5 SPI Enable .......................................................................................................
18.3.6 Serial Clock Control ............................................................................................
18.3.7 Using the SPI Mode With Low-Power Modes ...............................................................
18.3.8 SPI Interrupts ....................................................................................................
eUSCI_A SPI Registers ..................................................................................................
18.4.1 UCAxCTLW0 Register .........................................................................................
18.4.2 UCAxBRW Register ............................................................................................
18.4.3 UCAxSTATW Register .........................................................................................
18.4.4 UCAxRXBUF Register .........................................................................................
18.4.5 UCAxTXBUF Register .........................................................................................
18.4.6 UCAxIE Register ................................................................................................
18.4.7 UCAxIFG Register ..............................................................................................
18.4.8 UCAxIV Register ................................................................................................
eUSCI_B SPI Registers ..................................................................................................
18.5.1 UCBxCTLW0 Register .........................................................................................
18.5.2 UCBxBRW Register ............................................................................................
18.5.3 UCBxSTATW Register .........................................................................................
18.5.4 UCBxRXBUF Register .........................................................................................
18.5.5 UCBxTXBUF Register .........................................................................................
18.5.6 UCBxIE Register ...............................................................................................
18.5.7 UCBxIFG Register ..............................................................................................
18.5.8 UCBxIV Register ................................................................................................

514
515
516
516
517
517
519
520
521
522
523
523
524
524
525
526
527
528
529
530
530
531
531
532

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode ................................ 533
19.1
19.2
19.3

19.4

Enhanced Universal Serial Communication Interface B (eUSCI_B) Overview ...................................
eUSCI_B Introduction – I2C Mode ......................................................................................
eUSCI_B Operation – I2C Mode ........................................................................................
19.3.1 eUSCI_B Initialization and Reset .............................................................................
19.3.2 I2C Serial Data ..................................................................................................
19.3.3 I2C Addressing Modes .........................................................................................
19.3.4 I2C Quick Setup .................................................................................................
19.3.5 I2C Module Operating Modes .................................................................................
19.3.6 Glitch Filtering ...................................................................................................
19.3.7 I2C Clock Generation and Synchronization ..................................................................
19.3.8 Byte Counter ....................................................................................................
19.3.9 Multiple Slave Addresses ......................................................................................
19.3.10 Using the eUSCI_B Module in I2C Mode With Low-Power Modes .....................................
19.3.11 eUSCI_B Interrupts in I2C Mode ............................................................................
eUSCI_B I2C Registers ..................................................................................................
19.4.1 UCBxCTLW0 Register .........................................................................................
19.4.2 UCBxCTLW1 Register .........................................................................................
19.4.3 UCBxBRW Register ............................................................................................
19.4.4 UCBxSTATW ....................................................................................................
19.4.5 UCBxTBCNT Register .........................................................................................
19.4.6 UCBxRXBUF Register .........................................................................................
19.4.7 UCBxTXBUF ....................................................................................................
19.4.8 UCBxI2COA0 Register .........................................................................................
19.4.9 UCBxI2COA1 Register .........................................................................................
19.4.10 UCBxI2COA2 Register .......................................................................................
19.4.11 UCBxI2COA3 Register .......................................................................................
19.4.12 UCBxADDRX Register .......................................................................................
19.4.13 UCBxADDMASK Register ...................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Contents

534
534
535
536
536
537
538
539
549
549
550
551
551
552
555
556
558
560
560
561
562
562
563
564
564
565
565
566
9

www.ti.com

19.4.14
19.4.15
19.4.16
19.4.17

20

UCBxI2CSA Register .........................................................................................
UCBxIE Register ..............................................................................................
UCBxIFG Register ............................................................................................
UCBxIV Register ..............................................................................................

566
567
569
571

Embedded Emulation Module (EEM) ................................................................................... 572
20.1
20.2

20.3

Embedded Emulation Module (EEM) Introduction ...................................................................
EEM Building Blocks .....................................................................................................
20.2.1 Triggers ..........................................................................................................
20.2.2 Trigger Sequencer ..............................................................................................
20.2.3 State Storage (Internal Trace Buffer) ........................................................................
20.2.4 Cycle Counter ...................................................................................................
20.2.5 Clock Control ....................................................................................................
EEM Configurations ......................................................................................................

573
575
575
575
575
575
576
576

Revision History ........................................................................................................................ 577

10

Contents

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

List of Figures
1-1.

BOR, POR, and PUC Reset Circuit ...................................................................................... 27

1-2.

Interrupt Priority............................................................................................................. 29

1-3.

Interrupt Processing........................................................................................................ 30

1-4.

Return From Interrupt ...................................................................................................... 31

1-5.

Operation Modes ........................................................................................................... 34

1-6.

IR Modulation Combinatory Logics

1-7.

1.2-V Reference Output on A4 ........................................................................................... 46

1-8.

IR Modulation Combinatory Logics

1-9.

1.2-V Reference Output on A4 ........................................................................................... 48

1-10.

Devices Descriptor Table.................................................................................................. 49

1-11.

SFRIE1 Register

1-12.

SFRIFG1 Register.......................................................................................................... 55

1-13.

SFRRPCR Register ........................................................................................................ 56

1-14.

SYSCTL Register

1-15.

SYSBSLC Register

1-16.
1-17.
1-18.
1-19.
1-20.
1-21.
1-22.
1-23.
1-24.
1-25.
1-26.
1-27.
1-28.
1-29.
1-30.
1-31.
1-32.
2-1.
2-2.
2-3.
2-4.
2-5.
2-6.
2-7.
2-8.
3-1.
3-2.
3-3.
3-4.
3-5.
3-6.
3-7.

......................................................................................
......................................................................................

...........................................................................................................

46
47

54

.......................................................................................................... 58
........................................................................................................ 59
SYSJMBC Register ........................................................................................................ 60
SYSJMBI0 Register ........................................................................................................ 61
SYSJMBI1 Register ........................................................................................................ 61
SYSJMBO0 Register....................................................................................................... 62
SYSJMBO1 Register....................................................................................................... 62
SYSUNIV Register ......................................................................................................... 63
SYSSNIV Register ......................................................................................................... 63
SYSRSTIV Register........................................................................................................ 64
SYSCFG0 Register ........................................................................................................ 66
SYSCFG1 Register ........................................................................................................ 67
SYSCFG2 Register ........................................................................................................ 68
SYSCFG0 Register ........................................................................................................ 70
SYSCFG1 Register ........................................................................................................ 71
SYSCFG2 Register ........................................................................................................ 72
SYSCFG0 Register ........................................................................................................ 74
SYSCFG1 Register ........................................................................................................ 75
SYSCFG2 Register ........................................................................................................ 76
PMM Block Diagram ....................................................................................................... 78
Voltage Failure and Resulting PMM Actions ........................................................................... 79
PMM Action at Device Power-Up ........................................................................................ 80
PMMCTL0 Register ........................................................................................................ 84
PMMCTL1 Register ........................................................................................................ 85
PMMCTL2 Register ........................................................................................................ 86
PMMIFG Register .......................................................................................................... 87
PM5CTL0 Register ......................................................................................................... 88
Clock System (CS) Block Diagram ...................................................................................... 91
Modulator Patterns ......................................................................................................... 95
FLL Unlock Detection ...................................................................................................... 96
Module Request Clock System ........................................................................................... 97
Oscillator Fault Logic ...................................................................................................... 98
Switch MCLK from DCOCLK to XT1CLK ............................................................................... 99
CSCTL0 Register ......................................................................................................... 102

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Figures

11

www.ti.com

3-8.

CSCTL1 Register ......................................................................................................... 103

3-9.

CSCTL2 Register ......................................................................................................... 104

3-10.

CSCTL3 Register ......................................................................................................... 105

3-11.

CSCTL4 Register ......................................................................................................... 106

3-12.

CSCTL5 Register ......................................................................................................... 107

3-13.

CSCTL6 Register ......................................................................................................... 108

3-14.

CSCTL7 Register ......................................................................................................... 110

3-15.

CSCTL8 Register ......................................................................................................... 112

4-1.

MSP430X CPU Block Diagram ......................................................................................... 115

4-2.

PC Storage on the Stack for Interrupts ................................................................................ 116

4-3.

Program Counter.......................................................................................................... 117

4-4.

PC Storage on the Stack for CALLA ................................................................................... 117

4-5.

Stack Pointer .............................................................................................................. 118

4-6.

Stack Usage ............................................................................................................... 118

4-7.

PUSHX.A Format on the Stack ......................................................................................... 118

4-8.

PUSH SP, POP SP Sequence .......................................................................................... 118

4-9.

SR Bits ..................................................................................................................... 119

4-10.

Register-Byte and Byte-Register Operation ........................................................................... 121

4-11.

Register-Word Operation ................................................................................................ 121

4-12.

Word-Register Operation ................................................................................................ 122

4-13.

Register – Address-Word Operation ................................................................................... 122

4-14.

Address-Word – Register Operation ................................................................................... 123

4-15.

Indexed Mode in Lower 64KB ........................................................................................... 125

4-16.

Indexed Mode in Upper Memory

4-17.
4-18.
4-19.
4-20.
4-21.
4-22.
4-23.
4-24.
4-25.
4-26.
4-27.
4-28.
4-29.
4-30.
4-31.
4-32.
4-33.
4-34.
4-35.
4-36.
4-37.
4-38.
4-39.
4-40.
4-41.
12

.......................................................................................
Overflow and Underflow for Indexed Mode ...........................................................................
Example for Indexed Mode ..............................................................................................
Symbolic Mode Running in Lower 64KB ..............................................................................
Symbolic Mode Running in Upper Memory ...........................................................................
Overflow and Underflow for Symbolic Mode ..........................................................................
MSP430 Double-Operand Instruction Format.........................................................................
MSP430 Single-Operand Instructions ..................................................................................
Format of Conditional Jump Instructions ..............................................................................
Extension Word for Register Modes ...................................................................................
Extension Word for Non-Register Modes ..............................................................................
Example for Extended Register or Register Instruction .............................................................
Example for Extended Immediate or Indexed Instruction ...........................................................
Extended Format I Instruction Formats ................................................................................
20-Bit Addresses in Memory ............................................................................................
Extended Format II Instruction Format .................................................................................
PUSHM and POPM Instruction Format ................................................................................
RRCM, RRAM, RRUM, and RLAM Instruction Format ..............................................................
BRA Instruction Format ..................................................................................................
CALLA Instruction Format ...............................................................................................
Decrement Overlap .......................................................................................................
Stack After a RET Instruction ...........................................................................................
Destination Operand—Arithmetic Shift Left ...........................................................................
Destination Operand—Carry Left Shift .................................................................................
Rotate Right Arithmetically RRA.B and RRA.W ......................................................................
Rotate Right Through Carry RRC.B and RRC.W ....................................................................

List of Figures

126
127
128
130
131
132
140
141
142
145
145
146
147
148
148
149
150
150
150
150
176
195
197
198
199
200

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

4-42.

Swap Bytes in Memory................................................................................................... 207

4-43.

Swap Bytes in a Register ................................................................................................ 207

4-44.

Rotate Left Arithmetically—RLAM[.W] and RLAM.A ................................................................. 234

4-45.

Destination Operand-Arithmetic Shift Left ............................................................................. 235

4-46.

Destination Operand-Carry Left Shift

4-47.

Rotate Right Arithmetically RRAM[.W] and RRAM.A ................................................................ 237

4-48.

Rotate Right Arithmetically RRAX(.B,.A) – Register Mode .......................................................... 239

4-49.

Rotate Right Arithmetically RRAX(.B,.A) – Non-Register Mode .................................................... 239

4-50.

Rotate Right Through Carry RRCM[.W] and RRCM.A

4-51.
4-52.
4-53.
4-54.
4-55.
4-56.
4-57.
4-58.
4-59.
4-60.
5-1.
5-2.
5-3.
5-4.
5-5.
7-1.
7-2.
7-3.
7-4.
7-5.
7-6.
7-7.
7-8.
7-9.
7-10.
7-11.
7-12.
7-13.
7-14.
8-1.
8-2.
8-3.
9-1.
9-2.
9-3.
9-4.
9-5.
9-6.
9-7.
9-8.

..................................................................................

..............................................................
Rotate Right Through Carry RRCX(.B,.A) – Register Mode ........................................................
Rotate Right Through Carry RRCX(.B,.A) – Non-Register Mode ..................................................
Rotate Right Unsigned RRUM[.W] and RRUM.A.....................................................................
Rotate Right Unsigned RRUX(.B,.A) – Register Mode ..............................................................
Swap Bytes SWPBX.A Register Mode ................................................................................
Swap Bytes SWPBX.A In Memory .....................................................................................
Swap Bytes SWPBX[.W] Register Mode ..............................................................................
Swap Bytes SWPBX[.W] In Memory ...................................................................................
Sign Extend SXTX.A .....................................................................................................
Sign Extend SXTX[.W] ...................................................................................................
FRAM Controller Block Diagram ........................................................................................
FRAM Power Control Diagram ..........................................................................................
FRCTL0 Register .........................................................................................................
GCCTL0 Register .........................................................................................................
GCCTL1 Register .........................................................................................................
P1IV Register..............................................................................................................
P2IV Register..............................................................................................................
P3IV Register..............................................................................................................
P4IV Register..............................................................................................................
PxIN Register..............................................................................................................
PxOUT Register...........................................................................................................
PxDIR Register ............................................................................................................
PxREN Register...........................................................................................................
PxSEL0 Register ..........................................................................................................
PxSEL1 Register ..........................................................................................................
PxSELC Register .........................................................................................................
PxIES Register ............................................................................................................
PxIE Register ..............................................................................................................
PxIFG Register ............................................................................................................
Capacitive Touch I/O Principle ..........................................................................................
Capacitive Touch I/O Block Diagram...................................................................................
CAPTIOxCTL Register ...................................................................................................
CapTIvate Declarations ..................................................................................................
Channel Definition ........................................................................................................
Element Definition ........................................................................................................
CapTIvate Configurations ................................................................................................
Self-Capacitance Mode ..................................................................................................
Mutual-Capacitance Mode ...............................................................................................
CAPIE Register ...........................................................................................................
CAPIFG Register .........................................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Figures

236

241
243
243
244
245
249
249
250
250
251
251
270
273
275
276
277
301
301
302
302
303
303
303
304
304
304
305
305
305
306
308
309
311
314
315
315
316
317
317
319
320
13

www.ti.com

9-9.
10-1.
10-2.
10-3.
10-4.
10-5.
10-6.
11-1.
11-2.
12-1.
12-2.
12-3.
12-4.
12-5.
12-6.
12-7.
12-8.
12-9.
12-10.
12-11.
12-12.
12-13.
12-14.
12-15.
12-16.
12-17.
12-18.
12-19.
12-20.
12-21.
13-1.
13-2.
13-3.
13-4.
13-5.
13-6.
14-1.
14-2.
14-3.
14-4.
14-5.
14-6.
15-1.
15-2.
15-3.
15-4.
15-5.
15-6.
15-7.
14

...........................................................................................................
LFSR Implementation of CRC-CCITT Standard, Bit 0 is the MSB of the Result .................................
Implementation of CRC-CCITT Using the CRCDI and CRCINIRES Registers ..................................
CRCDI Register ...........................................................................................................
CRCDIRB Register .......................................................................................................
CRCINIRES Register.....................................................................................................
CRCRESR Register ......................................................................................................
Watchdog Timer Block Diagram ........................................................................................
WDTCTL Register ........................................................................................................
Timer_A Block Diagram ..................................................................................................
Up Mode ...................................................................................................................
Up Mode Flag Setting ....................................................................................................
Continuous Mode .........................................................................................................
Continuous Mode Flag Setting ..........................................................................................
Continuous Mode Time Intervals .......................................................................................
Up/Down Mode ............................................................................................................
Up/Down Mode Flag Setting ............................................................................................
Output Unit in Up/Down Mode ..........................................................................................
Capture Signal (SCS = 1)................................................................................................
Capture Cycle .............................................................................................................
Output Example – Timer in Up Mode ..................................................................................
Output Example – Timer in Continuous Mode ........................................................................
Output Example – Timer in Up/Down Mode ..........................................................................
Capture/Compare TAxCCR0 Interrupt Flag ...........................................................................
TAxCTL Register..........................................................................................................
TAxR Register .............................................................................................................
TAxCCTLn Register ......................................................................................................
TAxCCRn Register .......................................................................................................
TAxIV Register ............................................................................................................
TAxEX0 Register..........................................................................................................
RTC Counter Block Diagram ............................................................................................
Shadow Register Example ..............................................................................................
RTCCTL Register .........................................................................................................
RTCIV Register ...........................................................................................................
RTCMOD Register........................................................................................................
RTCCNT Register ........................................................................................................
MPY32 Block Diagram ...................................................................................................
Q15 Format Representation .............................................................................................
Q14 Format Representation .............................................................................................
Saturation Flow Chart ....................................................................................................
Multiplication Flow Chart .................................................................................................
MPY32CTL0 Register ....................................................................................................
LCD Controller Block Diagram ..........................................................................................
LCD Memory for Static to 4-Mux Mode – Example for 4-Mux Mode With 240 Segments ......................
LCD Memory for 5-Mux to 8-Mux Mode – Example for 8-Mux Mode With 96 Segments .......................
LCDMx in Static, 2-, 3-, or 4-Mux Mode ...............................................................................
LCDMx in 5-, 6-, 7-, or 8-Mux Mode ...................................................................................
Example LCDMx and LCDBMx Configuration in Different Blinking Modes .......................................
Bias Generation ...........................................................................................................
CAPIV Register

List of Figures

321
323
325
328
328
329
329
332
336
339
341
341
342
342
342
343
343
344
345
345
347
348
349
350
354
355
356
358
358
359
361
363
365
366
367
367
370
375
375
377
379
385
388
390
391
393
393
397
399

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

15-8.
15-9.
15-10.
15-11.
15-12.
15-13.
15-14.
15-15.
15-16.
15-17.
15-18.
15-19.
15-20.
15-21.
15-22.
15-23.
15-24.
15-25.
15-26.
15-27.
15-28.
15-29.
15-30.
15-31.
15-32.
15-33.
15-34.
16-1.
16-2.
16-3.
16-4.
16-5.
16-6.
16-7.
16-8.
16-9.
16-10.
16-11.
16-12.
16-13.
16-14.
16-15.
16-16.
16-17.
16-18.
16-19.
16-20.
16-21.
16-22.

..................................................................................................
LCD Operation Mode 2 ..................................................................................................
LCD Operation Mode 3 ..................................................................................................
LCD Operation Mode 4 ..................................................................................................
Example Static Waveforms ..............................................................................................
Example 2-Mux Waveforms .............................................................................................
Example 3-Mux Waveforms .............................................................................................
Example 4-Mux Waveforms .............................................................................................
Example 6-Mux Waveforms .............................................................................................
Example 8-Mux, 1/3 Bias Waveforms (LCDLP = 0) ..................................................................
Example 8-Mux, 1/3 Bias Low-Power Waveforms (LCDLP = 1) ...................................................
LCDCTL0 Register .......................................................................................................
LCDCTL1 Register .......................................................................................................
LCDBLKCTL Register ....................................................................................................
LCDMEMCTL Register ...................................................................................................
LCDVCTL Register .......................................................................................................
LCDPCTL0 Register ......................................................................................................
LCDPCTL1 Register ......................................................................................................
LCDPCTL2 Register ......................................................................................................
LCDPCTL3 Register ......................................................................................................
LCDCSSEL0 Register ....................................................................................................
LCDCSSEL1 Register ....................................................................................................
LCDCSSEL2 Register ....................................................................................................
LCDCSSEL3 Register ....................................................................................................
LCDM[index] Register ....................................................................................................
LCDM[index] Register ....................................................................................................
LCDIV Register ...........................................................................................................
ADC Block Diagram ......................................................................................................
Analog Multiplexer ........................................................................................................
Extended Sample Mode in 10-bit mode ...............................................................................
Extended Sample Mode in 12-bit mode ...............................................................................
Pulse Sample Mode in 10-bit mode ....................................................................................
Pulse Sample Mode in 12-bit mode ....................................................................................
Analog Input Equivalent Circuit .........................................................................................
Single-Channel Single-Conversion Mode in 10-bit mode ...........................................................
Single-Channel Single-Conversion Mode in 12-bit mode ...........................................................
Sequence-of-Channels Mode in 10-bit mode .........................................................................
Sequence-of-Channels Mode in 12-bit mode .........................................................................
Repeat-Single-Channel Mode in 10-bit mode .........................................................................
Repeat-Single-Channel Mode in 12-bit mode .........................................................................
Repeat-Sequence-of-Channels Mode in 10-bit mode ...............................................................
Repeat-Sequence-of-Channels Mode in 12-bit mode ...............................................................
Typical Temperature Sensor Transfer Function ......................................................................
ADC Grounding and Noise Considerations ...........................................................................
ADCCTL0 Register .......................................................................................................
ADCCTL1 Register .......................................................................................................
ADCCTL2 Register .......................................................................................................
ADCMEM0 Register ......................................................................................................
ADCMEM0 Register ......................................................................................................
LCD Operation Mode 1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Figures

401
401
402
403
405
406
407
408
409
410
411
420
421
422
423
424
426
428
430
432
434
436
438
440
442
444
446
449
451
452
452
453
453
454
455
456
457
458
459
460
461
462
464
464
468
470
472
473
473
15

www.ti.com

16-23. ADCMCTL0 Register ..................................................................................................... 474
16-24. ADCHI Register ........................................................................................................... 475
16-25. ADCHI Register ........................................................................................................... 475
16-26. ADCLO Register .......................................................................................................... 476
16-27. ADCLO Register .......................................................................................................... 476
16-28. ADCIE Register ........................................................................................................... 477
16-29. ADCIFG Register ......................................................................................................... 478
16-30. ADCIV Register ........................................................................................................... 479
16-31. SYSCFG2 Register ....................................................................................................... 480
17-1.

eUSCI_Ax Block Diagram – UART Mode (UCSYNC = 0)........................................................... 483

17-2.

Character Format ......................................................................................................... 484

17-3.

Idle-Line Format........................................................................................................... 485

17-4.

Address-Bit Multiprocessor Format ..................................................................................... 486

17-5.

Auto Baud-Rate Detection – Break/Synch Sequence

17-6.
17-7.
17-8.
17-9.
17-10.
17-11.
17-12.
17-13.
17-14.
17-15.
17-16.
17-17.
17-18.
17-19.
17-20.
17-21.
17-22.
17-23.
18-1.
18-2.
18-3.
18-4.
18-5.
18-6.
18-7.
18-8.
18-9.
18-10.
18-11.
18-12.
18-13.
18-14.
18-15.
18-16.
18-17.
16

...............................................................
Auto Baud-Rate Detection – Synch Field..............................................................................
UART vs IrDA Data Format .............................................................................................
Glitch Suppression, eUSCI_A Receive Not Started ..................................................................
Glitch Suppression, eUSCI_A Activated ...............................................................................
BITCLK Baud-Rate Timing With UCOS16 = 0 ........................................................................
Receive Error ..............................................................................................................
UCAxCTLW0 Register ...................................................................................................
UCAxCTLW1 Register ...................................................................................................
UCAxBRW Register ......................................................................................................
UCAxMCTLW Register ..................................................................................................
UCAxSTATW Register ...................................................................................................
UCAxRXBUF Register ...................................................................................................
UCAxTXBUF Register....................................................................................................
UCAxABCTL Register ....................................................................................................
UCAxIRCTL Register.....................................................................................................
UCAxIE Register ..........................................................................................................
UCAxIFG Register ........................................................................................................
UCAxIV Register ..........................................................................................................
eUSCI Block Diagram – SPI Mode .....................................................................................
eUSCI Master and External Slave (UCSTEM = 0) ...................................................................
eUSCI Slave and External Master ......................................................................................
eUSCI SPI Timing With UCMSB = 1 ...................................................................................
UCAxCTLW0 Register ...................................................................................................
UCAxBRW Register ......................................................................................................
UCAxSTATW Register ...................................................................................................
UCAxRXBUF Register ...................................................................................................
UCAxTXBUF Register....................................................................................................
UCAxIE Register ..........................................................................................................
UCAxIFG Register ........................................................................................................
UCAxIV Register ..........................................................................................................
UCBxCTLW0 Register ...................................................................................................
UCBxBRW Register ......................................................................................................
UCBxSTATW Register ...................................................................................................
UCBxRXBUF Register ...................................................................................................
UCBxTXBUF Register....................................................................................................

List of Figures

487
487
488
490
490
491
495
500
501
502
502
503
504
504
505
506
507
508
509
512
514
515
517
520
521
522
523
523
524
524
525
527
528
529
530
530

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

18-18. UCBxIE Register .......................................................................................................... 531
18-19. UCBxIFG Register ........................................................................................................ 531
18-20. UCBxIV Register .......................................................................................................... 532
19-1.
19-2.
19-3.
19-4.
19-5.
19-6.
19-7.
19-8.
19-9.
19-10.
19-11.
19-12.
19-13.
19-14.
19-15.
19-16.
19-17.
19-18.
19-19.
19-20.
19-21.
19-22.
19-23.
19-24.
19-25.
19-26.
19-27.
19-28.
19-29.
19-30.
19-31.
19-32.
19-33.
20-1.

..................................................................................
I C Bus Connection Diagram ............................................................................................
I2C Module Data Transfer ................................................................................................
Bit Transfer on I2C Bus ...................................................................................................
I2C Module 7-Bit Addressing Format ...................................................................................
I2C Module 10-Bit Addressing Format..................................................................................
I2C Module Addressing Format With Repeated START Condition .................................................
I2C Time-Line Legend ....................................................................................................
I2C Slave Transmitter Mode .............................................................................................
I2C Slave Receiver Mode ................................................................................................
I2C Slave 10-Bit Addressing Mode .....................................................................................
I2C Master Transmitter Mode ............................................................................................
I2C Master Receiver Mode ...............................................................................................
I2C Master 10-Bit Addressing Mode ....................................................................................
Arbitration Procedure Between Two Master Transmitters ...........................................................
Synchronization of Two I2C Clock Generators During Arbitration ..................................................
UCBxCTLW0 Register ...................................................................................................
UCBxCTLW1 Register ...................................................................................................
UCBxBRW Register ......................................................................................................
UCBxSTATW Register ...................................................................................................
UCBxTBCNT Register ...................................................................................................
UCBxRXBUF Register ...................................................................................................
UCBxTXBUF Register....................................................................................................
UCBxI2COA0 Register ...................................................................................................
UCBxI2COA1 Register ...................................................................................................
UCBxI2COA2 Register ...................................................................................................
UCBxI2COA3 Register ...................................................................................................
UCBxADDRX Register ...................................................................................................
UCBxADDMASK Register ...............................................................................................
UCBxI2CSA Register.....................................................................................................
UCBxIE Register ..........................................................................................................
UCBxIFG Register ........................................................................................................
UCBxIV Register ..........................................................................................................
Large Implementation of EEM ..........................................................................................
eUSCI_B Block Diagram – I2C Mode
2

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Figures

535
536
537
537
537
538
538
540
541
542
543
545
547
548
548
549
556
558
560
560
561
562
562
563
564
564
565
565
566
566
567
569
571
574

17

www.ti.com

List of Tables

18

0-1.

Register Bit Accessibility and Initial Condition .......................................................................... 24

1-1.

Interrupt Sources, Flags, and Vectors ................................................................................... 31

1-2.

Operation Modes ........................................................................................................... 35

1-3.

Requested vs Actual LPM................................................................................................. 35

1-4.

Connection of Unused Pins ............................................................................................... 39

1-5.

BSL and JTAG/SBW Signatures ......................................................................................... 44

1-6.

Tag Values .................................................................................................................. 50

1-7.

SFR Base Address ......................................................................................................... 53

1-8.

SFR Registers .............................................................................................................. 53

1-9.

SFRIE1 Register Description ............................................................................................. 54

1-10.

SFRIFG1 Register Description ........................................................................................... 55

1-11.

SFRRPCR Register Description.......................................................................................... 56

1-12.

SYS Registers .............................................................................................................. 57

1-13.

SYSCTL Register Description ............................................................................................ 58

1-14.

SYSBSLC Register Description .......................................................................................... 59

1-15.

SYSJMBC Register Description .......................................................................................... 60

1-16.

SYSJMBI0 Register Description.......................................................................................... 61

1-17.

SYSJMBI1 Register Description.......................................................................................... 61

1-18.

SYSJMBO0 Register Description ........................................................................................ 62

1-19.

SYSJMBO1 Register Description ........................................................................................ 62

1-20.

SYSUNIV Register Description ........................................................................................... 63

1-21.

SYSSNIV Register Description ........................................................................................... 63

1-22.

SYSRSTIV Register Description ......................................................................................... 64

1-23.

MSP430FR203x SYS Configuration Registers ......................................................................... 65

1-24.

SYSCFG0 Register Description .......................................................................................... 66

1-25.

SYSCFG1 Register Description .......................................................................................... 67

1-26.

SYSCFG2 Register Description .......................................................................................... 68

1-27.

FR413x SYS Configuration Registers ................................................................................... 69

1-28.

SYSCFG0 Register Description .......................................................................................... 70

1-29.

SYSCFG1 Register Description .......................................................................................... 71

1-30.

SYSCFG2 Register Description .......................................................................................... 72

1-31.

FR2433 SYS Configuration Registers ................................................................................... 73

1-32.

SYSCFG0 Register Description .......................................................................................... 74

1-33.

SYSCFG1 Register Description .......................................................................................... 75

1-34.

SYSCFG2 Register Description .......................................................................................... 76

2-1.

PMM Registers ............................................................................................................. 83

2-2.

PMMCTL0 Register Description .......................................................................................... 84

2-3.

PMMCTL1 Register Description .......................................................................................... 85

2-4.

PMMCTL2 Register Description .......................................................................................... 86

2-5.

PMMIFG Register Description ............................................................................................ 87

2-6.

PM5CTL0 Register Description

3-1.

Clock Request System and Power Modes .............................................................................. 97

3-2.

CS Registers

3-3.

CSCTL0 Register Description ........................................................................................... 102

3-4.

CSCTL1 Register Description ........................................................................................... 103

3-5.

CSCTL2 Register Description ........................................................................................... 104

3-6.

CSCTL3 Register Description ........................................................................................... 105

List of Tables

..........................................................................................

..............................................................................................................

88
101

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

3-7.

CSCTL4 Register Description ........................................................................................... 106

3-8.

CSCTL5 Register Description ........................................................................................... 107

3-9.

CSCTL6 Register Description ........................................................................................... 108

3-10.

CSCTL7 Register Description ........................................................................................... 110

3-11.

CSCTL8 Register Description ........................................................................................... 112

4-1.

SR Bit Description ........................................................................................................ 119

4-2.

Values of Constant Generators CG1, CG2............................................................................ 120

4-3.

Source and Destination Addressing .................................................................................... 123

4-4.

MSP430 Double-Operand Instructions................................................................................. 141

4-5.

MSP430 Single-Operand Instructions .................................................................................. 141

4-6.

Conditional Jump Instructions ........................................................................................... 142

4-7.

Emulated Instructions .................................................................................................... 142

4-8.

Interrupt, Return, and Reset Cycles and Length

4-9.

MSP430 Format II Instruction Cycles and Length .................................................................... 143

4-10.

MSP430 Format I Instructions Cycles and Length ................................................................... 144

4-11.

Description of the Extension Word Bits for Register Mode.......................................................... 145

4-12.

Description of Extension Word Bits for Non-Register Modes ....................................................... 146

4-13.

Extended Double-Operand Instructions................................................................................ 147

4-14.

Extended Single-Operand Instructions................................................................................. 149

4-15.

Extended Emulated Instructions ........................................................................................ 151

4-16.

Address Instructions, Operate on 20-Bit Register Data

4-17.
4-18.
4-19.
4-20.
5-1.
5-2.
5-3.
5-4.
6-1.
7-1.
7-2.
7-3.
7-4.
7-5.
7-6.
7-7.
7-8.
7-9.
7-10.
7-11.
7-12.
7-13.
7-14.
7-15.
7-16.
7-17.
7-18.
8-1.

.....................................................................

.............................................................
MSP430X Format II Instruction Cycles and Length ..................................................................
MSP430X Format I Instruction Cycles and Length ...................................................................
Address Instruction Cycles and Length ................................................................................
Instruction Map of MSP430X ............................................................................................
FRCTL Registers .........................................................................................................
FRCTL0 Register Description ...........................................................................................
GCCTL0 Register Description ..........................................................................................
GCCTL1 Register Description ..........................................................................................
BKMEM Registers ........................................................................................................
I/O Configuration ..........................................................................................................
I/O Function Selection for Devices With Only One Selection Bit – PxSEL0 ......................................
I/O Function Selection for Devices With Two Selection Bits – PxSEL0 and PxSEL1 ...........................
Digital I/O Registers ......................................................................................................
P1IV Register Description ...............................................................................................
P2IV Register Description ...............................................................................................
P3IV Register Description ...............................................................................................
P4IV Register Description ...............................................................................................
PxIN Register Description ...............................................................................................
PxOUT Register Description ............................................................................................
P1DIR Register Description .............................................................................................
PxREN Register Description ............................................................................................
PxSEL0 Register Description ...........................................................................................
PxSEL1 Register Description ...........................................................................................
PxSELC Register Description ...........................................................................................
PxIES Register Description ..............................................................................................
PxIE Register Description ...............................................................................................
PxIFG Register Description .............................................................................................
CapTouch Registers ......................................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Tables

143

152
153
154
155
156
274
275
276
277
279
282
283
283
288
301
301
302
302
303
303
303
304
304
304
305
305
305
306
310
19

www.ti.com

8-2.

CAPTIOxCTL Register Description ..................................................................................... 311

9-1.

CapTIvate Registers ...................................................................................................... 318

9-2.

CAPIE Register Description ............................................................................................. 319

9-3.

CAPIFG Register Description ........................................................................................... 320

9-4.

CAPIV Register Description ............................................................................................. 321

10-1.

CRC Registers ............................................................................................................ 327

10-2.

CRCDI Register Description............................................................................................. 328

10-3.

CRCDIRB Register Description ......................................................................................... 328

10-4.

CRCINIRES Register Description ...................................................................................... 329

10-5.

CRCRESR Register Description ........................................................................................ 329

11-1.

WDT_A Registers ......................................................................................................... 335

11-2.

WDTCTL Register Description .......................................................................................... 336

12-1.

Timer Modes

12-2.

Output Modes ............................................................................................................. 346

12-3.

Timer_A Registers ........................................................................................................ 353

12-4.

TAxCTL Register Description ........................................................................................... 354

12-5.

TAxR Register Description

12-6.

TAxCCTLn Register Description ........................................................................................ 356

12-7.

TAxCCRn Register Description ......................................................................................... 358

12-8.

TAxIV Register Description .............................................................................................. 358

12-9.

TAxEX0 Register Description ........................................................................................... 359

13-1.

RTC Counter Registers .................................................................................................. 364

13-2.

RTCCTL Register Description

13-3.

RTCIV Register Description ............................................................................................. 366

13-4.

RTCMOD Register Description ......................................................................................... 367

13-5.

RTCCNT Register Description .......................................................................................... 367

14-1.

Result Availability (MPYFRAC = 0, MPYSAT = 0) ................................................................... 371

14-2.

OP1 Registers ............................................................................................................. 372

14-3.

OP2 Registers ............................................................................................................. 372

14-4.

SUMEXT and MPYC Contents.......................................................................................... 373

14-5.

Result Availability in Fractional Mode (MPYFRAC = 1, MPYSAT = 0) ............................................ 376

14-6.

Result Availability in Saturation Mode (MPYSAT = 1) ............................................................... 377

14-7.

MPY32 Registers ......................................................................................................... 383

14-8.

Alternative Registers

14-9.
15-1.
15-2.
15-3.
15-4.
15-5.
15-6.
15-7.
15-8.
15-9.
15-10.
15-11.
15-12.
15-13.
15-14.
20

..............................................................................................................

..............................................................................................

..........................................................................................

.....................................................................................................
MPY32CTL0 Register Description ......................................................................................
Differences Between LCD_B, LCD_C, and LCD_E ..................................................................
Divider depending on MUX-Mode ......................................................................................
Example for Possible LCD Frequencies ...............................................................................
Overview on COM Configuration in Blinking Mode...................................................................
LCD Voltage and Biasing Characteristics .............................................................................
LCD_E Registers .........................................................................................................
LCD Memory Registers for Static and 2-Mux to 4-Mux Modes ....................................................
LCD Blinking Memory Registers for Static and 2-Mux to 4-Mux Modes ..........................................
LCD Memory Registers for 5-Mux to 8-Mux Modes..................................................................
LCDCTL0 Register Description .........................................................................................
LCDCTL1 Register Description .........................................................................................
LCDBLKCTL Register Description......................................................................................
LCDMEMCTL Register Description ....................................................................................
LCDVCTL Register Description .........................................................................................

List of Tables

341

355

365

384
385
387
394
395
396
400
412
413
415
417
420
421
422
423
424

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

.......................................................................................
LCDPCTL1 Register Description .......................................................................................
LCDPCTL2 Register Description .......................................................................................
LCDPCTL3 Register Description .......................................................................................
LCDCSSEL0 Register Description .....................................................................................
LCDCSSEL1 Register Description .....................................................................................
LCDCSSEL2 Register Description .....................................................................................
LCDCSSEL3 Register Description .....................................................................................
LCDM[index] Register Description......................................................................................
LCDM[index] Register Description......................................................................................
LCDIV Register Description .............................................................................................
Conversion Mode Summary .............................................................................................
ADC Registers ............................................................................................................
ADCCTL0 Register Description .........................................................................................
ADCCTL1 Register Description .........................................................................................
ADCCTL2 Register Description .........................................................................................
ADCMEM0 Register Description ........................................................................................
ADCMEM0 Register Description ........................................................................................
ADCMCTL0 Register Description.......................................................................................
ADCHI Register Description .............................................................................................
ADCHI Register Description .............................................................................................
ADCLO Register Description ............................................................................................
ADCLO Register Description ............................................................................................
ADCIE Register Description .............................................................................................
ADCIFG Register Description ...........................................................................................
ADCIV Register Description .............................................................................................
SYSCFG2 Register Description.........................................................................................
Receive Error Conditions ................................................................................................
Modulation Pattern Examples ...........................................................................................
BITCLK16 Modulation Pattern ..........................................................................................
UCBRSx Settings for Fractional Portion of N = fBRCLK/Baud Rate ...................................................
Recommended Settings for Typical Crystals and Baud Rates .....................................................
UART State Change Interrupt Flags ...................................................................................
eUSCI_A UART Registers ...............................................................................................
UCAxCTLW0 Register Description .....................................................................................
UCAxCTLW1 Register Description .....................................................................................
UCAxBRW Register Description ........................................................................................
UCAxMCTLW Register Description ....................................................................................
UCAxSTATW Register Description .....................................................................................
UCAxRXBUF Register Description .....................................................................................
UCAxTXBUF Register Description .....................................................................................
UCAxABCTL Register Description .....................................................................................
UCAxIRCTL Register Description ......................................................................................
UCAxIE Register Description............................................................................................
UCAxIFG Register Description..........................................................................................
UCAxIV Register Description............................................................................................
UCxSTE Operation .......................................................................................................
eUSCI_A SPI Registers ..................................................................................................
UCAxCTLW0 Register Description .....................................................................................

15-15. LCDPCTL0 Register Description

426

15-16.

428

15-17.
15-18.
15-19.
15-20.
15-21.
15-22.
15-23.
15-24.
15-25.
16-1.
16-2.
16-3.
16-4.
16-5.
16-6.
16-7.
16-8.
16-9.
16-10.
16-11.
16-12.
16-13.
16-14.
16-15.
16-16.
17-1.
17-2.
17-3.
17-4.
17-5.
17-6.
17-7.
17-8.
17-9.
17-10.
17-11.
17-12.
17-13.
17-14.
17-15.
17-16.
17-17.
17-18.
17-19.
18-1.
18-2.
18-3.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

List of Tables

430
432
434
436
438
440
442
444
446
454
467
468
470
472
473
473
474
475
475
476
476
477
478
479
480
489
491
492
493
496
498
499
500
501
502
502
503
504
504
505
506
507
508
509
513
519
520
21

www.ti.com

18-4.

UCAxBRW Register Description ........................................................................................ 521

18-5.

UCAxSTATW Register Description ..................................................................................... 522

18-6.

UCAxRXBUF Register Description ..................................................................................... 523

18-7.

UCAxTXBUF Register Description ..................................................................................... 523

18-8.

UCAxIE Register Description............................................................................................ 524

18-9.

UCAxIFG Register Description.......................................................................................... 524

18-10. UCAxIV Register Description............................................................................................ 525
18-11. eUSCI_B SPI Registers .................................................................................................. 526
18-12. UCBxCTLW0 Register Description ..................................................................................... 527
18-13. UCBxBRW Register Description ........................................................................................ 528
18-14. UCBxSTATW Register Description ..................................................................................... 529
18-15. UCBxRXBUF Register Description ..................................................................................... 530
18-16. UCBxTXBUF Register Description ..................................................................................... 530
18-17. UCBxIE Register Description............................................................................................ 531
18-18. UCBxIFG Register Description.......................................................................................... 531
18-19. UCBxIV Register Description............................................................................................ 532
19-1.

Glitch Filter Length Selection Bits ...................................................................................... 549

19-2.

I2C State Change Interrupt Flags ....................................................................................... 552

19-3.

eUSCI_B Registers ....................................................................................................... 555

19-4.

UCBxCTLW0 Register Description ..................................................................................... 556

19-5.

UCBxCTLW1 Register Description ..................................................................................... 558

19-6.

UCBxBRW Register Description ........................................................................................ 560

19-7.

UCBxSTATW Register Description ..................................................................................... 560

19-8.

UCBxTBCNT Register Description ..................................................................................... 561

19-9.

UCBxRXBUF Register Description ..................................................................................... 562

19-10. UCBxTXBUF Register Description ..................................................................................... 562
563

19-12. UCBxI2COA1 Register Description

564

19-13.

564

19-14.
19-15.
19-16.
19-17.
19-18.
19-19.
19-20.
20-1.

22

....................................................................................
....................................................................................
UCBxI2COA2 Register Description ....................................................................................
UCBxI2COA3 Register Description ....................................................................................
UCBxADDRX Register Description .....................................................................................
UCBxADDMASK Register Description .................................................................................
UCBxI2CSA Register Description ......................................................................................
UCBxIE Register Description............................................................................................
UCBxIFG Register Description..........................................................................................
UCBxIV Register Description............................................................................................
EEM Configurations ......................................................................................................

19-11. UCBxI2COA0 Register Description

List of Tables

565
565
566
566
567
569
571
576

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Preface
SLAU445D – October 2014 – Revised December 2015

Read This First
About This Manual
This manual describes the modules and peripherals of the MSP430FR4xx family of devices. Each
description presents the module or peripheral in a general sense. Not all features and functions of all
modules or peripherals may be present on all devices. In addition, modules or peripherals may differ in
their exact implementation between device families, or may not be fully implemented on an individual
device or device family.
Pin functions, internal signal connections, and operational parameters differ from device to device. Consult
the device-specific data sheet for these details.

Related Documentation From Texas Instruments
For related documentation, see the MSP430 web site: http://www.ti.com/msp430

FCC Warning
This equipment is intended for use in a laboratory test environment only. It generates, uses, and can
radiate radio frequency energy and has not been tested for compliance with the limits of computing
devices pursuant to subpart J of part 15 of FCC rules, which are designed to provide reasonable
protection against radio frequency interference. Operation of this equipment in other environments may
cause interference with radio communications, in which case the user at his own expense will be required
to take whatever measures may be required to correct this interference.

Notational Conventions
Program examples are shown in a special typeface; for example:
MOV
XOR

#255,R10
@R5,R6

Glossary
ACLK

Auxiliary clock

ADC

Analog-to-digital converter

BOR

Brownout reset

BSL

Bootloader; see www.ti.com/msp430 for application reports

CPU

Central processing unit

DAC

Digital-to-analog converter

DCO

Digitally controlled oscillator

dst

Destination

FLL

Frequency locked loop

GIE

General interrupt enable

INT(N/2)

Integer portion of N/2

I/O

Input/output

ISR

Interrupt service routine

LSB

Least-significant bit

LSD

Least-significant digit

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Read This First

23

www.ti.com
LPM

Low-power mode; also named PM for power mode

MAB

Memory address bus

MCLK

Master clock

MDB

Memory data bus

MSB

Most-significant bit

MSD

Most-significant digit

NMI

(Non)-Maskable interrupt; also split to UNMI (user NMI) and SNMI (system NMI)

PC

Program counter

PM

Power mode

POR

Power-on reset

PUC

Power-up clear

RAM

Random access memory

SCG

System clock generator

SFR

Special function register

SMCLK

Subsystem master clock

SNMI

System NMI

SP

Stack pointer

SR

Status register

src

Source

TOS

Top of stack

UNMI

User NMI

WDT

Watchdog timer

z16

16-bit address space

Register Bit Conventions
Each register is shown with a key indicating the accessibility of the each individual bit and the initial
condition:
Table 0-1. Register Bit Accessibility and Initial Condition
Key

24

Bit Accessibility

rw

Read/write

r

Read only

r0

Read as 0

r1

Read as 1

w

Write only

w0

Write as 0

w1

Write as 1

(w)

No register bit implemented; writing a 1 results in a pulse. The register bit always reads as 0.

h0

Cleared by hardware

h1

Set by hardware

-0,-1

Condition after PUC

-(0),-(1)

Condition after POR

-[0],-[1]

Condition after BOR

-{0},-{1}

Condition after brownout

Read This First

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 1
SLAU445D – October 2014 – Revised December 2015

System Resets, Interrupts, and Operating Modes, System
Control Module (SYS)
The system control module (SYS) is available on all devices. The basic features of SYS are:
• Brownout reset (BOR) and power on reset (POR) handling
• Power up clear (PUC) handling
• (Non)maskable interrupt (SNMI and UNMI) event source selection and management
• User data-exchange mechanism through the JTAG mailbox (JMB)
• Bootloader (BSL) entry mechanism
• Configuration management (device descriptors)
• Providing interrupt vector generators for reset and NMIs
• FRAM write protection
• On-chip module-to-module signaling control
Topic

1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16

...........................................................................................................................
System Control Module (SYS) Introduction ..........................................................
System Reset and Initialization ............................................................................
Interrupts ..........................................................................................................
Operating Modes ................................................................................................
Principles for Low-Power Applications .................................................................
Connection of Unused Pins .................................................................................
Reset Pin (RST/NMI) Configuration .......................................................................
Configuring JTAG Pins .......................................................................................
Memory Map – Uses and Abilities ........................................................................
JTAG Mailbox (JMB) System ..............................................................................
Device Security ..................................................................................................
Device-Specific Configurations ............................................................................
Device Descriptor Table ......................................................................................
SFR Registers ....................................................................................................
SYS Registers ....................................................................................................
System Configuration Registers ..........................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

Page

26
26
28
32
39
39
39
40
40
43
44
45
48
53
57
65

25

System Control Module (SYS) Introduction

1.1

www.ti.com

System Control Module (SYS) Introduction
SYS is responsible for the interaction between various modules throughout the system. The functions that
SYS provide are not inherent to the peripheral modules themselves. Address decoding, bus arbitration,
interrupt event consolidation, and reset generation are some examples of the functions that SYS provides.

1.2

System Reset and Initialization
Figure 1-1 shows the system reset circuitry, which sources a brownout reset (BOR), a power on reset
(POR), and a power up clear (PUC). Different events trigger these reset signals and different initial
conditions exist depending on which signal was generated.
A
•
•
•
•
•

BOR is a device reset. A BOR is only generated by the following events:
Powering up the device
Low signal on RST/NMI pin when configured in the reset mode
Wake-up event from LPMx.5 (LPM3.5 or LPM4.5) modes
SVSH low condition, when enabled (see the PMM chapter for details)
Software BOR event

A POR is always generated when a BOR is generated, but a BOR is not generated by a POR. The
following events trigger a POR:
• BOR signal
• Software POR event
A PUC is always generated when a POR is generated, but a POR is not generated by a PUC. The
following events trigger a PUC:
• POR signal
• Watchdog timer expiration when in watchdog mode only (see the WDT_A chapter for details)
• Watchdog timer password violation (see the WDT_A chapter for details)
• FRAM memory password violation (see the FRAM Controller chapter for details)
• Power Management Module password violation (see the PMM chapter for details)
• Fetch from peripheral area
NOTE: The number and type of resets available may vary from device to device. See the devicespecific data sheet for all reset sources that are available.

26

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Reset and Initialization

www.ti.com
BOR shadow
s

Delay

brownout circuit

s clr

from port
wakeup logic
EN

PMMRSTIFG
s clr

RST/NMI
SYSNMI
notRST

Delay

BOR

Delay

POR

PMMBORIFG
s clr

PMMSWBOR event

SVSHIFG
s
from SVSH

SVSHE

PMMPORIFG
s
PMMSWPOR event
WDTIFG
s
Watchdog Timer

MCLK

… .

Module
PUCs

PUC Logic

Figure 1-1. BOR, POR, and PUC Reset Circuit

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

27

System Reset and Initialization

www.ti.com

1.2.1 Device Initial Conditions After System Reset
After a BOR, the initial device conditions are:
• The RST/NMI pin is configured in the reset mode. See Section 1.7 on configuring the RST/NMI pin.
• I/O pins are set to input mode as described in the Digital I/O chapter.
• Other peripheral modules and registers are initialized as described in their respective chapters in this
manual.
• Status register (SR) is reset.
• The watchdog timer powers up active in watchdog mode.
• Program counter (PC) is loaded with the boot code address and boot code execution begins at that
address. Upon completion of the boot code, the PC is loaded with the address contained at the
SYSRSTIV reset location (0FFFEh).
After a system reset, user software must initialize the device for the application requirements. The
following must occur:
• Initialize the stack pointer (SP), typically to the top of RAM.
• Initialize the watchdog to the requirements of the application.
• Configure peripheral modules to the requirements of the application.
NOTE: A device that is unprogrammed or blank is defined as having its reset vector value, at
memory address FFFEh, equal to FFFFh. Upon system reset of a blank device, the device
automatically enters operating mode LPM4. See Section 1.4 for information on operating
modes and Section 1.3.6 for details on interrupt vectors.

1.3

Interrupts
The interrupt priorities are fixed and defined by the arrangement of the modules in the connection chain as
shown in Figure 1-2. Interrupt priorities determine which interrupt is acted on when more than one
interrupt is pending simultaneously.
There are three types of interrupts:
• System reset
• (Non)maskable
• Maskable
NOTE: The types of interrupt sources available and their respective priorities can change from
device to device. See the device-specific data sheet for all interrupt sources and their
priorities.

28

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Interrupts

www.ti.com
BOR

...

RST/NMI
BOR/POR/PUC
circuit

CPU

POR
PUC

Password violations
high priority

.. . ..

System NMI
User NMI
Module_A_int
Module_B_int

low priority

INT
NMI

GIE

Interrupt
daisy chain
and vectors

Module_C_int
Module_D_int

MAB - 6LSBs

Figure 1-2. Interrupt Priority

1.3.1 (Non)Maskable Interrupts (NMIs)
In general, NMIs are not masked by the general interrupt enable (GIE) bit. The family supports two levels
of NMIs: system NMI (SNMI) and user NMI (UNMI). The NMI sources are enabled by individual interrupt
enable bits. When an NMI interrupt is accepted, other NMIs of that level are automatically disabled to
prevent nesting of consecutive NMIs of the same level. Program execution begins at the address stored in
the NMI vector as shown in Table 1-1. To allow software backward compatibility to users of earlier
MSP430 families, the software may, but does not need to, reenable NMI sources.
A UNMI interrupt can be generated by following sources:
• An edge on the RST/NMI pin when configured in NMI mode
• An oscillator fault occurs
A
•
•
•

SNMI interrupt can be generated by following sources:
FRAM errors (see the FRAM Controller chapter for details)
Vacant memory access
JTAG mailbox (JMB) event
NOTE: The number and types of NMI sources may vary from device to device. See the devicespecific data sheet for all NMI sources available.

1.3.2 SNMI Timing
Consecutive SNMIs that occur at a higher rate than they can be handled (interrupt storm) allow the main
program to execute one instruction after the SNMI handler is finished with a RETI instruction, before the
SNMI handler is executed again. Consecutive SNMIs are not interrupted by UNMIs in this case. This
avoids a blocking behavior on high SNMI rates.

1.3.3 Maskable Interrupts
Maskable interrupts are caused by peripherals with interrupt capability. Each maskable interrupt source
can be disabled individually by an interrupt enable bit, or all maskable interrupts can be disabled by the
general interrupt enable (GIE) bit in the status register (SR).
Each individual peripheral interrupt is discussed in its respective module chapter in this manual.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

29

Interrupts

www.ti.com

1.3.4 Interrupt Processing
When an interrupt is requested from a peripheral and the peripheral interrupt enable bit and GIE bit are
set, the interrupt service routine is requested. Only the individual enable bit must be set for (non)maskable
interrupts (NMI) to be requested.
1.3.4.1

Interrupt Acceptance

The interrupt latency is six cycles, starting with the acceptance of an interrupt request and lasting until the
start of execution of the first instruction of the interrupt service routine, as shown in Figure 1-3. The
interrupt logic executes the following:
1. Any currently executing instruction is completed.
2. The PC, which points to the next instruction, is pushed onto the stack.
3. The SR is pushed onto the stack.
4. The interrupt with the highest priority is selected if multiple interrupts occurred during the last
instruction and are pending for service.
5. The interrupt request flag resets automatically on single-source flags. Multiple source flags remain set
for servicing by software.
6. All bits of SR are cleared except SCG0, thereby terminating any low-power mode. Because the GIE bit
is cleared, further interrupts are disabled.
7. The content of the interrupt vector is loaded into the PC; the program continues with the interrupt
service routine at that address.

SP

Before
Interrupt

After
Interrupt

Item1

Item1

Item2

TOS

Item2
PC
SP

SR

TOS

Figure 1-3. Interrupt Processing

NOTE: Enabling and Disable Interrupt
Due to the pipelined CPU architecture, the instruction following the enable interrupt
instruction (EINT) is always executed, even if an interrupt service request is pending when
the interrupts are enabled.
If the enable interrupt instruction (EINT) is immediately followed by a disable interrupt
instruction (DINT), a pending interrupt might not be serviced. Further instructions after DINT
might execute incorrectly and result in unexpected CPU execution. It is recommended to
always insert at least one instruction between EINT and DINT. Note that any alternative
instruction use that sets and immediately clears the CPU status register GIE bit must be
considered in the same fashion.

30

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Interrupts

www.ti.com

1.3.4.2

Return From Interrupt

The interrupt handling routine terminates with the instruction:
RETI //return from an interrupt service routine

The return from the interrupt takes five cycles to execute the following actions and is shown in Figure 1-4.
1. The SR with all previous settings pops from the stack. All previous settings of GIE, CPUOFF, and the
other bits are now in effect, regardless of the settings used during the interrupt service routine.
2. The PC pops from the stack and begins execution where it was interrupted.
Before

After
Return From Interrupt

Item1

Item1
SP

Item2
PC
SP

SR

TOS

Item2
PC

TOS

SR

Figure 1-4. Return From Interrupt

1.3.5 Interrupt Nesting
Interrupt nesting is enabled if the GIE bit is set inside an interrupt service routine. When interrupt nesting
is enabled, any interrupt occurring during an interrupt service routine interrupts the routine, regardless of
the interrupt priorities.

1.3.6 Interrupt Vectors
The interrupt vectors are located in the address range 0FFFFh to 0FF80h, for a maximum of 64 interrupt
sources. A vector is programmed by the user and points to the start location of the corresponding interrupt
service routine. Table 1-1 is an example of the interrupt vectors that are available. See the device-specific
data sheet for the complete interrupt vector list.
Table 1-1. Interrupt Sources, Flags, and Vectors
System
Interrupt

Word Address

Priority

...
Reset

...
0FFFEh

...
Highest

JMBINIFG,
JMBOUTIFG

(Non)maskable

0FFFCh

…

...
NMIIFG
OFIFG

...
(Non)maskable
(Non)maskable

...
0FFFAh

...
…

0FFF8h

…

...

...

...

...

...

...

Interrupt Source

Interrupt Flag

Reset:
power up, external reset,
watchdog

...
WDTIFG
KEYV

System NMI:
JTAG Mailbox
User NMI:
NMI, oscillator fault,
FRAM memory access
violation
Device specific
...
Watchdog timer

WDTIFG

Maskable

...
Device specific
Reserved

Maskable

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

…

…

…

Lowest

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

31

Interrupts

www.ti.com

Some interrupt enable bits, interrupt flags, and the control bits for the RST/NMI pin are located in the
special function registers (SFRs). The SFRs are located in the peripheral address range and are byte and
word accessible. See the device-specific data sheet for the SFR configuration.
1.3.6.1

Alternate Interrupt Vectors

On devices that contain RAM, the RAM can be used as an alternate location for the interrupt vector
locations. Setting the SYSRIVECT bit in SYSCTL causes the interrupt vectors to be remapped to the top
of RAM. When the bit is set, any interrupt vectors to the alternate locations now residing in RAM. Because
SYSRIVECT is automatically cleared on a BOR, it is critical that the reset vector at location 0FFFEh still
be available and handled properly in firmware.

1.3.7 SYS Interrupt Vector Generators
SYS collects all system NMI (SNMI) sources, user NMI (UNMI) sources, and BOR, POR, PUC (reset)
sources of all the other modules. They are combined into three interrupt vectors. The interrupt vector
registers SYSRSTIV, SYSSNIV, SYSUNIV are used to determine which flags requested an interrupt or a
reset. The interrupt with the highest priority of a group, when enabled, generates a number in the
corresponding SYSRSTIV, SYSSNIV, SYSUNIV register. This number can be directly added to the
program counter, causing a branch to the appropriate portion of the interrupt service routine. Disabled
interrupts do not affect the SYSRSTIV, SYSSNIV, SYSUNIV values. Reading SYSRSTIV, SYSSNIV,
SYSUNIV register automatically resets the highest pending interrupt flag of that register. If another
interrupt flag is set, another interrupt is immediately generated after servicing the initial interrupt. Writing to
the SYSRSTIV, SYSSNIV, SYSUNIV register automatically resets all pending interrupt flags of the group.
1.3.7.1

SYSSNIV Software Example

The following software example shows the recommended use of SYSSNIV. The SYSSNIV value is added
to the PC to automatically jump to the appropriate routine. For SYSRSTIV and SYSUNIV, a similar
software approach can be used. The following is an example for a generic device. Vectors can change in
priority for a given device. The device-specific data sheet should be referenced for the vector locations. All
vectors should be coded symbolically to allow for easy portability of code.
SNI_ISR: ADD
RETI
JMP
JMP
JMBO_ISR:
...
RETI
VMA_ISR:
...
RETI
JMBI_ISR:
...
RETI

1.4

&SYSSNIV,PC
VMA_ISR
JMBI_ISR

;
;
;
;
;
;
;
;
;
;
;
;
;

Add offset to jump table
Vector 0: No interrupt
Vector 10: VMAIFG
Vector 12: JMBINIFG
Vector 14: JMBOUTIFG
Task_E starts here
Return
Vector A
Task_A starts here
Return
Vector C
Task_C starts here
Return

Operating Modes
The MSP430 family is designed for low-power applications and uses the different operating modes shown
in Figure 1-5.
The operating modes take into account three different needs:
• Low power
• Speed and data throughput
• Minimizing current consumption of individual peripherals
Low-power modes LPM0 through LPM4 are configured with the CPUOFF, OSCOFF, SCG0, and SCG1
bits in the SR. The advantage of including the CPUOFF, OSCOFF, SCG0, and SCG1 mode-control bits in
the SR is that the present operating mode is saved onto the stack during an interrupt service routine.
Program flow returns to the previous operating mode if the saved SR value is not altered during the
interrupt service routine. Program flow can be returned to a different operating mode by manipulating the

32

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Operating Modes

www.ti.com

saved SR value on the stack inside of the interrupt service routine. When setting any of the mode-control
bits, the selected operating mode takes effect immediately. Peripherals operating with any disabled clock
are disabled until the clock becomes active. Peripherals may also be disabled with their individual control
register settings. All I/O port pins, RAM, and registers are unchanged. Wake-up from LPM0 through LPM4
is possible through all enabled interrupts.
When LPMx.5 (LPM3.5 or LPM4.5) is entered, the voltage regulator of the Power Management Module
(PMM) is disabled. All RAM and register contents are lost. Although the I/O register contents are lost, the
I/O pin states are locked upon LPMx.5 entry. See the Digital I/O chapter for further details. Wake-up from
LPM4.5 is possible from a power sequence, a RST event, or from specific I/O. Wake-up from LPM3.5 is
possible from a power sequence, a RST event, an RTC event, an LF crystal fault, or from specific I/O.
NOTE: The TEST/SBWTCK pin is used for interfacing to the development tools through Spy-BiWire. When the TEST/SBWTCK pin is high, wake-up times from LPM2 (device specific) ,
LPM3, and LPM4 may be different compared to when TEST/SBWTCK is low. Pay careful
attention to the real-time behavior when exiting from LPM2 (device specific), LPM3, and
LPM4 with the device connected to a development tool (for example, MSP-FET430UIF). See
the PMM chapter for details.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

33

Operating Modes

www.ti.com
From active mode

LPMx.5:
VCORE = off
(all modules off
optional RTC)

Brownout
fault

RTC wakeup
Port wakeup

Security
violation

RST/NMI
(Reset wakeup)
‡

RST/NMI
(Reset event)

SW BOR
event

BOR
Load
calibration data

SVSH fault

SW POR
event
POR

WDT Active
Time expired, Overflow

PMM, WDT
Password violation

FRAM
Uncorrectable Bit Error

PUC

Peripheral area fetch

CPUOFF=1
OSCOFF=0
SCG0=0
SCG1=0

PMMREGOFF = 1

Active Mode: CPU is Active
Various Modules are active

to LPMx.5

†

†

LPM0:
CPU/MCLK = off
ACLK = on
VCORE = on

†
†

CPUOFF=1
OSCOFF=0
SCG0=0
SCG1=1

CPUOFF=1
OSCOFF=0
SCG0=1
SCG1=1

LPM4:
CPU/MCLK = off
FLL = off
ACLK = off
VCORE = on

LPM3:
CPU/MCLK = off
ACLK = on
VCORE = on

LPM2*:
CPU/MCLK = off
ACLK = on
VCORE = on
Events

CPUOFF=1
OSCOFF=1
SCG0=1
SCG1=1

† Any enabled interrupt and NMI performs this transition
‡ An enabled reset always restarts the device

Operating modes/Reset phases
Arbitrary transitions

Figure 1-5. Operation Modes

34

System Resets, Interrupts, and Operating Modes, System Control Module (SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Operating Modes

www.ti.com

Table 1-2. Operation Modes
SCG1
0

(1)

SCG0

OSCOFF

0

(1)

0

CPUOFF
0

(1)

Mode

CPU and Clocks Status (2)

Active

CPU, MCLK are active.
ACLK is active. SMCLK optionally active (SMCLKOFF = 0).
DCO is enabled if sources ACLK, MCLK, or SMCLK (SMCLKOFF = 0).
DCO bias is enabled if DCO is enabled or DCO sources MCLK or SMCLK
(SMCLKOFF = 0).
FLL is enabled if DCO is enabled.

0

0

0

1

LPM0

CPU, MCLK are disabled.
ACLK is active. SMCLK optionally active (SMCLKOFF = 0).
DCO is enabled if sources ACLK or SMCLK (SMCLKOFF = 0).
DCO bias is enabled if DCO is enabled or DCO sources MCLK or SMCLK
(SMCLKOFF = 0).
FLL is enabled if DCO is enabled.

1

0

0

1

LPM2
(device
specific)

CPU, MCLK, and FLL are disabled.
ACLK is active. SMCLK is disabled.
FLL is disabled.

1

1

0

1

LPM3

CPU, MCLK, and FLL are disabled.
ACLK is active. SMCLK is disabled.
FLL is disabled.

(1)
(2)

1

1

1

1

LPM4

CPU and all clocks are disabled.

1

1

1

1

LPM3.5

When PMMREGOFF = 1, regulator is disabled. RAM retention in backup memory. In
this mode, RTC and LCD operation is possible when configured properly. See the RTC
and LCD modules for further details.

1

1

1

1

LPM4.5

When PMMREGOFF = 1, regulator is disabled. No memory retention. In this mode, all
clock sources are disabled; that is, no RTC operation is possible.

LPMx.5 modes are entered by following the correct entry sequence as defined in Section 1.4.2.
The system clocks and the low-power modes can be affected by the clock request system. See the CS chapter for details.

1.4.1 Low-Power Modes and Clock Requests
A peripheral module request its clock sources automatically from the clock system (CS) module if it is
required for its proper operation, regardless of the current power mode of operation. For details, see
Section 3.2.11, Operation From Low-Power Modes, Requested by Peripherals Modules.
Because of the clock request mechanism the system might not reach the low-power modes requested by
the bits set in the CPU status register, SR, as listed in Table 1-3.
Table 1-3. Requested vs Actual LPM
Actual LPM ...

Requested (SR Bits
According to Table 1-2

If No Clock Requested

If Only ACLK Requested

If SMCLK Requested

LPM0

LPM0

LPM0

LPM0

LPM2 (device specific)

LPM2

LPM2

LPM0

LPM3

LPM3

LPM3

LPM0

LPM4

LPM4

LPM3

LPM0

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

35

Operating Modes

www.ti.com

1.4.2 Entering and Exiting Low-Power Modes LPM0 Through LPM4
An enabled interrupt event wakes the device from low-power operating modes LPM0 through LPM4. The
program flow for exiting LPM0 through LPM4 is:
• Enter interrupt service routine
– The PC and SR are stored on the stack.
– The CPUOFF, SCG1, and OSCOFF bits are automatically reset.
• Options for returning from the interrupt service routine
– The original SR is popped from the stack, restoring the previous operating mode.
– The SR bits stored on the stack can be modified within the interrupt service routine to return to a
different operating mode when the RETI instruction is executed.
; Enter LPM0 Example
BIS
#GIE+CPUOFF,SR
; ...
;
; Exit LPM0 Interrupt Service Routine
BIC
#CPUOFF,0(SP)
RETI

; Enter LPM3 Example
BIS
#GIE+CPUOFF+SCG1+SCG0,SR
; ...
;
; Exit LPM3 Interrupt Service Routine
BIC
#CPUOFF+SCG1+SCG0,0(SP)
RETI

; Enter LPM0
; Program stops here

; Exit LPM0 on RETI

; Enter LPM3
; Program stops here

; Exit LPM3 on RETI

; Enter LPM4 Example
BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ; Enter LPM4
; ... ; Program stops here
;
; Exit LPM4 Interrupt Service Routine
BIC #CPUOFF+OSCOFF+SCG1+SCG0,0(SP) ; Exit LPM4 on RETI
RETI

1.4.3 Low-Power Modes LPM3.5 and LPM4.5 (LPMx.5)
The low-power modes LPM3.5 and LPM4.5 (LPMx.5 (1)) give the lowest power consumption on a device.
In LPMx.5, the core LDO of the device is switched off. This has the following effects:
• Most of the modules are powered down.
– In LPM3.5, only modules powered by the RTC LDO continue to operate. At least an RTC module is
connected to the RTC LDO. See the device data sheet for other modules (if any) that are
connected to the RTC LDO.
– In LPM4.5 the RTC LDO and the connected modules are switched off.
• The register content of all modules and the CPU is lost.
• The SRAM content is lost.
• A wake-up from LPMx.5 causes a complete reset of the core.
• The application must initialize the complete device after a wakeup from LPMx.5.
The wake-up time from LPMx.5 is much longer than the wake-up time from any other power mode (see
the device-specific data sheet). This is because the core domain must power up and the device internal
initialization must be done. In addition, the application must be initialized again. Therefore, use LPMx.5
only when the application is in LPMx.5 for a long time.
(1)

36

The abbreviation "LPMx.5" is used in this document to indicate both LPM3.5 and LPM4.5.
System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Operating Modes

www.ti.com

1.4.3.1

Enter LPMx.5

Do the following steps to enter LPMx.5:
1. Store any information that must be available after wakeup from LPMx.5 in FRAM.
2. For LPM4.5 set all ports to general-purpose I/Os (PxSEL0 = 00h and PxSEL1 = 00h).
For LPM3.5 if the LF crystal oscillator is used do not change the settings for the I/Os shared with the
LF-crystal-oscillator. These pins must be configured as LFXIN and LFXOUT. Set all other port pins to
general-purpose I/Os with PxSEL0 and PxSEL1 bits equal to 0.
3. Set the port pin direction and output bits as necessary for the application.
4. To enable a wakeup from an I/O do the following:
(a) Select the wakeup edge (PxIES)
(b) Clear the interrupt flag (PxIFG)
(c) Set the interrupt enable bit (PxIE)
5. For LPM3.5, the modules that stay active must be enabled. For example, the RTC must be enabled if
necessary. Only modules connected to the RTC LDO can stay active.
6. For LPM3.5, enable any interrupt sources from these modules as wakeup sources, if necessary. See
the corresponding module chapter.
7. Disable the watchdog timer WDT if it is enabled and in watchdog mode. If the WDT is enabled and in
watchdog mode, the device does not enter LPMx.5.
8. Clear the GIE bit:
BIC #GIE, SR

9. Do the following steps to set the PMMREGOFF bit in the PMMCTL0 register:
(a) Write the correct PMM password to get write access to the PMM control registers.
MOV.B #PMMPW_H, &PMMCTL0_H

(b) Set PMMREGOFF bit in the PMMCTL0 register.
BIS.B #PMMREGOFF, &PMMCTL0_L

(c) To disable the SVS during LPMx.5, clear the SVSHE bit in PMMCTL0.
BIC.B #SVSHE, &PMMCTL0_L

(d) Write an incorrect PMM password to disable the write access to the PMM control registers.
MOV.B #000h, &PMMCTL0_H

10. Enter LPMx.5 with the following instruction:
BIS #CPUOFF+OSCOFF+SCG0+SCG1, SR

The device enters LPM3.5 if any module that is connected to the RTC LDO is enabled. The device enters
LPM4.5 if none of the modules that are connected to the RTC LDO are enabled.
1.4.3.2

Exit From LPMx.5

The following conditions cause an exit from LPMx.5:
• A wake-up event on an I/O, if configured and enabled. The interrupt flag of the corresponding port pin
is set (PxIFG). The PMMLPM5IFG bit is set.
• A wake-up event from the RTC, if enabled. The corresponding interrupt flag in the RTC is set. The
PMMLPM5IFG bit is set.
• A wake-up signal from the RST pin.
• A power cycle. Either the SVSHIFG or none of the PMMIFGs is set.
Any exit from LPMx.5 causes a BOR. The program execution starts at the address the reset vector points
to. PMMLPM5IFG = 1 indicates a wakeup from LPMx.5 or the System Reset Vector Word register
SYSRSTIV can be used to decode the reset condition (see the device-specific data sheet).
After wakeup from LPMx.5, the state of the I/Os and the modules connected to the RTC LDO are locked
and remain unchanged until you clear the LOCKLPM5 bit in the PM5CTL0 register.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

37

Operating Modes

1.4.3.3

www.ti.com

Wake up From LPM3.5

Do the following steps after a wakeup from LPM3.5:
1. Initialize the registers of the modules connected to the RTC LDO exactly the same way as they were
configured before the device entered LPM3.5 but do not enable the interrupts.
2. Initialize the port registers exactly the same way as they were configured before the device entered
LPM3.5 but do not enable port interrupts.
3. If the LF-crystal-oscillator was used in LPM3.5 the corresponding I/Os must be configured as LFXIN
and LFXOUT. The LF-crystal-oscillator must be enabled in the clock system (see the clock system CS
chapter).
4. Clear the LOCKLPM5 bit in the PM5CTL0 register.
5. Enable port interrupts as necessary.
6. Enable module interrupts.
7. After enabling the port and module interrupts, the wake-up interrupt is serviced as a normal interrupt.
1.4.3.4

Wake up from LPM4.5

Do the following steps after a wakeup from LPM4.5:
1. Initialize the port registers exactly the same way as they were configured before the device entered
LPM4.5 but do not enable port interrupts.
2. Clear the LOCKLPM5 bit in the PM5CTL0 register.
3. Enable port interrupts as necessary.
4. After enabling the port interrupts, the wake-up interrupt is serviced as a normal interrupt.
If a crystal oscillator is needed after a wakeup from LPM4.5 then configure the corresponding pins and
start the oscillator after you cleared the LOCKLPM5 bit.

1.4.4 Extended Time in Low-Power Modes
The temperature coefficient of the DCO should be considered when the DCO is disabled for extended lowpower mode periods. If the temperature changes significantly, the DCO frequency at wakeup may be
significantly different from when the low-power mode was entered and may be out of the specified range.
To avoid this, the DCO output can be divided by two before entering the low-power mode for extended
periods of time where temperature can change.
; Enter LPM3 Example with DCO/2 settings (to be updated upon the completion of CS module)
MOV
#FLLD0+FLLN
; Set DCO Output divided by 2
BIS
#GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR
; Enter LPM3
; ...
; Program stops
;
;

38

Interrupt Service Routine
BIC
#CPUOFF+OSCOFF+SCG1+SCG0,0(SR)
RETI

; Exit LPM3 on RETI

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Principles for Low-Power Applications

www.ti.com

1.5

Principles for Low-Power Applications
Often, the most important factor for reducing power consumption is using the device clock system to
maximize the time in LPM3 or LPM4 mode whenever possible.
• Use interrupts to wake the processor and control program flow.
• Peripherals should be switched on only when needed.
• Use low-power integrated peripheral modules in place of software-driven functions. For example,
Timer_A and Timer_B can automatically generate PWM and capture external timing with no CPU
resources.
• Calculated branching and fast table look-ups should be used in place of flag polling and long software
calculations.
• Avoid frequent subroutine and function calls due to overhead.
• For longer software routines, single-cycle CPU registers should be used.
If the application has low duty cycle and slow response time events, maximizing time in LPMx.5 can
further reduce power consumption significantly.

1.6

Connection of Unused Pins
Table 1-4 lists the correct termination of unused pins.
Table 1-4. Connection of Unused Pins (1)

(1)

(2)

1.7

Pin

Potential

AVCC

DVCC

Comment

AVSS

DVSS

Px.0 to Px.7

Open

RST/NMI

DVCC or VCC

TDO
TDI
TMS
TCK

Open

The JTAG pins are shared with general-purpose I/O function. If not being used,
these should be switched to port function. When used as JTAG pins, these pins
should remain open.

TEST

Open

This pin always has an internal pulldown enabled.

Switched to port function, output direction (PxDIR.n = 1)
47-kΩ pullup or internal pullup selected with 10-nF (1.1 nF) pulldown (2)

For any unused pin with a secondary function that is shared with general-purpose I/O, follow the Px.0 to Px.7 unused pin
connection guidelines.
The pulldown capacitor should not exceed 1.1 nF when using devices with Spy-Bi-Wire interface in Spy-Bi-Wire mode with TI
tools like FET interfaces or GANG programmers.

Reset Pin (RST/NMI) Configuration
The reset pin can be configured as a reset function (default) or as an NMI function by the Special Function
Register (SFR), SFRRPCR. Setting SYSNMI causes the RST/NMI pin to be configured as an external
NMI source. The external NMI is edge sensitive and its edge is selectable by SYSNMIIES. Setting the
NMIIE enables the interrupt of the external NMI. Upon an external NMI event, the NMIIFG is set.
The RST/NMI pin can have either a pullup or pulldown present or not. SYSRSTUP selects either pullup or
pulldown and SYSRSTRE causes the pullup or pulldown to be enabled or not. If the RST/NMI pin is
unused, it is required to have either the internal pullup selected and enabled or an external resistor
connected to the RST/NMI pin as shown in Table 1-4.
There is a digital filter that suppresses short pulses on the reset pin to avoid unintended resets of the
device. The minimum reset pulse duration is specified in the device-specific data sheet. The filter is active
only if the pin is configured in its reset function. It is disabled if the pin is used as external NMI source.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

39

Configuring JTAG Pins

1.8

www.ti.com

Configuring JTAG Pins
The JTAG pins are shared with general-purpose I/O pins. There are several ways that the JTAG pins can
be selected for 4-wire JTAG mode in software. Normally, upon a BOR, SYSJTAGPIN is cleared. With
SYSJTAGPIN cleared, the JTAG are configured as general-purpose I/O. See the Digital I/O chapter for
details on controlling the JTAG pins as general-purpose I/O. If SYSJTAG = 1, the JTAG pins are
configured to 4-wire JTAG mode and remain in this mode until another BOR condition occurs. Therefore,
SYSJTAGPIN is a write only once function. Clearing it by software is not possible, and the device does
not change from 4-wire JTAG mode to general-purpose I/O.

1.9

Memory Map – Uses and Abilities

1.9.1 Memory Map
1.9.1.1

MSP430FR4xx Memory Map

This memory map represents the MSP430FR4xx devices. Although the address ranges differ from device
to device, overall behavior remains the same.
Can generate NMI on read/write/fetch
Generates PUC on fetch access
Protectable for read/write accesses
Always able to access PMM registers from (1); Mass erase by user possible
Mass erase by user possible
Bank erase by user possible
Segment erase by user possible
Address Range
00000h-00FFFh
00000h-000FFh
00100h-00FEFh
00FF0h-00FF3h
00FF4h-00FF7h
01800h-019FFh
02000h-027FFh
0C400h-0FFFFh
0FF80h-0FFFFh
(1)
(2)
(3)

40

Name and Usage
Peripherals with gaps
Reserved for system extension
Peripherals
Descriptor type (2)
Start address of descriptor structure
Information Memory B
RAM 2KB
Program 15KB
Interrupt Vectors

Properties

x
x
x
x

x

x

x

x

x

x (3)

x

x

x

Access rights are separately programmable for SYS and PMM.
On vacant memory space, the value 03FFFh is driven on the data bus.
Fixed ID for all MSP430 devices. See Section 1.13.1 for further details.

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Memory Map – Uses and Abilities

www.ti.com

1.9.1.2

MSP430FR2433 Memory Map

This memory map represents the MSP430FR2433 device. Although the address ranges differ from device
to device, overall behavior remains the same.
Can generate NMI on read/write/fetch
Generates PUC on fetch access
Protectable for read/write accesses
Always able to access PMM registers from (1); Mass erase by user possible
Mass erase by user possible
Bank erase by user possible
Segment erase by user possible

(1)
(2)
(3)

Address Range
00000h-00FFFh
00000h-000FFh
00100h-00FEFh
00FF0h-00FF3h

Name and Usage
Peripherals with gaps
Reserved for system extension
Peripherals
Descriptor type (2)

00FF4h-00FF7h
01800h-019FFh
02000h-02FFFh
0C400h-0FFFFh
0FF80h-0FFFFh

Start address of descriptor structure
Information Memory B
RAM 4KB
Program 15KB
Interrupt Vectors

Properties

x
x
x
x

x

x

x

x

x

x (3)

x

x

x

Access rights are separately programmable for SYS and PMM.
On vacant memory space, the value 03FFFh is driven on the data bus.
Fixed ID for all MSP430 devices. See Section 1.13.1 for further details.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

41

Memory Map – Uses and Abilities

www.ti.com

1.9.2 Vacant Memory Space
Vacant memory is nonexistent memory space. Accesses to vacant memory space generate a system
(non)maskable interrupt (SNMI), when the interrupt is enabled (VMAIE = 1). Reads from vacant memory
result in the value 3FFFh. In the case of a fetch, this is taken as JMP $. Fetch accesses from vacant
peripheral space result in a PUC. After the boot code is executed, the boot code memory space behaves
like vacant memory space and also causes an NMI on access.

1.9.3 FRAM Write Protection
FRAM write protection allows the user to prevent any unwanted write protection to FRAM contents. The
SYS module offers two separate write protection.
• User program FRAM protection – always used to store user main program and constant data protected
by the PFWP bit in the SYSCFG0 register
• User data FRAM protection – always fixed from 1800h to 19FFh and protected by the DFWP bit in the
SYSCFG0 register
• Before FRAM access, the write-protect password must be written togehter with the program or data
FRAM protection bit; see the device-specific SYSCFG0 register in Section 1.16 for details.
When write protection is enabled, any write access to the protected FRAM causes an invalid write
operation but does not generate an interrupt or reset. TI recommends enabling write protection at the
beginning of the user initialization routine. To write date to FRAM, write the data as soon as the write
protection is disabled, and then immediately enable write protection again when the write is complete.
CAUTION
To protect the program stored in FRAM from unintended writes, FRAM write
protection must be enabled at all times, except when an intentional write
operation is performed. The write operation should be completed within as
short a time as possible with interrupts disabled to reduce the risk of an
unintended write operation.

1.9.4 Bootloader (BSL)
The bootloader (BSL) (formerly known as the bootstrap loader) is software that is executed after start-up
when a certain BSL entry condition is applied. The BSL enables the user to communicate with the
embedded memory in the microcontroller during the prototyping phase, final production, and in service. All
memory mapped resources, the programmable memory (FRAM memory), the data memory (RAM), and
the peripherals can be modified by the BSL as required. The user can define custom BSL code for FRAMbased devices and protect it against erasure and unintentional or unauthorized access.
On devices without USB, a basic BSL program is provided by TI. This supports the commonly used UART
protocol with RS232 interfacing, allowing flexible use of both hardware and software. To use the BSL, a
specific BSL entry sequence must be applied to specific device pins. The correct entry sequence causes
SYSBSLIND to be set. An added sequence of commands initiates the desired function. A boot-loading
session can be exited by continuing operation at a defined user program address or by applying the
standard reset sequence.
Access to the device memory by the BSL is protected against misuse by a user-defined password.
Devices with USB have a USB based BSL program provided by TI. For more details, see the
MSP430FR4xx and MSP430FR2xx Bootloader (BSL) User's Guide (SLAU610).
The amount of BSL memory that is available is device specific. The BSL memory size is organized into
segments. See the device-specific data sheet for the number and size of the segments available. It is
possible to assign a small amount of RAM to the allocated BSL memory. Setting SYSBSLR allocates the
lowest 16 bytes of RAM for the BSL. When the BSL memory is protected, access to these RAM locations
is only possible from within the protected BSL memory segments.

42

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

JTAG Mailbox (JMB) System

www.ti.com

It may be desirable in some BSL applications to only allow changing of the Power Management Module
settings from the protected BSL segments. This is possible with the SYSPMMPE bit. Normally, this bit is
cleared and allows access of the PMM control registers from any memory location. Setting SYSPMMPE
allows access to the PMM control registers only from the protected BSL memory. After SYSPMMPE is set,
it can only be cleared by a BOR event.

1.10 JTAG Mailbox (JMB) System
The SYS module provides the capability to exchange user data through the regular JTAG or SBW
test/debug interface. The idea behind the JMB is to have a direct interface to the CPU during debugging,
programming, and test that is identical for all MSP430 devices of this family and uses only a few or no
user application resources. The JTAG interface was chosen because it is available on all MSP430 devices
and is a dedicated resource for debugging, programming, and test.
Applications of the JMB are:
• Providing entry password for device lock or unlock protection
• Run-time data exchange (RTDX)

1.10.1 JMB Configuration
The JMB supports two transfer modes, 16 bit and 32 bit. Set JMBMODE to enable 32-bit transfer mode.
Clear JMBMODE to enable 16-bit transfer mode.

1.10.2 SYSJMBO0 and SYSJMBO1 Outgoing Mailbox
Two 16-bit registers are available for outgoing messages to the JTAG/SBW port. SYSJMBO0 is only used
when using 16-bit transfer mode (JMBMODE = 0). SYSJMBO1 is used in addition to SYSJMBO0 when
using 32-bit transfer mode (JMBMODE = 1). When the application wishes to send a message to the JTAG
port, it writes data to SYSJMBO0 for 16-bit mode, or JBOUT0 and JBOUT1 for 32-bit mode.
JMBOUT0FG and JMBOUT1FG are read only flags that indicate the status of SYSJMBO0 and
SYSJMBO1, respectively. When JMBOUT0FG is set, SYSJMBO0 has been read by the JTAG port and is
ready to receive new data. When JMBOUT0FG is reset, the SYSJMBO0 is not ready to receive new data.
JMBOUT1FG behaves similarly.

1.10.3 SYSJMBI0 and SYSJMBI1 Incoming Mailbox
Two 16-bit registers are available for incoming messages from the JTAG port. Only SYSJMBI0 is used in
16-bit transfer mode (JMBMODE = 0). SYSJMBI1 is used in addition to SYSJMBI0 in 32-bit transfer mode
(JMBMODE = 1). To send a message to the application, the JTAG port writes data to SYSJMBI0 (for 16bit mode) or to SYSJMBI0 and SYSJMBI1 (for 32-bit mode).
JMBIN0FG and JMBIN1FG are flags that indicate the status of SYSJMBI0 and SYSJMBI1, respectively.
When JMBIN0FG = 1, SYSJMBI0 has data that is available for reading. When JMBIN0FG = 0, no new
data is available in SYSJMBI0. JMBIN1FG behaves similarly.
To configure JMBIN0FG and JMBIN1FG to clear automatically, set JMBCLR0OFF = 0 and JMBCLR1OFF
= 0, respectively. Otherwise, these flags must be cleared by software.

1.10.4 JMB NMI Usage
To avoid unnecessary polling, the JMB handshake mechanism can be configured to use interrupts. In 16bit mode, JMBOUTIFG is set when SYSJMBO0 has been read by the JTAG port and is ready to receive
data. In 32-bit mode, JMBOUTIFG is set when both SYSJMBO0 and SYSJMBO1 have been read by the
JTAG port and are ready to receive data. If JMBOUTIE is set, these events cause a system NMI. In 16-bit
mode, JMBOUTIFG is cleared automatically when data is written to SYSJMBO0. In 32-bit mode,
JMBOUTIFG is cleared automatically when data is written to both SYSJMBO0 and SYSJMBO1. In
addition, the JMBOUTIFG can be cleared when reading SYSSNIV. Clearing JMBOUTIE disables the NMI
interrupt.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

43

Device Security

www.ti.com

In 16-bit mode, JMBINIFG is set when SYSJMBI0 is available for reading. In 32-bit mode, JMBINIFG is
set when both SYSJMBI0 and SYSJMBI1 are available for reading. If JMBOUTIE is set, these events
cause a system NMI. In 16-bit mode, JMBINIFG is cleared automatically when SYSJMBI0 is read. In 32bit mode, JMBINIFG Is cleared automatically when both SYSJMBI0 and SYSJMBI1 are read. In addition,
the JMBINIFG can be cleared when reading SYSSNIV. Clearing JMBINIE disables the NMI interrupt.

1.11 Device Security
This section describes options for securing the device to prevent unauthorized access from JTAG/SBW or
BSL to the device memory. See Table 1-5 for a summary of security options.
Table 1-5. BSL and JTAG/SBW Signatures
Name

Addresses

Value

BSL Password

FFE0h-FFFFh

User defined +
Vector table configuration
5555_5555h

BSL Signature

FF84h-FF87h

FF80h-FF83h

This password must be provided by the BSL host
before the device is accessible by the BSL.
BSL is disabled.

AAAA_AAAAh

BSL is password protected. Mass erase on wrong
BSL password feature disabled.

Any other value

BSL is password protected. Mass erase on wrong
BSL password feature enabled.

FFFF_FFFFh
JTAG/SBW
Signature

Device Security

0000_0000h
Any other value

JTAG/SBW is unlocked.
JTAG/SBW is locked.

1.11.1 JTAG and SBW Lock Mechanism (Electronic Fuse)
A device can be protected from unauthorized access by restricting accessibility of JTAG commands that
can be transferred to the device by the JTAG and SBW interface. This is achieved by programming the
electronic fuse. When the device is protected, the JTAG and SBW interface remains functional, but JTAG
commands that give direct access into the device are completely disabled. Locking the device requires the
programming of two signatures in FRAM. JTAG Signature 1 (memory location 0FF80h) and JTAG
Signature 2 (memory location 0FF82h) control the behavior of the device locking mechanism.
NOTE: When a device has been protected, TI cannot access the device for a customer return.
Access is only possible if a BSL is provided with its corresponding key or an unlock
mechanism is provided by the customer.

A device can be locked by writing any value other than 0000h or FFFFh to both JTAG Signature 1 and
JTAG Signature 2. In this case, the JTAG and SBW interfaces grant access to a limited JTAG command
set that restricts accessibility into the device. The only way to unlock the device in this case is to use the
BSL to overwrite the JTAG signatures with 0000h or FFFFh. Some JTAG commands are still possible
when the device is secured, including the BYPASS command (see IEEE Std 1149-2001) and the
JMB_EXCHANGE command, which allows access to the JTAG Mailbox System (see Section 1.10.4 for
details).
Signatures that have been entered do not take effect until the next BOR event has occurred, at which time
the signatures are checked.

44

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Device Security

www.ti.com

1.11.2 BSL Security Mechanism
Two BSL signatures, BSL Signature 1 (memory location FF84h) and BSL Signature 2 (memory location
FF86h) reside in FRAM and can be used to control the behavior of the BSL. Writing 5555h to BSL
Signature 1 and BSL Signature 2 disables the BSL function and any access to the BSL memory space
causes a vacant memory access as described in Section 1.9. Most BSL commands require the BSL to be
unlocked by a user-defined password. An incorrect password erases the device memory as a security
feature. Writing AAAAh to both BSL Signature 1 and BSL Signature 2 disables this security feature. This
causes a password error to be returned by the BSL, but the device memory is not erased. In this case,
unlimited password attempts are possible.
For more details, see the MSP430 Programming With the Bootloader (BSL) User's Guide (SLAU319) and
the MSP430FR4xx and MSP430FR2xx Bootloader (BSL) User's Guide (SLAU610).

1.12 Device-Specific Configurations
The following sections describe the device-specific configurations.
Section 1.12.1
Section 1.12.2

MSP430FR413x and MSP430FR203x Configurations
MSP430FR2433 Configurations

1.12.1 MSP430FR413x and MSP430FR203x Configurations
This section describes the configurations that are specific to MSP430FR413x and MSP430FR203x
devices.
1.12.1.1 FRAM Write Protection
The FRAM protection allows users to protect user code and data from accidental write operation. The
write operation to main code FRAM and information FRAM are protected by the PFWP and DFWP bits,
respectively, in the SYSCFG0 register. After a PUC reset, both bits default to 1 and writes to FRAM are
disabled. User code must clear the corresponding bit before write operation. See Section 1.16.2.1 for
MSP430FR413x devices and Section 1.16.1.1 for MSP430FR203x devices.
1.12.1.2 Infrared Modulation Function
The SYS module includes IR modulation logic that the device can use to easily generate accurately
modulated IR waveforms, such as RC-5 data format, directly on a external output pin. Figure 1-6 shows
the detailed of the circuitry implementation. Set the IREN bit in the SYSCFG1 register to enable the logic.
If IREN is cleared, this function is bypassed and the external pin defaults to general-purpose I/O.
This function has two different PWM input signals to support either ASK or FSK modulations. In ASK
modulation, the first PWM is used for carrier generation and the second generates the envelope. In FSK
modulation, the first PWM and the second PWM represent the two different offset frequencies. The
IRMSEL bit in SYSCFG1 register specifies the selected mode. Before the modulated data is output to the
external pin, the signal can be inverted by setting the IRPSEL bit in SYSCFG1 register for adapting to
different external drive circuitry.
The IR modulation function can be used with data generated by either hardware or software. In hardware
data generation, the data comes from eUSCI_A and the 8-bit data is automatically serially sent. In
software data generation, IRDATA bit in SYSCFG1 register is used to control the logic 0 or 1 to be sent.
The IRDSSEL bit in SYSCFG1 registers control the data flow from hardware or firmware.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

45

Device-Specific Configurations
TA0CLK
ACLK

00

SMCLK
from CapTouchIO
(INCLK)

10

01

Divider

www.ti.com

Timer0_A3

Counter

TA1CLK

11
TA0CTL.TASSEL

CCR0

(TA0.0A)
(TA0.0B)

00
01

DVSS

10

DVCC

11

Input
Logic
TA0CCTL0.CCIS

P1.7
from RTC
DVSS

10

DVCC

11

Input
Logic
TA0CCTL1.CCIS

P1.6
from CapTouchIO

Comparator 0

TA1CTL.TASSEL

(TA0.0A)

(TA1.0A)
00
(TA1.0B)
01

CCR1

Comparator 1

(TA0.1A)

Output
(TA0.1B)
Logic
CCR2

00
01

DVSS

10

DVCC

11

Input
Logic

Comparator 2

(TA0.2A)

Output
Logic (TA0.2B)

10

DVCC

11

(TA1.1A)
00
(TA1.1B)
01

P4.0

(TA0.2A)
(TA0.2B)

DVSS

CCR0

Input
Logic

Comparator 0

DVSS

10

DVCC

11

CCR1

Input
Logic

Comparator 1

(TA1.2A)
00
(TA1.2B)
01

P8.3

TA0CCTL2.CCIS

DVSS

10

DVCC

11

(TA1.1A)

Output
Logic (TA1.1B)

P4.0
to ADC Trigger

CCR2

TA1CCTL1.CCIS
P1.6

(TA1.0A)

Output
(TA1.0B)
Logic

TA1CCTL0.CCIS
P1.7

Timer1_A3

Counter

Divider

11

Output
(TA0.0B)
Logic

00
01

01
10

INCLK

(TA0.1A)
(TA0.1B)

00

ACLK
SMCLK

Input
Logic

Comparator 2

(TA1.2A)

Output
Logic (TA1.2B)

P8.3

TA1CCTL2.CCIS

0

IR Modulation (SYS)

1
0
1

0
1

1

P1.0/UCA0TXD/UCA0SIMO
0

1
0
From UCA0TXD/UCA0SIMO

0
1

SYSCFG1.IRDATA

SYSCFG1.IRMSEL

SYSCFG1.IRDSSEL

SYSCFG1.IREN
SYSCFG1.IRPSEL

Figure 1-6. IR Modulation Combinatory Logics

1.12.1.3 ADC Pin Enable and 1.2-V Reference Settings
ADC pins are multiplexed with I/O functions. When the ADC channel is used, the I/O function must be
disabled to avoid function conflicts over these pins: A0 to A11. Set the ADCPTCLx bit in the SYSCFG2
register to disable the I/O functions. See Section 1.16.2.3 for MSP430FR413x devices and
Section 1.16.1.3 for MSP430FR203x devices.
When ADC A4 channel is enabled, the 1.2-V on-chip reference can be output to P1.4 by setting PMM
registers. See Figure 1-7 and the PMM Chapter.
to ADC channel 4
up to 1mA
1.2V

P1.4/MCLK/TCK/A4/VREF+

EXTREFEN

REFGENACT

REF
Generation

Bandgap

REFGENRDY

REFBGRDY REFBGACT

BGMODE

Figure 1-7. 1.2-V Reference Output on A4

1.12.1.4 LCD Power Pin Enable
In MSP430FR413x devices, LCD power pins are multiplexed with I/O functions. When LCD is used, the
I/O function must be disabled to avoid function conflicts on these pins: LCDCAP0, LCDCAP1, R13, R23,
R33. Set the LCDPCTL bit in SYSCFG2 register to disable the I/O functions and enable the LCD power
functions (see Section 1.16.2.3).
46

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Device-Specific Configurations

www.ti.com

1.12.2 MSP430FR2433 Configurations
This section describes the configurations that are specific to MSP430FR2433 device.
1.12.2.1 FRAM Write Protection
The FRAM protection allows users to protect user code and data from accidental write operation. The
write operation to main code FRAM and information FRAM are protected by the PFWP and DFWP bits,
respectively, in the SYSCFG0 register. After a PUC reset, both bits default to 1 and writes to FRAM are
disabled. User code must write correct password and clear the corresponding bit before write operation.
See Section 1.16.3.1 for MSP430FR2433 device.
1.12.2.2 Infrared Modulation Function
The SYS module includes IR modulation logic that can easily generate accurately modulated IR
waveforms, such as RC-5 data format, directly on a external output pin. Figure 1-8 shows the detailed of
the circuitry implementation. Set the IREN bit in the SYSCFG1 register to enable the logic. If IREN is
cleared, this function is bypassed, and the external pin defaults to general-purpose I/O.
This function has two different PWM input signals to support either ASK or FSK modulations. In ASK
modulation, the first PWM is used for carrier generation and the second generates the envelope. In FSK
modulation, the first PWM and the second PWM represent the two different offset frequencies. The
IRMSEL bit in SYSCFG1 register specifies the selected mode. Before the modulated data is output to the
external pin, the signal can be inverted by setting the IRPSEL bit in SYSCFG1 register for adapting to
different external drive circuitry.
The IR modulation function can be used with data generated by either hardware or software. In hardware
data generation, the data comes from eUSCI_A or eUSCI_B and the 8-bit data is automatically serially
sent. In software data generation, IRDATA bit in SYSCFG1 register is used to control the logic 0 or 1 to be
sent. The IRDSSEL bit in SYSCFG1 registers control the data flow from hardware or firmware.
TA0CLK
ACLK

00

SMCLK
from CapTouchIO
(INCLK)

10

01

Divider

Timer0_A3

Counter

TA1CLK

11
TA0CTL.TASSEL

CCR0

(TA0.0A)
(TA0.0B)

00
01

DVSS

10

DVCC

11

Input
Logic
TA0CCTL0.CCIS

P1.1
from RTC

01

DVSS

10
11

Input
Logic
TA0CCTL1.CCIS

P1.2
from CapTouchIO

Comparator 0

TA1CTL.TASSEL

(TA0.0A)

(TA1.0A)
00
(TA1.0B)
01

CCR1

Comparator 1

(TA0.1A)

Output
(TA0.1B)
Logic
CCR2

00
01

DVSS

10

DVCC

11

Input
Logic

Comparator 2

(TA0.2A)

Output
Logic (TA0.2B)

10

DVCC

11

(TA1.1A)
00
(TA1.1B)
01

P1.5

(TA0.2A)
(TA0.2B)

DVSS

CCR0

Input
Logic

Comparator 0

DVSS

10

DVCC

11

CCR1

Input
Logic

Comparator 1

P1.2

(TA1.2A)
00
(TA1.2B)
01

P1.4
DVSS

10

DVCC

11

(TA1.1A)

Output
Logic (TA1.1B)

P1.5
to ADC Trigger

CCR2

TA1CCTL1.CCIS

TA0CCTL2.CCIS

(TA1.0A)

Output
(TA1.0B)
Logic

TA1CCTL0.CCIS
P1.1

Timer1_A3

Counter

Divider

11

Output
(TA0.0B)
Logic

00

DVCC

01
10

INCLK

(TA0.1A)
(TA0.1B)

00

ACLK
SMCLK

Input
Logic

Comparator 2

(TA1.2A)

Output
Logic (TA1.2B)

P1.4

TA1CCTL2.CCIS

0

IR Modulation (SYS)

1
0
1

0
1

1

P2.6/UCA1TXD/UCA1SIMO
0

1
0
From UCA1TXD/UCA1SIMO

0
1

SYSCFG1.IRDATA

SYSCFG1.IRMSEL

SYSCFG1.IRDSSEL

SYSCFG1.IREN
SYSCFG1.IRPSEL

Figure 1-8. IR Modulation Combinatory Logics

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

47

Device Descriptor Table

www.ti.com

1.12.2.3 ADC Pin Enable and 1.2-V Reference Settings
ADC pins are multiplexed with I/O functions. When the ADC channel is used, the I/O function must be
disabled to avoid function conflicts over these pins: A0 to A11. Set the ADCPTCLx bit in the SYSCFG2
register to disable the I/O functions. See Section 1.16.3.3 for the MSP430FR2433 device.
When the A4 channel of the ADC is enabled, the 1.2-V on-chip reference can be output to P1.4 by setting
PMM registers (see Figure 1-9 and the PMM Chapter).
to ADC channel 4
up to 1mA
1.2V

P1.4/UCA0TXD/UCA0SIMO/TA1.2/TCK/A4/VREF+

EXTREFEN

REFGENACT

REF
Generation

REFGENRDY

Bandgap

REFBGRDY REFBGACT

BGMODE

Figure 1-9. 1.2-V Reference Output on A4

1.13 Device Descriptor Table
Each device provides a data structure in memory that allows an unambiguous identification of the device
as well as a description of the available modules on a given device. SYS provides this information and can
be used by device-adaptive software tools and libraries to clearly identify a particular device and all of its
modules and capabilities. The validity of the device descriptor can be verified by cyclic redundancy check
(CRC). The CRC checksum covers a device-specific TLV range. See the TLV table in the device-specific
data sheet for the definitions. Figure 1-10 shows the logical order and structure of the device descriptor
table. The complete device descriptor table and its contents can be found in the device-specific data
sheet.

48

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Device Descriptor Table

www.ti.com

Descriptor start address
Info_length
CRC_length

Information block
CRC_value

DeviceID

Firmware revision

Device ID and Revision
Information

Hardware revision
Tag 1
Len 1
Value field 1

First TLV entry
(optional)

Additional TLV entries
(optional)
Tag N
Len N
Value field N

Final TLV entry
(optional)

Figure 1-10. Devices Descriptor Table

1.13.1 Identifying Device Type
The value at address location 00FF0h identifies the family branch of the device. All values starting with
80h indicate a hierarchical structure that consists of the information block and a tag-length-value (TLV)
structure with the various descriptors. Any value other than 80h at address location 00FF0h indicates that
the device is of an older family and contains a flat descriptor beginning at location 0FF0h. The information
block, shown in Figure 1-10 contains the device ID, die revisions, firmware revisions, and other
manufacturer and tool related information. The descriptors contains information about the available
peripherals and their subtypes and addresses and provides the information required to build adaptive
hardware drivers for operating systems.
The length of the descriptors is represented by Info_length and is computed as shown in Equation 1.
Length = 2Info_length in 32-bit words

(1)

For example, if Info_length = 5, then the length of the descriptors equals 128 bytes.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

49

Device Descriptor Table

www.ti.com

1.13.2 TLV Descriptors
The TLV descriptors follow the information block. Because the information block is always a fixed length,
the start location of the TLV descriptors is fixed for a given device family. See the device-specific data
sheet for the complete TLV structure and what descriptors are available.
The TLV descriptors are unique to their respective TLV block and are always followed by the descriptor
block length.
Each TLV descriptor contains a tag field that identifies the descriptor type. Table 1-6 shows the currently
supported tags.
Table 1-6. Tag Values
Short Name

Value

Description

LDTAG

01h

Legacy descriptor

PDTAG

02h

Peripheral discovery descriptor

Reserved

03h

Future use

Reserved

04h

Future use

BLANK

05h

Blank descriptor

Reserved

06h

Future use

ADCCAL

11h

ADC calibration
REF calibration

REFCAL

12h

Reserved

13h-FDh

TAGEXT

FEh

Future use
Tag extender

Each tag field is unique to its respective descriptor and is always followed by a length field. The length
field is one byte if the tag value is 01h through 0FDh and represents the length of the descriptor in bytes.
If the tag value equals 0FEh (TAGEXT), the next byte extends the tag values, and the following two bytes
represent the length of the descriptor in bytes. In this way, a user can search through the TLV descriptor
table for a particular tag value using a routine similar to the following, which is written in pseudo code:
// Identify the descriptor ID (d_ID_value) for the TLV descriptor of interest:
descriptor_address = TLV_START address;
while ( value at descriptor_address != d_ID_value && descriptor_address != TLV_TAGEND &&
descriptor_address < TLV_END)
{
// Point to next descriptor
descriptor_address = descriptor_address + (length of the current TLV block) + 2;
}
if (value at descriptor_address == d_ID_value) {
// Appropriate TLV descriptor has been found!
Return length of descriptor & descriptor_address as the location of the TLV descriptor
} else {
// No TLV descriptor found with a matching d_ID_value
Return a failing condition
}

1.13.3 Calibration Values
The TLV structure contains calibration values that can be used to improve the measurement capability of
various functions. The calibration values available on a given device are shown in the TLV structure of the
device-specific data sheet.
1.13.3.1 1.5-V Reference Calibration
The calibration data consists a word for reference voltage available (1.5 V). The reference voltages are
measured at room temperature. The measured values are normalized by 1.5 V before being stored into
the TLV structure:
50

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Device Descriptor Table

www.ti.com

Factorgain _1.5Vref =

VREF + 15
´2
1.5V

(2)

In this way, a conversion result is corrected by multiplying it with the Factorgain_1.5Vref and dividing the result
by 215 as shown for each of the respective reference voltages:

ADCcalibrated = ADCraw ´ Factorgain _1.5Vref ´

1
215

(3)

In the following example, the integrated 1.5-V reference voltage is used during a conversion.
• Conversion result: 0x0100 = 256 decimal
• Reference voltage calibration factor (Factorgain_1.5Vref) : 0x7BBB
The following steps show how the ADC conversion result can be corrected:
• Multiply the conversion result by 2 (this step simplifies the final division): 0x0100 × 0x0002 = 0x0200
• Multiply the result by Factorgain_1.5Vref: 0x200 × 0x7BBB = 0x00F7_7600
• Divide the result by 216: 0x00F7_7600 / 0x0001_0000 = 0x0000_00F7 = 247 decimal
1.13.3.2 ADC Offset and Gain Calibration
The offset of the ADC is determined and stored as a twos-complement number in the TLV structure. The
offset error correction is done by adding the ADCoffset to the conversion result.

ADCoffset _ calibrated = ADCraw + ADCoffset

(4)

The gain factor of the ADC is calculated by Equation 5:

Factorgain =

1
´ 215
Gain

(5)
15

The conversion result is gain corrected by multiplying it with the Factorgain and dividing the result by 2 :

ADC gain _ calibrated = ADCraw ´ Factorgain ´

1
215

(6)

If both gain and offset are corrected, the gain correction is done first:

ADCcalibrated = ADCraw ´ Factorgain ´

1
+ ADCoffset
215

(7)

1.13.3.3 Temperature Sensor Calibration
The temperature sensor is calibrated using the internal voltage references. The 1.5-V reference voltage
contains a measured value for two temperatures, room temperature (usually the value is 30°C ± 3°C) and
hot temperature (85°C ± 3°C) and are stored in the TLV structure. The characteristic equation of the
temperature sensor voltage, in mV is:

Vsense = TC sensor ´ Temperatur e + Vsensor

(8)

The temperature coefficient, TCSENSOR, in mV/°C, represents the slope of the equation. VSENSOR, in mV,
represents the y-intercept of the equation. Temp, in °C, is the temperature of interest.
The temperature (Temp, °C) can be computed as follows for each of the reference voltages used in the
ADC measurement:

Temperatur e = ( ADCraw - ADC30o C _ 1.5Vref

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

æ
55o C
ç
)´
ç ADC o
- ADC30o C _ 1.5Vref
85 C _ 1.5Vref
è

ö
÷ + 30o C
÷
ø

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

(9)

51

Device Descriptor Table

www.ti.com

1.13.3.4 DCO Calibration
The DCO calibration is stored for a quick setting to maximum DCO frequency (for example, 16 MHz) at
room temperature. Loading this value to the CSCTL0 register significantly reduces the FLL lock time when
the MCU reboot or exits from a low-power mode. If a possible frequency overshoot caused by temperature
drift is expected after exit from an LPM, TI recommends dividing the DCO frequency before use. For more
details, see Section 1.4.4.

52

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SFR Registers

www.ti.com

1.14 SFR Registers
The SFRs are listed in Table 1-8. The base address for the SFRs is listed in Table 1-7. Many of the bits in
the SFRs are described in other chapters throughout this user's guide. These bits are marked with a note
and a reference. See the module-specific chapter for details.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 1-7. SFR Base Address
Module

Base Address

SFR

00100h

Table 1-8. SFR Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

SFRIE1

Interrupt Enable

Section 1.14.1

Read/write

Word

0000h

00h

SFRIE1_L (IE1)

Read/write

Byte

00h

01h

SFRIE1_H (IE2)

Read/write

Byte

00h

02h

Read/write

Word

0082h

02h

SFRIFG1_L (IFG1)

Read/write

Byte

82h

03h

SFRIFG1_H (IFG2)

Read/write

Byte

00h

04h

SFRIFG1

SFRRPCR

Interrupt Flag

Read/write

Word

001Ch

04h

SFRRPCR_L

Reset Pin Control

Read/write

Byte

1Ch

05h

SFRRPCR_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Section 1.14.2

Section 1.14.3

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

53

SFR Registers

www.ti.com

1.14.1 SFRIE1 Register (offset = 00h) [reset = 0000h]
Interrupt Enable Register
Figure 1-11. SFRIE1 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7
JMBOUTIE
rw-0

6
JMBINIE
rw-0

5
Reserved
r0

4
NMIIE
rw-0

3
VMAIE
rw-0

2
Reserved
r0

1
OFIE (1)
rw-0

0
WDTIE
rw-0

(1)

See the CS chapter for details.

Table 1-9. SFRIE1 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7

JMBOUTIE

RW

0h

JTAG mailbox output interrupt enable flag
0b = Interrupts disabled
1b = Interrupts enabled

6

JMBINIE

RW

0h

JTAG mailbox input interrupt enable flag
0b = Interrupts disabled
1b = Interrupts enabled

5

Reserved

R

0h

Reserved. Always reads as 0.

4

NMIIE

RW

0h

NMI pin interrupt enable flag
0b = Interrupts disabled
1b = Interrupts enabled

3

VMAIE

RW

0h

Vacant memory access interrupt enable flag
0b = Interrupts disabled
1b = Interrupts enabled

2

Reserved

R

0h

Reserved. Always reads as 0.

1

OFIE

RW

0h

Oscillator fault interrupt enable flag
0b = Interrupts disabled
1b = Interrupts enabled

0

WDTIE

RW

0h

Watchdog timer interrupt enable. This bit enables the WDTIFG interrupt for
interval timer mode. It is not necessary to set this bit for watchdog mode.
Because other bits in SFRIE1 may be used for other modules, it is
recommended to set or clear this bit using BIS.B or BIC.B instructions, rather
than MOV.B or CLR.B instruction.
0b = Interrupts disabled
1b = Interrupts enabled

54

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SFR Registers

www.ti.com

1.14.2 SFRIFG1 Register (offset = 02h) [reset = 0082h]
Interrupt Flag Register
Figure 1-12. SFRIFG1 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7
JMBOUTIFG
rw-(1)

6
JMBINIFG
rw-(0)

5
Reserved
r0

4
NMIIFG
rw-0

3
VMAIFG
rw-0

2
Reserved
r0

1
OFIFG (1)
rw-(1)

0
WDTIFG
rw-0

(1)

See the CS chapter for details.

Table 1-10. SFRIFG1 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7

JMBOUTIFG

RW

1h

JTAG mailbox output interrupt flag
0b = No interrupt pending. When in 16-bit mode (JMBMODE = 0), this bit is
cleared automatically when JMBO0 has been written with a new message to the
JTAG module by the CPU. When in 32-bit mode (JMBMODE = 1), this bit is
cleared automatically when both JMBO0 and JMBO1 have been written with new
messages to the JTAG module by the CPU. This bit is also cleared when the
associated vector in SYSUNIV has been read.
1b = Interrupt pending, JMBO registers are ready for new messages. In 16-bit
mode (JMBMODE = 0), JMBO0 has been received by the JTAG module and is
ready for a new message from the CPU. In 32-bit mode (JMBMODE = 1) ,
JMBO0 and JMBO1 have been received by the JTAG module and are ready for
new messages from the CPU.

6

JMBINIFG

RW

0h

JTAG mailbox input interrupt flag
0b = No interrupt pending. When in 16-bit mode (JMBMODE = 0), this bit is
cleared automatically when JMBI0 is read by the CPU. When in 32-bit mode
(JMBMODE = 1), this bit is cleared automatically when both JMBI0 and JMBI1
have been read by the CPU. This bit is also cleared when the associated vector
in SYSUNIV has been read
1b = Interrupt pending, a message is waiting in the JMBIN registers. In 16-bit
mode (JMBMODE = 0) when JMBI0 has been written by the JTAG module. In
32-bit mode (JMBMODE = 1) when JMBI0 and JMBI1 have been written by the
JTAG module.

5

Reserved

R

0h

Reserved. Always reads as 0.

4

NMIIFG

RW

0h

NMI pin interrupt flag
0b = No interrupt pending
1b = Interrupt pending

3

VMAIFG

RW

0h

Vacant memory access interrupt flag
0b = No interrupt pending
1b = Interrupt pending

2

Reserved

R

0h

Reserved. Always reads as 0.

1

OFIFG

RW

1h

Oscillator fault interrupt flag
0b = No interrupt pending
1b = Interrupt pending

0

WDTIFG

RW

0h

Watchdog timer interrupt flag. In watchdog mode, WDTIFG self clears upon a
watchdog timeout event. The SYSRSTIV can be read to determine if the reset
was caused by a watchdog timeout event. In interval mode, WDTIFG is reset
automatically by servicing the interrupt, or can be reset by software. Because
other bits in SFRIFG1 may be used for other modules, it is recommended to set
or clear WDTIFG by using BIS.B or BIC.B instructions, rather than MOV.B or
CLR.B instructions.
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

55

SFR Registers

www.ti.com

1.14.3 SFRRPCR Register (offset = 04h) [reset = 001Ch]
Reset Pin Control Register
Figure 1-13. SFRRPCR Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6
Reserved
r0

5

4
SYSFLTE
rw-1

3
SYSRSTRE
rw-1

2
SYSRSTUP
rw-1

1
SYSNMIIES
rw-0

0
SYSNMI
rw-0

r0

r0

Table 1-11. SFRRPCR Register Description
Bit

Field

Type

Reset

Description

15-5

Reserved

R

0h

Reserved. Always reads as 0.

4

SYSFLTE

RW

1h

Reset pin filter enable
0b = Digital filter on reset pin is disabled
1b = Digital filter on reset pin is enabled

3

SYSRSTRE

RW

1h

Reset pin resistor enable
0b = Pullup/pulldown resistor at the RST/NMI pin is disabled
1b = Pullup/pulldown resistor at the RST/NMI pin is enabled

2

SYSRSTUP

RW

1h

Reset resistor pin pullup/pulldown
0b = Pulldown is selected
1b = Pullup is selected

1

SYSNMIIES

RW

0h

NMI edge select. This bit selects the interrupt edge for the NMI when SYSNMI =
1. Modifying this bit can trigger an NMI. Modify this bit when SYSNMI = 0 to
avoid triggering an accidental NMI.
0b = NMI on rising edge
1b = NMI on falling edge

0

SYSNMI

RW

0h

NMI select. This bit selects the function for the RST/NMI pin.
0b = Reset function
1b = NMI function

56

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SYS Registers

www.ti.com

1.15 SYS Registers
The SYS registers are listed in Table 1-12. A detailed description of each register and its bits is provided
in the following sections. Each register starts at a word boundary. Either word or byte data can be written
to the SYS configuration registers.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 1-12. SYS Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

SYSCTL

System Control

Read/write

Word

0000h

Section 1.15.1

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

000Ch

Read/write

Byte

0Ch

Read/write

Byte

00h

Read/write

Word

0000h

00h

SYSCTL_L

01h

SYSCTL_H

02h

SYSBSLC

02h

SYSBSLC_L

03h

SYSBSLC_H

06h

SYSJMBC

06h

SYSJMBC_L

07h

SYSJMBC_H

08h

SYSJMBI0

Bootloader Configuration

JTAG Mailbox Control

JTAG Mailbox Input 0

08h

SYSJMBI0_L

Read/write

Byte

00h

09h

SYSJMBI0_H

Read/write

Byte

00h

0Ah

Read/write

Word

0000h

0Ah

SYSJMBI1_L

Read/write

Byte

00h

0Bh

SYSJMBI1_H

Read/write

Byte

00h

0Ch

SYSJMBI1

Read/write

Word

0000h

0Ch

SYSJMBO0_L

Read/write

Byte

00h

0Dh

SYSJMBO0_H

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

0Eh

SYSJMBO0

JTAG Mailbox Input 1

SYSJMBO1

0Eh

SYSJMBO1_L

0Fh

SYSJMBO1_H

JTAG Mailbox Output 0

JTAG Mailbox Output 1

Section 1.15.2

Section 1.15.3

Section 1.15.4

Section 1.15.5

Section 1.15.6

Section 1.15.7

Read/write

Byte

00h

1Ah

SYSUNIV

User NMI Vector Generator

Read

Word

0000h

Section 1.15.8

1Ch

SYSSNIV

System NMI Vector Generator

Read

Word

0000h

Section 1.15.9

1Eh

SYSRSTIV

Reset Vector Generator

Read

Word

0002h

Section 1.15.10

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

57

SYS Registers

www.ti.com

1.15.1 SYSCTL Register (offset = 00h) [reset = 0000h]
SYS Control Register
Figure 1-14. SYSCTL Register
15

14

13

12

11

10

9

8

Reserved
r0
7

r0

r0

r0

r0

r0

r0

r0

6

5
SYSJTAGPIN
rw-[0]

4
SYSBSLIND
rw-[0]

3
Reserved
r0

2
SYSPMMPE
rw-[0]

1
Reserved
r0

0
SYSRIVECT
rw-[0]

Reserved
r0

r0

Table 1-13. SYSCTL Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7-6

Reserved

R

0h

Reserved. Always reads as 0.

5

SYSJTAGPIN

RW

0h

Dedicated JTAG pins enable. Setting this bit disables the shared digital
functionality of the JTAG pins and permanently enables the JTAG function. This
bit can only be set once. After the bit is set, it remains set until a BOR occurs.
0b = Shared JTAG pins (JTAG mode selectable by JTAG/SBW sequence)
1b = Dedicated JTAG pins (explicit 4-wire JTAG mode selection)

4

SYSBSLIND

RW

0h

BSL entry indication. This bit indicates a BSL entry sequence detected on the
Spy-Bi-Wire pins.
0b = No BSL entry sequence detected
1b = BSL entry sequence detected

3

Reserved

R

0h

Reserved. Always reads as 0.

2

SYSPMMPE

RW

0h

PMM access protect. This controls the accessibility of the PMM control registers.
After the bit is set to 1, it only can be cleared by a BOR.
0b = Access from anywhere in memory
1b = Access only from the protected BSL segments

1

Reserved

R

0h

Reserved. Always reads as 0.

0

SYSRIVECT

RW

0h

RAM-based interrupt vectors
0b = Interrupt vectors generated with end address TOP of lower 64KB of FRAM
FFFFh
1b = Interrupt vectors generated with end address TOP of RAM

58

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SYS Registers

www.ti.com

1.15.2 SYSBSLC Register (offset = 02h) [reset = 0000h]
Bootloader Configuration Register
Figure 1-15. SYSBSLC Register
15
SYSBSLPE
rw-[0]

14
SYSBSLOFF
rw-[0]

13
r0

r0

7

6

5
Reserved
r0

4

r0

12

11

10

9

8

r0

r0

r0

r0

3

2
SYSBSLR
rw-[0]

1

Reserved

r0

r0

r0

0
Reserved

r0

r0

Table 1-14. SYSBSLC Register Description
Bit

Field

Type

Reset

Description

15

SYSBSLPE

RW

0h

Bootloader memory protection enable. By default, this bit is cleared by hardware
with a BOR event (as indicated above); however, the boot code that checks for
an available BSL may set this bit in software to protect the BSL. Because
devices normally come with a TI BSL preprogrammed and protected, the boot
code sets this bit.
0b = Area not protected. Read, program, and erase of BSL memory is possible.
1b = Area protected

14

SYSBSLOFF

RW

0h

Bootloader memory disable
0b = BSL memory is addressed when this area is read.
1b = BSL memory behaves like vacant memory. Reads cause 3FFFh to be read.
Fetches cause JMP $ to be executed.

13-3

Reserved

R

0h

Reserved. Always reads as 0.

2

SYSBSLR

RW

0h

RAM assigned to BSL
0b = No RAM assigned to BSL area
1b = Lowest 16 bytes of RAM assigned to BSL

1-0

Reserved

R

0h

Reserved. Always reads as 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

59

SYS Registers

www.ti.com

1.15.3 SYSJMBC Register (offset = 06h) [reset = 000Ch]
JTAG Mailbox Control Register
Figure 1-16. SYSJMBC Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7
JMBCLR1OFF
rw-(0)

6
JMBCLR0OFF
rw-(0)

5
Reserved
r0

4
JMBMODE
rw-0

3
JMBOUT1FG
r-(1)

2
JMBOUT0FG
r-(1)

1
JMBIN1FG
rw-(0)

0
JMBIN0FG
rw-(0)

Table 1-15. SYSJMBC Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7

JMBCLR1OFF

RW

0h

Incoming JTAG Mailbox 1 flag auto-clear disable
0b = JMBIN1FG cleared on read of SYSJMBI1 register
1b = JMBIN1FG cleared by software

6

JMBCLR0OFF

RW

0h

Incoming JTAG Mailbox 0 flag auto-clear disable
0b = JMBIN0FG cleared on read of SYSJMBI0 register
1b = JMBIN0FG cleared by software

5

Reserved

R

0h

Reserved. Always reads as 0.

4

JMBMODE

RW

0h

This bit defines the operation mode of JMB for SYSJMBI0, SYSJMBI1,
SYSJMBO0, and SYSJMBO1. Before changing this bit, pad and flush out any
partial content to avoid data drops.
0b = 16-bit transfers using SYSJMBO0 and SYSJMBI0 only
1b = 32-bit transfers using SYSJMBI0, SYSJMBI1, SYSJMBO0, and SYSJMBO1

3

JMBOUT1FG

RW

1h

Outgoing JTAG Mailbox 1 flag.
This bit is cleared automatically when a message is written to the upper byte of
SYSJMBO1 or as word access (by the CPU or other source) and is set after the
message is read by JTAG.
0b = SYSJMBO1 is not ready to receive new data.
1b = SYSJMBO1 is ready to receive new data.

2

JMBOUT0FG

RW

1h

Outgoing JTAG Mailbox 0 flag.
This bit is cleared automatically when a message is written to the upper byte of
SYSJMBO0 or as word access (by the CPU or other source) and is set after the
message is read by JTAG.
0b = SYSJMBO0 is not ready to receive new data.
1b = SYSJMBO0 is ready to receive new data.

1

JMBIN1FG

RW

0h

Incoming JTAG Mailbox 1 flag.
This bit is set when a new message (provided by JTAG) is available in
SYSJMBI1.
This flag is cleared automatically on read of SYSJMBI1 when JMBCLR1OFF = 0
(auto clear mode). If JMBCLR1OFF = 1, JMBIN1FG must be cleared by
software.
0b = SYSJMBI1 has no new data
1b = SYSJMBI1 has new data available

0

JMBIN0FG

RW

0h

Incoming JTAG Mailbox 0 flag.
This bit is set when a new message (provided by JTAG) is available in
SYSJMBI0.
This flag is cleared automatically on read of SYSJMBI0 when JMBCLR0OFF = 0
(auto clear mode). If JMBCLR0OFF = 1, JMBIN0FG must be cleared by
software.
0b = SYSJMBI1 has no new data
1b = SYSJMBI1 has new data available

60

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SYS Registers

www.ti.com

1.15.4 SYSJMBI0 Register (offset = 08h) [reset = 0000h]
JTAG Mailbox Input 0 Register
Figure 1-17. SYSJMBI0 Register
15

14

13

12

11

10

9

8

r-0

r-0

r-0

r-0

3

2

1

0

r-0

r-0

r-0

r-0

MSGHI
r-0

r-0

r-0

r-0

7

6

5

4
MSGLO

r-0

r-0

r-0

r-0

Table 1-16. SYSJMBI0 Register Description
Bit

Field

Type

Reset

Description

15-8

MSGHI

R

0h

JTAG mailbox incoming message high byte

7-0

MSGLO

R

0h

JTAG mailbox incoming message low byte

1.15.5 SYSJMBI1 Register (offset = 0Ah) [reset = 0000h]
JTAG Mailbox Input 1 Register
Figure 1-18. SYSJMBI1 Register
15

14

13

12

11

10

9

8

MSGHI
r-0

r-0

r-0

r-0

r-0

r-0

r-0

r-0

7

6

5

4

3

2

1

0

r-0

r-0

r-0

r-0

MSGLO
r-0

r-0

r-0

r-0

Table 1-17. SYSJMBI1 Register Description
Bit

Field

Type

Reset

Description

15-8

MSGHI

R

0h

JTAG mailbox incoming message high byte

7-0

MSGLO

R

0h

JTAG mailbox incoming message low byte

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

61

SYS Registers

www.ti.com

1.15.6 SYSJMBO0 Register (offset = 0Ch) [reset = 0000h]
JTAG Mailbox Output 0 Register
Figure 1-19. SYSJMBO0 Register
15

14

13

12

11

10

9

8

rw-0

rw-0

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

MSGHI
rw-0

rw-0

rw-0

rw-0

7

6

5

4
MSGLO

rw-0

rw-0

rw-0

rw-0

Table 1-18. SYSJMBO0 Register Description
Bit

Field

Type

Reset

Description

15-8

MSGHI

RW

0h

JTAG mailbox outgoing message high byte

7-0

MSGLO

RW

0h

JTAG mailbox outgoing message low byte

1.15.7 SYSJMBO1 Register (offset = 0Eh) [reset = 0000h]
JTAG Mailbox Output 1 Register
Figure 1-20. SYSJMBO1 Register
15

14

13

12

11

10

9

8

MSGHI
rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

MSGLO
rw-0

rw-0

rw-0

rw-0

Table 1-19. SYSJMBO1 Register Description
Bit

Field

Type

Reset

Description

15-8

MSGHI

RW

0h

JTAG mailbox outgoing message high byte

7-0

MSGLO

RW

0h

JTAG mailbox outgoing message low byte

62

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

SYS Registers

www.ti.com

1.15.8 SYSUNIV Register (offset = 1Ah) [reset = 0000h]
User NMI Vector Register
NOTE: Additional events for more complex devices will be appended to this table; sources that are
removed reduce the length of this table. The vectors are expected to be accessed symbolic
only with the corresponding include file of the device in use.

Figure 1-21. SYSUNIV Register
15

14

13

12

11

10

9

8

SYSUNIV
r0

r0

r0

r0

r0

r0

r0

r0

7

6

5

4

3

2

1

0

r-0

r-0

r-0

r0

SYSUNIV
r0

r0

r0

r-0

Table 1-20. SYSUNIV Register Description
Bit

Field

Type

Reset

Description

15-0

SYSUNIV

R

0h

User NMI vector. Generates a value that can be used as address offset for fast
interrupt service routine handling. Writing to this register clears all pending user
NMI flags.
See the device-specific data sheet for a list of values.

1.15.9 SYSSNIV Register (offset = 1Ch) [reset = 0000h]
System NMI Vector Register
NOTE: Additional events for more complex devices will be appended to this table; sources that are
removed reduce the length of this table. The vectors are expected to be accessed symbolic
only with the corresponding include file of the device in use.

Figure 1-22. SYSSNIV Register
15

14

13

12

11

10

9

8

SYSSNIV
r0

r0

r0

r0

r0

r0

r0

r0

7

6

5

4

3

2

1

0

r-0

r-0

r-0

r0

SYSSNIV
r0

r0

r0

r-0

Table 1-21. SYSSNIV Register Description
Bit

Field

Type

Reset

Description

15-0

SYSSNIV

R

0h

System NMI vector. Generates a value that can be used as address offset for
fast interrupt service routine handling. Writing to this register clears all pending
system NMI flags.
See the device-specific data sheet for a list of values.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

63

SYS Registers

www.ti.com

1.15.10 SYSRSTIV Register (offset = 1Eh) [reset = 0002h]
Reset Interrupt Vector Register
NOTE: Additional events for more complex devices will be appended to this table; sources that are
removed reduce the length of this table. The vectors are expected to be accessed symbolic
only with the corresponding include file of the device in use.

Figure 1-23. SYSRSTIV Register
15

14

13

12

11

10

9

8

SYSRSTIV
r0

r0

r0

r0

r0

r0

r0

r0

7

6

5

4

3

2

1

0

r-0

r-0

r-1

r0

SYSRSTIV
r0

r0

r-0

r-0

Table 1-22. SYSRSTIV Register Description
Bit

Field

Type

Reset

Description

15-0

SYSRSTIV

R

0h

Reset interrupt vector. Generates a value that can be used as address offset for
fast interrupt service routine handling to identify the last cause of a reset (BOR,
POR, or PUC). Writing to this register clears all pending reset source flags.
See the device-specific data sheet for a list of values.

64

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16 System Configuration Registers
The system configuration registers are device specific and are only applicable to the specific device
family. Each register starts at a word boundary. Either word or byte data can be written to the SYS
configuration registers.
For the MSP430FR203x configuration registers, see Section 1.16.1.
For the MSP430FR413x configuration registers, see Section 1.16.2.
For the MSP430FR2433 configuration registers, see Section 1.16.3.

1.16.1 MSP430FR203x System Configuration Registers
All registers are listed in Table 1-23. A detailed description of each register and its bits is provided in the
following sections.
Table 1-23. MSP430FR203x SYS Configuration Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

20h

SYSCFG0

System Configuration 0

Read/write

Word

0003h

Section 1.16.1.1

Read/write

Byte

03h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

20h

SYSCFG0_L

21h

SYSCFG0_H

22h

SYSCFG1

22h

SYSCFG1_L

23h

SYSCFG1_H

24h

SYSCFG2

System Configuration 1

System Configuration 2

24h

SYSCFG2_L

Read/write

Byte

00h

25h

SYSCFG2_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Section 1.16.1.2

Section 1.16.1.3

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

65

System Configuration Registers

www.ti.com

1.16.1.1 MSP430FR203x SYSCFG0 Register (offset = 00h) [reset = 0003h]
System Configuration Register 0
Figure 1-24. SYSCFG0 Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

r0

4

3

2

r0

r0

r0

1
DFWP
rw-1

0
PFWP
rw-1

Reserved
r0

r0

r0

7

6

5
Reserved

r0

r0

r0

Table 1-24. SYSCFG0 Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved. Always read as 0.

1

DFWP

RW

1h

Data FRAM write protection
0b = Data FRAM write enable
1b = Data FRAM write protected (not writable)

0

PFWP

RW

1h

Program FRAM write protection
0b = Program FRAM write enable
1b = Program FRAM write protected (not writable)

66

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16.1.2 MSP430FR203x SYSCFG1 Register (offset = 02h) [reset = 0000h]
System Configuration Register 1
Figure 1-25. SYSCFG1 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6
Reserved
r0

5

4
IRDATA
rw-0

3
IRDSSEL
rw-0

2
IRMSEL
rw-0

1
IRPSEL
rw-0

0
IREN
rw-0

r0

r0

Table 1-25. SYSCFG1 Register Description
Bit

Field

Type

Reset

Description

15-5

Reserved

R

0h

Reserved. Always read as 0.

4

IRDATA

RW

0h

Infrared data
0b = Infrared data logic 0
1b = Infrared data logic 1

3

IRDSSEL

RW

0h

Infrared data source select
0b = From hardware peripherals upon device configuration
1b = From IRDATA bit

2

IRMSEL

RW

0h

Infrared mode select
0b = ASK mode
1b = FSK mode

1

IRPSEL

RW

0h

Infrared polarity select
0b = Normal polarity
1b = Inverted polarity

0

IREN

RW

0h

Infrared enable
0b = Infrared function disabled
1b = Infrared function enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

67

System Configuration Registers

www.ti.com

1.16.1.3 MSP430FR203x SYSCFG2 Register (offset = 04h) [reset = 0000h]
System Configuration Register 2
Figure 1-26. SYSCFG2 Register
15

14

13

12

11

10

r0

r0

r0

r0

r0

r0

9
ADCPCTL9
rw-0

7
ADCPCTL7
rw-0

6
ADCPCTL6
rw-0

5
ADCPCTL5
rw-0

4
ADCPCTL4
rw-0

3
ADCPCTL3
rw-0

2
ADCPCTL2
rw-0

1
ADCPCTL1
rw-0

Reserved

8
ADCPCTL8
rw-0
0
ADCPCTL0
rw-0

Table 1-26. SYSCFG2 Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved. Always read as 0.

9

ADCPCTL9

RW

0h

ADC input A9 pin select
0b = ADC input A9 disabled
1b = ADC input A9 enabled

8

ADCPCTL8

RW

0h

ADC input A8 pin select
0b = ADC input A8 disabled
1b = ADC input A8 enabled

7

ADCPCTL7

RW

0h

ADC input A7 pin select
0b = ADC input A7 disabled
1b = ADC input A7 enabled

6

ADCPCTL6

RW

0h

ADC input A6 pin select
0b = ADC input A6 disabled
1b = ADC input A6 enabled

5

ADCPCTL5

RW

0h

ADC input A5 pin select
0b = ADC input A5 disabled
1b = ADC input A5 enabled

4

ADCPCTL4

RW

0h

ADC input A4 pin select
0b = ADC input A4 disabled
1b = ADC input A4 enabled

3

ADCPCTL3

RW

0h

ADC input A3 pin select
0b = ADC input A3 disabled
1b = ADC input A3 enabled

2

ADCPCTL2

RW

0h

ADC input A2 pin select
0b = ADC input A2 disabled
1b = ADC input A2 enabled

1

ADCPCTL1

RW

0h

ADC input A1 pin select
0b = ADC input A1 disabled
1b = ADC input A1 enabled

0

ADCPCTL0

RW

0h

ADC input A0 pin select
0b = ADC input A0 disabled
1b = ADC input A0 enabled

68

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16.2 MSP430FR413x System Configuration Registers
All registers are listed in Table 1-27. A detailed description of each register and its bits is provided in the
following sections.
Table 1-27. FR413x SYS Configuration Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

20h

SYSCFG0

System Configuration 0

Read/write

Word

0003h

Section 1.16.2.1

20h

SYSCFG0_L

Read/write

Byte

03h

21h

SYSCFG0_H

Read/write

Byte

00h

22h

Read/write

Word

0000h

22h

SYSCFG1_L

Read/write

Byte

00h

23h

SYSCFG1_H

Read/write

Byte

00h

24h

SYSCFG1

SYSCFG2

System Configuration 1

Read/write

Word

0000h

24h

SYSCFG2_L

System Configuration 2

Read/write

Byte

00h

25h

SYSCFG2_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Section 1.16.2.2

Section 1.16.2.3

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

69

System Configuration Registers

www.ti.com

1.16.2.1 MSP430FR413x SYSCFG0 Register (offset = 00h) [reset = 0003h]
System Configuration Register 0
Figure 1-27. SYSCFG0 Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

r0

4

3

2

r0

r0

r0

1
DFWP
rw-1

0
PFWP
rw-1

Reserved
r0

r0

r0

7

6

5
Reserved

r0

r0

r0

Table 1-28. SYSCFG0 Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved. Always read as 0.

1

DFWP

RW

1h

Data FRAM write protection
0b = Data FRAM write enable
1b = Data FRAM write protected (not writable)

0

PFWP

RW

1h

Program FRAM write protection
0b = Program FRAM write enable
1b = Program FRAM write protected (not writable)

70

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16.2.2 MSP430FR413x SYSCFG1 Register (offset = 02h) [reset = 0000h]
System Configuration Register 1
Figure 1-28. SYSCFG1 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6
Reserved
r0

5

4
IRDATA
rw-0

3
IRDSSEL
rw-0

2
IRMSEL
rw-0

1
IRPSEL
rw-0

0
IREN
rw-0

r0

r0

Table 1-29. SYSCFG1 Register Description
Bit

Field

Type

Reset

Description

15-5

Reserved

R

0h

Reserved. Always read as 0.

4

IRDATA

RW

0h

Infrared data
0b = Infrared data logic 0
1b = Infrared data logic 1

3

IRDSSEL

RW

0h

Infrared data source select
0b = From hardware peripherals upon device configuration
1b = From IRDATA bit

2

IRMSEL

RW

0h

Infrared mode select
0b = ASK mode
1b = FSK mode

1

IRPSEL

RW

0h

Infrared polarity select
0b = Normal polarity
1b = Inverted polarity

0

IREN

RW

0h

Infrared enable
0b = Infrared function disabled
1b = Infrared function enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

71

System Configuration Registers

www.ti.com

1.16.2.3 MSP430FR413x SYSCFG2 Register (offset = 04h) [reset = 0000h]
System Configuration Register 2
Figure 1-29. SYSCFG2 Register
15

13

r0

14
Reserved
r0

r0

12
LCDPCTL
rw-0

11
Reserved
r0

10
Reserved
r0

9
ADCPCTL9
rw-0

8
ADCPCTL8
rw-0

7
ADCPCTL7
rw-0

6
ADCPCTL6
rw-0

5
ADCPCTL5
rw-0

4
ADCPCTL4
rw-0

3
ADCPCTL3
rw-0

2
ADCPCTL2
rw-0

1
ADCPCTL1
rw-0

0
ADCPCTL0
rw-0

Table 1-30. SYSCFG2 Register Description
Bit

Field

Type

Reset

Description

15-13

Reserved

R

0h

Reserved. Always read as 0.

12

LCDPCTL

RW

0h

LCD power pin (LCDCAP0, LCDCAP1, R23, R33) control.
0b = LCD power pin disabled
1b = LCD power pin enabled

11-10

Reserved

R

0h

Reserved. Always read as 0.

9

ADCPCTL9

RW

0h

ADC input A9 pin select
0b = ADC input A9 disabled
1b = ADC input A9 enabled

8

ADCPCTL8

RW

0h

ADC input A8 pin select
0b = ADC input A8 disabled
1b = ADC input A8 enabled

7

ADCPCTL7

RW

0h

ADC input A7 pin select
0b = ADC input A7 disabled
1b = ADC input A7 enabled

6

ADCPCTL6

RW

0h

ADC input A6 pin select
0b = ADC input A6 disabled
1b = ADC input A6 enabled

5

ADCPCTL5

RW

0h

ADC input A5 pin select
0b = ADC input A5 disabled
1b = ADC input A5 enabled

4

ADCPCTL4

RW

0h

ADC input A4 pin select
0b = ADC input A4 disabled
1b = ADC input A4 enabled

3

ADCPCTL3

RW

0h

ADC input A3 pin select
0b = ADC input A3 disabled
1b = ADC input A3 enabled

2

ADCPCTL2

RW

0h

ADC input A2 pin select
0b = ADC input A2 disabled
1b = ADC input A2 enabled

1

ADCPCTL1

RW

0h

ADC input A1 pin select
0b = ADC input A1 disabled
1b = ADC input A1 enabled

0

ADCPCTL0

RW

0h

ADC input A0 pin select
0b = ADC input A0 disabled
1b = ADC input A0 enabled

72

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16.3 MSP430FR2433 System Configuration Registers
All registers are listed in Table 1-31. A detailed description of each register and its bits is provided in the
following sections.
Table 1-31. FR2433 SYS Configuration Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

20h

SYSCFG0

System Configuration 0

Read/write

Word

9603h

Section 1.16.3.1

20h

SYSCFG0_L

Read/write

Byte

96h

21h

SYSCFG0_H

Read/write

Byte

03h

22h

Read/write

Word

0000h

22h

SYSCFG1_L

Read/write

Byte

00h

23h

SYSCFG1_H

Read/write

Byte

00h

24h

SYSCFG1

SYSCFG2

System Configuration 1

Read/write

Word

0000h

24h

SYSCFG2_L

System Configuration 2

Read/write

Byte

00h

25h

SYSCFG2_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Section 1.16.3.2

Section 1.16.3.3

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

73

System Configuration Registers

www.ti.com

1.16.3.1 MSP430FR2433 SYSCFG0 Register (offset = 00h) [reset = 9603h]
System Configuration Register 0
Figure 1-30. SYSCFG0 Register
15

14

13

12

11

10

9

8

rw-1

rw-0

rw-1

rw-1

rw-0

4

3

2

r0

r0

r0

1
DFWP
rw-1

0
PFWP
rw-1

FRWPPW
rw-1

rw-0

rw-0

7

6

5
Reserved

r0

r0

r0

Table 1-32. SYSCFG0 Register Description
Bit

Field

Type

Reset

Description

15-8

FRWPPW

RW

96h

FRAM protection password (1)
FRAM protection password. Write with 0A5h to unlock the FRAM protection
registers.
Always reads as 096h

7-2

Reserved

R

0h

Reserved. Always read as 0.

1

DFWP

RW

1h

Data FRAM write protection
0b = Data FRAM write enable
1b = Data FRAM write protected (not writable)

0

PFWP

RW

1h

Program FRAM write protection
0b = Program FRAM write enable
1b = Program FRAM write protected (not writable)

(1)

74

The password needs to be operated with FRAM protection bits in a word at the same time.

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

System Configuration Registers

www.ti.com

1.16.3.2 MSP430FR2433 SYSCFG1 Register (offset = 02h) [reset = 0000h]
System Configuration Register 1
Figure 1-31. SYSCFG1 Register
15

14

13

12

11

10

9

8

Reserved
r0
7

r0

r0

r0

r0

r0

r0

r0

6

5
Reserved
r0

4
IRDATA
rw-0

3
IRDSSEL
rw-0

2
IRMSEL
rw-0

1
IRPSEL
rw-0

0
IREN
rw-0

Reserved
rw-0

rw-0

Table 1-33. SYSCFG1 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always read as 0.

7-6

Reserved

RW

0h

Reserved.

5

Reserved

R

0h

Reserved. Always read as 0.

4

IRDATA

RW

0h

Infrared data
0b = Infrared data logic 0
1b = Infrared data logic 1

3

IRDSSEL

RW

0h

Infrared data source select
0b = From hardware peripherals upon device configuration
1b = From IRDATA bit

2

IRMSEL

RW

0h

Infrared mode select
0b = ASK mode
1b = FSK mode

1

IRPSEL

RW

0h

Infrared polarity select
0b = Normal polarity
1b = Inverted polarity

0

IREN

RW

0h

Infrared enable
0b = Infrared function disabled
1b = Infrared function enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

Copyright © 2014–2015, Texas Instruments Incorporated

75

System Configuration Registers

www.ti.com

1.16.3.3 MSP430FR2433 SYSCFG2 Register (offset = 04h) [reset = 0000h]
System Configuration Register 2
Figure 1-32. SYSCFG2 Register
15

14

13

12

11

10

9

8

Reserved
rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

7
ADCPCTL7
rw-0

6
ADCPCTL6
rw-0

5
ADCPCTL5
rw-0

4
ADCPCTL4
rw-0

3
ADCPCTL3
rw-0

2
ADCPCTL2
rw-0

1
ADCPCTL1
rw-0

0
ADCPCTL0
rw-0

Table 1-34. SYSCFG2 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

RW

0h

Reserved.

7

ADCPCTL7

RW

0h

ADC input A7 pin select
0b = ADC input A7 disabled
1b = ADC input A7 enabled

6

ADCPCTL6

RW

0h

ADC input A6 pin select
0b = ADC input A6 disabled
1b = ADC input A6 enabled

5

ADCPCTL5

RW

0h

ADC input A5 pin select
0b = ADC input A5 disabled
1b = ADC input A5 enabled

4

ADCPCTL4

RW

0h

ADC input A4 pin select
0b = ADC input A4 disabled
1b = ADC input A4 enabled

3

ADCPCTL3

RW

0h

ADC input A3 pin select
0b = ADC input A3 disabled
1b = ADC input A3 enabled

2

ADCPCTL2

RW

0h

ADC input A2 pin select
0b = ADC input A2 disabled
1b = ADC input A2 enabled

1

ADCPCTL1

RW

0h

ADC input A1 pin select
0b = ADC input A1 disabled
1b = ADC input A1 enabled

0

ADCPCTL0

RW

0h

ADC input A0 pin select
0b = ADC input A0 disabled
1b = ADC input A0 enabled

76

System Resets, Interrupts, and Operating Modes, System Control Module
(SYS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 2
SLAU445D – October 2014 – Revised December 2015

Power Management Module (PMM) and Supply Voltage
Supervisor (SVS)
This chapter describes the operation
Supply Voltage Supervisor (SVS).
Topic

2.1
2.2
2.3

of

the

Power

Management

Module

(PMM)

...........................................................................................................................

and

Page

Power Management Module (PMM) Introduction .................................................... 78
PMM Operation .................................................................................................. 79
PMM Registers ................................................................................................... 83

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

77

Power Management Module (PMM) Introduction

2.1

www.ti.com

Power Management Module (PMM) Introduction
PMM features include:
• Wide supply voltage (DVCC) range: 1.8 V to 3.6 V
• Generation of voltage for the device core (VCORE)
• Supply voltage supervisor (SVS) for DVCC
• Brownout reset (BOR)
• Software accessible power-fail indicators
• I/O protection during power-fail condition
• Reference voltage output on external pin
The PMM manages all functions related to the power supply and its supervision for the device. Its primary
functions are, first, to generate a supply voltage for the core logic and, second, to provide several
mechanisms for the supervision of the voltage applied to the device (DVCC).
The PMM uses an integrated low-dropout voltage regulator (LDO) to produce a secondary core voltage
(VCORE) from the primary one applied to the device (DVCC). In general, VCORE supplies the CPU, memories,
and the digital modules, while DVCC supplies the I/Os and analog modules. The VCORE output is maintained
using a dedicated voltage reference. The input or primary side of the regulator is referred to in this chapter
as its high side. The output or secondary side is referred to in this chapter as its low side.
The block diagram of the PMM is shown in Figure 2-1.
VLPM3.5

LPM3.5 LDO
LPM3.5 Switch
DVCC

Core LDO

SVSH

VCORE

PMMLPM5IFG
SVSHIFG
PMMPORIFG
PMMRSTIFG
PMMBORIFG

BOR

LPM3.5 Switch
Control

1.5V
Reference

PMMPW

SVSHE

PMMSWPOR

PMMSWBOR

PMMREGOFF

To I/O Control

LPM5SM

LPM5SW

LOCKLM5

To ADC channel (device specific),
eCOMP built-in 6-bit DAC

1.5V
1.2V

VREF+

EXTREFEN

REFGENACT

REF
Generation

REFGENRDY

Temperature
Sensor

Bandgap

REFBGRDY

REFBGACT

BGMODE

INTREFEN

To ADC channel (device specific)

TSENSOREN

Figure 2-1. PMM Block Diagram

78

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

PMM Operation

www.ti.com

2.2

PMM Operation

2.2.1 VCORE and the Regulator
DVCC can be powered from a wide input voltage range, but the core logic of the device must be kept at a
voltage lower than what this range allows. For this reason, a regulator (LDO) has been integrated into the
PMM. The regulator derives the necessary core voltage (VCORE) from DVCC.
The regulator supports different load settings to optimize power. The hardware controls the load settings
automatically, according to the following criteria:
• Selected and active power modes
• Selected and active clocks
• Clock frequencies according to Clock System (CS) settings
• JTAG or SBW is active
In addition to the main LDO, an ultra-low-power regulator (RTC LDO) provides a regulated voltage to the
real-time clock module (including the 32-kHz crystal oscillator) and other ultra-low-power modules that
remain active during LPM3.5 when the main LDO is switched off.

2.2.2 Supply Voltage Supervisor
The high-side supervisor (SVSH) oversees DVCC. It is active in all power modes by default. In LPM3,
LPM4, LPM3.5, and LPM4.5, it can be disabled by setting SVSHE = 0.
2.2.2.1

SVS Thresholds

As Figure 2-2 shows, there is hysteresis built into the supervision thresholds, so that which threshold is in
force depends on whether the voltage rail is rising or falling.
The behavior of the SVS according to these thresholds is best portrayed graphically. Figure 2-2 shows
how the supervisors respond to various supply failure conditions.
Voltage
DVCC
SVSH_IT+
SVSH_IT-

BOR
Time

Figure 2-2. Voltage Failure and Resulting PMM Actions

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

79

PMM Operation

www.ti.com

2.2.3 Supply Voltage Supervisor During Power-Up
When the device is powering up, the SVSH function is enabled by default. Initially, DVCC is low, and
therefore the PMM holds the device in BOR reset. When the SVSH level is met, the reset is released.
Figure 2-3 shows this process.
Voltage
DVCC
SVSH_IT+

VCORE

Reset from SVSH

BOR

Time

Figure 2-3. PMM Action at Device Power-Up

2.2.4 LPM3.5 and LPM4.5 (LPMx.5)
LPM3.5 and LPM4.5 are low-power modes in which the core voltage regulator of the PMM is completely
disabled to provide additional power savings. Because there is no power supplied to VCORE during LPMx.5,
the CPU and all digital modules including RAM are unpowered. This essentially disables the entire device
and, as a result, the contents of the registers and RAM are lost. Any essential values should be stored to
FRAM prior to entering LPMx.5. See the SYS module for complete description and uses of LPMx.5.
LPM3.5 and LPM4.5 can be configured with SVS enabled (SVSHE = 1) or with SVS disabled (SVSHE =
0). Disabling the SVS results in lower power consumption, whereas enabling it provides the ability to
detect supply drops and getting a "wake-up" due to the supply drop below the SVS threshold. Note, the
"wake-up" due to a supply failure would not be flagged as a LPMx.5 wake-up but as a SVS reset event. In
LPM4.5, enabling the SVS also results in approximately 10 times faster start-up time than with disabled
SVS.

2.2.5 Low-Power Reset
In battery-operated applications, it might be desirable to limit the current drawn by the device to a
minimum after the supply drops below the SVS power-down level. By default, as soon as the supply
voltage drops below the SVS power-down level, the complete device is reset and prepared to return into
active mode quickly when the supply voltage becomes available again. This state results in a current
consumption of approximately 50 µA to 100 µA (typical).
Pulling the reset pin during the LPM4.5 low-power reset state causes the device to enter its default reset
state (with higher current consumption), and the device starts up when the supply rises above the SVS
power-up level.
If the device is already in LPMx.5 (with SVS enabled) before the supply voltage drops below the SVS
threshold, then the device automatically enters the low-power reset state (that is, the device enters
LPM4.5 state with SVS, RTC domain, and all wake-up events disabled). (In LPMx.5 the I/Os are already in
a defined state. Therefore, no NMI handling is required to define the I/O states.)

80

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

PMM Operation

www.ti.com

2.2.6 Brownout Reset (BOR)
The primary function of the BOR circuit occurs when the device is powering up. It is functional very early
in the power-up ramp, generating a BOR that initializes the system. It also functions when no SVS is
enabled and a brownout condition occurs. It sustains this reset until the input power is sufficient for the
logic and for proper reset of the system.
In an application, it may be desired to cause a BOR in software. Setting PMMSWBOR causes a softwaredriven BOR. PMMBORIFG is set accordingly. Note that a BOR also initiates a POR and PUC.
PMMBORIFG can be cleared by software or by reading SYSRSTIV.
Similarly, it is possible to cause a POR in software by setting PMMSWPOR. PMMPORIFG is set
accordingly. A POR also initiates a PUC. PMMPORIFG can be cleared by software or by reading
SYSRSTIV. Both PMMSWBOR and PMMSWPOR are self clearing. See the SYS module for complete
descriptions of BOR, POR, and PUC resets.

2.2.7 LPM3.5 Switch
The LPM3.5 switch supplies the LPM3.5 power domain with main LDO output, which allows the
peripherals to consume more current and operate at high frequency. When the device enters LPM3.5, all
peripherals in LPM3.5 domains are isolated from the core domain and fully supplied by the LPM3.5 LDO.
The LPM3.5 switch can be either manually or automatically controlled. The LPM3.5 switch mode can be
set by LPM5SM in the PM5CTL0 register.
In the automatic control mode (the LPM5SM bit is clear), the LPM3.5 switch is disconnected when the
device enters LPM3.5 mode. Upon exiting from LPM3.5 to AM, the device automatically turns on the
LPM3.5 switch and those peripherals that were supplied by LPM3.5 are directly powered by the main
LDO. Before the power switching completes, do not read or write those peripherals' registers with high
frequency. The LPM5SW bit in the PM5CTL0 register reports the status of the LPM3.5 switch and allows
software to check the connection of the LPM3.5 switch before high-frequency operation. In this mode, any
write to the LPM5SW bit does not work.
In the manual control mode (the LPM5SM bit is set), the LPM3.5 switch is specified by the LPM5SW bit in
the PM5CTL0 register. When LPM5SW is set, the LPM3.5 switch is connected. When LPM5SW is clear,
the LPM3.5 switch is disconnected. It is recommended to turn off the switch to avoid unnecessary leakage
before the device enters LPM3.5. When the device recovers back from LPM3.5 mode, the switch should
be turned on to offer sufficient current for high-frequency operation.
The LPM5SW defaults to logic 1, which means that the LPM3.5 switch is always connected after a BOR,
POR, or PUC reset.

2.2.8 Reference Voltage Generation and Output
The PMM module has a high-accuracy bandgap for various voltage references on the chip. The bandgap
is automatically turned on and off depending on the operating mode. The REFBGRDY bit in the
PMMCTL2 register reports the readiness of the bandgap. When REFBGRDY is set, the bandgap
reference is ready for use.
Two voltage references are generated for internal (1.5 V) and external (1.2 V) use, respectively. The
voltage generator is automatically controlled by the device in response to the voltage reference request
(either internal or external). The REFGENACT and REFGENRDY bits represent the status of the
generator status if the output works properly at the specified voltage.
The internal reference voltage (1.5 V) is internally connected to an ADC channel (refer to the data sheet
for device-specific configuration). The INTREFEN bit in PMMCTL2 controls whether or not the 1.5-V
voltage is injected into the specified ADC channel.
The external reference voltage (1.2 V) is connected a given external ADC channel (refer to the data sheet
for device-specific configuration). If this ADC channel is multiplexed with other functionality, the 1.2-V
output function only works when the ADC is selected as the function on this pin. The EXTREFEN bit in
PMMCTL2 controls if the 1.2-V voltage is available to the specified external ADC channel. The external
reference voltage supports up to 1-mA drive capability.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

81

PMM Operation

www.ti.com

2.2.9 Temperature Sensor
The PMM contains a built-in temperature sensor that software can use to monitor the die temperature for
fault protection in high temperature environments. The temperature sensor is internally connected to an
ADC channel. The connection is device specific and can be found in the ADC section in the data sheet.
The TSENSOREN bit in the PMMCTL2 register must be set to turn on the sensor before it is used. The
temperature of 25°C is trimmed in manufacture. Therefore, any temperature to be measured can be
calculated by Equation 10.
T = 0.00355 × (VT – V25ºC) + 25ºC

(10)

2.2.10 RST/NMI
The external RST/NMI terminal is pulled low on a BOR reset condition. RST/NMI can be used as reset
source for the rest of the application.

2.2.11 PMM Interrupts
Interrupt flags generated by the PMM are routed to the system NMI interrupt vector generator register,
SYSSNIV. When the PMM causes a reset, a value is generated in the system reset interrupt vector
generator register, SYSRSTIV, corresponding to the source of the reset. These registers are defined
within the SYS module. More information on the relationship between the PMM and SYS modules is
available in the SYS chapter.

2.2.12 Port I/O Control
The PMM ensures that I/O pins cannot behave in uncontrolled fashion during an undervoltage event.
During these times, outputs are disabled, including both the normal drive and the weak pullup and
pulldown functions. If the CPU is functioning normally before an undervoltage event occurs, any pin
configured as an input has its PxIN register value latched when the event occurs, until voltage is restored.
During the undervoltage event, external voltage changes on the pin are not registered internally. This
helps prevent erratic behavior.

82

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

PMM Registers

www.ti.com

2.3

PMM Registers
Table 2-1 shows the PMM registers and their address offsets. The base address of the PMM module can
be found in the device-specific data sheet.
The password defined in the PMMCTL0 register controls access to all PMM registers except PM5CTL0.
PM5CTL0 can be accessed without the password. After the correct password is written, write access is
enabled (this includes byte access to the PMMCTL0 lower byte). Write access is disabled by writing a
wrong password in byte mode to the PMMCTL0 upper byte. Word access to PMMCTL0 with a wrong
password causes a PUC. Write access to a register other than PMMCTL0 while write access is not
enabled causes a PUC.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 2-1. PMM Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

PMMCTL0

PMM control register 0

Read/write

Word

9640h

Section 2.3.1

00h

PMMCTL0_L

Read/write

Byte

40h

01h

PMMCTL0_H

Read/write

Byte

96h

02h

PMM control register 1

Read/write (1) Word
(1)

9600h

02h

PMMCTL1_L

Read

Byte

00h

03h

PMMCTL1_H

Read (1)

Byte

96h

Read/write

Word

3200h

Read/write

Byte

00h

Read/write

Byte

33h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0011h

04h
04h
05h
0Ah
0Ah
0Bh
10h

(1)

PMMCTL1

PMMCTL2

PMM control register 2

PMMCTL2_L
PMMCTL2_H
PMMIFG

PMM interrupt flag register

PMMIFG_L
PMMIFG_H
PM5CTL0

Power mode 5 control register 0

10h

PM5CTL0_L

Read/write

Byte

11h

11h

PM5CTL0_H

Read/write

Byte

00h

Section 2.3.2

Section 2.3.3

Section 2.3.4

Section 2.3.5

PMMCTL1 can be written as word only.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

83

PMM Registers

www.ti.com

2.3.1 PMMCTL0 Register (offset = 00h) [reset = 9640h]
Power Management Module Control Register 0
Figure 2-4. PMMCTL0 Register
15

14

13

12

11

10

9

8
rw-0

PMMPW
rw-1

rw-0

rw-0

rw-1

rw-0

rw-1

rw-1

7
Reserved
rw-[0]

6
SVSHE
rw-[1]

5
Reserved
r0

4
PMMREGOFF
rw-[0]

3
PMMSWPOR
rw-(0)

2
PMMSWBOR
rw-[0]

1

0
Reserved

r0

r0

Table 2-2. PMMCTL0 Register Description
Bit

Field

Type

Reset

Description

15-8

PMMPW

RW

96h

PMM password. Always reads as 096h. Write with 0A5h to unlock the PMM
registers.

7

Reserved

RW

0h

Reserved. Must be written with 0.

6

SVSHE

RW

1h

High-side SVS enable.
0b = High-side SVS (SVSH) is disabled in LPM2, LPM3, LPM4, LPM3.5, and
LPM4.5. SVSH is enabled in active mode, LPM0, and LPM1.
1b = SVSH is always enabled.

5

Reserved

R

0h

Reserved. Always reads as 0

4

PMMREGOFF

RW

0h

Regulator off
0b = Regulator remains on when going into LPM3 or LPM4
1b = Regulator is turned off when going to LPM3 or LPM4. System enters
LPM3.5 or LPM4.5, respectively.

3

PMMSWPOR

RW

0h

Software POR. Set this bit to 1 to trigger a POR. This bit is self clearing.
0b = Normal operation
1b = Set to 1 to trigger a POR

2

PMMSWBOR

RW

0h

Software brownout reset. Set this bit to 1 to trigger a BOR. This bit is self
clearing.
0b = Normal operation
1b = Set to 1 to trigger a BOR

1-0

Reserved

R

0h

Reserved. Always reads as 0.

84

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

PMM Registers

www.ti.com

2.3.2 PMMCTL1 Register (offset = 02h) [reset = 0000h]
Power Management Module Control Register 1
Figure 2-5. PMMCTL1 Register
15

14

13

12

11

10

9

8

rw-0

rw-1

rw-1

rw-0

3

2

1

0

rw-[0]

rw-[0]

rw-[0]

r0

Reserved
rw-1

rw-0

rw-0

rw-1

7

6

5

4
Reserved

rw-[0]

rw-[0]

rw-[0]

rw-[0]

Table 2-3. PMMCTL1 Register Description
Bit

Field

Type

Reset

Description

15-0

Reserved

R

9600h

Reserved. Always reads as 9600h.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

85

PMM Registers

www.ti.com

2.3.3 PMMCTL2 Register (offset = 04h) [reset = 3200h]
Power Management Module Control Register 2
Figure 2-6. PMMCTL2 Register
15
Reserved
r0

14
Reserved
r0

13
REFBGRDY
r-(1)

12
REFGENRDY
r-(1)

11
BGMODE
r-(0)

10
Reserved
r0

9
REFBGACT
r-(1)

8
REFGENACT
r-(0)

7
Reserved
r0

6
Reserved
r0

5
Reserved
r0

4
Reserved
r0

3
TSENSOREN
rw-(0)

2
Reserved
r0

1
EXTREFEN
rw-(0)

0
INTREFEN
rw-(0)

Table 2-4. PMMCTL2 Register Description
Bit

Field

Type

Reset

Description

15-14

Reserved

R

0h

Reserved. Always reads as 0

13

REFBGRDY

R

1h

Buffered bandgap voltage ready status.
0b = Buffered bandgap voltage is not ready to be used
1b = Buffered bandgap voltage is ready to be used

12

REFGENRDY

R

1h

Variable reference voltage ready status.
0b = Reference voltage output is not ready to be used.
1b = Reference voltage output is ready to be used

11

BGMODE

R

0h

Bandgap mode. Ready only.
0b = Static mode (higher precision)
1b = Sampled mode (lower power consumption)

10

Reserved

R

0h

Reserved. Always reads as 0

9

REFBGACT

R

1h

Reference bandgap active. Ready only.
0b = Reference bandgap buffer not active
1b = Reference bandgap buffer active

8

REFGENACT

R

0h

Reference generator active. Read only.
0b = Reference generator not active
1b = Reference generator active

7-4

Reserved

R

0h

Reserved. Always reads as 0

3

TSENSOREN

RW

0h

Temperature sensor enable
0b = Disable temperature sensor
1b = Enable temperature sensor

2

Reserved

R

0h

Reserved. Always reads as 0

1

EXTREFEN

RW

0h

External reference output enable
0b = Disable external reference output
1b = Enable internal reference output

0

INTREFEN

RW

0h

Internal reference enable
0b = Disable internal reference
1b = Enable internal reference

86

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

PMM Registers

www.ti.com

2.3.4 PMMIFG Register (offset = 0Ah) [reset = 0000h]
Power Management Module Interrupt Flag Register
Figure 2-7. PMMIFG Register
15
PMMLPM5IFG
rw-{0}

14
Reserved
r0

13
SVSHIFG
rw-{0}

12

7

6

5

4

11
r0

10
PMMPORIFG
rw-[0]

9
PMMRSTIFG
rw-{0}

8
PMMBORIFG
rw-{0}

3

2

1

0

r0

r0

r0

r0

Reserved
r0
Reserved

r0

r0

r0

r0

Table 2-5. PMMIFG Register Description
Bit

Field

Type

Reset

Description

15

PMMLPM5IFG

RW

0h

LPMx.5 flag.
This bit has a specific reset conditions. This bit is only set if the system was in
LPMx.5 before reset.
The bit is cleared by software or by reading the reset vector word. A power
failure on the DVCC domain triggered by the high-side SVS (if enabled) or the
brownout clears the bit.
0b = Reset not due to wake-up from LPMx.5
1b = Reset due to wake-up from LPMx.5

14

Reserved

R

0h

Reserved. Always reads as 0.

13

SVSHIFG

RW

0h

High-side SVS interrupt flag.
This bit has a specific reset conditions.
The SVSHIFG interrupt flag is only set if the SVSH is the reset source; that is,
DVCC dropped below the high-side SVS levels but remained above the
brownout levels. The bit is cleared by software or by reading the reset vector
word SYSRSTIV.
0b = Reset not due to SVSH
1b = Reset due to SVSH

12-11

Reserved

R

0h

Reserved. Always reads as 0.

10

PMMPORIFG

RW

0h

PMM software POR interrupt flag.
This bit has a specific reset conditions. This interrupt flag is only set if a software
POR (PMMSWPOR) is triggered.
The bit is cleared by software or by reading the reset vector word.
0b = Reset not due to PMMSWPOR
1b = Reset due to PMMSWPOR

9

PMMRSTIFG

RW

0h

PMM reset pin interrupt flag.
This bit has a specific reset conditions. This interrupt flag is only set if the
RST/NMI pin is the reset source.
The bit is cleared by software or by reading the reset vector word.
0b = Reset not due to reset pin
1b = Reset due to reset pin

8

PMMBORIFG

RW

0h

PMM software brownout reset interrupt flag.
This bit has a specific reset conditions. This interrupt flag is only set if a software
BOR (PMMSWBOR) is triggered.
The bit is cleared by software or by reading the reset vector word.
0b = Reset not due to PMMSWBOR
1b = Reset due to PMMSWBOR

7-0

Reserved

R

0h

Reserved. Always reads as 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

Copyright © 2014–2015, Texas Instruments Incorporated

87

PMM Registers

www.ti.com

2.3.5 PM5CTL0 Register (offset = 10h) [reset = 0011h]
Power Mode 5 Control Register 0
Figure 2-8. PM5CTL0 Register
15

14

13

12

11

10

9

8

Reserved
r0
7

r0

r0

r0

r0

r0

r0

r0

6

5
LPM5SM
rw-[0]

4
LPM5SW
rw-[1]

3

2
Reserved
r0

1

0
LOCKLPM5
rw-[1]

Reserved
r0

r0

r0

r0

Table 2-6. PM5CTL0 Register Description
Bit

Field

Type

Reset

Description

15-6

Reserved

R

0h

Reserved. Always reads as 0.

5

LPM5SM

RW

0h

Specifies the operation mode of the LPM3.5 switch.
0b = Automatic mode. The LPM3.5 switch is fully handled by the circuitry during
mode switch.
1b = Manual mode. The LPM3.5 switch is specified by LPM5SW bit setting in
software.

4

LPM5SW

RW

1h

Reports or sets the LPM3.5 switch connection, based on the switch mode set by
LPM5SM. When LPM5SW = 1, the VLPM3.5 domain can accept full-speed read
and write operation by the CPU MCLK. If the switch is disconnected (LPM5SW =
0), all peripherals within this domain can accept clock operation no faster than
40 kHz.
In automatic mode (LPM5SM = 0), this bit represents the switch connection
between Vcore and VLPM3.5. Any write to this bit has no effect.
In manual mode (LPM5SM = 1), this bit is read/write by software. When this bit is
set, the switch connection between Vcore and VLPM3.5 is connected. Otherwise, the
switch is disconnected.
0b = LPMx.5 switch disconnected
1b = LPMx.5 switch connected

3-1

Reserved

R

0h

Reserved. Always reads as 0.

0

LOCKLPM5

RW

1h

Lock I/O pin and other LPMx.5 relevant (for example, RTC) configurations upon
entry to or exit from LPMx.5. After the LOCKLPM5 bit is set, it can be cleared
only by software or by a power cycle.
This bit is reset by a power cycle; that is, if SVSH (if enabled) or brownout
triggered a reset.
0b = LPMx.5 configuration is not locked and defaults to its reset condition.
1b = LPMx.5 configuration remains locked. Pin state is held during LPMx.5 entry
and exit.

88

Power Management Module (PMM) and Supply Voltage Supervisor (SVS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 3
SLAU445D – October 2014 – Revised December 2015

Clock System (CS)
The Clock System (CS) module provides the various clocks used on MCU. This chapter describes the
operation of the CS module, which is implemented in all devices.
Topic

3.1
3.2
3.3

...........................................................................................................................

Page

CS Introduction ................................................................................................. 90
CS Operation ..................................................................................................... 92
CS Registers .................................................................................................... 101

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

89

CS Introduction

3.1

www.ti.com

CS Introduction
The CS module supports low system cost and low power consumption. This module supports four internal
and two external clock sources, by which users can optimize the clock configuration for different design
goals. Not all clock sources present in one device. For a detailed description of the configuration for any
given device, see the device-specific data sheet. All clock sources can be fully selected by software.
External clock sources can use either crystal or ceramic oscillators or resonators.
The CS module includes up to six clock sources:
• XT1CLK: High-frequency or low-frequency oscillator that can be used with a high-frequency ceramic or
crystal oscillator or a low-frequency 32768-Hz crystal. XT1CLK can be used as a clock reference into
the FLL. Some devices only support the low-frequency oscillator for XT1CLK. Refer to the devicespecific data sheet for more details.
• VLOCLK: Internal very-low-power low-frequency oscillator with 10-kHz typical frequency
• REFOCLK: Internal trimmed low-frequency oscillator with 32768-Hz typical frequency. Can be used as
a clock reference into the FLL.
• DCOCLK: Internal digitally controlled oscillator (DCO) that can be stabilized by the FLL.
• MODCLK: Internal high-frequency oscillator with 5-MHz typical frequency.
Three clock signals are available from the CS module:
• ACLK: Auxiliary clock. ACLK can be used for peripherals low-frequency operation. This clock is
software selectable as XT1CLK or REFOCLK. The selected clock source must always be
approximately 32 kHz, no more than 40 kHz (typical). ACLK is software selectable by individual
peripheral modules.
• MCLK: Master clock. MCLK is the main clock source of CPU, CRC, and some other digital peripherals
directly operated by the CPU or its clock. This clock is software selectable as REFOCLK, DCOCLK,
XT1CLK, or VLOCLK. When available, the selected clock source can be predivided by 1, 2, 4, 8, 16,
32, 64, or 128.
• SMCLK: Subsystem master clock. SMCLK is the clock for the peripherals that can work independently
from CPU operation. This clock always derives from MCLK. When available, SMCLK can be predivided
by 1, 2, 4, or 8. SMCLK is software selectable by individual peripheral modules.
Figure 3-1 shows the block diagram of the CS module.

90

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Introduction

www.ti.com
FLLWARNEN, FLLULIE
FLLUNLOCKHIS, FLLUNLOCK
FLLULIFG, DCOFFG

SELREF

DCOFTRIM
DCORSEL, DCO
DISMOD, MOD

FLLREFDIV

REFOCLK
0

1/32/64/128
/256/512

FD
LPF

REFO

DCO

FLLN

FLLD

÷
(FLLN+1)

1/2/4/8
/16/32

DCOCLK

1

SELMS

NOTE: XT1 HF setting is device specific.
Refer to the device-specific data sheet
for details.

00

XT1AUTOOFF
XT1AGCOFF
XT1DRIVE
XT1BYPASS
XTS

DCOCLKDIV
DIVM

CPUOFF

01
MCLK

1, 2, 4, 8, 16,
32, 64, 128

XT1IN
XT1

1

10

0

VLOAUTOOFF

XT1OUT

1, 2, 4, 8

ENSTFCNT1
XT1OFFG

XT1

SMCLK

11
DIVS

SMCLKOFF

VLO
VLOCLK

1

ACLK

0

1, 16, 32,
128, 256, 384,
512, 768, 1024

SELA

MODCLK
DIVA

MODO
XT1CLK

MODCLK Request

From Peripherlas
MODCLKREQEN

MCLK Request

From Peripherlas
MCLKREQEN

SMCLK Request

From Peripherlas
SMCLKREQEN

ACLK Request

From Peripherlas
ACLKREQEN

Figure 3-1. Clock System (CS) Block Diagram

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

91

CS Operation

3.2

www.ti.com

CS Operation
After a PUC, the CS module default configuration is:
• MCLK and SMCLK use DCOCLKDIV, which is locked by the FLL and referenced by REFO if XT1 is
not available.
• ACLK uses REFO.
• XT1 external crystal oscillator is selected as the XT1CLK clock source. XT1IN and XT1OUT pins are
set to general-purpose I/Os and XT1 remains disabled until the I/O ports are configured for XT1
operation.
After PUC, DCO locked by FLL operation with XT1CLK is selected by default. The FLL stabilizes MCLK
and SMCLK to 1 MHz and fDCOCLKDIV = 1 MHz
An external 32768-Hz crystal can be used as the FLL reference. By default, the crystal pins (XT1IN,
XT1OUT) are shared with general-purpose I/Os. To enable XT1, the PSEL bits associated with the crystal
pins must be set to use the external 32768-Hz crystal as the clock source. After the crystal starts up and
settles, the FLL reference clock is automatically switched to XT1CLK when XT1OFFG, DCOFFG, and
OFIFG are clear.
A default monitor is engaged with XT1 oscillation. If XT1 is used but does not work properly, fault
protection logic forces REFO as the FLL reference clock.
The status register control bits (SCG0, SCG1, OSCOFF, and CPUOFF) configure the MSP430 operating
modes and enable or disable portions of the CS module. Registers CSCTL0 through CSCTL8 configure
the CS module.
The CS module can be configured or reconfigured by software at any time during program execution.

3.2.1 CS Module Features for Low-Power Applications
Conflicting requirements typically exist in battery-powered applications:
• Low clock frequency for energy conservation and time keeping
• High clock frequency for fast response times and fast burst processing capabilities
• Clock stability over operating temperature and supply voltage
• Low-cost applications with less constrained clock accuracy requirements
The CS module addresses these conflicting requirements by allowing the user to select from the three
available clock signals: ACLK, MCLK, and SMCLK.
MCLK can be sourced from any of the available clock sources (DCOCLK, REFOCLK, XT1CLK, or
VLOCLK). SMCLK is derived from MCLK and always uses the same clock source as MCLK.
ACLK can be source from either REFO or XT1CLK.

3.2.2 Internal Very Low-Power Low-Frequency Oscillator (VLO)
The internal VLO provides a typical frequency of 10 kHz (see the device-specific data sheet for
parameters) without requiring a crystal. The VLO provides for a low-cost low-power clock source for
applications that do not require an accurate time base.
VLOCLK is active in the following conditions:
• VLO is selected as the source of MCLK and SMCLK (SELMS = {3}), and MCLK or SMCLK is active.
• The VLOAUTOOFF bit is cleared and the MCU is in AM through LPM4.
• At least one peripheral requests VLO as clock source.

3.2.3 Internal Trimmed Low-Frequency Reference Oscillator (REFO)
The internal trimmed low-frequency REFO can be used for cost-sensitive applications in which a crystal is
not required or desired. REFO is internally trimmed to 32.768 kHz (typical) and provides a stable
reference frequency that can be used as FLLREFCLK. REFO, combined with the FLL, provides for a
flexible range of system clock settings without the need for a crystal. REFO consumes no power when it is
not in use.
92

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Operation

www.ti.com

REFO is enabled under any of the following conditions:
• REFO is a source for MCLK and SMCLK (SELMS = {1}) and MCLK or SMCLK is active.
• REFO is a source for ACLK (SELA = {1}) and ACLK is active.
• REFO is a source for FLLREFCLK (SELREF = {1}) and DCO is active.

3.2.4 XT1 Oscillator
The XT1 oscillator supports low-current consumption using a 32768-Hz watch crystal in low-frequency
(LF) mode. A watch crystal connects to XIN and XOUT and requires external loading capacitors on both
terminals. These capacitors should be sized according to the crystal or resonator specifications.
The drive settings of XT1 can be increased with the XT1DRIVE bits. At power up, the XT1 starts with the
highest drive settings for fast reliable startup. After startup, user software can reduce the drive strength to
reduce power consumption.
In some devices, the XT1 oscillator supports high-frequency crystals or resonators when in high-frequency
(HF) mode (XTS = 1). The high-frequency crystal or resonator connects to XT1IN and XT1OUT and
requires external capacitors on both terminals. These capacitors should be sized according to the crystal
or resonator specifications.
The XT1 pins are shared with general-purpose I/O ports. At power up, the default operation is generalpurpose I/O ports. XT1 remains disabled until the ports shared with XT1 are configured for XT1 operation.
The configuration of the shared I/O is determined by the Px.SEL bit associated with the XT1IN pin and the
XT1BYPASS bit. Setting the Px.SEL bit causes the XT1IN and XT1OUT ports to be configured for XT1
operation.
If XT1BYPASS is also set, XT1 is configured for bypass mode of operation, and the oscillator associated
with XT1 is powered down. In bypass mode of operation, XT1IN can accept an external clock input signal
and XT1OUT is configured as a general-purpose I/O. The Px.SEL bit associated with XT1OUT is a don't
care.
If the Px.SEL bit associated with XT1IN is cleared, both XT1IN and XT1OUT ports are configured as
general-purpose I/Os, and XT1 is disabled.
XT1 is enabled under any of the following conditions:
• XT1 is a source for MCLK and SMCLK (SELMS = {2}) and MCLK or SMCLK is active.
• XT1 is a source for ACLK (SELA = {0} and ACLK is active.
• XT1 is a source for FLLREFCLK (SELREF = {0}) and DCO is active.
• XT1AUTOOFF is clear and the MCU is in AM through LPM4.
• At least one peripheral requests XT1 as clock source.
NOTE:

XT1 in HF mode configuration
ACLK is the auxiliary clock. ACLK must be approximately 32 kHz and no faster than 40 kHz
(typical). There is a divider (DIVA) if ACLK sources from XT1 in HF mode. The divider setting
depends on the external high-frequency oscillator value.
This divider is always bypassed if ACLK sources from XT1 in LF mode.

3.2.5 Digitally Controlled Oscillator (DCO)
The DCO is an integrated digitally controlled oscillator. The DCO frequency can be adjusted by software
using the DCORSEL, DCO, and MOD bits. Optionally, the DCO frequency can be stabilized by the FLL to
a multiple frequency of FLLREFCLK ÷ n. The FLL accepts different reference sources selected by the
SELREF bits. Reference sources include XT1CLK and REFOCLK. The value of n is defined by the
FLLREFDIV bits (n = 1, 32, 64, 128, 256, or 512). When XT1 only supports a 32-kHz clock, FLLREFDIV is
always read and written as 0 (n = 1). The default is n = 1. There may be scenarios in which FLL operation
is not required or desired, and therefore no FLLREFCLK is necessary.
The FLLD bits configure the FLL prescaler divider value to 1, 2, 4, 8, 16, or 32. By default, FLLD = 1, and
MCLK and SMCLK are sourced from DCOCLKDIV, providing a clock frequency DCOCLK÷2.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

93

CS Operation

www.ti.com

The divider (FLLN + 1) and the divider value of FLLD define the DCOCLK and DCOCLKDIV frequencies,
where FLLN > 0. Writing FLLN = 0 causes the divider to be set to 1.
fDCOCLK = 2FLLD × (FLLN + 1) × (fFLLREFCLK ÷ n)
fDCOCLKDIV = (FLLN + 1) × (fFLLREFCLK ÷ n)
3.2.5.1

Adjusting DCO Frequency

By default, FLL operation is enabled. FLL operation can be disabled by setting SCG0 or SCG1. When the
FLL is disabled, the DCO continues to operate at the current settings defined in CSCTL0 and CSCTL1.
The DCO frequency can be adjusted manually if desired. Otherwise, the DCO frequency is stabilized by
the FLL operation.
After a PUC, DCORSEL = {1} and DCO = {0}. MCLK and SMCLK are sourced from DCOCLKDIV.
Because the CPU executes code from MCLK, which is sourced from the fast-starting DCO, code
execution begins from PUC in less than 5 µs.
The frequency of DCOCLK is set by the following functions:
• The three DCORSEL bits select one of eight nominal frequency ranges for the DCO. These ranges are
defined for each individual device in the device-specific data sheet.
• The nine DCO bits divide the DCO range selected by the DCORSEL bits into 512 frequency steps,
separated by approximately 0.1%.
• The five MOD bits switch between the frequency selected by the DCO bits and the next-higher
frequency set by {DCO + 1} (see Section 3.2.7). When DCO = {511}, the MOD bits have no effect,
because the DCO is already at the highest setting for the selected DCORSEL range.

3.2.6 Frequency Locked Loop (FLL)
The FLL continuously counts up or down a frequency integrator. The output of the frequency integrator
that drives the DCO can be read in CSCTL0 (bits MOD and DCO).
Nine of the integrator bits (CSCTL0 bits 8 to 0) set the DCO frequency tap. 512 taps are implemented for
the DCO, and each is approximately 0.1% higher than the previous. The modulator mixes two adjacent
DCO frequencies to produce fractional taps.
For a given DCO bias range setting, time must be allowed for the DCO to settle on the proper tap for
normal operation. The value n is defined by the FLLREFDIV bits (n = 1, 32, 64, 128, 256, or 512). When
XT1 only supports a 32-kHz clock, FLLREFDIV is always read and written as 0 (n = 1). For a typical
32768-Hz clock source, FLLREFDIV should always be set to 0 (that is, n = 1).

3.2.7 DCO Modulator
The modulator mixes two DCO frequencies, fDCO and fDCO+1 to produce an intermediate effective
frequency between fDCO and fDCO+1 and spread the clock energy and reduce electromagnetic interference
(EMI). The modulator mixes fDCO and fDCO+1 for 32 DCOCLK clock cycles and is configured with the MOD
bits. When MOD = {0}, the modulator is off.
The modulator mixing formula is:
t = (32 – MOD) × tDCO + MOD × tDCO+1
Figure 3-2 shows the modulator operation.
When FLL operation is enabled, the modulator settings and DCO are controlled by the FLL hardware. If
FLL operation is not desired, the modulator settings and DCO control can be configured with software.

94

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Operation

www.ti.com

MODx
31
24
16
15
5
4
3
2
1
0

Figure 3-2. Modulator Patterns

3.2.8 Disabling FLL Hardware and Modulator
The FLL is disabled when the status register bits SCG0 or SCG1 are set. When the FLL is disabled, the
DCO runs at the previously selected tap, and DCOCLK is not automatically stabilized.
The DCO modulator is disabled when DISMOD is set. When the DCO modulator is disabled, the DCOCLK
is adjusted to the DCO tap selected by the DCO bits.
NOTE:

DCO operation without FLL
When the FLL operation is disabled, the DCO continues to operate at the current settings.
Because it is not stabilized by the FLL, temperature and voltage variations influence the
frequency of operation. See the device-specific data sheet for voltage and temperature
coefficients to ensure reliable operation.

3.2.9 FLL Unlock Detection
The FLL unlock detection function can generate PUC reset or an interrupt, when the divided DCO output
fails to lock the reference clock.
When the FLL is enabled, the FLLUNLOCK bits reflect the DCO status if it is locked, too slow, too fast, or
out of DCO range. When FLL recovers as locked, the FLLUNLOCK bit will be cleared and the
FLLUNLOCKHIS bits will automatically log previous unlock status.
To reconfigure the DCO frequency or FLL reference clock, it is recommended to clear CSCTL0 first. This
ensures that the DCO starts ramping up from the lowest frequency to avoid a frequency above
specification due to temperature or supply voltage drift over time. This operation must be followed by
waiting at least two MCLK cycles before the FLL is enabled. After the wait cycles, poll the FLLUNLOCK
bits to determine if the FLL is locked in the target frequency range. If CSCTL0 register is not cleared in the
reconfiguration, seven REFCLK cycles are required before polling FLLUNLOCK bits. Then, poll
FLLUNLOCK to make sure that the FLL locked.
The recommended process to reconfigure the FLL is:
1. Disable the FLL (BIS.W #SCG0, SR)
2. Switch the FLL reference clock if required
3. Clear the CSCTL0 register (CLR.B CSCTL0)
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

95

CS Operation

4.
5.
6.
7.

www.ti.com

Reconfigure the DCO or FLL to the target range
Wait at least two MCLK cycles to allow the DCO and FLL to settle
Enable the FLL (BIC.W #SCG0, SR)
Poll the FLLUNLOCK bits until the FLL is locked

If the FLLULPUC bit is set (FLLULPUC = 1), when DCO runs too fast (FLLUNLOCK = 10b), the
FLLULIFG bit flag being set causes a PUC reset.
If FLLWARNEN bit is set, when FLLUNLOCKHIS changes to unlock, the OFIFG flag is set.
Unlock PUC reset
if FLLULPUC = 1
and FLLUNLOCK = 10 (too fast)

PUC Reset
(FLLULIFG = 0)

Unlock
if FLLULPUC = 0
and FLLUNLOCK = 01 (too slow)
or FLLUNLOCK = 10 (too fast)
or FLLUNLOCK = 11 (out of DCO range)

FLL Locked
(FLLULIFG = 0)

FLL Unlocked
(FLLULIFG = 1)

Recover
FLLUNLOCKHIS = FLLUNLOCK (previous state)
FLLUNLOCK = 00
if FLLWARNEN = 1
An OFIFG interrupt generated

Figure 3-3. FLL Unlock Detection

3.2.10 FLL Operation From Low-Power Modes
An interrupt service request clears SCG1, CPUOFF, and OSCOFF if set, but does not clear SCG0. This
means that for FLL operation from within an interrupt service routine entered from LPM1, LPM3, or LPM4,
the FLL remains disabled and the DCO operates at the previous setting as defined in CSCTL0 and
CSCTL1. SCG0 can be cleared by user software if FLL operation is required.

3.2.11 Operation From Low-Power Modes, Requested by Peripheral Modules
A peripheral module requests its clock sources automatically from the CS module if required for its proper
operation, regardless of the current mode of operation (see Figure 3-4).
A peripheral module asserts one of three possible clock request signals based on its control bits:
ACLK_REQ, MCLK_REQ, or SMCLK_REQ. These request signals are based on the configuration and
clock selection of the module. For example, if a timer selects ACLK as its clock source and the timer is
enabled, the timer generates an ACLK_REQ signal to the CS system. The CS, in turn, enables ACLK
regardless of the LPM settings.
Any clock request from a peripheral module causes its respective clock off signal to be overridden but
does not change the setting of the clock off control bit. For example, a peripheral module may require
ACLK even if it is currently disabled by the OSCOFF bit (OSCOFF = 1). The module requests ACLK by
generating an ACLK_REQ. This causes the OSCOFF bit to have no effect and makes ACLK available to
the requesting peripheral module. The OSCOFF bit remains at its current setting (OSCOFF = 1).
If the requested source is not active, the software NMI handler must take care of the required actions. For
the previous example, if ACLK was sourced by XT1, and XT1 was not enabled, an oscillator fault condition
occurs and the software must handle the event. The watchdog, due to its security requirement, actively
selects the VLOCLK source if the originally selected clock source is not available.

96

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Operation

www.ti.com

Due to the clock request feature, care must be taken in the application when entering low-power modes to
save power. Although the device enters the selected low-power mode, a clock request may exhibit more
current consumption than the values specified in the data sheet.

ACLK_REQ
SMCLK_REQ
MCLK_REQ

Clock
System
(CS)
Direct Clock Request
in Watchdog Mode

ALK
SMCLK
Request Request

ALK
MCLK SMCLK
Request Request Request

ALK
MCLK SMCLK
Request Request Request

ALK
MCLK SMCLK
Request Request Request

Watchdog Timer
Module

Module 1

Module 2

Module n

MCLK
SMCLK
ACLK
VLOCLK

Figure 3-4. Module Request Clock System
By default, the clock request logic is enabled. The clock request logic can be disabled by clearing
ACLKREQEN, MCLKREQEN, or SMCLKREQEN, for each respective system clock. When ACLKREQEN
or MCLKREQEN bits are set, or active, the clock is available to the system and prevents entry into a lowpower mode until all modules requesting the clock are disabled. When ACLKREQEN or MCLKREQEN bits
are cleared, or disabled, the clock is always halted as defined by the low-power modes. The
SMCLKREQEN logic behaves similarly, but it is also influenced by the SMCLKOFF bit in the CSCTL5
register. Table 3-1 shows the relationship between the system clocks and the low-power modes in
conjunction with the clock request logic.
Table 3-1. Clock Request System and Power Modes
ACLK

MCLK

Mode

ACLKREQEN
=0

ACLKREQEN
=1

SMCLK

MCLKREQEN
=0

MCLKREQEN
=1

SMCLKOFF = 0

SMCLKOFF = 1

SMCLKREQEN
=0

SMCLKREQEN
=1

SMCLKREQEN
=0

SMCLKREQEN
=1

AM

Active

Active

Active

Active

Active

Active

Disabled

Active

LPM0

Active

Active

Disabled

Active

Active

Active

Disabled

Active

LPM3

Active

Active

Disabled

Active

Disabled

Active

Disabled

Active

LPM4

Active

Active

Disabled

Active

Disabled

Active

Disabled

Active

LPM3.5

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

LPM4.5

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

Disabled

3.2.11.1 LPM3.5 and LPM4.5 Clock Request Handling
After clearing ACLK request enable signal (ACLKREQEN = 0), the device is able to enter LPMx.5. Refer
to the PMM chapter for details on the requirements to enter LPMx.5.

3.2.12 Fail-Safe Operation
The CS module incorporates an oscillator-fault fail-safe feature. This feature detects an oscillator fault for
XT1 and DCO as shown in Figure 3-5. The available fault conditions are:
• High-frequency or low-frequency oscillator fault (XT1OFFG) for XT1
• DCO fault flag (DCOFFG) for the DCO
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

97

CS Operation

www.ti.com

The crystal oscillator fault bit XT1OFFG is set if the corresponding crystal oscillator is turned on and not
operating properly. Once set, the fault bits remain set until software resets them, even if the fault condition
no longer exists. If software clears the fault bits and the fault condition still exists, the fault bits are
automatically set again; otherwise, they remain cleared.
When using XT1 operation in LF mode as the reference source into the FLL (SELREF = {0}), a crystal
fault automatically causes the FLL reference source, FLLREFCLK, to be sourced by the REFO. XT1OFFG
is set. When using XT1 operation in HF mode as the reference source into the FLL, a crystal fault causes
no FLLREFCLK signal to be generated and the FLL continues to count down to zero in an attempt to lock
FLLREFCLK ÷ n and DCOCLK ÷ [2FLLD × (FLLN + 1)]. The DCO tap moves to the lowest position (DCO
bits are cleared) and the DCOFFG is set. DCOFFG is also set if the N-multiplier value is set too high for
the selected DCO frequency range, resulting in the DCO tap moving to the highest position (CSCTL0.8 to
CSCTL0.0 are set). The DCOFFG remains set until cleared by the user. If the user clears the DCOFFG
and the fault condition remains, it is automatically set, otherwise it remains cleared. XT1HFOFFG is set.
The OFIFG oscillator-fault interrupt flag is set and latched at POR or when any oscillator fault (XT1OFFG
or DCOFFG) is detected. When OFIFG is set and OFIE is set, the OFIFG requests an NMI. When the
interrupt is granted, the OFIE is not reset automatically as it is in previous MSP430 families. It is no longer
required to reset the OFIE. NMI entry/exit circuitry removes this requirement. The OFIFG flag must be
cleared by software. The source of the fault can be identified by checking the individual fault bits.
If MCLK is sourced from XT1 in LF mode, an oscillator fault causes MCLK to be automatically switched to
the REFO for its clock source (REFOCLK). If MCLK is sourced from XT1 in HF mode, an oscillator fault
causes MCLK to be automatically switched to the DCO for its clock source (DCOCLKDIV). This fault
switch does not change the SELMS bit settings. This condition must be handled by user software.
If SMCLK sources from XT1 in LF mode, an oscillator fault causes SMCLK to be automatically switched to
the REFO for its clock source (REFOCLK). If SMCLK sources from XT1 in HF mode, an oscillator fault
causes SMCLK to be automatically switched to the DCO for its clock source (DCOCLKDIV). This fault
switch does not change the SELMS bit settings. This condition must be handled by user software.
If ACLK sources from XT1 in LF or HF mode, an oscillator fault causes ACLK to be automatically switched
to the REFO for its clock source (REFOCLK). This does not change the SELA bit settings. This condition
must be handled by user software.
NOTE:

DCO active during oscillator fault
DCOCLKDIV is active even at the lowest DCO tap. The clock signal is available for the CPU
to execute code and service an NMI during an oscillator fault.
S

PUC

Q

R
NMI_IRQA
DCO FAULT
S

Q

R

S
DCOFFG

Q

R

OFIE
S

DCO OF

Q

OFIFG

NMIRS

Q

XT1 OSC FAULT
S
R

Q

S
XT1OFFG

R

Q
XT1 OF

POR

Figure 3-5. Oscillator Fault Logic

98

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Operation

www.ti.com

NOTE: Fault conditions
DCO_Fault: DCOFFG is set if DCO bits in CSCTL0 register value equals {0} or {511} and
DCO is unlocked. DCO_Fault is ignored when FLL is disabled. It is suggested to clear
DCOFFG before FLL disabled.
XT1_OscFault: This signal is set after the XT1 oscillator has stopped operation and is
cleared after operation resumes. The fault condition causes XT1OFFG to be set and remain
set. If the user clears XT1OFFG and the fault condition still exists, XT1OFFG remains set.
Fault logic
Note that as long as a fault condition still exists, the OFIFG remains set. The application
must take special care when clearing the OFIFG signal. If no fault condition remains when
the OFIFG signal is cleared, the clock logic switches back to the original user settings before
the fault condition.
Fault logic counters
Each crystal oscillator circuit has hardware counters. These counters are reset each time a
fault condition occurs on its respective oscillator, causing the fault flag to be set. The
counters begin to count after the fault condition is removed. When the maximum count is
reached, the fault flag is removed.
In XT1 LF mode, the maximum count is 8192. In XT1 HF mode, the maximum count is 1024.
In bypass modes, regardless of LF or HF settings, the maximum count is 8192.

3.2.13 Synchronization of Clock Signals
When switching MCLK or SMCLK from one clock source to the another, the switch is synchronized as
shown in Figure 3-6 to avoid critical race conditions.
• The current clock cycle continues until the next rising edge.
• The clock remains high until the next rising edge of the new clock.
• The new clock source is selected and continues with a full high period.
Select ACLK
DCOCLK

XT1CLK

MCLK

DCOCLK

Wait for XT1CLK

XT1CLK

Figure 3-6. Switch MCLK from DCOCLK to XT1CLK

3.2.14 Module Oscillator (MODOSC)
The CS module also supports an internal oscillator, MODOSC, that is used by ADC and, optionally, by
other modules in the system. The MODOSC sources MODCLK.
3.2.14.1 MODOSC Operation
To conserve power, MODOSC is powered down when not needed and enabled only when required. When
the MODOSC source is required, the respective module requests it. MODOSC is enabled based on
unconditional and conditional requests. Setting MODOSCREQEN enables conditional requests.
Unconditional requests are always enabled. It is not necessary to set MODOSCREQEN for modules that
use unconditional requests; for example, the ADC.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

99

CS Operation

www.ti.com

The ADC may optionally use MODOSC as a clock source for its conversion clock. The user chooses the
MODOSC as the conversion clock source. During a conversion, the ADC module issues an unconditional
request for the MODOSC clock source. Upon doing so, the MODOSC source is enabled, if not already
enabled by a previous request from another module.

100

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

3.3

CS Registers
Table 3-2 lists the CS registers with offsets. See the device-specific data sheet for the base address.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L ) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 3-2. CS Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

CSCTL0

Clock System Control Register 0

Read/write

Word

0000h

Section 3.3.1

02h

CSCTL1

Clock System Control Register 1

Read/write

Word

0033h

Section 3.3.2

04h

CSCTL2

Clock System Control Register 2

Read/write

Word

101Fh

Section 3.3.3

06h

CSCTL3

Clock System Control Register 3

Read/write

Word

0000h

Section 3.3.4

08h

CSCTL4

Clock System Control Register 4

Read/write

Word

0100h

Section 3.3.5

0Ah

CSCTL5

Clock System Control Register 5

Read/write

Word

1000h

Section 3.3.6

0Ch

CSCTL6

Clock System Control Register 6

Read/write

Word

08C1h

Section 3.3.7

0Eh

CSCTL7

Clock System Control Register 7

Read/write

Word

0740h

Section 3.3.8

10h

CSCTL8

Clock System Control Register 8

Read/write

Word

0007h

Section 3.3.9

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

101

CS Registers

www.ti.com

3.3.1 CSCTL0 Register
Clock System Control Register 0
Figure 3-7. CSCTL0 Register
15

14

13

12

r0

r0

rw-0

rw-0

7

6

5

4

Reserved

11
MOD
rw-0

10

9

rw-0

rw-0

8
DCO
rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

DCO
rw-0

rw-0

rw-0

rw-0

Table 3-3. CSCTL0 Register Description
Bit

Field

Type

Reset

Description

15-14

Reserved

R

0h

Reserved. Always reads as 0.

13-9

MOD

RW

0h

Modulation bit counter. These bits select the modulation pattern. All MOD bits
are modified automatically during FLL operation. The DCO register value is
incremented when the modulation bit counter rolls over from 31 to 0. If the
modulation bit counter decrements from 0 to the maximum count, the DCO
register value is also decreased.

8-0

DCO

RW

0h

DCO tap selection. These bits select the DCO tap and are modified automatically
during FLL operation.

102

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

3.3.2 CSCTL1 Register
Clock System Control Register 1
Figure 3-8. CSCTL1 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7
DCOFTRIMEN
rw-[0]

6

5
DCOFTRIM
rw-1

4

3

1

rw-1

rw-0

2
DCORSEL
rw-0

0
DISMOD
rw-1

rw-0

rw-1

Table 3-4. CSCTL1 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7

DCOFTRIMEN

RW

0h

DCO frequency trim enable. When this bit is set, DCOFTRIM value is selected to
set DCO frequency. Otherwise, DCOFTRIM value is bypassed and DCO applies
default settings in manufacture.
0b = Disable frequency trim
1b = Enable frequency trim

6-4

DCOFTRIM

RW

3h

DCO frequency trim. These bits trims the DCO frequency. By default, it is chipspecific trimmed. These bits can also be trimmed by user code.

3-1

DCORSEL

RW

1h

DCO range select
000b = 1 MHz
001b = 2 MHz (Default)
010b = 4 MHz
011b = 8 MHz
100b = 12 MHz
101b = 16 MHz
110b = Reserved
111b = Reserved

0

DISMOD

RW

1h

Modulation. This bit enables or disables the modulation.
0b = Modulation enabled
1b = Modulation disabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

103

CS Registers

www.ti.com

3.3.3 CSCTL2 Register
Clock System Control Register 2
Figure 3-9. CSCTL2 Register
15
Reserved
r0
7

14
rw-0

13
FLLD
rw-0

12
rw-1

6

5

4

11

10

9

Reserved

8
FLLN

r0

r0

rw-0

rw-0

3

2

1

0

rw-1

rw-1

rw-1

rw-1

FLLN
rw-0

rw-0

rw-0

rw-1

Table 3-5. CSCTL2 Register Description
Bit

Field

Type

Reset

Description

15

Reserved

R

0h

Reserved. Always reads as 0.

14-12

FLLD

RW

1h

FLL loop divider. These bits divide fDCOCLK in the FLL feedback loop. This results
in an additional multiplier for the multiplier bits. See also multiplier bits.
000b = fDCOCLK ÷ 1
001b = fDCOCLK ÷ 2 (Default)
010b = fDCOCLK ÷ 4
011b = fDCOCLK ÷ 8
100b = fDCOCLK ÷ 16
101b = fDCOCLK ÷ 32
110b = Reserved for future use
111b = Reserved for future use

11-10

Reserved

R

0h

Reserved. Always reads as 0.

9-0

FLLN

RW

1Fh

Multiplier bits. These bits set the multiplier value N of the DCO. N must be
greater than 0. Writing zero to FLLN causes N to be set to 1.

104

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

3.3.4 CSCTL3 Register
Clock System Control Register 3
Figure 3-10. CSCTL3 Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

r0

4

3
Reserved
r0

2

1
FLLREFDIV (1)
rw-0

0

Reserved
r0
7

r0

r0

6

5

Reserved
r0
(1)

SELREF
r0

rw-0

rw-0

rw-0

rw-0

These bits are always read and written as 000b, when XT1 only supports 32 kHz.

Table 3-6. CSCTL3 Register Description
Bit

Field

Type

Reset

Description

15-6

Reserved

R

0h

Reserved. Always reads as 0.

5-4

SELREF

RW

0h

FLL reference select. These bits select the FLL reference clock source.
00b = XT1CLK
01b = REFOCLK
10b = Reserved for future use
11b = Reserved for future use.

3

Reserved

R

0h

Reserved. Always reads as 0.

2-0

FLLREFDIV

RW

0h

FLL reference divider. These bits define the divide factor for f(FLLREFCLK).
If XT1 supports high frequency input higher than 32 kHz, the divided frequency is
used as the FLL reference frequency.
000b = fFLLREFCLK ÷ 1
001b = fFLLREFCLK ÷ 32
010b = fFLLREFCLK ÷ 64
011b = fFLLREFCLK ÷ 128
100b = fFLLREFCLK ÷ 256
101b = fFLLREFCLK ÷ 512
110b = Reserved for future use
111b = Reserved for future use
If XT1 only supports 32-kHz clock, FLLREFDIV always reads and should be
written as zero:
000b = fFLLREFCLK ÷ 1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

105

CS Registers

www.ti.com

3.3.5 CSCTL4 Register
Clock System Control Register 4
Figure 3-11. CSCTL4 Register
15

14

13

r0

r0

r0

7

6

r0

r0

5
Reserved
r0

12
Reserved
r0

11

10

9

r0

r0

r0

4

3

2

r0

r0

rw-0

1
SELMS
rw-0

8
SELA
rw-1
0
rw-0

Table 3-7. CSCTL4 Register Description
Bit

Field

Type

Reset

Description

15-9

Reserved

R

0h

Reserved. Always reads as 0.

8

SELA

RW

1h

Selects the ACLK source.
0b = XT1CLK with divider (must be no more than 40 kHz)
1b = REFO (internal 32-kHz clock source)

7-3

Reserved

R

0h

Reserved. Always reads as 0.

2-0

SELMS

RW

0h

Selects the MCLK and SMCLK source.
000b = DCOCLKDIV
001b = REFOCLK
010b = XT1CLK
011b = VLOCLK
1xxb = Reserved for future use

106

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

3.3.6 CSCTL5 Register
Clock System Control Register 5
Figure 3-12. CSCTL5 Register
15
r0

14
Reserved
r0

13

6

5

7

r0

Reserved
r0

12
VLOAUTOOFF
rw-1

11

4

3
Reserved
r0

DIVS
r0

rw-0

rw-0

r0

10
Reserved
r0
2
rw-0

9
r0

8
SMCLKOFF
rw-0

1
DIVM
rw-0

0
rw-0

Table 3-8. CSCTL5 Register Description
Bit

Field

Type

Reset

Description

15-13

Reserved

R

0h

Reserved. Always reads as 0.

12

VLOAUTOOFF

RW

1h

VLO automatic off enable. This bit turns off VLO, if VLO is not used.
0b = VLO always on
1b = VLO automatically turned off if not used(default)

11-9

Reserved

R

0h

Reserved. Always reads as 0.

8

SMCLKOFF

R/W

0h

SMCLK off. This bit turns off SMCLK clock.
0b = SMCLK on
1b = SMCLK off

7-6

Reserved

R

0h

Reserved. Always reads as 0.

5-4

DIVS

RW

0h

SMCLK source divider. SMCLK directly derives from MCLK. SMCLK frequency is
the combination of DIVM and DIVS out of selected clock source.
00b = ÷ 1
01b = ÷ 2
10b = ÷ 4
11b = ÷ 8

3

Reserved

R

0h

Reserved. Always reads as 0.

2-0

DIVM

RW

0h

MCLK source divider
000b = ÷ 1
001b = ÷ 2
010b = ÷ 4
011b = ÷ 8
100b = ÷ 16
101b = ÷ 32
110b = ÷ 64
111b = ÷ 128

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

107

CS Registers

www.ti.com

3.3.7 CSCTL6 Register
Clock System Control Register 6
Figure 3-13. CSCTL6 Register
15

14

13

12

11

10

Reserved
r0

r0

r0

r0

rw-1

6

5
XTS (1)
rw-0

4
XT1BYPASS
rw-0

3

7
XT1DRIVE
rw-1
(1)

rw-1

9

8

rw-0

rw-0

1
XT1AGCOFF
rw-0

0
XT1AUTOOFF
rw-1

DIVA
rw-0

2
XT1HFFREQ
rw-0
rw-0

This bit is read-only as 0 if the device does not support XT1 HF mode. See the device-specific data sheet for configuration information.

Table 3-9. CSCTL6 Register Description
Bit

Field

Type

Reset

Description

15-12

Reserved

R

0h

Reserved. Always reads as 0.

11-8

DIVA

RW

8h

ACLK source divider. (1) (2)
0000b = ÷1
0001b = ÷16
0010b = ÷32
0011b = ÷64
0100b = ÷128
0101b = ÷256
0110b = ÷384
0111b = ÷512
1000b = ÷768
1001b= ÷1024
1111b to 1010b = Reserved

7-6

XT1DRIVE

RW

3h

The XT1 oscillator current can be adjusted to its drive needs. Initially, it starts
with the highest supply current for reliable and quick startup. If needed, user
software can reduce the drive strength.
The configuration of these bits is retained during LPM3.5 until LOCKLPM5 is
cleared, but not the register bits itself; therefore, reconfiguration after wake-up
from LPM3.5 before clearing LOCKLPM5 is required.
00b = Lowest drive strength and current consumption
01b = Lower drive strength and current consumption
10b = Higher drive strength and current consumption
11b = Highest drive strength and current consumption

5

XTS

RW (3)

0h (4)

XT1 mode select.
0b = Low-frequency mode
1b = High-frequency mode

4

XT1BYPASS

RW

0h

XT1 bypass select.
0b = XT1 source internally
1b = XT1 sources externally from pin

3-2

XT1HFFREQ

RW

0h

The XT1 high-frequency selection. These bits must be set to appropriate
frequency for crystal or bypass modes of operation. (1)
00b = 1 MHz to 4 MHz
01b = Above 4 MHz to 6 MHz
10b = Above 6 MHz to 16 MHz
11b = Above 16 MHz to 24 MHz

(1)

(2)
(3)
(4)

108

These bits are valid only in XT1 HF mode. The divider setting depends on the external high-frequency oscillator value, because ACLK is
fixed to no more than 40 kHz (typical). See the device-specific data sheet for details.
This divider is always bypassed if ACLK sources from XT1 in LF mode.
The bits are read-only if XT1 HF mode is not supported in the device. See the device-specific data sheet for configuration information.
The bits are read-only as 0 if XT1 HF mode is not supported in the device. See the device-specific data sheet for configuration
information.
Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

Table 3-9. CSCTL6 Register Description (continued)
Bit

Field

Type

Reset

Description

1

XT1AGCOFF

RW

0h

Automatic gain control (AGC) disable.
0b = AGC on
1b = AGC off

0

XT1AUTOOFF

RW

1h

XT1 automatic off enable. This bit allows XT1 turned turns off when it is not
used.
0b = XT1 is on if XT1 is selected by the port selection and XT1 is not in bypass
mode of operation.
1b = XT1 is off if it is not used as a source for ACLK, MCLK, or SMCLK or is not
used as a reference source required for FLL operation.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

109

CS Registers

www.ti.com

3.3.8 CSCTL7 Register
Clock System Control Register 7
Figure 3-14. CSCTL7 Register
15

14

r0

r0

13
FLLWARNEN
rw-0

7
Reserved
r-0

6
ENSTFCNT1
rw-(1)

5
Reserved
r0

Reserved

12
FLLULPUC
rw-(0)
4
FLLULIFG
rw-(0)

11
10
FLLUNLOCKHIS
rw-(0)
rw-(1)
3

2
Reserved

r0

r0

9

8
FLLUNLOCK

r-1

r-1

1
XT1OFFG
rw-(0)

0
DCOFFG
rw-(0)

Table 3-10. CSCTL7 Register Description
Bit

Field

Type

Reset

Description

15-14

Reserved

R

0h

Reserved. Always reads as 0.

13

FLLWARNEN

RW

0h

Warning enable. If this bit is set, an interrupt is generated based on the
FLLUNLOCKHIS bits. If FLLUNLOCKHIS is not equal to 00, an OFIFG is
generated.
0b = FLLUNLOCKHIS status cannot set OFIFG.
1b = FLLUNLOCKHIS status can set OFIFG.

12

FLLULPUC

RW

0h

FLL unlock PUC enable. If the FLLULPUC bit is set, a reset (PUC) is triggered if
FLLULIFG is set. FLLULIFG indicates when FLLUNLOCK bits equal 10 (too
fast). FLLULPUC is automatically cleared upon servicing the event. If FLLULPUC
is cleared (0), no PUC can be triggered by FLLULIFG.

11-10

FLLUNLOCKHIS

RW

1h

Unlock history bits. These bits indicate the FLL unlock condition history. As soon
as any unlock condition happens, the respective bits are set and remain set until
cleared by software by writing 0 to it or by a POR.
00b = FLL is locked. No unlock situation has been detected since the last reset
of these bits.
01b = DCOCLK has been too slow since the bits were cleared.
10b = DCOCLK has been too fast since the bits were cleared.
11b = DCOCLK has been both too fast and too slow since the bits were cleared.

9-8

FLLUNLOCK

R

3h

Unlock. These bits indicate the current FLL unlock condition. These bits are both
set as long as the DCOFFG flag is set.
00b = FLL is locked. No unlock condition currently active.
01b = DCOCLK is currently too slow.
10b = DCOCLK is currently too fast.
11b = DCOERROR. DCO out of range.

7

Reserved

R

0h

Reserved. Always reads as 0.

6

ENSTFCNT1

RW

1h

Enable start counter for XT1.
0b = Startup fault counter disabled. Counter is cleared.
1b = Startup fault counter enabled.

5

Reserved

R

0h

Reserved. Always reads as 0.

4

FLLULIFG

RW

0h

FLL unlock interrupt flag. This flag is set when FLLUNLOCK bits equal 10b (DCO
too fast). If FLLULPUC is also set, a PUC is triggered when FLLULIFG is set.
0b = FLLUNLOCK bits not equal to 10b
1b = FLLUNLOCK bits equal to 10b

3-2

Reserved

R

0h

Reserved. Always reads as 0.

1

XT1OFFG

RW

0h

XT1 oscillator fault flag. If this bit is set, the OFIFG flag is also set. XT1OFFG is
set if a XT1 fault condition exists. XT1OFFG can be cleared by software. If the
XT1 fault condition still remains, XT1OFFG is set.
0b = No fault condition occurred
1b = XT1 fault. An XT1 fault occurred

110

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CS Registers

www.ti.com

Table 3-10. CSCTL7 Register Description (continued)
Bit

Field

Type

Reset

Description

0

DCOFFG

RW

0h

DCO fault flag. If this bit is set, the OFIFG flag is also set. The DCOFFG bit is
set if DCO = {0} or DCO = {511}. DCOFFG can be cleared by software. If the
DCO fault condition still remains, DCOFFG is set. As long as DCOFFG is set,
FLLUNLOCK shows the DCOERROR condition.
0b = No fault condition occurred
1b = DCO fault. A DCO fault occurred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Clock System (CS)

111

CS Registers

www.ti.com

3.3.9 CSCTL8 Register
Clock System Control Register 8
Figure 3-15. CSCTL8 Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

7

6

r0

r0

r0

r0

r0

r0

5

4

2
SMCLKREQEN

1
MCLKREQEN

0
ACLKREQEN

r0

r0

3
MODOSCREQ
EN
rw-(0)

rw-(1)

rw-(1)

rw-(1)

Reserved
r0

r0

Table 3-11. CSCTL8 Register Description
Bit

Field

Type

Reset

Description

15-4

Reserved

R

0h

Reserved. Always reads as 0.

3

MODOSCREQEN

RW

0h

MODOSC clock request enable. Setting this enables conditional module requests
for MODOSC.
0b = MODOSC conditional requests are disabled.
1b = MODOSC conditional requests are enabled.

2

SMCLKREQEN

RW

1h

SMCLK clock request enable. Setting this enables conditional module requests
for SMCLK
0b = SMCLK conditional requests are disabled.
1b = SMCLK conditional requests are enabled.

1

MCLKREQEN

RW

1h

MCLK clock request enable. Setting this enables conditional module requests for
MCLK
0b = MCLK conditional requests are disabled.
1b = MCLK conditional requests are enabled.

0

ACLKREQEN

RW

1h

ACLK clock request enable. Setting this enables conditional module requests for
ACLK
0b = ACLK conditional requests are disabled.
1b = ACLK conditional requests are enabled.

112

Clock System (CS)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 4
SLAU445D – October 2014 – Revised December 2015

CPUX
This chapter describes the extended MSP430X 16-bit RISC CPU (CPUX) with 1MB memory access, its
addressing modes, and instruction set.
NOTE: The MSP430X CPUX implemented on this device family, formally called CPUXV2, has in
some cases, slightly different cycle counts from the MSP430X CPUX implemented on the
2xx and 4xx families.

Topic

...........................................................................................................................

4.1
4.2
4.3
4.4
4.5
4.6

MSP430X CPU (CPUX) Introduction ....................................................................
Interrupts.........................................................................................................
CPU Registers ..................................................................................................
Addressing Modes ............................................................................................
MSP430 and MSP430X Instructions ....................................................................
Instruction Set Description ................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

Page

114
116
117
123
140
156

113

MSP430X CPU (CPUX) Introduction

4.1

www.ti.com

MSP430X CPU (CPUX) Introduction
The MSP430X CPU incorporates features specifically designed for modern programming techniques, such
as calculated branching, table processing, and the use of high-level languages such as C. The MSP430X
CPU can address a 1MB address range without paging. The MSP430X CPU is completely backward
compatible with the MSP430 CPU.
The MSP430X CPU features include:
• RISC architecture
• Orthogonal architecture
• Full register access including program counter (PC), status register (SR), and stack pointer (SP)
• Single-cycle register operations
• Large register file reduces fetches to memory.
• 20-bit address bus allows direct access and branching throughout the entire memory range without
paging.
• 16-bit data bus allows direct manipulation of word-wide arguments.
• Constant generator provides the six most often used immediate values and reduces code size.
• Direct memory-to-memory transfers without intermediate register holding
• Byte, word, and 20-bit address-word addressing
The block diagram of the MSP430X CPU is shown in Figure 4-1.

114

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430X CPU (CPUX) Introduction

www.ti.com
MDB − Memory Data Bus
19

Memory Address Bus − MAB
0

16 15

R0/PC Program Counter

0

R1/SP Pointer Stack

0

R2/SR Status Register
R3/CG2 Constant Generator
R4

General Purpose

R5

General Purpose

R6

General Purpose

R7

General Purpose

R8

General Purpose

R9

General Purpose

R10

General Purpose

R11

General Purpose

R12

General Purpose

R13

General Purpose

R14

General Purpose

R15

General Purpose
20

16
Zero, Z
Carry, C
Overflow,V
Negative,N

dst

src
16/20-bit ALU

MCLK

Figure 4-1. MSP430X CPU Block Diagram

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

115

Interrupts

4.2

www.ti.com

Interrupts
The MSP430X has the following interrupt structure:
• Vectored interrupts with no polling necessary
• Interrupt vectors are located downward from address 0FFFEh.
The interrupt vectors contain 16-bit addresses that point into the lower 64KB memory. This means all
interrupt handlers must start in the lower 64KB memory.
During an interrupt, the program counter (PC) and the status register (SR) are pushed onto the stack as
shown in Figure 4-2. The MSP430X architecture stores the complete 20-bit PC value efficiently by
appending the PC bits 19:16 to the stored SR value automatically on the stack. When the RETI instruction
is executed, the full 20-bit PC is restored making return from interrupt to any address in the memory range
possible.
Item n-1

SPold

PC.15:0
SP

PC.19:16

SR.11:0

Figure 4-2. PC Storage on the Stack for Interrupts

116

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPU Registers

www.ti.com

4.3

CPU Registers
The CPU incorporates 16 registers (R0 through R15). Registers R0, R1, R2, and R3 have dedicated
functions. Registers R4 through R15 are working registers for general use.

4.3.1 Program Counter (PC)
The 20-bit Program Counter (PC, also called R0) points to the next instruction to be executed. Each
instruction uses an even number of bytes (2, 4, 6, or 8 bytes), and the PC is incremented accordingly.
Instruction accesses are performed on word boundaries, and the PC is aligned to even addresses.
Figure 4-3 shows the PC.
19

16 15

1
Program Counter Bits 19 to 1

0
0

Figure 4-3. Program Counter
The PC can be addressed with all instructions and addressing modes. A few examples:
MOV.W

#LABEL,PC

; Branch to address LABEL (lower 64KB)

MOVA

#LABEL,PC

; Branch to address LABEL (1MB memory)

MOV.W

LABEL,PC

; Branch to address in word LABEL
; (lower 64KB)

MOV.W

@R14,PC

; Branch indirect to address in
; R14 (lower 64KB)

ADDA

#4,PC

; Skip two words (1MB memory)

The BR and CALL instructions reset the upper four PC bits to 0. Only addresses in the lower 64KB
address range can be reached with the BR or CALL instruction. When branching or calling, addresses
beyond the lower 64KB range can only be reached using the BRA or CALLA instructions. Also, any
instruction to directly modify the PC does so according to the used addressing mode. For example,
MOV.W #value,PC clears the upper four bits of the PC, because it is a .W instruction.
The PC is automatically stored on the stack with CALL (or CALLA) instructions and during an interrupt
service routine. Figure 4-4 shows the storage of the PC with the return address after a CALLA instruction.
A CALL instruction stores only bits 15:0 of the PC.

SPold

Item n
PC.19:16

SP

PC.15:0

Figure 4-4. PC Storage on the Stack for CALLA
The RETA instruction restores bits 19:0 of the PC and adds 4 to the stack pointer (SP). The RET
instruction restores bits 15:0 to the PC and adds 2 to the SP.

4.3.2 Stack Pointer (SP)
The 20-bit Stack Pointer (SP, also called R1) is used by the CPU to store the return addresses of
subroutine calls and interrupts. It uses a predecrement, postincrement scheme. In addition, the SP can be
used by software with all instructions and addressing modes. Figure 4-5 shows the SP. The SP is
initialized into RAM by the user, and is always aligned to even addresses.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

117

CPU Registers

www.ti.com

Figure 4-6 shows the stack usage. Figure 4-7 shows the stack usage when 20-bit address words are
pushed.
19

1
Stack Pointer Bits 19 to 1

MOV.W
MOV.W
PUSH
POP

2(SP),R6
R7,0(SP)
#0123h
R8

;
;
;
;

0
0

Copy Item I2 to R6
Overwrite TOS with R7
Put 0123h on stack
R8 = 0123h

Figure 4-5. Stack Pointer
Address

I1

0xxxh
0xxxh - 2

I2

0xxxh - 4

I3

SP

PUSH #0123h

POP R8

I1

I1

I2

I2

I3

I3
SP

0123h

0xxxh - 6

SP

0xxxh - 8

Figure 4-6. Stack Usage

SPold

Item n-1
Item.19:16

SP

Item.15:0

Figure 4-7. PUSHX.A Format on the Stack
The special cases of using the SP as an argument to the PUSH and POP instructions are described and
shown in Figure 4-8.
PUSH SP

POP SP

SPold
SP1

SPold

SP2

The stack pointer is changed after
a PUSH SP instruction.

SP1

The stack pointer is not changed after a POP SP
instruction. The POP SP instruction places SP1 into the
stack pointer SP (SP2 = SP1)

Figure 4-8. PUSH SP, POP SP Sequence

118

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPU Registers

www.ti.com

4.3.3 Status Register (SR)
The 16-bit Status Register (SR, also called R2), used as a source or destination register, can only be used
in register mode addressed with word instructions. The remaining combinations of addressing modes are
used to support the constant generator. Figure 4-9 shows the SR bits. Do not write 20-bit values to the
SR. Unpredictable operation can result.
15

9
Reserved

8
V

7
SCG1

0
OSC CPU
SCG0
GIE
OFF OFF

N

Z C

rw-0

Figure 4-9. SR Bits
Table 4-1 describes the SR bits.
Table 4-1. SR Bit Description
Bit

Description

Reserved

Reserved

V

Overflow. This bit is set when the result of an arithmetic operation overflows the signed-variable range.
ADD(.B), ADDX(.B,.A),
ADDC(.B), ADDCX(.B.A),
ADDA

Set when:
positive + positive = negative
negative + negative = positive
otherwise reset

SUB(.B), SUBX(.B,.A),
SUBC(.B),SUBCX(.B,.A),
SUBA, CMP(.B),
CMPX(.B,.A), CMPA

Set when:
positive – negative = negative
negative – positive = positive
otherwise reset

SCG1

System clock generator 1. This bit may be used to enable or disable functions in the clock system depending on the
device family; for example, DCO bias enable or disable.

SCG0

System clock generator 0. This bit may be used to enable or disable functions in the clock system depending on the
device family; for example, FLL enable or disable.

OSCOFF

Oscillator off. When this bit is set, it turns off the LFXT1 crystal oscillator when LFXT1CLK is not used for MCLK or
SMCLK.

CPUOFF

CPU off. When this bit is set, it turns off the CPU.

SCG1

The bits CPUOFF, OSCOFF, SCG0 and SCG1 request the system to enter a low-power mode

SCG0
OSCOFF
CPUOFF
GIE

General interrupt enable. When this bit is set, it enables maskable interrupts. When it is reset, all maskable interrupts
are disabled.

N

Negative. This bit is set when the result of an operation is negative and cleared when the result is positive.

Z

Zero. This bit is set when the result of an operation is 0 and cleared when the result is not 0.

C

Carry. This bit is set when the result of an operation produced a carry and cleared when no carry occurred.

NOTE: Bit manipulations of the SR should be done by the following instructions: MOV, BIS, and
BIC.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

119

CPU Registers

www.ti.com

4.3.4 Constant Generator Registers (CG1 and CG2)
Six commonly-used constants are generated with the constant generator registers R2 (CG1) and R3
(CG2), without requiring an additional 16-bit word of program code. The constants are selected with the
source register addressing modes (As), as described in Table 4-2.
Table 4-2. Values of Constant Generators CG1, CG2
Register

As

Constant

Remarks

R2

00

–

Register mode

R2

01

(0)

Absolute address mode

R2

10

00004h

+4, bit processing

R2

11

00008h

+8, bit processing

R3

00

00000h

0, word processing

R3

01

00001h

+1

R3

10

00002h

+2, bit processing

R3

11

FFh, FFFFh, FFFFFh

–1, word processing

The constant generator advantages are:
• No special instructions required
• No additional code word for the six constants
• No code memory access required to retrieve the constant
The assembler uses the constant generator automatically if one of the six constants is used as an
immediate source operand. Registers R2 and R3, used in the constant mode, cannot be addressed
explicitly; they act as source-only registers.
4.3.4.1

Constant Generator – Expanded Instruction Set

The RISC instruction set of the MSP430 has only 27 instructions. However, the constant generator allows
the MSP430 assembler to support 24 additional emulated instructions. For example, the single-operand
instruction:
CLR dst

is emulated by the double-operand instruction with the same length:
MOV R3,dst

where the #0 is replaced by the assembler, and R3 is used with As = 00.
INC dst

is replaced by:
ADD #1,dst

120

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPU Registers

www.ti.com

4.3.5 General-Purpose Registers (R4 to R15)
The 12 CPU registers (R4 to R15) contain 8-bit, 16-bit, or 20-bit values. Any byte-write to a CPU register
clears bits 19:8. Any word-write to a register clears bits 19:16. The only exception is the SXT instruction.
The SXT instruction extends the sign through the complete 20-bit register.
Figure 4-10 through Figure 4-14 show the handling of byte, word, and address-word data. Note the reset
of the leading most significant bits (MSBs) if a register is the destination of a byte or word instruction.
Figure 4-10 shows byte handling (8-bit data, .B suffix). The handling is shown for a source register and a
destination memory byte and for a source memory byte and a destination register.
Register-Byte Operation

Byte-Register Operation

High Byte Low Byte
19 16 15
0
87
Un- Unused
Register
used

High Byte

Memory

19 16 15
Memory

Low Byte

Unused

87

0

Unused

Operation

Register

Operation

Memory

0

0

Register

Figure 4-10. Register-Byte and Byte-Register Operation
Figure 4-11 and Figure 4-12 show 16-bit word handling (.W suffix). The handling is shown for a source
register and a destination memory word and for a source memory word and a destination register.
Register-Word Operation
High Byte Low Byte
19 16 15
0
87
UnRegister
used

Memory

Operation

Memory

Figure 4-11. Register-Word Operation

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

121

CPU Registers

www.ti.com
Word-Register Operation
High Byte

Low Byte
Memory

19 16 15
Unused

87

0
Register

Operation

Register

0

Figure 4-12. Word-Register Operation
Figure 4-13 and Figure 4-14 show 20-bit address-word handling (.A suffix). The handling is shown for a
source register and a destination memory address-word and for a source memory address-word and a
destination register.
Register - Ad dress-Word Operation
High Byte Low Byte
19 16 15
0
87
Register

Memory +2

Unused

Memory

Operation

Memory +2

0

Memory

Figure 4-13. Register – Address-Word Operation

122

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Address-Word - Register Operation
High Byte Low Byte
19 16 15
0
87
Memory +2

Unused

Memory

Register

Operation

Register

Figure 4-14. Address-Word – Register Operation

4.4

Addressing Modes
Seven addressing modes for the source operand and four addressing modes for the destination operand
use 16-bit or 20-bit addresses (see Table 4-3). The MSP430 and MSP430X instructions are usable
throughout the entire 1MB memory range.
Table 4-3. Source and Destination Addressing
As, Ad Addressing Mode

Syntax

Description

00, 0

Register

Rn

01, 1

Indexed

X(Rn)

(Rn + X) points to the operand. X is stored in the next word, or stored in combination of
the preceding extension word and the next word.

01, 1

Symbolic

ADDR

(PC + X) points to the operand. X is stored in the next word, or stored in combination of
the preceding extension word and the next word. Indexed mode X(PC) is used.

01, 1

Absolute

&ADDR

The word following the instruction contains the absolute address. X is stored in the next
word, or stored in combination of the preceding extension word and the next word.
Indexed mode X(SR) is used.

10, –

Indirect Register

@Rn

Rn is used as a pointer to the operand.

11, –

Indirect
Autoincrement

@Rn+

Rn is used as a pointer to the operand. Rn is incremented afterwards by 1 for .B
instructions, by 2 for .W instructions, and by 4 for .A instructions.

11, –

Immediate

#N

Register contents are operand.

N is stored in the next word, or stored in combination of the preceding extension word
and the next word. Indirect autoincrement mode @PC+ is used.

The seven addressing modes are explained in detail in the following sections. Most of the examples show
the same addressing mode for the source and destination, but any valid combination of source and
destination addressing modes is possible in an instruction.
NOTE:

Use of Labels EDE, TONI, TOM, and LEO
Throughout MSP430 documentation, EDE, TONI, TOM, and LEO are used as generic labels.
They are only labels and have no special meaning.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

123

Addressing Modes

www.ti.com

4.4.1 Register Mode
Operation:
Length:
Comment:
Byte operation:

Word operation:

Address-word
operation:
SXT exception:
Example:

The operand is the 8-, 16-, or 20-bit content of the used CPU register.
One, two, or three words
Valid for source and destination
Byte operation reads only the eight least significant bits (LSBs) of the source
register Rsrc and writes the result to the eight LSBs of the destination register Rdst.
The bits Rdst.19:8 are cleared. The register Rsrc is not modified.
Word operation reads the 16 LSBs of the source register Rsrc and writes the result
to the 16 LSBs of the destination register Rdst. The bits Rdst.19:16 are cleared.
The register Rsrc is not modified.
Address-word operation reads the 20 bits of the source register Rsrc and writes the
result to the 20 bits of the destination register Rdst. The register Rsrc is not
modified
The SXT instruction is the only exception for register operation. The sign of the low
byte in bit 7 is extended to the bits Rdst.19:8.
BIS.W R5,R6 ;

This instruction logically ORs the 16-bit data contained in R5 with the 16-bit
contents of R6. R6.19:16 is cleared.
Before:

After:
Address
Space

21036h
21034h

Register

Address
Space

xxxxh

R5

AA550h

21036h

xxxxh

D506h

R6

11111h

21034h

D506h

PC

Register

PC

R5

AA550h

R6

0B551h

A550h.or.1111h = B551h

Example:

BISX.A R5,R6 ;

This instruction logically ORs the 20-bit data contained in R5 with the 20-bit
contents of R6.
The extension word contains the A/L bit for 20-bit data. The instruction word uses
byte mode with bits A/L:B/W = 01. The result of the instruction is:
Before:

After:
Address
Space

Register

Address
Space

21036h

xxxxh

R5

AA550h

21036h

xxxxh

21034h

D546h

R6

11111h

21034h

D546h

21032h

1800h

21032h

1800h

PC

Register

PC

R5

AA550h

R6

BB551h

AA550h.or.11111h = BB551h

124

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com

4.4.2 Indexed Mode
The Indexed mode calculates the address of the operand by adding the signed index to a CPU register.
The Indexed mode has three addressing possibilities:
• Indexed mode in lower 64KB memory
• MSP430 instruction with Indexed mode addressing memory above the lower 64KB memory
• MSP430X instruction with Indexed mode
4.4.2.1

Indexed Mode in Lower 64KB Memory

If the CPU register Rn points to an address in the lower 64KB of the memory range, the calculated
memory address bits 19:16 are cleared after the addition of the CPU register Rn and the signed 16-bit
index. This means the calculated memory address is always located in the lower 64KB and does not
overflow or underflow out of the lower 64KB memory space. The RAM and the peripheral registers can be
accessed this way and existing MSP430 software is usable without modifications as shown in Figure 4-15.
Lower 64 KB
Rn.19:16 = 0
19 16 15

FFFFF

0
CPU Register Rn

0

S

16-bit byte index

16-bit signed index

Lower 64KB

10000
0FFFF

Rn.19:0

00000

16-bit signed add

0

Memory address

Figure 4-15. Indexed Mode in Lower 64KB
Length:
Operation:

Comment:
Example:

Source:
Destination:

Two or three words
The signed 16-bit index is located in the next word after the instruction and is added to
the CPU register Rn. The resulting bits 19:16 are cleared giving a truncated 16-bit
memory address, which points to an operand address in the range 00000h to 0FFFFh.
The operand is the content of the addressed memory location.
Valid for source and destination. The assembler calculates the register index and inserts
it.
ADD.B 1000h(R5),0F000h(R6);

This instruction adds the 8-bit data contained in source byte 1000h(R5) and the
destination byte 0F000h(R6) and places the result into the destination byte. Source and
destination bytes are both located in the lower 64KB due to the cleared bits 19:16 of
registers R5 and R6.
The byte pointed to by R5 + 1000h results in address 0479Ch + 1000h = 0579Ch after
truncation to a 16-bit address.
The byte pointed to by R6 + F000h results in address 01778h + F000h = 00778h after
truncation to a 16-bit address.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

125

Addressing Modes

www.ti.com
Before:

After:
Address
Space

4.4.2.2

Register

Address
Space

Register

1103Ah

xxxxh

R5

0479Ch

1103Ah

xxxxh

PC R5

0479Ch

11038h

F000h

R6

01778h

11038h

F000h

R6

01778h

11036h

1000h

11036h

1000h

11034h

55D6h

11034h

55D6h

0077Ah

xxxxh

0077Ah

xxxxh

00778h

xx45h

01778h
+F000h
00778h

00778h

xx77h

0579Eh

xxxxh

0579Eh

xxxxh

0579Ch

xx32h

0479Ch
+1000h
0579Ch

0579Ch

xx32h

PC

32h
+45h
77h

src
dst
Sum

MSP430 Instruction With Indexed Mode in Upper Memory

If the CPU register Rn points to an address above the lower 64KB memory, the Rn bits 19:16 are used for
the address calculation of the operand. The operand may be located in memory in the range Rn ±32KB,
because the index, X, is a signed 16-bit value. In this case, the address of the operand can overflow or
underflow into the lower 64KB memory space (see Figure 4-16 and Figure 4-17).
Upper Memory
Rn.19:16 > 0
19

FFFFF

16 15

0

1 ... 15
Rn.19:0

Rn ± 32 KB

00000

Lower 64 KB

S
10000
0FFFF

CPU Register Rn

S

16-bit byte index

16-bit signed index
(sign extended to 20 bits)

20-bit signed add

Memory address

Figure 4-16. Indexed Mode in Upper Memory

126

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com

Rn.19:0

Rn.19:0

10000
0,FFFF

Lower 64 KB

Rn.19:0

Rn.19:0

±32 KB

±32 KB

FFFFF

0000C

Figure 4-17. Overflow and Underflow for Indexed Mode
Length:
Operation:

Comment:
Example:

Source:
Destination:

Two or three words
The sign-extended 16-bit index in the next word after the instruction is added to the
20 bits of the CPU register Rn. This delivers a 20-bit address, which points to an
address in the range 0 to FFFFFh. The operand is the content of the addressed
memory location.
Valid for source and destination. The assembler calculates the register index and
inserts it.
ADD.W 8346h(R5),2100h(R6) ;

This instruction adds the 16-bit data contained in the source and the destination
addresses and places the 16-bit result into the destination. Source and destination
operand can be located in the entire address range.
The word pointed to by R5 + 8346h. The negative index 8346h is sign extended,
which results in address 23456h + F8346h = 1B79Ch.
The word pointed to by R6 + 2100h results in address 15678h + 2100h = 17778h.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

127

Addressing Modes

www.ti.com
Before:

After:
Address
Space

Register

Address
Space

Register

1103Ah

xxxxh

R5

23456h

1103Ah

xxxxh

PC R5

23456h

11038h

2100h

R6

15678h

11038h

2100h

R6

15678h

11036h

8346h

11036h

8346h

11034h

5596h

11034h

5596h

1777Ah

xxxxh

1777Ah

xxxxh

17778h

2345h

15678h
+02100h
17778h

17778h

7777h

1B79Eh

xxxxh

1B79Eh

xxxxh

1B79Ch

5432h

23456h
+F8346h
1B79Ch

1B79Ch

5432h

PC

05432h
+02345h
07777h

src
dst
Sum

Figure 4-18. Example for Indexed Mode

4.4.2.3

MSP430X Instruction With Indexed Mode

When using an MSP430X instruction with Indexed mode, the operand can be located anywhere in the
range of Rn + 19 bits.
Length:
Operation:

Comment:
Example:

Source:
Destination:

128

CPUX

Three or four words
The operand address is the sum of the 20-bit CPU register content and the 20-bit
index. The 4 MSBs of the index are contained in the extension word; the 16 LSBs
are contained in the word following the instruction. The CPU register is not modified
Valid for source and destination. The assembler calculates the register index and
inserts it.
ADDX.A 12346h(R5),32100h(R6) ;

This instruction adds the 20-bit data contained in the source and the destination
addresses and places the result into the destination.
Two words pointed to by R5 + 12346h which results in address 23456h + 12346h =
3579Ch.
Two words pointed to by R6 + 32100h which results in address 45678h + 32100h =
77778h.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com

The extension word contains the MSBs of the source index and of the destination index and the A/L bit for
20-bit data. The instruction word uses byte mode due to the 20-bit data length with bits A/L:B/W = 01.
Before:

After:
Address
Space

2103Ah

xxxxh

21038h

2100h

21036h

Register

Address
Space

Register

23456h

2103Ah

xxxxh

PC R5

23456h

45678h

21038h

2100h

R6

45678h

2346h

21036h

2346h

21034h

55D6h

21034h

55D6h

21032h

1883h

21032h

1883h

7777Ah

0001h

7777Ah

0007h

77778h

2345h

45678h
+32100h
77778h

77778h

7777h

3579Eh

0006h

3579Eh

0006h

3579Ch

5432h

23456h
+12346h
3579Ch

3579Ch

5432h

R5
R6

PC

65432h
+12345h
77777h

src
dst
Sum

4.4.3 Symbolic Mode
The Symbolic mode calculates the address of the operand by adding the signed index to the PC. The
Symbolic mode has three addressing possibilities:
• Symbolic mode in lower 64KB memory
• MSP430 instruction with Symbolic mode addressing memory above the lower 64KB memory.
• MSP430X instruction with Symbolic mode
4.4.3.1

Symbolic Mode in Lower 64KB

If the PC points to an address in the lower 64KB of the memory range, the calculated memory address
bits 19:16 are cleared after the addition of the PC and the signed 16-bit index. This means the calculated
memory address is always located in the lower 64KB and does not overflow or underflow out of the lower
64KB memory space. The RAM and the peripheral registers can be accessed this way and existing
MSP430 software is usable without modifications as shown in Figure 4-19.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

129

Addressing Modes

www.ti.com
Lower 64 KB
PC.19:16 = 0
19 16 15

FFFFF

0
Program
counter PC

0

10000
0FFFF

PC.19:0

Lower 64 KB

S

00000

16-bit byte index

16-bit signed
PC index

16-bit signed add

0

Memory address

Figure 4-19. Symbolic Mode Running in Lower 64KB
Operation:

Length:
Comment:
Example:

Source:

Destination:

130

CPUX

The signed 16-bit index in the next word after the instruction is added temporarily to
the PC. The resulting bits 19:16 are cleared giving a truncated 16-bit memory
address, which points to an operand address in the range 00000h to 0FFFFh. The
operand is the content of the addressed memory location.
Two or three words
Valid for source and destination. The assembler calculates the PC index and
inserts it.
ADD.B EDE,TONI ;

This instruction adds the 8-bit data contained in source byte EDE and destination
byte TONI and places the result into the destination byte TONI. Bytes EDE and
TONI and the program are located in the lower 64KB.
Byte EDE located at address 0579Ch, pointed to by PC + 4766h, where the PC
index 4766h is the result of 0579Ch – 01036h = 04766h. Address 01036h is the
location of the index for this example.
Byte TONI located at address 00778h, pointed to by PC + F740h, is the truncated
16-bit result of 00778h – 1038h = FF740h. Address 01038h is the location of the
index for this example.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Before:

After:
Address
Space

4.4.3.2

Address
Space

0103Ah

xxxxh

0103Ah

xxxxh

01038h

F740h

01038h

F740h

01036h

4766h

01036h

4766h

01034h

05D0h

01034h

50D0h

0077Ah

xxxxh

0077Ah

xxxxh

00778h

xx45h

01038h
+0F740h
00778h

00778h

xx77h

0579Eh

xxxxh

0579Eh

xxxxh

0579Ch

xx32h

01036h
+04766h
0579Ch

0579Ch

xx32h

PC

PC

32h
+45h
77h

src
dst
Sum

MSP430 Instruction With Symbolic Mode in Upper Memory

If the PC points to an address above the lower 64KB memory, the PC bits 19:16 are used for the address
calculation of the operand. The operand may be located in memory in the range PC ± 32KB, because the
index, X, is a signed 16-bit value. In this case, the address of the operand can overflow or underflow into
the lower 64KB memory space as shown in Figure 4-20 and Figure 4-21.
Upper Memory
PC.19:16 > 0
19

FFFFF

16 15

0
Program
counter PC

1 ... 15
PC.19:0

PC ±32 KB
S

Lower 64 KB

10000
0FFFF

00000

S

16-bit byte index

16-bit signed PC index
(sign extended to 20 bits)

20-bit signed add

Memory address

Figure 4-20. Symbolic Mode Running in Upper Memory

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

131

Addressing Modes

www.ti.com

PC.19:0

PC.19:0

±32 KB

±32 KB

FFFFF

PC.19:0

Lower 64 KB

10000
0FFFF

PC.19:0

0000C

Figure 4-21. Overflow and Underflow for Symbolic Mode
Length:
Operation:

Comment:
Example:

ADD.W EDE,&TONI ;

Source:

This instruction adds the 16-bit data contained in source word EDE and destination
word TONI and places the 16-bit result into the destination word TONI. For this
example, the instruction is located at address 2F034h.
Word EDE at address 3379Ch, pointed to by PC + 4766h, which is the 16-bit result
of 3379Ch – 2F036h = 04766h. Address 2F036h is the location of the index for this
example.
Word TONI located at address 00778h pointed to by the absolute address 00778h

Destination:

132

Two or three words
The sign-extended 16-bit index in the next word after the instruction is added to the
20 bits of the PC. This delivers a 20-bit address, which points to an address in the
range 0 to FFFFFh. The operand is the content of the addressed memory location.
Valid for source and destination. The assembler calculates the PC index and
inserts it

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Before:

After:
Address
Space

4.4.3.3

Address
Space

2F03Ah

xxxxh

2F03Ah

xxxxh

2F038h

0778h

2F038h

0778h

2F036h

4766h

2F036h

4766h

2F034h

5092h

2F034h

5092h

3379Eh

xxxxh

3379Eh

xxxxh

3379Ch

5432h

3379Ch

5432h

0077Ah

xxxxh

0077Ah

xxxxh

00778h

2345h

00778h

7777h

PC

2F036h
+04766h
3379Ch

PC

5432h
+2345h
7777h

src
dst
Sum

MSP430X Instruction With Symbolic Mode

When using an MSP430X instruction with Symbolic mode, the operand can be located anywhere in the
range of PC + 19 bits.
Length:
Operation:

Comment:
Example:

Source:

Destination:

Three or four words
The operand address is the sum of the 20-bit PC and the 20-bit index. The 4 MSBs
of the index are contained in the extension word; the 16 LSBs are contained in the
word following the instruction.
Valid for source and destination. The assembler calculates the register index and
inserts it.
ADDX.B EDE,TONI ;

This instruction adds the 8-bit data contained in source byte EDE and destination
byte TONI and places the result into the destination byte TONI.
Byte EDE located at address 3579Ch, pointed to by PC + 14766h, is the 20-bit
result of 3579Ch – 21036h = 14766h. Address 21036h is the address of the index
in this example.
Byte TONI located at address 77778h, pointed to by PC + 56740h, is the 20-bit
result of 77778h – 21038h = 56740h. Address 21038h is the address of the index in
this example.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

133

Addressing Modes

www.ti.com
Before: Address Space

After:

Address Space

2103Ah

xxxxh

2103Ah

xxxxh

21038h

6740h

21038h

6740h

21036h

4766h

21036h

4766h

21034h

50D0h

21034h

50D0h

21032h

18C5h

21032h

18C5h

7777Ah

xxxxh

7777Ah

xxxxh

77778h

xx45h

21038h
+56740h
77778h

77778h

xx77h

3579Eh

xxxxh

3579Eh

xxxxh

3579Ch

xx32h

21036h
+14766h
3579Ch

3579Ch

xx32h

PC

PC

32h
+45h
77h

src
dst
Sum

4.4.4 Absolute Mode
The Absolute mode uses the contents of the word following the instruction as the address of the operand.
The Absolute mode has two addressing possibilities:
• Absolute mode in lower 64KB memory
• MSP430X instruction with Absolute mode
4.4.4.1

Absolute Mode in Lower 64KB

If an MSP430 instruction is used with Absolute addressing mode, the absolute address is a 16-bit value
and, therefore, points to an address in the lower 64KB of the memory range. The address is calculated as
an index from 0 and is stored in the word following the instruction The RAM and the peripheral registers
can be accessed this way and existing MSP430 software is usable without modifications.

134

Length:
Operation:
Comment:

Two or three words
The operand is the content of the addressed memory location.
Valid for source and destination. The assembler calculates the index from 0 and
inserts it.

Example:

ADD.W &EDE,&TONI ;

Source:
Destination:

This instruction adds the 16-bit data contained in the absolute source and
destination addresses and places the result into the destination.
Word at address EDE
Word at address TONI

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Before: Address Space

Address Space

xxxxh

xxxxh

2103Ah

21038h

7778h

21038h

7778h

2103Ah

4.4.4.2

After:

21036h

579Ch

21034h

5292h

xxxxh

0777Ah

xxxxh

07778h

2345h

07778h

7777h

0579Eh

xxxxh

0579Eh

xxxxh

0579Ch

5432h

0579Ch

5432h

21036h

579Ch

21034h

5292h

0777Ah

PC

PC

5432h
+2345h
7777h

src
dst
Sum

MSP430X Instruction With Absolute Mode

If an MSP430X instruction is used with Absolute addressing mode, the absolute address is a 20-bit value
and, therefore, points to any address in the memory range. The address value is calculated as an index
from 0. The 4 MSBs of the index are contained in the extension word, and the 16 LSBs are contained in
the word following the instruction.
Length:
Operation:
Comment:

Three or four words
The operand is the content of the addressed memory location.
Valid for source and destination. The assembler calculates the index from 0 and
inserts it.

Example:

ADDX.A &EDE,&TONI ;

Source:
Destination:

This instruction adds the 20-bit data contained in the absolute source and
destination addresses and places the result into the destination.
Two words beginning with address EDE
Two words beginning with address TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

135

Addressing Modes

www.ti.com
Before:

After:
Address
Space

Address
Space
2103Ah

xxxxh

2103Ah

xxxxh

21038h

7778h

21038h

7778h

21036h

579Ch

21036h

579Ch

21034h

52D2h

21034h

52D2h

21032h

1987h

21032h

1987h

7777Ah

0001h

7777Ah

0007h

77778h

2345h

77778h

7777h

3579Eh

0006h

3579Eh

0006h

3579Ch

5432h

3579Ch

5432h

PC

PC

65432h
+12345h
77777h

src
dst
Sum

4.4.5 Indirect Register Mode
The Indirect Register mode uses the contents of the CPU register Rsrc as the source operand. The
Indirect Register mode always uses a 20-bit address.
Length:
Operation:
Comment:

136

One, two, or three words
The operand is the content the addressed memory location. The source register
Rsrc is not modified.
Valid only for the source operand. The substitute for the destination operand is
0(Rdst).

Example:

ADDX.W @R5,2100h(R6)

Source:
Destination:

This instruction adds the two 16-bit operands contained in the source and the
destination addresses and places the result into the destination.
Word pointed to by R5. R5 contains address 3579Ch for this example.
Word pointed to by R6 + 2100h, which results in address 45678h + 2100h = 7778h

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Before:

After:
Address
Space

Register

Address
Space

Register

21038h

xxxxh

R5

3579Ch

21038h

xxxxh

PC R5

3579Ch

21036h

2100h

R6

45678h

21036h

2100h

R6

45678h

21034h

55A6h

21034h

55A6h

4777Ah

xxxxh

4777Ah

xxxxh

47778h

2345h

47778h

7777h

3579Eh

xxxxh

3579Eh

xxxxh

3579Ch

5432h

3579Ch

5432h

PC

45678h
+02100h
47778h

R5

5432h
+2345h
7777h

src
dst
Sum

R5

4.4.6 Indirect Autoincrement Mode
The Indirect Autoincrement mode uses the contents of the CPU register Rsrc as the source operand. Rsrc
is then automatically incremented by 1 for byte instructions, by 2 for word instructions, and by 4 for
address-word instructions immediately after accessing the source operand. If the same register is used for
source and destination, it contains the incremented address for the destination access. Indirect
Autoincrement mode always uses 20-bit addresses.
Length:
Operation:
Comment:
Example:

Source:
Destination:

One, two, or three words
The operand is the content of the addressed memory location.
Valid only for the source operand
ADD.B @R5+,0(R6)

This instruction adds the 8-bit data contained in the source and the destination
addresses and places the result into the destination.
Byte pointed to by R5. R5 contains address 3579Ch for this example.
Byte pointed to by R6 + 0h, which results in address 0778h for this example

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

137

Addressing Modes

www.ti.com
Before:

After:
Address
Space

Register

Address
Space

Register

21038h

xxxxh

R5

3579Ch

21038h

xxxxh

PC R5

3579Dh

21036h

0000h

R6

00778h

21036h

0000h

R6

00778h

21034h

55F6h

21034h

55F6h

0077Ah

xxxxh

0077Ah

xxxxh

00778h

xx45h

00778h

xx77h

3579Dh

xxh

3579Dh

xxh

3579Ch

32h

3579Ch

xx32h

PC

00778h
+0000h
00778h

R5

32h
+45h
77h

src
dst
Sum

R5

4.4.7 Immediate Mode
The Immediate mode allows accessing constants as operands by including the constant in the memory
location following the instruction. The PC is used with the Indirect Autoincrement mode. The PC points to
the immediate value contained in the next word. After the fetching of the immediate operand, the PC is
incremented by 2 for byte, word, or address-word instructions. The Immediate mode has two addressing
possibilities:
• 8-bit or 16-bit constants with MSP430 instructions
• 20-bit constants with MSP430X instruction
4.4.7.1

MSP430 Instructions With Immediate Mode

If an MSP430 instruction is used with Immediate addressing mode, the constant is an 8- or 16-bit value
and is stored in the word following the instruction.
Length:
Operation:
Comment:
Example:

Source:
Destination:

138

CPUX

Two or three words. One word less if a constant of the constant generator can be
used for the immediate operand.
The 16-bit immediate source operand is used together with the 16-bit destination
operand.
Valid only for the source operand
ADD #3456h,&TONI

This instruction adds the 16-bit immediate operand 3456h to the data in the
destination address TONI.
16-bit immediate value 3456h
Word at address TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Addressing Modes

www.ti.com
Before:

After:
Address
Space

4.4.7.2

Address
Space

2103Ah

xxxxh

2103Ah

xxxxh

21038h

0778h

21038h

0778h

21036h

3456h

21036h

3456h

21034h

50B2h

21034h

50B2h

0077Ah

xxxxh

0077Ah

xxxxh

00778h

2345h

00778h

579Bh

PC

PC

3456h
+2345h
579Bh

src
dst
Sum

MSP430X Instructions With Immediate Mode

If an MSP430X instruction is used with Immediate addressing mode, the constant is a 20-bit value. The 4
MSBs of the constant are stored in the extension word, and the 16 LSBs of the constant are stored in the
word following the instruction.
Length:

Three or four words. One word less if a constant of the constant generator can be
used for the immediate operand.
The 20-bit immediate source operand is used together with the 20-bit destination
operand.
Valid only for the source operand

Operation:
Comment:
Example:

ADDX.A #23456h,&TONI ;

This instruction adds the 20-bit immediate operand 23456h to the data in the
destination address TONI.
20-bit immediate value 23456h
Two words beginning with address TONI

Source:
Destination:
Before:

After:
Address
Space

Address
Space
2103Ah

xxxxh

2103Ah

xxxxh

21038h

7778h

21038h

7778h

21036h

3456h

21036h

3456h

21034h

50F2h

21032h

1907h

21034h

50F2h

21032h

1907h

7777Ah

0001h

7777Ah

0003h

77778h

2345h

77778h

579Bh

PC

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

PC

23456h
+12345h
3579Bh

src
dst
Sum

CPUX

139

MSP430 and MSP430X Instructions

4.5

www.ti.com

MSP430 and MSP430X Instructions
MSP430 instructions are the 27 implemented instructions of the MSP430 CPU. These instructions are
used throughout the 1MB memory range unless their 16-bit capability is exceeded. The MSP430X
instructions are used when the addressing of the operands or the data length exceeds the 16-bit capability
of the MSP430 instructions.
There are three possibilities when choosing between an MSP430 and MSP430X instruction:
• To use only the MSP430 instructions – The only exceptions are the CALLA and the RETA instruction.
This can be done if a few, simple rules are met:
– Place all constants, variables, arrays, tables, and data in the lower 64KB. This allows the use of
MSP430 instructions with 16-bit addressing for all data accesses. No pointers with 20-bit addresses
are needed.
– Place subroutine constants immediately after the subroutine code. This allows the use of the
symbolic addressing mode with its 16-bit index to reach addresses within the range of PC + 32KB.
• To use only MSP430X instructions – The disadvantages of this method are the reduced speed due to
the additional CPU cycles and the increased program space due to the necessary extension word for
any double-operand instruction.
• Use the best fitting instruction where needed.
Section 4.5.1 lists and describes the MSP430 instructions, and Section 4.5.2 lists and describes the
MSP430X instructions.

4.5.1 MSP430 Instructions
The MSP430 instructions can be used, regardless if the program resides in the lower 64KB or beyond it.
The only exceptions are the instructions CALL and RET, which are limited to the lower 64KB address
range. CALLA and RETA instructions have been added to the MSP430X CPU to handle subroutines in the
entire address range with no code size overhead.
4.5.1.1

MSP430 Double-Operand (Format I) Instructions

Figure 4-22 shows the format of the MSP430 double-operand instructions. Source and destination words
are appended for the Indexed, Symbolic, Absolute, and Immediate modes. Table 4-4 lists the 12 MSP430
double-operand instructions.
15

12
Op-code

11

8
Rsrc

7

6

5

Ad B/W

4
As

0
Rdst

Source or Destination 15:0
Destination 15:0

Figure 4-22. MSP430 Double-Operand Instruction Format

140

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

Table 4-4. MSP430 Double-Operand Instructions
Mnemonic

S-Reg,
D-Reg

Operation

MOV(.B)

src,dst

ADD(.B)

src,dst

ADDC(.B)
SUB(.B)

Status Bits (1)
V

N

Z

C

src → dst

–

–

–

–

src + dst → dst

*

*

*

*

src,dst

src + dst + C → dst

*

*

*

*

src,dst

dst + .not.src + 1 → dst

*

*

*

*

SUBC(.B)

src,dst

dst + .not.src + C → dst

*

*

*

*

CMP(.B)

src,dst

dst - src

*

*

*

*

DADD(.B)

src,dst

src + dst + C → dst (decimally)

*

*

*

*

BIT(.B)

src,dst

src .and. dst

0

*

*

Z

BIC(.B)

src,dst

.not.src .and. dst → dst

–

–

–

–

BIS(.B)

src,dst

src .or. dst → dst

–

–

–

–

XOR(.B)

src,dst

src .xor. dst → dst

*

*

*

Z

AND(.B)

src,dst

src .and. dst → dst

0

*

*

Z

(1)

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.

4.5.1.2

MSP430 Single-Operand (Format II) Instructions

Figure 4-23 shows the format for MSP430 single-operand instructions, except RETI. The destination word
is appended for the Indexed, Symbolic, Absolute, and Immediate modes. Table 4-5 lists the seven singleoperand instructions.
15

7
Op-code

6

5

B/W

4

0

Ad

Rdst

Destination 15:0

Figure 4-23. MSP430 Single-Operand Instructions
Table 4-5. MSP430 Single-Operand Instructions
Status Bits (1)

Mnemonic

S-Reg,
D-Reg

Operation

V

N

Z

C

RRC(.B)

dst

C → MSB →.......LSB → C

0

*

*

*

RRA(.B)

dst

MSB → MSB →....LSB → C

0

*

*

*

PUSH(.B)

src

SP - 2 → SP, src → SP

–

–

–

–

SWPB

dst

bit 15...bit 8 ↔ bit 7...bit 0

–

–

–

–

CALL

dst

Call subroutine in lower 64KB

–

–

–

–

TOS → SR, SP + 2 → SP

*

*

*

*

0

*

*

Z

RETI

TOS → PC,SP + 2 → SP

SXT
(1)

dst

Register mode: bit 7 → bit 8...bit 19
Other modes: bit 7 → bit 8...bit 15

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

141

MSP430 and MSP430X Instructions

4.5.1.3

www.ti.com

Jump Instructions

Figure 4-24 shows the format for MSP430 and MSP430X jump instructions. The signed 10-bit word offset
of the jump instruction is multiplied by two, sign-extended to a 20-bit address, and added to the 20-bit PC.
This allows jumps in a range of –511 to +512 words relative to the PC in the full 20-bit address space.
Jumps do not affect the status bits. Table 4-6 lists and describes the eight jump instructions.
15

13

12

Op-Code

10

Condition

9

8

S

0
10-Bit Signed PC Offset

Figure 4-24. Format of Conditional Jump Instructions
Table 4-6. Conditional Jump Instructions

4.5.1.4

Mnemonic

S-Reg,
D-Reg

Operation

JEQ, JZ

Label

Jump to label if zero bit is set

JNE, JNZ

Label

Jump to label if zero bit is reset

JC

Label

Jump to label if carry bit is set

JNC

Label

Jump to label if carry bit is reset

JN

Label

Jump to label if negative bit is set

JGE

Label

Jump to label if (N .XOR. V) = 0

JL

Label

Jump to label if (N .XOR. V) = 1

JMP

Label

Jump to label unconditionally

Emulated Instructions

In addition to the MSP430 and MSP430X instructions, emulated instructions are instructions that make
code easier to write and read, but do not have op-codes themselves. Instead, they are replaced
automatically by the assembler with a core instruction. There is no code or performance penalty for using
emulated instructions. The emulated instructions are listed in Table 4-7.
Table 4-7. Emulated Instructions
Status Bits (1)

Instruction

Explanation

Emulation

ADC(.B) dst

Add Carry to dst

ADDC(.B) #0,dst

*

*

*

*

BR dst

Branch indirectly dst

MOV dst,PC

–

–

–

–

CLR(.B) dst

Clear dst

MOV(.B) #0,dst

–

–

–

–

CLRC

Clear Carry bit

BIC #1,SR

–

–

–

0

CLRN

V

N

Z

C

Clear Negative bit

BIC #4,SR

–

0

–

–

CLRZ

Clear Zero bit

BIC #2,SR

–

–

0

–

DADC(.B) dst

Add Carry to dst decimally

DADD(.B) #0,dst

*

*

*

*

DEC(.B) dst

Decrement dst by 1

SUB(.B) #1,dst

*

*

*

*

DECD(.B) dst

Decrement dst by 2

SUB(.B) #2,dst

*

*

*

*

DINT

Disable interrupt

BIC #8,SR

–

–

–

–

EINT

Enable interrupt

BIS #8,SR

–

–

–

–

INC(.B) dst

Increment dst by 1

ADD(.B) #1,dst

*

*

*

*

INCD(.B) dst

Increment dst by 2

ADD(.B) #2,dst

*

*

*

*

(1)

142 CPUX

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

Table 4-7. Emulated Instructions (continued)

4.5.1.5

Status Bits (1)

Instruction

Explanation

Emulation

INV(.B) dst

Invert dst

XOR(.B) #–1,dst

*

*

*

*

NOP

No operation

MOV R3,R3

–

–

–

–

POP dst

Pop operand from stack

MOV @SP+,dst

–

–

–

–

RET

Return from subroutine

MOV @SP+,PC

–

–

–

–

RLA(.B) dst

Shift left dst arithmetically

ADD(.B) dst,dst

*

*

*

*

RLC(.B) dst

Shift left dst logically through Carry

ADDC(.B) dst,dst

*

*

*

*

SBC(.B) dst

V

N

Z

C

Subtract Carry from dst

SUBC(.B) #0,dst

*

*

*

*

SETC

Set Carry bit

BIS #1,SR

–

–

–

1

SETN

Set Negative bit

BIS #4,SR

–

1

–

–

SETZ

Set Zero bit

BIS #2,SR

–

–

1

–

TST(.B) dst

Test dst (compare with 0)

CMP(.B) #0,dst

0

*

*

1

MSP430 Instruction Execution

The number of CPU clock cycles required for an instruction depends on the instruction format and the
addressing modes used – not the instruction itself. The number of clock cycles refers to MCLK.
4.5.1.5.1 Instruction Cycles and Length for Interrupt, Reset, and Subroutines
Table 4-8 lists the length and the CPU cycles for reset, interrupts, and subroutines.
Table 4-8. Interrupt, Return, and Reset Cycles and Length
Execution Time
(MCLK Cycles)

Length of Instruction
(Words)

Return from interrupt RETI

5

1

Return from subroutine RET

4

1

Interrupt request service (cycles needed before first
instruction)

6

–

WDT reset

4

–

Reset (RST/NMI)

4

–

Action

4.5.1.5.2 Format II (Single-Operand) Instruction Cycles and Lengths
Table 4-9 lists the length and the CPU cycles for all addressing modes of the MSP430 single-operand
instructions.
Table 4-9. MSP430 Format II Instruction Cycles and Length
No. of Cycles
RRA, RRC
SWPB, SXT

PUSH

CALL

Length of
Instruction

Rn

1

3

4

1

SWPB R5

@Rn

3

3

4

1

RRC @R9

Addressing Mode

Example

3

3

4

1

SWPB @R10+

N/A

3

4

2

CALL #LABEL

X(Rn)

4

4

5

2

CALL 2(R7)

EDE

4

4

5

2

PUSH EDE

&EDE

4

4

6

2

SXT &EDE

@Rn+
#N

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

143

MSP430 and MSP430X Instructions

www.ti.com

4.5.1.5.3 Jump Instructions Cycles and Lengths
All jump instructions require one code word and take two CPU cycles to execute, regardless of whether
the jump is taken or not.
4.5.1.5.4 Format I (Double-Operand) Instruction Cycles and Lengths
Table 4-10 lists the length and CPU cycles for all addressing modes of the MSP430 Format I instructions.
Table 4-10. MSP430 Format I Instructions Cycles and Length
Addressing Mode

No. of Cycles

Length of
Instruction

Rm

1

1

MOV R5,R8

PC

3

1

BR R9

4

(1)

2

ADD R5,4(R6)

EDE

4

(1)

2

XOR R8,EDE

&EDE

4 (1)

2

MOV R5,&EDE

Rm

2

1

AND @R4,R5

PC

4

1

BR @R8

x(Rm)

5

(1)

2

XOR @R5,8(R6)

EDE

5 (1)

2

MOV @R5,EDE

(1)

Source
Rn

Destination

x(Rm)

@Rn

&EDE
@Rn+

Rm
PC

1

BR @R9+

2

XOR @R5,8(R6)

EDE

5 (1)

2

MOV @R9+,EDE

(1)

MOV #20,R9
BR #2AEh

3

MOV #0300h,0(SP)

EDE

5

(1)

3

ADD #33,EDE

&EDE

5 (1)

3

ADD #33,&EDE

Rm

3

2

MOV 2(R5),R7

PC

5

2

BR 2(R6)

6

(1)

3

MOV 4(R7),TONI

x(Rm)

6

(1)

3

ADD 4(R4),6(R9)

&TONI

6 (1)

3

MOV 2(R4),&TONI

Rm

3

2

AND EDE,R6

PC

5

2

BR EDE

TONI

6

(1)

3

CMP EDE,TONI

x(Rm)

6 (1)

3

MOV EDE,0(SP)

(1)

Rm
PC

6

3

MOV EDE,&TONI

3

2

MOV &EDE,R8

5

2

BR &EDE

TONI

6 (1)

3

MOV &EDE,TONI

x(Rm)

6 (1)

3

MOV &EDE,0(SP)

(1)

3

MOV &EDE,&TONI

&TONI

CPUX

MOV @R9+,&EDE

2
2

&TONI

144

2

2
3

TONI

(1)

5

5 (1)

x(Rm)

&EDE

ADD @R5+,R6

4

PC

EDE

XOR @R5,&EDE

1

5 (1)

Rm

x(Rn)

2

2

x(Rm)

&EDE
#N

5

Example

6

MOV, BIT, and CMP instructions execute in one fewer cycle.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

4.5.2 MSP430X Extended Instructions
The extended MSP430X instructions give the MSP430X CPU full access to its 20-bit address space. Most
MSP430X instructions require an additional word of op-code called the extension word. Some extended
instructions do not require an additional word and are noted in the instruction description. All addresses,
indexes, and immediate numbers have 20-bit values when preceded by the extension word.
There are two types of extension words:
• Register or register mode for Format I instructions and register mode for Format II instructions
• Extension word for all other address mode combinations
4.5.2.1

Register Mode Extension Word

The register mode extension word is shown in Figure 4-25 and described in Table 4-11. An example is
shown in Figure 4-27.
15

12

11

10

1

0001

9
00

8

7

6

5

4

ZC

#

A/L

0

0

3

0
(n-1)/Rn

Figure 4-25. Extension Word for Register Modes
Table 4-11. Description of the Extension Word Bits for Register Mode
Bit

Description

15:11

Extension word op-code. Op-codes 1800h to 1FFFh are extension words.

10:9

Reserved

ZC

Zero carry

#

The executed instruction uses the status of the carry bit C.

1

The executed instruction uses the carry bit as 0. The carry bit is defined by the result of the final operation after
instruction execution.

Repetition

A/L

4.5.2.2

0

0

The number of instruction repetitions is set by extension word bits 3:0.

1

The number of instruction repetitions is defined by the value of the four LSBs of Rn. See description for bits 3:0.

Data length extension. Together with the B/W bits of the following MSP430 instruction, the AL bit defines the used data
length of the instruction.
A/L

B/W

Comment

0

0

Reserved

0

1

20-bit address word

1

0

16-bit word

1

1

8-bit byte

5:4

Reserved

3:0

Repetition count
#=0

These four bits set the repetition count n. These bits contain n – 1.

#=1

These four bits define the CPU register whose bits 3:0 set the number of repetitions. Rn.3:0 contain n – 1.

Non-Register Mode Extension Word

The extension word for non-register modes is shown in Figure 4-26 and described in Table 4-12. An
example is shown in Figure 4-28.
15
0

0

0

12

11

1

1

10

7

Source bits 19:16

6

5

4

A/L

0

0

3

0

Destination bits 19:16

Figure 4-26. Extension Word for Non-Register Modes
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

145

MSP430 and MSP430X Instructions

www.ti.com

Table 4-12. Description of Extension Word Bits for Non-Register Modes
Bit

Description

15:11

Extension word op-code. Op-codes 1800h to 1FFFh are extension words.

Source Bits The four MSBs of the 20-bit source. Depending on the source addressing mode, these four MSBs may belong to an
19:16
immediate operand, an index, or to an absolute address.
A/L

Data length extension. Together with the B/W bits of the following MSP430 instruction, the AL bit defines the used
data length of the instruction.
A/L

5:4

B/W Comment

0

0

Reserved

0

1

20-bit address word

1

0

16-bit word

1

1

8-bit byte

Reserved

Destination The four MSBs of the 20-bit destination. Depending on the destination addressing mode, these four MSBs may
Bits 19:16 belong to an index or to an absolute address.

NOTE:

B/W and A/L bit settings for SWPBX and SXTX

A/L
0
0
1
1
15

14

13

12

11

0

0

0

1

1

Op-code
XORX.A

B/W
0
1
0
1
10

SWPBX.A, SXTX.A
N/A
SWPB.W, SXTX.W
N/A
9

00

8

7

6

5

ZC

#

A/L

Ad B/W

Rsrc

4

3

2

1

Rsvd

(n-1)/Rn

As

Rdst

0

R9,R8
1: Repetition count
in bits 3:0
0: Use Carry

0

0

0

14(XOR)
XORX instruction

1

1

0
9

0

01:Address word

0

0

0

0

0

1

0

8(R8)
Destination R8

Source R9
Destination
register mode

Source
register mode

Figure 4-27. Example for Extended Register or Register Instruction

146

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com
15

14

13

12

11

0

0

0

1

1

10

9

8

7

Source 19:16

Op-code

6
A/L

Ad B/W

Rsrc

5

4

3

2

1

0

Rsvd

Destination 19:16

As

Rdst

Source 15:0
Destination 15:0
XORX.A #12345h, 45678h(R15)

X(Rn)

18xx extension word
0

0

0

1

01: Address
word

@PC+

12345h
1

1

14 (XOR)

0 (PC)

1

0

0

4

1

3

15 (R15)

Immediate operand LSBs: 2345h
Index destination LSBs: 5678h

Figure 4-28. Example for Extended Immediate or Indexed Instruction

4.5.2.3

Extended Double-Operand (Format I) Instructions

All 12 double-operand instructions have extended versions as listed in Table 4-13.
Table 4-13. Extended Double-Operand Instructions
Mnemonic

Operands

Operation

MOVX(.B,.A)

src,dst

ADDX(.B,.A)

src,dst

ADDCX(.B,.A)
SUBX(.B,.A)

Status Bits (1)
V

N

Z

C

src → dst

–

–

–

–

src + dst → dst

*

*

*

*

src,dst

src + dst + C → dst

*

*

*

*

src,dst

dst + .not.src + 1 → dst

*

*

*

*

SUBCX(.B,.A)

src,dst

dst + .not.src + C → dst

*

*

*

*

CMPX(.B,.A)

src,dst

dst – src

*

*

*

*

DADDX(.B,.A)

src,dst

src + dst + C → dst (decimal)

*

*

*

*

BITX(.B,.A)

src,dst

src .and. dst

0

*

*

Z

BICX(.B,.A)

src,dst

.not.src .and. dst → dst

–

–

–

–

BISX(.B,.A)

src,dst

src .or. dst → dst

–

–

–

–

XORX(.B,.A)

src,dst

src .xor. dst → dst

*

*

*

Z

ANDX(.B,.A)

src,dst

src .and. dst → dst

0

*

*

Z

(1)

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

147

MSP430 and MSP430X Instructions

www.ti.com

The four possible addressing combinations for the extension word for Format I instructions are shown in
Figure 4-29.
15

14

13

12

11

10

9

8

7

6

5

4

0

0

0

1

1

0

0

ZC

#

A/L

0

0

n-1/Rn

0

B/W

0

0

dst

A/L

0

0

src

Op-code

0

0

0

1

1

src.19:16

Op-code

Ad B/W

src

3

0

0

0

0

0

dst

As

src.15:0

0

0

0

1

1

0

0

0

src

Op-code

0

A/L

0

Ad B/W

dst.19:16

0
As

dst

dst.15:0

0

0

0

1

1

src.19:16
src

Op-code

A/L

0

Ad B/W

0

dst.19:16

As

dst

src.15:0
dst.15:0

Figure 4-29. Extended Format I Instruction Formats
If the 20-bit address of a source or destination operand is located in memory, not in a CPU register, then
two words are used for this operand as shown in Figure 4-30.
15
Address+2
Address

14

13

12

11

10

9

8

7

6

5

4

0 .......................................................................................0

3

2

1

0

19:16

Operand LSBs 15:0

Figure 4-30. 20-Bit Addresses in Memory

148

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.4

Extended Single-Operand (Format II) Instructions

Extended MSP430X Format II instructions are listed in Table 4-14.
Table 4-14. Extended Single-Operand Instructions
Status Bits (1)

Mnemonic

Operands

Operation

CALLA

dst

Call indirect to subroutine (20-bit address)

POPM.A

#n,Rdst

Pop n 20-bit registers from stack

1 to 16

POPM.W

#n,Rdst

Pop n 16-bit registers from stack

PUSHM.A

#n,Rsrc

Push n 20-bit registers to stack

PUSHM.W

#n,Rsrc

Push n 16-bit registers to stack

PUSHX(.B,.A)

src

Push 8-, 16-, or 20-bit source to stack

RRCM(.A)

#n,Rdst

Rotate right Rdst n bits through carry (16-, 20-bit register)

RRUM(.A)

#n,Rdst

Rotate right Rdst n bits unsigned (16-, 20-bit register)

RRAM(.A)

#n,Rdst

RLAM(.A)

#n,Rdst

RRCX(.B,.A)

dst

RRUX(.B,.A)
RRAX(.B,.A)

V

N

Z

C

–

–

–

–

–

–

–

–

1 to 16

–

–

–

–

1 to 16

–

–

–

–

1 to 16

–

–

–

–

–

–

–

–

1 to 4

0

*

*

*

1 to 4

0

*

*

*

Rotate right Rdst n bits arithmetically (16-, 20-bit register)

1 to 4

0

*

*

*

Rotate left Rdst n bits arithmetically (16-, 20-bit register)

1 to 4

*

*

*

*

Rotate right dst through carry (8-, 16-, 20-bit data)

1

0

*

*

*

Rdst

Rotate right dst unsigned (8-, 16-, 20-bit)

1

0

*

*

*

dst

Rotate right dst arithmetically

1

0

*

*

*

SWPBX(.A)

dst

Exchange low byte with high byte

1

–

–

–

–

SXTX(.A)

Rdst

Bit7 → bit8 ... bit19

1

0

*

*

Z

SXTX(.A)

dst

Bit7 → bit8 ... MSB

1

0

*

*

Z

(1)

n

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.

The three possible addressing mode combinations for Format II instructions are shown in Figure 4-31.
15

14

13

12

11

10

9

8

7

6

5

4

0

0

0

1

1

0

0

ZC

#

A/L

0

0

n-1/Rn

B/W

0

0

dst

A/L

0

0

B/W

1

x

dst

A/L

0

0

dst.19:16

B/W

x

1

dst

Op-code

0

0

0

1

1

0

0

0

0

Op-code

0

0

0

1

1

0

0

0

0

Op-code

3

0

0

0

0

0

dst.15:0

Figure 4-31. Extended Format II Instruction Format

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

149

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.4.1 Extended Format II Instruction Format Exceptions
Exceptions for the Format II instruction formats are shown in Figure 4-32 through Figure 4-35.
15

8

7

Op-code

4

3

n-1

0
Rdst - n+1

Figure 4-32. PUSHM and POPM Instruction Format
15

12
C

11

10

9

4

n-1

3

Op-code

0
Rdst

Figure 4-33. RRCM, RRAM, RRUM, and RLAM Instruction Format
15

12

11

8

7

4

3

0

C

Rsrc

Op-code

0(PC)

C

#imm/abs19:16

Op-code

0(PC)

#imm15:0 / &abs15:0

C

Rsrc

Op-code

0(PC)

index15:0

Figure 4-34. BRA Instruction Format
15

4

3

0

Op-code

Rdst

Op-code

Rdst
index15:0

Op-code

#imm/ix/abs19:16

#imm15:0 / index15:0 / &abs15:0

Figure 4-35. CALLA Instruction Format

150

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.5

Extended Emulated Instructions

The extended instructions together with the constant generator form the extended emulated instructions.
Table 4-15 lists the emulated instructions.
Table 4-15. Extended Emulated Instructions
Instruction

Explanation

Emulation

ADCX(.B,.A) dst

Add carry to dst

ADDCX(.B,.A) #0,dst

BRA dst

Branch indirect dst

MOVA dst,PC

RETA

Return from subroutine

MOVA @SP+,PC

CLRA Rdst

Clear Rdst

MOV #0,Rdst

CLRX(.B,.A) dst

Clear dst

MOVX(.B,.A) #0,dst

DADCX(.B,.A) dst

Add carry to dst decimally

DADDX(.B,.A) #0,dst

DECX(.B,.A) dst

Decrement dst by 1

SUBX(.B,.A) #1,dst

DECDA Rdst

Decrement Rdst by 2

SUBA #2,Rdst

DECDX(.B,.A) dst

Decrement dst by 2

SUBX(.B,.A) #2,dst

INCX(.B,.A) dst

Increment dst by 1

ADDX(.B,.A) #1,dst

INCDA Rdst

Increment Rdst by 2

ADDA #2,Rdst

INCDX(.B,.A) dst

Increment dst by 2

ADDX(.B,.A) #2,dst

INVX(.B,.A) dst

Invert dst

XORX(.B,.A) #-1,dst

RLAX(.B,.A) dst

Shift left dst arithmetically

ADDX(.B,.A) dst,dst

RLCX(.B,.A) dst

Shift left dst logically through carry

ADDCX(.B,.A) dst,dst

SBCX(.B,.A) dst

Subtract carry from dst

SUBCX(.B,.A) #0,dst

TSTA Rdst

Test Rdst (compare with 0)

CMPA #0,Rdst

TSTX(.B,.A) dst

Test dst (compare with 0)

CMPX(.B,.A) #0,dst

POPX dst

Pop to dst

MOVX(.B, .A) @SP+,dst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

151

MSP430 and MSP430X Instructions

4.5.2.6

www.ti.com

MSP430X Address Instructions

MSP430X address instructions are instructions that support 20-bit operands but have restricted
addressing modes. The addressing modes are restricted to the Register mode and the Immediate mode,
except for the MOVA instruction as listed in Table 4-16. Restricting the addressing modes removes the
need for the additional extension-word op-code improving code density and execution time. Address
instructions should be used any time an MSP430X instruction is needed with the corresponding restricted
addressing mode.
Table 4-16. Address Instructions, Operate on 20-Bit Register Data
Status Bits (1)

Mnemonic

Operands

Operation

V

N

Z

C

ADDA

Rsrc,Rdst

Add source to destination register

*

*

*

*

Move source to destination

–

–

–

–

Compare source to destination register

*

*

*

*

Subtract source from destination register

*

*

*

*

#imm20,Rdst
MOVA

Rsrc,Rdst
#imm20,Rdst
z16(Rsrc),Rdst
EDE,Rdst
&abs20,Rdst
@Rsrc,Rdst
@Rsrc+,Rdst
Rsrc,z16(Rdst)
Rsrc,&abs20

CMPA

Rsrc,Rdst
#imm20,Rdst

SUBA

Rsrc,Rdst
#imm20,Rdst

(1)

152

CPUX

* = Status bit is affected.
– = Status bit is not affected.
0 = Status bit is cleared.
1 = Status bit is set.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.7

MSP430X Instruction Execution

The number of CPU clock cycles required for an MSP430X instruction depends on the instruction format
and the addressing modes used, not the instruction itself. The number of clock cycles refers to MCLK.
4.5.2.7.1 MSP430X Format II (Single-Operand) Instruction Cycles and Lengths
Table 4-17 lists the length and the CPU cycles for all addressing modes of the MSP430X extended singleoperand instructions.
Table 4-17. MSP430X Format II Instruction Cycles and Length
Instruction

Execution Cycles, Length of Instruction (Words)
Rn

@Rn

@Rn+

#N

X(Rn)

EDE

&EDE

RRAM

n, 1

–

–

–

–

–

–

RRCM

n, 1

–

–

–

–

–

–

RRUM

n, 1

–

–

–

–

–

–

RLAM

n, 1

–

–

–

–

–

–

PUSHM

2+n, 1

–

–

–

–

–

–

PUSHM.A

2+2n, 1

–

–

–

–

–

–

POPM

2+n, 1

–

–

–

–

–

–

POPM.A

2+2n, 1

–

–

–

–

–

–

5, 1

6, 1

6, 1

5, 2

5 (1), 2

7, 2

7, 2

RRAX(.B)

1+n, 2

4, 2

4, 2

–

5, 3

5, 3

5, 3

RRAX.A

1+n, 2

6, 2

6, 2

–

7, 3

7, 3

7, 3

RRCX(.B)

1+n, 2

4, 2

4, 2

–

5, 3

5, 3

5, 3

RRCX.A

1+n, 2

6, 2

6, 2

–

7, 3

7, 3

7, 3

CALLA

(1)

PUSHX(.B)

4, 2

4, 2

4, 2

4, 3

5 ,3

5, 3

5, 3

PUSHX.A

5, 2

6, 2

6, 2

5, 3

7 (1), 3

7, 3

7, 3

POPX(.B)

3, 2

–

–

–

5, 3

5, 3

5, 3

POPX.A

4, 2

–

–

–

7, 3

7, 3

7, 3

(1)

Add one cycle when Rn = SP

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

153

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.7.2 MSP430X Format I (Double-Operand) Instruction Cycles and Lengths
Table 4-18 lists the length and CPU cycles for all addressing modes of the MSP430X extended Format I
instructions.
Table 4-18. MSP430X Format I Instruction Cycles and Length
Addressing Mode
Source

Destination

Rn

.A

.B/.W/.A

Rm (1)

2

2

2

BITX.B R5,R8

PC

4

4

3

ANDX.A R5,4(R6)

5 (2)

7 (3)

3

XORX R8,EDE

(2)

(3)

Rm

154

5

6

2

ADDX @R9,PC

6 (2)

9 (3)

3

ANDX.A @R5,4(R6)

(2)

(3)

3

XORX @R8,EDE

3

BITX.B @R5,&EDE

3

4

2

BITX @R5+,R8

Rm

9

5

6

2

ADDX.A @R9+,PC

6 (2)

9 (3)

3

ANDX @R5+,4(R6)

(2)

(3)

EDE

6

3

XORX.B @R8+,EDE

&EDE

6 (2)

9 (3)

3

BITX @R5+,&EDE

Rm

3

3

3

BITX #20,R8

PC (4)

4

4

3

ADDX.A #FE000h,PC

(3)

(2)

9

x(Rm)

6

4

ANDX #1234,4(R6)

EDE

6 (2)

8 (3)

4

XORX #A5A5h,EDE

(2)

(3)

4

BITX.B #12,&EDE

Rm
(4)

6

8

8

4

5

3

BITX 2(R5),R8

6

7

(2)

3

SUBX.A 2(R6),PC

(3)

TONI

7

4

ANDX 4(R7),4(R6)

x(Rm)

7 (2)

10 (3)

4

XORX.B 2(R6),EDE

(2)

(3)

Rm
(4)

TONI

(4)

BITX @R5,R8

9 (3)

PC

(3)

BITX.W R5,&EDE

2

6 (2)

&TONI

(2)

3

4

7

6

PC

(1)

3

&EDE

&EDE

&EDE

5

7

EDE

x(Rm)

EDE

ADDX R9,PC

5

PC

x(Rn)

2

(3)

EDE

x(Rm)

#N

(2)

x(Rm)

PC

@Rn+

Examples

.B/.W

&EDE
@Rn

Length of
Instruction

No. of Cycles

7

4

10

4

BITX 8(SP),&EDE

5

3

BITX.B EDE,R8

10

6

7

3

ADDX.A EDE,PC

7 (2)

10 (3)

4

ANDX EDE,4(R6)

(2)

(3)

x(Rm)

7

4

ANDX EDE,TONI

&TONI

7 (2)

10 (3)

4

BITX EDE,&TONI

4

5

3

BITX &EDE,R8

Rm

10

PC (4)

6

7

3

ADDX.A &EDE,PC

TONI

7 (2)

10 (3)

4

ANDX.B &EDE,4(R6)

(2)

(3)

4

XORX &EDE,TONI

10 (3)

4

BITX &EDE,&TONI

x(Rm)

7

&TONI

7 (2)

10

Repeat instructions require n + 1 cycles, where n is the number of times the instruction is executed.
Reduce the cycle count by one for MOV, BIT, and CMP instructions.
Reduce the cycle count by two for MOV, BIT, and CMP instructions.
Reduce the cycle count by one for MOV, ADD, and SUB instructions.

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MSP430 and MSP430X Instructions

www.ti.com

4.5.2.7.3 MSP430X Address Instruction Cycles and Lengths
Table 4-19 lists the length and the CPU cycles for all addressing modes of the MSP430X address
instructions.
Table 4-19. Address Instruction Cycles and Length
Addressing Mode

MOVA

CMPA
ADDA
SUBA

Rn

1

1

1

1

CMPA R5,R8

PC

3

3

1

1

SUBA R9,PC

x(Rm)

4

–

2

–

MOVA R5,4(R6)

EDE

4

–

2

–

MOVA R8,EDE

&EDE

4

–

2

–

MOVA R5,&EDE

Rm

3

–

1

–

MOVA @R5,R8

PC

5

–

1

–

MOVA @R9,PC

Rm

3

–

1

–

MOVA @R5+,R8

PC

5

–

1

–

MOVA @R9+,PC

Rm

2

3

2

2

CMPA #20,R8

PC

3

3

2

2

SUBA #FE000h,PC

Rm

4

–

2

–

MOVA 2(R5),R8

PC

6

–

2

–

MOVA 2(R6),PC

Rm

4

–

2

–

MOVA EDE,R8

PC

6

–

2

–

MOVA EDE,PC

Rm

4

–

2

–

MOVA &EDE,R8

PC

6

–

2

–

MOVA &EDE,PC

Rn

#N

x(Rn)

EDE

&EDE

Example

CMPA
ADDA
SUBA

Destination

@Rn+

Length of Instruction
(Words)

MOVA
BRA

Source

@Rn

Execution Time
(MCLK Cycles)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

155

Instruction Set Description

4.6

www.ti.com

Instruction Set Description
Table 4-20 shows all available instructions:
Table 4-20. Instruction Map of MSP430X
000

040

080

RRC

RRC.
B

SWP
B

0xxx
10xx
14xx
18xx
1Cxx
20xx
24xx
28xx
2Cxx
30xx
34xx
38xx
3Cxx
4xxx
5xxx
6xxx
7xxx
8xxx
9xxx
Axxx
Bxxx
Cxxx
Dxxx
Exxx
Fxxx

156

CPUX

0C0
100
140
180
1C0
200
240
280
2C0
MOVA, CMPA, ADDA, SUBA, RRCM, RRAM, RLAM, RRUM
RRA.
PUS PUS
RRA
SXT
CALL
B
H
H.B
PUSHM.A, POPM.A, PUSHM.W, POPM.W

300

340

RETI

CALL
A

380

3C0

Extension word for Format I and Format II instructions
JNE, JNZ
JEQ, JZ
JNC
JC
JN
JGE
JL
JMP
MOV, MOV.B
ADD, ADD.B
ADDC, ADDC.B
SUBC, SUBC.B
SUB, SUB.B
CMP, CMP.B
DADD, DADD.B
BIT, BIT.B
BIC, BIC.B
BIS, BIS.B
XOR, XOR.B
AND, AND.B

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.1 Extended Instruction Binary Descriptions
Detailed MSP430X instruction binary descriptions are shown in the following tables.
Instruction
Group

Instruction
15
MOVA

Instruction
Identifier

src or data.19:16
12

11

8

7

dst
4

3

0

src

0

0

0

0

dst

MOVA @Rsrc,Rdst

0

src

0

0

0

1

dst

MOVA @Rsrc+,Rdst

0

&abs.19:16

0

0

1

0

dst

MOVA &abs20,Rdst

0

0

src

0

1

1

dst

MOVA x(Rsrc),Rdst

0

0

src

1

1

0

&abs.19:16

1

1

1

dst

0

0

0

0

0

0

0

0

0

0

0

0

0

0

&abs.15:0
0
x.15:0

±15-bit index x

0

MOVA Rsrc,&abs20

&abs.15:0
0

0

0

0

src

0

MOVA Rsrc,X(Rdst)

x.15:0
0

0

0

0

imm.19:16

±15-bit index x

1

0

0

0

dst

MOVA #imm20,Rdst

0

0

1

dst

CMPA #imm20,Rdst

0

1

0

dst

ADDA #imm20,Rdst

0

1

1

dst

SUBA #imm20,Rdst

imm.15:0
CMPA

0

0

0

0

imm.19:16

ADDA

0

0

0

0

imm.19:16

SUBA

0

0

0

0

imm.19:16

MOVA

0

0

0

0

src

1

1

0

0

dst

MOVA Rsrc,Rdst

CMPA

0

0

0

0

src

1

1

0

1

dst

CMPA Rsrc,Rdst

ADDA

0

0

0

0

src

1

1

1

0

dst

ADDA Rsrc,Rdst

SUBA

0

0

0

0

src

1

1

1

1

dst

SUBA Rsrc,Rdst

1
imm.15:0
1
imm.15:0
1
imm.15:0

Instruction
Group

Instruction
15

12

Instruction
Identifier

Bit Loc.

Inst. ID

11

9

8

7

10

dst
4

3

0

RRCM.A

0

0

0

0

n–1

0

0

0

1

0

0

dst

RRCM.A #n,Rdst

RRAM.A

0

0

0

0

n–1

0

1

0

1

0

0

dst

RRAM.A #n,Rdst

RLAM.A

0

0

0

0

n–1

1

0

0

1

0

0

dst

RLAM.A #n,Rdst

RRUM.A

0

0

0

0

n–1

1

1

0

1

0

0

dst

RRUM.A #n,Rdst

RRCM.W

0

0

0

0

n–1

0

0

0

1

0

1

dst

RRCM.W #n,Rdst

RRAM.W

0

0

0

0

n–1

0

1

0

1

0

1

dst

RRAM.W #n,Rdst

RLAM.W

0

0

0

0

n–1

1

0

0

1

0

1

dst

RLAM.W #n,Rdst

RRUM.W

0

0

0

0

n–1

1

1

0

1

0

1

dst

RRUM.W #n,Rdst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX 157

Instruction Set Description
Instruction

www.ti.com
Instruction Identifier

15

dst

12

11

8

7

6

5

4

3

RETI

0

0

0

1

0

0

1

1

0

0

0

0

0

0

CALLA

0

0

0

1

0

0

1

1

0

1

0

0

dst

CALLA Rdst

0

0

0

1

0

0

1

1

0

1

0

1

dst

CALLA x(Rdst)

0

0

0

x.15:0
0

0

0

1

0

0

1

1

0

1

1

0

dst

CALLA @Rdst

0

0

0

1

0

0

1

1

0

1

1

1

dst

CALLA @Rdst+

0

0

0

1

0

0

1

1

1

0

0

0

&abs.19:16

CALLA &abs20

0

0

1

x.19:16

&abs.15:0
0

0

0

1

0

0

1

1

1

CALLA EDE
CALLA x(PC)

x.15:0
0

0

0

1

0

0

1

1

1

0

1

1

CALLA #imm20

imm.19:16

imm.15:0
Reserved

0

0

0

1

0

0

1

1

1

0

1

0

x

x

Reserved

0

0

0

1

0

0

1

1

1

1

x

x

x

x

PUSHM.A

0

0

0

1

0

1

0

0

n–1

PUSHM.W

0

0

0

1

0

1

0

1

POPM.A

0

0

0

1

0

1

1

0

POPM.W

0

0

0

1

0

1

1

1

158

CPUX

x

x

x

x

dst

PUSHM.A #n,Rdst

n–1

dst

PUSHM.W #n,Rdst

n–1

dst – n + 1

POPM.A #n,Rdst

n–1

dst – n + 1

POPM.W #n,Rdst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2 MSP430 Instructions
The MSP430 instructions are listed and described on the following pages.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

159

Instruction Set Description

4.6.2.1

www.ti.com

ADC
* ADC[.W]
* ADC.B
Syntax

Add carry to destination
Add carry to destination
ADC dst or
ADC.W dst
ADC.B dst

Operation
Emulation

dst + C → dst
ADDC #0,dst
ADDC.B #0,dst

Description
Status Bits

Mode Bits
Example
ADD
ADC

Example
ADD.B
ADC.B

160

CPUX

The carry bit (C) is added to the destination operand. The previous contents of the
destination are lost.
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Set if dst was incremented from 0FFFFh to 0000, reset otherwise
Set if dst was incremented from 0FFh to 00, reset otherwise
V: Set if an arithmetic overflow occurs, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
The 16-bit counter pointed to by R13 is added to a 32-bit counter pointed to by R12.
@R13,0(R12)
2(R12)

; Add LSDs
; Add carry to MSD

The 8-bit counter pointed to by R13 is added to a 16-bit counter pointed to by R12.
@R13,0(R12)
1(R12)

; Add LSDs
; Add carry to MSD

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.2

ADD
ADD[.W]
ADD.B
Syntax

Add source word to destination word
Add source byte to destination byte
ADD src,dst or ADD.W src,dst
ADD.B src,dst

Operation
Description
Status Bits

Mode Bits
Example
ADD.W

Example

ADD.W
JC
...

Example

ADD.B
JNC
...

src + dst → dst
The source operand is added to the destination operand. The previous content of the
destination is lost.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Ten is added to the 16-bit counter CNTR located in lower 64 K.
#10,&CNTR

; Add 10 to 16-bit counter

A table word pointed to by R5 (20-bit address in R5) is added to R6. The jump to label
TONI is performed on a carry.
@R5,R6
TONI

; Add table word to R6. R6.19:16 = 0
; Jump if carry
; No carry

A table byte pointed to by R5 (20-bit address) is added to R6. The jump to label TONI is
performed if no carry occurs. The table pointer is auto-incremented by 1. R6.19:8 = 0
@R5+,R6
TONI

; Add byte to R6. R5 + 1. R6: 000xxh
; Jump if no carry
; Carry occurred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

161

Instruction Set Description

4.6.2.3

www.ti.com

ADDC
ADDC[.W]
ADDC.B
Syntax

Add source word and carry to destination word
Add source byte and carry to destination byte
ADDC src,dst or ADDC.W src,dst
ADDC.B src,dst

Operation
Description
Status Bits

Mode Bits
Example

ADDC.W

Example

ADDC.W
JC
...

Example

ADDC.B
JNC
...

162

CPUX

src + dst + C → dst
The source operand and the carry bit C are added to the destination operand. The
previous content of the destination is lost.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Constant value 15 and the carry of the previous instruction are added to the 16-bit
counter CNTR located in lower 64 K.
#15,&CNTR

; Add 15 + C to 16-bit CNTR

A table word pointed to by R5 (20-bit address) and the carry C are added to R6. The
jump to label TONI is performed on a carry. R6.19:16 = 0
@R5,R6
TONI

; Add table word + C to R6
; Jump if carry
; No carry

A table byte pointed to by R5 (20-bit address) and the carry bit C are added to R6. The
jump to label TONI is performed if no carry occurs. The table pointer is auto-incremented
by 1. R6.19:8 = 0
@R5+,R6
TONI

; Add table byte + C to R6. R5 + 1
; Jump if no carry
; Carry occurred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.4

AND
AND[.W]
AND.B
Syntax

Logical AND of source word with destination word
Logical AND of source byte with destination byte
AND src,dst or AND.W src,dst
AND.B src,dst

Operation
Description
Status Bits

Mode Bits
Example

MOV
AND
JZ
...

src .and. dst → dst
The source operand and the destination operand are logically ANDed. The result is
placed into the destination. The source operand is not affected.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if the result is not zero, reset otherwise. C = (.not. Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The bits set in R5 (16-bit data) are used as a mask (AA55h) for the word TOM located in
the lower 64 K. If the result is zero, a branch is taken to label TONI. R5.19:16 = 0
#AA55h,R5
R5,&TOM
TONI

;
;
;
;

Load 16-bit mask to R5
TOM .and. R5 -> TOM
Jump if result 0
Result > 0

or shorter:
AND
JZ

Example

AND.B

#AA55h,&TOM
TONI

; TOM .and. AA55h -> TOM
; Jump if result 0

A table byte pointed to by R5 (20-bit address) is logically ANDed with R6. R5 is
incremented by 1 after the fetching of the byte. R6.19:8 = 0
@R5+,R6

; AND table byte with R6. R5 + 1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

163

Instruction Set Description

4.6.2.5

www.ti.com

BIC
BIC[.W]
BIC.B
Syntax

Clear bits set in source word in destination word
Clear bits set in source byte in destination byte
BIC src,dst or BIC.W src,dst
BIC.B src,dst

Operation
Description
Status Bits

Mode Bits
Example
BIC

Example
BIC.W

Example
BIC.B

164

CPUX

(.not. src) .and. dst → dst
The inverted source operand and the destination operand are logically ANDed. The
result is placed into the destination. The source operand is not affected.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
The bits 15:14 of R5 (16-bit data) are cleared. R5.19:16 = 0
#0C000h,R5

; Clear R5.19:14 bits

A table word pointed to by R5 (20-bit address) is used to clear bits in R7. R7.19:16 = 0
@R5,R7

; Clear bits in R7 set in @R5

A table byte pointed to by R5 (20-bit address) is used to clear bits in Port1.
@R5,&P1OUT

; Clear I/O port P1 bits set in @R5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.6

BIS
BIS[.W]
BIS.B
Syntax

Set bits set in source word in destination word
Set bits set in source byte in destination byte
BIS src,dst or BIS.W src,dst
BIS.B src,dst

Operation
Description
Status Bits

Mode Bits
Example
BIS

Example
BIS.W

Example

BIS.B

src .or. dst → dst
The source operand and the destination operand are logically ORed. The result is placed
into the destination. The source operand is not affected.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Bits 15 and 13 of R5 (16-bit data) are set to one. R5.19:16 = 0
#A000h,R5

; Set R5 bits

A table word pointed to by R5 (20-bit address) is used to set bits in R7. R7.19:16 = 0
@R5,R7

; Set bits in R7

A table byte pointed to by R5 (20-bit address) is used to set bits in Port1. R5 is
incremented by 1 afterwards.
@R5+,&P1OUT

; Set I/O port P1 bits. R5 + 1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

165

Instruction Set Description

4.6.2.7

www.ti.com

BIT
BIT[.W]
BIT.B
Syntax

Test bits set in source word in destination word
Test bits set in source byte in destination byte
BIT src,dst or BIT.W src,dst
BIT.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

BIT
JNZ
...

Example

BIT.W
JC
...

Example

BIT.B
JNC
...

166

CPUX

src .and. dst
The source operand and the destination operand are logically ANDed. The result affects
only the status bits in SR.
Register mode: the register bits Rdst.19:16 (.W) resp. Rdst. 19:8 (.B) are not cleared!
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if the result is not zero, reset otherwise. C = (.not. Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
Test if one (or both) of bits 15 and 14 of R5 (16-bit data) is set. Jump to label TONI if this
is the case. R5.19:16 are not affected.
#C000h,R5
TONI

; Test R5.15:14 bits
; At least one bit is set in R5
; Both bits are reset

A table word pointed to by R5 (20-bit address) is used to test bits in R7. Jump to label
TONI if at least one bit is set. R7.19:16 are not affected.
@R5,R7
TONI

; Test bits in R7
; At least one bit is set
; Both are reset

A table byte pointed to by R5 (20-bit address) is used to test bits in output Port1. Jump
to label TONI if no bit is set. The next table byte is addressed.
@R5+,&P1OUT
TONI

; Test I/O port P1 bits. R5 + 1
; No corresponding bit is set
; At least one bit is set

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.8

BR, BRANCH
* BR,
BRANCH
Syntax
Operation
Emulation
Description

Status Bits
Example

Branch to destination in lower 64K address space
BR dst

dst → PC
MOV dst,PC

An unconditional branch is taken to an address anywhere in the lower 64K address
space. All source addressing modes can be used. The branch instruction is a word
instruction.
Status bits are not affected.
Examples for all addressing modes are given.

BR

#EXEC

; Branch to label EXEC or direct branch (for example #0A4h)
; Core instruction MOV @PC+,PC

BR

EXEC

; Branch to the address contained in EXEC
; Core instruction MOV X(PC),PC
; Indirect address

BR

&EXEC

;
;
;
;

BR

R5

; Branch to the address contained in R5
; Core instruction MOV R5,PC
; Indirect R5

BR

@R5

;
;
;
;

Branch to the address contained in the word
pointed to by R5.
Core instruction MOV @R5,PC
Indirect, indirect R5

BR

@R5+

;
;
;
;
;
;
;

Branch to the address contained in the word pointed
to by R5 and increment pointer in R5 afterwards.
The next time-S/W flow uses R5 pointer-it can
alter program execution due to access to
next address in a table pointed to by R5
Core instruction MOV @R5,PC
Indirect, indirect R5 with autoincrement

BR

X(R5)

;
;
;
;
;

Branch to the address contained in the address
pointed to by R5 + X (for example table with address
starting at X). X can be an address or a label
Core instruction MOV X(R5),PC
Indirect, indirect R5 + X

Branch to the address contained in absolute
address EXEC
Core instruction MOV X(0),PC
Indirect address

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

167

Instruction Set Description

4.6.2.9

www.ti.com

CALL
CALL
Syntax
Operation

Description

Status Bits
Mode Bits
Examples

CALL
CALL

Call a subroutine in lower 64 K
CALL dst

dst → tmp 16-bit dst is evaluated and stored
SP – 2 → SP
PC → @SP updated PC with return address to TOS
tmp → PC saved 16-bit dst to PC
A subroutine call is made from an address in the lower 64 K to a subroutine address in
the lower 64 K. All seven source addressing modes can be used. The call instruction is a
word instruction. The return is made with the RET instruction.
Status bits are not affected.
PC.19:16 cleared (address in lower 64 K)
OSCOFF, CPUOFF, and GIE are not affected.
Examples for all addressing modes are given.
Immediate Mode: Call a subroutine at label EXEC (lower 64 K) or call directly to address.
#EXEC
#0AA04h

; Start address EXEC
; Start address 0AA04h

Symbolic Mode: Call a subroutine at the 16-bit address contained in address EXEC.
EXEC is located at the address (PC + X) where X is within PC ± 32 K.
CALL

EXEC

; Start address at @EXEC. z16(PC)

Absolute Mode: Call a subroutine at the 16-bit address contained in absolute address
EXEC in the lower 64 K.
CALL

&EXEC

; Start address at @EXEC

Register mode: Call a subroutine at the 16-bit address contained in register R5.15:0.
CALL

R5

; Start address at R5

Indirect Mode: Call a subroutine at the 16-bit address contained in the word pointed to by
register R5 (20-bit address).
CALL

168

CPUX

@R5

; Start address at @R5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.10 CLR
* CLR[.W]
* CLR.B
Syntax

Clear destination
Clear destination
CLR dst or
CLR.W dst
CLR.B dst

Operation

0 → dst

Emulation

MOV #0,dst
MOV.B #0,dst

Description
Status Bits
Example
CLR

Example
CLR

Example
CLR.B

The destination operand is cleared.
Status bits are not affected.
RAM word TONI is cleared.
TONI

; 0 -> TONI

Register R5 is cleared.
R5

RAM byte TONI is cleared.
TONI

; 0 -> TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

169

Instruction Set Description

www.ti.com

4.6.2.11 CLRC
* CLRC
Syntax
Operation

Clear carry bit

Emulation
Description
Status Bits

BIC #1,SR

Mode Bits
Example

CLRC
DADD
DADC

170

CPUX

CLRC

0→C
The carry bit (C) is cleared. The clear carry instruction is a word instruction.
N: Not affected
Z: Not affected
C: Cleared
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
The 16-bit decimal counter pointed to by R13 is added to a 32-bit counter pointed to by
R12.

@R13,0(R12)
2(R12)

; C=0: defines start
; add 16-bit counter to low word of 32-bit counter
; add carry to high word of 32-bit counter

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.12 CLRN
* CLRN
Syntax
Operation

Clear negative bit

Emulation
Description

BIC #4,SR

Status Bits

Mode Bits
Example

SUBR

SUBRET

CLRN

0→N
or
(.NOT.src .AND. dst → dst)
The constant 04h is inverted (0FFFBh) and is logically ANDed with the destination
operand. The result is placed into the destination. The clear negative bit instruction is a
word instruction.
N: Reset to 0
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
The negative bit in the SR is cleared. This avoids special treatment with negative
numbers of the subroutine called.
CLRN
CALL
SUBR
......
......
JN
SUBRET
......
......
......
RET

; If input is negative: do nothing and return

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

171

Instruction Set Description

www.ti.com

4.6.2.13 CLRZ
* CLRZ
Syntax
Operation

Clear zero bit

Emulation
Description

BIC #2,SR

Status Bits

Mode Bits
Example

CLRZ

0→Z
or
(.NOT.src .AND. dst → dst)
The constant 02h is inverted (0FFFDh) and logically ANDed with the destination
operand. The result is placed into the destination. The clear zero bit instruction is a word
instruction.
N: Not affected
Z: Reset to 0
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
The zero bit in the SR is cleared.

CLRZ

Indirect, Auto-Increment mode: Call a subroutine at the 16-bit address contained in the
word pointed to by register R5 (20-bit address) and increment the 16-bit address in R5
afterwards by 2. The next time the software uses R5 as a pointer, it can alter the
program execution due to access to the next word address in the table pointed to by R5.
CALL

@R5+

; Start address at @R5. R5 + 2

Indexed mode: Call a subroutine at the 16-bit address contained in the 20-bit address
pointed to by register (R5 + X); for example, a table with addresses starting at X. The
address is within the lower 64KB. X is within ±32KB.
CALL

172

CPUX

X(R5)

; Start address at @(R5+X). z16(R5)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.14 CMP
CMP[.W]
CMP.B
Syntax

Compare source word and destination word
Compare source byte and destination byte
CMP src,dst or CMP.W src,dst
CMP.B src,dst

Operation

(.not.src) + 1 + dst
or
dst – src

Emulation
Description

BIC #2,SR

Status Bits

Mode Bits
Example

CMP
JEQ
...

Example

CMP.W
JL
...

Example

CMP.B
JEQ
...

The source operand is subtracted from the destination operand. This is made by adding
the 1s complement of the source + 1 to the destination. The result affects only the status
bits in SR.
Register mode: the register bits Rdst.19:16 (.W) resp. Rdst. 19:8 (.B) are not cleared.
N: Set if result is negative (src > dst), reset if positive (src = dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow).
OSCOFF, CPUOFF, and GIE are not affected.
Compare word EDE with a 16-bit constant 1800h. Jump to label TONI if EDE equals the
constant. The address of EDE is within PC + 32 K.
#01800h,EDE
TONI

; Compare word EDE with 1800h
; EDE contains 1800h
; Not equal

A table word pointed to by (R5 + 10) is compared with R7. Jump to label TONI if R7
contains a lower, signed 16-bit number. R7.19:16 is not cleared. The address of the
source operand is a 20-bit address in full memory range.
10(R5),R7
TONI

; Compare two signed numbers
; R7 < 10(R5)
; R7 >= 10(R5)

A table byte pointed to by R5 (20-bit address) is compared to the value in output Port1.
Jump to label TONI if values are equal. The next table byte is addressed.
@R5+,&P1OUT
TONI

; Compare P1 bits with table. R5 + 1
; Equal contents
; Not equal

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

173

Instruction Set Description

www.ti.com

4.6.2.15 DADC
* DADC[.W]
* DADC.B
Syntax

Add carry decimally to destination
Add carry decimally to destination
DADC dst or
DADC.W dst
DADC.B dst

Operation
Emulation

dst + C → dst (decimally)
DADD #0,dst
DADD.B #0,dst

Description
Status Bits

Mode Bits
Example

The
N:
Z:
C:

carry bit (C) is added decimally to the destination.
Set if MSB is 1
Set if dst is 0, reset otherwise
Set if destination increments from 9999 to 0000, reset otherwise
Set if destination increments from 99 to 00, reset otherwise
V: Undefined
OSCOFF, CPUOFF, and GIE are not affected.
The four-digit decimal number contained in R5 is added to an eight-digit decimal number
pointed to by R8.

CLRC
DADD
DADC

Example

R5,0(R8)
2(R8)

174

CPUX

Reset carry
next instruction's start condition is defined
Add LSDs + C
Add carry to MSD

The two-digit decimal number contained in R5 is added to a four-digit decimal number
pointed to by R8.

CLRC
DADD.B
DADC

;
;
;
;

R5,0(R8)
1(R8)

;
;
;
;

Reset carry
next instruction's start condition is defined
Add LSDs + C
Add carry to MSDs

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.16 DADD
* DADD[.W]
* DADD.B
Syntax

Add source word and carry decimally to destination word
Add source byte and carry decimally to destination byte
DADD src,dst or DADD.W src,dst
DADD.B src,dst

Operation
Description

Status Bits

Mode Bits
Example
DADD

Example

CLRC
DADD.W
DADD.W
JC
...

Example

CLRC
DADD.B

src + dst + C → dst (decimally)
The source operand and the destination operand are treated as two (.B) or four (.W)
binary coded decimals (BCD) with positive signs. The source operand and the carry bit C
are added decimally to the destination operand. The source operand is not affected. The
previous content of the destination is lost. The result is not defined for non-BCD
numbers.
N: Set if MSB of result is 1 (word > 7999h, byte > 79h), reset if MSB is 0
Z: Set if result is zero, reset otherwise
C: Set if the BCD result is too large (word > 9999h, byte > 99h), reset otherwise
V: Undefined
OSCOFF, CPUOFF, and GIE are not affected.
Decimal 10 is added to the 16-bit BCD counter DECCNTR.
#10h,&DECCNTR

; Add 10 to 4-digit BCD counter

The eight-digit BCD number contained in 16-bit RAM addresses BCD and BCD+2 is
added decimally to an eight-digit BCD number contained in R4 and R5 (BCD+2 and R5
contain the MSDs). The carry C is added, and cleared.

&BCD,R4
&BCD+2,R5
OVERFLOW

;
;
;
;
;

Clear carry
Add LSDs. R4.19:16 = 0
Add MSDs with carry. R5.19:16 = 0
Result >9999,9999: go to error routine
Result ok

The two-digit BCD number contained in word BCD (16-bit address) is added decimally to
a two-digit BCD number contained in R4. The carry C is added, also. R4.19:8 = 0

&BCD,R4

; Clear carry
; Add BCD to R4 decimally.
R4: 0,00ddh

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

175

Instruction Set Description

www.ti.com

4.6.2.17 DEC
* DEC[.W]
* DEC.B
Syntax

Decrement destination
Decrement destination
DEC dst or
DEC.W dst
DEC.B dst

Operation
Emulation

dst – 1 → dst
SUB #1,dst
SUB.B #1,dst

Description
Status Bits

Mode Bits
Example

The
N:
Z:
C:
V:

destination operand is decremented by one. The original contents are lost.
Set if result is negative, reset if positive
Set if dst contained 1, reset otherwise
Reset if dst contained 0, set otherwise
Set if an arithmetic overflow occurs, otherwise reset.
Set if initial value of destination was 08000h, otherwise reset.
Set if initial value of destination was 080h, otherwise reset.
OSCOFF, CPUOFF, and GIE are not affected.
R10 is decremented by 1.
DEC

R10

; Decrement R10

; Move a block of 255 bytes from memory location starting with EDE to
; memory location starting with TONI. Tables should not overlap: start of
; destination address TONI must not be within the range EDE to EDE+0FEh

L$1

MOV
MOV
MOV.B
DEC
JNZ

#EDE,R6
#255,R10
@R6+,TONI-EDE-1(R6)
R10
L$1

Do not transfer tables using the routine above with the overlap shown in Figure 4-36.
EDE

TONI
EDE+254

TONI+254

Figure 4-36. Decrement Overlap

176

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.18 DECD
* DECD[.W]
* DECD.B
Syntax

Double-decrement destination
Double-decrement destination
DECD dst or
DECD.W dst
DECD.B dst

Operation
Emulation

dst – 2 → dst
SUB #2,dst
SUB.B #2,dst

Description
Status Bits

Mode Bits
Example

The
N:
Z:
C:
V:

destination operand is decremented by two. The original contents are lost.
Set if result is negative, reset if positive
Set if dst contained 2, reset otherwise
Reset if dst contained 0 or 1, set otherwise
Set if an arithmetic overflow occurs, otherwise reset
Set if initial value of destination was 08001 or 08000h, otherwise reset
Set if initial value of destination was 081 or 080h, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
R10 is decremented by 2.
DECD

;
;
;
;

R10

; Decrement R10 by two

Move a block of 255 bytes from memory location starting with EDE to
memory location starting with TONI.
Tables should not overlap: start of destination address TONI must not
be within the range EDE to EDE+0FEh

L$1

Example

MOV
MOV
MOV.B
DECD
JNZ

#EDE,R6
#255,R10
@R6+,TONI-EDE-2(R6)
R10
L$1

Memory at location LEO is decremented by two.
DECD.B

LEO

; Decrement MEM(LEO)

Decrement status byte STATUS by two
DECD.B

STATUS

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

177

Instruction Set Description

www.ti.com

4.6.2.19 DINT
* DINT
Syntax
Operation

Disable (general) interrupts

Emulation
Description

BIC #8,SR

DINT

0 → GIE
or
(0FFF7h .AND. SR → SR / .NOT.src .AND. dst → dst)

Status Bits
Mode Bits
Example

DINT
NOP
MOV
MOV
EINT

All interrupts are disabled.
The constant 08h is inverted and logically ANDed with the SR. The result is placed into
the SR.
Status bits are not affected.
GIE is reset. OSCOFF and CPUOFF are not affected.
The general interrupt enable (GIE) bit in the SR is cleared to allow a nondisrupted move
of a 32-bit counter. This ensures that the counter is not modified during the move by any
interrupt.
; All interrupt events using the GIE bit are disabled
COUNTHI,R5
COUNTLO,R6

; Copy counter
; All interrupt events using the GIE bit are enabled

NOTE: Disable interrupt
If any code sequence needs to be protected from interruption, DINT should be executed at
least one instruction before the beginning of the uninterruptible sequence, or it should be
followed by a NOP instruction.

NOTE: Enable and Disable Interrupt
Due to the pipelined CPU architecture, the instruction following the enable interrupt
instruction (EINT) is always executed, even if an interrupt service request is pending when
the interrupts are enabled.
If the enable interrupt instruction (EINT) is immediately followed by a disable interrupt
instruction (DINT), a pending interrupt might not be serviced. Further instructions after DINT
might execute incorrectly and result in unexpected CPU execution. It is recommended to
always insert at least one instruction between EINT and DINT. Note that any alternative
instruction use that sets and immediately clears the CPU status register GIE bit must be
considered in the same fashion.

178

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.20 EINT
* EINT
Syntax
Operation

Enable (general) interrupts

Emulation
Description

BIS #8,SR

EINT

1 → GIE
or
(0008h .OR. SR → SR / .src .OR. dst → dst)

Status Bits
Mode Bits
Example

All interrupts are enabled.
The constant #08h and the SR are logically ORed. The result is placed into the SR.
Status bits are not affected.
GIE is set. OSCOFF and CPUOFF are not affected.
The general interrupt enable (GIE) bit in the SR is set.
PUSH.B
BIC.B
EINT

MaskOK

&P1IN
@SP,&P1IFG

BIT
#Mask,@SP
JEQ
MaskOK
......
BIC
#Mask,@SP
......
INCD
SP

; Reset only accepted flags
; Preset port 1 interrupt flags stored on stack
; other interrupts are allowed
; Flags are present identically to mask: jump

; Housekeeping: inverse to PUSH instruction
; at the start of interrupt subroutine. Corrects
; the stack pointer.

RETI
NOTE: Enable and Disable Interrupt
Due to the pipelined CPU architecture, the instruction following the enable interrupt
instruction (EINT) is always executed, even if an interrupt service request is pending when
the interrupts are enabled.
If the enable interrupt instruction (EINT) is immediately followed by a disable interrupt
instruction (DINT), a pending interrupt might not be serviced. Further instructions after DINT
might execute incorrectly and result in unexpected CPU execution. It is recommended to
always insert at least one instruction between EINT and DINT. Note that any alternative
instruction use that sets and immediately clears the CPU status register GIE bit must be
considered in the same fashion.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

179

Instruction Set Description

www.ti.com

4.6.2.21 INC
* INC[.W]
* INC.B
Syntax

Increment destination
Increment destination
INC dst or
INC.W dst
INC.B dst

Operation
Emulation
Description
Status Bits

Mode Bits
Example

INC.B
CMP.B
JEQ

180

CPUX

dst + 1 → dst
ADD #1,dst

The destination operand is incremented by one. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
C: Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
V: Set if dst contained 07FFFh, reset otherwise
Set if dst contained 07Fh, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The status byte, STATUS, of a process is incremented. When it is equal to 11, a branch
to OVFL is taken.
STATUS
#11,STATUS
OVFL

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.22 INCD
* INCD[.W]
* INCD.B
Syntax

Double-increment destination
Double-increment destination
INCD dst or
INCD.W dst
INCD.B dst

Operation
Emulation
Description
Status Bits

Mode Bits
Example

dst + 2 → dst
ADD #2,dst

The destination operand is incremented by two. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFEh, reset otherwise
Set if dst contained 0FEh, reset otherwise
C: Set if dst contained 0FFFEh or 0FFFFh, reset otherwise
Set if dst contained 0FEh or 0FFh, reset otherwise
V: Set if dst contained 07FFEh or 07FFFh, reset otherwise
Set if dst contained 07Eh or 07Fh, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The item on the top of the stack (TOS) is removed without using a register.

.......
PUSH
R5
INCD

SP

;
;
;
;

R5 is the result of a calculation, which is stored
in the system stack
Remove TOS by double-increment from stack
Do not use INCD.B, SP is a word-aligned register

RET

Example
INCD.B

The byte on the top of the stack is incremented by two.
0(SP)

; Byte on TOS is increment by two

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

181

Instruction Set Description

www.ti.com

4.6.2.23 INV
* INV[.W]
* INV.B
Syntax

Invert destination
Invert destination
INV dst or
INV.W dst
INV.B dst

Operation
Emulation

.not.dst → dst
XOR #0FFFFh,dst
XOR.B #0FFh,dst

Description
Status Bits

Mode Bits
Example
MOV
INV
INC

Example
MOV.B
INV.B
INC.B

182

CPUX

The destination operand is inverted. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
C: Set if result is not zero, reset otherwise ( = .NOT. Zero)
V: Set if initial destination operand was negative, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
Content of R5 is negated (2s complement).
#00AEh,R5
R5
R5

;
; Invert R5,
; R5 is now negated,

R5 = 000AEh
R5 = 0FF51h
R5 = 0FF52h

Content of memory byte LEO is negated.
#0AEh,LEO
LEO
LEO

;
MEM(LEO) = 0AEh
; Invert LEO,
MEM(LEO) = 051h
; MEM(LEO) is negated, MEM(LEO) = 052h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.24 JC, JHS
JC
JHS
Syntax

Jump if carry
Jump if higher or same (unsigned)
JC label
JHS label

Operation

If C = 1: PC + (2 × Offset) → PC
If C = 0: execute the following instruction

Description

The carry bit C in the SR is tested. If it is set, the signed 10-bit word offset contained in
the instruction is multiplied by two, sign extended, and added to the 20-bit PC. This
means a jump in the range –511 to +512 words relative to the PC in the full memory
range. If C is reset, the instruction after the jump is executed.
JC is used for the test of the carry bit C.
JHS is used for the comparison of unsigned numbers.
Status bits are not affected
OSCOFF, CPUOFF, and GIE are not affected.
The state of the port 1 pin P1IN.1 bit defines the program flow.

Status Bits
Mode Bits
Example
BIT.B
JC
...

Example
CMP
JHS
...

Example
CMPA
JHS
...

#2,&P1IN
Label1

; Port 1, bit 1 set? Bit -> C
; Yes, proceed at Label1
; No, continue

If R5 ≥ R6 (unsigned), the program continues at Label2.
R6,R 5
Label2

; Is R5 >= R6? Info to C
; Yes, C = 1
; No, R5 < R6. Continue

If R5 ≥ 12345h (unsigned operands), the program continues at Label2.
#12345h,R5
Label2

; Is R5 >= 12345h? Info to C
; Yes, 12344h < R5 <= F,FFFFh. C = 1
; No, R5 < 12345h. Continue

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

183

Instruction Set Description

www.ti.com

4.6.2.25 JEQ, JZ
JEQ
JZ
Syntax

Jump if equal
Jump if zero
JEQ label
JZ label

Operation

If Z = 1: PC + (2 × Offset) → PC
If Z = 0: execute following instruction

Description

The zero bit Z in the SR is tested. If it is set, the signed 10-bit word offset contained in
the instruction is multiplied by two, sign extended, and added to the 20-bit PC. This
means a jump in the range –511 to +512 words relative to the PC in the full memory
range. If Z is reset, the instruction after the jump is executed.
JZ is used for the test of the zero bit Z.
JEQ is used for the comparison of operands.
Status bits are not affected
OSCOFF, CPUOFF, and GIE are not affected.
The state of the P2IN.0 bit defines the program flow.

Status Bits
Mode Bits
Example
BIT.B
JZ
...

Example
CMPA
JEQ
...

Example

ADDA
JZ
...

184

CPUX

#1,&P2IN
Label1

; Port 2, bit 0 reset?
; Yes, proceed at Label1
; No, set, continue

If R5 = 15000h (20-bit data), the program continues at Label2.
#15000h,R5
Label2

; Is R5 = 15000h? Info to SR
; Yes, R5 = 15000h. Z = 1
; No, R5 not equal 15000h. Continue

R7 (20-bit counter) is incremented. If its content is zero, the program continues at
Label4.
#1,R7
Label4

; Increment R7
; Zero reached: Go to Label4
; R7 not equal 0. Continue here.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.26 JGE
JGE
Syntax
Operation

Jump if greater or equal (signed)

Description

The negative bit N and the overflow bit V in the SR are tested. If both bits are set or both
are reset, the signed 10-bit word offset contained in the instruction is multiplied by two,
sign extended, and added to the 20-bit PC. This means a jump in the range -511 to +512
words relative to the PC in full Memory range. If only one bit is set, the instruction after
the jump is executed.
JGE is used for the comparison of signed operands: also for incorrect results due to
overflow, the decision made by the JGE instruction is correct.
Note that JGE emulates the nonimplemented JP (jump if positive) instruction if used after
the instructions AND, BIT, RRA, SXTX, and TST. These instructions clear the V bit.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
If byte EDE (lower 64 K) contains positive data, go to Label1. Software can run in the full
memory range.

Status Bits
Mode Bits
Example

TST.B
JGE
...

Example

CMP
JGE
...

Example

CMPA
JGE
...

JGE label

If (N .xor. V) = 0: PC + (2 × Offset) → PC
If (N .xor. V) = 1: execute following instruction

&EDE
Label1

; Is EDE positive? V <- 0
; Yes, JGE emulates JP
; No, 80h <= EDE <= FFh

If the content of R6 is greater than or equal to the memory pointed to by R7, the program
continues a Label5. Signed data. Data and program in full memory range.
@R7,R6
Label5

; Is R6 >= @R7?
; Yes, go to Label5
; No, continue here

If R5 ≥ 12345h (signed operands), the program continues at Label2. Program in full
memory range.
#12345h,R5
Label2

; Is R5 >= 12345h?
; Yes, 12344h < R5 <= 7FFFFh
; No, 80000h <= R5 < 12345h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

185

Instruction Set Description

www.ti.com

4.6.2.27 JL
JL
Syntax
Operation

Jump if less (signed)

Description

The negative bit N and the overflow bit V in the SR are tested. If only one is set, the
signed 10-bit word offset contained in the instruction is multiplied by two, sign extended,
and added to the 20-bit PC. This means a jump in the range –511 to +512 words relative
to the PC in full memory range. If both bits N and V are set or both are reset, the
instruction after the jump is executed.
JL is used for the comparison of signed operands: also for incorrect results due to
overflow, the decision made by the JL instruction is correct.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
If byte EDE contains a smaller, signed operand than byte TONI, continue at Label1. The
address EDE is within PC ± 32 K.

Status Bits
Mode Bits
Example

CMP.B
JL
...

Example

CMP
JL
...

Example

CMPA
JL
...

186

CPUX

JL label

If (N .xor. V) = 1: PC + (2 × Offset) → PC
If (N .xor. V) = 0: execute following instruction

&TONI,EDE
Label1

; Is EDE < TONI
; Yes
; No, TONI <= EDE

If the signed content of R6 is less than the memory pointed to by R7 (20-bit address), the
program continues at Label5. Data and program in full memory range.
@R7,R6
Label5

; Is R6 < @R7?
; Yes, go to Label5
; No, continue here

If R5 < 12345h (signed operands), the program continues at Label2. Data and program
in full memory range.
#12345h,R5
Label2

; Is R5 < 12345h?
; Yes, 80000h =< R5 < 12345h
; No, 12344h < R5 <= 7FFFFh

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.28 JMP
JMP
Syntax
Operation
Description

Status Bits
Mode Bits
Example

MOV.B
JMP

Example

ADD
RETI
JMP
JMP
RETI

Jump unconditionally
JMP label

PC + (2 × Offset) → PC
The signed 10-bit word offset contained in the instruction is multiplied by two, sign
extended, and added to the 20-bit PC. This means an unconditional jump in the range
–511 to +512 words relative to the PC in the full memory. The JMP instruction may be
used as a BR or BRA instruction within its limited range relative to the PC.
Status bits are not affected
OSCOFF, CPUOFF, and GIE are not affected.
The byte STATUS is set to 10. Then a jump to label MAINLOOP is made. Data in lower
64 K, program in full memory range.
#10,&STATUS
MAINLOOP

; Set STATUS to 10
; Go to main loop

The interrupt vector TAIV of Timer_A3 is read and used for the program flow. Program in
full memory range, but interrupt handlers always starts in lower 64 K.
&TAIV,PC
IHCCR1
IHCCR2

;
;
;
;
;

Add Timer_A interrupt vector to PC
No Timer_A interrupt pending
Timer block 1 caused interrupt
Timer block 2 caused interrupt
No legal interrupt, return

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

187

Instruction Set Description

www.ti.com

4.6.2.29 JN
JN
Syntax
Operation
Description

Status Bits
Mode Bits
Example

TST.B
JN
...

Example

SUB
JN
...

Example

SUBA
JN
...

188

CPUX

Jump if negative
JN label

If N = 1: PC + (2 × Offset) → PC
If N = 0: execute following instruction
The negative bit N in the SR is tested. If it is set, the signed 10-bit word offset contained
in the instruction is multiplied by two, sign extended, and added to the 20-bit program
PC. This means a jump in the range -511 to +512 words relative to the PC in the full
memory range. If N is reset, the instruction after the jump is executed.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
The byte COUNT is tested. If it is negative, program execution continues at Label0. Data
in lower 64 K, program in full memory range.
&COUNT
Label0

; Is byte COUNT negative?
; Yes, proceed at Label0
; COUNT >= 0

R6 is subtracted from R5. If the result is negative, program continues at Label2. Program
in full memory range.
R6,R5
Label2

; R5 - R6 -> R5
; R5 is negative: R6 > R5 (N = 1)
; R5 >= 0. Continue here.

R7 (20-bit counter) is decremented. If its content is below zero, the program continues at
Label4. Program in full memory range.
#1,R7
Label4

; Decrement R7
; R7 < 0: Go to Label4
; R7 >= 0. Continue here.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.30 JNC, JLO
JNC
JLO
Syntax

Jump if no carry
Jump if lower (unsigned)
JNC label
JLO label

Operation

If C = 0: PC + (2 × Offset) → PC
If C = 1: execute following instruction

Description

The carry bit C in the SR is tested. If it is reset, the signed 10-bit word offset contained in
the instruction is multiplied by two, sign extended, and added to the 20-bit PC. This
means a jump in the range –511 to +512 words relative to the PC in the full memory
range. If C is set, the instruction after the jump is executed.
JNC is used for the test of the carry bit C.
JLO is used for the comparison of unsigned numbers.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
If byte EDE < 15, the program continues at Label2. Unsigned data. Data in lower 64 K,
program in full memory range.

Status Bits
Mode Bits
Example

CMP.B
JLO
...

Example

ADD
JNC
...

#15,&EDE
Label2

; Is EDE < 15? Info to C
; Yes, EDE < 15. C = 0
; No, EDE >= 15. Continue

The word TONI is added to R5. If no carry occurs, continue at Label0. The address of
TONI is within PC ± 32 K.
TONI,R5
Label0

; TONI + R5 -> R5. Carry -> C
; No carry
; Carry = 1: continue here

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

189

Instruction Set Description

www.ti.com

4.6.2.31 JNZ, JNE
JNZ
JNE
Syntax

Jump if not zero
Jump if not equal
JNZ label
JNE label

Operation

If Z = 0: PC + (2 × Offset) → PC
If Z = 1: execute following instruction

Description

The zero bit Z in the SR is tested. If it is reset, the signed 10-bit word offset contained in
the instruction is multiplied by two, sign extended, and added to the 20-bit PC. This
means a jump in the range –511 to +512 words relative to the PC in the full memory
range. If Z is set, the instruction after the jump is executed.
JNZ is used for the test of the zero bit Z.
JNE is used for the comparison of operands.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
The byte STATUS is tested. If it is not zero, the program continues at Label3. The
address of STATUS is within PC ± 32 K.

Status Bits
Mode Bits
Example

TST.B
JNZ
...

Example

CMP
JNE
...

Example

SUBA
JNZ
...

190

CPUX

STATUS
Label3

; Is STATUS = 0?
; No, proceed at Label3
; Yes, continue here

If word EDE ≠ 1500, the program continues at Label2. Data in lower 64 K, program in full
memory range.
#1500,&EDE
Label2

; Is EDE = 1500? Info to SR
; No, EDE not equal 1500.
; Yes, R5 = 1500. Continue

R7 (20-bit counter) is decremented. If its content is not zero, the program continues at
Label4. Program in full memory range.
#1,R7
Label4

; Decrement R7
; Zero not reached: Go to Label4
; Yes, R7 = 0. Continue here.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.32 MOV
MOV[.W]
MOV.B
Syntax

Move source word to destination word
Move source byte to destination byte
MOV src,dst or MOV.W src,dst
MOV.B src,dst

Operation
Description
Status Bits

Mode Bits
Example
MOV

Example

Loop

Example

Loop

src → dst
The source operand is copied to the destination. The source operand is not affected.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Move a 16-bit constant 1800h to absolute address-word EDE (lower 64 K)
#01800h,&EDE

; Move 1800h to EDE

The contents of table EDE (word data, 16-bit addresses) are copied to table TOM. The
length of the tables is 030h words. Both tables reside in the lower 64 K.
MOV
MOV

#EDE,R10
@R10+,TOM-EDE-2(R10)

CMP
JLO
...

#EDE+60h,R10
Loop

;
;
;
;
;
;

Prepare pointer (16-bit address)
R10 points to both tables.
R10+2
End of table reached?
Not yet
Copy completed

The contents of table EDE (byte data, 16-bit addresses) are copied to table TOM. The
length of the tables is 020h bytes. Both tables may reside in full memory range, but must
be within R10 ± 32 K.
MOVA
MOV
MOV.B

#EDE,R10
#20h,R9
@R10+,TOM-EDE-1(R10)

DEC
JNZ
...

R9
Loop

;
;
;
;
;
;
;

Prepare pointer (20-bit)
Prepare counter
R10 points to both tables.
R10+1
Decrement counter
Not yet done
Copy completed

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

191

Instruction Set Description

www.ti.com

4.6.2.33 NOP
* NOP
Syntax
Operation
Emulation
Description
Status Bits

192

CPUX

No operation
NOP

None
MOV #0, R3

No operation is performed. The instruction may be used for the elimination of instructions
during the software check or for defined waiting times.
Status bits are not affected.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.34 POP
* POP[.W]
* POP.B
Syntax

Pop word from stack to destination
Pop byte from stack to destination
POP dst
POP.B dst

Operation

@SP → temp
SP + 2 → SP
temp → dst

Emulation

MOV @SP+,dst or MOV.W @SP+,dst
MOV.B @SP+,dst

Description

The stack location pointed to by the SP (TOS) is moved to the destination. The SP is
incremented by two afterwards.
Status bits are not affected.
The contents of R7 and the SR are restored from the stack.

Status Bits
Example
POP
POP

R7
SR

Example

The contents of RAM byte LEO is restored from the stack.

POP.B

Example

LEO

; The low byte of the stack is moved to LEO.

The contents of R7 is restored from the stack.

POP.B

Example

R7

; The low byte of the stack is moved to R7,
; the high byte of R7 is 00h

The contents of the memory pointed to by R7 and the SR are restored from the stack.

POP.B

0(R7)

POP

SR

NOTE:

; Restore R7
; Restore status register

;
;
:
;
:
;
;

The low byte of the stack is moved to the
the byte which is pointed to by R7
Example:
R7 = 203h
Mem(R7) = low byte of system stack
Example:
R7 = 20Ah
Mem(R7) = low byte of system stack
Last word on stack moved to the SR

System stack pointer
The system SP is always incremented by two, independent of the byte suffix.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

193

Instruction Set Description

www.ti.com

4.6.2.35 PUSH
PUSH[.W]
PUSH.B
Syntax

Save a word on the stack
Save a byte on the stack
PUSH dst or
PUSH.W dst
PUSH.B dst

Operation
Description

Status Bits
Mode Bits
Example
PUSH
PUSH

Example

PUSH.B
PUSH.B

194

CPUX

SP – 2 → SP
dst → @SP
The 20-bit SP SP is decremented by two. The operand is then copied to the RAM word
addressed by the SP. A pushed byte is stored in the low byte; the high byte is not
affected.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
Save the two 16-bit registers R9 and R10 on the stack
R9
R10

; Save R9 and R10 XXXXh
; YYYYh

Save the two bytes EDE and TONI on the stack. The addresses EDE and TONI are
within PC ± 32 K.
EDE
TONI

; Save EDE
; Save TONI

xxXXh
xxYYh

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.36 RET
* RET
Syntax
Operation
Description

Status Bits
Mode Bits
Example

SUBR

Return from subroutine
RET

@SP →PC.15:0 Saved PC to PC.15:0.
PC.19:16 ← 0
SP + 2 → SP
The 16-bit return address (lower 64 K), pushed onto the stack by a CALL instruction is
restored to the PC. The program continues at the address following the subroutine call.
The four MSBs of the PC.19:16 are cleared.
Status bits are not affected.
PC.19:16: Cleared
OSCOFF, CPUOFF, and GIE are not affected.
Call a subroutine SUBR in the lower 64 K and return to the address in the lower 64 K
after the CALL.
CALL
...
PUSH
...
POP
RET

#SUBR

;
;
;
;
;
;

R14
R14

Call subroutine starting at SUBR
Return by RET to here
Save R14 (16 bit data)
Subroutine code
Restore R14
Return to lower 64 K

Item n
SP

SP

Item n

PCReturn

Stack before RET
instruction

Stack after RET
instruction

Figure 4-37. Stack After a RET Instruction

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

195

Instruction Set Description

www.ti.com

4.6.2.37 RETI
RETI
Syntax
Operation

Description

Status Bits

Mode Bits
Example
INTRPT

196

CPUX

Return from interrupt
RETI

@SP → SR.15:0
SP + 2 → SP
@SP → PC.15:0
SP + 2 → SP

Restore saved SR with PC.19:16
Restore saved PC.15:0
Housekeeping

The SR is restored to the value at the beginning of the interrupt service routine. This
includes the four MSBs of the PC.19:16. The SP is incremented by two afterward.
The 20-bit PC is restored from PC.19:16 (from same stack location as the status bits)
and PC.15:0. The 20-bit PC is restored to the value at the beginning of the interrupt
service routine. The program continues at the address following the last executed
instruction when the interrupt was granted. The SP is incremented by two afterward.
N: Restored from stack
C: Restored from stack
Z: Restored from stack
V: Restored from stack
OSCOFF, CPUOFF, and GIE are restored from stack.
Interrupt handler in the lower 64 K. A 20-bit return address is stored on the stack.
PUSHM.A
...
POPM.A
RETI

#2,R14
#2,R14

;
;
;
;

Save R14 and R13 (20-bit data)
Interrupt handler code
Restore R13 and R14 (20-bit data)
Return to 20-bit address in full memory range

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.38 RLA
* RLA[.W]
* RLA.B
Syntax

Rotate left arithmetically
Rotate left arithmetically
RLA dst or
RLA.W dst
RLA.B dst

Operation
Emulation

C ← MSB ← MSB-1 .... LSB+1 ← LSB ← 0
ADD dst,dst
ADD.B dst,dst

Description

The destination operand is shifted left one position as shown in Figure 4-38. The MSB is
shifted into the carry bit (C) and the LSB is filled with 0. The RLA instruction acts as a
signed multiplication by 2.
An overflow occurs if dst ≥ 04000h and dst < 0C000h before operation is performed; the
result has changed sign.
Word

15

0
0

C
Byte

7

0

Figure 4-38. Destination Operand—Arithmetic Shift Left

Status Bits

Mode Bits
Example
RLA

An overflow occurs if dst ≥ 040h and dst < 0C0h before the operation is performed; the
result has changed sign.
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Loaded from the MSB
V: Set if an arithmetic overflow occurs; the initial value is 04000h ≤ dst < 0C000h,
reset otherwise
Set if an arithmetic overflow occurs; the initial value is 040h ≤ dst < 0C0h, reset
otherwise
OSCOFF, CPUOFF, and GIE are not affected.
R7 is multiplied by 2.
R7

Example

; Shift left R7

(x 2)

The low byte of R7 is multiplied by 4.

RLA.B
RLA.B

R7
R7

; Shift left low byte of R7
; Shift left low byte of R7

(x 2)
(x 4)

NOTE: RLA substitution
The assembler does not recognize the instructions:
RLA

@R5+

RLA.B

@R5+

RLA(.B) @R5

@R5+,-1(R5)

ADD(.B) @R5

They must be substituted by:
ADD

@R5+,-2(R5)

ADD.B

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

197

Instruction Set Description

www.ti.com

4.6.2.39 RLC
* RLC[.W]
* RLC.B
Syntax

Rotate left through carry
Rotate left through carry
RLC dst or
RLC.W dst
RLC.B dst

C ← MSB ← MSB-1 .... LSB+1 ← LSB ← C

Operation
Emulation
Description

ADDC dst,dst

The destination operand is shifted left one position as shown in Figure 4-39. The carry bit
(C) is shifted into the LSB, and the MSB is shifted into the carry bit (C).
Word

15

0

7

0

C
Byte

Figure 4-39. Destination Operand—Carry Left Shift
Status Bits

N:
Z:
C:
V:

Set if result is negative, reset if positive
Set if result is zero, reset otherwise
Loaded from the MSB
Set if an arithmetic overflow occurs; the initial value is 04000h ≤ dst < 0C000h,
reset otherwise
Set if an arithmetic overflow occurs; the initial value is 040h ≤ dst < 0C0h, reset
otherwise
OSCOFF, CPUOFF, and GIE are not affected.
R5 is shifted left one position.

Mode Bits
Example
RLC

R5

Example

; (R5 x 2) + C -> R5

The input P1IN.1 information is shifted into the LSB of R5.

BIT.B
RLC

#2,&P1IN
R5

Example

; Information -> Carry
; Carry=P0in.1 -> LSB of R5

The MEM(LEO) content is shifted left one position.

RLC.B

LEO

; Mem(LEO) x 2 + C -> Mem(LEO)

NOTE: RLA substitution
The assembler does not recognize the instructions:
RLC

@R5+

RLC.B

@R5+

RLC(.B) @R5

They must be substituted by:
ADDC

198

CPUX

@R5+,-2(R5)

ADDC.B

@R5+,-1(R5)

ADDC(.B) @R5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.40 RRA
RRA[.W]
RRA.B
Syntax
Operation
Description

Rotate right arithmetically destination word
Rotate right arithmetically destination byte
RRA.B dst or
RRA.W dst
MSB → MSB → MSB–1 → ... LSB+1 → LSB → C
The destination operand is shifted right arithmetically by one bit position as shown in
Figure 4-40. The MSB retains its value (sign). RRA operates equal to a signed division
by 2. The MSB is retained and shifted into the MSB–1. The LSB+1 is shifted into the
LSB. The previous LSB is shifted into the carry bit C.
N: Set if result is negative (MSB = 1), reset otherwise (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The signed 16-bit number in R5 is shifted arithmetically right one position.

Status Bits

Mode Bits
Example
RRA

R5

Example
RRA.B

; R5/2 -> R5

The signed RAM byte EDE is shifted arithmetically right one position.
EDE

; EDE/2 -> EDE
19

C

0

15
0

0

0

19
C

0

0

0

0

0

0

0

0

0

0

0

0

7

0

MSB

LSB

15

0

MSB

LSB

Figure 4-40. Rotate Right Arithmetically RRA.B and RRA.W

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

199

Instruction Set Description

www.ti.com

4.6.2.41 RRC
RRC[.W]
RRC.B
Syntax

Rotate right through carry destination word
Rotate right through carry destination byte
RRC dst or
RRC.W dst
RRC.B dst

C → MSB → MSB–1 → ... LSB+1 → LSB → C
The destination operand is shifted right by one bit position as shown in Figure 4-41. The
carry bit C is shifted into the MSB and the LSB is shifted into the carry bit C.
N: Set if result is negative (MSB = 1), reset otherwise (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
RAM word EDE is shifted right one bit position. The MSB is loaded with 1.

Operation
Description
Status Bits

Mode Bits
Example
SETC
RRC

; Prepare carry for MSB
; EDE = EDE >> 1 + 8000h

EDE
19
C

0

15
0

0

0

19
C

0

0

0

0

0

0

0

0

0

0

0

0

7

0

MSB

LSB

15

0

MSB

LSB

Figure 4-41. Rotate Right Through Carry RRC.B and RRC.W

200

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.42 SBC
* SBC[.W]
* SBC.B
Syntax

Subtract borrow (.NOT. carry) from destination
Subtract borrow (.NOT. carry) from destination
SBC dst or
SBC.W dst
SBC.B dst

Operation

dst + 0FFFFh + C → dst
dst + 0FFh + C → dst

Emulation

SUBC #0,dst
SUBC.B #0,dst

Description
Status Bits

Mode Bits
Example

SUB
SBC

@R13,0(R12)
2(R12)

Example

; Subtract LSDs
; Subtract carry from MSD

The 8-bit counter pointed to by R13 is subtracted from a 16-bit counter pointed to by
R12.

SUB.B
SBC.B
NOTE:

The carry bit (C) is added to the destination operand minus one. The previous contents
of the destination are lost.
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
Set to 1 if no borrow, reset if borrow
V: Set if an arithmetic overflow occurs, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 16-bit counter pointed to by R13 is subtracted from a 32-bit counter pointed to by
R12.

@R13,0(R12)
1(R12)

; Subtract LSDs
; Subtract carry from MSD

Borrow implementation
The borrow is treated as a .NOT. carry:

Borrow
Yes
No

Carry Bit
0
1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

201

Instruction Set Description

www.ti.com

4.6.2.43 SETC
* SETC
Syntax
Operation
Emulation
Description
Status Bits

Mode Bits
Example

DSUB

202

CPUX

Set carry bit
SETC

1→C
BIS #1,SR

The carry bit (C) is set.
N: Not affected
Z: Not affected
C: Set
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Emulation of the decimal subtraction:
Subtract R5 from R6 decimally.
Assume that R5 = 03987h and R6 = 04137h.
ADD

#06666h,R5

INV

R5

SETC
DADD

R5,R6

;
;
;
;
;
;
;
;
;

Move content R5 from 0-9 to 6-0Fh
R5 = 03987h + 06666h = 09FEDh
Invert this (result back to 0-9)
R5 = .NOT. R5 = 06012h
Prepare carry = 1
Emulate subtraction by addition of:
(010000h - R5 - 1)
R6 = R6 + R5 + 1
R6 = 0150h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.44 SETN
* SETN
Syntax
Operation
Emulation
Description
Status Bits

Mode Bits

Set negative bit
SETN

1→N
BIS #4,SR

The negative bit (N) is set.
N: Set
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

203

Instruction Set Description

www.ti.com

4.6.2.45 SETZ
* SETZ
Syntax
Operation
Emulation
Description
Status Bits

Mode Bits

204

CPUX

Set zero bit
SETZ

1→N
BIS #2,SR

The zero bit (Z) is set.
N: Not affected
Z: Set
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.46 SUB
SUB[.W]
SUB.B
Syntax

Subtract source word from destination word
Subtract source byte from destination byte
SUB src,dst or SUB.W src,dst
SUB.B src,dst

Operation
Description

Status Bits

Mode Bits
Example
SUB

Example

SUB
JZ
...

Example

SUB.B

(.not.src) + 1 + dst → dst or dst – src → dst
The source operand is subtracted from the destination operand. This is made by adding
the 1s complement of the source + 1 to the destination. The source operand is not
affected, the result is written to the destination operand.
N: Set if result is negative (src > dst), reset if positive (src ≤ dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow)
OSCOFF, CPUOFF, and GIE are not affected.
A 16-bit constant 7654h is subtracted from RAM word EDE.
#7654h,&EDE

; Subtract 7654h from EDE

A table word pointed to by R5 (20-bit address) is subtracted from R7. Afterwards, if R7
contains zero, jump to label TONI. R5 is then auto-incremented by 2. R7.19:16 = 0.
@R5+,R7
TONI

; Subtract table number from R7. R5 + 2
; R7 = @R5 (before subtraction)
; R7 <> @R5 (before subtraction)

Byte CNT is subtracted from byte R12 points to. The address of CNT is within PC ± 32K.
The address R12 points to is in full memory range.
CNT,0(R12)

; Subtract CNT from @R12

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

205

Instruction Set Description

www.ti.com

4.6.2.47 SUBC
SUBC[.W]
SUBC.B
Syntax

Subtract source word with carry from destination word
Subtract source byte with carry from destination byte
SUBC src,dst or SUBC.W src,dst
SUBC.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

SUBC.W

Example

SUB
SUBC
SUBC

Example

SUBC.B

206

CPUX

(.not.src) + C + dst → dst or dst – (src – 1) + C → dst
The source operand is subtracted from the destination operand. This is done by adding
the 1s complement of the source + carry to the destination. The source operand is not
affected, the result is written to the destination operand. Used for 32, 48, and 64-bit
operands.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow)
OSCOFF, CPUOFF, and GIE are not affected.
A 16-bit constant 7654h is subtracted from R5 with the carry from the previous
instruction. R5.19:16 = 0
#7654h,R5

; Subtract 7654h + C from R5

A 48-bit number (3 words) pointed to by R5 (20-bit address) is subtracted from a 48-bit
counter in RAM, pointed to by R7. R5 points to the next 48-bit number afterwards. The
address R7 points to is in full memory range.
@R5+,0(R7)
@R5+,2(R7)
@R5+,4(R7)

; Subtract LSBs. R5 + 2
; Subtract MIDs with C. R5 + 2
; Subtract MSBs with C. R5 + 2

Byte CNT is subtracted from the byte, R12 points to. The carry of the previous instruction
is used. The address of CNT is in lower 64 K.
&CNT,0(R12)

; Subtract byte CNT from @R12

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.48 SWPB
SWPB
Syntax
Operation
Description

Swap bytes
SWPB dst

dst.15:8 ↔ dst.7:0
The high and the low byte of the operand are exchanged. PC.19:16 bits are cleared in
register mode.
Status bits are not affected
OSCOFF, CPUOFF, and GIE are not affected.
Exchange the bytes of RAM word EDE (lower 64 K)

Status Bits
Mode Bits
Example
MOV
SWPB

#1234h,&EDE
&EDE

; 1234h -> EDE
; 3412h -> EDE

Before SWPB
15

8

7

0

High Byte

Low Byte

After SWPB
15

8

7

0

Low Byte

High Byte

Figure 4-42. Swap Bytes in Memory
Before SWPB
19
16 15
x

8

7

High Byte

0
Low Byte

After SWPB
19

16

0

... 0

15

8
Low Byte

7

0
High Byte

Figure 4-43. Swap Bytes in a Register

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

207

Instruction Set Description

www.ti.com

4.6.2.49 SXT
SXT
Syntax
Operation
Description

Status Bits

Mode Bits
Example

MOV.B
SXT
ADD

Example

MOV.B
SXT
ADDA

208

CPUX

Extend sign
SXT dst

dst.7 → dst.15:8, dst.7 → dst.19:8 (register mode)
Register mode: the sign of the low byte of the operand is extended into the bits
Rdst.19:8.
Rdst.7 = 0: Rdst.19:8 = 000h afterwards
Rdst.7 = 1: Rdst.19:8 = FFFh afterwards
Other modes: the sign of the low byte of the operand is extended into the high byte.
dst.7 = 0: high byte = 00h afterwards
dst.7 = 1: high byte = FFh afterwards
N: Set if result is negative, reset otherwise
Z: Set if result is zero, reset otherwise
C: Set if result is not zero, reset otherwise (C = .not.Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The signed 8-bit data in EDE (lower 64 K) is sign extended and added to the 16-bit
signed data in R7.
&EDE,R5
R5
R5,R7

; EDE -> R5. 00XXh
; Sign extend low byte to R5.19:8
; Add signed 16-bit values

The signed 8-bit data in EDE (PC +32 K) is sign extended and added to the 20-bit data
in R7.
EDE,R5
R5
R5,R7

; EDE -> R5. 00XXh
; Sign extend low byte to R5.19:8
; Add signed 20-bit values

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.2.50 TST
* TST[.W]
* TST.B
Syntax

Test destination
Test destination
TST dst or

TST.W dst

TST.B dst

Operation

dst + 0FFFFh + 1
dst + 0FFh + 1

Emulation

CMP #0,dst
CMP.B #0,dst

Description
Status Bits

Mode Bits
Example

R7POS
R7NEG
R7ZERO

Example

R7POS
R7NEG
R7ZERO

The destination operand is compared with zero. The status bits are set according to the
result. The destination is not affected.
N: Set if destination is negative, reset if positive
Z: Set if destination contains zero, reset otherwise
C: Set
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
R7 is tested. If it is negative, continue at R7NEG; if it is positive but not zero, continue at
R7POS.
TST
JN
JZ
......
......
......

R7
R7NEG
R7ZERO

;
;
;
;
;
;

Test R7
R7 is negative
R7 is zero
R7 is positive but not zero
R7 is negative
R7 is zero

The low byte of R7 is tested. If it is negative, continue at R7NEG; if it is positive but not
zero, continue at R7POS.
TST.B
JN
JZ
......
.....
......

R7
R7NEG
R7ZERO

;
;
;
;
;
;

Test low
Low byte
Low byte
Low byte
Low byte
Low byte

byte of R7
of R7 is negative
of R7 is zero
of R7 is positive but not zero
of R7 is negative
of R7 is zero

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

209

Instruction Set Description

www.ti.com

4.6.2.51 XOR
XOR[.W]
XOR.B
Syntax

Exclusive OR source word with destination word
Exclusive OR source byte with destination byte
XOR src,dst or XOR.W src,dst
XOR.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

XOR

Example
XOR

Example

XOR.B
INV.B

210

CPUX

src .xor. dst → dst
The source and destination operands are exclusively ORed. The result is placed into the
destination. The source operand is not affected. The previous content of the destination
is lost.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if result is not zero, reset otherwise (C = .not. Z)
V: Set if both operands are negative before execution, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Toggle bits in word CNTR (16-bit data) with information (bit = 1) in address-word TONI.
Both operands are located in lower 64 K.
&TONI,&CNTR

; Toggle bits in CNTR

A table word pointed to by R5 (20-bit address) is used to toggle bits in R6. R6.19:16 = 0.
@R5,R6

; Toggle bits in R6

Reset to zero those bits in the low byte of R7 that are different from the bits in byte EDE.
R7.19:8 = 0. The address of EDE is within PC ± 32 K.
EDE,R7
R7

; Set different bits to 1 in R7.
; Invert low byte of R7, high byte is 0h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3 Extended Instructions
The extended MSP430X instructions give the MSP430X CPU full access to its 20-bit address space.
MSP430X instructions require an additional word of op-code called the extension word. All addresses,
indexes, and immediate numbers have 20-bit values when preceded by the extension word. The
MSP430X extended instructions are listed and described in the following pages.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

211

Instruction Set Description

4.6.3.1

www.ti.com

ADCX
* ADCX.A
* ADCX.[W]
* ADCX.B
Syntax

Add carry to destination address-word
Add carry to destination word
Add carry to destination byte
ADCX.A dst
ADCX dst or
ADCX.B dst

Operation
Emulation

ADCX.W dst

dst + C → dst
ADDCX.A #0,dst
ADDCX #0,dst
ADDCX.B #0,dst

Description
Status Bits

Mode Bits
Example
INCX.A
ADCX.A

212

CPUX

The carry bit (C) is added to the destination operand. The previous contents of the
destination are lost.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 40-bit counter, pointed to by R12 and R13, is incremented.
@R12
@R13

; Increment lower 20 bits
; Add carry to upper 20 bits

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.2

ADDX
ADDX.A
ADDX.[W]
ADDX.B
Syntax

Add source address-word to destination address-word
Add source word to destination word
Add source byte to destination byte
ADDX.A src,dst
ADDX src,dst or ADDX.W src,dst
ADDX.B src,dst

Operation
Description
Status Bits

Mode Bits
Example

ADDX.A

Example

ADDX.W
JC
...

Example

ADDX.B
JNC
...

src + dst → dst
The source operand is added to the destination operand. The previous contents of the
destination are lost. Both operands can be located in the full address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Ten is added to the 20-bit pointer CNTR located in two words CNTR (LSBs) and
CNTR+2 (MSBs).
#10,CNTR

; Add 10 to 20-bit pointer

A table word (16-bit) pointed to by R5 (20-bit address) is added to R6. The jump to label
TONI is performed on a carry.
@R5,R6
TONI

; Add table word to R6
; Jump if carry
; No carry

A table byte pointed to by R5 (20-bit address) is added to R6. The jump to label TONI is
performed if no carry occurs. The table pointer is auto-incremented by 1.
@R5+,R6
TONI

; Add table byte to R6. R5 + 1. R6: 000xxh
; Jump if no carry
; Carry occurred

Note: Use ADDA for the following two cases for better code density and execution.
ADDX.A
ADDX.A

Rsrc,Rdst
#imm20,Rdst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

213

Instruction Set Description

4.6.3.3

www.ti.com

ADDCX
ADDCX.A
ADDCX.[W]
ADDCX.B
Syntax

Add source address-word and carry to destination address-word
Add source word and carry to destination word
Add source byte and carry to destination byte
ADDCX.A src,dst
ADDCX src,dst or ADDCX.W src,dst
ADDCX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

src + dst + C → dst
The source operand and the carry bit C are added to the destination operand. The
previous contents of the destination are lost. Both operands may be located in the full
address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Constant 15 and the carry of the previous instruction are added to the 20-bit counter
CNTR located in two words.

ADDCX.A

Example

CPUX

@R5,R6
TONI

; Add table word + C to R6
; Jump if carry
; No carry

A table byte pointed to by R5 (20-bit address) and the carry bit C are added to R6. The
jump to label TONI is performed if no carry occurs. The table pointer is auto-incremented
by 1.

ADDCX.B
JNC
...

214

; Add 15 + C to 20-bit CNTR

A table word pointed to by R5 (20-bit address) and the carry C are added to R6. The
jump to label TONI is performed on a carry.

ADDCX.W
JC
...

Example

#15,&CNTR

@R5+,R6
TONI

; Add table byte + C to R6. R5 + 1
; Jump if no carry
; Carry occurred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.4

ANDX
ANDX.A
ANDX.[W]
ANDX.B
Syntax

Logical AND of source address-word with destination address-word
Logical AND of source word with destination word
Logical AND of source byte with destination byte
ANDX.A src,dst
ANDX src,dst or ANDX.W src,dst
ANDX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

MOVA
ANDX.A
JZ
...

src .and. dst → dst
The source operand and the destination operand are logically ANDed. The result is
placed into the destination. The source operand is not affected. Both operands may be
located in the full address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if the result is not zero, reset otherwise. C = (.not. Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The bits set in R5 (20-bit data) are used as a mask (AAA55h) for the address-word TOM
located in two words. If the result is zero, a branch is taken to label TONI.
#AAA55h,R5
R5,TOM
TONI

;
;
;
;

Load 20-bit mask to R5
TOM .and. R5 -> TOM
Jump if result 0
Result > 0

or shorter:
ANDX.A
JZ

Example

ANDX.B

#AAA55h,TOM
TONI

; TOM .and. AAA55h -> TOM
; Jump if result 0

A table byte pointed to by R5 (20-bit address) is logically ANDed with R6. R6.19:8 = 0.
The table pointer is auto-incremented by 1.
@R5+,R6

; AND table byte with R6. R5 + 1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

215

Instruction Set Description

4.6.3.5

www.ti.com

BICX
BICX.A
BICX.[W]
BICX.B
Syntax

Clear bits set in source address-word in destination address-word
Clear bits set in source word in destination word
Clear bits set in source byte in destination byte
BICX.A src,dst
BICX src,dst or BICX.W src,dst
BICX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example
BICX.A

Example
BICX.W

Example
BICX.B

216

CPUX

(.not. src) .and. dst → dst
The inverted source operand and the destination operand are logically ANDed. The
result is placed into the destination. The source operand is not affected. Both operands
may be located in the full address space.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
The bits 19:15 of R5 (20-bit data) are cleared.
#0F8000h,R5

; Clear R5.19:15 bits

A table word pointed to by R5 (20-bit address) is used to clear bits in R7. R7.19:16 = 0.
@R5,R7

; Clear bits in R7

A table byte pointed to by R5 (20-bit address) is used to clear bits in output Port1.
@R5,&P1OUT

; Clear I/O port P1 bits

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.6

BISX
BISX.A
BISX.[W]
BISX.B
Syntax

Set bits set in source address-word in destination address-word
Set bits set in source word in destination word
Set bits set in source byte in destination byte
BISX.A src,dst
BISX src,dst or BISX.W src,dst
BISX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example
BISX.A

Example
BISX.W

Example
BISX.B

src .or. dst → dst
The source operand and the destination operand are logically ORed. The result is placed
into the destination. The source operand is not affected. Both operands may be located
in the full address space.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Bits 16 and 15 of R5 (20-bit data) are set to one.
#018000h,R5

; Set R5.16:15 bits

A table word pointed to by R5 (20-bit address) is used to set bits in R7.
@R5,R7

; Set bits in R7

A table byte pointed to by R5 (20-bit address) is used to set bits in output Port1.
@R5,&P1OUT

; Set I/O port P1 bits

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

217

Instruction Set Description

4.6.3.7

www.ti.com

BITX
BITX.A
BITX.[W]
BITX.B
Syntax

Test bits set in source address-word in destination address-word
Test bits set in source word in destination word
Test bits set in source byte in destination byte
BITX.A src,dst
BITX src,dst or BITX.W src,dst
BITX.B src,dst

Operation
Description
Status Bits

Mode Bits
Example
BITX.A
JNZ
...

Example

BITX.W
JC
...

Example

BITX.B
JNC
...

218

CPUX

src .and. dst → dst
The source operand and the destination operand are logically ANDed. The result affects
only the status bits. Both operands may be located in the full address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if the result is not zero, reset otherwise. C = (.not. Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
Test if bit 16 or 15 of R5 (20-bit data) is set. Jump to label TONI if so.
#018000h,R5
TONI

; Test R5.16:15 bits
; At least one bit is set
; Both are reset

A table word pointed to by R5 (20-bit address) is used to test bits in R7. Jump to label
TONI if at least one bit is set.
@R5,R7
TONI

; Test bits in R7: C = .not.Z
; At least one is set
; Both are reset

A table byte pointed to by R5 (20-bit address) is used to test bits in input Port1. Jump to
label TONI if no bit is set. The next table byte is addressed.
@R5+,&P1IN
TONI

; Test input P1 bits. R5 + 1
; No corresponding input bit is set
; At least one bit is set

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.8

CLRX
* CLRX.A
* CLRX.[W]
* CLRX.B
Syntax

Clear destination address-word
Clear destination word
Clear destination byte
CLRX.A dst
CLRX dst or
CLRX.B dst

Operation
Emulation

CLRX.W dst

0 → dst
MOVX.A #0,dst
MOVX #0,dst
MOVX.B #0,dst

Description
Status Bits
Mode Bits
Example
CLRX.A

The destination operand is cleared.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
RAM address-word TONI is cleared.
TONI

; 0 -> TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

219

Instruction Set Description

4.6.3.9

www.ti.com

CMPX
CMPX.A
CMPX.[W]
CMPX.B
Syntax

Compare source address-word and destination address-word
Compare source word and destination word
Compare source byte and destination byte
CMPX.A src,dst
CMPX src,dst or CMPX.W src,dst
CMPX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

CMPX.A
JEQ
...

Example

CMPX.W
JL
...

Example

CMPX.B
JEQ
...

(.not. src) + 1 + dst or dst – src
The source operand is subtracted from the destination operand by adding the 1s
complement of the source + 1 to the destination. The result affects only the status bits.
Both operands may be located in the full address space.
N: Set if result is negative (src > dst), reset if positive (src ≤ dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow)
OSCOFF, CPUOFF, and GIE are not affected.
Compare EDE with a 20-bit constant 18000h. Jump to label TONI if EDE equals the
constant.
#018000h,EDE
TONI

; Compare EDE with 18000h
; EDE contains 18000h
; Not equal

A table word pointed to by R5 (20-bit address) is compared with R7. Jump to label TONI
if R7 contains a lower, signed, 16-bit number.
@R5,R7
TONI

; Compare two signed numbers
; R7 < @R5
; R7 >= @R5

A table byte pointed to by R5 (20-bit address) is compared to the input in I/O Port1.
Jump to label TONI if the values are equal. The next table byte is addressed.
@R5+,&P1IN
TONI

; Compare P1 bits with table. R5 + 1
; Equal contents
; Not equal

Note: Use CMPA for the following two cases for better density and execution.
CMPA
CMPA

220

CPUX

Rsrc,Rdst
#imm20,Rdst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.10 DADCX
* DADCX.A
* DADCX.[W]
* DADCX.B
Syntax

Add carry decimally to destination address-word
Add carry decimally to destination word
Add carry decimally to destination byte
DADCX.A dst
DADCX dst or
DADCX.B dst

Operation
Emulation

DADCX.W dst

dst + C → dst (decimally)
DADDX.A #0,dst
DADDX #0,dst
DADDX.B #0,dst

Description
Status Bits

Mode Bits
Example

The carry bit (C) is added decimally to the destination.
N: Set if MSB of result is 1 (address-word > 79999h, word > 7999h, byte > 79h), reset
if MSB is 0
Z: Set if result is zero, reset otherwise
C: Set if the BCD result is too large (address-word > 99999h, word > 9999h, byte >
99h), reset otherwise
V: Undefined
OSCOFF, CPUOFF, and GIE are not affected.
The 40-bit counter, pointed to by R12 and R13, is incremented decimally.

DADDX.A
DADCX.A

#1,0(R12)
0(R13)

; Increment lower 20 bits
; Add carry to upper 20 bits

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

221

Instruction Set Description

www.ti.com

4.6.3.11 DADDX
DADDX.A
DADDX.[W]
DADDX.B
Syntax

Add source address-word and carry decimally to destination address-word
Add source word and carry decimally to destination word
Add source byte and carry decimally to destination byte
DADDX.A src,dst
DADDX src,dst or DADDX.W src,dst
DADDX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

src + dst + C → dst (decimally)
The source operand and the destination operand are treated as two (.B), four (.W), or
five (.A) binary coded decimals (BCD) with positive signs. The source operand and the
carry bit C are added decimally to the destination operand. The source operand is not
affected. The previous contents of the destination are lost. The result is not defined for
non-BCD numbers. Both operands may be located in the full address space.
N: Set if MSB of result is 1 (address-word > 79999h, word > 7999h, byte > 79h), reset
if MSB is 0.
Z: Set if result is zero, reset otherwise
C: Set if the BCD result is too large (address-word > 99999h, word > 9999h, byte >
99h), reset otherwise
V: Undefined
OSCOFF, CPUOFF, and GIE are not affected.
Decimal 10 is added to the 20-bit BCD counter DECCNTR located in two words.

DADDX.A

Example

CPUX

BCD,R4
BCD+2,R5
OVERFLOW

;
;
;
;
;

Clear carry
Add LSDs
Add MSDs with carry
Result >99999999: go to error routine
Result ok

The two-digit BCD number contained in 20-bit address BCD is added decimally to a twodigit BCD number contained in R4.

CLRC
DADDX.B

222

; Add 10 to 20-bit BCD counter

The eight-digit BCD number contained in 20-bit addresses BCD and BCD+2 is added
decimally to an eight-digit BCD number contained in R4 and R5 (BCD+2 and R5 contain
the MSDs).

CLRC
DADDX.W
DADDX.W
JC
...

Example

#10h,&DECCNTR

BCD,R4

; Clear carry
; Add BCD to R4 decimally.
; R4: 000ddh

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.12 DECX
* DECX.A
* DECX.[W]
* DECX.B
Syntax

Decrement destination address-word
Decrement destination word
Decrement destination byte
DECX.A dst
DECX dst or
DECX.B dst

Operation
Emulation

DECX.W dst

dst – 1 → dst
SUBX.A #1,dst
SUBX #1,dst
SUBX.B #1,dst

Description
Status Bits

Mode Bits
Example
DECX.A

The destination operand is decremented by one. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 1, reset otherwise
C: Reset if dst contained 0, set otherwise
V: Set if an arithmetic overflow occurs, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
RAM address-word TONI is decremented by one.
TONI

; Decrement TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

223

Instruction Set Description

www.ti.com

4.6.3.13 DECDX
* DECDX.A
* DECDX.[W]
* DECDX.B
Syntax

Double-decrement destination address-word
Double-decrement destination word
Double-decrement destination byte
DECDX.A dst
DECDX dst or
DECDX.B dst

Operation
Emulation

DECDX.W dst

dst – 2 → dst
SUBX.A #2,dst
SUBX #2,dst
SUBX.B #2,dst

Description
Status Bits

Mode Bits
Example

The destination operand is decremented by two. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 2, reset otherwise
C: Reset if dst contained 0 or 1, set otherwise
V: Set if an arithmetic overflow occurs, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
RAM address-word TONI is decremented by two.

DECDX.A

224

CPUX

TONI

; Decrement TONI

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.14 INCX
* INCX.A
* INCX.[W]
* INCX.B
Syntax

Increment destination address-word
Increment destination word
Increment destination byte
INCX.A dst
INCX dst or
INCX.B dst

Operation
Emulation

INCX.W dst

dst + 1 → dst
ADDX.A #1,dst
ADDX #1,dst
ADDX.B #1,dst

Description
Status Bits

Mode Bits
Example
INCX.A

The destination operand is incremented by one. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFFFh, reset otherwise
Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
C: Set if dst contained 0FFFFFh, reset otherwise
Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
V: Set if dst contained 07FFFh, reset otherwise
Set if dst contained 07FFFh, reset otherwise
Set if dst contained 07Fh, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
RAM address-wordTONI is incremented by one.
TONI

; Increment TONI (20-bits)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

225

Instruction Set Description

www.ti.com

4.6.3.15 INCDX
* INCDX.A
* INCDX.[W]
* INCDX.B
Syntax

Double-increment destination address-word
Double-increment destination word
Double-increment destination byte
INCDX.A dst
INCDX dst or
INCDX.B dst

Operation
Emulation

INCDX.W dst

dst + 2 → dst
ADDX.A #2,dst
ADDX #2,dst
ADDX.B #2,dst

Description
Status Bits

Mode Bits
Example

The destination operand is incremented by two. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFFEh, reset otherwise
Set if dst contained 0FFFEh, reset otherwise
Set if dst contained 0FEh, reset otherwise
C: Set if dst contained 0FFFFEh or 0FFFFFh, reset otherwise
Set if dst contained 0FFFEh or 0FFFFh, reset otherwise
Set if dst contained 0FEh or 0FFh, reset otherwise
V: Set if dst contained 07FFFEh or 07FFFFh, reset otherwise
Set if dst contained 07FFEh or 07FFFh, reset otherwise
Set if dst contained 07Eh or 07Fh, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
RAM byte LEO is incremented by two; PC points to upper memory.

INCDX.B

226

CPUX

LEO

; Increment LEO by two

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.16 INVX
* INVX.A
* INVX.[W]
* INVX.B
Syntax

Invert destination
Invert destination
Invert destination
INVX.A dst
INVX dst or
INVX.B dst

Operation
Emulation

INVX.W dst

.NOT.dst → dst
XORX.A #0FFFFFh,dst
XORX #0FFFFh,dst
XORX.B #0FFh,dst

Description
Status Bits

Mode Bits
Example
INVX.A
INCX.A

Example
INVX.B
INCX.B

The destination operand is inverted. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if dst contained 0FFFFFh, reset otherwise
Set if dst contained 0FFFFh, reset otherwise
Set if dst contained 0FFh, reset otherwise
C: Set if result is not zero, reset otherwise ( = .NOT. Zero)
V: Set if initial destination operand was negative, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
20-bit content of R5 is negated (2s complement).
R5
R5

; Invert R5
; R5 is now negated

Content of memory byte LEO is negated. PC is pointing to upper memory.
LEO
LEO

; Invert LEO
; MEM(LEO) is negated

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

227

Instruction Set Description

www.ti.com

4.6.3.17 MOVX
MOVX.A
MOVX.[W]
MOVX.B
Syntax

Move source address-word to destination address-word
Move source word to destination word
Move source byte to destination byte
MOVX.A src,dst
MOVX src,dst or MOVX.W src,dst
MOVX.B src,dst

src → dst
The source operand is copied to the destination. The source operand is not affected.
Both operands may be located in the full address space.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Move a 20-bit constant 18000h to absolute address-word EDE

Operation
Description
Status Bits

Mode Bits
Example
MOVX.A

Example

Loop

; Move 18000h to EDE

The contents of table EDE (word data, 20-bit addresses) are copied to table TOM. The
length of the table is 030h words.
MOVA
MOVX.W

#EDE,R10
@R10+,TOM-EDE-2(R10)

CMPA
JLO
...

#EDE+60h,R10
Loop

Example

Loop

#018000h,&EDE

;
;
;
;
;
;

Prepare pointer (20-bit address)
R10 points to both tables.
R10+2
End of table reached?
Not yet
Copy completed

The contents of table EDE (byte data, 20-bit addresses) are copied to table TOM. The
length of the table is 020h bytes.
MOVA
MOV
MOVX.W

#EDE,R10
#20h,R9
@R10+,TOM-EDE-2(R10)

DEC
JNZ
...

R9
Loop

;
;
;
;
;
;
;

Prepare pointer (20-bit)
Prepare counter
R10 points to both tables.
R10+1
Decrement counter
Not yet done
Copy completed

Ten of the 28 possible addressing combinations of the MOVX.A instruction can use the
MOVA instruction. This saves two bytes and code cycles. Examples for the addressing
combinations are:
MOVX.A
MOVX.A
MOVX.A
MOVX.A
MOVX.A
MOVX.A

Rsrc,Rdst
#imm20,Rdst
&abs20,Rdst
@Rsrc,Rdst
@Rsrc+,Rdst
Rsrc,&abs20

MOVA
MOVA
MOVA
MOVA
MOVA
MOVA

Rsrc,Rdst
#imm20,Rdst
&abs20,Rdst
@Rsrc,Rdst
@Rsrc+,Rdst
Rsrc,&abs20

;
;
;
;
;
;

Reg/Reg
Immediate/Reg
Absolute/Reg
Indirect/Reg
Indirect,Auto/Reg
Reg/Absolute

The next four replacements are possible only if 16-bit indexes are sufficient for the
addressing:

228

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

MOVX.A
MOVX.A
MOVX.A
MOVX.A

z20(Rsrc),Rdst
Rsrc,z20(Rdst)
symb20,Rdst
Rsrc,symb20

MOVA
MOVA
MOVA
MOVA

z16(Rsrc),Rdst
Rsrc,z16(Rdst)
symb16,Rdst
Rsrc,symb16

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

;
;
;
;

Indexed/Reg
Reg/Indexed
Symbolic/Reg
Reg/Symbolic

CPUX

229

Instruction Set Description

www.ti.com

4.6.3.18 POPM
POPM.A
POPM.[W]
Syntax
Operation

Description

Status Bits
Mode Bits
Example
POPM.A

Example
POPM.W

230

CPUX

Restore n CPU registers (20-bit data) from the stack
Restore n CPU registers (16-bit data) from the stack
1 ≤ n ≤ 16
POPM.W #n,Rdst or POPM #n,Rdst
1 ≤ n ≤ 16
POPM.A: Restore the register values from stack to the specified CPU registers. The SP
is incremented by four for each register restored from stack. The 20-bit values from
stack (two words per register) are restored to the registers.
POPM.W: Restore the 16-bit register values from stack to the specified CPU registers.
The SP is incremented by two for each register restored from stack. The 16-bit values
from stack (one word per register) are restored to the CPU registers.
Note : This instruction does not use the extension word.
POPM.A: The CPU registers pushed on the stack are moved to the extended CPU
registers, starting with the CPU register (Rdst – n + 1). The SP is incremented by (n ×
4) after the operation.
POPM.W: The 16-bit registers pushed on the stack are moved back to the CPU
registers, starting with CPU register (Rdst – n + 1). The SP is incremented by (n × 2)
after the instruction. The MSBs (Rdst.19:16) of the restored CPU registers are cleared.
Status bits are not affected, except SR is included in the operation.
OSCOFF, CPUOFF, and GIE are not affected.
Restore the 20-bit registers R9, R10, R11, R12, R13 from the stack
POPM.A #n,Rdst

#5,R13

; Restore R9, R10, R11, R12, R13

Restore the 16-bit registers R9, R10, R11, R12, R13 from the stack.
#5,R13

; Restore R9, R10, R11, R12, R13

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.19 PUSHM
PUSHM.A
PUSHM.[W]
Syntax
Operation

Description

Status Bits
Mode Bits
Example
PUSHM.A

Example
PUSHM.W

Save n CPU registers (20-bit data) on the stack
Save n CPU registers (16-bit words) on the stack
1 ≤ n ≤ 16
PUSHM.W #n,Rdst or PUSHM #n,Rdst
1 ≤ n ≤ 16
PUSHM.A: Save the 20-bit CPU register values on the stack. The SP is decremented
by four for each register stored on the stack. The MSBs are stored first (higher
address).
PUSHM.W: Save the 16-bit CPU register values on the stack. The SP is decremented
by two for each register stored on the stack.
PUSHM.A: The n CPU registers, starting with Rdst backwards, are stored on the stack.
The SP is decremented by (n × 4) after the operation. The data (Rn.19:0) of the pushed
CPU registers is not affected.
PUSHM.W: The n registers, starting with Rdst backwards, are stored on the stack. The
SP is decremented by (n × 2) after the operation. The data (Rn.19:0) of the pushed
CPU registers is not affected.
Note : This instruction does not use the extension word.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
Save the five 20-bit registers R9, R10, R11, R12, R13 on the stack
PUSHM.A #n,Rdst

#5,R13

; Save R13, R12, R11, R10, R9

Save the five 16-bit registers R9, R10, R11, R12, R13 on the stack
#5,R13

; Save R13, R12, R11, R10, R9

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

231

Instruction Set Description

www.ti.com

4.6.3.20 POPX
* POPX.A
* POPX.[W]
* POPX.B
Syntax

Restore single address-word from the stack
Restore single word from the stack
Restore single byte from the stack
POPX.A dst
POPX dst or
POPX.B dst

Operation

Restore the 8-, 16-, 20-bit value from the stack to the destination. 20-bit addresses are
possible. The SP is incremented by two (byte and word operands) and by four
(address-word operand).

Emulation
Description

MOVX(.B,.A) @SP+,dst

Status Bits
Mode Bits
Example
POPX.W

Example
POPX.A

232

POPX.W dst

CPUX

The item on TOS is written to the destination operand. Register mode, Indexed mode,
Symbolic mode, and Absolute mode are possible. The SP is incremented by two or
four.
Note: the SP is incremented by two also for byte operations.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
Write the 16-bit value on TOS to the 20-bit address &EDE
&EDE

; Write word to address EDE

Write the 20-bit value on TOS to R9
R9

; Write address-word to R9

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.21 PUSHX
PUSHX.A
PUSHX.[W]
PUSHX.B
Syntax

Save single address-word to the stack
Save single word to the stack
Save single byte to the stack
PUSHX.A src
PUSHX src or
PUSHX.B src

Operation

Description

Status Bits
Mode Bits
Example
PUSHX.B

Example
PUSHX.A

PUSHX.W src

Save the 8-, 16-, 20-bit value of the source operand on the TOS. 20-bit addresses are
possible. The SP is decremented by two (byte and word operands) or by four (addressword operand) before the write operation.
The SP is decremented by two (byte and word operands) or by four (address-word
operand). Then the source operand is written to the TOS. All seven addressing modes
are possible for the source operand.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
Save the byte at the 20-bit address &EDE on the stack
&EDE

; Save byte at address EDE

Save the 20-bit value in R9 on the stack.
R9

; Save address-word in R9

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

233

Instruction Set Description

www.ti.com

4.6.3.22 RLAM
RLAM.A
RLAM.[W]
Syntax

Rotate left arithmetically the 20-bit CPU register content
Rotate left arithmetically the 16-bit CPU register content
1≤n≤4
1≤n≤4

RLAM.A #n,Rdst
RLAM.W #n,Rdst or RLAM #n,Rdst

C ← MSB ← MSB-1 .... LSB+1 ← LSB ← 0
The destination operand is shifted arithmetically left one, two, three, or four positions as
shown in Figure 4-44. RLAM works as a multiplication (signed and unsigned) with 2, 4,
8, or 16. The word instruction RLAM.W clears the bits Rdst.19:16.
Note : This instruction does not use the extension word.
N: Set if result is negative
.A: Rdst.19 = 1, reset if Rdst.19 = 0
.W: Rdst.15 = 1, reset if Rdst.15 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the MSB (n = 1), MSB-1 (n = 2), MSB-2 (n = 3), MSB-3 (n = 4)
V: Undefined
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit operand in R5 is shifted left by three positions. It operates equal to an
arithmetic multiplication by 8.

Operation
Description

Status Bits

Mode Bits
Example

RLAM.A

#3,R5
19

16
0000

C

C

; R5 = R5 x 8
15

0

MSB

LSB

19

0

MSB

LSB

0

0

Figure 4-44. Rotate Left Arithmetically—RLAM[.W] and RLAM.A

234

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.23 RLAX
* RLAX.A
* RLAX.[W]
* RLAX.B
Syntax

Rotate left arithmetically address-word
Rotate left arithmetically word
Rotate left arithmetically byte
RLAX.A dst
RLAX dst or
RLAX.B dst

RLAX.W dst

C ← MSB ← MSB-1 .... LSB+1 ← LSB ← 0

Operation
Emulation

ADDX.A dst,dst
ADDX dst,dst
ADDX.B dst,dst

Description

The destination operand is shifted left one position as shown in Figure 4-45. The MSB
is shifted into the carry bit (C) and the LSB is filled with 0. The RLAX instruction acts as
a signed multiplication by 2.
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Loaded from the MSB
V: Set if an arithmetic overflow occurs: the initial value is 040000h ≤ dst < 0C0000h;
reset otherwise
Set if an arithmetic overflow occurs: the initial value is 04000h ≤ dst < 0C000h;
reset otherwise
Set if an arithmetic overflow occurs: the initial value is 040h ≤ dst < 0C0h; reset
otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R7 is multiplied by 2

Status Bits

Mode Bits
Example
RLAX.A

R7

; Shift left R7 (20-bit)
0

C

MSB

LSB

0

Figure 4-45. Destination Operand-Arithmetic Shift Left

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

235

Instruction Set Description

www.ti.com

4.6.3.24 RLCX
* RLCX.A
* RLCX.[W]
* RLCX.B
Syntax

Rotate left through carry address-word
Rotate left through carry word
Rotate left through carry byte
RLCX.A dst
RLCX dst or
RLCX.B dst

Operation
Emulation

RLCX.W dst

C ← MSB ← MSB-1 .... LSB+1 ← LSB ← C
ADDCX.A dst,dst
ADDCX dst,dst
ADDCX.B dst,dst

Description
Status Bits

Mode Bits
Example
RLCX.A

Example
RLCX.B

The destination operand is shifted left one position as shown in Figure 4-46. The carry
bit (C) is shifted into the LSB and the MSB is shifted into the carry bit (C).
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Loaded from the MSB
V: Set if an arithmetic overflow occurs: the initial value is 040000h ≤ dst < 0C0000h;
reset otherwise
Set if an arithmetic overflow occurs: the initial value is 04000h ≤ dst < 0C000h;
reset otherwise
Set if an arithmetic overflow occurs: the initial value is 040h ≤ dst < 0C0h; reset
otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R5 is shifted left one position.
R5

; (R5 x 2) + C -> R5

The RAM byte LEO is shifted left one position. PC is pointing to upper memory.
LEO

; RAM(LEO) x 2 + C -> RAM(LEO)
0

C

MSB

LSB

Figure 4-46. Destination Operand-Carry Left Shift

236

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.25 RRAM
RRAM.A
RRAM.[W]
Syntax

Rotate right arithmetically the 20-bit CPU register content
Rotate right arithmetically the 16-bit CPU register content
RRAM.A #n,Rdst
RRAM.W #n,Rdst or RRAM #n,Rdst

1≤n≤4
1≤n≤4

MSB → MSB → MSB–1 ... LSB+1 → LSB → C
The destination operand is shifted right arithmetically by one, two, three, or four bit
positions as shown in Figure 4-47. The MSB retains its value (sign). RRAM operates
equal to a signed division by 2, 4, 8, or 16. The MSB is retained and shifted into MSB-1.
The LSB+1 is shifted into the LSB, and the LSB is shifted into the carry bit C. The word
instruction RRAM.W clears the bits Rdst.19:16.
Note : This instruction does not use the extension word.
N: Set if result is negative
.A: Rdst.19 = 1, reset if Rdst.19 = 0
.W: Rdst.15 = 1, reset if Rdst.15 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), or LSB+3 (n = 4)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The signed 20-bit number in R5 is shifted arithmetically right two positions.

Operation
Description

Status Bits

Mode Bits
Example
RRAM.A

Example

#2,R5

; R5/4 -> R5

The signed 20-bit value in R15 is multiplied by 0.75. (0.5 + 0.25) × R15.

PUSHM.A
RRAM.A
ADDX.A
RRAM.A

#1,R15
#1,R15
@SP+,R15
#1,R15
16

19
C

C

;
;
;
;

0000

Save extended R15 on stack
R15 y 0.5 -> R15
R15 y 0.5 + R15 = 1.5 y R15 -> R15
(1.5 y R15) y 0.5 = 0.75 y R15 -> R15

15

0

MSB

LSB

19

0

MSB

LSB

Figure 4-47. Rotate Right Arithmetically RRAM[.W] and RRAM.A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

237

Instruction Set Description

www.ti.com

4.6.3.26 RRAX
RRAX.A
RRAX.[W]
RRAX.B
Syntax

Rotate right arithmetically the 20-bit operand
Rotate right arithmetically the 16-bit operand
Rotate right arithmetically the 8-bit operand
RRAX.A Rdst
RRAX.W Rdst
RRAX Rdst
RRAX.B Rdst
RRAX.A dst
RRAX dst or
RRAX.B dst

Operation
Description

Status Bits

Mode Bits
Example
RPT
RRAX.A

Example

238

CPUX

RRAX.W dst

MSB → MSB → MSB–1 ... LSB+1 → LSB → C
Register mode for the destination: the destination operand is shifted right by one bit
position as shown in Figure 4-48. The MSB retains its value (sign). The word instruction
RRAX.W clears the bits Rdst.19:16, the byte instruction RRAX.B clears the bits
Rdst.19:8. The MSB retains its value (sign), the LSB is shifted into the carry bit. RRAX
here operates equal to a signed division by 2.
All other modes for the destination: the destination operand is shifted right arithmetically
by one bit position as shown in Figure 4-49. The MSB retains its value (sign), the LSB
is shifted into the carry bit. RRAX here operates equal to a signed division by 2. All
addressing modes, with the exception of the Immediate mode, are possible in the full
memory.
N: Set if result is negative, reset if positive
.A: dst.19 = 1, reset if dst.19 = 0
.W: dst.15 = 1, reset if dst.15 = 0
.B: dst.7 = 1, reset if dst.7 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The signed 20-bit number in R5 is shifted arithmetically right four positions.
#4
R5

; R5/16 -> R5

The signed 8-bit value in EDE is multiplied by 0.5.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

RRAX.B

C

&EDE
19

8

7

0

0

0

MSB

LSB

19
C

C

; EDE/2 -> EDE

15

0

MSB

LSB

16

0000

19

0

MSB

LSB

Figure 4-48. Rotate Right Arithmetically RRAX(.B,.A) – Register Mode

C

C

C

7

0

MSB

LSB

15

0

MSB

LSB

31

20

0

0

19

0

MSB

LSB

Figure 4-49. Rotate Right Arithmetically RRAX(.B,.A) – Non-Register Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

239

Instruction Set Description

www.ti.com

4.6.3.27 RRCM
RRCM.A
RRCM.[W]
Syntax

Rotate right through carry the 20-bit CPU register content
Rotate right through carry the 16-bit CPU register content
1≤n≤4
1≤n≤4

RRCM.A #n,Rdst
RRCM.W #n,Rdst or RRCM #n,Rdst

Operation
Description

Status Bits

Mode Bits

240

CPUX

C → MSB → MSB–1 ... LSB+1 → LSB → C
The destination operand is shifted right by one, two, three, or four bit positions as
shown in Figure 4-50. The carry bit C is shifted into the MSB, the LSB is shifted into the
carry bit. The word instruction RRCM.W clears the bits Rdst.19:16.
Note : This instruction does not use the extension word.
N: Set if result is negative
.A: Rdst.19 = 1, reset if Rdst.19 = 0
.W: Rdst.15 = 1, reset if Rdst.15 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), or LSB+3 (n = 4)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

Example

The address-word in R5 is shifted right by three positions. The MSB–2 is loaded with 1.

SETC
RRCM.A

Example

; Prepare carry for MSB-2
; R5 = R5 » 3 + 20000h

#3,R5

The word in R6 is shifted right by two positions. The MSB is loaded with the LSB. The
MSB–1 is loaded with the contents of the carry flag.

RRCM.W

#2,R6

; R6 = R6 » 2. R6.19:16 = 0

19
0

C

C

15

0

MSB

LSB

16

19

0

MSB

LSB

Figure 4-50. Rotate Right Through Carry RRCM[.W] and RRCM.A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

241

Instruction Set Description

www.ti.com

4.6.3.28 RRCX
RRCX.A
RRCX.[W]
RRCX.B
Syntax

Rotate right through carry the 20-bit operand
Rotate right through carry the 16-bit operand
Rotate right through carry the 8-bit operand
RRCX.A Rdst
RRCX.W Rdst
RRCX Rdst
RRCX.B Rdst
RRCX.A dst
RRCX dst or
RRCX.B dst

Operation
Description

Status Bits

Mode Bits
Example

SETC
RRCX.A

Example

242

CPUX

RRCX.W dst

C → MSB → MSB–1 ... LSB+1 → LSB → C
Register mode for the destination: the destination operand is shifted right by one bit
position as shown in Figure 4-51. The word instruction RRCX.W clears the bits
Rdst.19:16, the byte instruction RRCX.B clears the bits Rdst.19:8. The carry bit C is
shifted into the MSB, the LSB is shifted into the carry bit.
All other modes for the destination: the destination operand is shifted right by one bit
position as shown in Figure 4-52. The carry bit C is shifted into the MSB, the LSB is
shifted into the carry bit. All addressing modes, with the exception of the Immediate
mode, are possible in the full memory.
N: Set if result is negative
.A: dst.19 = 1, reset if dst.19 = 0
.W: dst.15 = 1, reset if dst.15 = 0
.B: dst.7 = 1, reset if dst.7 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit operand at address EDE is shifted right by one position. The MSB is loaded
with 1.

EDE

; Prepare carry for MSB
; EDE = EDE » 1 + 80000h

The word in R6 is shifted right by 12 positions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

RPT
RRCX.W

#12
R6

; R6 = R6 » 12. R6.19:16 = 0
8

19
C

0--------------------0

19
C

C

16

0

0

0

0

7

0

MSB

LSB

15

0

MSB

LSB

19

0

MSB

LSB

Figure 4-51. Rotate Right Through Carry RRCX(.B,.A) – Register Mode

C

C

C

7

0

MSB

LSB

15

0

MSB

LSB

31

20

0

0

19

0

MSB

LSB

Figure 4-52. Rotate Right Through Carry RRCX(.B,.A) – Non-Register Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

243

Instruction Set Description

www.ti.com

4.6.3.29 RRUM
RRUM.A
RRUM.[W]
Syntax

Rotate right through carry the 20-bit CPU register content
Rotate right through carry the 16-bit CPU register content
1≤n≤4
1≤n≤4

RRUM.A #n,Rdst
RRUM.W #n,Rdst or RRUM #n,Rdst

0 → MSB → MSB–1 ... LSB+1 → LSB → C
The destination operand is shifted right by one, two, three, or four bit positions as
shown in Figure 4-53. Zero is shifted into the MSB, the LSB is shifted into the carry bit.
RRUM works like an unsigned division by 2, 4, 8, or 16. The word instruction RRUM.W
clears the bits Rdst.19:16.
Note : This instruction does not use the extension word.
N: Set if result is negative
.A: Rdst.19 = 1, reset if Rdst.19 = 0
.W: Rdst.15 = 1, reset if Rdst.15 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), or LSB+3 (n = 4)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The unsigned address-word in R5 is divided by 16.

Operation
Description

Status Bits

Mode Bits
Example
RRUM.A

Example

#4,R5

; R5 = R5 » 4. R5/16

The word in R6 is shifted right by one bit. The MSB R6.15 is loaded with 0.

RRUM.W

#1,R6

16

19
0000

C

; R6 = R6/2. R6.19:15 = 0
15

0

MSB

LSB

0

C 0

19

0

MSB

LSB

Figure 4-53. Rotate Right Unsigned RRUM[.W] and RRUM.A

244

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.30 RRUX
RRUX.A
RRUX.[W]
RRUX.B
Syntax

Shift right unsigned the 20-bit CPU register content
Shift right unsigned the 16-bit CPU register content
Shift right unsigned the 8-bit CPU register content
RRUX.A Rdst
RRUX.W Rdst
RRUX Rdst
RRUX.B Rdst

C=0 → MSB → MSB–1 ... LSB+1 → LSB → C
RRUX is valid for register mode only: the destination operand is shifted right by one bit
position as shown in Figure 4-54. The word instruction RRUX.W clears the bits
Rdst.19:16. The byte instruction RRUX.B clears the bits Rdst.19:8. Zero is shifted into
the MSB, the LSB is shifted into the carry bit.
N: Set if result is negative
.A: dst.19 = 1, reset if dst.19 = 0
.W: dst.15 = 1, reset if dst.15 = 0
.B: dst.7 = 1, reset if dst.7 = 0
Z: Set if result is zero, reset otherwise
C: Loaded from the LSB
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The word in R6 is shifted right by 12 positions.

Operation
Description

Status Bits

Mode Bits
Example
RPT
RRUX.W

#12
R6

; R6 = R6 » 12. R6.19:16 = 0

19
C

8

0--------------------0

7

0

MSB

LSB

0
19
C

0

16
0

0

0

15

0

MSB

LSB

0

C 0

19

0

MSB

LSB

Figure 4-54. Rotate Right Unsigned RRUX(.B,.A) – Register Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

245

Instruction Set Description

www.ti.com

4.6.3.31 SBCX
* SBCX.A
* SBCX.[W]
* SBCX.B
Syntax

Subtract borrow (.NOT. carry) from destination address-word
Subtract borrow (.NOT. carry) from destination word
Subtract borrow (.NOT. carry) from destination byte
SBCX.A dst
SBCX dst or
SBCX.B dst

SBCX.W dst

Operation

dst + 0FFFFFh + C → dst
dst + 0FFFFh + C → dst
dst + 0FFh + C → dst

Emulation

SBCX.A #0,dst
SBCX #0,dst
SBCX.B #0,dst

Description
Status Bits

Mode Bits
Example

SUBX.B
SBCX.B
NOTE:

The carry bit (C) is added to the destination operand minus one. The previous contents
of the destination are lost.
N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise
Set to 1 if no borrow, reset if borrow
V: Set if an arithmetic overflow occurs, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 8-bit counter pointed to by R13 is subtracted from a 16-bit counter pointed to by
R12.
@R13,0(R12)
1(R12)

; Subtract LSDs
; Subtract carry from MSD

Borrow implementation
The borrow is treated as a .NOT. carry:

Borrow
Yes
No

246

CPUX

Carry Bit
0
1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.32 SUBX
SUBX.A
SUBX.[W]
SUBX.B
Syntax

Subtract source address-word from destination address-word
Subtract source word from destination word
Subtract source byte from destination byte
SUBX.A src,dst
SUBX src,dst or SUBX.W src,dst
SUBX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example
SUBX.A

Example

SUBX.W
JZ
...

Example

SUBX.B

(.not. src) + 1 + dst → dst or dst – src → dst
The source operand is subtracted from the destination operand. This is done by adding
the 1s complement of the source + 1 to the destination. The source operand is not
affected. The result is written to the destination operand. Both operands may be located
in the full address space.
N: Set if result is negative (src > dst), reset if positive (src ≤ dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow)
OSCOFF, CPUOFF, and GIE are not affected.
A 20-bit constant 87654h is subtracted from EDE (LSBs) and EDE+2 (MSBs).
#87654h,EDE

; Subtract 87654h from EDE+2|EDE

A table word pointed to by R5 (20-bit address) is subtracted from R7. Jump to label
TONI if R7 contains zero after the instruction. R5 is auto-incremented by two. R7.19:16 =
0.
@R5+,R7
TONI

; Subtract table number from R7. R5 + 2
; R7 = @R5 (before subtraction)
; R7 <> @R5 (before subtraction)

Byte CNT is subtracted from the byte R12 points to in the full address space. Address of
CNT is within PC ± 512 K.
CNT,0(R12)

; Subtract CNT from @R12

Note: Use SUBA for the following two cases for better density and execution.
SUBX.A
SUBX.A

Rsrc,Rdst
#imm20,Rdst

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

247

Instruction Set Description

www.ti.com

4.6.3.33 SUBCX
SUBCX.A
SUBCX.[W]
SUBCX.B
Syntax

Subtract source address-word with carry from destination address-word
Subtract source word with carry from destination word
Subtract source byte with carry from destination byte
SUBCX.A src,dst
SUBCX src,dst or SUBCX.W src,dst
SUBCX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

(.not. src) + C + dst → dst or dst – (src – 1) + C → dst
The source operand is subtracted from the destination operand. This is made by adding
the 1s complement of the source + carry to the destination. The source operand is not
affected, the result is written to the destination operand. Both operands may be located
in the full address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow).
OSCOFF, CPUOFF, and GIE are not affected.
A 20-bit constant 87654h is subtracted from R5 with the carry from the previous
instruction.

SUBCX.A

Example

CPUX

@R5+,0(R7)
@R5+,2(R7)
@R5+,4(R7)

; Subtract LSBs. R5 + 2
; Subtract MIDs with C. R5 + 2
; Subtract MSBs with C. R5 + 2

Byte CNT is subtracted from the byte R12 points to. The carry of the previous instruction
is used. 20-bit addresses.

SUBCX.B

248

; Subtract 87654h + C from R5

A 48-bit number (3 words) pointed to by R5 (20-bit address) is subtracted from a 48-bit
counter in RAM, pointed to by R7. R5 auto-increments to point to the next 48-bit number.

SUBX.W
SUBCX.W
SUBCX.W

Example

#87654h,R5

&CNT,0(R12)

; Subtract byte CNT from @R12

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.34 SWPBX
SWPBX.A
SWPBX.[W]
Syntax

Swap bytes of lower word
Swap bytes of word
SWPBX.A dst
SWPBX dst or

Operation
Description

Status Bits
Mode Bits
Example

MOVX.A
SWPBX.A

Example

SWPBX.W dst

dst.15:8 ↔ dst.7:0
Register mode: Rn.15:8 are swapped with Rn.7:0. When the .A extension is used,
Rn.19:16 are unchanged. When the .W extension is used, Rn.19:16 are cleared.
Other modes: When the .A extension is used, bits 31:20 of the destination address are
cleared, bits 19:16 are left unchanged, and bits 15:8 are swapped with bits 7:0. When
the .W extension is used, bits 15:8 are swapped with bits 7:0 of the addressed word.
Status bits are not affected.
OSCOFF, CPUOFF, and GIE are not affected.
Exchange the bytes of RAM address-word EDE
#23456h,&EDE
EDE

; 23456h -> EDE
; 25634h -> EDE

Exchange the bytes of R5

MOVA
SWPBX.W

#23456h,R5
R5

; 23456h -> R5
; 05634h -> R5

Before SWPBX.A
19
16 15

8

X

7

0

High Byte

Low Byte

After SWPBX.A
19

16

15

8

X

7

0

Low Byte

High Byte

Figure 4-55. Swap Bytes SWPBX.A Register Mode
Before SWPBX.A
31
20 19
16
X

X

After SWPBX.A
31
20 19
0

8

15

7

High Byte

16

X

Low Byte

8

15
Low Byte

0

7

0
High Byte

Figure 4-56. Swap Bytes SWPBX.A In Memory

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

249

Instruction Set Description

www.ti.com

Before SWPBX
19
16 15
X

8

7

High Byte

0
Low Byte

After SWPBX
19

16

15

0

8

7

Low Byte

0
High Byte

Figure 4-57. Swap Bytes SWPBX[.W] Register Mode
Before SWPBX
15

8

7

High Byte

0
Low Byte

After SWPBX
15

8
Low Byte

7

0
High Byte

Figure 4-58. Swap Bytes SWPBX[.W] In Memory

250

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.35 SXTX
SXTX.A
SXTX.[W]
Syntax

Extend sign of lower byte to address-word
Extend sign of lower byte to word
SXTX.A dst
SXTX dst or

SXTX.W dst

dst.7 → dst.15:8, Rdst.7 → Rdst.19:8 (Register mode)
Register mode: The sign of the low byte of the operand (Rdst.7) is extended into the bits
Rdst.19:8.
Other modes: SXTX.A: the sign of the low byte of the operand (dst.7) is extended into
dst.19:8. The bits dst.31:20 are cleared.
SXTX[.W]: the sign of the low byte of the operand (dst.7) is extended into dst.15:8.
N: Set if result is negative, reset otherwise
Z: Set if result is zero, reset otherwise
C: Set if result is not zero, reset otherwise (C = .not.Z)
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The signed 8-bit data in EDE.7:0 is sign extended to 20 bits: EDE.19:8. Bits 31:20
located in EDE+2 are cleared.

Operation
Description

Status Bits

Mode Bits
Example

SXTX.A

&EDE

; Sign extended EDE -> EDE+2/EDE

SXTX.A Rdst
19

16 15

8 7 6

0

S

SXTX.A dst
31
0

20 19
......

16 15

8 7 6

0

0

S

Figure 4-59. Sign Extend SXTX.A
SXTX[.W] Rdst
19

16 15

8

7

6

0

6

0

S

SXTX[.W] dst
15

8

7
S

Figure 4-60. Sign Extend SXTX[.W]

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

251

Instruction Set Description

www.ti.com

4.6.3.36 TSTX
* TSTX.A
* TSTX.[W]
* TSTX.B
Syntax

Test destination address-word
Test destination word
Test destination byte
TSTX.A dst
TSTX dst or
TSTX.B dst

TSTX.W dst

Operation

dst + 0FFFFFh + 1
dst + 0FFFFh + 1
dst + 0FFh + 1

Emulation

CMPX.A #0,dst
CMPX #0,dst
CMPX.B #0,dst

Description
Status Bits

Mode Bits
Example

LEOPOS
LEONEG
LEOZERO

252

CPUX

The destination operand is compared with zero. The status bits are set according to the
result. The destination is not affected.
N: Set if destination is negative, reset if positive
Z: Set if destination contains zero, reset otherwise
C: Set
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
RAM byte LEO is tested; PC is pointing to upper memory. If it is negative, continue at
LEONEG; if it is positive but not zero, continue at LEOPOS.
TSTX.B
JN
JZ
......
......
......

LEO
LEONEG
LEOZERO

;
;
;
;
;
;

Test LEO
LEO is negative
LEO is zero
LEO is positive but not zero
LEO is negative
LEO is zero

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.3.37 XORX
XORX.A
XORX.[W]
XORX.B
Syntax

Exclusive OR source address-word with destination address-word
Exclusive OR source word with destination word
Exclusive OR source byte with destination byte
XORX.A src,dst
XORX src,dst or XORX.W src,dst
XORX.B src,dst

Operation
Description

Status Bits

Mode Bits
Example

XORX.A

Example
XORX.W

Example

XORX.B
INV.B

src .xor. dst → dst
The source and destination operands are exclusively ORed. The result is placed into
the destination. The source operand is not affected. The previous contents of the
destination are lost. Both operands may be located in the full address space.
N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z: Set if result is zero, reset otherwise
C: Set if result is not zero, reset otherwise (carry = .not. Zero)
V: Set if both operands are negative (before execution), reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
Toggle bits in address-word CNTR (20-bit data) with information in address-word TONI
(20-bit address)
TONI,&CNTR

; Toggle bits in CNTR

A table word pointed to by R5 (20-bit address) is used to toggle bits in R6.
@R5,R6

; Toggle bits in R6. R6.19:16 = 0

Reset to zero those bits in the low byte of R7 that are different from the bits in byte EDE
(20-bit address)
EDE,R7
R7

; Set different bits to 1 in R7
; Invert low byte of R7. R7.19:8 = 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

253

Instruction Set Description

www.ti.com

4.6.4 Address Instructions
MSP430X address instructions are instructions that support 20-bit operands but have restricted
addressing modes. The addressing modes are restricted to the Register mode and the Immediate mode,
except for the MOVA instruction. Restricting the addressing modes removes the need for the additional
extension-word op-code improving code density and execution time. The MSP430X address instructions
are listed and described in the following pages.

254

CPUX

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.4.1

ADDA
ADDA
Syntax

Add 20-bit source to a 20-bit destination register
ADDA Rsrc,Rdst
ADDA #imm20,Rdst

Operation
Description
Status Bits

Mode Bits
Example
ADDA
JC
...

src + Rdst → Rdst
The 20-bit source operand is added to the 20-bit destination CPU register. The previous
contents of the destination are lost. The source operand is not affected.
N: Set if result is negative (Rdst.19 = 1), reset if positive (Rdst.19 = 0)
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the 20-bit result, reset otherwise
V: Set if the result of two positive operands is negative, or if the result of two negative
numbers is positive, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
R5 is increased by 0A4320h. The jump to TONI is performed if a carry occurs.
#0A4320h,R5
TONI

; Add A4320h to 20-bit R5
; Jump on carry
; No carry occurred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

255

Instruction Set Description

4.6.4.2

www.ti.com

BRA
* BRA
Syntax
Operation
Emulation
Description

Status Bits

Mode Bits
Examples

BRA
BRA

Branch to destination
BRA dst

dst → PC
MOVA dst,PC

An unconditional branch is taken to a 20-bit address anywhere in the full address
space. All seven source addressing modes can be used. The branch instruction is an
address-word instruction. If the destination address is contained in a memory location
X, it is contained in two ascending words: X (LSBs) and (X + 2) (MSBs).
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Examples for all addressing modes are given.
Immediate mode: Branch to label EDE located anywhere in the 20-bit address space or
branch directly to address.
#EDE
#01AA04h

; MOVA

#imm20,PC

Symbolic mode: Branch to the 20-bit address contained in addresses EXEC (LSBs) and
EXEC+2 (MSBs). EXEC is located at the address (PC + X) where X is within +32 K.
Indirect addressing.
BRA

EXEC

; MOVA

z16(PC),PC

Note: If the 16-bit index is not sufficient, a 20-bit index may be used with the following
instruction.
MOVX.A

EXEC,PC

; 1M byte range with 20-bit index

Absolute mode: Branch to the 20-bit address contained in absolute addresses EXEC
(LSBs) and EXEC+2 (MSBs). Indirect addressing.
BRA

&EXEC

; MOVA

&abs20,PC

Register mode: Branch to the 20-bit address contained in register R5. Indirect R5.
BRA

R5

; MOVA

R5,PC

Indirect mode: Branch to the 20-bit address contained in the word pointed to by register
R5 (LSBs). The MSBs have the address (R5 + 2). Indirect, indirect R5.
BRA

256

CPUX

@R5

; MOVA

@R5,PC

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

Indirect, Auto-Increment mode: Branch to the 20-bit address contained in the words
pointed to by register R5 and increment the address in R5 afterwards by 4. The next
time the software flow uses R5 as a pointer, it can alter the program execution due to
access to the next address in the table pointed to by R5. Indirect, indirect R5.
BRA

@R5+

; MOVA

@R5+,PC. R5 + 4

Indexed mode: Branch to the 20-bit address contained in the address pointed to by
register (R5 + X) (for example, a table with addresses starting at X). (R5 + X) points to
the LSBs, (R5 + X + 2) points to the MSBs of the address. X is within R5 + 32 K.
Indirect, indirect (R5 + X).
BRA

X(R5)

; MOVA

z16(R5),PC

Note: If the 16-bit index is not sufficient, a 20-bit index X may be used with the following
instruction:
MOVX.A

X(R5),PC

; 1M byte range with 20-bit index

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

257

Instruction Set Description

4.6.4.3

www.ti.com

CALLA
CALLA
Syntax
Operation

Description

Status Bits

Mode Bits
Examples

CALLA
CALLA

Call a subroutine
CALLA dst

dst → tmp 20-bit dst is evaluated and stored
SP – 2 → SP
PC.19:16 → @SP updated PC with return address to TOS (MSBs)
SP – 2 → SP
PC.15:0 → @SP updated PC to TOS (LSBs)
tmp → PC saved 20-bit dst to PC
A subroutine call is made to a 20-bit address anywhere in the full address space. All
seven source addressing modes can be used. The call instruction is an address-word
instruction. If the destination address is contained in a memory location X, it is
contained in two ascending words, X (LSBs) and (X + 2) (MSBs). Two words on the
stack are needed for the return address. The return is made with the instruction RETA.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Examples for all addressing modes are given.
Immediate mode: Call a subroutine at label EXEC or call directly an address.
#EXEC
#01AA04h

; Start address EXEC
; Start address 01AA04h

Symbolic mode: Call a subroutine at the 20-bit address contained in addresses EXEC
(LSBs) and EXEC+2 (MSBs). EXEC is located at the address (PC + X) where X is
within +32 K. Indirect addressing.
CALLA

EXEC

; Start address at @EXEC. z16(PC)

Absolute mode: Call a subroutine at the 20-bit address contained in absolute addresses
EXEC (LSBs) and EXEC+2 (MSBs). Indirect addressing.
CALLA

&EXEC

; Start address at @EXEC

Register mode: Call a subroutine at the 20-bit address contained in register R5. Indirect
R5.
CALLA

R5

; Start address at @R5

Indirect mode: Call a subroutine at the 20-bit address contained in the word pointed to
by register R5 (LSBs). The MSBs have the address (R5 + 2). Indirect, indirect R5.
CALLA

258

CPUX

@R5

; Start address at @R5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

Indirect, Auto-Increment mode: Call a subroutine at the 20-bit address contained in the
words pointed to by register R5 and increment the 20-bit address in R5 afterwards by 4.
The next time the software flow uses R5 as a pointer, it can alter the program execution
due to access to the next word address in the table pointed to by R5. Indirect, indirect
R5.
CALLA

@R5+

; Start address at @R5. R5 + 4

Indexed mode: Call a subroutine at the 20-bit address contained in the address pointed
to by register (R5 + X); for example, a table with addresses starting at X. (R5 + X)
points to the LSBs, (R5 + X + 2) points to the MSBs of the word address. X is within R5
+ 32 K. Indirect, indirect (R5 + X).
CALLA

X(R5)

; Start address at @(R5+X). z16(R5)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

259

Instruction Set Description

4.6.4.4

CLRA
* CLRA
Syntax
Operation
Emulation
Description
Status Bits
Example
CLRA

260

www.ti.com

CPUX

Clear 20-bit destination register
CLRA Rdst

0 → Rdst
MOVA #0,Rdst

The destination register is cleared.
Status bits are not affected.
The 20-bit value in R10 is cleared.
R10

; 0 -> R10

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.4.5

CMPA
CMPA
Syntax

Compare the 20-bit source with a 20-bit destination register
CMPA Rsrc,Rdst
CMPA #imm20,Rdst

Operation
Description

Status Bits

Mode Bits
Example

CMPA
JEQ
...

Example

CMPA
JGE
...

(.not. src) + 1 + Rdst or Rdst – src
The 20-bit source operand is subtracted from the 20-bit destination CPU register. This
is made by adding the 1s complement of the source + 1 to the destination register. The
result affects only the status bits.
N: Set if result is negative (src > dst), reset if positive (src ≤ dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB, reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source
operand from a negative destination operand delivers a positive result, reset
otherwise (no overflow)
OSCOFF, CPUOFF, and GIE are not affected.
A 20-bit immediate operand and R6 are compared. If they are equal, the program
continues at label EQUAL.
#12345h,R6
EQUAL

; Compare R6 with 12345h
; R6 = 12345h
; Not equal

The 20-bit values in R5 and R6 are compared. If R5 is greater than (signed) or equal to
R6, the program continues at label GRE.
R6,R5
GRE

; Compare R6 with R5 (R5 - R6)
; R5 >= R6
; R5 < R6

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

261

Instruction Set Description

4.6.4.6

DECDA
* DECDA
Syntax
Operation
Emulation
Description
Status Bits

Mode Bits
Example
DECDA

262

www.ti.com

CPUX

Double-decrement 20-bit destination register
DECDA Rdst

Rdst – 2 → Rdst
SUBA #2,Rdst

The destination register is decremented by two. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if Rdst contained 2, reset otherwise
C: Reset if Rdst contained 0 or 1, set otherwise
V: Set if an arithmetic overflow occurs, otherwise reset
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R5 is decremented by 2.
R5

; Decrement R5 by two

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.4.7

INCDA
* INCDA
Syntax
Operation
Emulation
Description
Status Bits

Mode Bits
Example
INCDA

Double-increment 20-bit destination register
INCDA Rdst

Rdst + 2 → Rdst
ADDA #2,Rdst

The destination register is incremented by two. The original contents are lost.
N: Set if result is negative, reset if positive
Z: Set if Rdst contained 0FFFFEh, reset otherwise
Set if Rdst contained 0FFFEh, reset otherwise
Set if Rdst contained 0FEh, reset otherwise
C: Set if Rdst contained 0FFFFEh or 0FFFFFh, reset otherwise
Set if Rdst contained 0FFFEh or 0FFFFh, reset otherwise
Set if Rdst contained 0FEh or 0FFh, reset otherwise
V: Set if Rdst contained 07FFFEh or 07FFFFh, reset otherwise
Set if Rdst contained 07FFEh or 07FFFh, reset otherwise
Set if Rdst contained 07Eh or 07Fh, reset otherwise
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R5 is incremented by two.
R5

; Increment R5 by two

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

263

Instruction Set Description

4.6.4.8

www.ti.com

MOVA
MOVA
Syntax

Move the 20-bit source to the 20-bit destination
MOVA Rsrc,Rdst
MOVA
MOVA
MOVA
MOVA
MOVA
MOVA
MOVA
MOVA

Operation
Description
Status Bits

Mode Bits
Examples
MOVA

#imm20,Rdst
z16(Rsrc),Rdst
EDE,Rdst
&abs20,Rdst
@Rsrc,Rdst
@Rsrc+,Rdst
Rsrc,z16(Rdst)
Rsrc,&abs20

src → Rdst
Rsrc → dst
The 20-bit source operand is moved to the 20-bit destination. The source operand is not
affected. The previous content of the destination is lost.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Copy 20-bit value in R9 to R8
R9,R8

; R9 -> R8

Write 20-bit immediate value 12345h to R12
MOVA

#12345h,R12

; 12345h -> R12

Copy 20-bit value addressed by (R9 + 100h) to R8. Source operand in addresses (R9 +
100h) LSBs and (R9 + 102h) MSBs.
MOVA

100h(R9),R8

; Index: + 32 K. 2 words transferred

Move 20-bit value in 20-bit absolute addresses EDE (LSBs) and EDE+2 (MSBs) to R12
MOVA

&EDE,R12

; &EDE -> R12. 2 words transferred

Move 20-bit value in 20-bit addresses EDE (LSBs) and EDE+2 (MSBs) to R12. PC
index ± 32 K.
MOVA

EDE,R12

; EDE -> R12. 2 words transferred

Copy 20-bit value R9 points to (20 bit address) to R8. Source operand in addresses
@R9 LSBs and @(R9 + 2) MSBs.
MOVA

264

CPUX

@R9,R8

; @R9 -> R8. 2 words transferred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

Copy 20-bit value R9 points to (20 bit address) to R8. R9 is incremented by four
afterwards. Source operand in addresses @R9 LSBs and @(R9 + 2) MSBs.
MOVA

@R9+,R8

; @R9 -> R8. R9 + 4. 2 words transferred.

Copy 20-bit value in R8 to destination addressed by (R9 + 100h). Destination operand
in addresses @(R9 + 100h) LSBs and @(R9 + 102h) MSBs.
MOVA

R8,100h(R9)

; Index: +- 32 K. 2 words transferred

Move 20-bit value in R13 to 20-bit absolute addresses EDE (LSBs) and EDE+2 (MSBs)
MOVA

R13,&EDE

; R13 -> EDE. 2 words transferred

Move 20-bit value in R13 to 20-bit addresses EDE (LSBs) and EDE+2 (MSBs). PC
index ± 32 K.
MOVA

R13,EDE

; R13 -> EDE. 2 words transferred

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

265

Instruction Set Description

4.6.4.9

RETA
* RETA
Syntax
Operation

Return from subroutine

Emulation
Description

MOVA @SP+,PC

Status Bits

Mode Bits
Example

SUBR

266

www.ti.com

CPUX

RETA

@SP → PC.15:0 LSBs (15:0) of saved PC to PC.15:0
SP + 2 → SP
@SP → PC.19:16 MSBs (19:16) of saved PC to PC.19:16
SP + 2 → SP
The 20-bit return address information, pushed onto the stack by a CALLA instruction, is
restored to the PC. The program continues at the address following the subroutine call.
The SR bits SR.11:0 are not affected. This allows the transfer of information with these
bits.
N: Not affected
Z: Not affected
C: Not affected
V: Not affected
OSCOFF, CPUOFF, and GIE are not affected.
Call a subroutine SUBR from anywhere in the 20-bit address space and return to the
address after the CALLA
CALLA
...
PUSHM.A
...
POPM.A
RETA

#SUBR
#2,R14
#2,R14

;
;
;
;
;
;

Call subroutine starting at SUBR
Return by RETA to here
Save R14 and R13 (20 bit data)
Subroutine code
Restore R13 and R14 (20 bit data)
Return (to full address space)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Instruction Set Description

www.ti.com

4.6.4.10 SUBA
SUBA
Syntax

Subtract 20-bit source from 20-bit destination register
SUBA Rsrc,Rdst
SUBA #imm20,Rdst

Operation
Description

Status Bits

Mode Bits
Example

SUBA
JC
...

(.not.src) + 1 + Rdst → Rdst or Rdst – src → Rdst
The 20-bit source operand is subtracted from the 20-bit destination register. This is
made by adding the 1s complement of the source + 1 to the destination. The result is
written to the destination register, the source is not affected.
N: Set if result is negative (src > dst), reset if positive (src ≤ dst)
Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)
C: Set if there is a carry from the MSB (Rdst.19), reset otherwise
V: Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source
operand from a negative destination operand delivers a positive result, reset
otherwise (no overflow)
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R5 is subtracted from R6. If a carry occurs, the program continues at
label TONI.
R5,R6
TONI

; R6 - R5 -> R6
; Carry occurred
; No carry

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CPUX

267

Instruction Set Description

www.ti.com

4.6.4.11 TSTA
* TSTA
Syntax
Operation

Test 20-bit destination register

Emulation
Description

CMPA #0,Rdst

Status Bits

Mode Bits
Example

R7POS
R7NEG
R7ZERO

268

CPUX

TSTA Rdst

dst + 0FFFFFh + 1
dst + 0FFFFh + 1
dst + 0FFh + 1
The destination register is compared with zero. The status bits are set according to the
result. The destination register is not affected.
N: Set if destination register is negative, reset if positive
Z: Set if destination register contains zero, reset otherwise
C: Set
V: Reset
OSCOFF, CPUOFF, and GIE are not affected.
The 20-bit value in R7 is tested. If it is negative, continue at R7NEG; if it is positive but
not zero, continue at R7POS.
TSTA
R7
JN
R7NEG
JZ
R7ZERO
......
......
......

;
;
;
;
;
;

Test R7
R7 is negative
R7 is zero
R7 is positive but not zero
R7 is negative
R7 is zero

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 5
SLAU445D – October 2014 – Revised December 2015

FRAM Controller (FRCTL)
This chapter describes the operation of the FRAM controller.
Topic

5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10

...........................................................................................................................
FRAM Introduction............................................................................................
FRAM Organization ...........................................................................................
FRCTL Module Operation ..................................................................................
Programming FRAM Devices .............................................................................
Wait State Control ............................................................................................
FRAM ECC .......................................................................................................
FRAM Write Back .............................................................................................
FRAM Power Control ........................................................................................
FRAM Cache ....................................................................................................
FRCTL Registers ..............................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Controller (FRCTL)

Page

270
270
270
271
271
272
272
272
273
274

269

FRAM Introduction

5.1

www.ti.com

FRAM Introduction
FRAM is a nonvolatile memory that reads and writes like standard SRAM. The MSP430 FRAM features
include:
• Byte or word write access
• Automatic and programmable wait state control with independent wait state settings for access and
cycle times
• Error correction code (ECC) with bit error correction, extended bit error detection, and flag indicators
• Cache for fast read
• Power control for disabling FRAM if it is not used
Figure 5-1 shows the block diagram of the FRAM Controller.
Control
Registers

MAB
FRAM
Controller
FRAM
Memory
Array

MDB
Cache

Figure 5-1. FRAM Controller Block Diagram

5.2

FRAM Organization
The FRAM address space is linear with the exception of the User Information Memory and the Device
Descriptor Information (TLV).

5.3

FRCTL Module Operation
The FRAM module can be read in a similar fashion to SRAM and needs no special requirements.
A FRAM read always requires a write back to the same memory location with the same information read.
This write back is part of the FRAM module itself and requires no user interaction. These write backs are
different from the normal write access from application code.
The FRAM module has built-in error correction code (ECC) logic that can correct bit errors and detect
multiple bit errors. Two flags are available that indicate the presence of an error.
The CBDIFG is set when a correctable bit error is detected. If CBDIE is also set, a System NMI event
(SYSNMI) occurs.
The UBDIFG is set when a multiple bit error which is not correctable is detected. If UBDIE is also set, a
System NMI event (SYSNMI) occurs.
Upon correctable or uncorrectable bit errors, the program vectors to the SYSSNIV if the NMI is enabled. If
desired, a system reset event (SYSRST) can be generated by setting the UBDRSTEN bit. If an
uncorrectable error is detected, a PUC is initiated and the program vectors to the SYSRSTIV.

270

FRAM Controller (FRCTL)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Programming FRAM Devices

www.ti.com

5.4

Programming FRAM Devices
There are three options for programming an MSP430 FRAM device. All options support in-system
programming.
• Program through JTAG or the Spy-Bi-Wire interface
• Program through the BSL
• Program through a custom solution

5.4.1 Programming FRAM Through JTAG or Spy-Bi-Wire
Devices can be programmed through the JTAG port or the Spy-Bi-Wire port. The JTAG interface requires
access to TDI, TDO, TMS, TCK, TEST, ground, and optionally VCC and RST/NMI. Spy-Bi-Wire interface
requires access to TEST, RST/NMI, ground and optionally VCC. For more details, see the MSP430
Programming Via the JTAG Interface User's Guide (SLAU320).

5.4.2 Programming FRAM Through the Bootloader (BSL)
Every device contains a BSL stored in ROM. The BSL enables users to read or program the FRAM or
RAM using a UART serial interface. Access to the FRAM through the BSL is protected by a 256-bit userdefined password. For more details, see the MSP430 Programming With the Bootloader (BSL) User's
Guide (SLAU319).

5.4.3 Programming FRAM Through a Custom Solution
The ability of the CPU to write to its own FRAM allows for in-system and external custom programming
solutions. The user can choose to provide data to the device through any means available (for example,
UART or SPI). User-developed software can receive the data and program the FRAM. Because this type
of solution is developed by the user, it can be completely customized to fit the application needs for
programming or updating the FRAM.

5.5

Wait State Control
The system clock for the CPU may exceed the FRAM access and cycle time requirements. For these
scenarios, a wait state generator mechanism is implemented. The Recommended Operating Conditions of
the device-specific data sheet lists the frequency ranges with the required wait state settings. The number
of wait states is controlled by the NWAITS[2:0] bits in the FRCTL0 register.
To increase the system clock frequency beyond the maximum frequency allowed by the current wait state
setting, the following steps are required:
1. Increase the number of wait states by configuring NWAITS[2:0] according to the target frequency.
2. Increase the frequency to the new target.
To decrease the system clock frequency to a range that supports fewer wait states, the following steps are
required:
1. Decrease frequency to the new target.
2. Decrease number of wait states by configuring NWAITS[2:0] according to the new frequency setting.
To ensure memory integrity, a mechanism is implemented that resets the device with a PUC if the system
clock frequency and the wait state settings violate the FRAM access timing.
NOTE: Wait State Settings
•
The device starts with zero wait states.
•
Correct wait state settings must be ensured, otherwise a PUC might be generated to
avoid erratic FRAM accesses.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Controller (FRCTL)

271

Wait State Control

www.ti.com

5.5.1 Wait State and Cache Hit
The FRAM controller contains a cache with two cache sets. Each of these cache sets contains two lines
that are preloaded with four words (64 bits) during one access cycle. An intelligent logic selects one of the
cache lines to preload FRAM data and preserves recently accessed data in the other cache. If one of the
four words stored in one of the cache lines is requested (a cache hit), no FRAM access occurs; instead, a
cache request occurs. No wait state is needed for a cache request, and the data is accessed with full
system speed. However, if none of the words that are available in the cache are requested (a cache
miss), the wait state controls the CPU to ensure proper FRAM access.

5.6

FRAM ECC
The FRAM supports bit error correction and uncorrectable bit error detection. The UBDIFG FRAM
uncorrectable bit error flag is set if an uncorrectable bit error has been detected in the FRAM error
detection logic. The CBDIFG FRAM correctable bit error flag is set if a correctable bit error has been
detected and corrected. UBDRSTEN enable a Power Up Clear (PUC) reset if an uncorrectable bit error is
detected, UBDIE enables a NMI event if an uncorrectable bit error is detected. CBDIE enables a NMI
event if a marginal correctable bit error is detected and corrected.

5.7

FRAM Write Back
All reads from FRAM requires a write back of the previously read content. This write back is performed
under all circumstances without any interaction from a user.

5.8

FRAM Power Control
The FRAM controller can disable the power supply for the FRAM array. By setting FRPWR = 0, the FRAM
array supply is disabled, register accesses in FRAM controller are still possible. Memory accesses
pointing into the FRAM address space automatically reset the FRPWR = 1 and re-enable the power
supply of the FRAM. A second control bit FRLPMPWR is used to delay the power-up of the FRAM after
LPM exit. With FRLPMPWR = 1, the FRAM is activated directly on exit from LPM. FRLPMPWR = 0 delays
the activation of the FRAM to the first access into the FRAM address space. For LPM0, the FRAM power
state during LPM0 is determinated and memorized from the previous state in active mode. If a FRAM
power is disabled, a memory access automatically inserts wait states to ensure sufficient timing for the
FRAM power-up and access. Access to FRAM that can be served from cache do not change the power
state of the FRAM power control.
A PUC reset forces the state machine to Active with FRAM enabled.
Figure 5-2 shows the activation flow of the FRAM controller.

272

FRAM Controller (FRCTL)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Cache

www.ti.com

PUC

FRPWR = 1
FRPWR = 0

ACTIVEMODE
w.FRAM

FRAM access

FRAM_POWER= on
FRPWR = 1

ACTIVEMODE
w.o.FRAM
FRAM_POWER = off
FRPWR = 0

LPM exit
&&
FRAM_POWER = on

LPM exit
&&
FRAM_POWER = off

LPM entry

LPM entry

LPM0
FRAM_POWER = FRPWR
LPM entry

LPM entry

LPM exit
&&
FRLPMPWR = 1

LPM exit
&&
FRLPMPWR = 0

LPM1/2/3/4
FRAM_POWER = off

Figure 5-2. FRAM Power Control Diagram

5.9

FRAM Cache
The FRAM controller implements a read cache to provide a speed benefit when running the CPU at higher
speeds than the FRAM supports without wait states. The cache implemented is a 2-way associative cache
with 4 cache lines of 64 bit size. Memory read accesses on consecutive addresses can be executed
without wait states when they are within the same cache line.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Controller (FRCTL)

273

FRCTL Registers

www.ti.com

5.10 FRCTL Registers
The FRCTL registers and their address offsets are listed in Table 5-1 . The base address of the FRCTL
module can be found in the device-specific data sheet.
The password defined in the FRCTL0 register controls access to all FRCTL registers. When the correct
password is written, write access to the registers is enabled. The write access is disabled by writing a
wrong password in byte mode to the FRCTL upper byte. Word accesses to FRCTL with a wrong password
triggers a PUC. A write access to a register other than FRCTL while write access is not enabled causes a
PUC.
NOTE: All registers have word or byte register access. For a generic registerANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 5-1. FRCTL Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

FRCTL0

FRAM Controller Control 0

Read/write

Word

9600h

Section 5.10.1

Read/Write

Byte

00h

Read/Write

Byte

96h

Read/write

Word

0006h

00h
01h
04h

FRCTL0_H
GCCTL0

General Control 0

04h

GCCTL0_L

Read/Write

Byte

06h

05h

GCCTL0_H

Read/Write

Byte

00h

Read/write

Word

0000h

06h

274

FRCTL0_L

GCCTL1

General Control 1

06h

GCCTL1_L

Read/Write

Byte

00h

07h

GCCTL1_H

Read/Write

Byte

00h

FRAM Controller (FRCTL)

Section 5.10.2

Section 5.10.3

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRCTL Registers

www.ti.com

5.10.1 FRCTL0 Register
FRAM Controller Control Register 0
Figure 5-3. FRCTL0 Register
15

14

13

12

11

10

9

8

rw

rw

1

0

r-0

r-0

FRCTLPW
rw

rw

rw

rw

rw

rw

7
Reserved
r-0

6

5
NWAITS
rw-[0]

4

3

2

rw-[0]

Reserved
rw-[0]

r-0

r-0

Table 5-2. FRCTL0 Register Description
Bit

Field

Type

Reset

Description

15-8

FRCTLPW

RW

96h

FRCTLPW password. Always reads as 96h.
To enable write access to the FRCTL registers, write A5h. A word write of any
other value causes a PUC.
After a correct password is written and register access is enabled, write a wrong
password in byte mode to disable the access. In this case, no PUC is generated.

7

Reserved

R

0h

Reserved. Always reads as 0.

6-4

NWAITS

RW

0h

Wait state control. Specifies number of wait states (0 to 7) required for an FRAM
access (cache miss). 0 implies no wait states.

3

Reserved

R

0h

Reserved. Must be written as 0.

2-0

Reserved

R

0h

Reserved. Always reads as 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Controller (FRCTL)

275

FRCTL Registers

www.ti.com

5.10.2 GCCTL0 Register
General Control Register 0
Figure 5-4. GCCTL0 Register
15

14

13

12

11

10

9

8

Reserved
r-0

r-0

r-0

r-0

r-0

r-0

r-0

r-0

7
UBDRSTEN
rw-[0]

6
UBDIE
rw-[0]

5
CBDIE
rw-[0]

4
Reserved
r-0

3
Reserved
rw-0

2
FRPWR
rw-1

1
FRLPMPWR
rw-1

0
Reserved
r-0

Table 5-3. GCCTL0 Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved. Always reads as 0.

7

UBDRSTEN

RW

0h

Enable power up clear (PUC) reset if FRAM uncorrectable bit error detected.
The bits UBDRSTEN and UBDIE are mutual exclusive and are not allowed to be
set simultaneously. Only one error handling can be selected at one time.
0b = PUC not initiated on uncorrectable bit detection flag.
1b = PUC initiated on uncorrectable bit detection flag. Generates vector in
SYSRSTIV.

6

UBDIE

RW

0h

Enable NMI event if uncorrectable bit error detected.
The bits UBDRSTEN and UBDIE are mutual exclusive and are not allowed to be
set simultaneously. Only one error handling can be selected at one time.
0b = Uncorrectable bit detection interrupt disabled.
1b = Uncorrectable bit detection interrupt enabled. Generates vector in
SYSSNIV.

5

CBDIE

RW

0h

Enable NMI event if correctable bit error detected.
0b = Correctable bit detection interrupt disabled.
1b = Correctable bit detection interrupt enabled. Generates vector in SYSSNIV.

4

Reserved

R

0h

Reserved. Always reads as 0.

3

Reserved

RW

0h

Reserved. Must be written as 0.

2

FRPWR

RW

1h

FRAM power control.
Writing to the register enables or disables the FRAM power supply. The read of
the register returns the actual state of the FRAM power supply, also reflecting a
possible delay after enabling the power supply. FRPWR = 1 indicates that the
FRAM power is up and ready.
0b = FRAM power supply disabled
1b = FRAM power supply enabled

1

FRLPMPWR

RW

1h

Enables FRAM auto power up after LPM
0b = FRAM startup is delayed to the first FRAM access after LPM exit
1b = FRAM is powered up instantly with LPM exit.

0

Reserved

R

0h

Reserved. Always reads as 0.

276

FRAM Controller (FRCTL)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRCTL Registers

www.ti.com

5.10.3 GCCTL1 Register
General Control Register 1
Figure 5-5. GCCTL1 Register
15

14

13

12

11

10

9

8

Reserved
r-0

r-0

7

6

r-0

r-0

r-0

r-0

r-0

r-0

5

4

r-0

r-0

3
ACCTEIFG
rw-0

2
UBDIFG
rw-[0]

1
CBDIFG
rw-[0]

0
Reserved
r-0

Reserved
r-0

r-0

Table 5-4. GCCTL1 Register Description
Bit

Field

Type

Reset

Description

15-3

Reserved

R

0h

Reserved. Always reads as 0.

3

ACCTEIFG

RW

0h

Access time error flag. This flag is set and a reset PUC is generated if a wrong
setting for NWAITS is set and the FRAM access time is violated. This bit is
cleared by software or by reading the system reset vector word SYSRSTIV if it is
the highest pending flag. This bit is write 0 only, write 1 has no effect.
Note: The ACCTEIFG bit may be set in debug mode when the system frequency
is configured to be greater than 8 MHz, regardless of the wait states (NWAITS).
In the case, it is not an FRAM access violation. The ACCTEIFG bit does not
trigger a PUC or change the SYSRSTIV register value. The ACCTEIFG bit is
cleared only by writing 0. It is recommended to use SYSRESTIV register to
check FRAM access violation error to avoid confusion.

2

UBDIFG

RW

0h

FRAM uncorrectable bit error flag. This interrupt flag is set if an uncorrectable bit
error has been detected in the FRAM memory error detection logic. This bit is
cleared by software or by reading the system NMI vector word SYSSNIV if it is
the highest pending interrupt flag. This bit is write 0 only and write 1 has no
effect.
0b = No interrupt pending
1b = Interrupt pending. Can be cleared by user or by reading SYSSNIV.

1

CBDIFG

RW

0h

FRAM correctable bit error flag. This interrupt flag is set if a correctable bit error
has been detected and corrected in the FRAM memory error detection logic. This
bit is cleared by software or by reading the system NMI vector word SYSSNIV if
it is the highest pending interrupt flag. This bit is write 0 only and write 1 has no
effect.
0b = No interrupt pending
1b = Interrupt pending. Can be cleared by user or by reading SYSSNIV

0

Reserved

R

0h

Reserved. Always reads as 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

FRAM Controller (FRCTL)

277

Chapter 6
SLAU445D – October 2014 – Revised December 2015

Backup Memory (BKMEM)
The Backup Memory provides up to 256 bytes that are retained during LPM3.5. The size of the Backup
Memory varies by device–see the device-specific data sheet for details. This chapter describes the
Backup Memory functionality and features.
Topic

6.1
6.2

278

...........................................................................................................................

Page

Backup Memory Introduction ............................................................................. 279
BKMEM Registers ............................................................................................. 279

Backup Memory (BKMEM)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Backup Memory Introduction

www.ti.com

6.1

Backup Memory Introduction
Features of the Backup Memory include:
• Configurable from 32 bytes to 256 bytes
• Supports modes from AM to LPM3.5
• Supports word or byte access

6.2

BKMEM Registers
Table 6-1 lists the Backup Memory registers. The base address of the Backup Memory module can be
found in the device-specific data sheet.
Table 6-1. BKMEM Registers
Offset

Acronym

Register Name

Type

Access

Reset

00h

BAKMEM0

Backup Memory 0

Read/write

Word

Undefined

Read/write

Byte

Read/write

Byte

Read/write

Word

00h

BAKMEM0_L

01h

BAKMEM0_H

02h

(1)

BAKMEM1

Backup Memory 1 (1)

02h

BAKMEM1_L

Read/write

Byte

03h

BAKMEM1_H

Read/write

Byte

Undefined

Words 2 to 127, if available, follow the same format. See the device-specific data sheet for more details.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Backup Memory (BKMEM)

279

Chapter 7
SLAU445D – October 2014 – Revised December 2015

Digital I/O
This chapter describes the operation of the digital I/O ports in all devices.

280

Topic

...........................................................................................................................

7.1
7.2
7.3
7.4

Digital I/O Introduction ......................................................................................
Digital I/O Operation .........................................................................................
I/O Configuration ..............................................................................................
Digital I/O Registers ..........................................................................................

Digital I/O

Page

281
282
285
288

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Introduction

www.ti.com

7.1

Digital I/O Introduction
The digital I/O features include:
• Independently programmable individual I/Os
• Any combination of input or output
• Individually configurable P1 and P2 interrupts. Some devices may include additional port interrupts.
• Independent input and output data registers
• Individually configurable pullup or pulldown resistors
Devices within the family may have up to twelve digital I/O ports implemented (P1 to P11 and PJ). Most
ports contain eight I/O lines; however, some ports may contain fewer lines (see the device-specific data
sheet for ports available). Each I/O line is individually configurable for input or output direction, and each
can be individually read or written. Each I/O line is individually configurable for pullup or pulldown
resistors.
Ports P1 and P2 always have interrupt capability. Each interrupt for the P1 and P2 I/O lines can be
individually enabled and configured to provide an interrupt on a rising or falling edge of an input signal. All
P1 I/O lines source a single interrupt vector (P1IV), and all P2 I/O lines source a different single interrupt
vector (P2IV). Additional ports with interrupt capability may be available (see the device-specific data
sheet for details) and contain their own respective interrupt vectors.
Individual ports can be accessed as byte-wide ports or can be combined into word-wide ports and
accessed by word formats. Port pairs P1 and P2, P3 and P4, P5 and P6, P7 and P8, and so on, are
associated with the names PA, PB, PC, PD, and so on, respectively. All port registers are handled in this
manner with this naming convention except for the interrupt vector registers, P1IV and P2IV; that is, PAIV
does not exist.
When writing to port PA with word operations, all 16 bits are written to the port. When writing to the lower
byte of port PA using byte operations, the upper byte remains unchanged. Similarly, writing to the upper
byte of port PA using byte instructions leaves the lower byte unchanged. When writing to a port that
contains fewer than the maximum number of bits possible, the unused bits are don't care. Ports PB, PC,
PD, PE, and PF behave similarly.
Reading port PA using word operations causes all 16 bits to be transferred to the destination. Reading the
lower or upper byte of port PA (P1 or P2) and storing to memory using byte operations causes only the
lower or upper byte to be transferred to the destination, respectively. Reading of port PA and storing to a
general-purpose register using byte operations writes the byte that is transferred to the least significant
byte of the register. The upper significant byte of the destination register is cleared automatically. Ports
PB, PC, PD, PE, and PF behave similarly. When reading from ports that contain fewer than the maximum
bits possible, unused bits are read as zeros (similarly for port PJ).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

281

Digital I/O Operation

7.2

www.ti.com

Digital I/O Operation
The digital I/Os are configured with user software. The setup and operation of the digital I/Os are
discussed in the following sections.

7.2.1 Input Registers (PxIN)
Each bit in each PxIN register reflects the value of the input signal at the corresponding I/O pin when the
pin is configured as I/O function. These registers are read only.
• Bit = 0: Input is low
• Bit = 1: Input is high
NOTE:

Writing to read-only registers PxIN
Writing to these read-only registers results in increased current consumption while the write
attempt is active.

7.2.2 Output Registers (PxOUT)
Each bit in each PxOUT register is the value to be output on the corresponding I/O pin when the pin is
configured as I/O function, output direction.
• Bit = 0: Output is low
• Bit = 1: Output is high
If the pin is configured as I/O function, input direction and the pullup or pulldown resistor are enabled; the
corresponding bit in the PxOUT register selects pullup or pulldown.
• Bit = 0: Pin is pulled down
• Bit = 1: Pin is pulled up

7.2.3 Direction Registers (PxDIR)
Each bit in each PxDIR register selects the direction of the corresponding I/O pin, regardless of the
selected function for the pin. PxDIR bits for I/O pins that are selected for other functions must be set as
required by the other function.
• Bit = 0: Port pin is switched to input direction
• Bit = 1: Port pin is switched to output direction

7.2.4 Pullup or Pulldown Resistor Enable Registers (PxREN)
Each bit in each PxREN register enables or disables the pullup or pulldown resistor of the corresponding
I/O pin. The corresponding bit in the PxOUT register selects if the pin contains a pullup or pulldown.
• Bit = 0: Pullup or pulldown resistor disabled
• Bit = 1: Pullup or pulldown resistor enabled
Table 7-1 summarizes the use of PxDIR, PxREN, and PxOUT for proper I/O configuration.
Table 7-1. I/O Configuration

282

Digital I/O

PxDIR

PxREN

PxOUT

0

0

x

I/O Configuration
Input

0

1

0

Input with pulldown resistor

0

1

1

Input with pullup resistor

1

x

x

Output

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Operation

www.ti.com

7.2.5 Function Select Registers (PxSEL0, PxSEL1)
Port pins are often multiplexed with other peripheral module functions. See the device-specific data sheet
to determine pin functions. Each port pin uses two bits to select the pin function: I/O port or one of the
three possible peripheral module functions. Table 7-3 shows how to select the various module functions.
See the device-specific data sheet to determine pin functions. Each PxSEL bit is used to select the pin
function: I/O port or peripheral module function. A device in this family may have only PxSEL0 or both
PxSEL0 and PxSEL1.
Table 7-2. I/O Function Selection for Devices With
Only One Selection Bit – PxSEL0
PxSEL0

I/O Function

0

General purpose I/O is selected

1

Primary module function is selected

Table 7-3. I/O Function Selection for Devices With Two Selection Bits – PxSEL0
and PxSEL1
PxSEL1

PxSEL0

I/O Function

0

0

General purpose I/O is selected

0

1

Primary module function is selected

1

0

Secondary module function is selected

1

1

Tertiary module function is selected

Setting the PxSEL1 or PxSEL0 bits to a module function does not automatically set the pin direction.
Other peripheral module functions may require the PxDIR bits to be configured according to the direction
needed for the module function. See the pin schematics in the device-specific data sheet.
When a port pin is selected as an input to peripheral modules, the input signal to those peripheral
modules is a latched representation of the signal at the device pin. While PxSEL1 and PxSEL0 is other
than 00, the internal input signal follows the signal at the pin for all connected modules. However, if
PxSEL1 and PxSEL0 = 00, the input to the peripherals maintain the value of the input signal at the device
pin before the PxSEL1 and PxSEL0 bits were reset.
Because the PxSEL1 and PxSEL0 bits do not reside in contiguous addresses, changing both bits at the
same time is not possible. For example, an application might need to change P1.0 from general purpose
I/O to the tertiary module function residing on P1.0. Initially, P1SEL1 = 00h and P1SEL0 = 00h. To change
the function, it would be necessary to write both P1SEL1 = 01h and P1SEL0 = 01h. This is not possible
without first passing through an intermediate configuration, and this configuration may not be desirable
from an application standpoint. The PxSELC complement register can be used to handle such situations.
The PxSELC register always reads 0. Each set bit of the PxSELC register complements the
corresponding respective bit of the PxSEL1 and PxSEL0 registers. In the example, with P1SEL1 = 00h
and P1SEL0 = 00h initially, writing P1SELC = 01h causes P1SEL1 = 01h and P1SEL0 = 01h to be written
simultaneously.
NOTE:

Interrupts are disabled when PxSEL1 = 1 or PxSEL0 = 1
When any PxSEL bit is set, the corresponding pin interrupt function is disabled. Therefore,
signals on these pins do not generate interrupts, regardless of the state of the corresponding
PxIE bit.

7.2.6 Port Interrupts
At least each pin in ports P1 and P2 have interrupt capability, configured with the PxIFG, PxIE, and PxIES
registers. Some devices may contain additional port interrupts in addition to P1 and P2. See the devicespecific data sheet to determine which port interrupts are available.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

283

Digital I/O Operation

www.ti.com

All Px interrupt flags are prioritized, with PxIFG.0 being the highest, and combined to source a single
interrupt vector. The highest priority enabled interrupt generates a number in the PxIV register. This
number can be evaluated or added to the program counter to automatically enter the appropriate software
routine. Disabled Px interrupts do not affect the PxIV value. The PxIV registers are word or byte access.
Each PxIFG bit is the interrupt flag for its corresponding I/O pin, and the flag is set when the selected
input signal edge occurs at the pin. All PxIFG interrupt flags request an interrupt when their corresponding
PxIE bit and the GIE bit are set. Software can also set each PxIFG flag, providing a way to generate a
software-initiated interrupt.
• Bit = 0: No interrupt is pending
• Bit = 1: An interrupt is pending
Only transitions, not static levels, cause interrupts. If any PxIFG flag becomes set during a Px interrupt
service routine or is set after the RETI instruction of a Px interrupt service routine is executed, the set
PxIFG flag generates another interrupt. This ensures that each transition is acknowledged.
NOTE:

PxIFG flags when changing PxOUT, PxDIR, or PxREN
Writing to PxOUT, PxDIR, or PxREN can result in setting the corresponding PxIFG flags.

Any access (read or write) of the lower byte of the PxIV register, either word or byte access, automatically
resets the highest pending interrupt flag. If another interrupt flag is set, another interrupt is immediately
generated after servicing the initial interrupt.
For example, assume that P1IFG.0 has the highest priority. If the P1IFG.0 and P1IFG.2 flags are set when
the interrupt service routine accesses the P1IV register, P1IFG.0 is reset automatically. After the RETI
instruction of the interrupt service routine is executed, the P1IFG.2 generates another interrupt.
7.2.6.1

P1IV Software Example

The following software example shows the recommended use of P1IV and the handling overhead. The
P1IV value is added to the PC to automatically jump to the appropriate routine. The code to handle any
other PxIV register is similar.
The numbers at the right margin show the number of CPU cycles that are required for each instruction.
The software overhead for different interrupt sources includes interrupt latency and return-from-interrupt
cycles but not the task handling itself.
;Interrupt handler for P1
P1_HND
...
ADD
&P1IV,PC
RETI
JMP
P1_0_HND
JMP
P1_1_HND
JMP
P1_2_HND
JMP
P1_3_HND
JMP
P1_4_HND
JMP
P1_5_HND
JMP
P1_6_HND
JMP
P1_7_HND
P1_7_HND

Digital I/O

Cycles
6
3
5
2
2
2
2
2
2
2
2

; Vector 16: Port 1 bit 7
; Task starts here
; Back to main program

5

...
RETI

; Vector 14: Port 1 bit 6
; Task starts here
; Back to main program

5

...
RETI

; Vector 12: Port 1 bit 5
; Task starts here
; Back to main program

5

P1_5_HND

284

Interrupt latency
Add offset to Jump table
Vector 0: No interrupt
Vector 2: Port 1 bit 0
Vector 4: Port 1 bit 1
Vector 6: Port 1 bit 2
Vector 8: Port 1 bit 3
Vector 10: Port 1 bit 4
Vector 12: Port 1 bit 5
Vector 14: Port 1 bit 6
Vector 16: Port 1 bit 7

...
RETI
P1_6_HND

P1_4_HND

;
;
;
;
;
;
;
;
;
;
;

; Vector 10: Port 1 bit 4
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

I/O Configuration

www.ti.com
...
RETI

; Task starts here
; Back to main program

5

...
RETI

; Vector 8: Port 1 bit 3
; Task starts here
; Back to main program

5

...
RETI

; Vector 6: Port 1 bit 2
; Task starts here
; Back to main program

5

P1_3_HND

P1_2_HND

P1_1_HND

;
;
;
;
;
;

...
RETI
P1_0_HND
...
RETI

7.2.6.2

Vector 4: Port 1 bit 1
Task starts here
Back to main program
Vector 2: Port 1 bit 0
Task starts here
Back to main program

5

5

Interrupt Edge Select Registers (PxIES)

Each PxIES bit selects the interrupt edge for the corresponding I/O pin.
• Bit = 0: Respective PxIFG flag is set on a low-to-high transition
• Bit = 1: Respective PxIFG flag is set on a high-to-low transition
NOTE:

Writing to PxIES
Writing to P1IES or P2IES for each corresponding I/O can result in setting the corresponding
interrupt flags.

PxIES
0→1
0→1
1→0
1→0

7.2.6.3

PxIN
0
1
0
1

PxIFG
May be set
Unchanged
Unchanged
May be set

Interrupt Enable Registers (PxIE)

Each PxIE bit enables the associated PxIFG interrupt flag.
• Bit = 0: The interrupt is disabled
• Bit = 1: The interrupt is enabled

7.3

I/O Configuration

7.3.1 Configuration After Reset
After a BOR reset, all port pins are high-impedance with Schmitt triggers and their module functions
disabled to prevent any cross currents. The application must initialize all port pins including unused ones
(Section 7.3.2) as input high impedance, input with pulldown, input with pullup, output high, or output low
according to the application needs by configuring PxDIR, PxREN, PxOUT, and PxIES accordingly. This
initialization takes effect as soon as the LOCKLPM5 bit in the PM5CTL register (described in the PMM
chapter) is cleared; until then, the I/Os remain in their high-impedance state with Schmitt trigger inputs
disabled. Note that this is usually the same I/O initialization that is required after a wakeup from LPMx.5.
After clearing LOCKLPM5, all interrupt flags should be cleared (note, this is different from the flow for
wakeup from LPMx.5). Then port interrupts can be enabled by setting the corresponding PxIE bits.
After a POR or PUC reset, all port pins are configured as inputs with their module function disabled. To
prevent floating inputs, all port pins including unused ones (Section 7.3.2) should be configured according
to the application needs as early as possible during the initialization procedure.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

285

I/O Configuration

www.ti.com

Note that the same I/O initialization procedure can be used for all reset cases and wakeup from LPMx.5,
except for PxIFG:
1.
2.
3.
4.

Initialize Ports: PxDIR, PxREN, PxOUT, and PxIES
Clear LOCKLPM5
If not waking up from LPMx.5: clear all PxIFGs to avoid erroneous port interrupts
Enable port interrupts in PxIE

7.3.2 Configuration of Unused Port Pins
To prevent a floating input and to reduce power consumption, unused I/O pins should be configured as I/O
function, output direction, and left unconnected on the PC board. The value of the PxOUT bit is don't care,
because the pin is unconnected. Alternatively, the integrated pullup or pulldown resistor can be enabled
by setting the PxREN bit of the unused pin to prevent a floating input. See the System Resets, Interrupts,
and Operating Modes, System Control Module (SYS) chapter for termination of unused pins.
NOTE:

Configuring port PJ and shared JTAG pins:
The application should make sure that port PJ is configured properly to prevent a floating
input. Because port PJ is shared with the JTAG function, floating inputs may not be noticed
when in an emulation environment. Port J is initialized to high-impedance inputs by default.

7.3.3 Configuration for LPMx.5 Low-Power Modes
NOTE: See Section 1.4.3, Low-Power Modes LPM3.5 and LPM4.5 (LPMx.5), in the System Resets,
Interrupts, and Operating Modes, System Control Module (SYS) chapter for details about
LPMx.5 low-power modes.
See the device-specific data sheet to determine which LPMx.5 low-power modes are
available and which modules can operate in LPM3.5, if any.
With regard to the digital I/Os, the following description is applicable to both LPM3.5 and
LPM4.5.

Upon entering LPMx.5 (LPM3.5 or LPM4.5), the LDO of the PMM module is disabled, which removes the
supply voltage from the core of the device. This causes all I/O register configurations to be lost, thus the
configuration of I/O pins must be handled differently to make sure that all pins in the application behave in
a controlled manner upon entering and exiting LPMx.5. Properly setting the I/O pins is critical to achieve
the lowest possible power consumption in LPMx.5 and to prevent an uncontrolled input or output I/O state
in the application. The application has complete control of the I/O pin conditions that are necessary to
prevent unwanted spurious activity upon entry and exit from LPMx.5.
Before entering LPMx.5, the following operations are required for the I/Os:
(a) Set all I/Os to general-purpose I/Os (PxSEL0 = 000h and PxSEL1 = 000h) and configure as needed.
Each I/O can be set to input high impedance, input with pulldown, input with pullup, output high, or
output low. It is critical that no inputs are left floating in the application; otherwise, excess current may
be drawn in LPMx.5.
Configuring the I/O in this manner makes sure that each pin is in a safe condition before entering
LPMx.5.
(b) Optionally, configure input interrupt pins for wake-up from LPMx.5. To wake the device from LPMx.5, a
general-purpose I/O port must contain an input port with interrupt and wakeup capability. Not all inputs
with interrupt capability offer wakeup from LPMx.5. See the device-specific data sheet for availability.
To wake up the device, a port pin must be configured properly before entering LPMx.5. Each port
should be configured as general-purpose input. Pulldowns or pullups can be applied if required. Setting
the PxIES bit of the corresponding register determines the edge transition that wakes the device. Last,
the PxIE for the port must be enabled, as well as the general interrupt enable.

286

Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

I/O Configuration

www.ti.com

NOTE: It is not possible to wake up from a port interrupt if its respective port interrupt flag is already
asserted. TI recommends clearing the flags before entering LPMx.5. TI also recommends
setting GIE = 1 before entry into LPMx.5. This allows any pending flags to be serviced before
LPMx.5 entry.

This completes the operations required for the I/Os before entering LPMx.5.
During LPMx.5 the I/O pin states are held and locked based on the settings before LPMx.5 entry. Note
that only the pin conditions are retained. All other port configuration register settings such as PxDIR,
PxREN, PxOUT, PxIES, and PxIE contents are lost.
Upon exit from LPMx.5, all peripheral registers are set to their default conditions but the I/O pins remain
locked while LOCKLPM5 remains set. Keeping the I/O pins locked ensures that all pin conditions remain
stable when entering the active mode, regardless of the default I/O register settings.
When back in active mode, the I/O configuration and I/O interrupt configuration such as PxDIR, PxREN,
PxOUT, and PxIES should be restored to the values before entering LPMx.5. The LOCKLPM5 bit can
then be cleared, which releases the I/O pin conditions and I/O interrupt configuration. Any changes to the
port configuration registers while LOCKLPM5 is set have no effect on the I/O pins.
After enabling the I/O interrupts by configuring PxIE, the I/O interrupt that caused the wakeup can be
serviced as indicated by the PxIFG flags. These flags can be used directly, or the corresponding PxIV
register may be used. Note that the PxIFG flag cannot be cleared until the LOCKLPM5 bit has been
cleared.
NOTE: It is possible that multiple events occurred on various ports. In these cases, multiple PxIFG
flags are set, and it cannot be determined which port caused the I/O wakeup.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

287

Digital I/O Registers

7.4

www.ti.com

Digital I/O Registers
The digital I/O registers are listed in Table 7-4. The base addresses can be found in the device-specific
data sheet. Each port grouping begins at its base address. The address offsets are given in Table 7-4.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 7-4. Digital I/O Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

0Eh

P1IV

Port 1 Interrupt Vector

Read only

Word

0000h

Section 7.4.1

0Eh

P1IV_L

Read only

Byte

00h

0Fh

P1IV_H

Read only

Byte

00h

Read only

Word

0000h

1Eh

P2IV

Port 2 Interrupt Vector

1Eh

P2IV_L

Read only

Byte

00h

1Fh

P2IV_H

Read only

Byte

00h

Read only

Word

0000h

Read only

Byte

00h

Read only

Byte

00h

Read only

Word

0000h

2Eh

P3IV

2Eh

P3IV_L

2Fh

P3IV_H

3Eh

P4IV

Port 3 Interrupt Vector

Port 4 Interrupt Vector

3Eh

P4IV_L

Read only

Byte

00h

3Fh

P4IV_H

Read only

Byte

00h

Section 7.4.2

Section 7.4.3

Section 7.4.4

00h

P1IN
or PAIN_L

Port 1 Input

Read only

Byte

undefined

Section 7.4.5

02h

P1OUT
or PAOUT_L

Port 1 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P1DIR
or PADIR_L

Port 1 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P1REN
or PAREN_L

Port 1 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P1SEL0
or PASEL0_L

Port 1 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P1SEL1
or PASEL1_L

Port 1 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P1SELC
or PASELC_L

Port 1 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P1IES
or PAIES_L

Port 1 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P1IE
or PAIE_L

Port 1 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P1IFG
or PAIFG_L

Port 1 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

288 Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

Section

01h

P2IN
or PAIN_H

Port 2 Input

Read only

Byte

undefined

Section 7.4.5

03h

P2OUT
or PAOUT_H

Port 2 Output

Read/write

Byte

undefined

Section 7.4.6

05h

P2DIR
or PADIR_H

Port 2 Direction

Read/write

Byte

00h

Section 7.4.7

07h

P2REN
or PAREN_H

Port 2 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Bh

P2SEL0
or PASEL0_H

Port 2 Select 0

Read/write

Byte

00h

Section 7.4.9

0Dh

P2SEL1
or PASEL1_H

Port 2 Select 1

Read/write

Byte

00h

Section 7.4.10

17h

P2SELC
or PASELC_L

Port 2 Complement Selection

Read/write

Byte

00h

Section 7.4.11

19h

P2IES
or PAIES_H

Port 2 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Bh

P2IE
or PAIE_H

Port 2 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Dh

P2IFG
or PAIFG_H

Port 2 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

00h

P3IN
or PBIN_L

Port 3 Input

Read only

Byte

undefined

Section 7.4.5

02h

P3OUT
or PBOUT_L

Port 3 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P3DIR
or PBDIR_L

Port 3 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P3REN
or PBREN_L

Port 3 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P3SEL0
or PBSEL0_L

Port 3 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P3SEL1
or PBSEL1_L

Port 3 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P3SELC
or PBSELC_L

Port 3 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P3IES
or PBIES_L

Port 3 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P3IE
or PBIE_L

Port 3 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P3IFG
or PBIFG_L

Port 3 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O 289

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

Section

01h

P4IN
or PBIN_H

Port 4 Input

Read only

Byte

undefined

Section 7.4.5

03h

P4OUT
or PBOUT_H

Port 4 Output

Read/write

Byte

undefined

Section 7.4.6

05h

P4DIR
or PBDIR_H

Port 4 Direction

Read/write

Byte

00h

Section 7.4.7

07h

P4REN
or PBREN_H

Port 4 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Bh

P4SEL0
or PBSEL0_H

Port 4 Select 0

Read/write

Byte

00h

Section 7.4.9

0Dh

P4SEL1
or PBSEL1_H

Port 4 Select 1

Read/write

Byte

00h

Section 7.4.10

17h

P4SELC
or PBSELC_L

Port 4 Complement Selection

Read/write

Byte

00h

Section 7.4.11

19h

P4IES
or PBIES_H

Port 4 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Bh

P4IE
or PBIE_H

Port 4 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Dh

P4IFG
or PBIFG_H

Port 4 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

00h

P5IN
or PCIN_L

Port 5 Input

Read only

Byte

undefined

Section 7.4.5

02h

P5OUT
or PCOUT_L

Port 5 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P5DIR
or PCDIR_L

Port 5 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P5REN
or PCREN_L

Port 5 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P5SEL0
or PCSEL0_L

Port 5 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P5SEL1
or PCSEL1_L

Port 5 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P5SELC
or PCSELC_L

Port 5 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P5IES
or PCIES_L

Port 5 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P5IE
or PCIE_L

Port 5 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P5IFG
or PCIFG_L

Port 5 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

290 Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

Section

01h

P6IN
or PCIN_H

Port 6 Input

Read only

Byte

undefined

Section 7.4.5

03h

P6OUT
or PCOUT_H

Port 6 Output

Read/write

Byte

undefined

Section 7.4.6

05h

P6DIR
or PCDIR_H

Port 6 Direction

Read/write

Byte

00h

Section 7.4.7

07h

P6REN
or PCREN_H

Port 6 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Bh

P6SEL0
or PCSEL0_H

Port 6 Select 0

Read/write

Byte

00h

Section 7.4.9

0Dh

P6SEL1
or PCSEL1_H

Port 6 Select 1

Read/write

Byte

00h

Section 7.4.10

17h

P6SELC
or PCSELC_L

Port 6 Complement Selection

Read/write

Byte

00h

Section 7.4.11

19h

P6IES
or PCIES_H

Port 6 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Bh

P6IE
or PCIE_H

Port 6 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Dh

P6IFG
or PCIFG_H

Port 6 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

00h

P7IN
or PDIN_L

Port 7 Input

Read only

Byte

undefined

Section 7.4.5

02h

P7OUT
or PDOUT_L

Port 7 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P7DIR
or PDDIR_L

Port 7 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P7REN
or PDREN_L

Port 7 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P7SEL0
or PDSEL0_L

Port 7 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P7SEL1
or PDSEL1_L

Port 7 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P7SELC
or PDSELC_L

Port 7 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P7IES
or PDIES_L

Port 7 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P7IE
or PDIE_L

Port 7 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P7IFG
or PDIFG_L

Port 7 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O 291

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

Section

01h

P8IN
or PDIN_H

Port 8 Input

Read only

Byte

undefined

Section 7.4.5

03h

P8OUT
or PDOUT_H

Port 8 Output

Read/write

Byte

undefined

Section 7.4.6

05h

P8DIR
or PDDIR_H

Port 8 Direction

Read/write

Byte

00h

Section 7.4.7

07h

P8REN
or PDREN_H

Port 8 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Bh

P8SEL0
or PDSEL0_H

Port 8 Select 0

Read/write

Byte

00h

Section 7.4.9

0Dh

P8SEL1
or PDSEL1_H

Port 8 Select 1

Read/write

Byte

00h

Section 7.4.10

17h

P8SELC
or PDSELC_L

Port 8 Complement Selection

Read/write

Byte

00h

Section 7.4.11

19h

P8IES
or PDIES_H

Port 8 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Bh

P8IE
or PDIE_H

Port 8 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Dh

P8IFG
or PDIFG_H

Port 8 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

00h

P9IN
or PEIN_L

Port 9 Input

Read only

Byte

undefined

Section 7.4.5

02h

P9OUT
or PEOUT_L

Port 9 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P9DIR
or PEDIR_L

Port 9 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P9REN
or PEREN_L

Port 9 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P9SEL0
or PESEL0_L

Port 9 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P9SEL1
or PESEL1_L

Port 9 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P9SELC
or PESELC_L

Port 9 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P9IES
or PEIES_L

Port 9 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P9IE
or PEIE_L

Port 9 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P9IFG
or PEIFG_L

Port 9 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

292 Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

Section

01h

P10IN
or PEIN_H

Port 10 Input

Read only

Byte

undefined

Section 7.4.5

03h

P10OUT
or PEOUT_H

Port 10 Output

Read/write

Byte

undefined

Section 7.4.6

05h

P10DIR
or PEDIR_H

Port 10 Direction

Read/write

Byte

00h

Section 7.4.7

07h

P10REN
or PEREN_H

Port 10 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Bh

P10SEL0
or PESEL0_H

Port 10 Select 0

Read/write

Byte

00h

Section 7.4.9

0Dh

P10SEL1
or PESEL1_H

Port 10 Select 1

Read/write

Byte

00h

Section 7.4.10

17h

P10SELC
or PESELC_L

Port 10 Complement Selection

Read/write

Byte

00h

Section 7.4.11

19h

P10IES
or PEIES_H

Port 10 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Bh

P10IE
or PEIE_H

Port 10 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Dh

P10IFG
or PEIFG_H

Port 10 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

00h

P11IN
or PFIN_L

Port 11 Input

Read only

Byte

undefined

Section 7.4.5

02h

P11OUT
or PFOUT_L

Port 11 Output

Read/write

Byte

undefined

Section 7.4.6

04h

P11DIR
or PFDIR_L

Port 11 Direction

Read/write

Byte

00h

Section 7.4.7

06h

P11REN
or PFREN_L

Port 11 Resistor Enable

Read/write

Byte

00h

Section 7.4.8

0Ah

P11SEL0
or PFSEL0_L

Port 11 Select 0

Read/write

Byte

00h

Section 7.4.9

0Ch

P11SEL1
or PFSEL1_L

Port 11 Select 1

Read/write

Byte

00h

Section 7.4.10

16h

P11SELC
or PFSELC_L

Port 11 Complement Selection

Read/write

Byte

00h

Section 7.4.11

18h

P11IES
or PFIES_L

Port 11 Interrupt Edge Select

Read/write

Byte

undefined

Section 7.4.12

1Ah

P11IE
or PFIE_L

Port 11 Interrupt Enable

Read/write

Byte

00h

Section 7.4.13

1Ch

P11IFG
or PFIFG_L

Port 11 Interrupt Flag

Read/write

Byte

00h

Section 7.4.14

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O 293

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PAIN

Port A Input

Read only

Word

undefined

00h

PAIN_L

Read only

Byte

undefined

01h

PAIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PAOUT

02h

PAOUT_L

03h

PAOUT_H

04h

PADIR

04h

PADIR_L

05h

PADIR_H

06h

PAREN

06h

PAREN_L

07h

PAREN_H

0Ah

PASEL0

Port A Output

Port A Direction

Port A Resistor Enable

Port A Select 0

0Ah

PASEL0_L

Read/write

Byte

00h

0Bh

PASEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PASEL1_L

Read/write

Byte

00h

0Dh

PASEL1_H

Read/write

Byte

00h

16h

PASEL1

Read/write

Word

0000h

16h

PASELC_L

Read/write

Byte

00h

17h

PASELC_H

Read/write

Byte

00h

18h

PASELC

Port A Select 1

Read/write

Word

undefined

18h

PAIES_L

Read/write

Byte

undefined

19h

PAIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PAIES

Port A Complement Select

PAIE

Port A Interrupt Edge Select

Port A Interrupt Enable

1Ah

PAIE_L

Read/write

Byte

00h

1Bh

PAIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PAIFG

Port A Interrupt Flag

1Ch

PAIFG_L

Read/write

Byte

00h

1Dh

PAIFG_H

Read/write

Byte

00h

294 Digital I/O

Section

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PBIN

Port B Input

Read only

Word

undefined

00h

PBIN_L

Read only

Byte

undefined

01h

PBIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PBOUT

02h

PBOUT_L

03h

PBOUT_H

04h

PBDIR

04h

PBDIR_L

05h

PBDIR_H

06h

PBREN

06h

PBREN_L

07h

PBREN_H

0Ah

PBSEL0

Port B Output

Port B Direction

Port B Resistor Enable

Port B Select 0

0Ah

PBSEL0_L

Read/write

Byte

00h

0Bh

PBSEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PBSEL1_L

Read/write

Byte

00h

0Dh

PBSEL1_H

Read/write

Byte

00h

16h

PBSEL1

Read/write

Word

0000h

16h

PBSELC_L

Read/write

Byte

00h

17h

PBSELC_H

Read/write

Byte

00h

18h

PBSELC

Port B Select 1

Read/write

Word

undefined

18h

PBIES_L

Read/write

Byte

undefined

19h

PBIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PBIES

Port B Complement Select

PBIE

Port B Interrupt Edge Select

Port B Interrupt Enable

1Ah

PBIE_L

Read/write

Byte

00h

1Bh

PBIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PBIFG

Port B Interrupt Flag

1Ch

PBIFG_L

Read/write

Byte

00h

1Dh

PBIFG_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Section

Digital I/O 295

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PCIN

Port C Input

Read only

Word

undefined

00h

PCIN_L

Read only

Byte

undefined

01h

PCIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PCOUT

02h

PCOUT_L

03h

PCOUT_H

04h

PCDIR

04h

PCDIR_L

05h

PCDIR_H

06h

PCREN

06h

PCREN_L

07h

PCREN_H

0Ah

PCSEL0

Port C Output

Port C Direction

Port C Resistor Enable

Port C Select 0

0Ah

PCSEL0_L

Read/write

Byte

00h

0Bh

PCSEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PCSEL1_L

Read/write

Byte

00h

0Dh

PCSEL1_H

Read/write

Byte

00h

16h

PCSEL1

Read/write

Word

0000h

16h

PCSELC_L

Read/write

Byte

00h

17h

PCSELC_H

Read/write

Byte

00h

18h

PCSELC

Port C Select 1

Read/write

Word

undefined

18h

PCIES_L

Read/write

Byte

undefined

19h

PCIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PCIES

Port C Complement Select

PCIE

Port C Interrupt Edge Select

Port C Interrupt Enable

1Ah

PCIE_L

Read/write

Byte

00h

1Bh

PCIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PCIFG

Port C Interrupt Flag

1Ch

PCIFG_L

Read/write

Byte

00h

1Dh

PCIFG_H

Read/write

Byte

00h

296 Digital I/O

Section

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PDIN

Port D Input

Read only

Word

undefined

00h

PDIN_L

Read only

Byte

undefined

01h

PDIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PDOUT

02h

PDOUT_L

03h

PDOUT_H

04h

PDDIR

04h

PDDIR_L

05h

PDDIR_H

06h

PDREN

06h

PDREN_L

07h

PDREN_H

0Ah

PDSEL0

Port D Output

Port D Direction

Port D Resistor Enable

Port D Select 0

0Ah

PDSEL0_L

Read/write

Byte

00h

0Bh

PDSEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PDSEL1_L

Read/write

Byte

00h

0Dh

PDSEL1_H

Read/write

Byte

00h

16h

PDSEL1

Read/write

Word

0000h

16h

PDSELC_L

Read/write

Byte

00h

17h

PDSELC_H

Read/write

Byte

00h

18h

PDSELC

Port D Select 1

Read/write

Word

undefined

18h

PDIES_L

Read/write

Byte

undefined

19h

PDIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PDIES

Port D Complement Select

PDIE

Port D Interrupt Edge Select

Port D Interrupt Enable

1Ah

PDIE_L

Read/write

Byte

00h

1Bh

PDIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PDIFG

Port D Interrupt Flag

1Ch

PDIFG_L

Read/write

Byte

00h

1Dh

PDIFG_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Section

Digital I/O 297

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PEIN

Port E Input

Read only

Word

undefined

00h

PEIN_L

Read only

Byte

undefined

01h

PEIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PEOUT

02h

PEOUT_L

03h

PEOUT_H

04h

PEDIR

04h

PEDIR_L

05h

PEDIR_H

06h

PEREN

06h

PEREN_L

07h

PEREN_H

0Ah

PESEL0

Port E Output

Port E Direction

Port E Resistor Enable

Port E Select 0

0Ah

PESEL0_L

Read/write

Byte

00h

0Bh

PESEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PESEL1_L

Read/write

Byte

00h

0Dh

PESEL1_H

Read/write

Byte

00h

16h

PESEL1

Read/write

Word

0000h

16h

PESELC_L

Read/write

Byte

00h

17h

PESELC_H

Read/write

Byte

00h

18h

PESELC

Port E Select 1

Read/write

Word

undefined

18h

PEIES_L

Read/write

Byte

undefined

19h

PEIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PEIES

Port E Complement Select

PEIE

Port E Interrupt Edge Select

Port E Interrupt Enable

1Ah

PEIE_L

Read/write

Byte

00h

1Bh

PEIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PEIFG

Port E Interrupt Flag

1Ch

PEIFG_L

Read/write

Byte

00h

1Dh

PEIFG_H

Read/write

Byte

00h

298 Digital I/O

Section

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PFIN

Port F Input

Read only

Word

undefined

00h

PFIN_L

Read only

Byte

undefined

01h

PFIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h

PFOUT

02h

PFOUT_L

03h

PFOUT_H

04h

PFDIR

04h

PFDIR_L

05h

PFDIR_H

06h

PFREN

06h

PFREN_L

07h

PFREN_H

0Ah

PFSEL0

Port F Output

Port F Direction

Port F Resistor Enable

Port F Select 0

0Ah

PFSEL0_L

Read/write

Byte

00h

0Bh

PFSEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PFSEL1_L

Read/write

Byte

00h

0Dh

PFSEL1_H

Read/write

Byte

00h

16h

PFSEL1

Read/write

Word

0000h

16h

PFSELC_L

Read/write

Byte

00h

17h

PFSELC_H

Read/write

Byte

00h

18h

PFSELC

Port F Select 1

Read/write

Word

undefined

18h

PFIES_L

Read/write

Byte

undefined

19h

PFIES_H

Read/write

Byte

undefined

Read/write

Word

0000h

1Ah

PFIES

Port F Complement Select

PFIE

Port F Interrupt Edge Select

Port F Interrupt Enable

1Ah

PFIE_L

Read/write

Byte

00h

1Bh

PFIE_H

Read/write

Byte

00h

Read/write

Word

0000h

1Ch

PFIFG

Port F Interrupt Flag

1Ch

PFIFG_L

Read/write

Byte

00h

1Dh

PFIFG_H

Read/write

Byte

00h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Section

Digital I/O 299

Digital I/O Registers

www.ti.com

Table 7-4. Digital I/O Registers (continued)
Offset

Acronym

Register Name

Type

Access

Reset

00h

PJIN

Port J Input

Read only

Word

undefined

00h

PJIN_L

Read only

Byte

undefined

01h

PJIN_H

Read only

Byte

undefined

Read/write

Word

undefined

Read/write

Byte

undefined

Read/write

Byte

undefined

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

02h
02h

PJOUT_L

03h

PJOUT_H

04h

PJDIR

04h

PJDIR_L

05h

PJDIR_H

06h

PJREN

06h

PJREN_L

07h

PJREN_H

0Ah

PJSEL0

Port J Output

Port J Direction

Port J Resistor Enable

Port J Select 0

0Ah

PJSEL0_L

Read/write

Byte

00h

0Bh

PJSEL0_H

Read/write

Byte

00h

0Ch

Read/write

Word

0000h

0Ch

PJSEL1_L

Read/write

Byte

00h

0Dh

PJSEL1_H

Read/write

Byte

00h

16h

300

PJOUT

PJSEL1

Read/write

Word

0000h

16h

PJSELC_L

Read/write

Byte

00h

17h

PJSELC_H

Read/write

Byte

00h

Digital I/O

PJSELC

Port J Select 1

Port J Complement Select

Section

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

7.4.1 P1IV Register
Port 1 Interrupt Vector Register
Figure 7-1. P1IV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

P1IV
r0

r0

r0

r0

7

6

5

4
P1IV

r0

r0

r0

r-0

Table 7-5. P1IV Register Description
Bit

Field

Type

Reset

Description

15-0

P1IV

R

0h

Port 1 interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Port 1.0 interrupt; Interrupt Flag: P1IFG.0; Interrupt
Priority: Highest
04h = Interrupt Source: Port 1.1 interrupt; Interrupt Flag: P1IFG.1
06h = Interrupt Source: Port 1.2 interrupt; Interrupt Flag: P1IFG.2
08h = Interrupt Source: Port 1.3 interrupt; Interrupt Flag: P1IFG.3
0Ah = Interrupt Source: Port 1.4 interrupt; Interrupt Flag: P1IFG.4
0Ch = Interrupt Source: Port 1.5 interrupt; Interrupt Flag: P1IFG.5
0Eh = Interrupt Source: Port 1.6 interrupt; Interrupt Flag: P1IFG.6
10h = Interrupt Source: Port 1.7 interrupt; Interrupt Flag: P1IFG.7; Interrupt
Priority: Lowest

7.4.2 P2IV Register
Port 2 Interrupt Vector Register
Figure 7-2. P2IV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

P2IV
r0

r0

r0

r0

7

6

5

4
P2IV

r0

r0

r0

r-0

Table 7-6. P2IV Register Description
Bit

Field

Type

Reset

Description

15-0

P2IV

R

0h

Port 2 interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Port 2.0 interrupt; Interrupt Flag: P2IFG.0; Interrupt
Priority: Highest
04h = Interrupt Source: Port 2.1 interrupt; Interrupt Flag: P2IFG.1
06h = Interrupt Source: Port 2.2 interrupt; Interrupt Flag: P2IFG.2
08h = Interrupt Source: Port 2.3 interrupt; Interrupt Flag: P2IFG.3
0Ah = Interrupt Source: Port 2.4 interrupt; Interrupt Flag: P2IFG.4
0Ch = Interrupt Source: Port 2.5 interrupt; Interrupt Flag: P2IFG.5
0Eh = Interrupt Source: Port 2.6 interrupt; Interrupt Flag: P2IFG.6
10h = Interrupt Source: Port 2.7 interrupt; Interrupt Flag: P2IFG.7; Interrupt
Priority: Lowest

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

301

Digital I/O Registers

www.ti.com

7.4.3 P3IV Register
Port 3 Interrupt Vector Register
Figure 7-3. P3IV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

P3IV
r0

r0

r0

r0

7

6

5

4
P3IV

r0

r0

r0

r-0

Table 7-7. P3IV Register Description
Bit

Field

Type

Reset

Description

15-0

P3IV

R

0h

Port 3 interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Port 3.0 interrupt; Interrupt Flag: P3IFG.0; Interrupt
Priority: Highest
04h = Interrupt Source: Port 3.1 interrupt; Interrupt Flag: P3IFG.1
06h = Interrupt Source: Port 3.2 interrupt; Interrupt Flag: P3IFG.2
08h = Interrupt Source: Port 3.3 interrupt; Interrupt Flag: P3IFG.3
0Ah = Interrupt Source: Port 3.4 interrupt; Interrupt Flag: P3IFG.4
0Ch = Interrupt Source: Port 3.5 interrupt; Interrupt Flag: P3IFG.5
0Eh = Interrupt Source: Port 3.6 interrupt; Interrupt Flag: P3IFG.6
10h = Interrupt Source: Port 3.7 interrupt; Interrupt Flag: P3IFG.7; Interrupt
Priority: Lowest

7.4.4 P4IV Register
Port 4 Interrupt Vector Register
Figure 7-4. P4IV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

P4IV
r0

r0

r0

r0

7

6

5

4
P4IV

r0

r0

r0

r-0

Table 7-8. P4IV Register Description
Bit

Field

Type

Reset

Description

15-0

P4IV

R

0h

Port 4 interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Port 4.0 interrupt; Interrupt Flag: P4IFG.0; Interrupt
Priority: Highest
04h = Interrupt Source: Port 4.1 interrupt; Interrupt Flag: P4IFG.1
06h = Interrupt Source: Port 4.2 interrupt; Interrupt Flag: P4IFG.2
08h = Interrupt Source: Port 4.3 interrupt; Interrupt Flag: P4IFG.3
0Ah = Interrupt Source: Port 4.4 interrupt; Interrupt Flag: P4IFG.4
0Ch = Interrupt Source: Port 4.5 interrupt; Interrupt Flag: P4IFG.5
0Eh = Interrupt Source: Port 4.6 interrupt; Interrupt Flag: P4IFG.6
10h = Interrupt Source: Port 4.7 interrupt; Interrupt Flag: P4IFG.7; Interrupt
Priority: Lowest

302

Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

7.4.5 PxIN Register
Port x Input Register
Figure 7-5. PxIN Register
7

6

5

4

3

2

1

0

r

r

r

r

PxIN
r

r

r

r

Table 7-9. PxIN Register Description
Bit

Field

Type

Reset

Description

7-0

PxIN

R

Undefined

Port x input
0b = Input is low
1b = Input is high

7.4.6 PxOUT Register
Port x Output Register
Figure 7-6. PxOUT Register
7

6

5

4

3

2

1

0

rw

rw

rw

rw

PxOUT
rw

rw

rw

rw

Table 7-10. PxOUT Register Description
Bit

Field

Type

Reset

Description

7-0

PxOUT

RW

Undefine
d

Port x output
When I/O configured to output mode:
0b = Output is low.
1b = Output is high.
When I/O configured to input mode and pullups/pulldowns enabled:
0b = Pulldown selected
1b = Pullup selected

7.4.7 PxDIR Register
Port x Direction Register
Figure 7-7. PxDIR Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxDIR
rw-0

rw-0

rw-0

rw-0

Table 7-11. P1DIR Register Description
Bit

Field

Type

Reset

Description

7-0

PxDIR

RW

0h

Port x direction
0b = Port configured as input
1b = Port configured as output

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

303

Digital I/O Registers

www.ti.com

7.4.8 PxREN Register
Port x Pullup or Pulldown Resistor Enable Register
Figure 7-8. PxREN Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxREN
rw-0

rw-0

rw-0

rw-0

Table 7-12. PxREN Register Description
Bit

Field

Type

Reset

Description

7-0

PxREN

RW

0h

Port x pullup or pulldown resistor enable. When the port is configured as an
input, setting this bit enables or disables the pullup or pulldown.
0b = Pullup or pulldown disabled
1b = Pullup or pulldown enabled

7.4.9 PxSEL0 Register
Port x Function Selection Register 0
Figure 7-9. PxSEL0 Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxSEL0
rw-0

rw-0

rw-0

rw-0

Table 7-13. PxSEL0 Register Description
Bit

Field

Type

Reset

Description

7-0

PxSEL0

RW

0h

Port function selection. Each bit corresponds to one channel on Port x.
The values of each bit position in PxSEL1 and PxSEL0 are combined to specify
the function. For example, if P1SEL1.5 = 1 and P1SEL0.5 = 0, then the
secondary module function is selected for P1.5.
See PxSEL1 for the definition of each value.

7.4.10 PxSEL1 Register
Port x Function Selection Register 1
Figure 7-10. PxSEL1 Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxSEL1
rw-0

rw-0

rw-0

rw-0

Table 7-14. PxSEL1 Register Description
Bit

Field

Type

Reset

Description

7-0

PxSEL1

RW

0h

Port function selection. Each bit corresponds to one channel on Port x.
The values of each bit position in PxSEL1 and PxSEL0 are combined to specify
the function. For example, if P1SEL1.5 = 1 and P1SEL0.5 = 0, then the
secondary module function is selected for P1.5.
00b = General-purpose I/O is selected
01b = Primary module function is selected
10b = Secondary module function is selected
11b = Tertiary module function is selected

304

Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O Registers

www.ti.com

7.4.11 PxSELC Register
Port x Complement Selection
Figure 7-11. PxSELC Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxSELC
rw-0

rw-0

rw-0

rw-0

Table 7-15. PxSELC Register Description
Bit

Field

Type

Reset

Description

7-0

PxSELC

RW

0h

Port selection complement.
Each bit that is set in PxSELC complements the corresponding respective bit of
both the PxSEL1 and PxSEL0 registers; that is, for each bit set in PxSELC, the
corresponding bits in both PxSEL1 and PxSEL0 are both changed at the same
time. Always reads as 0.

7.4.12 PxIES Register
Port x Interrupt Edge Select Register
Figure 7-12. PxIES Register
7

6

5

4

3

2

1

0

rw

rw

rw

rw

PxIES
rw

rw

rw

rw

Table 7-16. PxIES Register Description
Bit

Field

Type

Reset

Description

7-0

PxIES

RW

Undefined

Port x interrupt edge select
0b = PxIFG flag is set with a low-to-high transition
1b = PxIFG flag is set with a high-to-low transition

7.4.13 PxIE Register
Port x Interrupt Enable Register
Figure 7-13. PxIE Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxIE
rw-0

rw-0

rw-0

rw-0

Table 7-17. PxIE Register Description
Bit

Field

Type

Reset

Description

7-0

PxIE

RW

0h

Port x interrupt enable
0b = Corresponding port interrupt disabled
1b = Corresponding port interrupt enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Digital I/O

305

Digital I/O Registers

www.ti.com

7.4.14 PxIFG Register
Port x Interrupt Flag Register
Figure 7-14. PxIFG Register
7

6

5

4

3

2

1

0

rw-0

rw-0

rw-0

rw-0

PxIFG
rw-0

rw-0

rw-0

rw-0

Table 7-18. PxIFG Register Description
Bit

Field

Type

Reset

Description

7-0

PxIFG

RW

0h

Port x interrupt flag
0b = No interrupt is pending.
1b = Interrupt is pending.

306

Digital I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 8
SLAU445D – October 2014 – Revised December 2015

Capacitive Touch I/O
This chapter describes the functionality of the Capacitive Touch I/Os and related control.
Topic

8.1
8.2
8.3

...........................................................................................................................

Page

Capacitive Touch I/O Introduction ...................................................................... 308
Capacitive Touch I/O Operation .......................................................................... 309
CapTouch Registers ......................................................................................... 310

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Capacitive Touch I/O

307

Capacitive Touch I/O Introduction

8.1

www.ti.com

Capacitive Touch I/O Introduction
The Capacitive Touch I/O module allows implementation of a simple capacitive touch sense application.
The module uses the integrated pullup and pulldown resistors and an external capacitor to form an
oscillator by feeding back the inverted input voltage sensed by the input Schmitt triggers to the pullup and
pulldown control. Figure 8-1 shows the capacitive touch I/O principle.
Analog Enable
PxREN.y

Capacitive Touch Enable
DVSS

0

DVCC

1

1

Direction Control

PxOUT.y

0
1

Output Signal
Px.y
Cap.
Input Signal

D

Q

EN

Capacitive Touch Signal

Figure 8-1. Capacitive Touch I/O Principle

308

Capacitive Touch I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Capacitive Touch I/O Operation

www.ti.com

Figure 8-2 shows the block diagram of the Capacitive Touch I/O module.
CAPTIOEN

EN

CAPTIOPOSELx
4
7

CAPTIOPISELx

OneHot
Dec.

To Capacitive Touch
enable of pins

3

CAPTIO

To Timers
(device specific)

Capacitive Touch
signals from pins

Figure 8-2. Capacitive Touch I/O Block Diagram

8.2

Capacitive Touch I/O Operation
Enable the Capacitive Touch I/O functionality with CAPTIOEN = 1 and select a port pin using
CAPTIOPOSELx and CAPTIOPISELx. The selected port pin is switched into the capacitive touch state,
and the resulting oscillating signal is provided to be measured by a timer. The connected timers are
device-specific (see the device-specific data sheet).
It is possible to scan to successive port pins by incrementing the low byte of the Capacitive Touch I/O
control register (CAPTIOCTL_L) by 2.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Capacitive Touch I/O

309

CapTouch Registers

8.3

www.ti.com

CapTouch Registers
The Capacitive Touch I/O registers and their address offsets are listed in Table 8-1. In a given device,
multiple Capacitive Touch I/O registers might be available. The base address of each Capacitive Touch
I/O module can be found in the device-specific data sheet.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 8-1. CapTouch Registers

310

Offset

Acronym

Register Name

Type

Access

Reset

Section

0Eh

CAPTIOxCTL

Capacitive Touch I/O x control register

Read/write

Word

0000h

Section 8.3.1

0Eh

CAPTIOxCTL_L

Read/write

Byte

00h

0Fh

CAPTIOxCTL_H

Read/write

Byte

00h

Capacitive Touch I/O

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTouch Registers

www.ti.com

8.3.1 CAPTIOxCTL Register (offset = 0Eh) [reset = 0000h]
Capacitive Touch I/O x Control Register
Figure 8-3. CAPTIOxCTL Register
15

14

13

12

11

10

r0

r0

r0

4

3

rw-0

rw-0

2
CAPTIOPISELx
rw-0

Reserved
r0

r0

7

r0

6
5
CAPTIOPOSELx
rw-0
rw-0

rw-0

9
CAPTIO
r-0

8
CAPTIOEN
rw-0

1

0
Reserved
r0

rw-0

Table 8-2. CAPTIOxCTL Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved. Always reads 0.

9

CAPTIO

R

0h

Capacitive Touch I/O state. Reports the current state of the selected Capacitive
Touch I/O. Reads 0 when Capacitive Touch I/O is disabled.
0b = Curent state 0 or Capacitive Touch I/O is disabled
1b = Current state 1

8

CAPTIOEN

RW

0h

Capacitive Touch I/O enable
0b = All Capacitive Touch I/Os are disabled. Signal toward timers is 0.
1b = Selected Capacitive Touch I/O is enabled

7-4

CAPTIOPOSELx

RW

0h

Capacitive Touch I/O port select. Selects port Px. Selecting a port pin that is not
available on the device in use gives unpredictible results.
0000b = Px = PJ
0001b = Px = P1
0010b = Px = P2
0011b = Px = P3
0100b = Px = P4
0101b = Px = P5
0110b = Px = P6
0111b = Px = P7
1000b = Px = P8
1001b = Px = P9
1010b = Px = P10
1011b = Px = P11
1100b = Px = P12
1101b = Px = P13
1110b = Px = P14
1111b = Px = P15

3-1

CAPTIOPISELx

RW

0h

Capacitive Touch I/O pin select. Selects the pin within selected port Px (see
CAPTIOPOSELx). Selecting a port pin that is not available on the device in use
gives unpredictible results.
000b = Px.0
001b = Px.1
010b = Px.2
011b = Px.3
100b = Px.4
101b = Px.5
110b = Px.6
111b = Px.7

0

Reserved

R

0h

Reserved. Always reads 0.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Capacitive Touch I/O

311

Chapter 9
SLAU445D – October 2014 – Revised December 2015

CapTIvate™ Module
This chapter introduces the CapTIvate module. For additional documentation, examples, and other
information, see the CapTIvate Technology Guide.
Topic

9.1
9.2
9.3

312

...........................................................................................................................

Page

CapTIvate Introduction ...................................................................................... 313
CapTIvate Overview .......................................................................................... 313
CapTIvate Registers .......................................................................................... 318

CapTIvate™ Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate Introduction

www.ti.com

9.1

CapTIvate Introduction
The CapTIvate module supports relative capacitance measurements for detecting capacitance changes.
Features of CapTIvate include:
• Charge-transfer capacitance measurement technology
• Wake on touch: finite state machine to automate detection and environmental compensation without
CPU interaction
• Each channel can be configured independently as either a receiver (Rx) or a transmitter (Tx) to support
both mutual- and self-capacitance measurements
• Configuration allows simultaneous or sequential capacitance measurements
• Each CapTIvate module can support up to 12 measurement blocks and 8 I/O channels per block (see
data sheet for device-specific configuration)
• Signal conditioning to provide signal gain
• Signal conditioning to provide offset compensation for parasitic capacitance
• Integrated calibration capacitors
• Frequency shift to provide immunity (EMI) to radiated and conducted emissions
• Frequency modulation to reduce emissions and provide compatibility (EMC) with other electronic
devices
• Synchronized conversion to move (in time) the conversion away from noise related events (trigger
conversion on zero-crossing event)
• Integrated timer for timer triggered conversions
• Integrated LDO for increased immunity to power supply noise
• Integrated oscillator
• Processing logic to perform measurement filtering, environmental compensation, and threshold
detection

9.2

CapTIvate Overview

9.2.1 Declarations
The following declarations, or terms, are used to describe parts of the CapTIvate module:
module
core
block
channel

Contains the core and several blocks
Contains common digital and analog functions like oscillator, timing generator, VREG generator
required to supply multiple blocks
Contains the corresponding analog and digital functions
Nomenclature: CAPx (x = 0 to 11, this example shows only four blocks.)
Physical connection to external electrode and charge-transfer switches
The following nomenclature is used to refer to a specific channel:
CAPx.y, where x is the block number and y is the channel number
(FR2xxx: x = 0 to 3, y = 0 to 3) (maximum configuration: x = 0 to 11, y = 0 to 7)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate™ Module

313

CapTIvate Overview

www.ti.com

CapTIvate module
CapTIvate block
CapTIvate

CAP0

CAP0.0
CAP0.1
CAP0.2
CAP0.3

CAP1

CAP1.0
CAP1.1
CAP1.2
CAP1.3

CAP2

CAP2.0
CAP2.1
CAP2.2
CAP2.3

CAP3

CAP3.0
CAP3.1
CAP3.2
CAP3.3

Digital
and
Analog

CapTIvate channel

CapTIvate core
NOTE: This figure shows the implementation in the MSP430FR26xx devices.

Figure 9-1. CapTIvate Declarations

9.2.2 Terms
The following is a list of abbreviations and application-specific terms.
CT
CAPx.y
CRx
CTx
Vdd
Vreg
CS capacitor

314

CapTIvate™ Module

Charge transfer
CapTIvate channel, x = 0 to 11, y = 0 to 7
CapTIvate channel configured as receive input, x = 0 to 15
CapTIvate channel configured as transmit output, x = 0 to 15
Voltage supply to the device
Regulated voltage supply
A capacitor used to accumulate charge from an unknown capacitor (CX), usually the
antenna or touch pad. CS stems from 'sampling capacitor'. This capacitor is
implemented on the chip.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate Overview

www.ti.com

CX capacitor

CM capacitor
Channel

In self-capacitance mode, this is a capacitor of unknown value referred to ground
(which is the electrode or touch pad). The term is used to refer to the touch pad (when
viewed as a capacitor), the track and touch pad, or the pin leading to the electrode or
touch pad.
In mutual-capacitance mode, this is the capacitance between the transmit antenna
(CTx) and receive antenna (CRx).
A channel is a 'CapTIvate Block' output. A single channel can be used to measure the
self-capacitance of an electrode or two channels can be used to measure the mutual
capacitance between two electrodes (receive electrode and transmit electrode).
Channel 0
Channel 1
CapTIvate Block

Channel 2
Channel 3

Figure 9-2. Channel Definition
Element

The description of a single touch instance. This instance can be realized with a single
channel in self mode or with two channels in mutual mode.
Element
Self-capacitance
Channel 0

Element
Mutual-capacitance

Channel 1
CapTIvate Block 0

Channel 2
Channel 3

Channel 0
Channel 1
CapTIvate Block 1

Channel 2
Channel 3

Figure 9-3. Element Definition
Time slot

Wake on touch

Conversion

A time slot represents a single time period during which a number of elements are
converted in parallel. For example, if there are four CapTIvate Blocks then four
elements can be measured in parallel during one time slot.
No CPU interaction is required to periodically measure, filter, and analyze a touch
element. If the analysis determines an event that requires further processing or
decision making, then an interrupt is provided to wake up the CPU.
The time required to make a capacitance measurement of all the elements within a
time slot. The measurement of the elements is in parallel, so the dominant element
(element with the longest measurement time) dictates the time of the conversion.
(From a hardware perspective, the conversion is the number of charge transfers
required to charge the CS capacitor to the Vtrip voltage.)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate™ Module

315

CapTIvate Overview

www.ti.com

9.2.3 CapTIvate Configurations
The CapTIvate module can have different numbers of blocks and channels per block. Only one
configuration is possible per device. Figure 9-4 shows the minimum, maximum, and one example
implementation of the CapTIvate module.
Minimum configuration
- 1 block
- 2 channels per block

MSP430FR26xx
- 4 blocks
- 4 channels per block

CAP0
Digital
and
Analog

Maximum configuration
- 12 blocks
- 8 channels per block

CAP0

CAP0

CAP1

CAP1

CAP2

CAP2

CAP3

CAP3

Digital
and
Analog

CAP4

CAP5
Digital
and
Analog
CAP6

CAP7

CAP8

CAP9

CAP10

CAP11

Figure 9-4. CapTIvate Configurations

316

CapTIvate™ Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate Overview

www.ti.com

9.2.4 Operation Modes
9.2.4.1

Self-Capacitance Mode

A capacitor (CX) of unknown value (referenced to earth) is formed with a single electrode. As the user
approaches (or touches) the single electrode, the capacitance of the electrode increases (see Figure 9-5).
This change in capacitance is typically compared to the value of the capacitance on the electrode without
a user nearby. Should a threshold set by firmware be exceeded, the condition is reported as a 'proximity'
or 'contact' event, depending on the level of change detected. Self-capacitive techniques can be employed
for buttons, sliders, wheels, proximity sensors, and single-touch panels.

Frontpanel
Electrode

Frontpanel
Electrode

PCB

PCB

Figure 9-5. Self-Capacitance Mode

9.2.4.2

Mutual-Capacitance Mode

A capacitor (CM) is formed between two electrodes and with the two electrodes connected to different pins
of the controller IC. When an object approaches or touches the capacitor structure, the electric field
between the two electrodes is modified and the capacitance is reduced (see Figure 9-6). This change is
measured and compared to a reference value. If the variance exceeds the threshold set by firmware, a
contact or proximity event is reported.

Frontpanel
Tx

Rx

PCB

Frontpanel
Tx

Rx

PCB

Figure 9-6. Mutual-Capacitance Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate™ Module

317

CapTIvate Registers

9.3

www.ti.com

CapTIvate Registers
Table 9-1 lists the registers for the CapTIvate module. For more information, see the CapTIvate™
Technology Guide.
Table 9-1. CapTIvate Registers

318

Offset

Acronym

Register Name

Section

0x120

CAPIE

CapTIvate Interrupt Enable Register

Section 9.3.1

0x122

CAPIFG

CapTIvate Interrupt Flag Register

Section 9.3.2

0x124

CAPIV

CapTIvate Interrupt Vector Register

Section 9.3.3

CapTIvate™ Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate Registers

www.ti.com

9.3.1 CAPIE Register
CapTIvate Interrupt Enable Register
Figure 9-7. CAPIE Register
15

14

13

r(0)

r(0)

r(0)

12
Reserved
r(0)

7

6

5

4

r(0)

r(0)

Reserved
r(0)

r(0)

11

10

9

r(0)

r(0)

r(0)

8
CAPMAXIEN
rw-(0)

3
CAPCNTRIEN
rw-(0)

2
CAPTIEN
rw-(0)

1
CAPDTCTIEN
rw-(0)

0
EOCIEN
rw-(0)

Table 9-2. CAPIE Register Description
Bit

Field

Type

Reset

Description

15-9

Reserved

R

0b

Reserved. Always reads as 0.

8

CAPMAXIEN

RW

0b

CapTIvate maximum count interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

7-4

Reserved

R

0b

Reserved. Always reads as 0.

3

CAPCNTRIEN

RW

0b

CapTIvate conversion counter interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

2

CAPTIEN

RW

0b

CapTIvate timer interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

1

CAPDTCTIEN

RW

0b

CapTIvate detection interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

0

EOCIEN

RW

0b

End of conversion interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled
When enabled, an interrupt is called when EOCIFG = 1; that is, at the end of
each conversion. EOCIFG must be cleared during the interrupt service routine.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate™ Module

319

CapTIvate Registers

www.ti.com

9.3.2 CAPIFG Register
CapTIvate Interrupt Flag Register
Figure 9-8. CAPIFG Register
15

14

13

r(0)

r(0)

r(0)

12
Reserved
r(0)

7

6

5

4

r(0)

r(0)

Reserved
r(0)

r(0)

11

10

9

r(0)

r(0)

r(0)

8
CAPMAXIFG
rw-(0)

3
CAPCNTRIFG
rw-(0)

2
CAPTIFG
rw-(0)

1
CAPDTCTIFG
rw-(0)

0
EOCIFG
rw-(0)

Table 9-3. CAPIFG Register Description
Bit

Field

Type

Reset

Description

15-9

Reserved

R

0b

Reserved. Always reads as 0.

8

CAPMAXIFG

RW

0b

CapTIvate maximum count interrupt flag
0b = Maximum count not reached
1b = Maximum count reached

7-4

Reserved

R

0b

Reserved. Always reads as 0.

3

CAPCNTRIFG

RW

0b

specified number of conversion have been reached
0b = No interrupt pending
1b = Interrupt pending

2

CAPTIFG

RW

0b

CapTIvate timer interrupt flag
0b = No interrupt pending
1b = Interrupt pending

1

CAPDTCTIFG

RW

0b

CapTIvate detection interrupt flag
0b = No interrupt pending
1b = Interrupt pending

0

EOCIFG

RW

0b

End of conversion interrupt flag
0b = No end of conversion has occurred
1b = End of conversion has occurred
This bit is set by hardware when each of the enabled CRx channels has finished
converting and its results are ready.
This bit is cleared by hardware when a conversion is launched (when CIPF
becomes 1) or when CAPPWR = 0.
If EOCITEN = 1, the CapTIvate interrupt occurs when EOCIFG transitions to 1.
EOCIFG must be cleared by software before exiting the interrupt service routine.

320

CapTIvate™ Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate Registers

www.ti.com

9.3.3 CAPIV Register
CapTIvate Interrupt Vector Register
Figure 9-9. CAPIV Register
15

14

13

12

11

10

9

8

r(0)

r(0)

r(0)

r(0)

3

2

1

0

r-(0)

r-(0)

r-(0)

r(0)

CAPIV
r(0)

r(0)

r(0)

r(0)

7

6

5

4
CAPIV

r(0)

r(0)

r(0)

r(0)

Table 9-4. CAPIV Register Description
Bit

Field

Type

Reset

Description

15-0

CAPIVx

R

0

CapTIvate interrupt vector value. Generates a value that can be used as address
offset for fast interrupt service routine handling.
0000h = No interrupt pending
0002h = Interrupt source: End of conversion interrupt, Flag = EOCIFG
0004h = Interrupt source: Detection interrupt, Flag = CAPDTCTIFG
0006h = Interrupt source: CapTIvate timer interrupt, Flag = CAPTIFG
0008h = Interrupt source: CapTIvate counter interrupt, Flag = CAPCNTRIFG
000Ah = Interrupt source: max count value reached, Flag = CAPMAXIFG
000Ch to FFFEh = Reserved
Read will clear highest priority interrupt. Write will clear all pending interrupts.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CapTIvate™ Module

321

Chapter 10
SLAU445D – October 2014 – Revised December 2015

CRC Module
The cyclic redundancy check (CRC) module provides a signature for a given data sequence. This chapter
describes the operation and use of the CRC module.
Topic

10.1
10.2
10.3
10.4

322

...........................................................................................................................
Cyclic Redundancy Check (CRC) Module Introduction ..........................................
CRC Standard and Bit Order ..............................................................................
CRC Checksum Generation ...............................................................................
CRC Registers..................................................................................................

CRC Module

Page

323
323
324
327

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Cyclic Redundancy Check (CRC) Module Introduction

www.ti.com

10.1 Cyclic Redundancy Check (CRC) Module Introduction
The CRC module produces a signature for a given sequence of data values. The signature is generated
through a feedback path from data bits 0, 4, 11, and 15 (see Figure 10-1). The CRC signature is based on
the polynomial given in the CRC-CCITT-BR polynomial (see Equation 11) .
f(x) = x16 + x12 + x5 +1

(11)
Data In

Q D

Q D

Q D

Q D

Q D

Q D

Q D

Q D

Q D

Q D

Bit
15

Bit
12

Bit
11

Bit
10

Bit
6

Bit
5

Bit
4

Bit
3

Bit
1

Bit
0

Shift Clock

Figure 10-1. LFSR Implementation of CRC-CCITT Standard, Bit 0 is the MSB of the Result
Identical input data sequences result in identical signatures when the CRC is initialized with a fixed seed
value, whereas different sequences of input data, in general, result in different signatures.

10.2 CRC Standard and Bit Order
The definitions of the various CRC standards were done in the era of main frame computers, and by
convention bit 0 was treated as the MSB. Today, as in most microcontrollers such as the MSP430, bit 0
normally denotes the LSB. In Figure 10-1, the bit convention shown is as given in the original standards
(that is, bit 0 is the MSB). The fact that bit 0 is treated for some as LSB and for others as MSB continues
to cause confusion. The CRC16 module therefore provides a bit reversed register pair for CRC16
operations to support both conventions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Module

323

CRC Checksum Generation

www.ti.com

10.3 CRC Checksum Generation
The CRC generator is first initialized by writing a 16-bit word (seed) to the CRC Initialization and Result
(CRCINIRES) register. Any data that should be included into the CRC calculation must be written to the
CRC Data Input (CRCDI or CRCDIRB) register in the same order that the original CRC signature was
calculated. The actual signature can be read from the CRCINIRES register to compare the computed
checksum with the expected checksum.
Signature generation describes a method of how the result of a signature operation can be calculated. The
calculated signature, which is computed by an external tool, is called checksum in the following text. The
checksum is stored in the product's memory and is used to check the correctness of the CRC operation
result.

10.3.1 CRC Implementation
To allow parallel processing of the CRC, the linear feedback shift register (LFSR) functionality is
implemented with an XOR tree. This implementation shows the identical behavior as the LFSR approach
after 8 bits of data are shifted in when the LSB is 'shifted' in first. The generation of a signature calculation
must be started by writing a seed to the CRCINIRES register to initialize the register. Software or
hardware can transfer data to the CRCDI or CRCDIRB register (for example, from memory). The value in
CRCDI or CRCDIRB is then included into the signature, and the result is available in the signature result
registers at the next read access (CRCINIRES and CRCRESR). The signature can be generated using
word or byte data.
If a word data is processed, the lower byte at the even address is used at the first clock (MCLK) cycle.
During the second clock cycle, the higher byte is processed. Thus, it takes two clock cycles to process
word data, while it takes only one clock (MCLK) cycle to process byte data.
Data bytes written to CRCDIRB in word mode or the data byte in byte mode are bit-wise reversed before
the CRC engine adds them to the signature. The bits among each byte are reversed. Data bytes written to
CRCDI in word mode or the data byte in byte mode are not bit reversed before use by the CRC engine.
If the checksum itself (with reversed bit order) is included into the CRC operation (as data written to
CRCDI or CRCDIRB), the result in the CRCINIRES and CRCRESR registers must be zero.

324

CRC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Checksum Generation

www.ti.com
Data In
8-bit or 16-bit
CRC Data In Register CRCDI
8

8
Byte MUX

8

Write to CRCINIRES

16

16

CRC Initialization and Result Register
CRCINIRES

Figure 10-2. Implementation of CRC-CCITT Using the CRCDI and CRCINIRES Registers

10.3.2 Assembler Examples
Example 10-1 demonstrates the operation of the on-chip CRC.
Example 10-1. General Assembler Example
...
PUSH
PUSH
MOV
MOV
MOV
L1 MOV
CMP
JLO
MOV
TST
JNZ
...
POP
POP

R4
R5
#StartAddress,R4
#EndAddress,R5
&INIT, &CRCINIRES
@R4+,&CRCDI
R5,R4
L1
&Check_Sum,&CRCDI
&CRCINIRES
CRC_ERROR

R5
R4

; Save registers
; StartAddress < EndAddress
;
;
;
;
;
;
;
;
;
;

INIT to CRCINIRES
Item to Data In register
End address reached?
No
Yes, Include checksum
Result = 0?
No, CRCRES <> 0: error
Yes, CRCRES=0:
information ok.
Restore registers

The details of the implemented CRC algorithm are shown by the data sequences in Example 10-2 using
word or byte accesses and the CRC data-in as well as the CRC data-in reverse byte registers.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Module

325

CRC Checksum Generation

www.ti.com

Example 10-2. Reference Data Sequence
...
mov
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b

#0FFFFh,&CRCINIRES
#00031h,&CRCDI_L
#00032h,&CRCDI_L
#00033h,&CRCDI_L
#00034h,&CRCDI_L
#00035h,&CRCDI_L
#00036h,&CRCDI_L
#00037h,&CRCDI_L
#00038h,&CRCDI_L
#00039h,&CRCDI_L

;
;
;
;
;
;
;
;
;
;

initialize CRC
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"

cmp

#089F6h,&CRCINIRES

jeq
br

&Success
&Error

;
;
;
;

compare result
CRCRESR contains 06F91h
no error
to error handler

mov
mov.w
mov.w
mov.w
mov.w
mov.b

#0FFFFh,&CRCINIRES
#03231h,&CRCDI
#03433h,&CRCDI
#03635h,&CRCDI
#03837h,&CRCDI
#039h, &CRCDI_L

;
;
;
;
;
;

initialize CRC
"1" & "2"
"3" & "4"
"5" & "6"
"7" & "8"
"9"

cmp

#089F6h,&CRCINIRES

jeq
br

&Success
&Error

; compare result
; CRCRESR contains 06F91h
; no error
; to error handler

...
mov
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b
mov.b

#0FFFFh,&CRCINIRES
#00031h,&CRCDIRB_L
#00032h,&CRCDIRB_L
#00033h,&CRCDIRB_L
#00034h,&CRCDIRB_L
#00035h,&CRCDIRB_L
#00036h,&CRCDIRB_L
#00037h,&CRCDIRB_L
#00038h,&CRCDIRB_L
#00039h,&CRCDIRB_L

;
;
;
;
;
;
;
;
;
;

initialize CRC
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"

cmp

#029B1h,&CRCINIRES

jeq
br

&Success
&Error

;
;
;
;

compare result
CRCRESR contains 08D94h
no error
to error handler

...
mov
mov.w
mov.w
mov.w
mov.w
mov.b

#0FFFFh,&CRCINIRES
#03231h,&CRCDIRB
#03433h,&CRCDIRB
#03635h,&CRCDIRB
#03837h,&CRCDIRB
#039h, &CRCDIRB_L

;
;
;
;
;
;

initialize CRC
"1" & "2"
"3" & "4"
"5" & "6"
"7" & "8"
"9"

cmp

#029B1h,&CRCINIRES

jeq
br

&Success
&Error

;
;
;
;

compare result
CRCRESR contains 08D94h
no error
to error handler

326

CRC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Registers

www.ti.com

10.4 CRC Registers
The CRC module registers are listed in Table 10-1. The base address can be found in the device-specific
data sheet. The address offset is given in Table 10-1.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 10-1. CRC Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

CRCDI

CRC Data In

Read/write

Word

0000h

Section 10.4.1

00h

CRCDI_L

Read/write

Byte

00h

01h

CRCDI_H

Read/write

Byte

00h

Read/write

Word

0000h

02h

CRCDIRB

CRC Data In Reverse Byte

02h

CRCDIRB_L

Read/write

Byte

00h

03h

CRCDIRB_H

Read/write

Byte

00h

Read/write

Word

FFFFh

Read/write

Byte

FFh

Read/write

Byte

FFh

Read only

Word

FFFFh

04h

CRCINIRES

04h

CRCINIRES_L

05h

CRCINIRES_H

06h

CRCRESR

CRC Initialization and Result

CRC Result Reverse

06h

CRCRESR_L

Read/write

Byte

FFh

07h

CRCRESR_H

Read/write

Byte

FFh

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Section 10.4.2

Section 10.4.3

Section 10.4.4

CRC Module

327

CRC Registers

www.ti.com

10.4.1 CRCDI Register
CRC Data In Register
Figure 10-3. CRCDI Register
15

14

13

12

11

10

9

8

rw-0

rw-0

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

CRCDI
rw-0

rw-0

rw-0

rw-0

7

6

5

4
CRCDI

rw-0

rw-0

rw-0

rw-0

Table 10-2. CRCDI Register Description
Bit

Field

Type

Reset

Description

15-0

CRCDI

RW

0h

CRC data in. Data written to the CRCDI register is included to the present
signature in the CRCINIRES register according to the CRC-CCITT standard.

10.4.2 CRCDIRB Register
CRC Data In Reverse Register
Figure 10-4. CRCDIRB Register
15

14

13

12

11

10

9

8

rw-0

rw-0

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

CRCDIRB
rw-0

rw-0

rw-0

rw-0

7

6

5

4
CRCDIRB

rw-0

rw-0

rw-0

rw-0

Table 10-3. CRCDIRB Register Description
Bit

Field

Type

Reset

Description

15-0

CRCDIRB

RW

0h

CRC data in reverse byte. Data written to the CRCDIRB register is included to
the present signature in the CRCINIRES and CRCRESR registers according to
the CRC-CCITT standard. Reading the register returns the register CRCDI
content.

328

CRC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Registers

www.ti.com

10.4.3 CRCINIRES Register
CRC Initialization and Result Register
Figure 10-5. CRCINIRES Register
15

14

13

12

11

10

9

8

rw-1

rw-1

rw-1

rw-1

3

2

1

0

rw-1

rw-1

rw-1

rw-1

CRCINIRES
rw-1

rw-1

rw-1

rw-1

7

6

5

4
CRCINIRES

rw-1

rw-1

rw-1

rw-1

Table 10-4. CRCINIRES Register Description
Bit

Field

Type

Reset

Description

15-0

CRCINIRES

RW

FFFFh

CRC initialization and result. This register holds the current CRC result
(according to the CRC-CCITT standard). Writing to this register initializes the
CRC calculation with the value written to it. The value just written can be read
from CRCINIRES register.

10.4.4 CRCRESR Register
CRC Reverse Result Register
Figure 10-6. CRCRESR Register
15

14

13

12

11

10

9

8

r-1

r-1

r-1

r-1

3

2

1

0

r-1

r-1

r-1

r-1

CRCRESR
r-1

r-1

r-1

r-1

7

6

5

4
CRCRESR

r-1

r-1

r-1

r-1

Table 10-5. CRCRESR Register Description
Bit

Field

Type

Reset

Description

15-0

CRCRESR

R

FFFFh

CRC reverse result. This register holds the current CRC result (according to the
CRC-CCITT standard). The order of bits is reverse (for example,
CRCINIRES[15] = CRCRESR[0]) to the order of bits in the CRCINIRES register
(see example code).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

CRC Module

329

Chapter 11
SLAU445D – October 2014 – Revised December 2015

Watchdog Timer (WDT_A)
The watchdog timer is a 32-bit timer that can be used as a watchdog or as an interval timer. This chapter
describes the watchdog timer. The enhanced watchdog timer, WDT_A, is implemented in all devices.
Topic

11.1
11.2
11.3

330

...........................................................................................................................

Page

WDT_A Introduction.......................................................................................... 331
WDT_A Operation ............................................................................................. 333
WDT_A Registers ............................................................................................. 335

Watchdog Timer (WDT_A)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

WDT_A Introduction

www.ti.com

11.1 WDT_A Introduction
The primary function of the watchdog timer (WDT_A) module is to perform a controlled system restart
after a software problem occurs. If the selected time interval expires, a system reset is generated. If the
watchdog function is not needed in an application, the module can be configured as an interval timer and
can generate interrupts at selected time intervals.
Features of the watchdog timer module include:
• Eight software-selectable time intervals
• Watchdog mode
• Interval mode
• Password-protected access to Watchdog Timer Control (WDTCTL) register
• Selectable clock source
• Can be stopped to conserve power
• Clock fail-safe feature
Figure 11-1 shows the watchdog timer block diagram.
NOTE:

Watchdog timer powers up active.
After a PUC, the WDT_A module is automatically configured in the watchdog mode with an
initial approximately 32-ms reset interval using the SMCLK. The user must set up or halt the
WDT_A before the initial reset interval expires.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Watchdog Timer (WDT_A)

331

WDT_A Introduction

www.ti.com

32Bit WDT extension
00
01
Int.
Flag

WDTQn

10
11

Q23
Q19

00
01
10
11
PUC

0

16-bit
Counter

1

CLK

1

MDB

MSB

Q27

0

Pulse
Generator

WDTCTL

Q31

0
1

Q15
Q13

Password
Compare

1

Q9
Q6
Clear

16-bit
Counter

(Asyn)

CLK

0
1
0

EQU
Write Enable
Low Byte

EQU
SMCLK

00

ACLK

01

VLOCLK

10

X_CLK

11

R/W

WDTHOLD
WDTSSEL1
WDTSSEL0
WDTTMSEL
WDTCNTCL
WDTIS2
WDTIS1
WDTIS0

LSB

X_CLK request
Clock
Request
Logic

SMCLK request
ACLK request
VLOCLK request

Figure 11-1. Watchdog Timer Block Diagram

332

Watchdog Timer (WDT_A)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

WDT_A Operation

www.ti.com

11.2 WDT_A Operation
The watchdog timer module can be configured as either a watchdog or interval timer with the WDTCTL
register. WDTCTL is a 16-bit password-protected read/write register. Any read or write access must use
word instructions, and write accesses must include the write password 05Ah in the upper byte. A write to
WDTCTL with any value other than 05Ah in the upper byte is a password violation and causes a PUC
system reset, regardless of timer mode. Any read of WDTCTL reads 069h in the upper byte. A byte read
of the WDTCTL high or low byte returns the value of the low byte. Writing a byte wide to upper or lower
byte of WDTCTL results in a PUC.

11.2.1 Watchdog Timer Counter (WDTCNT)
The WDTCNT is a 32-bit up counter that is not directly accessible by software. The WDTCNT is controlled
and its time intervals are selected through the Watchdog Timer Control (WDTCTL) register. The WDTCNT
can be sourced from SMCLK, ACLK, VLOCLK, or X_CLK on some devices. The clock source is selected
with the WDTSSEL bits. The timer interval is selected with the WDTIS bits.

11.2.2 Watchdog Mode
After a PUC condition, the WDT module is configured in the watchdog mode with an initial 32-ms
(approximate) reset interval using the SMCLK. The user must set up, halt, or clear the watchdog timer
before this initial reset interval expires, or another PUC is generated. When the watchdog timer is
configured to operate in watchdog mode, either writing to WDTCTL with an incorrect password or
expiration of the selected time interval triggers a PUC. A PUC resets the watchdog timer to its default
condition.

11.2.3 Interval Timer Mode
Setting the WDTTMSEL bit to 1 selects the interval timer mode. This mode can be used to provide
periodic interrupts. In interval timer mode, the WDTIFG flag is set at the expiration of the selected time
interval. A PUC is not generated in interval timer mode at expiration of the selected timer interval, and the
WDTIFG enable bit WDTIE remains unchanged.
When the WDTIE bit and the GIE bit are set, the WDTIFG flag requests an interrupt. The WDTIFG
interrupt flag is automatically reset when its interrupt request is serviced, or may be reset by software. The
interrupt vector address in interval timer mode is different from that in watchdog mode.
NOTE:

Modifying the watchdog timer
The watchdog timer interval should be changed together with WDTCNTCL = 1 in a single
instruction to avoid an unexpected immediate PUC or interrupt. The watchdog timer should
be halted before changing the clock source to avoid a possible incorrect interval.

11.2.4 Watchdog Timer Interrupts
The watchdog timer uses two bits in the SFRs for interrupt control:
• WDT interrupt flag, WDTIFG, located in SFRIFG1.0
• WDT interrupt enable, WDTIE, located in SFRIE1.0
When using the watchdog timer in the watchdog mode, the WDTIFG flag sources a reset vector interrupt.
The WDTIFG can be used by the reset interrupt service routine to determine if the watchdog caused the
device to reset. If the flag is set, the watchdog timer initiated the reset condition, either by timing out or by
a password violation. If WDTIFG is cleared, the reset was caused by a different source.
When using the watchdog timer in interval timer mode, the WDTIFG flag is set after the selected time
interval and requests a watchdog timer interval timer interrupt if the WDTIE and the GIE bits are set. The
interval timer interrupt vector is different from the reset vector used in watchdog mode. In interval timer
mode, the WDTIFG flag is reset automatically when the interrupt is serviced, or can be reset with
software.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Watchdog Timer (WDT_A)

333

WDT_A Operation

www.ti.com

11.2.5 Clock Fail-Safe Feature
The WDT_A provides a fail-safe clocking feature, ensuring the clock to the WDT_A cannot be disabled
while in watchdog mode. This means the low-power modes may be affected by the choice for the WDT_A
clock.
If SMCLK or ACLK fails as the WDT_A clock source, VLOCLK is automatically selected as the WDT_A
clock source.
When the WDT_A module is used in interval timer mode, there is no fail-safe feature within WDT_A for
the clock source.

11.2.6 Operation in Low-Power Modes
MSP devices have several low-power modes. Different clock signals are available in different low-power
modes. The requirements of the application and the type of clocking that is used determine how the
WDT_A should be configured. For example, the WDT_A should not be configured in watchdog mode with
a clock source that is originally sourced from DCO, XT1 in high-frequency mode, or XT2 using SMCLK or
ACLK if the user wants to use low-power mode 3. In this case, SMCLK or ACLK would remain enabled,
increasing the current consumption of LPM3. When the watchdog timer is not required, the WDTHOLD bit
can be used to hold the WDTCNT, reducing power consumption.
Any write operation to WDTCTL must be a word operation with 05Ah (WDTPW) in the upper byte (see
Example 11-1).
Example 11-1. Writes to WDTCTL
; Periodically clear an active watchdog
MOV #WDTPW+WDTIS2+WDTIS1+WDTCNTCL,&WDTCTL
;
; Change watchdog timer interval
MOV #WDTPW+WDTCNTCL+SSEL,&WDTCTL
;
; Stop the watchdog
MOV #WDTPW+WDTHOLD,&WDTCTL
;
; Change WDT to interval timer mode, clock/8192 interval
MOV #WDTPW+WDTCNTCL+WDTTMSEL+WDTIS2+WDTIS0,&WDTCTL

334

Watchdog Timer (WDT_A)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

WDT_A Registers

www.ti.com

11.3 WDT_A Registers
The watchdog timer module registers are listed in Table 11-1. The base address for the watchdog timer
module registers and special function registers (SFRs) can be found in the device-specific data sheets.
The address offset is given in Table 11-1.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 11-1. WDT_A Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

WDTCTL

Watchdog Timer Control

Read/write

Word

6904h

Section 11.3.1

00h

WDTCTL_L

Read/write

Byte

04h

01h

WDTCTL_H

Read/write

Byte

69h

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Watchdog Timer (WDT_A)

335

WDT_A Registers

www.ti.com

11.3.1 WDTCTL Register
Watchdog Timer Control Register
Figure 11-2. WDTCTL Register
15

14

13

12

11

10

9

8

WDTPW
rw

rw

7
WDTHOLD
rw-0

6

rw

rw

rw

rw

rw

rw

5

4
WDTTMSEL
rw-0

3
WDTCNTCL
r0(w)

2

1
WDTIS
rw-0

0

WDTSSEL
rw-0

rw-0

rw-1

rw-0

Table 11-2. WDTCTL Register Description
Bit

Field

Type

Reset

Description

15-8

WDTPW

RW

69h

Watchdog timer password. Always reads as 069h. Must be written as 05Ah, or a
PUC is generated.

7

WDTHOLD

RW

0h

Watchdog timer hold. This bit stops the watchdog timer. Setting WDTHOLD = 1
when the WDT is not in use conserves power.
0b = Watchdog timer is not stopped
1b = Watchdog timer is stopped

6-5

WDTSSEL

RW

0h

Watchdog timer clock source select
00b = SMCLK
01b = ACLK
10b = VLOCLK
11b = X_CLK

4

WDTTMSEL

RW

0h

Watchdog timer mode select
0b = Watchdog mode
1b = Interval timer mode

3

WDTCNTCL

RW

0h

Watchdog timer counter clear. Setting WDTCNTCL = 1 clears the count value to
0000h. WDTCNTCL is automatically reset.
0b = No action
1b = WDTCNT = 0000h

2-0

WDTIS

RW

4h

Watchdog timer interval select. These bits select the watchdog timer interval to
set the WDTIFG flag or generate a PUC.
000b = Watchdog clock source / 231 (18:12:16 at 32.768 kHz)
001b = Watchdog clock source / 227 (01:08:16 at 32.768 kHz)
010b = Watchdog clock source / 223 (00:04:16 at 32.768 kHz)
011b = Watchdog clock source / 219 (00:00:16 at 32.768 kHz)
100b = Watchdog clock source / 215 (1 s at 32.768 kHz)
101b = Watchdog clock source / 213 (250 ms at 32.768 kHz)
110b = Watchdog clock source / 29 (15.625 ms at 32.768 kHz)
111b = Watchdog clock source / 26 (1.95 ms at 32.768 kHz)

336

Watchdog Timer (WDT_A)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 12
SLAU445D – October 2014 – Revised December 2015

Timer_A
Timer_A is a 16-bit timer/counter with multiple capture/compare registers. There can be multiple Timer_A
modules on a given device (see the device-specific data sheet). This chapter describes the operation and
use of the Timer_A module.
Topic

12.1
12.2
12.3

...........................................................................................................................

Page

Timer_A Introduction ........................................................................................ 338
Timer_A Operation............................................................................................ 340
Timer_A Registers ............................................................................................ 353

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

337

Timer_A Introduction

www.ti.com

12.1 Timer_A Introduction
Timer_A is a 16-bit timer/counter with up to seven capture/compare registers. Timer_A can support
multiple captures or compares, PWM outputs, and interval timing. Timer_A also has extensive interrupt
capabilities. Interrupts may be generated from the counter on overflow conditions and from each of the
capture/compare registers.
Timer_A features include:
• Asynchronous 16-bit timer/counter with four operating modes
• Selectable and configurable clock source
• Up to seven configurable capture/compare registers
• Configurable outputs with pulse width modulation (PWM) capability
• Asynchronous input and output latching
• Interrupt vector register for fast decoding of all Timer_A interrupts
Figure 12-1 shows the block diagram of Timer_A.
NOTE:

Use of the word count
Count is used throughout this chapter. It means the counter must be in the process of
counting for the action to take place. If a particular value is directly written to the counter, an
associated action does not take place.

NOTE:

Nomenclature
There may be multiple instantiations of Timer_A on a given device. The prefix TAx is used,
where x is a greater than equal to zero indicating the Timer_A instantiation. For devices with
one instantiation, x = 0. The suffix n, where n = 0 to 6, represents the specific
capture/compare registers associated with the Timer_A instantiation.

338

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Introduction

www.ti.com

Timer Block
TASSEL

ID

2
TAxCLK

00

ACLK

01

SMCLK

10

INCLK

11

IDEX
2

Timer Clock

3
Divider
/1.../8

Divider
/1/2/4/8

MC

15

0

2

16-bit Timer
TAxR
Clear

Count
Mode

RC

EQU0

Set TAxCTL
TAIFG

TACLR

CCR0
CCR1
CCR2
CCR3
CCR4
CCR5
CCR6
CCIS

CM

2

2

CCI6A

00

CCI6B

01

GND

10

VCC

11

logic

COV
SCS

Capture
Mode
Timer Clock

15

0

0
Sync

TAxCCR6

1

Comparator 6

CCI

EQU6
SCCI

Y

A
EN

CAP
0
1

Set TAxCCR6
CCIFG

OUT
EQU0

Output
Unit4

D Set Q
Timer Clock

3

OUT6 Signal

Reset

POR

OUTMOD

Figure 12-1. Timer_A Block Diagram

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

339

Timer_A Operation

www.ti.com

12.2 Timer_A Operation
The Timer_A module is configured with user software. The setup and operation of Timer_A are discussed
in the following sections.

12.2.1 16-Bit Timer Counter
The 16-bit timer/counter register, TAxR, increments or decrements (depending on mode of operation) with
each rising edge of the clock signal. TAxR can be read or written with software. Additionally, the timer can
generate an interrupt when it overflows.
NOTE:

Accessing TAxR
Care must be taken when accessing TAxR. If TAxR is accessed (read or write) by the CPU
while the timer is running, the value read from TAxR or the value written to TAxR could be
unpredictable. To avoid this uncertainty, the timer should be stopped by writing the MC bits
to zero before accessing TAxR. For read, alternatively TAxR can be read multiple times
while the timer is running, and a majority vote taken in software to determine the correct
reading.

12.2.1.1 Clock Source Select and Divider
The timer clock can be sourced from ACLK, SMCLK, or externally from TAxCLK or INCLK. The clock
source is selected with the TASSEL bits. The selected clock source may be passed directly to the timer or
divided by 2, 4, or 8, using the ID bits. The selected clock source can be further divided by 2, 3, 4, 5, 6, 7,
or 8 using the TAIDEX bits. The timer clock divider logic is reset when TACLR is set.
NOTE:

Timer_A dividers
The timer clock dividers are reset by the TACLR bit. The clock divider is implemented as a
down counter. To reset the down counter's state, write one to the TACLR bit in Stop mode.
When the timer starts counting, the timer clock begins clocking at the first rising edge of the
Timer_A clock source selected with the TASSEL bits and continues clocking at the divider
setting set by the ID and TAIDEX bits.
The clock divider (ID bits and TAIDEX bits) should not be changed while the timer is running.
It could cause unexpected behaviors. Stop the timer first (MC = 0) when changing the ID bits
or TAIDEX bits.

12.2.2 Starting the Timer
When the device is out of reset (BOR or POR), the timer is at stop condition and all registers have default
values. To start the timer from the default condition, perform the following steps:
1. Write 1 to the TACLR bit (TACLR = 1) to clear TAxR, clock divider state, and the counter direction.
2. If necessary, write initial counter value to TAxR.
3. Initialize TAxCCRn.
4. Apply desired configuration to TAxIV, TAIDEX and TAxCCTLn.
5. Apply desired configuration to TAxCTL including to MC bits.

340

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

12.2.3 Timer Mode Control
The timer has four modes of operation: stop, up, continuous, and up/down (see Table 12-1). The
operating mode is selected with the MC bits.
Table 12-1. Timer Modes
MC

Mode

00

Stop

01

Up

10

Continuous

11

Up/down

Description
The timer is halted.
The timer repeatedly counts from zero to the value of TAxCCR0
The timer repeatedly counts from zero to 0FFFFh.
The timer repeatedly counts from zero up to the value of TAxCCR0 and back down to zero.

To move from one mode to another, first stop the timer by writing zero to the MC bits (MC = 0), then set
the MC bits to the desired mode (see Table 12-1 for details).
12.2.3.1 Up Mode
The Up mode is used if the timer period must be different from 0FFFFh counts. The timer repeatedly
counts up to the value of compare register TAxCCR0, which defines the period (see Figure 12-2). The
number of timer counts in the period is TAxCCR0 + 1. When the timer value equals TAxCCR0, the timer
restarts counting from zero. If Up mode is selected when the timer value is greater than TAxCCR0, the
timer immediately restarts counting from zero.

TAxCCR0

Figure 12-2. Up Mode
The TAxCCR0 CCIFG interrupt flag is set when the timer counts to the TAxCCR0 value. The TAIFG
interrupt flag is set when the timer counts from TAxCCR0 to zero. Figure 12-3 shows the flag set cycle.
Timer Clock
Timer

CCR0-1

CCR0

0h

1h

CCR0-1

CCR0

0h

Set TAxCTL TAIFG
Set TAxCCR0 CCIFG

Figure 12-3. Up Mode Flag Setting

12.2.3.1.1 Changing Period Register TAxCCR0
When the MC bits are configured to Up mode (MC = 1) from Stop mode (MC = 0), the timer starts
counting up from the value in TAxR if the TAxCCR0 is greater than TAxR. If TAxCCR0 is less than TAxR
or equal to TAxR, the timer rolls back to zero and then counts up to TAxCCR0. One additional count may
occur before the counter rolls to zero.
Changing TAxCCR0 while the timer is running may result in unexpected behaviors. To avoid the
uncertainty, TAxCCR0 should be updated in Stop mode (MC = 0).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

341

Timer_A Operation

www.ti.com

12.2.3.2 Continuous Mode
In the Continuous mode, the timer repeatedly counts up to 0FFFFh and restarts from zero as shown in
Figure 12-4. The capture/compare register TAxCCR0 works the same way as the other capture/compare
registers.
0FFFFh

0h

Figure 12-4. Continuous Mode
The TAIFG interrupt flag is set when the timer counts from 0FFFFh to zero. Figure 12-5 shows the flag set
cycle.
Timer Clock
Timer

FFFEh

0h

FFFFh

1h

FFFEh

FFFFh

0h

Set TAxCTL TAIFG

Figure 12-5. Continuous Mode Flag Setting

12.2.3.3 Use of Continuous Mode
The Continuous mode can be used to generate independent time intervals and output frequencies. Each
time an interval is completed, an interrupt is generated. The next time interval is added to the TAxCCRn
register in the interrupt service routine. Figure 12-6 shows two separate time intervals, t0 and t1, being
added to the capture/compare registers. In this usage, the time interval is controlled by hardware, not
software, without impact from interrupt latency. Up to n (where n = 0 to 6), independent time intervals or
output frequencies can be generated using capture/compare registers.
TAxCCR1b
TAxCCR0b

TAxCCR1c
TAxCCR0c

TAxCCR0d

0FFFFh
TAxCCR1a

TAxCCR1d

TAxCCR0a

t0

t0

t1

t0

t1

t1

Figure 12-6. Continuous Mode Time Intervals

342

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

Time intervals can be produced with other modes as well, where TAxCCR0 is used as the period register.
Their handling is more complex because the sum of the old TAxCCRn data and the new period can be
higher than the TAxCCR0 value. When the previous TAxCCRn value plus tx is greater than the TAxCCR0
data, the TAxCCR0 value must be subtracted to obtain the correct time interval.
12.2.3.4 Up/Down Mode
The Up/Down mode is used if the timer period must be different from 0FFFFh counts, and if symmetrical
pulse generation is needed. The timer repeatedly counts up to the value of compare register TAxCCR0
and back down to zero (see Figure 12-7). The period is twice the value in TAxCCR0.
0FFFFh
TAxCCR0

0h

Figure 12-7. Up/Down Mode
The count direction is latched. This allows the timer to be stopped and then restarted in the same direction
it was counting before it was stopped. If this is not desired, the TACLR bit must be set in Stop mode to
clear the direction. The TACLR bit also clears the TAxR value and the timer clock divider (the divider
setting remains unchanged).
In Up/Down mode, the TAxCCR0 CCIFG interrupt flag and the TAIFG interrupt flag are set only once
during a period, separated by one-half the timer period. The TAxCCR0 CCIFG interrupt flag is set when
the timer counts from TAxCCR0 – 1 to TAxCCR0, and TAIFG is set when the timer completes counting
down from 0001h to 0000h. Figure 12-8 shows the flag set cycle.
Timer Clock
Timer

CCR0-1

CCR0

CCR0-1

CCR0-2

1h

0h

Up/Down
Set TAxCTL TAIFG
Set TAxCCR0 CCIFG

Figure 12-8. Up/Down Mode Flag Setting

12.2.3.4.1 Changing Period Register TAxCCR0
When the MC bits is configured to Up/Down mode (MC = 3) from Stop mode, the timer starts counting up
or down depending on the previous direction. The timer keeps the previous direction regardless of the
previous mode. The direction can be forced to up direction by setting to TACLR bit in Stop mode, but the
direction cannot be forced to down direction when the timer starts with up direction, if TAxCCR0 is greater
than TAxR, the timer will count up to TAxCC0. If TAxCCR0 is less than TAxR, or equal to TAxR, the timer
begins counting down. However, one additional count may occur before the counter begins counting
down.
In Up/Down mode, updating TAxCCR0 while the timer is running may result in unexpected behaviors. To
avoid the uncertainly, TAxCCR0 should be updated in Stop mode (MC = 0).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

343

Timer_A Operation

www.ti.com

12.2.3.5 Use of Up/Down Mode
The Up/Down mode supports applications that require dead times between output signals (see
Section 12.2.5). For example, to avoid overload conditions, two outputs driving an H-bridge must never be
in a high state simultaneously. In the example shown in Figure 12-9, the tdead is:
tdead = ttimer × ( TAxCCR1 – TAxCCR2)
Where:
tdead = Time during which both outputs need to be inactive
ttimer = Cycle time of the timer clock
TAxCCRn = Content of capture/compare register n
0FFFFh
TAxCCR0
TAxCCR1
TAxCCR2
0h
Dead Time
Output Mode 6: Toggle/Set

Output Mode 2: Toggle/Reset
EQU1
EQU1
EQU1
EQU1
TAIFG
EQU0
EQU0
EQU2 EQU2
EQU2
EQU2

TAIFG

Interrupt Events

Figure 12-9. Output Unit in Up/Down Mode

12.2.4 Capture/Compare Blocks
Up to seven identical capture/compare blocks, TAxCCRn (where n = 0 to 7), are present in Timer_A. Any
of the blocks may be used to capture the timer data or to generate time intervals.
12.2.4.1 Capture Mode
The capture mode is selected when CAP = 1. Capture mode is used to record time events. It can be used
for speed computations or time measurements. The capture inputs CCIxA and CCIxB are connected to
external pins or internal signals and are selected with the CCIS bits. The CM bits select the capture edge
of the input signal as rising, falling, or both. A capture occurs on the selected edge of the input signal. If a
capture occurs:
• The timer value is copied into the TAxCCRn register.
• The interrupt flag CCIFG is set.
The input signal level can be read at any time through the CCI bit. Devices may have different signals
connected to CCIxA and CCIxB. See the device-specific data sheet for the connections of these signals.
NOTE:

Reading TAxCCRn in Capture mode
In Capture mode, if TAxCCRn is ready by the CPU while the timer counter value is being
copied into TAxCCRn at a capture event, the value ready by the CPU could be invalid. To
avoid this undesired result, TAxCCRn must be read after the CCIFG flag is set and before
the next capture event occurs.

344

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

The capture signal can be asynchronous to the timer clock and cause a race condition. Setting the SCS
bit synchronizes the capture with the next timer clock. Setting the SCS bit to synchronize the capture
signal with the timer clock is recommended (see Figure 12-10).
Timer Clock
Timer

n–2

n–1

n

n+1

n+2

n+3

n+4

CCI
Capture
Set TAxCCRn CCIFG

Figure 12-10. Capture Signal (SCS = 1)

NOTE:

Changing Capture Input source (CCIS bits)
Switching between CCIxA and CCIxB while in capture mode may cause unintended capture
events. To avoid this scenario, capture inputs should only be changed when capture mode is
disabled (CM = {0} or CAP = 0). Note that switching between GND and VCC can be
performed at any time. See Section 12.2.4.1.1 for details.

Overflow logic is provided in each capture/compare register to indicate if a second capture was performed
before the value from the first capture was read. Bit COV is set when this occurs as shown in Figure 1211. COV must be reset with software.
Idle
Capture
No
Capture
Taken

Capture Read
Read
Taken
Capture

Capture
Taken
Capture

Capture Read and No Capture

Capture
Clear Bit COV
in Register TAxCCTLn
Second
Capture
Taken
COV = 1

Idle

Figure 12-11. Capture Cycle

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

345

Timer_A Operation

www.ti.com

12.2.4.1.1 Capture Initiated by Software
Captures can be initiated by software. The CM bits can be set for capture on both edges. Software then
sets CCIS1 = 1 and toggles bit CCIS0 to switch the capture signal between VCC and GND, initiating a
capture each time CCIS0 changes state:
MOV

#CAP+SCS+CCIS1+CM_3,&TA0CCTL1

XOR

#CCIS0,&TA0CCTL1

; Setup TA0CCTL1, synch. capture mode
; Event trigger on both edges of capture input.
; TA0CCR1 = TA0R

12.2.4.2 Compare Mode
The compare mode is selected when CAP = 0. The compare mode is used to generate PWM output
signals or interrupts at specific time intervals. When TAxR counts to the value in a TAxCCRn, where n
represents the specific capture/compare register.
• Interrupt flag CCIFG is set.
• Internal signal EQUn = 1.
• EQUn affects the output according to the output mode.
• The input signal CCI is latched into SCCI.
NOTE:

Updating TAxCCRn registers
In Compare mode, the timer should be stopped by writing the MC bits to zero (MC = 0)
before writing new data to TAxCCRn. Updating TAxCCRn while the timer is running could
result in unexpected behaviors.

12.2.5 Output Unit
Each capture/compare block contains an output unit. The output unit is used to generate output signals,
such as PWM signals. Each output unit has eight operating modes that generate signals based on the
EQU0 and EQUn signals.
12.2.5.1 Output Modes
The output modes are defined by the OUTMOD bits and are described in Table 12-2. The OUTn signal is
changed with the rising edge of the timer clock for all modes except mode 0. Output modes 2, 3, 6, and 7
are not useful for output unit 0 because EQUn = EQU0.
Table 12-2. Output Modes

346

OUTMOD

Mode

000

Output

The output signal OUTn is defined by the OUT bit. The OUTn signal updates immediately
when OUT is updated.

001

Set

The output is set when the timer counts to the TAxCCRn value. It remains set until a reset
of the timer, or until another output mode is selected and affects the output.

010

Toggle/Reset

The output is toggled when the timer counts to the TAxCCRn value. It is reset when the
timer counts to the TAxCCR0 value.

011

Set/Reset

The output is set when the timer counts to the TAxCCRn value. It is reset when the timer
counts to the TAxCCR0 value.

100

Toggle

The output is toggled when the timer counts to the TAxCCRn value. The output period is
double the timer period.

101

Reset

The output is reset when the timer counts to the TAxCCRn value. It remains reset until
another output mode is selected and affects the output.

110

Toggle/Set

The output is toggled when the timer counts to the TAxCCRn value. It is set when the timer
counts to the TAxCCR0 value.

111

Reset/Set

The output is reset when the timer counts to the TAxCCRn value. It is set when the timer
counts to the TAxCCR0 value.

Timer_A

Description

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

12.2.5.1.1 Output Example—Timer in Up Mode
The OUTn signal is changed when the timer counts up to the TAxCCRn value and rolls from TAxCCR0 to
zero, depending on the output mode. Figure 12-12 shows an example using TAxCCR0 and TAxCCR1.
0FFFFh
TAxCCR0
TAxCCR1

0h
Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set
EQU0
TAIFG

EQU1

EQU0
TAIFG

EQU1

EQU0
TAIFG

Interrupt Events

Figure 12-12. Output Example – Timer in Up Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

347

Timer_A Operation

www.ti.com

12.2.5.1.2 Output Example – Timer in Continuous Mode
The OUTn signal is changed when the timer reaches the TAxCCRn and TAxCCR0 values, depending on
the output mode. An example is shown in Figure 12-13 using TAxCCR0 and TAxCCR1.
0FFFFh
TAxCCR0
TAxCCR1
0h
Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set
TAIFG

EQU1

EQU0 TAIFG

EQU1

EQU0

Interrupt Events

Figure 12-13. Output Example – Timer in Continuous Mode

348

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

12.2.5.1.3 Output Example – Timer in Up/Down Mode
The OUTn signal changes when the timer equals TAxCCRn in either count direction and when the timer
equals TAxCCR0, depending on the output mode. Figure 12-14 shows an example using TAxCCR0 and
TAxCCR2.
0FFFFh
TAxCCR0
TAxCCR2

0h
Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TAIFG

EQU2
EQU2
EQU2
EQU2
EQU0
EQU0
TAIFG

Interrupt Events

Figure 12-14. Output Example – Timer in Up/Down Mode

NOTE:

Switching between output modes
TI recommends stopping the timer (MC = 0) before changing the OUTMOD bits. However, if
it is necessary to change OUTMOD bits while the timer is running, one of the OUTMOD bits
should remain set during the transition, unless switching to mode 0. Otherwise, output
glitching can occur, because a NOR gate decodes output mode 0. A safe method for
switching between output modes is to use output mode 7 as a transition state:
BIS
BIC

#OUTMOD_7,&TA0CCTL1
#OUTMOD,&TA0CCTL1

; Set output mode=7
; Clear unwanted bits

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

349

Timer_A Operation

www.ti.com

12.2.6 Timer_A Interrupts
Two interrupt vectors are associated with the 16-bit Timer_A module:
• TAxCCR0 interrupt vector for TAxCCR0 CCIFG
• TAxIV interrupt vector for all other CCIFG flags and TAIFG
In capture mode, any CCIFG flag is set when a timer value is captured in the associated TAxCCRn
register. In compare mode, any CCIFG flag is set if TAxR counts to the associated TAxCCRn value.
Software may also set or clear any CCIFG flag. All CCIFG flags request an interrupt when their
corresponding CCIE bit and the GIE bit are set.
12.2.6.1 TAxCCR0 Interrupt
The TAxCCR0 CCIFG flag has the highest Timer_A interrupt priority and has a dedicated interrupt vector
as shown in Figure 12-15. The TAxCCR0 CCIFG flag is automatically reset when the TAxCCR0 interrupt
request is serviced.
Capture

EQU0
CAP

D
Timer Clock

Set

CCIE
Q

IRQ, Interrupt Service Requested

Reset
IRACC, Interrupt Request Accepted
POR

Figure 12-15. Capture/Compare TAxCCR0 Interrupt Flag

12.2.6.2 TAxIV, Interrupt Vector Generator
The TAxCCRy CCIFG flags and TAIFG flags are prioritized and combined to source a single interrupt
vector. The interrupt vector register TAxIV is used to determine which flag requested an interrupt.
The highest-priority enabled interrupt generates a number in the TAxIV register (see register description).
This number can be evaluated or added to the program counter to automatically enter the appropriate
software routine. Disabled Timer_A interrupts do not affect the TAxIV value.
Any access, read or write, of the TAxIV register automatically resets the highest-pending interrupt flag. If
another interrupt flag is set, another interrupt is immediately generated after servicing the initial interrupt.
For example, if the TAxCCR1 and TAxCCR2 CCIFG flags are set when the interrupt service routine
accesses the TAxIV register, TAxCCR1 CCIFG is reset automatically. After the RETI instruction of the
interrupt service routine is executed, the TAxCCR2 CCIFG flag generates another interrupt.

350

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Operation

www.ti.com

12.2.6.2.1 TAxIV Software Example
The following software example shows the recommended use of TAxIV and the handling overhead. The
TAxIV value is added to the PC to automatically jump to the appropriate routine. The example assumes a
single instantiation of the largest timer configuration available.
The numbers at the right margin show the necessary CPU cycles for each instruction. The software
overhead for different interrupt sources includes interrupt latency and return-from-interrupt cycles, but not
the task handling itself. The latencies are:
• Capture/compare block TA0CCR0: 11 cycles
• Capture/compare blocks TA0CCR1, TA0CCR2, TA0CCR3, TA0CCR4, TA0CCR5, TA0CCR6:
16 cycles
• Timer overflow TA0IFG: 14 cycles
; Interrupt handler for TA0CCR0 CCIFG.
CCIFG_0_HND
;
...
; Start of handler Interrupt latency
RETI

Cycles
6
5

; Interrupt handler for TA0IFG, TA0CCR1 through TA0CCR6 CCIFG.
TA0_HND

...
ADD
RETI
JMP
JMP
JMP
JMP
JMP
JMP

&TA0IV,PC
CCIFG_1_HND
CCIFG_2_HND
CCIFG_3_HND
CCIFG_4_HND
CCIFG_5_HND
CCIFG_6_HND

;
;
;
;
;
;
;
;
;

Interrupt latency
Add offset to Jump table
Vector 0: No interrupt
Vector 2: TA0CCR1
Vector 4: TA0CCR2
Vector 6: TA0CCR3
Vector 8: TA0CCR4
Vector 10: TA0CCR5
Vector 12: TA0CCR6

6
3
5
2
2
2
2
2
2

TA0IFG_HND
...
RETI

; Vector 14: TA0IFG Flag
; Task starts here

CCIFG_6_HND
...
RETI

; Vector 12: TA0CCR6
; Task starts here
; Back to main program

5

CCIFG_5_HND
...
RETI

; Vector 10: TA0CCR5
; Task starts here
; Back to main program

5

CCIFG_4_HND
...
RETI

; Vector 8: TA0CCR4
; Task starts here
; Back to main program

5

CCIFG_3_HND
...
RETI

; Vector 6: TA0CCR3
; Task starts here
; Back to main program

5

CCIFG_2_HND
...
RETI

; Vector 4: TA0CCR2
; Task starts here
; Back to main program

5

CCIFG_1_HND
...
RETI

; Vector 2: TA0CCR1
; Task starts here
; Back to main program

5

5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

351

Timer_A Operation
NOTE:

www.ti.com

Changing Timer Clock source
TI recommends stopping the timer before modifying its operation while it is running.
A delay of at least 1.5 timer clocks is required to resynchronize before restarting the timer if
the timer clock source is asynchronous to MCLK, because the timer state machine takes this
time to synchronize the clock source as the new configuration. (Assuming the timer uses a 1MHz clock, it is recommended to have a 1.5-µs delay before starting the timer.)

12.2.7

Updating Timer_A Configuration

Care must be taken when applying new configuration to TAxCTL, TAxCTLn, or TAxEX0. The control bits
listed are designed not to be dynamically updated while the timer is running, Changing the controls listed
below while the timer is running could result in unexpected behaviors. Note that the control bits that are
not listed below can be read or updated while the timer is running.
• TAxCTL register
– Clock source select (TASSEL)
– Input divider (ID)
– Mode control (MC) (Note: Switching to Stop mode can be performed at any time)
– Timer_A clear (TACLR)
• TAxCCTLn registers
– Capture mode (CM) (Note: Switching to no capture mode can be performed any time)
– Capture/compare input select (CCIS) (Note: Switching between GND an VCC can be performed at
any time)
– Synchronize capture source (SCS)
– Capture mode (CAP)
– Output mode (OUTMOD)
• TAxEX0 register
– Input divider expansion (TAIDEX)
Follow these steps to update Timer_A configuration:
1. Write zero to the mode control bits (MC = 0) (Note: Do not use TACLR bit to reset the mode control
bits).
2. If necessary, write 1 to the TACLR bit (TACLR = 1 ) to clear TAxR, clock divider state, and the counter
direction.
3. If necessary, update counter value to TAxR.
4. If updating the CM, CCIS, SCS bits or the TAxCCRn registers and the timer is in capture mode,
disable capture mode first by writing zero to the CAP bit (CAP = 0) or the CM bits (CM = 0).
5. Apply desired configuration to TAxCCRn, TAIDEX, and TAxCCTLn.
6. Apply desired configuration to TAxCTL including the MC bits.

352

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Registers

www.ti.com

12.3 Timer_A Registers
Timer_A registers are listed in Table 12-3 for the largest configuration available. The base address can be
found in the device-specific data sheet.
Table 12-3. Timer_A Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

TAxCTL

Timer_Ax Control

Read/write

Word

0000h

Section 12.3.1

02h

TAxCCTL0

Timer_Ax Capture/Compare Control 0

Read/write

Word

0000h

Section 12.3.3

04h

TAxCCTL1

Timer_Ax Capture/Compare Control 1

Read/write

Word

0000h

Section 12.3.3

06h

TAxCCTL2

Timer_Ax Capture/Compare Control 2

Read/write

Word

0000h

Section 12.3.3

08h

TAxCCTL3

Timer_Ax Capture/Compare Control 3

Read/write

Word

0000h

Section 12.3.3

0Ah

TAxCCTL4

Timer_Ax Capture/Compare Control 4

Read/write

Word

0000h

Section 12.3.3

0Ch

TAxCCTL5

Timer_Ax Capture/Compare Control 5

Read/write

Word

0000h

Section 12.3.3

0Eh

TAxCCTL6

Timer_Ax Capture/Compare Control 6

Read/write

Word

0000h

Section 12.3.3

10h

TAxR

Timer_Ax Counter

Read/write

Word

0000h

Section 12.3.2

12h

TAxCCR0

Timer_Ax Capture/Compare 0

Read/write

Word

0000h

Section 12.3.4

14h

TAxCCR1

Timer_Ax Capture/Compare 1

Read/write

Word

0000h

Section 12.3.4

16h

TAxCCR2

Timer_Ax Capture/Compare 2

Read/write

Word

0000h

Section 12.3.4

18h

TAxCCR3

Timer_Ax Capture/Compare 3

Read/write

Word

0000h

Section 12.3.4

1Ah

TAxCCR4

Timer_Ax Capture/Compare 4

Read/write

Word

0000h

Section 12.3.4

1Ch

TAxCCR5

Timer_Ax Capture/Compare 5

Read/write

Word

0000h

Section 12.3.4

1Eh

TAxCCR6

Timer_Ax Capture/Compare 6

Read/write

Word

0000h

Section 12.3.4

2Eh

TAxIV

Timer_Ax Interrupt Vector

Read only

Word

0000h

Section 12.3.5

20h

TAxEX0

Timer_Ax Expansion 0

Read/write

Word

0000h

Section 12.3.6

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

353

Timer_A Registers

www.ti.com

12.3.1 TAxCTL Register
Timer_Ax Control Register
Figure 12-16. TAxCTL Register
15

14

13

12

11

10

9

Reserved
rw-(0)
7

rw-(0)

rw-(0)

6

5

ID
rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

4

3
Reserved
rw-(0)

2
TACLR
w-(0)

1
TAIE
rw-(0)

0
TAIFG
rw-(0)

MC
rw-(0)

rw-(0)

8
TASSEL

rw-(0)

Table 12-4. TAxCTL Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

RW

0h

Reserved

9-8

TASSEL

RW

0h

Timer_A clock source select
00b = TAxCLK
01b = ACLK
10b = SMCLK
11b = INCLK

7-6

ID

RW

0h

Input divider. These bits along with the TAIDEX bits select the divider for the
input clock.
00b = /1
01b = /2
10b = /4
11b = /8

5-4

MC

RW

0h

Mode control. Setting MC = 0 when Timer_A is not in use conserves power.
00b = Stop mode: Timer is halted
01b = Up mode: Timer counts up to TAxCCR0
10b = Continuous mode: Timer counts up to 0FFFFh
11b = Up/Down mode: Timer counts up to TAxCCR0 then down to 0000h

3

Reserved

RW

0h

Reserved

2

TACLR

RW

0h

Timer_A clear. Setting this bit resets TAxR, the timer clock divider logic (the
divider setting remains unchanged), and the count direction. The TACLR bit is
automatically reset and always reads as zero.

1

TAIE

RW

0h

Timer_A interrupt enable. This bit enables the TAIFG interrupt request.
0b = Interrupt disabled
1b = Interrupt enabled

0

TAIFG

RW

0h

Timer_A interrupt flag
0b = No interrupt pending
1b = Interrupt pending

354

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Registers

www.ti.com

12.3.2 TAxR Register
Timer_Ax Counter Register
Figure 12-17. TAxR Register
15

14

13

12

11

10

9

8

rw-(0)

rw-(0)

rw-(0)

rw-(0)

3

2

1

0

rw-(0)

rw-(0)

rw-(0)

rw-(0)

TAxR
rw-(0)

rw-(0)

rw-(0)

rw-(0)

7

6

5

4
TAxR

rw-(0)

rw-(0)

rw-(0)

rw-(0)

Table 12-5. TAxR Register Description
Bit

Field

Type

Reset

Description

15-0

TAxR

RW

0h

Timer_A counter. The TAxR register is the count of Timer_A.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

355

Timer_A Registers

www.ti.com

12.3.3 TAxCCTLn Register
Timer_Ax Capture/Compare Control n Register
Figure 12-18. TAxCCTLn Register
15

14

13

12

rw-(0)

rw-(0)

rw-(0)

rw-(0)

11
SCS
rw-(0)

7

6
OUTMOD
rw-(0)

5

4
CCIE
rw-(0)

3
CCI
r

CM

rw-(0)

CCIS

rw-(0)

10
SCCI
r-(0)

9
Reserved
r-(0)

8
CAP
rw-(0)

2
OUT
rw-(0)

1
COV
rw-(0)

0
CCIFG
rw-(0)

Table 12-6. TAxCCTLn Register Description
Bit

Field

Type

Reset

Description

15-14

CM

RW

0h

Capture mode
00b = No capture
01b = Capture on rising edge
10b = Capture on falling edge
11b = Capture on both rising and falling edges

13-12

CCIS

RW

0h

Capture/compare input select. These bits select the TAxCCR0 input signal. See
the device-specific data sheet for specific signal connections.
00b = CCIxA
01b = CCIxB
10b = GND
11b = VCC

11

SCS

RW

0h

Synchronize capture source. This bit is used to synchronize the capture input
signal with the timer clock.
0b = Asynchronous capture
1b = Synchronous capture

10

SCCI

RW

0h

Synchronized capture/compare input. The selected CCI input signal is latched
with the EQUx signal and can be read from this bit.

9

Reserved

R

0h

Reserved. Reads as 0.

8

CAP

RW

0h

Capture mode
0b = Compare mode
1b = Capture mode

7-5

OUTMOD

RW

0h

Output mode. Modes 2, 3, 6, and 7 are not useful for TAxCCR0 because EQUx
= EQU0.
000b = OUT bit value
001b = Set
010b = Toggle/reset
011b = Set/reset
100b = Toggle
101b = Reset
110b = Toggle/set
111b = Reset/set

4

CCIE

RW

0h

Capture/compare interrupt enable. This bit enables the interrupt request of the
corresponding CCIFG flag.
0b = Interrupt disabled
1b = Interrupt enabled

3

CCI

R

0h

Capture/compare input. The selected input signal can be read by this bit.

2

OUT

RW

0h

Output. For OUTMOD = 0, this bit directly controls the state of the output.
0b = Output low
1b = Output high

356

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Registers

www.ti.com

Table 12-6. TAxCCTLn Register Description (continued)
Bit

Field

Type

Reset

Description

1

COV

RW

0h

Capture overflow. This bit indicates a capture overflow occurred. COV must be
reset with software.
0b = No capture overflow occurred
1b = Capture overflow occurred

0

CCIFG

RW

0h

Capture/compare interrupt flag
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

357

Timer_A Registers

www.ti.com

12.3.4 TAxCCRn Register
Timer_A Capture/Compare n Register
Figure 12-19. TAxCCRn Register
15

14

13

12

11

10

9

8

rw-(0)

rw-(0)

rw-(0)

rw-(0)

3

2

1

0

rw-(0)

rw-(0)

rw-(0)

rw-(0)

TAxCCRn
rw-(0)

rw-(0)

rw-(0)

rw-(0)

7

6

5

4
TAxCCRn

rw-(0)

rw-(0)

rw-(0)

rw-(0)

Table 12-7. TAxCCRn Register Description
Bit

Field

Type

Reset

Description

15-0

TAxCCRn

RW

0h

Compare mode: TAxCCRn holds the data for the comparison to the timer value
in the Timer_A Register, TAR.
Capture mode: The Timer_A register, TAxR, is copied into the TAxCCRn register
when a capture is performed.

12.3.5 TAxIV Register
Timer_Ax Interrupt Vector Register
Figure 12-20. TAxIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-(0)

r-(0)

r-(0)

r0

TAIV
r0

r0

r0

r0

7

6

5

4
TAIV

r0

r0

r0

r0

Table 12-8. TAxIV Register Description
Bit

Field

Type

Reset

Description

15-0

TAIV

R

0h

Timer_A interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Capture/compare 1; Interrupt Flag: TAxCCR1 CCIFG;
Interrupt Priority: Highest
04h = Interrupt Source: Capture/compare 2; Interrupt Flag: TAxCCR2 CCIFG
06h = Interrupt Source: Capture/compare 3; Interrupt Flag: TAxCCR3 CCIFG
08h = Interrupt Source: Capture/compare 4; Interrupt Flag: TAxCCR4 CCIFG
0Ah = Interrupt Source: Capture/compare 5; Interrupt Flag: TAxCCR5 CCIFG
0Ch = Interrupt Source: Capture/compare 6; Interrupt Flag: TAxCCR6 CCIFG
0Eh = Interrupt Source: Timer overflow; Interrupt Flag: TAxCTL TAIFG; Interrupt
Priority: Lowest

358

Timer_A

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A Registers

www.ti.com

12.3.6 TAxEX0 Register
Timer_Ax Expansion 0 Register
Figure 12-21. TAxEX0 Register
15

14

13

12

11

10

9

8

Reserved

(1)

r0

r0

r0

r0

r0

r0

r0

r0

7

6

4

3

2

r0

r0

r0

rw-(0)

1
TAIDEX (1)
rw-(0)

0

r0

5
Reserved
r0

rw-(0)

After programming TAIDEX bits and configuration of the timer, set TACLR bit to ensure proper reset of the timer divider logic.

Table 12-9. TAxEX0 Register Description
Bit

Field

Type

Reset

Description

15-3

Reserved

R

0h

Reserved. Reads as 0.

2-0

TAIDEX

RW

0h

Input divider expansion. These bits along with the ID bits select the divider for
the input clock.
000b = Divide by 1
001b = Divide by 2
010b = Divide by 3
011b = Divide by 4
100b = Divide by 5
101b = Divide by 6
110b = Divide by 7
111b = Divide by 8

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Timer_A

359

Chapter 13
SLAU445D – October 2014 – Revised December 2015

Real-Time Clock (RTC) Counter
The Real-Time Clock (RTC) counter is a 16-bit counter that is functional in active mode (AM) and several
low-power modes (LPMs). RTC counter accepts multiple clock sources, which are selected by control
registers settings, to generate timing from less than 1 µs up to many hours. This chapter describes the
operation and use of the RTC counter module.
Topic

13.1
13.2
13.3

360

...........................................................................................................................

Page

RTC Counter Introduction .................................................................................. 361
RTC Counter Operation ..................................................................................... 362
RTC Counter Registers ..................................................................................... 364

Real-Time Clock (RTC) Counter

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

RTC Counter Introduction

www.ti.com

13.1 RTC Counter Introduction
The RTC counter is a 16-bit counter that functions in AM and all LPMs except LPM4 and LPM4.5. This
module can accept any one of three clock sources:
1. Device specific: SMCLK (maximum operating frequency depends on device configuration) or ACLK
(approximately 32 kHz)
2. XT1CLK (approximately 32 kHz)
3. VLOCLK (approximately 10 kHz)
In LPM3.5, RTC counter accepts only XT1CLK or VLOCLK as its clock source to periodically wake up the
device. The selected clock source can be predivided before driving the main 16-bit counter. The 16-bit
counter supports continuous tick by a 16-bit modulo register that is user accessible and a 16-bit shadow
register that is not user accessible. The RTC counter can generate an interrupt when the counter value
overflows at the preset shadow register value. RTC counter features include:
• 16-bit modulo counter architecture
– 16-bit basic counter
– 16-bit modulo register that is user accessible for read and write
– 16-bit shadow register that is not user accessible to support continued operation when the modulo
value is updated
– 16-bit compare logic to detect counter overflow at the boundary of the shadow register value
• Three possible clock sources that are selected by setting the RTCSS bits: XT1CLK, VLOCLK, or
device specific (SMCLK or ACLK)
– SMCLK is functional in AM and LPM0 only
– ACLK is functional in AM to LPM3.
– XT1CLK and VLOCLK are functional in AM and LPMs, excluding LPM4 and LPM4.5
• Configurable predivider for the source clock input is set by the RTCPS bits
– Passthrough: ÷1; the input clock source directly drives the 16-bit counter
– Predivider: ÷10, ÷100, ÷1000, ÷16, ÷64, ÷256, or ÷1024; the input clock source is divided by the
selected value before it drives the 16-bit counter
• A hardware interrupt is triggered (if enabled by the RTCIE bit) when the counter value reaches the
shadow register value.
• An overflow event can be a trigger in hardware for other modules. See the device-specific data sheet
for details on which modules support this trigger.
• Software can reset the counter by setting the RTCSR bit.
Figure 13-1 shows the block diagram of the RTC counter.
RTCIE

RTCCNT

Reserved
Device specific
XT1CLK
VLOCLK

00
01
10
11

reset

Pre-Divider

16-bit Counter
Interrupt
Request
Compare Logics

RTCSS

overflow

S

RTCPS

Q

R
reload

16-bit Shadow Register
Overflow Event
to Other Modules
16-bit Modulo Register

RTCMOD

RTCSR

RTCIV

RTCIF

Figure 13-1. RTC Counter Block Diagram

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Real-Time Clock (RTC) Counter

361

RTC Counter Operation

www.ti.com

13.2 RTC Counter Operation
The RTC counter module is configured with user software. The setup and operation of RTC counter is
described in the following sections.

13.2.1 16-Bit Timer Counter
The 16-bit timer counter register, RTCCNT, increments with each rising edge of the source clock signal.
RTCCNT is read only with software. When the counter value reaches the value of the shadow register, the
RTC counter generates an overflow signal, the counter value resets to zero, and the counter continues to
tick without interruption. As long as the counter clock source that is specified by the RTCSS bit is active,
the counter is operational.
RTCCNT is cleared by the overflow event, or it can be reset by software writing logic 1 to the RTCSR bit
in the RTCCTL register. If the counter is reset by software, the shadow register is updated by the value in
the modulo register at the next cycle of the divided clock, but no overflow event or interrupt is generated.
The maximum input frequency to the counter during LPM3.5 is 40 kHz. Therefore, the predivider must be
configured so that the divided clock frequency does not exceed 40 kHz.

13.2.2 Clock Source Select and Divider
In AM and LPM0, the RTC counter clock can be sourced from device-specific (SMCLK or ACLK),
XT1CLK, or VLOCLK. In LPM3, ACLK, XT1CLK, or VLOCLK can be selected. In LPM3.5, only XT1CLK or
VLOCLK can be selected. The clock source is specified by the RTCSS bits in the RTCCTL register. After
reset, RTCSS defaults to 00b (disabled), which means that no clock source is selected.
The selected clock source can be predivided before it is used by the counter. If the passthrough mode
(÷1) is selected, the predivider is bypassed and the selected clock source directly sources the counter.
The predivider options of ÷16, ÷64, ÷256, and ÷1024 allow simple division of clock source frequencies that
are powers of 2, such as from 32768-Hz crystals. The predivider options of ÷10, ÷100, and ÷1000 allow
simple division of clock source frequencies that are multiples of 10, such as from 4-MHz or 8-MHz clock
inputs.
NOTE: Selected Clock Source in LPM3.5
In LPM3.5, the RTC counter is very low power, and the divided clock source that drives the
counter can have a maximum frequency of 40 kHz.

13.2.3 Modulo Register (RTCMOD) and Shadow Register
The modulo register (RTCMOD) is a 16-bit register that is set by user software. The value in RTCMOD is
latched and does not take effect until it is loaded into the shadow register. The shadow register is also a
16-bit register, and it stores the modulo value that the RTC counter logic compares with the counter value.
The shadow register acts as a buffer to the RTCMOD register, so that software can set a new modulo
value without interrupting the counter. The RTCMOD register is read and write accessible by the user. The
shadow register is not accessible the user.
The value in RTCMOD is loaded to the shadow register under two conditions:
1. When the counter reaches the value in the shadow register, which also triggers an overflow signal and
clears the counter value.
2. When a software reset is triggered by software writing logic 1 to the RTCSR bit in the RTCCTL
register.
Because the shadow register always updates its value from RTCMOD, software must set RTCMOD
before the hardware overflow occurs. Using the software reset lets software immediately set the target
modulo value into shadow register without waiting for the next overflow. If the value in RTCMOD is not
updated when the hardware overflow occurs, the shadow register fetches the previous modulo value
stored in RTCMOD. If RTCMOD is changed multiple times before the overflow, only the last value is
loaded to the shadow register.
RTC counter always generates an overflow when the RTCMOD is set to either 0x0000 or 0x0001.
362

Real-Time Clock (RTC) Counter

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

RTC Counter Operation

www.ti.com

Care should be taken when setting RTCMOD so that the overflow events do not happen too quickly to be
serviced. When the selected RTC counter source frequency is close to the CPU clock frequency, the
modulo value must be long enough that the CPU is able to respond to the RTC counter interrupt service
routine (ISR) in time before the next RTC counter interrupt occurs. In addition, frequent writes to the
RTCSR bit (software reset) could lead to an overflow event being missed, as the count is reset each time,
and the RTCMOD setting overwrites the current shadow register setting.
Figure 13-2 shows a hardware overflow event loading the new value (0x2000) from RTCMOD into the
shadow register, replacing the previous value (0x4000).

Divided Clock

RTCCNTR

Shadow Register

0x3FFE

0x3FFF

0x4000

0x0000

0x4000

0x0001

0x0002

0x0003

0x2000
Shadow Register is updated by Modulo Register

RTCMODR

0x2000

Hardware Overflow

Figure 13-2. Shadow Register Example

13.2.4 RTC Counter Interrupt and External Event/Trigger
There is an interrupt vector (RTCIV) associated with the 16-bit RTC counter module interrupt flag
(RTCIFG).
When an overflow occurs, the RTCIFG bit in the RTCCTL register is set until it is cleared by a read of the
RTCIV register. At the same time, an interrupt is submitted to the CPU for post-processing, if the RTCIE
bit in the RTCCTL register is set. Reading RTCIV register clears the interrupt flag.
TI recommends clearing the RTCIFG bit by reading the RTCIV register before enabling the RTC counter
interrupt. Otherwise, an interrupt might be generated if the RTCIFG was already set by a previous
overflow.
In addition to the interrupt, the hardware overflow also submits an external trigger to other on-chip
modules as a synchronous signal. Refer to the device-specific data sheet for more information on module
triggers that are available on particular devices.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Real-Time Clock (RTC) Counter

363

RTC Counter Registers

www.ti.com

13.3 RTC Counter Registers
Table 13-1 lists the RTC counter registers and the address offset for each register. Refer to the devicespecific data sheet for the base address of the module.
Table 13-1. RTC Counter Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

RTCCTL

Real-Time Clock Control

Read/write

Word

0000h

Section 13.3.1

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

0000h

Read/write

Byte

00h

Read/write

Byte

00h

Read/write

Word

BEEFh

Read/write

Byte

EFh

Read/write

Byte

BEh

Read

Word

0000h

00h

RTCCTL_L

01h

RTCCTL_H

04h
04h

RTCIV_L

05h

RTCIV_H

08h

RTCMOD

08h

RTCMOD_L

09h

RTCMOD_H

0Ch

364

RTCIV

RTCCNT

Real-Time Clock Interrupt Vector

Real-Timer Clock Modulo

Real-Time Clock Counter

0Ch

RTCCNT_L

Read

Byte

00h

0Dh

RTCCNT_H

Read

Byte

00h

Real-Time Clock (RTC) Counter

Section 13.3.2

Section 13.3.3

Section 13.3.4

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

RTC Counter Registers

www.ti.com

13.3.1 RTCCTL Register
RTC Counter Control Register
Figure 13-3. RTCCTL Register
15

14

13

12

Reserved

RTCSS

r0

r0

rw-{0}

rw-{0}

7
Reserved
r0

6
RTCSR
w-{0}

5

4

11
Reserved
r0

10
rw-{0}

3

2

r0

r0

Reserved
r0

r0

9
RTCPS
rw-{0}

8
rw-{0}

1
RTCIE
rw-{0}

0
RTCIFG
r-{0}

Table 13-2. RTCCTL Register Description
Bit

Field

Type

Reset

Description

15-14

Reserved

R

0h

Reserved

13-12

RTCSS

RW

0h

Real-time clock source select
00b = Reserved
01b = Device specific
10b = XT1CLK
11b = VLOCLK

11

Reserved

R

0h

Reserved

10-8

RTCPS

RW

0h

Real-time clock predivider select
000b = /1
001b = /10
010b = /100
011b = /1000
100b = /16
101b = /64
110b = /256
111b = /1024

7

Reserved

R

0h

Reserved

6

RTCSR

W

0h

Real-time software reset. This is a write-only bit and is always read with logic 0.
0b = Write 0 has no effect
1b = Write 1 to this bit clears the counter value and reloads the shadow register
value from the modulo register at the next tick of the selected source clock. No
overflow event or interrupt is generated.

5-2

Reserved

R

0h

Reserved

1

RTCIE

RW

0h

Real-time interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

0

RTCIFG

R

0h

Real-time interrupt flag. This bit reports the status of a pending interrupt. This
read only bit can be cleared by reading RTCIV register.
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Real-Time Clock (RTC) Counter

365

RTC Counter Registers

www.ti.com

13.3.2 RTCIV Register
RTC Counter Interrupt Vector Register
Figure 13-4. RTCIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r0

r0

r-{0}

r0

RTCIV
r0

r0

r0

r0

7

6

5

4
RTCIV

r0

r0

r0

r0

Table 13-3. RTCIV Register Description
Bit

Field

Type

Reset

Description

15-0

RTCIV

R

0h

Low-power-counter interrupt vector.
00h = No interrupt pending
02h = Interrupt Source: RTC Counter Overflow; Interrupt Flag: RTCIFG

366

Real-Time Clock (RTC) Counter

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

RTC Counter Registers

www.ti.com

13.3.3 RTCMOD Register
RTC Counter Modulo Register
Figure 13-5. RTCMOD Register
15

14

13

12

11

10

9

8

rw-{1}

rw-{1}

rw-{1}

rw-{0}

3

2

1

0

rw-{1}

rw-{1}

rw-{1}

rw-{1}

RTCMOD
rw-{1}

rw-{0}

rw-{1}

rw-{1}

7

6

5

4
RTCMOD

rw-{1}

rw-{1}

rw-{1}

rw-{0}

Table 13-4. RTCMOD Register Description
Bit

Field

Type

Reset

Description

15-0

RTCMOD

RW

BEEFh

RTC modulo value

13.3.4 RTCCNT Register
RTC Counter Register
Figure 13-6. RTCCNT Register
15

14

13

12

11

10

9

8

r-{0}

r-{0}

r-{0}

r-{0}

3

2

1

0

r-{0}

r-{0}

r-{0}

r-{0}

RTCCNT
r-{0}

r-{0}

r-{0}

r-{0}

7

6

5

4
RTCCNT

r-{0}

r-{0}

r-{0}

r-{0}

Table 13-5. RTCCNT Register Description
Bit

Field

Type

Reset

Description

15-0

RTCCNT

R

0h

RTC counter. This is a read-only register and reflects the current counter value.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Real-Time Clock (RTC) Counter

367

Chapter 14
SLAU445D – October 2014 – Revised December 2015

32-Bit Hardware Multiplier (MPY32)
This chapter describes the 32-bit hardware multiplier (MPY32). The MPY32 module is implemented in all
devices.
Topic

14.1
14.2
14.3

368

...........................................................................................................................

Page

32-Bit Hardware Multiplier (MPY32) Introduction .................................................. 369
MPY32 Operation .............................................................................................. 371
MPY32 Registers .............................................................................................. 383

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32) Introduction

www.ti.com

14.1 32-Bit Hardware Multiplier (MPY32) Introduction
The MPY32 is a peripheral and is not part of the CPU. This means its activities do not interfere with the
CPU activities. The multiplier registers are peripheral registers that are loaded and read with CPU
instructions.
The MPY32 supports:
• Unsigned multiply
• Signed multiply
• Unsigned multiply accumulate
• Signed multiply accumulate
• 8-bit, 16-bit, 24-bit, and 32-bit operands
• Saturation
• Fractional numbers
• 8-bit and 16-bit operation compatible with 16-bit hardware multiplier
• 8-bit and 24-bit multiplications without requiring a "sign extend" instruction
The MPY32 block diagram is shown in Figure 14-1.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

369

32-Bit Hardware Multiplier (MPY32) Introduction

www.ti.com

Accessible
Register

MPY
MPYS
MAC
MACS

31

MPY32H

MPY32L

MPYS32H

MPYS32L

MAC32H

MAC32L

MACS32H

MACS32L
16

OP1 (high word)

15

OP2
OP2H
0

OP1 (low word)

31

OP2L
16

OP2 (high word)

16-bit Multiplexer

15

0

OP2 (low word)

16-bit Multiplexer

16×16 Multiplier
OP1_32
OP2_32
MPYMx
MPYSAT
MPYFRAC
MPYC

2

Control
Logic

32-bit Adder

32-bit Demultiplexer

SUMEXT

RES3

RES2

RES1/RESHI

RES0/RESLO

32-bit Multiplexer

Figure 14-1. MPY32 Block Diagram

370

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

14.2 MPY32 Operation
The MPY32 supports 8-bit, 16-bit, 24-bit, and 32-bit operands with unsigned multiply, signed multiply,
unsigned multiply-accumulate, and signed multiply-accumulate operations. The size of the operands are
defined by the address the operand is written to and if it is written as word or byte. The type of operation is
selected by the address to which the first operand is written.
The hardware multiplier has two 32-bit operand registers – operand one (OP1) and operand two (OP2),
and a 64-bit result register accessible through registers RES0 to RES3. For compatibility with the 16×16
hardware multiplier, the result of a 8-bit or 16-bit operation is also accessible through RESLO, RESHI, and
SUMEXT. RESLO stores the low word of the 16×16-bit result, RESHI stores the high word of the result,
and SUMEXT stores information about the result.
The result of a 8-bit or 16-bit operation is ready in three MCLK cycles and can be read with the next
instruction after writing to OP2, except when using an indirect addressing mode to access the result.
When using indirect addressing for the result, a NOP is required before the result is ready.
The result of a 24-bit or 32-bit operation can be read with successive instructions after writing OP2 or
OP2H starting with RES0, except when using an indirect addressing mode to access the result. When
using indirect addressing for the result, a NOP is required before the result is ready.
Table 14-1 summarizes when each word of the 64-bit result is available for the various combinations of
operand sizes. With a 32-bit-wide second operand, OP2L and OP2H must be written. Depending on when
the two 16-bit parts are written, the result availability may vary; thus, the table shows two entries, one for
OP2L written and one for OP2H written. The worst case defines the actual result availability.
Table 14-1. Result Availability (MPYFRAC = 0, MPYSAT = 0)
Result Ready in MCLK Cycles

Operation
(OP1 × OP2)

RES0

RES1

RES2

RES3

MPYC Bit

8/16 × 8/16

3

3

4

4

3

OP2 written

24/32 × 8/16

3

5

6

7

7

OP2 written

8/16 × 24/32
24/32 × 24/32

After

3

5

6

7

7

OP2L written

N/A

3

4

4

4

OP2H written

3

8

10

11

11

OP2L written

N/A

3

5

6

6

OP2H written

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

371

MPY32 Operation

www.ti.com

14.2.1 Operand Registers
Operand one (OP1) has 12 registers (see Table 14-2) that are used to load data into the multiplier and
also to select the multiply mode. Writing the low word of the first operand to a given address selects the
type of multiply operation to be performed but does not start any operation. When writing a second word
to a high-word register with suffix 32H, the multiplier assumes a 32-bit-wide OP1, otherwise, 16 bits are
assumed. The last address written prior to writing OP2 defines the width of the first operand. For example,
if MPY32L is written first followed by MPY32H, all 32 bits are used and the data width of OP1 is set to 32
bits. If MPY32H is written first followed by MPY32L, the multiplication ignores MPY32H and assumes a
16-bit-wide OP1 using the data written into MPY32L.
Repeated multiply operations may be performed without reloading OP1 if the OP1 value is used for
successive operations. It is not necessary to rewrite the OP1 value to perform the operations.
Table 14-2. OP1 Registers
OP1 Register

Operation

MPY

Unsigned multiply – operand bits 0 up to 15

MPYS

Signed multiply – operand bits 0 up to 15

MAC

Unsigned multiply accumulate –operand bits 0 up to 15

MACS

Signed multiply accumulate – operand bits 0 up to 15

MPY32L

Unsigned multiply – operand bits 0 up to 15

MPY32H

Unsigned multiply – operand bits 16 up to 31

MPYS32L

Signed multiply – operand bits 0 up to 15

MPYS32H

Signed multiply – operand bits 16 up to 31

MAC32L

Unsigned multiply accumulate – operand bits 0 up to 15

MAC32H

Unsigned multiply accumulate – operand bits 16 up to 31

MACS32L

Signed multiply accumulate – operand bits 0 up to 15

MACS32H

Signed multiply accumulate – operand bits 16 up to 31

Writing the second operand to the OP2 initiates the multiply operation. Writing OP2 starts the selected
operation with a 16-bit-wide second operand together with the values stored in OP1. Writing OP2L starts
the selected operation with a 32-bit-wide second operand and the multiplier expects a the high word to be
written to OP2H. Writing to OP2H without a preceding write to OP2L is ignored.
Table 14-3. OP2 Registers
OP2 Register

Operation

OP2

Start multiplication with 16-bit-wide OP2 – operand bits 0 up to 15

OP2L

Start multiplication with 32-bit-wide OP2 – operand bits 0 up to 15

OP2H

Continue multiplication with 32-bit-wide OP2 – operand bits 16 up to 31

For 8-bit or 24-bit operands, the operand registers can be accessed with byte instructions. Accessing the
multiplier with a byte instruction during a signed operation automatically causes a sign extension of the
byte within the multiplier module. For 24-bit operands, only the high word should be written as byte. If the
24-bit operands are sign-extended as defined by the register, that is used to write the low word to,
because this register defines if the operation is unsigned or signed.
The high-word of a 32-bit operand remains unchanged when changing the size of the operand to 16 bit,
either by modifying the operand size bits or by writing to the respective operand register. During the
execution of the 16-bit operation, the content of the high word is ignored.

372

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

NOTE:

Changing of first or second operand during multiplication
By default, changing OP1 or OP2 while the selected multiply operation is being calculated
renders any results invalid that are not ready at the time the new operands are changed.
Writing OP2 or OP2L aborts any ongoing calculation and starts a new operation. Results that
are not ready at that time are also invalid for following MAC or MACS operations.
To avoid this behavior, the MPYDLYWRTEN bit can be set to 1. Then, all writes to any
MPY32 registers are delayed with MPYDLY32 = 0 until the 64-bit result is ready or with
MPYDLY32 = 1 until the 32-bit result is ready. For MAC and MACS operations, the complete
64-bit result should always be ready.
See Table 14-1 for how many CPU cycles are needed until a certain result register is ready
and valid for each of the different modes.

14.2.2 Result Registers
The multiplication result is always 64 bits wide. It is accessible through registers RES0 to RES3. Used
with a signed operation, MPYS or MACS, the results are appropriately sign extended. If the result
registers are loaded with initial values before a MACS operation, the user software must take care that the
written value is properly sign extended to 64 bits.
NOTE:

Changing of result registers during multiplication
The result registers must not be modified by the user software after writing the second
operand into OP2 or OP2L until the initiated operation is completed.

In addition to RES0 to RES3, for compatibility with the 16×16 hardware multiplier, the 32-bit result of a 8bit or 16-bit operation is accessible through RESLO, RESHI, and SUMEXT. In this case, the result low
register RESLO holds the lower 16 bits of the calculation result and the result high register RESHI holds
the upper 16 bits. RES0 and RES1 are identical to RESLO and RESHI, respectively, in usage and access
of calculated results.
The sum extension register SUMEXT contents depend on the multiply operation and are listed in
Table 14-4. If all operands are 16 bits wide or less, the 32-bit result is used to determine sign and carry. If
one of the operands is larger than 16 bits, the 64-bit result is used.
The MPYC bit reflects the multiplier's carry as listed in Table 14-4 and, thus, can be used as 33rd or 65th
bit of the result, if fractional or saturation mode is not selected. With MAC or MACS operations, the MPYC
bit reflects the carry of the 32-bit or 64-bit accumulation and is not taken into account for successive MAC
and MACS operations as the 33rd or 65th bit.
Table 14-4. SUMEXT and MPYC Contents
Mode

SUMEXT

MPYC

MPY

SUMEXT is always 0000h.

MPYC is always 0.

MPYS

SUMEXT contains the extended sign of the result.

MPYC contains the sign of the result.

00000h

Result was positive or zero

0

Result was positive or zero

0FFFFh

Result was negative

1

Result was negative

MAC

MACS

SUMEXT contains the carry of the result.

MPYC contains the carry of the result.

0000h

No carry for result

0

No carry for result

0001h

Result has a carry

1

Result has a carry

SUMEXT contains the extended sign of the result.

MPYC contains the carry of the result.

00000h

Result was positive or zero

0

No carry for result

0FFFFh

Result was negative

1

Result has a carry

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

373

MPY32 Operation

www.ti.com

14.2.2.1 MACS Underflow and Overflow
The multiplier does not automatically detect underflow or overflow in MACS mode. For example, working
with 16-bit input data and 32-bit results (that is, using only RESLO and RESHI), the available range for
positive numbers is 0 to 07FFF FFFFh and for negative numbers is 0FFFF FFFFh to 08000 0000h. An
underflow occurs when the sum of two negative numbers yields a result that is in the range for a positive
number. An overflow occurs when the sum of two positive numbers yields a result that is in the range for a
negative number.
The SUMEXT register contains the sign of the result in both cases described above, 0FFFFh for a 32-bit
overflow and 0000h for a 32-bit underflow. The MPYC bit in MPY32CTL0 can be used to detect the
overflow condition. If the carry is different from the sign reflected by the SUMEXT register, an overflow or
underflow occurred. User software must handle these conditions appropriately.

14.2.3 Software Examples
Examples for all multiplier modes follow. All 8×8 modes use the absolute address for the registers,
because the assembler does not allow .B access to word registers when using the labels from the
standard definitions file.
There is no sign extension necessary in software. Accessing the multiplier with a byte instruction during a
signed operation automatically causes a sign extension of the byte within the multiplier module.
; 32x32 Unsigned Multiply
MOV
#01234h,&MPY32L
MOV
#01234h,&MPY32H
MOV
#05678h,&OP2L
MOV
#05678h,&OP2H
;
...

;
;
;
;
;

; 16x16 Unsigned Multiply
MOV
#01234h,&MPY
MOV
#05678h,&OP2
;
...

; Load 1st operand
; Load 2nd operand
; Process results

Load low word of
Load high word of
Load low word of
Load high word of
Process results

1st
1st
2nd
2nd

operand
operand
operand
operand

1st
1st
2nd
2nd

operand
operand
operand
operand

; 8x8 Unsigned Multiply. Absolute addressing.
MOV.B
#012h,&MPY_B
; Load 1st operand
MOV.B
#034h,&OP2_B
; Load 2nd operand
;
...
; Process results
; 32x32 Signed Multiply
MOV
#01234h,&MPYS32L
MOV
#01234h,&MPYS32H
MOV
#05678h,&OP2L
MOV
#05678h,&OP2H
;
...

;
;
;
;
;

; 16x16 Signed Multiply
MOV
#01234h,&MPYS
MOV
#05678h,&OP2
;
...

; Load 1st operand
; Load 2nd operand
; Process results

; 8x8 Signed Multiply. Absolute
MOV.B
#012h,&MPYS_B
;
MOV.B
#034h,&OP2_B
;
;
...
;

374

32-Bit Hardware Multiplier (MPY32)

Load low word of
Load high word of
Load low word of
Load high word of
Process results

addressing.
Load 1st operand
Load 2nd operand
Process results

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

14.2.4 Fractional Numbers
The MPY32 provides support for fixed-point signal processing. In fixed-point signal processing, fractional
numbers are numbers that have a fixed number of digits after (and sometimes also before) the radix point.
To classify different ranges of binary fixed-point numbers, a Q-format is used. Different Q-formats
represent different locations of the radix point. Figure 14-2 shows the format of a signed Q15 number
using 16 bits. Every bit after the radix point has a resolution of 1/2, and the most significant bit (MSB) is
used as the sign bit. The most negative number is 08000h and the maximum positive number is 07FFFh.
This gives a range from –1.0 to 0.999969482 ≈ 1.0 for the signed Q15 format with 16 bits.
15 bits
S

1
2

1
4

1
8

1
16

...

Fractional part
Radix point
Sign bit

Figure 14-2. Q15 Format Representation
The range can be increased by shifting the radix point to the right as shown in Figure 14-3. The signed
Q14 format with 16 bits gives a range from –2.0 to 1.999938965 ≈ 2.0.
14 bits

S

1

1
2

1
4

1
8

1
16

...

Figure 14-3. Q14 Format Representation
The benefit of using 16-bit signed Q15 or 32-bit signed Q31 numbers with multiplication is that the product
of two number in the range from –1.0 to 1.0 is always in that same range.
14.2.4.1 Fractional Number Mode
Multiplying two fractional numbers using the default multiplication mode with MPYFRAC = 0 and
MPYSAT = 0 gives a result with two sign bits. For example, if two 16-bit Q15 numbers are multiplied, a
32-bit result in Q30 format is obtained. To convert the result into Q15 format manually, the first 15 trailing
bits and the extended sign bit must be removed. However, when the fractional mode of the multiplier is
used, the redundant sign bit is automatically removed, yielding a result in Q31 format for the multiplication
of two 16-bit Q15 numbers. Reading the result register RES1 gives the result as 16-bit Q15 number. The
32-bit Q31 result of a multiplication of two 32-bit Q31 numbers is accessed by reading registers RES2 and
RES3.
The fractional mode is enabled with MPYFRAC = 1 in register MPY32CTL0. The actual content of the
result registers is not modified when MPYFRAC = 1. When the result is accessed using software, the
value is left shifted one bit, resulting in the final Q formatted result. This allows user software to switch
between reading both the shifted (fractional) and the unshifted result. The fractional mode should only be
enabled when required and disabled after use.
In fractional mode, the SUMEXT register contains the sign extended bits 32 and 33 of the shifted result for
16×16-bit operations and bits 64 and 65 for 32×32-bit operations – not only bits 32 or 64, respectively.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

375

MPY32 Operation

www.ti.com

The MPYC bit is not affected by the fractional mode. It always reads the carry of the nonfractional result.
; Example using
; Fractional 16x16 multiplication
BIS
#MPYFRAC,&MPY32CTL0
MOV
&FRACT1,&MPYS
MOV
&FRACT2,&OP2
MOV
&RES1,&PROD
BIC
#MPYFRAC,&MPY32CTL0

;
;
;
;
;

Turn
Load
Load
Save
Back

on fractional mode
1st operand as Q15
2nd operand as Q15
result as Q15
to normal mode

Table 14-5. Result Availability in Fractional Mode (MPYFRAC = 1, MPYSAT = 0)
Result Ready in MCLK Cycles

Operation
(OP1 × OP2)

RES0

RES1

RES2

RES3

MPYC Bit

8/16 × 8/16

3

3

4

4

3

24/32 × 8/16

3

5

6

7

7

OP2 written

8/16 × 24/32

3

5

6

7

7

OP2L written

N/A

3

4

4

4

OP2H written

3

8

10

11

11

OP2L written

N/A

3

5

6

6

OP2H written

24/32 × 24/32

After
OP2 written

14.2.4.2 Saturation Mode
The multiplier prevents overflow and underflow of signed operations in saturation mode. The saturation
mode is enabled with MPYSAT = 1 in register MPY32CTL0. If an overflow occurs, the result is set to the
most-positive value available. If an underflow occurs, the result is set to the most-negative value available.
This is useful to reduce mathematical artifacts in control systems on overflow and underflow conditions.
The saturation mode should only be enabled when required and disabled after use.
The actual content of the result registers is not modified when MPYSAT = 1. When the result is accessed
using software, the value is automatically adjusted to provide the most-positive or most-negative result
when an overflow or underflow has occurred. The adjusted result is also used for successive multiply-andaccumulate operations. This allows user software to switch between reading the saturated and the
nonsaturated result.
With 16×16 operations, the saturation mode only applies to the least significant 32 bits; that is, the result
registers RES0 and RES1. Using the saturation mode in MAC or MACS operations that mix 16×16
operations with 32×32, 16×32, or 32×16 operations leads to unpredictable results.
With 32×32, 16×32, and 32×16 operations, the saturated result can only be calculated when RES3 is
ready.
Enabling the saturation mode does not affect the content of the SUMEXT register nor the content of the
MPYC bit.
; Example using
; Fractional 16x16 multiply accumulate with Saturation
; Turn on fractional and saturation mode:
BIS
#MPYSAT+MPYFRAC,&MPY32CTL0
MOV
&A1,&MPYS
; Load A1 for 1st term
MOV
&K1,&OP2
; Load K1 to get A1*K1
MOV
&A2,&MACS
; Load A2 for 2nd term
MOV
&K2,&OP2
; Load K2 to get A2*K2
MOV
&RES1,&PROD
; Save A1*K1+A2*K2 as result
BIC
#MPYSAT+MPYFRAC,&MPY32CTL0
; turn back to normal

376

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

Table 14-6. Result Availability in Saturation Mode (MPYSAT = 1)
Result Ready in MCLK Cycles

Operation
(OP1 × OP2)

RES0

RES1

RES2

RES3

MPYC Bit

8/16 × 8/16

3

3

N/A

N/A

3

24/32 × 8/16

7

7

7

7

7

OP2 written

8/16 × 24/32

7

7

7

7

7

OP2L written

4

4

4

4

4

OP2H written

11

11

11

11

11

OP2L written

6

6

6

6

6

OP2H written

24/32 × 24/32

After
OP2 written

Figure 14-4 shows the flow for 32-bit saturation used for 16×16 bit multiplications and the flow for 64-bit
saturation used in all other cases. Primarily, the saturated results depends on the carry bit MPYC and the
MSB of the result. Secondly, if the fractional mode is enabled, it depends also on the two MSBs of the
unshifted result, that is, the result that is read with fractional mode disabled.
32-bit Saturation

MPYC=0 and
unshifted RES1,
bit15=1

64-bit Saturation

Yes

Overflow:
RES3 unchanged
RES2 unchanged
RES1 = 07FFFh
RES0 = 0FFFFh

Yes

Underflow:
RES3 unchanged
RES2 unchanged
RES1 = 08000h
RES0 = 00000h

MPYC=1 and
unshifted RES3,
bit15=0

Yes

Underflow:
RES3 = 08000h
RES2 = 00000h
RES1 = 00000h
RES0 = 00000h

No

No
MPYFRAC=1

MPYFRAC=1

Yes

Yes
Yes

Overflow:
RES3 unchanged
RES2 unchanged
RES1 = 07FFFh
RES0 = 0FFFFh

Unshifted RES3,
bit 15=0 and
bit 14=1

Yes

Overflow:
RES3 = 07FFFh
RES2 = 0FFFFh
RES1 = 0FFFFh
RES0 = 0FFFFh

No

No

Unshifted RES1,
bit 15=1 and
bit 14=0

Overflow:
RES3 = 07FFFh
RES2 = 0FFFFh
RES1 = 0FFFFh
RES0 = 0FFFFh

No

No

Unshifted RES1,
bit 15=0 and
bit 14=1

Yes

No

No

MPYC=1 and
unshifted RES1,
bit15=0

MPYC=0 and
unshifted RES3,
bit15=1

Yes

Underflow:
RES3 unchanged
RES2 unchanged
RES1 = 08000h
RES0 = 00000h

Unshifted RES3,
bit 15=1 and
bit 14=0

Yes

Underflow:
RES3 = 08000h
RES2 = 00000h
RES1 = 00000h
RES0 = 00000h

No

No

64-bit Saturation
completed

32-bit Saturation
completed

Figure 14-4. Saturation Flow Chart

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

377

MPY32 Operation

NOTE:

www.ti.com

Saturation in fractional mode
In case of multiplying –1.0 × –1.0 in fractional mode, the result of +1.0 is out of range, thus,
the saturated result gives the most positive result.
When using multiply-and-accumulate operations, the accumulated values are saturated as if
MPYFRAC = 0; only during read accesses to the result registers the values are saturated
taking the fractional mode into account. This provides additional dynamic range during the
calculation and only the end result is then saturated if needed.

The following example illustrates a special case showing the saturation function in fractional mode. It also
uses the 8-bit functionality of the MPY32 module.
; Turn on fractional and saturation mode,
; clear all other bits in MPY32CTL0:
MOV
#MPYSAT+MPYFRAC,&MPY32CTL0
;Pre-load result registers to demonstrate overflow
MOV
#0,&RES3
;
MOV
#0,&RES2
;
MOV
#07FFFh,&RES1
;
MOV
#0FA60h,&RES0
;
MOV.B
#050h,&MACS_B
; 8-bit signed MAC operation
MOV.B
#012h,&OP2_B
; Start 16x16 bit operation
MOV
&RES0,R6
; R6 = 0FFFFh
MOV
&RES1,R7
; R7 = 07FFFh

The result is saturated because before the result is converted into a fractional number, it shows an
overflow. The multiplication of the two positive numbers 00050h and 00012h gives 005A0h. 005A0h added
to 07FFF FA60h results in 8000 059Fh, without MPYC being set. Because the MSB of the unmodified
result RES1 is 1 and MPYC = 0, the result is saturated according Figure 14-4.
NOTE:

Validity of saturated result
The saturated result is valid only if the registers RES0 to RES3, the size of OP1 and OP2,
and MPYC are not modified.
If the saturation mode is used with a preloaded result, user software must ensure that MPYC
in the MPY32CTL0 register is loaded with the sign bit of the written result; otherwise, the
saturation mode erroneously saturates the result.

378

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

14.2.5 Putting It All Together
Figure 14-5 shows the complete multiplication flow, depending on the various selectable modes for the
MPY32 module.
New Multiplication
Started

Yes

No

No

16×16
?

Yes

Yes

No

MAC or MACS
?

MAC or MACS
?
Yes

Yes
Clear Result:
RES1 = 00000h
RES0 = 00000h

MPYSAT=1
?

non-fractional
32-bit Saturation

Perform 16×16
MPY or MPYS
Operation

MPYSAT=1
?
No

No

Perform 16×16
MAC or MACS
Operation

non-fractional
64-bit Saturation

Perform
MAC or MACS
Operation

Perform
MPY or MPYS
Operation

Yes

Yes
MPYFRAC=1
?

MPYFRAC=1
?
No

Shift 64bit result.
Calculate SUMEXTbased on
MPYC and bit15 of
unshifted RES1.

Shift 64bit result.
Calculate SUMEXTbased on
MPYC and bit15 of
unshifted RES3.

Yes

No

Yes

MPYSAT=1
?
No

Clear Result:
RES3 = 00000h
RES2 = 00000h
RES1 = 00000h
RES0 = 00000h

MPYSAT=1
?
32-bit Saturation

64-bit Saturation

No

Multiplication
completed

Figure 14-5. Multiplication Flow Chart

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

379

MPY32 Operation

www.ti.com

Given the separation in processing of 16-bit operations (32-bit results) and 32-bit operations (64-bit
results) by the module, it is important to understand the implications when using MAC or MACS operations
and mixing 16-bit operands or results with 32-bit operands or results. User software must address these
points during use when mixing these operations. The following code illustrates the issue.
; Mixing 32x24 multiplication with 16x16 MACS operation
MOV
#MPYSAT,&MPY32CTL0
; Saturation mode
MOV
#052C5h,&MPY32L
; Load low word of 1st operand
MOV
#06153h,&MPY32H
; Load high word of 1st operand
MOV
#001ABh,&OP2L
; Load low word of 2nd operand
MOV.B
#023h,&OP2H_B
; Load high word of 2nd operand
;... 5 NOPs required
MOV
&RES0,R6
; R6 = 00E97h
MOV
&RES1,R7
; R7 = 0A6EAh
MOV
&RES2,R8
; R8 = 04F06h
MOV
&RES3,R9
; R9 = 0000Dh
; Note that MPYC = 0!
MOV
#0CCC3h,&MACS
; Signed MAC operation
MOV
#0FFB6h,&OP2
; 16x16 bit operation
MOV
&RESLO,R6
; R6 = 0FFFFh
MOV
&RESHI,R7
; R7 = 07FFFh

The second operation gives a saturated result because the 32-bit value used for the 16×16-bit MACS
operation was already saturated when the operation was started; the carry bit MPYC was 0 from the
previous operation, but the MSB in result register RES1 is set. As one can see in the flow chart, the
content of the result registers are saturated for multiply-and-accumulate operations after starting a new
operation based on the previous results, but depending on the size of the result (32 bit or 64 bit) of the
newly initiated operation.
The saturation before the multiplication can cause issues if the MPYC bit is not properly set as the
following code shows.
;Pre-load result registers to demonstrate overflow
MOV
#0,&RES3
;
MOV
#0,&RES2
;
MOV
#0,&RES1
;
MOV
#0,&RES0
;
; Saturation mode and set MPYC:
MOV
#MPYSAT+MPYC,&MPY32CTL0
MOV.B
#082h,&MACS_B
; 8-bit signed MAC operation
MOV.B
#04Fh,&OP2_B
; Start 16x16 bit operation
MOV
&RES0,R6
; R6 = 00000h
MOV
&RES1,R7
; R7 = 08000h

Even though the result registers were loaded with all zeros, the final result is saturated. This is because
the MPYC bit was set, causing the result used for the multiply-and-accumulate to be saturated to
08000 0000h. Adding a negative number to it would again cause an underflow, thus, the final result is also
saturated to 08000 0000h.

380

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Operation

www.ti.com

14.2.6 Indirect Addressing of Result Registers
When using indirect or indirect autoincrement addressing mode to access the result registers and the
multiplier requires three cycles until result availability according to Table 14-1, at least one instruction is
needed between loading the second operand and accessing the result registers:
; Access multiplier 16x16 results with indirect addressing
MOV
#RES0,R5
; RES0 address in R5 for indirect
MOV
&OPER1,&MPY
; Load 1st operand
MOV
&OPER2,&OP2
; Load 2nd operand
NOP
; Need one cycle
MOV
@R5+,&xxx
; Move RES0
MOV
@R5,&xxx
; Move RES1

In case of a 32×16 multiplication, there is also one instruction required between reading the first result
register RES0 and the second result register RES1:
; Access
MOV
MOV
MOV
MOV
NOP
MOV
NOP
MOV
MOV

multiplier 32x16 results with indirect addressing
#RES0,R5
; RES0 address in R5 for indirect
&OPER1L,&MPY32L
; Load low word of 1st operand
&OPER1H,&MPY32H
; Load high word of 1st operand
&OPER2,&OP2
; Load 2nd operand (16 bits)
; Need one cycle
@R5+,&xxx
; Move RES0
; Need one additional cycle
@R5,&xxx
; Move RES1
; No additional cycles required!
@R5,&xxx
; Move RES2

14.2.7 Using Interrupts
If an interrupt occurs after writing OP, but before writing OP2, and the multiplier is used in servicing that
interrupt, the original multiplier mode selection is lost and the results are unpredictable. To avoid this,
disable interrupts before using the MPY32, do not use the MPY32 in interrupt service routines, or use the
save and restore functionality of the MPY32.
; Disable interrupts before using the hardware multiplier
DINT
; Disable interrupts
NOP
; Required for DINT
MOV
#xxh,&MPY
; Load 1st operand
MOV
#xxh,&OP2
; Load 2nd operand
EINT
; Interrupts may be enabled before
; processing results if result
; registers are stored and restored in
; interrupt service routines

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

381

MPY32 Operation

www.ti.com

14.2.7.1 Save and Restore
If the multiplier is used in interrupt service routines, its state can be saved and restored using the
MPY32CTL0 register. The following code example shows how the complete multiplier status can be saved
and restored to allow interruptible multiplications together with the usage of the multiplier in interrupt
service routines. Because the state of the MPYSAT and MPYFRAC bits are unknown, they should be
cleared before the registers are saved as shown in the code example.
; Interrupt service routine using multiplier
MPY_USING_ISR
PUSH
&MPY32CTL0
; Save multiplier mode, etc.
BIC
#MPYSAT+MPYFRAC,&MPY32CTL0
; Clear MPYSAT+MPYFRAC
PUSH
&RES3
; Save result 3
PUSH
&RES2
; Save result 2
PUSH
&RES1
; Save result 1
PUSH
&RES0
; Save result 0
PUSH
&MPY32H
; Save operand 1, high word
PUSH
&MPY32L
; Save operand 1, low word
PUSH
&OP2H
; Save operand 2, high word
PUSH
&OP2L
; Save operand 2, low word
;
...
; Main part of ISR
; Using standard MPY routines
;
POP
&OP2L
; Restore operand 2, low word
POP
&OP2H
; Restore operand 2, high word
; Starts dummy multiplication but
; result is overwritten by
; following restore operations:
POP
&MPY32L
; Restore operand 1, low word
POP
&MPY32H
; Restore operand 1, high word
POP
&RES0
; Restore result 0
POP
&RES1
; Restore result 1
POP
&RES2
; Restore result 2
POP
&RES3
; Restore result 3
POP
&MPY32CTL0
; Restore multiplier mode, etc.
reti
; End of interrupt service routine

14.2.8 Using DMA
In devices with a DMA controller, the multiplier can trigger a transfer when the complete result is available.
The DMA controller needs to start reading the result with MPY32RES0 successively up to MPY32RES3.
Not all registers need to be read. The trigger timing is such that the DMA controller starts reading
MPY32RES0 when its ready, and that the MPY32RES3 can be read exactly in the clock cycle when it is
available to allow fastest access by DMA. The signal into the DMA controller is 'Multiplier ready' (see the
DMA Controller chapter for details).

382

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Registers

www.ti.com

14.3 MPY32 Registers
MPY32 registers are listed in Table 14-7. The base address can be found in the device-specific data
sheet. The address offsets are listed in Table 14-7.
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

Table 14-7. MPY32 Registers
Offset

Acronym

Register Name

Type

Access

Reset

00h

MPY

16-bit operand one – multiply

Read/write

Word

Undefined

00h

MPY_L

Read/write

Byte

Undefined

01h

MPY_H

Read/write

Byte

Undefined

00h

MPY_B

8-bit operand one – multiply

Read/write

Byte

Undefined

02h

MPYS

16-bit operand one – signed multiply

Read/write

Word

Undefined

02h

MPYS_L

Read/write

Byte

Undefined

03h

MPYS_H

Read/write

Byte

Undefined

02h

MPYS_B

8-bit operand one – signed multiply

Read/write

Byte

Undefined

04h

MAC

16-bit operand one – multiply accumulate

Read/write

Word

Undefined

04h

MAC_L

Read/write

Byte

Undefined

05h

MAC_H

Read/write

Byte

Undefined

04h

MAC_B

8-bit operand one – multiply accumulate

Read/write

Byte

Undefined

06h

MACS

16-bit operand one – signed multiply accumulate

Read/write

Word

Undefined

06h

MACS_L

Read/write

Byte

Undefined

07h

MACS_H

Read/write

Byte

Undefined

06h

MACS_B

8-bit operand one – signed multiply accumulate

Read/write

Byte

Undefined

08h

OP2

16-bit operand two

Read/write

Word

Undefined

08h

OP2_L

Read/write

Byte

Undefined

09h

OP2_H

Read/write

Byte

Undefined

08h

OP2_B

8-bit operand two

Read/write

Byte

Undefined

0Ah

RESLO

16x16-bit result low word

Read/write

Word

Undefined

0Ah

RESLO_L

Read/write

Byte

Undefined

0Ch

RESHI

16x16-bit result high word

Read/write

Word

Undefined

0Eh

SUMEXT

16x16-bit sum extension register

Read

Word

Undefined

10h

MPY32L

32-bit operand 1 – multiply – low word

Read/write

Word

Undefined

10h

MPY32L_L

Read/write

Byte

Undefined

11h

MPY32L_H

Read/write

Byte

Undefined

12h

MPY32H

Read/write

Word

Undefined

12h

MPY32H_L

Read/write

Byte

Undefined

13h

MPY32H_H

Read/write

Byte

Undefined

12h

MPY32H_B

24-bit operand 1 – multiply – high byte

Read/write

Byte

Undefined

14h

MPYS32L

32-bit operand 1 – signed multiply – low word

Read/write

Word

Undefined

14h

MPYS32L_L

Read/write

Byte

Undefined

15h

MPYS32L_H

Read/write

Byte

Undefined

16h

MPYS32H

Read/write

Word

Undefined

16h

MPYS32H_L

Read/write

Byte

Undefined

17h

MPYS32H_H

Read/write

Byte

Undefined

16h

MPYS32H_B

24-bit operand 1 – signed multiply – high byte

Read/write

Byte

Undefined

18h

MAC32L

32-bit operand 1 – multiply accumulate – low word

Read/write

Word

Undefined

32-bit operand 1 – multiply – high word

32-bit operand 1 – signed multiply – high word

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32) 383

MPY32 Registers

www.ti.com

Table 14-7. MPY32 Registers (continued)
Offset

Acronym

18h

MAC32L_L

19h

MAC32L_H

1Ah

MAC32H

1Ah

Register Name

Type

Access

Reset

Read/write

Byte

Undefined

Read/write

Byte

Undefined

Read/write

Word

Undefined

MAC32H_L

Read/write

Byte

Undefined

1Bh

MAC32H_H

Read/write

Byte

Undefined

1Ah

MAC32H_B

24-bit operand 1 – multiply accumulate – high byte

Read/write

Byte

Undefined

1Ch

MACS32L

32-bit operand 1 – signed multiply accumulate – low word

Read/write

Word

Undefined

1Ch

MACS32L_L

Read/write

Byte

Undefined

1Dh

MACS32L_H

Read/write

Byte

Undefined

1Eh

MACS32H

Read/write

Word

Undefined

1Eh

MACS32H_L

Read/write

Byte

Undefined

1Fh

MACS32H_H

Read/write

Byte

Undefined

1Eh

MACS32H_B

24-bit operand 1 – signed multiply accumulate – high byte

Read/write

Byte

Undefined

20h

OP2L

32-bit operand 2 – low word

Read/write

Word

Undefined

20h

OP2L_L

Read/write

Byte

Undefined

21h

OP2L_H

Read/write

Byte

Undefined

22h

OP2H

Read/write

Word

Undefined

22h

OP2H_L

Read/write

Byte

Undefined

23h

OP2H_H

Read/write

Byte

Undefined

22h

OP2H_B

24-bit operand 2 – high byte

Read/write

Byte

Undefined

24h

RES0

32x32-bit result 0 – least significant word

Read/write

Word

Undefined

24h

RES0_L

Read/write

Byte

Undefined

26h

RES1

32x32-bit result 1

Read/write

Word

Undefined

28h

RES2

32x32-bit result 2

Read/write

Word

Undefined

2Ah

RES3

32x32-bit result 3 – most significant word

Read/write

Word

Undefined

2Ch

MPY32CTL0

MPY32 control register 0

Read/write

Word

Undefined

2Ch

MPY32CTL0_L

Read/write

Byte

Undefined

2Dh

MPY32CTL0_H

Read/write

Byte

00h

32-bit operand 1 – multiply accumulate – high word

32-bit operand 1 – signed multiply accumulate – high word

32-bit operand 2 – high word

The registers listed in Table 14-8 are treated equally.
Table 14-8. Alternative Registers

384

Register

Alternative 1

Alternative 2

16-bit operand one – multiply

MPY

MPY32L

8-bit operand one – multiply

MPY_B or MPY_L

MPY32L_B or MPY32L_L

16-bit operand one – signed multiply

MPYS

MPYS32L

8-bit operand one – signed multiply

MPYS_B or MPYS_L

MPYS32L_B or MPYS32L_L

16-bit operand one – multiply accumulate

MAC

MAC32L

8-bit operand one – multiply accumulate

MAC_B or MAC_L

MAC32L_B or MAC32L_L

16-bit operand one – signed multiply accumulate

MACS

MACS32L

8-bit operand one – signed multiply accumulate

MACS_B or MACS_L

MACS32L_B or MACS32L_L

16x16-bit result low word

RESLO

RES0

16x16-bit result high word

RESHI

RES1

32-Bit Hardware Multiplier (MPY32)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

MPY32 Registers

www.ti.com

14.3.1 MPY32CTL0 Register
32-Bit Hardware Multiplier Control 0 Register
Figure 14-6. MPY32CTL0 Register
15

14

13

12

11

10

9
MPYDLY32

r-0

r-0

r-0

r-0

r-0

r-0

rw-0

8
MPYDLYWRTE
N
rw-0

7
MPYOP2_32
rw

6
MPYOP1_32
rw

5

4

3
MPYSAT
rw-0

2
MPYFRAC
rw-0

1
Reserved
rw-0

0
MPYC
rw

Reserved

MPYMx
rw

rw

Table 14-9. MPY32CTL0 Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved. Always reads as 0.

9

MPYDLY32

RW

0h

Delayed write mode
0b = Writes are delayed until 64-bit result (RES0 to RES3) is available.
1b = Writes are delayed until 32-bit result (RES0 to RES1) is available.

8

MPYDLYWRTEN

RW

0h

Delayed write enable
All writes to any MPY32 register are delayed until the 64-bit (MPYDLY32 = 0) or
32-bit (MPYDLY32 = 1) result is ready.
0b = Writes are not delayed.
1b = Writes are delayed.

7

MPYOP2_32

RW

0h

Multiplier bit width of operand 2
0b = 16 bits
1b = 32 bits

6

MPYOP1_32

RW

0h

Multiplier bit width of operand 1
0b = 16 bits
1b = 32 bits

5-4

MPYMx

RW

0h

Multiplier mode
00b = MPY – Multiply
01b = MPYS – Signed multiply
10b = MAC – Multiply accumulate
11b = MACS – Signed multiply accumulate

3

MPYSAT

RW

0h

Saturation mode
0b = Saturation mode disabled
1b = Saturation mode enabled

2

MPYFRAC

RW

0h

Fractional mode
0b = Fractional mode disabled
1b = Fractional mode enabled

1

Reserved

RW

0h

Reserved. Always reads as 0.

0

MPYC

RW

0h

Carry of the multiplier. It can be considered as 33rd or 65th bit of the result if
fractional or saturation mode is not selected, because the MPYC bit does not
change when switching to saturation or fractional mode.
It is used to restore the SUMEXT content in MAC mode.
0b = No carry for result
1b = Result has a carry

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

32-Bit Hardware Multiplier (MPY32)

385

Chapter 15
SLAU445D – October 2014 – Revised December 2015

LCD_E Controller
The LCD_E controller drives static and 2-mux to 8-mux LCDs. This chapter describes the LCD_E
controller. The differences between LCD_B, LCD_C and LCD_E are listed in Table 15-1.
Topic

15.1
15.2
15.3

386

...........................................................................................................................

Page

LCD_E Introduction .......................................................................................... 387
LCD_E Operation .............................................................................................. 389
LCD_E Registers .............................................................................................. 412

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Introduction

www.ti.com

15.1 LCD_E Introduction
The LCD_E controller directly drives LCD displays by automatically creating the ac segment and common
voltage signals. The LCD_E controller can support static and 2-mux to 8-mux LCD glasses.
The LCD_E controller features are:
• Display memory
• Supports LPM3.5
• Configurable SEG and COM pins
• Automatic signal generation
• Configurable frame frequency
• Blinking of individual segments with separate blinking memory for static, and 2- to 4-mux LCDs
• Blinking of complete display for 5- to 8-mux LCDs
• Regulated charge pump up to 3.44 V (typical)
• Contrast control by software
• Support for the following types of LCDs
– Static
– 2-mux, 1/3 bias
– 3-mux, 1/3 bias
– 4-mux, 1/3 bias
– 5-mux, 1/3 bias
– 6-mux, 1/3 bias
– 7-mux, 1/3 bias
– 8-mux, 1/3 bias
Table 15-1 lists the differences between LCD_B, LCD_C, and LCD_E.
Table 15-1. Differences Between LCD_B, LCD_C, and LCD_E
LCD_B

LCD_C

LCD_E

Supported types of LCDs

Feature

Static, 2-, 3-, 4-mux

Static, 2-, 3-, 4-, 5-, 6-, 7,
8-mux

Static, 2-, 3-, 4-mux
5-, 6-, 7, 8-mux (device
specific)

LCD bias modes

1/2 bias and 1/3 bias

1/2 bias and 1/3 bias

1/3 bias

yes

yes

device specific

LCD Blinking Memory
SEG/COM mux
External Pins
LPM3.5

COM fixed

COM fixed

each LCD drive pin

R03, R13, R23, R33

R03, R13, R23, R33

R13, R23, R33, LCDCAP0,
LCDCAP1

not supported

not supported

supported

001111b

001111b

001111b

3.44 V

3.44 V

3.44 V

up to 4 x 46

up to 4 x 50 or 8 x 46

up to 4 x 60 or 8 x 56

Maximum VLCDx settings
Maximum LCD voltage (VLCD,typ)
Number of LCD pins

Figure 15-1 shows the LCD controller block diagram.
NOTE:

Maximum LCD Segment Control
The maximum number of segment lines and memory registers available differs with device.
See the device-specific data sheet for available segment pins and the maximum number of
segments supported.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

387

LCD_E Introduction

www.ti.com

LCDBLKMODx

LCDBLKPREx

LCDMXx

LCDCLRM

LCDCLRBM

LCD
Memory
Registers
LCDMx

Blinking
Memory
Registers
(1),(2)
LCDBMx

3

3

Blinking
Frequency
Divider

fFRAME

Divider

fBLINK

Blinking
(1)
Control

Display
Control
LCDCSS0
LCDDISP

LCDS0 LCDM0(3)

MUX

example for
connecting
COM/SEG

L0

LCDSSEL
LCDMXx

LCDDIVx
XT1CLK
ACLK
VLOCLK
Reserved

00
01
10
11

LCDCSS1

3

5
fSOURCE

fDIV

Divider

fLCD

Divider

LCDS1 LCDM0(3)

Timing
Generator
3

MUX

LCDCPFSELx
LCDMXx

4
Divider

L1

LCDON

fCP
LCDCSSx
VLCDx

LCDSx LCDMx

4
V1

VA

LCDCPEN
V2

LCD Bias
Generator

LCDSELVDD

V4

Charge Pump

LCDREFEN

VB
Analog
Voltage
Multiplexer

Lx

VC
VD

V5

LCDREFMODE

MUX

LCDCAP1

LCDCAP0

LCDLP
R13

R23

R33

(1) device specific
(2) only static, 2- to 4-mux)
(3) used LCDMx depends on selected MUX mode (LCDMXx)

Figure 15-1. LCD Controller Block Diagram

388

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2 LCD_E Operation
The LCD controller is configured with user software. The setup and operation of the LCD controller is
discussed in the following sections.

15.2.1 LCD Memory
The LCD memory organization differs slightly depending on the mode. Each memory bit corresponds to
one LCD segment, LCD common or is not used, depending on the mode. To turn on an LCD segment, its
corresponding memory bit is set. The memory can also be accessed word-wise using the even addresses
starting at LCDM0W, LCDM2W, and so on. Setting the bit LCDCLRM clears all LCD display memory
registers at the next frame boundary. It is reset automatically after the registers are cleared.
15.2.1.1 Static and 2-Mux to 4-Mux Mode
For static and 2-mux to 4-mux modes, one byte of the LCD memory contains the information for two
segment lines.
In static and 2-mux to 4-mux modes, the following maximum LCD segments are possible:
•
•
•
•

Static: up to 63 segments (one COM line)
2-mux: up to 124 segments (two COM lines)
3-mux: up to 183 segments (three COM lines)
4-mux: up to 240 segments (four COM lines)

Figure 15-2 shows an example LCD memory map for 4-mux mode with 240 segments.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

389

LCD_E Operation

www.ti.com

Associated
Common Pins
Register
LCDM31
LCDM30
LCDM29
LCDM28
LCDM27
LCDM26
LCDM25
LCDM24
LCDM23
LCDM22
LCDM21
LCDM20
LCDM19
LCDM18
LCDM17
LCDM16
LCDM15
LCDM14
LCDM13
LCDM12
LCDM11
LCDM10
LCDM9
LCDM8
LCDM7
LCDM6
LCDM5
LCDM4
LCDM3
LCDM2
LCDM1
LCDM0

3

2

1

0

3

2

1

0

0

7
------------------------------COM3

--

---------------------------------

-------------------------------COM1

Ln+1

---------------------------------

---------------------------------

------------------------------COM2

--

---------------------------------

Ln

-------------------------------COM0

n
62
60
58
56
54
52
50
48
46
44
42
40
38
36
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0

Associated
LCD Pins
L63, L62
L61, L60
L59, L58
L57, L56
L55, L54
L53, L52
L51, L50
L49, L48
L47, L46
L45, L44
L43, L42
L41, L40
L39, L38
L37, L36
L35, L34
L33, L32
L31, L30
L29, L28
L27, L26
L25, L24
L23, L22
L21, L20
L19, L18
L17, L16
L15, L14
L13, L12
L11, L10
L9, L8
L7, L6
L5, L4
1
1
L3 , L2
1
1
L1 , L0
1) LCD pins L0 - L3 are configured
to have common functionality by setting
register bits LCDCSS0 - LCDCSS3 = 1

Figure 15-2. LCD Memory for Static to 4-Mux Mode – Example for 4-Mux Mode With 240 Segments

390

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.1.2 5-Mux to 8-Mux Mode
For 5-mux to 8-mux modes, one byte of the LCD memory contains the information for one segment line.
In 5-mux to 8-mux modes the following maximum LCD segments are possible:
•
•
•
•

5-mux:
6-mux:
7-mux:
8-mux:

up
up
up
up

to
to
to
to

295
348
399
448

segments (five COM lines)
segments (six COM lines)
segments (seven COM lines)
segments (eight COM lines)

Figure 15-3 shows an example LCD memory map for 8-mux mode with 96 segments.
Associated
Common Pins

7

6

5

4

3

2

1

0

Register
7

0

n

Associated
LCD Pins

LCDM19

--

--

--

--

--

--

--

--

19

L19

LCDM18

--

--

--

--

--

--

--

--

18

L18

LCDM17

--

--

--

--

--

--

--

--

17

L17

LCDM16

--

--

--

--

--

--

--

--

16

L16

LCDM15

--

--

--

--

--

--

--

--

15

L15

LCDM14

--

--

--

--

--

--

--

--

14

L14

LCDM13

--

--

--

--

--

--

--

--

13

L13

LCDM12

--

--

--

--

--

--

--

--

12

L12

LCDM11

--

--

--

--

--

--

--

--

11

L11

LCDM10

--

--

--

--

--

--

--

--

10

L10

LCDM9

--

--

--

--

--

--

--

--

9

L9

LCDM8

--

--

--

--

--

--

--

--

8

L8

LCDM7

COM7

-COM6

---

---

---

---

L7

--

---

7

LCDM6

---

6

L6

LCDM5

--

--

COM5

--

--

--

--

--

5

L5

1
1
1

1

LCDM4

--

--

--

COM4

--

--

--

--

4

L4

LCDM3

--

--

--

--

COM3

--

--

--

3

L3

1

1

LCDM2

--

--

--

--

--

COM2

--

--

2

L2

LCDM1

--

--

--

--

--

--

COM1

--

1

L1

LCDM0

--

--

--

--

--

--

--

COM0

0

L0

1
1

Ln
1) LCD pins L0 - L7 are configured
to have common functionality by setting
register bits LCDCSS0 - LCDCSS7 = 1

Figure 15-3. LCD Memory for 5-Mux to 8-Mux Mode – Example for 8-Mux Mode With 96 Segments

15.2.2 Configuration of Port Pin as LCD Output
LCD segments and common functions are multiplexed with digital I/O functions. These pins can function
either as digital I/O or as LCD functions. The LCD segment/common functions, when multiplexed with
digital I/O, are selected using the LCDSx bits in the LCDPCTLx registers. Setting LCDSx bits select the
LCD function for each pin. When LCDSx = 0, a multiplexed pin is set to digital I/O function. When LCDSx
= 1, a multiplexed pin is selected as LCD function. See the port schematic section of the device-specific
data sheet for details on controlling the pin functionality.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

391

LCD_E Operation
NOTE:

www.ti.com

LCDSx Bits Do Not Affect Dedicated LCD Segment/Common Pins
The LCDSx bits only affect pins with multiplexed LCD segment/common functions and digital
I/O functions. Dedicated LCD segment/common pins are not affected by the LCDSx bits.

15.2.3 Configuration of LCD Pin as COM or SEG
To simplify board layout and routing of segment and common lines, each LCD pin can be either defined
as LCD segment (SEG) or as common line (COM). The LCDCSSx bits define how the content of the
LCDMx registers are interpreted. By setting LCDCSSx=0 the LCD pins Lx are working as LCD segments.
When setting LCDCSSx = 1, the contents of LCDMx define which common line (COM0 to COM7) is used
at the corresponding LCD pin Lx.
The use of this functionality is described in the following sections.
15.2.3.1 Defining LCD Pin as Segment
Static, 2-, 3-, 4-mux Mode
In static, 2-, 3-, and 4-mux mode, the LCDMx register contains the memory for two segment pins. For
example LCDM1 contains L3 and L2 (see Section 15.2.1). To define the LCD Pin as LCD segment the
corresponding bit in LCDCSSELx register must be set to 0 (default). With this the LCDMx registers are
used to enable or disable LCD segments. For example, to define LCD pin L14 as LCD segment, set
LCDCSS14 = 0 in the LCDCSSEL0 register.
5-, 6-, 7- and 8-mux Mode
In 5-, 6-, 7- and 8-mux mode, each LCDMx register contains the memory for one segment pin. To define
the LCD pin as LCD segment, the corresponding bit in LCDCSSELx register must be set to 0 (default).
With this the LCDMx registers are used to enable or disable LCD segments. For instance LCDM7 contains
memory for L7, LCDM29 for L29, and so on.
NOTE: See the device-specific data sheet to determine whether or not 5-, 6-, 7-, or 8-mux mode is
available on a device.

15.2.3.2 Defining LCD Pin as Common Line
NOTE:

Only one common (COMx) pin per LCD pin can be selected. Assigning two or more
common functions to one LCD pin can lead to unpredicted behavior.

To define the LCD pin to have LCD common functionality, the corresponding bit in LCDCSSELx register
must be set to 1. By this the LCDMx register is used to configure the associated LCD pin to have COMx
functionality.
The LCDMx setting behaves differently, depending on whether static- to 4-mux mode or 5-mux to 8-mux
mode is used. The differences are described in the following sections.
15.2.3.2.1 COM Assignment in Static, 2-, 3-, or 4-Mux Mode
In static, 2-, 3-, or 4-mux mode, each LCDMx is used to control the common functionality of two LCD pins.
Similar to the segment functionality described in Section 15.2.1, the lower nibble of LCDMx is used to
control even-numbered LCD pins (L0, L2, ...). Odd-numbered LCD pins (L1, L3, ...) are controlled by the
upper nibble of LCDMx. Selecting two or more COM pins per LCD pin can lead to unpredicted behavior of
the LCD and must be avoided.
In static mode only COM0 is available.
In 2-mux mode COM0 and COM1 can be selected.
In 3-mux mode COM0, COM1, and COM2 can be selected.
In 4-mux mode COM0, COM1, COM2, and COM3 can be selected.
392

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com
Register
LCDMx

COM3 COM2 COM1 COM0 COM3 COM2 COM1 COM0

LCDMx

0

LCDMx

0

0

LCDMx

0

0

COM2 COM1 COM0
COM1 COM0
0

COM0

0

COM2 COM1 COM0

0

0

0

0

Ln+1

COM1 COM0
0

COM0

4-mux Mode
3-mux Mode
2-mux Mode
static Mode

Ln

SEGMAX = Number of Segment Pins
n = 0 ...

SEGMAX - 1
2

x=n

Figure 15-4. LCDMx in Static, 2-, 3-, or 4-Mux Mode
Examples:
To use LCD pin L4 as COM2, make the following configuration:
LCDPCTL0 = BIT4;
LCDCSSEL0 = BIT4;
LCDM2 = BIT2;

// configure I/O pad as LCD pin
// configure LCD pin L4 as COM
// define L4 as COM2

To use LCD pin L23 as COM0, make the following configuration:
LCDPCTL1 = BIT7;
LCDCSSEL1 = BIT7;
LCDM11 = BIT4;

// configure I/O pad as LCD pin
// configure LCD pin L23 as COM
// define L23 as COM0

15.2.3.2.2 COM Assignment in 5-, 6-, 7-, or 8-Mux Mode
In 5-, 6-, 7- and 8-mux mode, each LCDMx is used to control the common functionality of one LCD pin.
To define a LCD pin as LCD common, the corresponding bit in LCDCSSELx register must be set to 1. In
5-, 6-, 7- and 8-mux mode, each LCDMx register controls the common functionality of one LCD pin.
Selecting two or more COM pins per LCD pin can lead to unpredicted behavior of the LCD and must be
avoided.
NOTE: See the device-specific data sheet to determine whether or not 5-, 6-, 7-, or 8-mux mode is
available on a device.
LCDMx

COM7 COM6 COM5 COM4 COM3 COM2 COM1 COM0

LCDMx

0

LCDMx

0

0

LCDMx

0

0

COM6 COM5 COM4 COM3 COM2 COM1 COM0
COM5 COM4 COM3 COM2 COM1 COM0
0

COM4 COM3 COM2 COM1 COM0

8-mux Mode
7-mux Mode
6-mux Mode
5-mux Mode

Ln

SEGMAX = Number of Segment Pins
n = 0 ... SEGMAX - 1
x=n

Figure 15-5. LCDMx in 5-, 6-, 7-, or 8-Mux Mode
Examples:
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

393

LCD_E Operation

www.ti.com

To use LCD pin L4 as COM6, make the following configuration:
LCDPCTL0 |= BIT4;
LCDCSSEL0 |= BIT4;
LCDM4 = BIT6;

// configure I/O pad as LCD pin
// configure LCD pin L4 as COM
// define L4 as COM6

To use LCD pin L23 as COM5, make the following configuration:
LCDPCTL1 = BIT7;
LCDCSSEL1 = BIT7;
LCDM23 = BIT5;

// configure I/O pad as LCD pin
// configure LCD pin L23 as COM
// define L23 as COM5

15.2.4 LCD Timing Generation
The LCD_E controller uses the fLCD signal from the integrated clock divider to generate the timing for
common and segment lines. The LCDSSEL bit sets the source frequency fSOURCE to ACLK (30 kHz to
40 kHz), XT1CLK (32.768 kHz), or VLOCLK (≈ 10 kHz). The fLCD frequency is selected with the LCDDIVx
and LCDMXx bits, and depends on the selected mux mode. The divider corresponding to the mux-mode is
listed in Table 15-2.
Table 15-2. Divider depending on MUX-Mode
MUX Mode

MUXDIVIDER

1 (Static)

64

2

32

3

16

4

16

5

12

6

8

7

8

8

8

The resulting fLCD frequency is calculated by:
fSOURCE
fLCD =
(LCDDIVx + 1) × MUXDIVDER
EXAMPLE 1:
The proper fLCD frequency depends on the LCD's requirement for framing frequency and the LCD multiplex
rate. To avoid ghosting effects on the LCD, fLCD should be in the range of approximately 30 Hz to 60 Hz. It
is calculated by:
fLCD = 2 × mux × fFRAME
For example, to calculate fLCD for a 3-mux LCD with a frame frequency of 25 Hz to 80 Hz:
fFRAME (from LCD data sheet) = 25 Hz to 80 Hz
fLCD = 2 × 3 × fFRAME
fLCD(min) = 150 Hz
fLCD(max) = 480 Hz
With fSOURCE = 32768 Hz, LCDDIVx = 01101, and LCDMXx = 010:
fLCD = 32768 Hz / ((13+1) × 16) = 32768 Hz / 224 = 146 Hz
With LCDDIVx = 00100 and LCDMXx = 010:
fLCD = 32768 Hz / ((4+1) × 16) = 32768 Hz / 56 = 409 Hz
The lowest frequency has the lowest current consumption. The highest frequency has the least flicker.
EXAMPLE 2:
Table 15-3 shows the possible fLCD, fFRAME, and fBLINK frequencies for a given fSOURCE = 32.768 kHz
depending on the selected mux mode.

394

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

Table 15-3. Example for Possible LCD Frequencies

(1)

fSOURCE
(Hz)

Mux
Mode

LCDDIVx (1
)

fDIV (Hz)

fLCD (Hz)

fFRAME (Hz)

fBLINK (Hz)

32768

Static

4-16

8192 ... 2048

(8192 ... 2048) / 64 =
(128 ... 32)

(128 ... 32) / 2 / 1 =
(64 ... 16)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

2

4-16

8192 ... 2048

(8192 ... 2048) / 32 =
(256 ... 64)

(256 ... 64) / 2 / 2 =
(64 ... 16)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

3

4-16

8192 ... 2048

(8192 ... 2048) / 16 =
(512 ... 128)

(512 ... 128) / 2 / 3 =
(85 ... 21)

fLCD / ((LCDMx + 1) × 2
^ (LCDBLKPREx + 2))

32768

4

4-16

8192 ... 2048

(8192 ... 2048) / 16 =
(512 ... 128)

(512 ... 128) / 2 / 4 =
(64 ... 16)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

5

4-16

8192 ... 2048

(8192 ... 2048) / 12 =
(683 ... 171)

(682 ... 172) / 2 / 5 =
(68 ... 17)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

6

4-16

8192 ... 2048

(8192 ... 2048) / 8 =
(1024 ... 256)

(1024 ... 256) / 2 / 6 =
(85 ... 21)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

7

4-16

8192 ... 2048

(8192 ... 2048) / 8 =
(1024 ... 256)

(1024 ... 256) / 2 / 7 =
(73 ... 18)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

32768

8

4-16

8192 ... 2048

(8192 ... 2048) / 8 =
(1024 ... 256)

(1024 ... 256) / 2 / 8 =
(64 ... 16)

fLCD / ((LCDMx + 1) ×
2(LCDBLKPREx + 2))

LCDDIVx < 4 is not recommended, as it would result in higher frequencies for fLCD , fFRAME, and fBLINK

15.2.5 Blanking the LCD
The LCD controller allows blanking the complete LCD. The LCDSON bit is ANDed with each segment's
memory bit. When LCDSON = 1, each segment is on or off according to its bit value. When LCDSON = 0,
each LCD segment is off.

15.2.6 LCD Blinking
The LCD controller also supports blinking. In static and 2-mux to 4-mux mode, the blinking mode
LCDBLKMODx = 01 allows blinking of individual segments; with LCDBLKMODx = 10 all segments are
blinking; and with LCDBLKMODx = 00 blinking is disabled. In 5-mux mode and above, only blinking mode
LCDBLKMODx = 10 that allows blinking of all segments is available; if another mode is selected, blinking
is disabled.
15.2.6.1 Blinking Memory
In static and 2-mux to 4-mux mode, a separate blinking memory is implemented to select the blinking
segments. To enable individual segments for blinking, the corresponding bit in the blinking memory
LCDBMx registers must be set. The memory uses the same structure as the LCD memory shown in
Figure 15-2. Each memory bit corresponds to one LCD segment or is not used, depending on the
multiplexing mode LCDMXx. To enable blinking for a LCD segment, its corresponding memory bit is set.
The blinking memory can also be accessed word-wise using the even addresses starting at LCDBM0W,
LCDBM2W, and so on.
Setting the bit LCDCLRBM clears all blinking memory registers at the next frame boundary. It is
automatically reset after the registers are cleared.
15.2.6.2 COM Configuration in Blinking Mode
Special care must be taken, if LCD segments are configured for blinking. As in Section 15.2.3.2 described,
a part of the display memory LCDMx is used for COM configuration. It depends on selected blinking mode
LCDBLKMODx, how display memory LCDMx and blinking memory LCDBMx have to be configured. See
Table 15-4 for details.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

395

LCD_E Operation

www.ti.com

Table 15-4. Overview on COM Configuration in Blinking Mode
Blinking Mode
LCDBLKMOXx

Description

00b

Blinking disabled, the user can select which memory to be displayed by setting LCDDISP bit in LCDMEMCTL
register
LCDMx: the COM related configuration bits should be set accordingly
LCDBMx: the COM related configuration bits should be set according to LCDMx configuration

01b

Blinking of individual segments as enabled in blinking memory register LCDBMx
LCDMx: the COM related memory bits should be set accordingly
LCDBMx: the COM related memory bits should be set to 0

10b

Blinking of all segments
LCDMx: the COM related memory bits should be set accordingly
LCDBMx: this memory is not used in this blinking mode, no programming of LCDBMx necessary

11b

Switching between display contents as stored in LCDMx and LCDBMx memory registers
LCDMx: the COM related memory bits should be set accordingly
LCDBMx: the COM related memory bits should be set according to LCDMx configuration

By saying LCDBMx must be configured according to LCDMx it means that the same memory number "x"
must be used. For example if LCDM2 = 02h (LCD pin L2 = COM1), then LCDBM2 has also to be
programmed to 02h.
Example:
LCD configured in 4-MUX mode, 20 LCD pins, 4 configured as common, 16 configured as segment
L0 = COM0, L1 = COM1, L2 = COM2, L3 = COM3; L4 ... L19 = SEG0 ... SEG19
The following configuration must be done:
LCDPCTL0 = 0xFFFF; // configure I/O pad of L0 to L15 as LCD pin
LCDPCTL1 = 0x000F; // configure I/O pad of L16 to L19 as LCD pin
LCDCSSEL0 = 0x000F; // configure LCD pin L0-L3 as common

Figure 15-6 shows how to configure the display memory LCDMx and the blinking memory LCDBMx during
different blinking modes.

396

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

Blinking Mode

Display Memory

LCDM9

L19

Blinking Memory

LCDBM9

L18

L19

L18

0x00
LCDM2

0x11

L5

L4

0

0

0

0

1

0

0

LCDBM1

1

0

0

0

0

1

0

0

LCDM0

0

0

1

0

0

0

0

1

LCDBM0

0

0

1

0

0

0

0

1

L19

LCDM2

LCDBM9

L18

L5

L19

LCDBM2

L4

L18

L5

L4

LCDM1

1

0

0

0

0

1

0

0

LCDBM1

0

0

0

0

0

0

0

0

LCDM0

0

0

1

0

0

0

0

1

LCDBM0

0

0

0

0

0

0

0

0

LCDM9

0x10

L5

1

LCDM9

0x01

LCDBM2

L4

LCDM1

L19

LCDM2

LCDBM9

L18

L5

L19

LCDBM2

L4

L18

L5

L4

LCDM1

1

0

0

0

0

1

0

0

LCDBM1

x

x

x

x

x

x

x

x

LCDM0

0

0

1

0

0

0

0

1

LCDBM0

x

x

x

x

x

x

x

x

Note: x = don’t care

Figure 15-6. Example LCDMx and LCDBMx Configuration in Different Blinking Modes

15.2.6.3 Blinking Frequency
The blinking frequency fBLINK is selected with the CDBLKDIVx and LCDMXx bits, thus depending on
selected mux-mode. The resulting fBLINK frequency is calculated by:
fLCD
fBLINK =
LCDBLKPREx+2
(LCDMXx + 1) × 2
The divider generating the blinking frequency fBLINK is reset when LCDBLKMODx = 00. After a blinking
mode LCDBLKMODx = 01 or 10 is selected, the enabled segments or all segments go blank at the next
frame boundary and stay off for half of a BLKCLK period. Then they go active at the next frame boundary
and stay on for another half BLKCLK period before they go blank again at a frame boundary.
NOTE:

Blinking Frequency Restrictions
The blinking frequency must be smaller than the frame frequency fFRAME.
The blinking frequency should only be changed when LCDBLKMODx = 00.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

397

LCD_E Operation

www.ti.com

15.2.6.4 Dual Display Memory
In static- to 4-mux mode, the blinking memory LCDBMx can also be used as a secondary display memory
when no blinking mode (LCDBLKMODx = 01 or 10) is selected.
With LCDBLKMODx = 00 the LCDDISP bit can be used to manually select the memory to be displayed.
With LCDDISP = 0, the LCD memory LCDMx is selected, and with LCDDISP = 1 the blinking memory
LCDBMx is selected as display memory. Switching between the memories is synchronized to the frame
boundaries.
With LCDBLKMODx = 11 the LCD controller switches automatically between the memories using the
divider to generate the blinking frequency. The LCDDISP bit can be used as status bit, indicating the
selected memory. After LCDBLKMODx = 11 is selected, the memory to be displayed for the first half a
BLKCLK period is the LCD memory. In the second half, the blinking memory is used as display memory.
Switching between the memories is synchronized to the frame boundaries.

15.2.7 LCD Voltage and Bias Generation
The LCD_E module allows selectable sources for the peak output waveform voltage, V1, as well as the
fractional LCD biasing voltages V2, V4, and V5. VLCD may be sourced from VCC, an internal charge pump,
or externally.
15.2.7.1 LCD Voltage Selection
VLCD is sourced from VCC when LCDSELVDD = 1 and LCDREFEN = 0. VLCD is sourced from the internal
charge pump when LCDSELVDD = 0 and LCDCPEN = 1. The internal charge pump either sourced by
VEXT or VDD through R33 or from external reference voltage VREF,EXT or internal reference voltage through
R13. The VLCDx bits provide a software selectable LCD voltage from 2.6 V to 3.5 V (typical) independent
of VDD. See the device-specific data sheet for specifications.
When the internal charge pump is used, a 100-nF or larger capacitor must be connected between the
LCDCAP0 and LCDCAP1 pins. The charge pump may be temporarily disabled by setting LCDCPEN = 0
with VLCDx > 0 to reduce system noise. It can be automatically disabled during certain periods by setting
the corresponding bits in the LCDVCTL register. In this case, the voltage present at the external capacitor
is used for the LCD voltages until the charge pump is re-enabled.
NOTE:

Capacitor Required For Internal Charge Pump
A 100-nF or larger capacitor must be connected from the LCDCAP0 and LCDCAP1 pins
when the internal charge pump is enabled.

15.2.7.2 LCD Bias Generation
The fractional LCD biasing voltages, V2 and V4 can be generated internally or externally, independent of
the source for VLCD. V5 is always connected to ground. The bias generation block diagram for LCD_E
static and 2-mux to 8-mux modes is shown in Figure 15-7.

398

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com
CCP

LCDCAP1

LCDCAP0

fCP

(1)

Charge Pump

R33
R23
R13
1

LCDSELVDD

Bias Voltage
Generator

LCDREFMODE

1

LCDCPEN

1

4

LCDREFEN

VLCDx
VCC

(2)

Mode
0a

0b

VEXT

1

4

1

V1 (VLCD)
C

R

LCDSELVDD

R33

VEXT
(1)

R
R23
V2 (2/3 VLCD)
C

R

(1)

R
VREF,EXT

R13
C

R

(1)

V4 (1/3 VLCD)

R

V5

Optional external configuration
(1) Recommended external configuration
(2) Mode 2 and Mode 3 do not require external resistors or external voltages

Figure 15-7. Bias Generation
The bias voltages V1, V2 and V4 are available on pin R33, R23 and R13. To source the bias voltages V1,
V2 and V4 externally, an equally weighted resistor divider is used with resistors ranging from a few k? to
1 M?, depending on the size of the display. When using the internal charge pump it is possible to derive
the bias voltages V1, V2 and V4 from several sources. It is possible to connect either an external voltage
VEXT or internally VDD to R33 to generate V2 and V4. See section Section 15.2.8.1 (Mode 1 and Mode 2).
The third possibility is to source R13 either externally or internally. See section Section 15.2.8.2 (Mode 3)
and Section 15.2.8.3 (Mode 4).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

399

LCD_E Operation

www.ti.com

15.2.7.3 LCD Contrast Control
The peak voltage of the output waveforms together with the selected mode and biasing determine the
contrast and the contrast ratio of the LCD. The LCD contrast can be controlled in software by adjusting the
LCD voltage generated by the integrated charge pump using the VLCDx settings.
The contrast ratio depends on the used LCD display. Table 15-5 shows the biasing configurations that
apply to the different modes together with the RMS voltages for the segments turned on (VRMS,ON) and
turned off (VRMS,OFF) as functions of VLCD. It also shows the resulting contrast ratios between the on and off
states.
Table 15-5. LCD Voltage and Biasing Characteristics
Mode

Bias
Config

LCDMXx

COM
Lines

Voltage Levels

VRMS,OFF/ VLCD

VRMS,ON/ VLCD

Contrast Ratio
VRMS,ON/
VRMS,OFF

Static

Static

0000

1

V1, V5

0

1

1/0

2-mux

1/3

0001

2

V1, V2, V4, V5

0.333

0.745

2.236

3-mux

1/3

0010

3

V1, V2, V4, V5

0.333

0.638

1.915

4-mux

1/3

0011

4

V1, V2, V4, V5

0.333

0.577

1.732

5-mux

1/3

0100

5

V1, V2, V4, V5

0.333

0.537

1.612

6-mux

1/3

0101

6

V1, V2, V4, V5

0.333

0.509

1.528

7-mux

1/3

0110

7

V1, V2, V4, V5

0.333

0.488

1.464

8-mux

1/3

0111

8

V1, V2, V4, V5

0.333

0.471

1.414

A typical approach to determine the required VLCD is by equating VRMS,OFF with a defined LCD threshold
voltage, typically when the LCD exhibits approximately 10% contrast (Vth,10%): VRMS,OFF = Vth,10%. Using the
values for VRMS,OFF/VLCD provided in the table results in VLCD = Vth,10%/(VRMS,OFF/VLCD). In the static mode, a
suitable choice is VLCD greater than or equal to three times Vth,10%.

400

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.8 LCD Operation Modes
This section describes the different modes in which the LCD can be operated.
15.2.8.1 Internal Charge Pump Enabled, Internal VREF Disabled (Mode 1, Mode 2)
In Figure 15-8 Mode 1 is depicted. LCD voltages are sourced from an external voltage VEXT, which is
connected to pin R33. The internal charge pump is used to generate the LCD voltages V1, V2, V4 and V5.
Contrast can be adjusted by changing VEXT.
LCDSELVDD
LCDCPEN
LCDREFEN
LCDCPFSELx
VLCDx
LCDON

=
=
=
=
=
=

0;
1;
0;
0b1111;
0b0000;
1;

//
//
//
//
//
//

Pin R33 is connected to external supply voltage
internal charge pump enabled
internal reference voltage at R13 is disabled
charge pump frequency select, slowest value
not used, set to reset value
enable LCD

Mode 2 is shown in Figure 15-9. R33 is connected to internal supply voltage VDD. The internal charge
pump generates the LCD voltages V1, V2, V4, and V5. Contrast can be adjusted by changing VDD from
3.6 V to 1.8 V.
LCDSELVDD
LCDCPEN
LCDREFEN
LCDCPFSELx
VLCDx
LCDON
Off-Chip

=
=
=
=
=
=

1;
1;
0;
0b1111;
0b0000;
1;

//
//
//
//
//
//

Pin R33 is connected to internal supply voltage
internal charge pump enabled
internal reference voltage at R13 is disabled
charge pump frequency select, slowest value
not used, set to reset value
enable LCD

On-Chip
Off-Chip

VEXT

On-Chip

VCC
1

R33

V1

R23

V2

R13

LCDCPEN=1

V4

1

1

LCDSELVDD = 1
R33

V1

R23

V2

R13

V4

1

LCDCPEN=1
LCDCAP1

V5
Charge
Pump

1

1

1

LCDCAP1

V5
Charge
Pump

LCDCAP0
LCDCAP0

Figure 15-8. LCD Operation Mode 1

Figure 15-9. LCD Operation Mode 2

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

401

LCD_E Operation

www.ti.com

15.2.8.2 Internal Charge Pump Enabled, Internal VREF Enabled (Mode 3)
In Figure 15-10 Mode 3 is depicted. LCD voltages are derived from Bias Voltage Generator, which is
connected to pin R13. The internal charge pump is used to generate the LCD voltages V1, V2, V5 is
connected to ground. Contrast can be adjusted in software by changing VLCDx bits in LCDVCTL register.
By setting LCDREFMODE = 1, the bias voltage generator is in switch mode. Thus the bias voltage
generator is on for 1 clock cycle and off for another 256 clock cycles to save power. Setting
LCDREFMODE = 0 sets the bias generator to static mode to be able to drive larger LCD panels.
LCDSELVDD
LCDCPEN
LCDREFEN
LCDCPFSELx
VLCDx
LCDON

=
=
=
=
=
=

0;
1;
1;
0b1111;
0b1000;
1;

//
//
//
//
//
//

Off-Chip

Pin R33 is connected to external supply voltage
internal charge pump enabled
internal reference voltage at R13 is enabled
charge pump frequency select, slowest value
VLCDx set to mid position
enable LCD
On-Chip

R33

V1

R23

V2

R13

LCDCPEN=1

V4

1

1

1

V5

LCDCAP1
Charge
Pump
LCDCAP0

Bias
Voltage
Generator
4
LCDREFEN VLCDx LCDREFMODE

Figure 15-10. LCD Operation Mode 3

NOTE: Mode 3 is the recommended operating mode, as this provides the lowest external
component cost and very low operating currents.

402

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.8.3 Internal Charge Pump Enabled, Internal VREF Disabled (Mode 4)
Figure 15-11 shows Mode 4. LCD voltages are derived from external reference voltage, which is
connected to pin R13. The internal charge pump is used to generate the LCD biasing voltages V1, V2. V5
is connected to ground. Contrast can be adjusted by changing external voltage VREF,EXT from 0.8 V to
1.2 V.
LCDSELVDD
LCDCPEN
LCDREFEN
LCDCPFSELx
VLCDx
LCDON

=
=
=
=
=
=

0;
1;
0;
0b1111;
0b0000;
1;

//
//
//
//
//
//

Pin R33 is connected to external supply voltage
internal charge pump enabled
internal reference voltage at R13 is disabled
charge pump frequency select, slowest value
not used, set to reset value
enable LCD
Off-Chip

On-Chip

R33

V1

R23

V2

R13

VREF,EXT

LCDCPEN=1

V4

1

1

1

LCDCAP1

V5
Charge
Pump

LCDCAP0

Figure 15-11. LCD Operation Mode 4

15.2.9 LCD Interrupts
The LCD_E module has three interrupt sources available, each with independent enables and flags.
The three interrupt flags, namely LCDFRMIFG, LCDBLKOFFIFG and LCDBLKONIFG are prioritized and
combined to source a single interrupt vector. The interrupt vector register LCDIV is used to determine
which flag requested an interrupt.
The highest priority enabled interrupt generates a number in the LCDIV register (see register description).
This number can be evaluated or added to the program counter to automatically enter the appropriate
software routine. Disabled LCD interrupts do not affect the LCDIV value.
Any read access of the LCDIV register automatically resets the highest pending interrupt flag. If another
interrupt flag is set, another interrupt is immediately generated after servicing the initial interrupt. A write
access to the LCDIV register automatically resets all pending interrupt flags. In addition, all flags can be
cleared by software.
The LCDBLKONIFG is set at the BLKCLK rising edge and LCD switches to blinking status when blinking
is enabled with LCDBLKMODx = 01 or 10. It is also set at the BLKCLK edge that selects the blinking
memory as display memory when LCDBLKMODx = 11. It is automatically cleared when a LCD or blinking
memory register is written. Setting the LCDBLKONIE bit enables the interrupt.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

403

LCD_E Operation

www.ti.com

The LCDBLKOFFIFG is set at the BLKCLK falling edge and LCD switches to non-blinking status when
blinking is enabled with LCDBLKMODx = 01 or 10. It is also set at the BLKCLK edge that selects the LCD
memory as display memory when LCDBLKMODx = 11. It is automatically cleared when a LCD or blinking
memory register is written. Setting the LCDBLKOFFIE bit enables the interrupt.
The LCDFRMIFG is set at a frame boundary. It is automatically cleared when a LCD or blinking memory
register is written. Setting the LCDFRMIFGIE bit enables the interrupt.
15.2.9.1 LCDIV Software Example
The following software example shows the recommended use of LCDIV and the handling overhead. The
LCDIV value is added to the PC to automatically jump to the appropriate routine.
The numbers at the right margin show the necessary CPU cycles for each instruction. The software
overhead for different interrupt sources includes interrupt latency and return-from-interrupt cycles, but not
the task handling itself.
; Interrupt handler for LCD_E interrupt flags.
LCDB_HND
; Interrupt latency
ADD &LCDBIV,PC
; Add offset to Jump table
RETI
; Vector 0: No interrupt
JMP LCDBLKON_HND ; Vector 4: LCDBLKONIFG
JMP LCDBLKOFF_HND ; Vector 6: LCDBLKOFFIFG
LCDFRM_HND
; Vector 8: LCDFRMIFG
...
; Task starts here
RETI
LCDBLKON_HND ; Vector 4: LCDBLKONIFG
... ; Task starts here
RETI ; Back to main program
LCDBLKOFF_HND ; Vector 6: LCDBLKOFFIFG
... ; Task starts here
RETI ; Back to main program

404

LCD_E Controller

6
3
5
2
2

5

5

5

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.10 Static Mode
In static mode, each MSP430 segment pin drives one LCD segment, and one common line (COM0) is
used. Figure 15-12 shows some example static waveforms.
S0
on

S1

COM0

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5

COM0-S0
Segment is on.

V1
V2
V4
0V
−V4
−V2
−V1

COM0-S1
Segment is off.

V1
V2
V4
0V
−V4
−V2
−V1

off

COM0

Figure 15-12. Example Static Waveforms

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

405

LCD_E Operation

www.ti.com

15.2.11 2-Mux Mode
In 2-mux mode, each MSP430 segment pin drives two LCD segments, and two common lines (COM0 and
COM1) are used. Figure 15-13 shows some example 2-mux 1/3-bias waveforms.
S0

S1

on

COM0

V1
V2
V4
V5

COM0
off

fframe

COM1
COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5
V1

COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-13. Example 2-Mux Waveforms

406

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.12 3-Mux Mode
In 3-mux mode, each MSP430 segment pin drives three LCD segments, and three common lines (COM0,
COM1, and COM2) are used. Figure 15-14 shows some example 3-mux 1/3-bias waveforms.
S0

S1

on

COM0

V1
V2
V4
V5

COM0
off

fframe

COM1
COM2

COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5
V1

COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-14. Example 3-Mux Waveforms

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

407

LCD_E Operation

www.ti.com

15.2.13 4-Mux Mode
In 4-mux mode, each MSP430 segment pin drives four LCD segments and four common lines (COM0,
COM1, COM2, and COM3) are used. Figure 15-15 shows some example 4-mux 1/3-bias waveforms.
S0

S1

on

COM0

off

fframe

COM1
COM2

V1
V2
V4
V5

COM0

COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5

COM3

V1
COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-15. Example 4-Mux Waveforms

408

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

15.2.14 6-Mux Mode
In 6-mux mode, each MSP430 segment pin drives six LCD segments, and six common lines (COM0,
COM1, COM2, COM3, COM4, and COM5) are used. Figure 15-16 shows some example 6-mux 1/3-bias
waveforms.
S0

S1

on

COM0

V1
V2
V4
V5

COM0
off

fframe

COM1
COM2

COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5

COM3
COM4
COM5

V1
COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-16. Example 6-Mux Waveforms

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

409

LCD_E Operation

www.ti.com

15.2.15 8-Mux Mode
In 8-mux mode, each MSP430 segment pin drives eight LCD segments, and eight common lines (COM0
through COM7) are used. Figure 15-17 shows some example 8-mux 1/3-bias waveforms.
S0

S1

*

on

COM0

off

*

*

*

*

*

*

V1
V2
V4
V5

fframe

COM1
COM2

*

COM0

COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5

COM3
COM4
COM5
COM6
COM7

V1
COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-17. Example 8-Mux, 1/3 Bias Waveforms (LCDLP = 0)

410

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Operation

www.ti.com

Figure 15-18 shows some example 8-mux 1/3-bias waveforms with LCDLP = 1. With LCDLP = 1, the
voltage sequence compared to the non-low power waveform is reshuffled; that is, all of the timeslots
marked with "*" in Figure 15-17 are grouped together. The same principle applies to all mux modes.
S0

S1

* * * * * * * *

on

COM0

COM0
off

fframe

COM1
COM2

V1
V2
V4
V5

COM1

V1
V2
V4
V5

S0

V1
V2
V4
V5

S1

V1
V2
V4
V5

COM3
COM4
COM5
COM6
COM7

V1
COM0-S0
Segment is on.

0V
−V1
V1

COM1-S1
Segment is off.

0V
−V1

Figure 15-18. Example 8-Mux, 1/3 Bias Low-Power Waveforms (LCDLP = 1)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

411

LCD_E Registers

www.ti.com

15.3 LCD_E Registers
The LCD_E controller registers are listed in Table 15-6 to Table 15-9. The LCD memory and blinking
memory registers can also be accessed as word.
The number of available memory registers on a given device depends on the number of available
segment pins (see the device-specific data sheet).
Table 15-6. LCD_E Registers
Offset

Acronym

Register Name

Type

Reset

Section

000h

LCDCTL0

LCD_E control register 0

Read/write

3800h

Section 15.3.1

002h

LCDCTL1

LCD_E control register 1

Read/write

0000h

Section 15.3.2

004h

LCDBLKCTL

LCD_E blinking control register

Read/write

0000h

Section 15.3.3

006h

LCDMEMCTL

LCD_E memory control register

Read/write

0000h

Section 15.3.4

008h

LCDVCTL

LCD_E voltage control register

Read/write

0000h

Section 15.3.5

00Ah

LCDPCTL0

LCD_E port control 0

Read/write

0000h

Section 15.3.6

00Ch

LCDPCTL1

LCD_E port control 1

Read/write

0000h

Section 15.3.7

00Eh

LCDPCTL2

LCD_E port control 2 (=256 segments)

Read/write

0000h

Section 15.3.8

010h

LCDPCTL3

LCD_E port control 3 (384 segments)

Read/write

0000h

Section 15.3.9

012h

Reserved

Read/write

0000h

014h

LCDCSSEL0

LCD_E COM/SEG select register 0

Read/write

0000h

Section 15.3.10

016h

LCDCSSEL1

LCD_E COM/SEG select register 1

Read/write

0000h

Section 15.3.11

018h

LCDCSSEL2

LCD_E COM/SEG select register 2

Read/write

0000h

Section 15.3.12

01Ah

LCDCSSEL3

LCD_E COM/SEG select register 3

Read/write

0000h

Section 15.3.13

Reserved

Read/write

0000h

LCD_E interrupt vector

Read only

0000h

01Ch
01Eh

LCDIV

412 LCD_E Controller

Section 15.3.16

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-7. LCD Memory Registers for Static and 2-Mux to 4-Mux Modes

(1) (2)

Offset

Acronym

Register Name

Type

Reset

020h

LCDM0W

LCD memory 0 Word (S3, S2, S1, S0)

Read/write

Unchanged

020h

LCDM0

LCD memory 0 (S1, S0)

Read/write

Unchanged

021h

LCDM1

LCD memory 1 (S3, S2)

Read/write

Unchanged

LCD2W

LCD memory 2 Word (S7, S6, S5, S4)

Read/write

Unchanged

022h

LCDM2

LCD memory 2 (S5, S4)

Read/write

Unchanged

023h

LCDM3

LCD memory 3 (S7, S6)

Read/write

Unchanged

LCD4W

LCD memory 4 Word (S11, S10, S9, S8)

Read/write

Unchanged

024h

LCDM4

LCD memory 4 (S9, S8)

Read/write

Unchanged

025h

LCDM5

LCD memory 5 (S11, S10)

Read/write

Unchanged

LCDM6W

LCD memory 6 Word (S15, S14, S13, S12)

Read/write

Unchanged

026h

LCDM6

LCD memory 6 (S13, S12)

Read/write

Unchanged

027h

LCDM7

LCD memory 7 (S15, S14)

Read/write

Unchanged

022h

024h

026h

028h

LCDM8W

LCD memory 8 Word (S19, S18, S17, S16)

Read/write

Unchanged

028h

LCDM8

LCD memory 8 (S17, S16)

Read/write

Unchanged

029h

LCDM9

LCD memory 9 (S19, S18)

Read/write

Unchanged

02Ah

LCDM10W

LCD memory 10 Word (S23, S22, S21, S20)

Read/write

Unchanged

02Ah

LCDM10

LCD memory 10 (S21, S20)

Read/write

Unchanged

02Bh

LCDM11

LCD memory 11 (S23, S22)

Read/write

Unchanged

02Ch

LCDM12W

LCD memory 12 Word (S27, S26, S25, S24)

Read/write

Unchanged

02Ch

LCDM12

LCD memory 12 (S25, S24)

Read/write

Unchanged

02Dh

LCDM13

LCD memory 13 (S27, S26)

Read/write

Unchanged

LCDM14W

LCD memory 14 Word (S31, S30, S29, S28)

Read/write

Unchanged

02Eh

LCDM14

LCD memory 14 (S29, S28)

Read/write

Unchanged

02Fh

LCDM15

LCD memory 15 (S31, S30)

Read/write

Unchanged

LCDM16W

LCD memory 16 Word (S35, S34, S33, S32)

Read/write

Unchanged

030h

LCDM16

LCD memory 16 (S33, S32)

Read/write

Unchanged

031h

LCDM17

LCD memory 17 (S35, S34)

Read/write

Unchanged

LCDM18W

LCD memory 18 Word (S39, S38, S37, S36)

Read/write

Unchanged

032h

LCDM18

LCD memory 18 (S37, S36)

Read/write

Unchanged

033h

LCDM19

LCD memory 19 (S39, S38)

Read/write

Unchanged

LCDM20W

LCD memory 20 Word (S43, S42, S41, S40)

Read/write

Unchanged

034h

LCDM20

LCD memory 20 (S41, S40)

Read/write

Unchanged

035h

LCDM21

LCD memory 21 (S43, S42)

Read/write

Unchanged

LCDM22W

LCD memory 22 Word (S47, S46, S45, S44)

Read/write

Unchanged

036h

LCDM22

LCD memory 22 (S45, S44)

Read/write

Unchanged

037h

LCDM23

LCD memory 23 (S47, S46)

Read/write

Unchanged

LCDM24W

LCD memory 24 Word (S51, S50, S49, S48)

Read/write

Unchanged

038h

LCDM24

LCD memory 24 (S49, S48)

Read/write

Unchanged

039h

LCDM25

LCD memory 25 (S51, S50)

Read/write

Unchanged

LCDM26W

LCD memory 26 Word (S55, S54, S53, S52)

Read/write

Unchanged

03Ah

LCDM26

LCD memory 26 (S53, S52)

Read/write

Unchanged

03Bh

LCDM27

LCD memory 27 (S55, S54)

Read/write

Unchanged

02Eh

030h

032h

034h

036h

038h

03Ah

03Ch

(1)
(2)

LCDM28W

LCD memory 28 Word (S59, S58, S57, S56)

Read/write

Unchanged

03Ch

LCDM28

LCD memory 28 (S57, S56)

Read/write

Unchanged

03Dh

LCDM29

LCD memory 29 (S59, S58)

Read/write

Unchanged

The LCD memory registers can also be accessed as word.
The number of available memory registers on a given device depends on the amount of available segment pins. See the device-specific
data sheet.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

413

LCD_E Registers

www.ti.com

Table 15-7. LCD Memory Registers for Static and 2-Mux to 4-Mux Modes (1)

(2)

(continued)

Offset

Acronym

Register Name

Type

Reset

03Eh

LCDM30W

LCD memory 30 Word (S63, S62, S61, S60)

Read/write

Unchanged

03Eh

LCDM30

LCD memory 30 (S61, S60)

Read/write

Unchanged

03Fh

LCDM31

LCD memory 31 (S63, S62)

Read/write

Unchanged

414 LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-8. LCD Blinking Memory Registers for Static and 2-Mux to 4-Mux Modes (1) (2)
Offset

Acronym

Register Name

Type

Reset

040h

LCDBM0W

LCD blinking memory 0 Word

Read/write

Unchanged

040h

LCDBM0

LCD blinking memory 0

Read/write

Unchanged

041h

LCDBM1

LCD blinking memory 1

Read/write

Unchanged

LCDBM2W

LCD blinking memory 2 Word

Read/write

Unchanged

042h

LCDBM2

LCD blinking memory 2

Read/write

Unchanged

043h

LCDBM3

LCD blinking memory 3

Read/write

Unchanged

LCDBM4W

LCD blinking memory 4 Word

Read/write

Unchanged

044h

LCDBM4

LCD blinking memory 4

Read/write

Unchanged

045h

LCDBM5

LCD blinking memory 5

Read/write

Unchanged

LCDBM6W

LCD blinking memory 6 Word

Read/write

Unchanged

046h

LCDBM6

LCD blinking memory 6

Read/write

Unchanged

047h

LCDBM7

LCD blinking memory 7

Read/write

Unchanged

042h

044h

046h

048h

LCDBM8W

LCD blinking memory 8 Word

Read/write

Unchanged

048h

LCDBM8

LCD blinking memory 8

Read/write

Unchanged

049h

LCDBM9

LCD blinking memory 9

Read/write

Unchanged

04Ah

LCDBM10W

LCD blinking memory 10 Word

Read/write

Unchanged

04Ah

LCDBM10

LCD blinking memory 10

Read/write

Unchanged

04Bh

LCDBM11

LCD blinking memory 11

Read/write

Unchanged

04Ch

LCDBM12W

LCD blinking memory 12 Word

Read/write

Unchanged

04Ch

LCDBM12

LCD blinking memory 12

Read/write

Unchanged

04Dh

LCDBM13

LCD blinking memory 13

Read/write

Unchanged

LCDBM14W

LCD blinking memory 14 Word

Read/write

Unchanged

04Eh

LCDBM14

LCD blinking memory 14

Read/write

Unchanged

04Fh

LCDBM15

LCD blinking memory 15

Read/write

Unchanged

LCDBM16W

LCD blinking memory 16 Word

Read/write

Unchanged

050h

LCDBM16

LCD blinking memory 16

Read/write

Unchanged

051h

LCDBM17

LCD blinking memory 17

Read/write

Unchanged

LCDBM18W

LCD blinking memory 18 Word

Read/write

Unchanged

052h

LCDBM18

LCD blinking memory 18

Read/write

Unchanged

053h

LCDBM19

LCD blinking memory 19

Read/write

Unchanged

LCDBM20W

LCD blinking memory 20 Wrod

Read/write

Unchanged

054h

LCDBM20

LCD blinking memory 20

Read/write

Unchanged

055h

LCDBM21

LCD blinking memory 21

Read/write

Unchanged

LCDBM22W

LCD blinking memory 22 Word

Read/write

Unchanged

056h

LCDBM22

LCD blinking memory 22

Read/write

Unchanged

057h

LCDBM23

LCD blinking memory 23

Read/write

Unchanged

LCDBM24W

LCD blinking memory 24 Word

Read/write

Unchanged

058h

LCDBM24

LCD blinking memory 24

Read/write

Unchanged

059h

LCDBM25

LCD blinking memory 25

Read/write

Unchanged

LCDBM26W

LCD blinking memory 26 Word

Read/write

Unchanged

05Ah

LCDBM26

LCD blinking memory 26

Read/write

Unchanged

05Bh

LCDBM27

LCD blinking memory 27

Read/write

Unchanged

04Eh

050h

052h

054h

056h

058h

05Ah

05Ch

(1)
(2)

LCDBM28W

LCD blinking memory 28 Word

Read/write

Unchanged

05Ch

LCDBM28

LCD blinking memory 28

Read/write

Unchanged

05Dh

LCDBM29

LCD blinking memory 29

Read/write

Unchanged

The LCD blinking memory registers can also be accessed as word.
The number of available memory registers on a given device depends on the amount of available segment pins (see the device-specific
data sheet).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

415

LCD_E Registers

www.ti.com

Table 15-8. LCD Blinking Memory Registers for Static and 2-Mux to 4-Mux Modes (1) (2) (continued)
Offset

Acronym

Register Name

Type

Reset

05Eh

LCDBM30W

LCD blinking memory 30 Word

Read/write

Unchanged

05Eh

LCDBM30

LCD blinking memory 30

Read/write

Unchanged

05Fh

LCDBM31

LCD blinking memory 31

Read/write

Unchanged

416 LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-9. LCD Memory Registers for 5-Mux to 8-Mux Modes

(1) (2)

Offset

Acronym

Register Name

Type

Reset

020h

LCDM0W

LCD memory 0 Word (S1, S0)

Read/write

Unchanged

020h

LCDM0

LCD memory 0 (S0)

Read/write

Unchanged

021h

LCDM1

LCD memory 1 (S1)

Read/write

Unchanged

LCDM2W

LCD memory 2 Word (S3, S2)

Read/write

Unchanged

022h

LCDM2

LCD memory 2 (S2)

Read/write

Unchanged

023h

LCDM3

LCD memory 3 (S3)

Read/write

Unchanged

LCDM4W

LCD memory 4 Word (S5, S4)

Read/write

Unchanged

024h

LCDM4

LCD memory 4 (S4)

Read/write

Unchanged

025h

LCDM5

LCD memory 5 (S5)

Read/write

Unchanged

LCDM6W

LCD memory 6 Word (S7, S6)

Read/write

Unchanged

026h

LCDM6

LCD memory 6 (S6)

Read/write

Unchanged

027h

LCDM7

LCD memory 7 (S7)

Read/write

Unchanged

022h

024h

026h

028h

LCDM8W

LCD memory 8 Word (S9, S8)

Read/write

Unchanged

028h

LCDM8

LCD memory 8 (S8)

Read/write

Unchanged

029h

LCDM9

LCD memory 9 (S9)

Read/write

Unchanged

02Ah

LCDM10W

LCD memory 10 Word (S11, S10)

Read/write

Unchanged

02Ah

LCDM10

LCD memory 10 (S10)

Read/write

Unchanged

02Bh

LCDM11

LCD memory 11 (S11)

Read/write

Unchanged

02Ch

LCDM12W

LCD memory 12 Word (S13, S12)

Read/write

Unchanged

02Ch

LCDM12

LCD memory 12 (S12)

Read/write

Unchanged

02Dh

LCDM13

LCD memory 13 (S13)

Read/write

Unchanged

LCDM14W

LCD memory 14 Word (S15, S14)

Read/write

Unchanged

02Eh

LCDM14

LCD memory 14 (S14)

Read/write

Unchanged

02Fh

LCDM15

LCD memory 15 (S15)

Read/write

Unchanged

LCDM16W

LCD memory 16 Word (S17, S16)

Read/write

Unchanged

030h

LCDM16

LCD memory 16 (S16)

Read/write

Unchanged

031h

LCDM17

LCD memory 17 (S17)

Read/write

Unchanged

LCDM18W

LCD memory 18 Word (S19, S18)

Read/write

Unchanged

032h

LCDM18

LCD memory 18 (S18)

Read/write

Unchanged

033h

LCDM19

LCD memory 19 (S19)

Read/write

Unchanged

LCDM20W

LCD memory 20 Word (S21, S20)

Read/write

Unchanged

034h

LCDM20

LCD memory 20 (S20)

Read/write

Unchanged

035h

LCDM21

LCD memory 21 (S21)

Read/write

Unchanged

LCDM22W

LCD memory 22 Word (S23, S22)

Read/write

Unchanged

036h

LCDM22

LCD memory 22 (S22)

Read/write

Unchanged

037h

LCDM23

LCD memory 23 (S23)

Read/write

Unchanged

LCDM24W

LCD memory 24 Word (S25, S24)

Read/write

Unchanged

038h

LCDM24

LCD memory 24 (S24)

Read/write

Unchanged

039h

LCDM25

LCD memory 25 (S25)

Read/write

Unchanged

LCDM26W

LCD memory 26 Word (S27, S26)

Read/write

Unchanged

03Ah

LCDM26

LCD memory 26 (S26)

Read/write

Unchanged

03Bh

LCDM27

LCD memory 27 (S27)

Read/write

Unchanged

02Eh

030h

032h

034h

036h

038h

03Ah

03Ch

(1)
(2)

LCDM28W

LCD memory 28 Word (S29, S28)

Read/write

Unchanged

03Ch

LCDM28

LCD memory 28 (S28)

Read/write

Unchanged

03Dh

LCDM29

LCD memory 29 (S29)

Read/write

Unchanged

The LCD memory registers can also be accessed as word.
The number of available memory registers on a given device depends on the number of available segment pins (see the device-specific
data sheet).

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

417

LCD_E Registers

www.ti.com

Table 15-9. LCD Memory Registers for 5-Mux to 8-Mux Modes (1) (2) (continued)
Offset

Acronym

Register Name

Type

Reset

03Eh

LCDM30W

LCD memory 30 Word (S31, S30)

Read/write

Unchanged

03Eh

LCDM30

LCD memory 30 (S30)

Read/write

Unchanged

03Fh

LCDM31

LCD memory 31 (S31)

Read/write

Unchanged

LCDM32W

LCD memory 32 Word (S33, S32)

Read/write

Unchanged

040h

LCDM32

LCD memory 32 (S32)

Read/write

Unchanged

041h

LCDM33

LCD memory 33 (S33)

Read/write

Unchanged

LCDM34W

LCD memory 34 Word (S35, S34)

Read/write

Unchanged

042h

LCDM34

LCD memory 34 (S34)

Read/write

Unchanged

043h

LCDM35

LCD memory 35 (S35)

Read/write

Unchanged

LCDM36W

LCD memory 36 Word (S37, S36)

Read/write

Unchanged

044h

LCDM36

LCD memory 36 (S36)

Read/write

Unchanged

045h

LCDM37

LCD memory 37 (S37)

Read/write

Unchanged

LCDM38W

LCD memory 38 Word (S39, S38)

Read/write

Unchanged

046h

LCDM38

LCD memory 38 (S38)

Read/write

Unchanged

047h

LCDM39

LCD memory 39 (S39)

Read/write

Unchanged

040h

042h

044h

046h

048h

LCDM40W

LCD memory 40 Word (S41, S40)

Read/write

Unchanged

048h

LCDM40

LCD memory 40 (S40)

Read/write

Unchanged

049h

LCDM41

LCD memory 41 (S41)

Read/write

Unchanged

04Ah

LCDM42W

LCD memory 42 Word (S43, S42)

Read/write

Unchanged

04Ah

LCDM42

LCD memory 42 (S42)

Read/write

Unchanged

04Bh

LCDM43

LCD memory 43 (S43)

Read/write

Unchanged

04Ch

LCDM44W

LCD memory 44 Word (S45, S44)

Read/write

Unchanged

04Ch

LCDM44

LCD memory 44 (S44)

Read/write

Unchanged

04Dh

LCDM45

LCD memory 45 (S45)

Read/write

Unchanged

LCDM46W

LCD memory 46 Word (S47, S46)

Read/write

Unchanged

04Eh

LCDM46

LCD memory 46 (S46)

Read/write

Unchanged

04Fh

LCDM47

LCD memory 47 (S47)

Read/write

Unchanged

LCDM48W

LCD memory 48 Word (S49, S48)

Read/write

Unchanged

050h

LCDM48

LCD memory 48 (S48)

Read/write

Unchanged

051h

LCDM49

LCD memory 49 (S49)

Read/write

Unchanged

LCDM50W

LCD memory 50 Word (S51, S50)

Read/write

Unchanged

052h

LCDM50

LCD memory 50 (S50)

Read/write

Unchanged

053h

LCDM51

LCD memory 51 (S51)

Read/write

Unchanged

LCDM52W

LCD memory 52 Word (S53, S52)

Read/write

Unchanged

054h

LCDM52

LCD memory 52 (S52)

Read/write

Unchanged

055h

LCDM53

LCD memory 53 (S53)

Read/write

Unchanged

LCDM54W

LCD memory 54 Word (S55, S54)

Read/write

Unchanged

056h

LCDM54

LCD memory 54 (S54)

Read/write

Unchanged

057h

LCDM55

LCD memory 55 (S55)

Read/write

Unchanged

LCDM56W

LCD memory 56 Word (S57, S56)

Read/write

Unchanged

058h

LCDM56

LCD memory 56 (S56)

Read/write

Unchanged

059h

LCDM57

LCD memory 57 (S57)

Read/write

Unchanged

LCDM58W

LCD memory 58 Word (S59, S58)

Read/write

Unchanged

05Ah

LCDM58

LCD memory 58 (S58)

Read/write

Unchanged

05Bh

LCDM59

LCD memory 59 (S59)

Read/write

Unchanged

LCDM60W

LCD memory 60 Word (S61, S60)

Read/write

Unchanged

LCDM60

LCD memory 60 (S60)

Read/write

Unchanged

04Eh

050h

052h

054h

056h

058h

05Ah

05Ch
05Ch

418

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-9. LCD Memory Registers for 5-Mux to 8-Mux Modes (1) (2) (continued)
Offset
05Dh
05Eh

Acronym

Register Name

Type

Reset

LCDM61

LCD memory 61 (S61)

Read/write

Unchanged

LCDM62W

LCD memory 62 Word (S63, S62)

Read/write

Unchanged

05Eh

LCDM62

LCD memory 62 (S62)

Read/write

Unchanged

05Fh

LCDM63

LCD memory 63 (S63)

Read/write

Unchanged

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

419

LCD_E Registers

www.ti.com

15.3.1 LCDCTL0 Register
LCD_E Control Register 0
Figure 15-19. LCDCTL0 Register
15

14

rw-{0}

rw-{0}

13
LCDDIVx
rw-{1}

6

5

rw-{0}

rw-{0}

7
LCDSSEL
rw-{0}

12

11

10

rw-{1}

rw-{1}

4
LCDMXx
rw-{0}

3
rw-{0}

r-{0}

9
Reserved
r-{0}

8
r-{0}

2
LCDSON
rw-{0}

1
LCDLP
rw-{0}

0
LCDON
rw-{0}

Table 15-10. LCDCTL0 Register Description
Bit

Field

Type

Reset

Description

15-11

LCDDIVx

RW

00111b

LCD frequency divider. Together with LCDMXx, the LCD frequency fLCD is
calculated as fLCD = fSOURCE / ((LCDDIVx + 1) × Value[LCDMXx]). Change only
while LCDON = 0.
00000b = Divide by 1
00001b = Divide by 2
⋮
11110b = Divide by 31
11111b = Divide by 32

10-8

Reserved

R

0h

Reserved

7-6

LCDSSEL

RW

0h

Clock source fSOURCE select for LCD and blinking frequency. Change only while
LCDON = 0.
00b = XT1CLK
01b = ACLK (30 kHz to 40 kHz)
10b = VLOCLK
11b = Reserved

5-3

LCDMXx

RW

0h

LCD mux rate. These bits select the LCD mode. Change only while LCDON = 0.
000b = Static
001b = 2-mux
010b = 3-mux
011b = 4-mux
100b = 5-mux
101b = 6-mux
110b = 7-mux
111b = 8-mux

2

LCDSON

RW

0h

LCD segments on. This bit supports flashing LCD applications by turning off all
segment lines, while leaving the LCD timing generator and R33 enabled.
0b = All LCD segments are off.
1b = All LCD segments are enabled and on or off according to their
corresponding memory location.

1

LCDLP

RW

0h

LCD low-power waveform
0b = Standard LCD waveforms on segment and common lines selected.
1b = Low-power LCD waveforms on segment and common lines selected.

0

LCDON

RW

0h

LCD on. This bit turns the LCD_E module on or off.
0b = LCD_E module off
1b = LCD_E module on

420

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

15.3.2 LCDCTL1 Register
LCD_E Control Register 1
Figure 15-20. LCDCTL1 Register
15

14

13
Reserved
r0

12

11

r0

r0

r0

r0

7

6

5
Reserved

4

3

r0

r0

r0

r0

r0

10
LCDBLKONIE
rw-{0}

9
LCDBLKOFFIE
rw-{0}

2
1
LCDBLKONIFG LCDBLKOFFIF
G
rw-{0}
rw-{0}

8
LCDFRMIE
rw-{0}
0
LCDFRMIFG
rw-{0}

Table 15-11. LCDCTL1 Register Description
Bit

Field

Type

Reset

Description

15-11

Reserved

R

0h

Reserved

10

LCDBLKONIE

RW

0h

LCD blinking interrupt enable, segments switched on
0b = Interrupt disabled
1b = Interrupt enabled

9

LCDBLKOFFIE

RW

0h

LCD blinking interrupt enable, segments switched off
0b = Interrupt disabled
1b = Interrupt enabled

8

LCDFRMIE

RW

0h

LCD frame interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

7-3

Reserved

R

0h

Reserved

2

LCDBLKONIFG

RW

0h

LCD blinking interrupt flag, set at the rising edge of BLKCLK. Automatically
cleared when data is written into a memory register.
0b = No interrupt pending
1b = Interrupt pending

1

LCDBLKOFFIFG

RW

0h

LCD blinking interrupt flag, set at the falling edge of BLKCLK. Automatically
cleared when data is written into a memory register.
0b = No interrupt pending
1b = Interrupt pending

0

LCDFRMIFG

RW

0h

LCD frame interrupt flag. Automatically cleared when data is written into a
memory register.
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

421

LCD_E Registers

www.ti.com

15.3.3 LCDBLKCTL Register
LCD_E Blink Control Register
Figure 15-21. LCDBLKCTL Register
15

14

13

12

11

10

9

8
r0

Reserved
r0

r0

r0

r0

r0

r0

r0

7

6
Reserved
r0

5

4

2

1

r0

rw-{0}

3
LCDBLKPREx
rw-{0}

r0

rw-{0}

0
LCDBLKMODx
rw-{0}
rw-{0}

Table 15-12. LCDBLKCTL Register Description
Bit

Field

Type

Reset

15-5

Reserved

R

0h

4-2

LCDBLKPREx

RW

0h

Clock prescaler for blinking frequency. Together with LCDMXx, the blinking
frequency fBLINK is calculated as fBLINK = fLCD / ((LCDMXx + 1) × 2(LCDBLKPREx + 2)).
Settings for LCDMXx and LCDBLKPREx should only be changed while
LCDBLKMODx = 00.
000b = Divide by 4
001b = Divide by 8
010b = Divide by 16
011b = Divide by 32
100b = Divide by 64
101b = Divide by 128
110b = Divide by 256
111b = Divide by 512

1-0

LCDBLKMODx

RW

0h

Blinking mode
00b = Blinking disabled.
01b = Blinking of individual segments as enabled in blinking memory register
LCDBMx. In mux mode >5 blinking is disabled.
10b = Blinking of all segments
11b = Switching between display contents as stored in LCDMx and LCDBMx
memory registers. In mux mode >5 blinking is disabled.

422

LCD_E Controller

Description

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

15.3.4 LCDMEMCTL Register
LCD_E Memory Control Register
Figure 15-22. LCDMEMCTL Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6

4

3

r0

r0

5
Reserved
r0

r0

r0

2
LCDCLRBM
rw-{0}

1
LCDCLRM
rw-{0}

0
LCDDISP
rw-{0}

Table 15-13. LCDMEMCTL Register Description
Bit

Field

Type

Reset

Description

15-3

Reserved

R

0h

Reserved

2

LCDCLRBM

RW

0h

Clear LCD blinking memory
Clears all blinking memory registers LCDBMx. The bit is automatically reset
when the blinking memory is cleared.
Setting this bit in 5-mux mode and above has no effect. It is immediately reset
again.
0b = Contents of blinking memory registers LCDBMx remain unchanged
1b = Clear content of all blinking memory registers LCDBMx

1

LCDCLRM

RW

0h

Clear LCD memory
Clears all LCD memory registers LCDMx. The bit is automatically reset when the
LCD memory is cleared.
0b = Contents of LCD memory registers LCDMx remain unchanged
1b = Clear content of all LCD memory registers LCDMx

0

LCDDISP

RW

0h

Select LCD memory registers for display
When LCDBLKMODx = 00, LCDDISP can be set by software.
The bit is cleared in LCDBLKMODx = 01 and LCDBLKMODx = 10 or if a mux
mode ≥5 is selected and cannot be changed by software.
When LCDBLKMODx = 11, this bit reflects the currently displayed memory but
cannot be changed by software. When returning to LCDBLKMODx = 00 the bit is
cleared.
0b = Display content of LCD memory registers LCDMx
1b = Display content of LCD blinking memory registers LCDBMx

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

423

LCD_E Registers

www.ti.com

15.3.5 LCDVCTL Register
LCD_E Voltage Control Register
Figure 15-23. LCDVCTL Register
15

14

13

12

LCDCPFSELx
rw-{0}
rw-{0}

rw-{0}
7
LCDCPEN
rw-{0}

6
LCDREFEN
rw-{0}

11

10

9

8

rw-{0}

rw-{0}

rw-{0}

2

1

r0

r0

0
LCDREFMODE
rw-{0}

VLCDx

5
LCDSELVDD
rw-{0}

rw-{0}

rw-{0}

4

3
Reserved

r0

r0

Table 15-14. LCDVCTL Register Description
Bit

Field

Type

Reset

Description

15-12

LCDCPFSELx

RW

0h

Charge pump frequency selection. Clock source can be XT1, ACLK, VLO (4-bit,
if fSOURCE = fACLK = 32.768 kHz )
0000b = 32.768 kHz / 1 / 8 = 4.096 kHz
0001b = 32.768 kHz / 2 / 8 = 2.048 kHz
0010b = 32.768 kHz / 3 / 8 = 1.365 kHz
0011b = 32.768 kHz / 4 / 8 = 1.024 kHz
0100b = 32.768 kHz / 5 / 8 = 819 Hz
0101b = 32.768 kHz / 6 / 8 = 682 Hz
0110b = 32.768 kHz / 7 / 8 = 585 Hz
0111b = 32.768 kHz / 8 / 8 = 512 Hz
1000b = 32.768 kHz / 9 / 8 = 455 Hz
1001b = 32.768 kHz / 10 / 8 = 409 Hz
1010b = 32.768 kHz / 11 / 8 = 372 Hz
1011b = 32.768 kHz / 12 / 8 = 341 Hz
1100b = 32.768 kHz / 13 / 8 = 315 Hz
1101b = 32.768 kHz / 14 / 8 = 292 Hz
1110b = 32.768 kHz / 15 / 8 = 273 Hz
1111b = 32.768 kHz / 16 / 8 = 256 Hz

11-8

VLCDx

RW

0h

Internal reference voltage select on R13. Only valuable when LCDCPEN = 1 and
LCDREFEN = 1.
0000b = 2.60 V
0001b = 2.66 V
0010b = 2.72 V
0011b = 2.78 V
0100b = 2.84 V
0101b = 2.90 V
0110b = 2.96 V
0111b = 3.02 V
1000b = 3.08 V
1001b = 3.14 V
1010b = 3.20 V
1011b = 3.26 V
1100b = 3.32 V
1101b = 3.38 V
1110b = 3.44 V
1111b = 3.50 V

7

LCDCPEN

RW

0h

Charge pump enable
0b = Charge pump disabled (1)
1b = Charge pump enabled when VLCD is generated internally (VLCDEXT = 0)
and VLCDx > 0 or VLCDREFx > 0.

(1)

424

To use LCD, an external resistor divider must be connected to R13, R23, and R33.
LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-14. LCDVCTL Register Description (continued)
Bit

Field

Type

Reset

Description

6

LCDREFEN

RW

0h

Internal reference voltage enable on R13
0b = Internal reference voltage disabled
1b = Internal reference voltage enabled

5

LCDSELVDD

RW

0h

Selects if R33 is supplied either from VCC internally or from charge pump
0b = R33 connected to external supply
1b = R33 internally connected to VCC

4-1

Reserved

R

0h

Reserved

0

LCDREFMODE

RW

0h

Selects whether R13 voltage is switched or in static mode
0b = Static mode
1b = Switched mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

425

LCD_E Registers

www.ti.com

15.3.6 LCDPCTL0 Register
LCD_E Port Control Register 0
Settings for LCDSx should only be changed while LCDON = 0.
Figure 15-24. LCDPCTL0 Register
15
LCDS15
rw-{0}

14
LCDS14
rw-{0}

13
LCDS13
rw-{0}

12
LCDS12
rw-{0}

11
LCDS11
rw-{0}

10
LCDS10
rw-{0}

9
LCDS9
rw-{0}

8
LCDS8
rw-{0}

7
LCDS7
rw-{0}

6
LCDS6
rw-{0}

5
LCDS5
rw-{0}

4
LCDS4
rw-{0}

3
LCDS3
rw-{0}

2
LCDS2
rw-{0}

1
LCDS1
rw-{0}

0
LCDS0
rw-{0}

Table 15-15. LCDPCTL0 Register Description
Bit

Field

Type

Reset

Description

15

LCDS15

RW

0h

LCD pin 15 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

14

LCDS14

RW

0h

LCD pin 14 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

13

LCDS13

RW

0h

LCD pin 13 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

12

LCDS12

RW

0h

LCD pin 12 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

11

LCDS11

RW

0h

LCD pin 11 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

10

LCDS10

RW

0h

LCD pin 10 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

9

LCDS9

RW

0h

LCD pin 9 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

8

LCDS8

RW

0h

LCD pin 8 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

7

LCDS7

RW

0h

LCD pin 7 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

6

LCDS6

RW

0h

LCD pin 6 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

426

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-15. LCDPCTL0 Register Description (continued)
Bit

Field

Type

Reset

Description

5

LCDS5

RW

0h

LCD pin 5 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

4

LCDS4

RW

0h

LCD pin 4 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

3

LCDS3

RW

0h

LCD pin 3 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

2

LCDS2

RW

0h

LCD pin 2 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

1

LCDS1

RW

0h

LCD pin 1 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

0

LCDS0

RW

0h

LCD pin 0 enable. This bit affects only pins with multiplexed functions. Dedicated
LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

427

LCD_E Registers

www.ti.com

15.3.7 LCDPCTL1 Register
LCD_E Port Control Register 1
Settings for LCDSx should only be changed while LCDON = 0.
Figure 15-25. LCDPCTL1 Register
15
LCDS31
rw-{0}

14
LCDS30
rw-{0}

13
LCDS29
rw-{0}

12
LCDS28
rw-{0}

11
LCDS27
rw-{0}

10
LCDS26
rw-{0}

9
LCDS25
rw-{0}

8
LCDS24
rw-{0}

7
LCDS23
rw-{0}

6
LCDS22
rw-{0}

5
LCDS21
rw-{0}

4
LCDS20
rw-{0}

3
LCDS19
rw-{0}

2
LCDS18
rw-{0}

1
LCDS17
rw-{0}

0
LCDS16
rw-{0}

Table 15-16. LCDPCTL1 Register Description
Bit

Field

Type

Reset

Description

15

LCDS31

RW

0h

LCD pin 31 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

14

LCDS30

RW

0h

LCD pin 30 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

13

LCDS29

RW

0h

LCD pin 29 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

12

LCDS28

RW

0h

LCD pin 28 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

11

LCDS27

RW

0h

LCD pin 27 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

10

LCDS26

RW

0h

LCD pin 26 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

9

LCDS25

RW

0h

LCD pin 25 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

8

LCDS24

RW

0h

LCD pin 24 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

7

LCDS23

RW

0h

LCD segment line 23 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

6

LCDS22

RW

0h

LCD segment line 22 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

428

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-16. LCDPCTL1 Register Description (continued)
Bit

Field

Type

Reset

Description

5

LCDS21

RW

0h

LCD segment line 21 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

4

LCDS20

RW

0h

LCD segment line 20 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

3

LCDS19

RW

0h

LCD segment line 19 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

2

LCDS18

RW

0h

LCD segment line 18 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

1

LCDS17

RW

0h

LCD segment line 17 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

0

LCDS16

RW

0h

LCD segment line 16 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

429

LCD_E Registers

www.ti.com

15.3.8 LCDPCTL2 Register
LCD_E Port Control Register 2 (= 256 Segments)
Settings for LCDSx should only be changed while LCDON = 0.
Figure 15-26. LCDPCTL2 Register
15
LCDS47
rw-{0}

14
LCDS46
rw-{0}

13
LCDS45
rw-{0}

12
LCDS44
rw-{0}

11
LCDS43
rw-{0}

10
LCDS42
rw-{0}

9
LCDS41
rw-{0}

8
LCDS40
rw-{0}

7
LCDS39
rw-{0}

6
LCDS38
rw-{0}

5
LCDS37
rw-{0}

4
LCDS36
rw-{0}

3
LCDS35
rw-{0}

2
LCDS34
rw-{0}

1
LCDS33
rw-{0}

0
LCDS32
rw-{0}

Table 15-17. LCDPCTL2 Register Description
Bit

Field

Type

Reset

Description

15

LCDS47

RW

0h

LCD pin 47 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

14

LCDS46

RW

0h

LCD pin 46 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

13

LCDS45

RW

0h

LCD pin 45 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

12

LCDS44

RW

0h

LCD pin 44 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

11

LCDS43

RW

0h

LCD pin 43 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

10

LCDS42

RW

0h

LCD pin 42 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

9

LCDS41

RW

0h

LCD pin 41 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

8

LCDS40

RW

0h

LCD pin 40 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

7

LCDS39

RW

0h

LCD pin 39 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

6

LCDS38

RW

0h

LCD pin 38 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

430

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-17. LCDPCTL2 Register Description (continued)
Bit

Field

Type

Reset

Description

5

LCDS37

RW

0h

LCD pin 37 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

4

LCDS36

RW

0h

LCD pin 36 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

3

LCDS35

RW

0h

LCD pin 35 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

2

LCDS34

RW

0h

LCD pin 34 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

1

LCDS33

RW

0h

LCD pin 33 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

0

LCDS32

RW

0h

LCD pin 32 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

431

LCD_E Registers

www.ti.com

15.3.9 LCDPCTL3 Register
LCD_E Port Control Register 3 (384 Segments, COMs Shared With Segments)
Settings for LCDSx should only be changed while LCDON = 0.
Figure 15-27. LCDPCTL3 Register
15
LCDS63
rw-{0}

14
LCDS62
rw-{0}

13
LCDS61
rw-{0}

12
LCDS60
rw-{0}

11
LCDS59
rw-{0}

10
LCDS58
rw-{0}

9
LCDS57
rw-{0}

8
LCDS56
rw-{0}

7
LCDS55
rw-{0}

6
LCDS54
rw-{0}

5
LCDS53
rw-{0}

4
LCDS52
rw-{0}

3
LCDS51
rw-{0}

2
LCDS50
rw-{0}

1
LCDS49
rw-{0}

0
LCDS48
rw-{0}

Table 15-18. LCDPCTL3 Register Description
Bit

Field

Type

Reset

Description

15

LCDS63

RW

0h

LCD pin 63 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

14

LCDS62

RW

0h

LCD pin 62 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

13

LCDS61

RW

0h

LCD pin 61 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

12

LCDS60

RW

0h

LCD pin 60 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

11

LCDS59

RW

0h

LCD pin 59 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

10

LCDS58

RW

0h

LCD pin 58 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

9

LCDS57

RW

0h

LCD pin 57 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

8

LCDS56

RW

0h

LCD pin 56 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

7

LCDS55

RW

0h

LCD pin 55 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

6

LCDS54

RW

0h

LCD pin 54 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

432

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-18. LCDPCTL3 Register Description (continued)
Bit

Field

Type

Reset

Description

5

LCDS53

RW

0h

LCD pin 53 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

4

LCDS52

RW

0h

LCD pin 52 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

3

LCDS51

RW

0h

LCD pin 51 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

2

LCDS50

RW

0h

LCD pin 50 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

1

LCDS49

RW

0h

LCD pin 49 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

0

LCDS48

RW

0h

LCD pin 48 enable. This bit affects only pins with multiplexed functions.
Dedicated LCD pins are always LCD function.
0b = Multiplexed pins are port functions.
1b = Pins are LCD functions.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

433

LCD_E Registers

www.ti.com

15.3.10 LCDCSSEL0 Register
LCD_E COM/SEG Select Register 0
Figure 15-28. LCDCSSEL0 Register
15
LCDCSS15
rw-{0}

14
LCDCSS14
rw-{0}

13
LCDCSS13
rw-{0}

12
LCDCSS12
rw-{0}

11
LCDCSS11
rw-{0}

10
LCDCSS10
rw-{0}

9
LCDCSS9
rw-{0}

8
LCDCSS8
rw-{0}

7
LCDCSS7
rw-{0}

6
LCDCSS6
rw-{0}

5
LCDCSS5
rw-{0}

4
LCDCSS4
rw-{0}

3
LCDCSS3
rw-{0}

2
LCDCSS2
rw-{0}

1
LCDCSS1
rw-{0}

0
LCDCSS0
rw-{0}

Table 15-19. LCDCSSEL0 Register Description
Bit

Field

Type

Reset

Description

15

LCDCSS15

RW

0h

Selects pin L15 as either common or segment line.
0b = Segment line
1b = Common line

14

LCDCSS14

RW

0h

Selects pin L14 as either common or segment line.
0b = Segment line
1b = Common line

13

LCDCSS13

RW

0h

Selects pin L13 as either common or segment line.
0b = Segment line
1b = Common line

12

LCDCSS12

RW

0h

Selects pin L12 as either common or segment line.
0b = Segment line
1b = Common line

11

LCDCSS11

RW

0h

Selects pin L11 as either common or segment line.
0b = Segment line
1b = Common line

10

LCDCSS10

RW

0h

Selects pin L10 as either common or segment line.
0b = Segment line
1b = Common line

9

LCDCSS9

RW

0h

Selects pin L9 as either common or segment line.
0b = Segment line
1b = Common line

8

LCDCSS8

RW

0h

Selects pin L8 as either common or segment line.
0b = Segment line
1b = Common line

7

LCDCSS7

RW

0h

Selects pin L7 as either common or segment line.
0b = Segment line
1b = Common line

6

LCDCSS6

RW

0h

Selects pin L6 as either common or segment line.
0b = Segment line
1b = Common line

5

LCDCSS5

RW

0h

Selects pin L5 as either common or segment line.
0b = Segment line
1b = Common line

4

LCDCSS4

RW

0h

Selects pin L4 as either common or segment line.
0b = Segment line
1b = Common line

3

LCDCSS3

RW

0h

Selects pin L3 as either common or segment line.
0b = Segment line
1b = Common line

434

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-19. LCDCSSEL0 Register Description (continued)
Bit

Field

Type

Reset

Description

2

LCDCSS2

RW

0h

Selects pin L2 as either common or segment line.
0b = Segment line
1b = Common line

1

LCDCSS1

RW

0h

Selects pin L1 as either common or segment line.
0b = Segment line
1b = Common line

0

LCDCSS0

RW

0h

Selects pin L0 as either common or segment line.
0b = Segment line
1b = Common line

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

435

LCD_E Registers

www.ti.com

15.3.11 LCDCSSEL1 Register
LCD_E COM/SEG Select Register 1
Figure 15-29. LCDCSSEL1 Register
15
LCDCSS31
rw-{0}

14
LCDCSS30
rw-{0}

13
LCDCSS29
rw-{0}

12
LCDCSS28
rw-{0}

11
LCDCSS27
rw-{0}

10
LCDCSS26
rw-{0}

9
LCDCSS25
rw-{0}

8
LCDCSS24
rw-{0}

7
LCDCSS23
rw-{0}

6
LCDCSS22
rw-{0}

5
LCDCSS21
rw-{0}

4
LCDCSS20
rw-{0}

3
LCDCSS19
rw-{0}

2
LCDCSS18
rw-{0}

1
LCDCSS17
rw-{0}

0
LCDCSS16
rw-{0}

Table 15-20. LCDCSSEL1 Register Description
Bit

Field

Type

Reset

Description

15

LCDCSS31

RW

0h

Selects pin L31 as either common or segment line.
0b = Segment line
1b = Common line

14

LCDCSS30

RW

0h

Selects pin L30 as either common or segment line.
0b = Segment line
1b = Common line

13

LCDCSS29

RW

0h

Selects pin L29 as either common or segment line.
0b = Segment line
1b = Common line

12

LCDCSS28

RW

0h

Selects pin L28 as either common or segment line.
0b = Segment line
1b = Common line

11

LCDCSS27

RW

0h

Selects pin L27 as either common or segment line.
0b = Segment line
1b = Common line

10

LCDCSS26

RW

0h

Selects pin L26 as either common or segment line.
0b = Segment line
1b = Common line

9

LCDCSS25

RW

0h

Selects pin L25 as either common or segment line.
0b = Segment line
1b = Common line

8

LCDCSS24

RW

0h

Selects pin L24 as either common or segment line.
0b = Segment line
1b = Common line

7

LCDCSS23

RW

0h

Selects pin L23 as either common or segment line.
0b = Segment line
1b = Common line

6

LCDCSS22

RW

0h

Selects pin L22 as either common or segment line.
0b = Segment line
1b = Common line

5

LCDCSS21

RW

0h

Selects pin L21 as either common or segment line.
0b = Segment line
1b = Common line

4

LCDCSS20

RW

0h

Selects pin L20 as either common or segment line.
0b = Segment line
1b = Common line

3

LCDCSS19

RW

0h

Selects pin L19 as either common or segment line.
0b = Segment line
1b = Common line

436

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-20. LCDCSSEL1 Register Description (continued)
Bit

Field

Type

Reset

Description

2

LCDCSS18

RW

0h

Selects pin L18 as either common or segment line.
0b = Segment line
1b = Common line

1

LCDCSS17

RW

0h

Selects pin L17 as either common or segment line.
0b = Segment line
1b = Common line

0

LCDCSS16

RW

0h

Selects pin L16 as either common or segment line.
0b = Segment line
1b = Common line

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

437

LCD_E Registers

www.ti.com

15.3.12 LCDCSSEL2 Register
LCD_E COM/SEG Select Register 0
Figure 15-30. LCDCSSEL2 Register
15
LCDCSS47
rw-{0}

14
LCDCSS46
rw-{0}

13
LCDCSS45
rw-{0}

12
LCDCSS44
rw-{0}

11
LCDCSS43
rw-{0}

10
LCDCSS42
rw-{0}

9
LCDCSS41
rw-{0}

8
LCDCSS40
rw-{0}

7
LCDCSS39
rw-{0}

6
LCDCSS38
rw-{0}

5
LCDCSS37
rw-{0}

4
LCDCSS36
rw-{0}

3
LCDCSS35
rw-{0}

2
LCDCSS34
rw-{0}

1
LCDCSS33
rw-{0}

0
LCDCSS32
rw-{0}

Table 15-21. LCDCSSEL2 Register Description
Bit

Field

Type

Reset

Description

15

LCDCSS47

RW

0h

Selects pin L47 as either common or segment line.
0b = Segment line
1b = Common line

14

LCDCSS46

RW

0h

Selects pin L46 as either common or segment line.
0b = Segment line
1b = Common line

13

LCDCSS45

RW

0h

Selects pin L45 as either common or segment line.
0b = Segment line
1b = Common line

12

LCDCSS44

RW

0h

Selects pin L44 as either common or segment line.
0b = Segment line
1b = Common line

11

LCDCSS43

RW

0h

Selects pin L43 as either common or segment line.
0b = Segment line
1b = Common line

10

LCDCSS42

RW

0h

Selects pin L42 as either common or segment line.
0b = Segment line
1b = Common line

9

LCDCSS41

RW

0h

Selects pin L41 as either common or segment line.
0b = Segment line
1b = Common line

8

LCDCSS40

RW

0h

Selects pin L40 as either common or segment line.
0b = Segment line
1b = Common line

7

LCDCSS39

RW

0h

Selects pin L39 as either common or segment line.
0b = Segment line
1b = Common line

6

LCDCSS38

RW

0h

Selects pin L38 as either common or segment line.
0b = Segment line
1b = Common line

5

LCDCSS37

RW

0h

Selects pin L37 as either common or segment line.
0b = Segment line
1b = Common line

4

LCDCSS36

RW

0h

Selects pin L36 as either common or segment line.
0b = Segment line
1b = Common line

3

LCDCSS35

RW

0h

Selects pin L35 as either common or segment line.
0b = Segment line
1b = Common line

438

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-21. LCDCSSEL2 Register Description (continued)
Bit

Field

Type

Reset

Description

2

LCDCSS34

RW

0h

Selects pin L34 as either common or segment line.
0b = Segment line
1b = Common line

1

LCDCSS33

RW

0h

Selects pin L33 as either common or segment line.
0b = Segment line
1b = Common line

0

LCDCSS32

RW

0h

Selects pin L32 as either common or segment line.
0b = Segment line
1b = Common line

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

439

LCD_E Registers

www.ti.com

15.3.13 LCDCSSEL3 Register
LCD_E COM/SEG Select Register 0
Figure 15-31. LCDCSSEL3 Register
15
LCDCSS63
rw-{0}

14
LCDCSS62
rw-{0}

13
LCDCSS61
rw-{0}

12
LCDCSS60
rw-{0}

11
LCDCSS59
rw-{0}

10
LCDCSS58
rw-{0}

9
LCDCSS57
rw-{0}

8
LCDCSS56
rw-{0}

7
LCDCSS55
rw-{0}

6
LCDCSS54
rw-{0}

5
LCDCSS53
rw-{0}

4
LCDCSS52
rw-{0}

3
LCDCSS51
rw-{0}

2
LCDCSS50
rw-{0}

1
LCDCSS49
rw-{0}

0
LCDCSS48
rw-{0}

Table 15-22. LCDCSSEL3 Register Description
Bit

Field

Type

Reset

Description

15

LCDCSS63

RW

0h

Selects pin L63 as either common or segment line.
0b = Segment line
1b = Common line

14

LCDCSS62

RW

0h

Selects pin L62 as either common or segment line.
0b = Segment line
1b = Common line

13

LCDCSS61

RW

0h

Selects pin L61 as either common or segment line.
0b = Segment line
1b = Common line

12

LCDCSS60

RW

0h

Selects pin L60 as either common or segment line.
0b = Segment line
1b = Common line

11

LCDCSS59

RW

0h

Selects pin L59 as either common or segment line.
0b = Segment line
1b = Common line

10

LCDCSS58

RW

0h

Selects pin L58 as either common or segment line.
0b = Segment line
1b = Common line

9

LCDCSS57

RW

0h

Selects pin L57 as either common or segment line.
0b = Segment line
1b = Common line

8

LCDCSS56

RW

0h

Selects pin L56 as either common or segment line.
0b = Segment line
1b = Common line

7

LCDCSS55

RW

0h

Selects pin L55 as either common or segment line.
0b = Segment line
1b = Common line

6

LCDCSS54

RW

0h

Selects pin L54 as either common or segment line.
0b = Segment line
1b = Common line

5

LCDCSS53

RW

0h

Selects pin L53 as either common or segment line.
0b = Segment line
1b = Common line

4

LCDCSS52

RW

0h

Selects pin L52 as either common or segment line.
0b = Segment line
1b = Common line

3

LCDCSS51

RW

0h

Selects pin L51 as either common or segment line.
0b = Segment line
1b = Common line

440

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-22. LCDCSSEL3 Register Description (continued)
Bit

Field

Type

Reset

Description

2

LCDCSS50

RW

0h

Selects pin L50 as either common or segment line.
0b = Segment line
1b = Common line

1

LCDCSS49

RW

0h

Selects pin L49 as either common or segment line.
0b = Segment line
1b = Common line

0

LCDCSS48

RW

0h

Selects pin L48 as either common or segment line.
0b = Segment line
1b = Common line

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

441

LCD_E Registers

www.ti.com

15.3.14 LCDM[index] Register – Static, 2-Mux, 3-Mux, 4-Mux Mode
LCD_E Memory [index] Register
For Static, 2-Mux, 3-Mux, 4-Mux Mode: index = 0 to 31
Figure 15-32. LCDM[index] Register
7
MBIT7
rw-{0}

6
MBIT6
rw-{0}

5
MBIT5
rw-{0}

4
MBIT4
rw-{0}

3
MBIT3
rw-{0}

2
MBIT2
rw-{0}

1
MBIT1
rw-{0}

0
MBIT0
rw-{0}

Table 15-23. LCDM[index] Register Description
Bit

Field

Type

Reset

Description

7

MBIT7

RW

0h

If LCD pin L[2*index+1] is selected as segment line (LCDCSS[2*index+1] = 0b)
and LCD mux rate is 4-mux (LCDMXx=011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index+1] is selected as common line (LCDCSS[2*index+1] = 1b):
0b = Pin L[2*index+1] not used as COM3
1b = Pin L[2*index+1] is used as COM3

6

MBIT6

RW

0h

If LCD pin L[2*index+1] is selected as segment line (LCDCSS[2*index+1] = 0b)
and LCD mux rate is 3- or 4-mux (010b <= LCDMXx <= 011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index+1] is selected as common line (LCDCSS[2*index+1] = 1b):
0b = Pin L[2*index+1] not used as COM2
1b = Pin L[2*index+1] is used as COM2

5

MBIT5

RW

0h

If LCD pin L[2*index+1] is selected as segment line (LCDCSS[2*index+1] = 0b)
and LCD mux rate is 2-, 3- or 4-mux (001b <= LCDMXx <= 011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index+1] is selected as common line (LCDCSS[2*index+1] = 1b):
0b = Pin L[2*index+1] not used as COM1
1b = Pin L[2*index+1] is used as COM1

4

MBIT4

RW

0h

If LCD pin L[2*index+1] is selected as segment line (LCDCSS[2*index+1] = 0b)
and LCD mux rate is static, 2-, 3- or 4-mux (000b <= LCDMXx <= 011b)
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index+1] is selected as common line (LCDCSS[2*index+1] = 1b):
0b = Pin L[2*ndex+1] not used as COM0
1b = Pin L[2*ndex+1] is used as COM0

3

MBIT3

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 4-mux (LCDMXx=011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index] is selected as common line (LCDCSS[2*index] = 1b):
0b = Pin L[2*index] not used as COM3
1b = Pin L[2*index] is used as COM3

2

MBIT2

RW

0h

If LCD pin L[2*index] is selected as segment line (LCDCSS[2*index] = 0b) and
LCD mux rate is 3- or 4-mux (010b <= LCDMXx <= 011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index] is selected as common line (LCDCSS[2*index] = 1b):
0b = Pin L[2*index] not used as COM2
1b = Pin L[2*index] is used as COM2

442

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-23. LCDM[index] Register Description (continued)
Bit

Field

Type

Reset

Description

1

MBIT1

RW

0h

If LCD pin L[2*index] is selected as segment line (LCDCSS[2*index] = 0b) and
LCD mux rate is 2-, 3- or 4-mux (001b <= LCDMXx <= 011b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index] is selected as common line (LCDCSS[2*index] = 1b):
0b = Pin L[2*index] not used as COM1
1b = Pin L[2*index] is used as COM1

0

MBIT0

RW

0h

If LCD L[2*index] is selected as segment line (LCDCSS[2*index] = 0b) and LCD
mux rate is static, 2-, 3- or 4-mux (000b <= LCDMXx <= 011b)
0b = LCD segment off
1b = LCD segment on
If LCD pin L[2*index] is selected as common line (LCDCSS[2*index] = 1b):
0b = Pin L[2*index] not used as COM0
1b = Pin L[2*index] is used as COM0

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

443

LCD_E Registers

www.ti.com

15.3.15 LCDM[index] Register – 5-Mux, 6-Mux, 7-Mux, 8-Mux Mode
LCD_E Memory [index] Register
5-Mux, 6-Mux, 7-Mux, 8-Mux Mode: index = 0 to 63
Figure 15-33. LCDM[index] Register
7
MBIT7
rw-{0}

6
MBIT6
rw-{0}

5
MBIT5
rw-{0}

4
MBIT4
rw-{0}

3
MBIT3
rw-{0}

2
MBIT2
rw-{0}

1
MBIT1
rw-{0}

0
MBIT0
rw-{0}

Table 15-24. LCDM[index] Register Description
Bit

Field

Type

Reset

Description

7

MBIT7

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 8-mux (LCDMXx = 111b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM7
1b = Pin L[index] is used as COM7

6

MBIT6

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 7- or 8-mux (LCDMXx >= 110b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM6
1b = Pin L[index] is used as COM6

5

MBIT5

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 6-, 7- or 8-mux (LCDMXx >= 101b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM5
1b = Pin L[index] is used as COM5

4

MBIT4

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 5-, 6-, 7- or 8-mux (LCDMXx >= 100b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM4
1b = Pin L[index] is used as COM4

3

MBIT3

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 5-, 6-, 7- or 8-mux (LCDMXx >= 100b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM3
1b = Pin L[index] is used as COM3

2

MBIT2

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 5-, 6-, 7- or 8-mux (LCDMXx >= 100b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index-1] not used as COM2
1b = Pin L[index-1] is used as COM2

444

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Registers

www.ti.com

Table 15-24. LCDM[index] Register Description (continued)
Bit

Field

Type

Reset

Description

1

MBIT1

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 5-, 6-, 7- or 8-mux (LCDMXx >= 100b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM1
1b = Pin L[index] is used as COM1

0

MBIT0

RW

0h

If LCD pin L[index] is selected as segment line (LCDCSS[index] = 0b) and LCD
mux rate is 5-, 6-, 7- or 8-mux (LCDMXx >= 100b):
0b = LCD segment off
1b = LCD segment on
If LCD pin L[index] is selected as common line (LCDCSS[index] = 1b):
0b = Pin L[index] not used as COM0
1b = Pin L[index] is used as COM0

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

LCD_E Controller

445

LCD_E Registers

www.ti.com

15.3.16 LCDIV Register
LCD_E Interrupt Vector Register
Figure 15-34. LCDIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r0

r0

r0

r0

LCDIVx
r0

r0

r0

r0

7

6

5

4
LCDIVx

r0

r0

r0

r0

Table 15-25. LCDIV Register Description
Bit

Field

Type

Reset

Description

15-0

LCDIVx

R

0h

LCD_E interrupt vector value
00h = No interrupt pending
04h = Interrupt Source: Blink, segments off; Interrupt Flag: LCDBLKOFFIFG;
Interrupt Priority: Highest
06h = Interrupt Source: Blink, segments on; Interrupt Flag: LCDBLKONIFG
08h = Interrupt Source: Frame interrupt; Interrupt Flag: LCDFRMIFG; Interrupt
Priority: Lowest

446

LCD_E Controller

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 16
SLAU445D – October 2014 – Revised December 2015

ADC Module
The ADC module is a high-performance 10-bit or 12-bit analog-to-digital converter (ADC). See the devicespecific data sheet to determine the resolution supported by a device. This chapter describes the
operation of the ADC module.
Topic

16.1
16.2
16.3

...........................................................................................................................

Page

ADC Introduction .............................................................................................. 448
ADC Operation ................................................................................................. 450
ADC Registers.................................................................................................. 467

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

447

ADC Introduction

www.ti.com

16.1 ADC Introduction
The ADC module supports fast 10-bit or 12-bit analog-to-digital conversions. The module implements a
10-bit or 12-bit SAR core together, sample select control, and a window comparator.
ADC features include:
• Greater than 200-ksps maximum conversion rate
• Monotonic 10-bit or 12-bit converter with no missing codes
• Sample-and-hold with programmable sampling periods controlled by software or timers
• Conversion initiation by software or different timers
• Software-selectable on-chip reference or external reference
• Twelve individually configurable external input channels
• Conversion channel for on-chip temperature sensor
• Selectable conversion clock source
• Single-channel, repeat-single-channel, sequence, and repeat-sequence conversion modes
• Window comparator for low-power monitoring of input signals
• Interrupt vector register for fast decoding of six ADC interrupts (ADCIFG0, ADCTOVIFG, ADCOVIFG,
ADCLOIFG, ADCINIFG, ADCHIIFG)
Figure 16-1 shows the block diagram of the ADC module.

448

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Introduction

www.ti.com
ADCINCHx

VEREF–

VEREF+

ADCSR
Auto

ADCCONSEQx
10

Reference
Buffer
A0

0000

A1

0001

A2

0010

A3

0011

A4

0100

A5

0101

A6

0110

A7

0111

A8

1000

A9

1001

A10

1010

A11

1011

A12

1100

A13

1101

VSS

ADC
SREF2

VCC

0

1

From on-chip
Reference Voltage

01

11

10

01

ADC
SREFx

00
ADCON

VR-

ADCDIVx

ADC
SSELx

ADCPDIVx

00

VR+

MODOSC

00
Sample
& Hold

Divider
÷1 – ÷8

ADC Core

11

Convert

1110

A14

ADC
MSC

ADC
SHTx

1

MCLK

11

SMCLK

00

ADCSC

01

Timer Trigger 0

10

Timer Trigger 1

11

Timer Trigger 2

÷64

ADC
BUSY
SAMPCON

ACLK

10

÷4

ADCCLK

Sample Timer
÷4 – ÷1024

1
Sync
0

SHI
0

1111

A15

01

01

ADCDF
ADC
SHP

ADC
ISSH

ADC
SHSx

ADCHIx
Data Format

Window Comparator

To Interrupt Logic

ADCLOx
ADCMEM

A

The MODOSC is part of the Clock System. See the Clock System chapter for more information.

B

When using ADCSHP = 0, no synchronisation of the trigger input is done.

Figure 16-1. ADC Block Diagram

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

449

ADC Operation

www.ti.com

16.2 ADC Operation
The ADC module is configured with user software. The setup and operation of the ADC is described in the
following sections.

16.2.1 ADC Core
The ADC core converts an analog input to its 10-bit or 12-bit digital representation and stores the result in
the conversion register ADCMEM0. The core uses two programmable and selectable voltage levels (VR+
and VR–) to define the upper and lower limits of the conversion. The digital output (NADC) is full-scale
(03FFh for 10-bit, and 0FFFh for 12-bit) when the input signal is equal to or higher than VR+. The output is
zero when the input signal is equal to or lower than VR–. The input channel and the reference voltage
levels (VR+ and VR–) are defined in the conversion control memory. The conversion formula for the ADC
result NADC is:
Vin – VR–
10-bit:
NADC = 1023 ×
VR+ – VR–
Vin – VR–
12-bit:
NADC = 4095 ×
VR+ – VR–
The ADC core is configured by the control registers ADCCTL0, ADCCTL1, and ADCCTL2. The core is
enabled with the ADCON bit. The ADC can be turned off when not in use to save power. With few
exceptions, the ADC control bits can be modified only when ADCENC = 0. ADCENC must be set to 1
before any conversion can take place.
16.2.1.1 Conversion Clock Selection
The ADCCLK is used as the conversion clock and also to generate the sampling period when the pulse
sampling mode is selected. The ADC source clock is selected using the ADCSSELx bits. Possible
ADCCLK sources are SMCLK, ACLK, and MODOSC. The input clock can be divided from 1 to 512 using
the ADCDIVx bits and the ADCPDIVx bits.
MODOSC, generated in the clock system, is approximately 5 MHz but varies with individual devices,
supply voltage, and temperature. See the device-specific data sheet for the specifications of the
MODOSC.
The clock that is chosen to source ADCCLK must remain active until the end of a conversion. If the clock
is removed during a conversion, the operation does not complete, and any result is invalid.

16.2.2 ADC Inputs and Multiplexer
The channel for conversion is selected by the analog input multiplexer from 12 external and 4 internal
analog signals. The input multiplexer is a break-before-make type to reduce input-to-input noise injection
that can result from channel switching (see Figure 16-2). The input multiplexer is also a T-switch to
minimize the coupling between channels. Channels that are not selected are isolated from the ADC, and
the intermediate node is connected to analog ground (AVSS), so that the stray capacitance is grounded to
eliminate crosstalk.
The ADC uses the charge redistribution method. When the inputs are internally switched, the switching
action may cause transients on the input signal. These transients decay and settle before causing errant
conversions.

450

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com
R ~ 100 W

ADCMCTLx.0–3
Input

Ax

ESD Protection

Figure 16-2. Analog Multiplexer

16.2.2.1 Analog Port Selection
The ADC inputs are multiplexed with digital port pins. When analog signals are applied to digital gates,
parasitic current can flow from VCC to GND. This parasitic current occurs if the input voltage is near the
transition level of the gate. Disabling the digital part of the port pin eliminates the parasitic current flow
and, therefore, reduces overall current consumption. The PySELx bits can disable the port pin input and
output buffers.
; Py.0 and Py.1 configured for analog input
BIS.B #3h,&PySEL ; Py.1 and Py.0 ADC function

16.2.3 Voltage Reference Generator
The ADC module can use either the on-chip reference voltage or an external reference voltage supplied
on external pins.
See the device-specific data sheet for the specifications of the on-chip reference voltage.
External references may be supplied for VR+ and VR–through pins VEREF+ and VEREF-, respectively.
16.2.3.1 Internal Reference Low-Power Features
The on-chip reference is designed for low-power applications. This reference includes a band-gap voltage
source in the PMM module. The current consumption is specified in the device-specific data sheet. The
ADC also contains an internal buffer for reference voltages. This buffer is automatically enabled when the
internal reference is selected for VREF+, and it is also optionally available for VeREF+. The on-chip reference
from the PMM module must be enabled by software. Its settling time is ≤30 µs. See the PMM module
chapter for more information on the on-chip reference.
The reference buffer of the ADC also has selectable speed versus power settings. When the maximum
conversion rate is below 50 ksps, setting ADCSR = 1 reduces the current consumption of the buffer by
approximately 50%.

16.2.4 Automatic Power Down
The ADC is designed for low-power applications. When the ADC is not actively converting, the core is
automatically disabled, and it is automatically reenabled when needed. The MODOSC is also
automatically enabled when needed and disabled when not needed.

16.2.5 Sample and Conversion Timing
An analog-to-digital conversion is initiated with a rising edge of the sample input signal SHI. The source
for SHI is selected with the ADCSHSx bits and can be chosen from the following:
• ADCSC bit
• Three timer outputs

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

451

ADC Operation

www.ti.com

The polarity of the SHI signal source can be inverted with the ADCISSH bit. The SAMPCON signal
controls the sample period and start of conversion. When SAMPCON is high, sampling is active. The highto-low SAMPCON transition starts the analog-to-digital conversion, which requires 11 ADCCLK cycles in
10-bit resolution mode, and 13 ADCCLK cycles in 12-bit resolution mode. One additional ADCCLK cycle is
needed to synchronize the input trigger source clock and ADC clock. The window comparator needs one
additional ADCCLK cycle.
Two sample-timing methods are selected by control bit ADCSHP: extended sample mode and pulse
mode.
16.2.5.1 Extended Sample Mode
The extended sample mode is selected when ADCSHP = 0. The SHI signal directly controls SAMPCON
and defines the length of the sample period tsample. When SAMPCON is high, sampling is active. The highto-low SAMPCON transition starts the conversion after synchronization with ADCCLK (see 10-bit mode
Figure 16-3 or 12-bit mode Figure 16-4). The SHI signal requires at least 4 ADCCLK cycles.
Start
Sampling

Start
Conversion

Stop
Sampling

Conversion
Complete

SHI

12 × ADCCLK

SAMPCON
tsample

tconvert
tsync

ADCCLK

Figure 16-3. Extended Sample Mode in 10-bit mode
Start
Sampling

Start
Conversion

Stop
Sampling

Conversion
Complete

SHI

14 × ADCCLK

SAMPCON
tsample

tconvert
tsync

ADCCLK

Figure 16-4. Extended Sample Mode in 12-bit mode

16.2.5.2 Pulse Sample Mode
The pulse sample mode is selected when ADCSHP = 1. The SHI signal triggers the sampling timer. The
ADCSHTx bits in the ADCCTL0 register control the interval of the sampling timer that defines the
SAMPCON sample period tsample. The sampling timer keeps SAMPCON high after synchronization with
ADCCLK for a programmed interval, tsample. The total sampling time is tsample plus tsync (see 10-bit mode
Figure 16-5 or 12-bit mode Figure 16-6 ).
452

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

The ADCSHTx bits select the sampling time in 4× multiples of ADCCLK. The ADCSC bit is automatically
cleared if it is used as the sample-and-hold source in this mode.
Start
Sampling

Stop
Sampling

Conversion
Complete

Start
Conversion

SHI

12 × ADCCLK

SAMPCON
tsample

tconvert

tsync
ADCCLK

Figure 16-5. Pulse Sample Mode in 10-bit mode
Start
Sampling

Stop
Sampling

Conversion
Complete

Start
Conversion

SHI

14 × ADCCLK

SAMPCON
tsample

tconvert

tsync
ADCCLK

Figure 16-6. Pulse Sample Mode in 12-bit mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

453

ADC Operation

www.ti.com

16.2.5.3 Sample Timing Considerations
When SAMPCON = 0, all Ax inputs are high impedance. When SAMPCON = 1, the selected Ax input can
be modeled as an RC low-pass filter during the sampling time tsample (see Figure 16-7). An internal MUX-on
input resistance RI (see device-specific data sheet) in series with capacitor CI (see device-specific data
sheet) is seen by the source. The capacitor CI voltage (VC) must be charged to within one-half LSB of the
source voltage (VS) for an accurate 10-bit or 12-bit conversion.
MSP430

RS
VS

VI

Cpext

RI
VC
Cpint

CI

VI = Input voltage at pin Ax
VS = External source voltage
RS = External source resistance
RI = Internal MUX-on input resistance
CI = Input capacitance
Cpint = Parasitic capacitance, internal
CPext = Parasitic capacitance, external
VC = Capacitance-charging voltage

Figure 16-7. Analog Input Equivalent Circuit
The resistance of the sources (RS and RI) affects tsample. See the device-specific data sheet for the tsample
limits.

16.2.6 Conversion Result
For all conversion modes, the conversion result is accessible by reading the ADCMEM0 register. When a
conversion result is written to ADCMEM0, the ADCIFG0 interrupt flag is set.

16.2.7 ADC Conversion Modes
The ADC has four operating modes, selected by the CONSEQx bits (see Table 16-1).
Table 16-1. Conversion Mode Summary
ADCCONSEQx

454

Mode

Operation

00

Single-channel single-conversion

A single channel is converted once.

01

Sequence-of-channels

A sequence of channels is converted once.

10

Repeat-single-channel

A single channel is converted repeatedly.

11

Repeat-sequence-of-channels

A sequence of channels is converted repeatedly.

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.1 Single-Channel Single-Conversion Mode
A single channel selected by ADCINCHx is sampled and converted once. The ADC result is written to
ADCMEM0. 10-bit mode Figure 16-8 or 12-bit mode Figure 16-9 shows the flow of the single-channel
single-conversion mode.
When ADCSC triggers a conversion, successive conversions can be triggered by the ADCSC bit. When
any other trigger source is used, ADCENC must be toggled between each conversion.
Resetting ADCON bit within a conversion causes the ADC to go back into "ADC off" state. In this case,
the value of the conversion register and the value of the interrupt flags is unpredictable.
ADC
off

ADCCONSEQx = 00

ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable
ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

ADCENC =
ADCENC =

Wait for Trigger

SAMPCON =
ADCENC = 0

SAMPCON = 1
Sample Input
Channel x

ADCENC = 0 *
SAMPCON =

10 × ADCCLK

Convert
ADCENC = 0 *
1 × ADCCLK
Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

* = Conversion result is unpredictable
x = Pointer to the selected ADC channel defined by ADCINCHx
All bit and register names are in bold font; signals are in normal font.

Figure 16-8. Single-Channel Single-Conversion Mode in 10-bit mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

455

ADC Operation

www.ti.com

ADC
off

ADCCONSEQx = 00

ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable
ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

ADCENC =
ADCENC =

Wait for Trigger

SAMPCON =
ADCENC = 0

SAMPCON = 1
Sample Input
Channel x

ADCENC = 0 *
SAMPCON =

12 × ADCCLK

Convert
ADCENC = 0 *
1 × ADCCLK
Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

* = Conversion result is unpredictable
x = Pointer to the selected ADC channel defined by ADCINCHx
All bit and register names are in bold font; signals are in normal font.

Figure 16-9. Single-Channel Single-Conversion Mode in 12-bit mode

456

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.2 Sequence-of-Channels Mode
A sequence of channels is sampled and converted once. The sequence begins with the channel selected
by the ADCINCHx bits and decrements to channel A0. Each ADC result is written to ADCMEM0. The
sequence stops after conversion of channel A0. 10-bit mode Figure 16-10 or 12-bit mode Figure 16-11
shows the sequence-of-channels mode.
When ADCSC triggers a sequence, successive sequences can be triggered by the ADCSC bit. When any
other trigger source is used, ADCENC must be toggled between each sequence.
As in all conversion modes, resetting ADCON bit within a conversion causes the ADC to go back into
"ADC off" state.
ADC
off

ADCCONSEQx = 01

ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable

ADCENC =

ADCENC =

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

Wait for Trigger

x=0

SAMPCON =
SAMPCON = 1
Sample Input
Channel x
If x > 0 then x = x - 1
x=x-1

x=x-1
SAMPCON =

ADCMSC = 1
and
ADCSHP = 1
and
x 0

10 × ADCCLK

Convert
1 × ADCCLK

(ADCMSC = 0
or
ADCSHP = 0)
and
x 0

Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is set

x = Input channel Ax
All bit and register names are in bold font; signals are in normal font.

Figure 16-10. Sequence-of-Channels Mode in 10-bit mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

457

ADC Operation

www.ti.com

ADC
off

ADCCONSEQx = 01

ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable

ADCENC =

ADCENC =

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

Wait for Trigger

x=0

SAMPCON =
SAMPCON = 1
Sample Input
Channel x
If x > 0 then x = x - 1
x=x-1

x=x-1
SAMPCON =

ADCMSC = 1
and
ADCSHP = 1
and
x 0

12 × ADCCLK

Convert
1 × ADCCLK

(ADCMSC = 0
or
ADCSHP = 0)
and
x 0

Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is set

x = Input channel Ax
All bit and register names are in bold font; signals are in normal font.

Figure 16-11. Sequence-of-Channels Mode in 12-bit mode

458

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.3 Repeat-Single-Channel Mode
A single channel selected by ADCINCHx is sampled and converted continuously. Each ADC result is
written to ADCMEM0. 10-bit mode Figure 16-12 or 12-bit mode Figure 16-13 shows the repeat-singlechannel mode.
ADCCONSEQx = 10

ADC
off
ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable
ADCENC
=

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

ADCENC
=

Wait for Trigger

SAMPCON =

ADCENC = 0

SAMPCON = 1
Sample Input
Channel x

10 × ADCCLK

SAMPCON =

ADCMSC = 1
and
ADCSHP = 1
and
ADCENC = 1

Convert

1 × ADCCLK

(ADCMSC = 0
or
ADCSHP = 0)
and
ADCENC = 1

Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

x = Pointer to the selected ADC channel defined by ADCINCHx
All bit and register names are in bold font; signals are in normal font.

Figure 16-12. Repeat-Single-Channel Mode in 10-bit mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

459

ADC Operation

www.ti.com

ADCCONSEQx = 10

ADC
off
ADCON = 1
ADCENC

x = ADCINCHx
Wait for Enable
ADCENC
=

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

ADCENC
=

Wait for Trigger

SAMPCON =

ADCENC = 0

SAMPCON = 1
Sample Input
Channel x

12 × ADCCLK

SAMPCON =

ADCMSC = 1
and
ADCSHP = 1
and
ADCENC = 1

Convert

1 × ADCCLK

(ADCMSC = 0
or
ADCSHP = 0)
and
ADCENC = 1

Conversion
Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

x = Pointer to the selected ADC channel defined by ADCINCHx
All bit and register names are in bold font; signals are in normal font.

Figure 16-13. Repeat-Single-Channel Mode in 12-bit mode

460

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.4 Repeat-Sequence-of-Channels Mode
A sequence of channels is sampled and converted repeatedly. The sequence begins with the channel
selected by ADCINCHx and decrements to channel A0. Each ADC result is written to ADCMEM0. The
sequence ends after conversion of channel A0, and the next trigger signal restarts the sequence. 10-bit
mode Figure 16-14 or 12-bit mode Figure 16-15 shows the repeat-sequence-of-channels mode.
ADCCONSEQx = 11

ADC
off
ADCON = 1
ADCENC

ADCINCHx
Wait for Enable
ADCENC =
ADCENC =

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

Wait for Trigger
ADCENC = 0
and
x=0

SAMPCON =
SAMPCON = 1
Sample Input
Channel x
If x > 0 then x = x - 1
else
x = ADCINCHx

If x > 0 then x = x - 1
else
x = ADCINCHx

SAMPCON
=
10 × ADCCLK
Convert

ADCMSC = 1
and
ADCSHP = 1
and
(ADCENC = 1
or
x 0)

1 × ADCCLK
Conversion Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

(ADCMSC = 0
or
ADCSHP = 0)
and
(ADCENC = 1
or
x 0

x = Input channel Ax
All bit and register names are in bold font; signals are in normal font.

Figure 16-14. Repeat-Sequence-of-Channels Mode in 10-bit mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

461

ADC Operation

www.ti.com

ADCCONSEQx = 11

ADC
off
ADCON = 1
ADCENC

ADCINCHx
Wait for Enable
ADCENC =
ADCENC =

ADCSHSx = 0
and
ADCENC = 1 or
and
ADCSC =

Wait for Trigger
ADCENC = 0
and
x=0

SAMPCON =
SAMPCON = 1
Sample Input
Channel x
If x > 0 then x = x - 1
else
x = ADCINCHx

If x > 0 then x = x - 1
else
x = ADCINCHx

SAMPCON
=
12 × ADCCLK
Convert

ADCMSC = 1
and
ADCSHP = 1
and
(ADCENC = 1
or
x 0)

1 × ADCCLK
Conversion Completed,
Result Stored Into
ADCMEM0,
ADCIFG0 is Set

(ADCMSC = 0
or
ADCSHP = 0)
and
(ADCENC = 1
or
x 0

x = Input channel Ax
All bit and register names are in bold font; signals are in normal font.

Figure 16-15. Repeat-Sequence-of-Channels Mode in 12-bit mode

462

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.5 Using the Multiple Sample and Convert (ADCMSC) Bit
To configure the converter to perform successive conversions automatically and as quickly as possible, a
multiple sample and convert function is available. When ADCMSC = 1, CONSEQx > 0, and the sample
timer is used, the first rising edge of the SHI signal triggers the first conversion. Successive conversions
are triggered automatically as soon as the prior conversion is completed. Additional rising edges on SHI
are ignored until the sequence is completed in the single-sequence mode, or until the ADCENC bit is
toggled in repeat-single-channel or repeated-sequence modes. The function of the ADCENC bit is
unchanged when using the ADCMSC bit.
16.2.7.6 Stopping Conversions
Stopping ADC activity depends on the mode of operation. The recommended ways to stop an active
conversion or conversion sequence are:
• Setting ADCENC = 0 in single-channel single-conversion mode stops a conversion immediately and
the results are unpredictable. For correct results, poll the busy bit until reset before clearing ADCENC.
• Setting ADCENC = 0 during repeat-single-channel operation stops the converter at the end of the
current conversion.
• Setting ADCENC = 0 during a sequence or repeat-sequence mode stops the converter at the end of
the sequence.
• Any conversion mode can be stopped immediately by setting CONSEQx = 0 and setting ADCENC = 0.
Conversion data are unreliable.
16.2.7.7 Window Comparator
The window comparator allows the ADC to monitor analog signals without any CPU interaction. The
window comparator triggers the following interrupt flags:
• The ADCLO interrupt flag (ADCLOIFG) is set if the current result of the ADC conversion is below the
low threshold defined in register ADCLO.
• The ADCHI interrupt flag (ADCHIIFG) is set if the current result of the ADC conversion is greater than
the high threshold defined in register ADCHI.
• The ADCIN interrupt flag (ADCINIFG) is set if the current result of the ADC conversion is between the
low threshold defined in register ADCLO and the high threshold defined in ADCHI.
These interrupts are generated independent of the selected conversion mode.
The values in the ADCHI and ADCLO registers must be in the correct data format. For example, if the
binary data format is selected (ADCDF = 0), then the thresholds in the threshold registers ADCHI and
ADCLO also must be binary coded. Changing the ADCDF or ADCRES bit resets the threshold registers.
The interrupt flags must be reset by software. The ADC updates the flags when a new value is available in
the ADCMEM0. This update is only to set the corresponding interrupt flag. When the window comparator
is used, software must reset the flags according to the application needs.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

463

ADC Operation

www.ti.com

16.2.7.8 Using the Integrated Temperature Sensor
To use the on-chip temperature sensor, select the analog input channel ADCINCHx = 1100b. Any other
configuration is done as if an external channel were selected, including reference selection, conversionmode selection, and all other settings. The temperature sensor must be activated by software.
Figure 16-16 shows the typical temperature sensor transfer function. When using the temperature sensor,
the sample period must be greater than 30 µs. The temperature sensor offset error can be large and must
be calibrated for most applications (see the device-specific data sheet for parameters).
1200

Temperature Sensor Voltage (mV)

1150
1100
1050
1000
950
900
850
800
750
-40

-20

0

20
40
Temperature (°C)

60

80

100
D001
D001

Figure 16-16. Typical Temperature Sensor Transfer Function

16.2.7.9 ADC Grounding and Noise Considerations
As with any high-resolution ADC, appropriate printed-circuit-board layout and grounding techniques must
be followed to eliminate ground loops, unwanted parasitic effects, and noise.
Ground loops are formed when return current from the ADC flows through paths that are common with
other analog or digital circuitry. If care is not taken, this current can generate small unwanted offset
voltages that can add to or subtract from the reference or input voltages of the ADC. Figure 16-17 shows
connections that can prevent ground loops.
In addition to grounding, ripple and noise spikes on the power-supply lines due to digital switching or
switching power supplies can corrupt the conversion result. TI recommends a noise-free design using
separate analog and digital ground planes with a single-point connection to achieve high accuracy.

DVCC
Power Supply
Decoupling

+

10 µF

100 nF

DVSS

Figure 16-17. ADC Grounding and Noise Considerations

464

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Operation

www.ti.com

16.2.7.10 ADC Interrupts
The ADC has six interrupt sources:
• ADCIFG0: conversion ready interrupt
The ADCIFG0 bit is set when the ADCMEM0 memory register is loaded with the conversion result. An
interrupt request is generated if the ADCIE0 bit and the GIE bit are set.
• ADCOVIFG: ADCMEM0 overflow
The ADCOV condition occurs when a conversion result is written to the ADCMEM0 before its previous
conversion result was read.
• ADCTOVIFG: ADC conversion-time overflow
The ADCTOV condition is generated when another sample-and-conversion is requested before the
current conversion is completed.
• ADCLOIFG, ADCINIFG, ADCHIIFG: window comparator interrupt flags
The window comparator interrupt flags are set corresponding to the description in the Window
Comparator section (see Section 16.2.7.7).
16.2.7.10.1 ADCIV, Interrupt Vector Generator
All ADC interrupt sources are prioritized and combined to source a single interrupt vector. Read the
interrupt vector register ADCIV to determine which ADC interrupt source requested an interrupt.
The highest-priority enabled ADC interrupt generates a number in the ADCIV register (see
Section 16.3.13). This number can be evaluated or added to the program counter (PC) to automatically
enter the appropriate software routine (see Section 16.2.7.10.2). Disabled ADC interrupts do not affect the
ADCIV value.
Read access of the ADCIV register automatically resets the highest-pending interrupt condition and flag.
Only the ADCIFG0 is not reset by this ADCIV read access. ADCIFG0 is automatically reset by reading the
ADCMEM0 register or may be reset with software.
Write access to the ADCIV register clears all pending interrupt conditions and flags.
If another interrupt is pending after servicing of an interrupt, another interrupt is generated. For example, if
the ADCOV, ADCHIIFG, and ADCIFG0 interrupts are pending when the interrupt service routine accesses
the ADCIV register, the highest priority interrupt (ADCOV interrupt condition) is reset automatically. After
the RETI instruction of the interrupt service routine is executed, the ADCHIIFG generates another
interrupt.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

465

ADC Operation

www.ti.com

16.2.7.10.2 ADC Interrupt Handling Software Example
The following example shows the recommended use of the ADCIV. The ADCIV value is added to the PC
to automatically jump to the appropriate routine.
ADCIFG0, ADCTOV, and ADCOV: 16 cycles
; Interrupt handler for ADC.
INT_ADC
; Enter Interrupt Service Routine
ADD
&ADCIV,PC
; Add offset to PC
RETI
; Vector 0: No interrupt
JMP
ADOV
; Vector 2: ADC overflow
JMP
ADTOV
; Vector 4: ADC timing overflow
JMP
ADHI
; Vector 6: ADC window comparator high
interrupt
JMP
ADLO
; Vector 8: ADC window comparator low interrupt
JMP
ADIN
; Vector 10: ADC window comparator in interrupt
;
; Handler for ADCIFG0 starts here. No JMP required.
;
ADMEM MOV &ADCMEM0,xxx
; Move result, flag is reset
...
; Other instruction needed?
RETI
; Return ;
ADOV
...
; Handle ADCMEM0 overflow
RETI
; Return ;
ADTOV ...
; Handle Conv. time overflow
RETI
; Return ;
ADHI
...
; Handle window comparator high interrupt
RETI
; Return ;
ADLO
...
; Handle window comparator low interrupt
RETI
; Return ;
ADIN
...
; Handle window comparator in window interrupt
RETI
; Return

466

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

16.3 ADC Registers
The ADC registers are listed in Table 16-2. The base address of the ADC can be found in the devicespecific data sheet. The address offset of each ADC register is given in Table 16-2.
Table 16-2. ADC Registers
Offset

Acronym

Register Name

Type

Reset

Section

00h

ADCCTL0

ADC Control 0 register

Read/write

0100h

Section 16.3.1

02h

ADCCTL1

ADC Control 1 register

Read/write

0000h

Section 16.3.2

04h

ADCCTL2

ADC Control 2 register

Read/write

0010h

Section 16.3.3

06h

ADCLO

ADC Window Comparator Low Threshold
register

Read/write

0000h

Section 16.3.9

08h

ADCHI

ADC Window Comparator High Threshold
register

Read/write

03FFh

Section 16.3.7

0Ah

ADCMCTL0

ADC Memory Control register

Read/write

00h

Section 16.3.6

12h

ADCMEM0

ADC Conversion Memory register

Read/write

undefined Section 16.3.4

1Ah

ADCIE

ADC Interrupt Enable register

Read/write

0000h

Section 16.3.11

1Ch

ADCIFG

ADC Interrupt Flag register

Read/write

0000h

Section 16.3.12

1Eh

ADCIV

ADC Interrupt Vector register

Read/write

0000h

Section 16.3.13

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

467

ADC Registers

www.ti.com

16.3.1 ADCCTL0 Register
ADC Control Register 0
Figure 16-18. ADCCTL0 Register
15

14

13

12

11

10

9

8

rw-(0)

rw-(0)

rw-(1)

2

1
ADCENC
rw-(0)

0
ADCSC
rw-(0)

Reserved
r0

r0

7
ADCMSC
rw-(0)

6

ADCSHTx
r0

r0

rw-(0)

5

4
ADCON
rw-(0)

3

Reserved
r0

r0

Reserved
r0

r0

Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software and changing these fields immediately
shows an effect when a conversion is active.

Table 16-3. ADCCTL0 Register Description
Bit

Field

Type

Reset

Description

15-12

Reserved

R

0h

Reserved. Always reads as 0.

11-8

ADCSHTx

RW

1h

ADC sample-and-hold time. These bits define the number of ADCCLK cycles in
the sampling period for the ADC.
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0000b = 4 ADCCLK cycles
0001b = 8 ADCCLK cycles
0010b = 16 ADCCLK cycles
0011b = 32 ADCCLK cycles
0100b = 64 ADCCLK cycles
0101b = 96 ADCCLK cycles
0110b = 128 ADCCLK cycles
0111b = 192 ADCCLK cycles
1000b = 256 ADCCLK cycles
1001b = 384 ADCCLK cycles
1010b = 512 ADCCLK cycles
1011b = 768 ADCCLK cycles
1100b = 1024 ADCCLK cycles
1101b = 1024 ADCCLK cycles
1110b = 1024 ADCCLK cycles
1111b = 1024 ADCCLK cycles

7

ADCMSC

RW

0h

ADC multiple sample-and-conversion. Valid only for sequence or repeated
modes.
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0b = The sampling timer requires a rising edge of the SHI signal to trigger each
sample-and-convert.
1b = The first rising edge of the SHI signal triggers the sampling timer, but further
sample-and-conversions are performed automatically as soon as the prior
conversion is completed.

6-5

Reserved

R

0h

Reserved. Always reads as 0.

4

ADCON

RW

0h

ADC on
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0b = ADC off
1b = ADC on

3-2

Reserved

R

0h

Reserved. Always reads as 0.

468

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

Table 16-3. ADCCTL0 Register Description (continued)
Bit

Field

Type

Reset

Description

1

ADCENC

RW

0h

ADC enable conversion
0b = ADC disabled
1b = ADC enabled

0

ADCSC

RW

0h

ADC start conversion. Software-controlled sample-and-conversion start. ADCSC
and ADCENC may be set together with one instruction. ADCSC is reset
automatically.
0b = No sample-and-conversion-start
1b = Start sample-and-conversion

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

469

ADC Registers

www.ti.com

16.3.2 ADCCTL1 Register
ADC Control Register 1
Figure 16-19. ADCCTL1 Register
15

14

13

12

11

Reserved
r0

r0

r0

r0

7

6
ADCDIVx
rw-(0)

5

4

rw-(0)

10
ADCSHSx

rw-(0)

rw-(0)

3

2

1
ADCCONSEQx
rw-(0)
rw-(0)

ADCSSELx
rw-(0)

rw-(0)

9
ADCSHP
rw-(0)

rw-(0)

8
ADCISSH
rw-(0)
0
ADCBUSY
r-(0)

Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software and changing these fields immediately
shows an effect when a conversion is active.

Table 16-4. ADCCTL1 Register Description
Bit

Field

Type

Reset

Description

15-12

Reserved

R

0h

Reserved. Always reads as 0.

11-10

ADCSHSx

RW

0h

ADC sample-and-hold source select
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
00b = ADCSC bit
01b = Timer trigger 0 (see device-specific data sheet)
10b = Timer trigger 1 (see device-specific data sheet)
11b = Timer trigger 2 (see device-specific data sheet)

9

ADCSHP

RW

0h

ADC sample-and-hold pulse-mode select. This bit selects the source of the
sampling signal (SAMPCON) to be either the output of the sampling timer or the
sample-input signal directly.
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0b = SAMPCON signal is sourced from the sample input signal.
1b = SAMPCON signal is sourced from the sampling timer.

8

ADCISSH

RW

0h

ADC invert signal sample-and-hold
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0b = The sample input signal is not inverted.
1b = The sample input signal is inverted.

7-5

ADCDIVx

RW

0h

ADC clock divider
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
000b = Divide by 1
001b = Divide by 2
010b = Divide by 3
011b = Divide by 4
100b = Divide by 5
101b = Divide by 6
110b = Divide by 7
111b = Divide by 8

470

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

Table 16-4. ADCCTL1 Register Description (continued)
Bit

Field

Type

Reset

Description

4-3

ADCSSELx

RW

0h

ADC clock source select
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
00b = MODCLK
01b = ACLK
10b = SMCLK
11b = SMCLK

2-1

ADCCONSEQx

RW

0h

ADC conversion sequence mode select
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
00b = Single-channel single-conversion
01b = Sequence-of-channels
10b = Repeat-single-channel
11b = Repeat-sequence-of-channels

0

ADCBUSY

R

0h

ADC busy. This bit indicates an active sample or conversion operation.
0b = No operation is active.
1b = A sequence, sample, or conversion is active.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

471

ADC Registers

www.ti.com

16.3.3 ADCCTL2 Register
ADC Control Register 2
Figure 16-20. ADCCTL2 Register
15

14

13

12

11

10

9

Reserved
r0
7

r0

r0

6

5

Reserved
r0

r0

r0

r0

rw-(0)

4

3
ADCDF
rw-(0)

2
ADCSR
rw-(0)

1

ADCRES
r0

rw-(0)

8
ADCPDIVx

rw-(1)

rw-(0)
0
Reserved

r0

rw-(0)

Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software and changing these fields immediately
shows an effect when a conversion is active.

Table 16-5. ADCCTL2 Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved. Always reads as 0.

9-8

ADCPDIVx

RW

0h

ADC predivider. This bit pre-divides the selected ADC clock source before it gets
divided again using ADCDIVx.
00b = Predivide by 1
01b = Predivide by 4
10b = Predivide by 64
11b = Reserved

7-6

Reserved

R

0h

Reserved. Always reads as 0.

5-4

ADCRES

RW

1h

ADC resolution. This bit defines the conversion result resolution. (1)
00b = 8 bit (10 clock cycle conversion time)
01b = 10 bit (12 clock cycle conversion time)
10b = 12 bit (14 clock cycle conversion time)
11b = Reserved

3

ADCDF

RW

0h

ADC data read-back format. Data is always stored in the binary unsigned format.
0b = Binary unsigned. Theoretically the analog input voltage –VREF results in
0000h, the analog input voltage +VREF results in 03FFh.
1b = Signed binary (2s complement), left aligned. Theoretically the analog input
voltage –VREF results in 8000h, the analog input voltage +VREF results in 7FC0h.

2

ADCSR

RW

0h

ADC sampling rate. This bit selects drive capability of the ADC reference buffer
for the maximum sampling rate. Setting ADCSR reduces the current
consumption of this buffer.
0b = ADC buffer supports up to approximately 200 ksps
1b = ADC buffer supports up to approximately 50 ksps

1

Reserved

R

0h

Reserved. Always reads as 0.

0

Reserved

RW

0h

Reserved. Must be written as 0.

(1)

472

10-bit or 12-bit setting, please refer to the device-specific data sheet for details.

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

16.3.4 ADCMEM0 Register
ADC Conversion Memory Register
Figure 16-21. ADCMEM0 Register
15

14

13

r0

r0

r0

7

6

5

rw

rw

rw

12
11
Conversion_Results
r0
rw

10

9

8

rw

rw

rw

4
3
Conversion_Results
rw
rw

2

1

0

rw

rw

rw

Table 16-6. ADCMEM0 Register Description
Bit

Field

Type

Reset

Description

15-0

Conversion_Results

RW

undefined

This data format is used if ADCDF = 0 (binary unsigned). The conversion
results are right justified.
Bit 11 is the MSB. Bits 15-12 are 0 in 12-bit mode, bits 15-10 are 0 in 12-bit
mode, and bits 15-8 are 0 in 8-bit mode.
Bit 9 is the MSB. Bits 15-10 are 0 in 10-bit mode, and bits 15-8 are 0 in 8-bit
mode.
Writing to the conversion memory register corrupts the results.

16.3.5 ADCMEM0 Register, 2s-Complement Format
ADC Conversion Memory Register, 2s-Complement Format
Figure 16-22. ADCMEM0 Register
15

14

13

rw

rw

rw

7

6

5

rw

rw

rw

12
11
Conversion_Results
rw
rw

10

9

8

rw

rw

rw

4
3
Conversion_Results
rw
r0

2

1

0

r0

r0

r0

Table 16-7. ADCMEM0 Register Description
Bit

Field

Type

Reset

Description

15-0

Conversion_Results

RW

undefined

This data format is used if ADCDF = 1 (2s complement). The conversion results
are left justified, 2s-complement format.
Bit 15 is the MSB. Bits 3-0 are 0 in 12-bit mode, bits 5-0 are 0 in 10-bit mode,
and bits 7-0 are 0 in 8-bit mode.
Bit 15 is the MSB. Bits 5-0 are 0 in 10-bit mode, and bits 7-0 are 0 in 8-bit
mode.
The data is stored in the right-justified format and is converted to the leftjustified 2s-complement format during read back. Writing to the conversion
memory register corrupts the results.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

473

ADC Registers

www.ti.com

16.3.6 ADCMCTL0 Register
ADC Conversion Memory Control Register
Figure 16-23. ADCMCTL0 Register
15

14

13

r0

r0

r0

7
Reserved
r0

6

5
ADCSREFx
rw-(0)

rw-(0)

12
Reserved
r0

11

10

9

r0

r0

r0

8
Reserved
rw-(0)

4

3

2

1

0

rw-(0)

rw-(0)

ADCINCHx
rw-(0)

rw-(0)

rw-(0)

Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software and changing these fields immediately
shows an effect when a conversion is active.

Table 16-8. ADCMCTL0 Register Description
Bit

Field

Type

Reset

Description

15-9

Reserved

R

0h

Reserved. Always reads as 0.

8

Reserved

RW

0h

Reserved.

6-4

ADCSREFx

RW

0h

Select reference. It is not recommended to change this setting while a
conversion is ongoing.
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
000b = {VR+ = AVCC and VR– = AVSS }
001b = {VR+ = VREF and VR– = AVSS}
010b = {VR+ = VEREF+ buffered and VR– = AVSS}
011b = {VR+ = VEREF+ and VR– = AVSS }
100b = {VR+ = AVCC and VR– = VEREF-}
101b = {VR+ = VREF and VR– = VEREF-}
110b = {VR+ = VEREF+ buffered and VR– = VEREF-}
111b = {VR+ = VEREF+ and VR– = VEREF-}

3-0

ADCINCHx

RW

0h

Input channel select. Writing these bits select the channel for a single-conversion
or the highest channel for a sequence of conversions. Reading these bits in
ADCCONSEQ = 01,11 returns the channel currently converted.
Can be modified only when ADCENC = 0. Resetting ADCENC = 0 by software
and changing these fields immediately shows an effect when a conversion is
active.
0000b = A0 (see device-specific data sheet)
0001b = A1 (see device-specific data sheet)
0010b = A2 (see device-specific data sheet)
0011b = A3 (see device-specific data sheet)
0100b = A4 (see device-specific data sheet)
0101b = A5 (see device-specific data sheet)
0110b = A6 (see device-specific data sheet)
0111b = A7 (see device-specific data sheet)
1000b = A8 (see device-specific data sheet)
1001b = A9 (see device-specific data sheet)
1010b = A10 (see device-specific data sheet)
1011b = A11 (see device-specific data sheet)
1100b = A12 (see device-specific data sheet)
1101b = A13 (see device-specific data sheet)
1110b = A14 (see device-specific data sheet)
1111b = A15 (see device-specific data sheet)

474

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

16.3.7 ADCHI Register
ADC Window Comparator High Threshold Register
Figure 16-24. ADCHI Register
15

14

13

r0

r0

r0

12
11
High_Threshold
r0
rw-(1)

7

6

5

4

rw-(1)

rw-(1)

rw-(1)

3
High_Threshold
rw-(1)
rw-(1)

10

9

8

rw-(1)

rw-(1)

rw-(1)

2

1

0

rw-(1)

rw-(1)

rw-(1)

Table 16-9. ADCHI Register Description
Bit

Field

Type

Reset

Description

15-0

High_Threshold

RW

3FFh

This data format is used when ADCDF = 0 (binary unsigned). The threshold
value must be right justified.
Bit 11 is the MSB. Bits 15–12 are 0 in 12-bit mode, bits 15–10 are 0 in 10-bit
mode, and bits 15–8 are 0 in 8-bit mode.
Bit 9 is the MSB. Bits 15–10 are 0 in 10-bit mode, and bits 15–8 are 0 in 8-bit
mode.

16.3.8 ADCHI Register, 2s-Complement Format
ADC Window Comparator High Threshold Register, 2s-Complement Format
Figure 16-25. ADCHI Register
15

14

13

rw-(0)

rw-(1)

rw-(1)

7

6

5

rw-(1)

rw-(1)

rw-(1)

12
11
High_Threshold
rw-(1)
rw-(1)

10

9

8

rw-(1)

rw-(1)

rw-(1)

2

1

0

r0

r0

r0

4

3
High_Threshold
rw-(1)
r0

Table 16-10. ADCHI Register Description
Bit

Field

Type

Reset

Description

15-0

High_Threshold

RW

1FFh

This data format is used when ADCDF = 1 (2s complement). The threshold value
must be left justified.
Bit 15 is the MSB. Bits 3–0 are 0 in 12-bit mode, bits 5–0 are 0 in 10-bit mode,
and bits 7–0 are 0 in 8-bit mode.
Bit 15 is the MSB. Bits 5–0 are 0 in 10-bit mode, and bits 7–0 are 0 in 8-bit
mode.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

475

ADC Registers

www.ti.com

16.3.9 ADCLO Register
ADC Window Comparator Low Threshold Register
Figure 16-26. ADCLO Register
15

14

13

r0

r0

r0

12
11
Low_Threshold
r0
rw-(0)

7

6

5

4

rw-(0)

rw-(0)

rw-(0)

3
Low_Threshold
rw-(0)
rw-(0)

10

9

8

rw-(0)

rw-(0)

rw-(0)

2

1

0

rw-(0)

rw-(0)

rw-(0)

Table 16-11. ADCLO Register Description
Bit

Field

Type

Reset

Description

15-0

Low_Threshold

RW

0h

This data format is used if ADCDF = 0 (binary unsigned). The threshold value
must be right justified.
Bit 11 is the MSB. Bits 15–12 are 0 in 12-bit mode, bits 15–10 are 0 in 10-bit
mode, and bits 15–8 are 0 in 8-bit mode.
Bit 9 is the MSB. Bits 15–10 are 0 in 10-bit mode, and bits 15–8 are 0 in 8-bit
mode.

16.3.10 ADCLO Register, 2s-Complement Format
ADC Window Comparator Low Threshold Register, 2s-Complement Format
Figure 16-27. ADCLO Register
15

14

13

rw-(1)

rw-(0)

rw-(0)

7

6

5

rw-(0)

rw-(0)

rw-(0)

12
11
Low_Threshold
rw-(0)
rw-(0)

10

9

8

rw-(0)

rw-(0)

rw-(0)

2

1

0

r0

r0

r0

4

3
Low_Threshold
rw-(0)
r0

Table 16-12. ADCLO Register Description
Bit

Field

Type

Reset

Description

15-0

Low_Threshold

RW

200h

This data format is used if ADCDF = 1 (2s complement). The threshold value
must be left justified if 2s-complement format is chosen.
Bit 15 is the MSB. Bits 3-0 are 0 in 12-bit mode, bits 5-0 are 0 in 10-bit mode,
and bits 7-0 are 0 in 8-bit mode.
Bit 15 is the MSB. Bits 5-0 are 0 in 10-bit mode, and bits 7-0 are 0 in 8-bit mode.

476

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

16.3.11 ADCIE Register
ADC Interrupt Enable Register
Figure 16-28. ADCIE Register
15

14

13

12

11

10

9

8

Reserved
r0
7

r0

r0

r0

r0

r0

r0

r0

6

5
ADCTOVIE
rw-(0)

4
ADCOVIE
rw-(0)

3
ADCHIIE
rw-(0)

2
ADCLOIE
rw-(0)

1
ADCINIE
rw-(0)

0
ADCIE0
rw-(0)

Reserved
r0

r0

Table 16-13. ADCIE Register Description
Bit

Field

Type

Reset

Description

15-6

Reserved

R

0h

Reserved. Always reads as 0.

5

ADCTOVIE

RW

0h

ADC conversion-time-overflow interrupt enable.
0b = Conversion-time overflow interrupt disabled
1b = Conversion-time overflow interrupt enabled

4

ADCOVIE

RW

0h

ADCMEM0 overflow interrupt enable.
0b = Overflow interrupt disabled
1b = Overflow interrupt enabled

3

ADCHIIE

RW

0h

Interrupt enable for the above upper threshold interrupt of the window
comparator.
0b = Above upper threshold interrupt disabled
1b = Above upper threshold interrupt enabled

2

ADCLOIE

RW

0h

Interrupt enable for the below lower threshold interrupt of the window
comparator.
0b = Below lower threshold interrupt disabled
1b = Below lower threshold interrupt enabled

1

ADCINIE

RW

0h

Interrupt enable for the inside of window interrupt of the window comparator.
0b = Inside of window interrupt disabled
1b = Inside of window interrupt enabled

0

ADCIE0

RW

0h

Interrupt enable. This bits enable or disable the interrupt request for a completed
ADC conversion.
0b = Interrupt disabled
1b = Interrupt enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

477

ADC Registers

www.ti.com

16.3.12 ADCIFG Register
ADC Interrupt Flag Register
Figure 16-29. ADCIFG Register
15

14

13

12

11

10

9

8

Reserved
r0
7

r0

r0

r0

r0

r0

r0

r0

6

5
ADCTOVIFG
rw-(0)

4
ADCOVIFG
rw-(0)

3
ADCHIIFG
rw-(0)

2
ADCLOIFG
rw-(0)

1
ADCINIFG
rw-(0)

0
ADCIFG0
rw-(0)

Reserved
r0

r0

Table 16-14. ADCIFG Register Description
Bit

Field

Type

Reset

Description

15-6

Reserved

R

0h

Reserved. Always reads as 0.

5

ADCTOVIFG

RW

0h

The ADCTOVIFG is set when an ADC conversion is triggered before the actual
conversion has completed.
0b = No interrupt pending
1b = Interrupt pending

4

ADCOVIFG

RW

0h

The ADCOVIFG is set when the ADCMEM0 register is written before the last
conversion result has been read.
0b = No interrupt pending
1b = Interrupt pending

3

ADCHIIFG

RW

0h

The ADCHIIFG is set when the result of the current ADC conversion is greater
than the upper threshold defined by the window comparator upper threshold
register.
0b = No interrupt pending
1b = Interrupt pending

2

ADCLOIFG

RW

0h

The ADCLOIFG is set when the result of the current ADC conversion is below
the lower threshold defined by the window comparator lower threshold register.
0b = No interrupt pending
1b = Interrupt pending

1

ADCINIFG

RW

0h

The ADCINIFG is set when the result of the current ADC conversion is within the
thresholds defined by the window comparator threshold registers.
0b = No interrupt pending
1b = Interrupt pending

0

ADCIFG0

RW

0h

The ADCIFG0 is set when an ADC conversion is completed. This bit is reset
when the ADCMEM0 get read, or it may be reset by software.
0b = No interrupt pending
1b = Interrupt pending

478

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Registers

www.ti.com

16.3.13 ADCIV Register
ADC Interrupt Vector Register
Figure 16-30. ADCIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-(0)

r-(0)

r-(0)

r0

ADCIVx
r0

r0

r0

r0

7

6

5

4
ADCIVx

r0

r0

r0

r0

Table 16-15. ADCIV Register Description
Bit

Field

Type

Reset

Description

15-0

ADCIVx

R

0h

ADC interrupt vector value. It generates an value that can be used as address
offset for fast interrupt service routine handling. Writing to this register clears all
pending interrupt flags.
00h = No interrupt pending
02h = Interrupt Source: ADCMEM0 overflow; Interrupt Flag: ADCOVIFG;
Interrupt Priority: Highest
04h = Interrupt Source: Conversion time overflow; Interrupt Flag: ADCTOVIFG
06h = Interrupt Source: ADCHI Interrupt flag; Interrupt Flag: ADCHIIFG
08h = Interrupt Source: ADCLO Interrupt flag; Interrupt Flag: ADCLOIFG
0Ah = Interrupt Source: ADCIN Interrupt flag; Interrupt Flag: ADCINIFG
0Ch = Interrupt Source: ADC memory Interrupt flag; Interrupt Flag: ADCIFG0;
Interrupt Priority: Lowest

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

ADC Module

479

ADC Registers

www.ti.com

16.3.14 MSP430FR413x SYSCFG2 Register (absolute address = 0164h) [reset = 0000h]
System Configuration Register 2. In MSP430FR413x devices, the ADC pins are controlled by System
Configuration Register 2. This is a mirror of the register description from SYS Chapter.
Figure 16-31. SYSCFG2 Register
15

13

r0

14
Reserved
r0

r0

12
LCDPCTL
rw-0

11
Reserved
r0

10
Reserved
r0

9
ADCPCTL9
rw-0

8
ADCPCTL8
rw-0

7
ADCPCTL7
rw-0

6
ADCPCTL6
rw-0

5
ADCPCTL5
rw-0

4
ADCPCTL4
rw-0

3
ADCPCTL3
rw-0

2
ADCPCTL2
rw-0

1
ADCPCTL1
rw-0

0
ADCPCTL0
rw-0

Table 16-16. SYSCFG2 Register Description
Bit

Field

Type

Reset

Description

15-13

Reserved

R

0h

Reserved. Always read as 0.

12

LCDPCTL

RW

0h

LCD power pin (LCDCAP0, LCDCAP1, R13, R23, R33) control.
0b = LCD power pin disabled
1b = LCD power pin enabled

11-10

Reserved

R

0h

Reserved. Always read as 0.

9

ADCPCTL9

RW

0h

ADC input A9 pin select
0b = ADC input A9 disabled
1b = ADC input A9 enabled

8

ADCPCTL8

RW

0h

ADC input A8 pin select
0b = ADC input A8 disabled
1b = ADC input A8 enabled

7

ADCPCTL7

RW

0h

ADC input A7 pin select
0b = ADC input A7 disabled
1b = ADC input A7 enabled

6

ADCPCTL6

RW

0h

ADC input A6 pin select
0b = ADC input A6 disabled
1b = ADC input A6 enabled

5

ADCPCTL5

RW

0h

ADC input A5 pin select
0b = ADC input A5 disabled
1b = ADC input A5 enabled

4

ADCPCTL4

RW

0h

ADC input A4 pin select
0b = ADC input A4 disabled
1b = ADC input A4 enabled

3

ADCPCTL3

RW

0h

ADC input A3 pin select
0b = ADC input A3 disabled
1b = ADC input A3 enabled

2

ADCPCTL2

RW

0h

ADC input A2 pin select
0b = ADC input A2 disabled
1b = ADC input A2 enabled

1

ADCPCTL1

RW

0h

ADC input A1 pin select
0b = ADC input A1 disabled
1b = ADC input A1 enabled

0

ADCPCTL0

RW

0h

ADC input A0 pin select
0b = ADC input A0 disabled
1b = ADC input A0 enabled

480

ADC Module

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 17
SLAU445D – October 2014 – Revised December 2015

Enhanced Universal Serial Communication Interface
(eUSCI) – UART Mode
The enhanced universal serial communication interface A (eUSCI_A) supports multiple serial
communication modes with one hardware module. This chapter describes the operation of the
asynchronous UART mode.
Topic

17.1
17.2
17.3
17.4

...........................................................................................................................
Enhanced Universal Serial Communication Interface A (eUSCI_A) Overview ..........
eUSCI_A Introduction – UART Mode ...................................................................
eUSCI_A Operation – UART Mode ......................................................................
eUSCI_A UART Registers ..................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

Page

482
482
484
499

481

Enhanced Universal Serial Communication Interface A (eUSCI_A) Overview

www.ti.com

17.1 Enhanced Universal Serial Communication Interface A (eUSCI_A) Overview
The eUSCI_A module supports two serial communication modes:
• UART mode
• SPI mode

17.2 eUSCI_A Introduction – UART Mode
In asynchronous mode, the eUSCI_Ax modules connect the device to an external system through two
external pins, UCAxRXD and UCAxTXD. UART mode is selected when the UCSYNC bit is cleared.
UART mode features include:
• 7-bit or 8-bit data with odd, even, or no parity
• Independent transmit and receive shift registers
• Separate transmit and receive buffer registers
• LSB-first or MSB-first data transmit and receive
• Built-in idle-line and address-bit communication protocols for multiprocessor systems
• Receiver start-edge detection for automatic wake up from LPMx modes (wake up from LPMx.5 is not
supported)
• Programmable baud rate with modulation for fractional baud-rate support
• Status flags for error detection and suppression
• Status flags for address detection
• Independent interrupt capability for receive, transmit, start bit received, and transmit complete
Figure 17-1 shows the eUSCI_Ax when configured for UART mode.

482

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Introduction – UART Mode

www.ti.com

UCMODEx

UCSPB

UCDORM

UCRXEIE

Set Flags

UCRXERR
UCPE
UCFE
UCOE

Set RXIFG

Set UCRXIFG

Error Flags

UCRXBRKIE

2
Receive State Machine
Set UCBRK
Set UCADDR /UCIDLE

Receive Buffer UCAxRXBUF

Receive Shift Register
UCPEN

UCPAR

UCIRRXPL
UCIRRXFLx
UCIRRXFE
UCIREN
6
UCLISTEN
1
IrDA Decoder
0
UCAxRXD
1
0
0
1

UCMSB UC7BIT

UCABEN
UCSSELx

Receive Baudrate Generator
UC0BRx

UCLK

00

Device specific

01

SMCLK

10

SMCLK

11

16
BRCLK

Prescaler/Divider

Receive Clock

Modulator

Transmit Clock

4
UCBRFx

UCPEN

8
UCBRSx

UCPAR

UCOS16

UCIREN

UCMSB UC7BIT

Transmit Shift Register

0
1
IrDA Encoder

Transmit Buffer UCAxTXBUF

UCAxTXD

6
UCIRTXPLx

Transmit State Machine

Set UCTXIFG
UCTXBRK
UCTXADDR

2
UCMODEx

UCSPB

Figure 17-1. eUSCI_Ax Block Diagram – UART Mode (UCSYNC = 0)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

483

eUSCI_A Operation – UART Mode

www.ti.com

17.3 eUSCI_A Operation – UART Mode
In UART mode, the eUSCI_A transmits and receives characters at a bit rate that is asynchronous to
another device. Timing for each character is based on the selected baud rate of the eUSCI_A. The
transmit and receive functions use the same baud-rate frequency.

17.3.1 eUSCI_A Initialization and Reset
The eUSCI_A is reset by a PUC or by setting the UCSWRST bit. After a PUC, the UCSWRST bit is
automatically set, keeping the eUSCI_A in a reset condition. When set, the UCSWRST bit sets the
UCTXIFG bit and resets the UCRXIE, UCTXIE, UCRXIFG, UCRXERR, UCBRK, UCPE, UCOE, UCFE,
UCSTOE, and UCBTOE bits. Clearing UCSWRST releases the eUSCI_A for operation.
To avoid unpredictable behavior, configure or reconfigure the eUSCI_A module when UCSWRST is set.
NOTE:

Initializing or reconfiguring the eUSCI_A module
The recommended eUSCI_A initialization/reconfiguration process is:
1. Set UCSWRST (BIS.B #UCSWRST,&UCAxCTL1).
2. Initialize all eUSCI_A registers while UCSWRST = 1 (including UCAxCTL1).
3. Configure ports.
4. Clear UCSWRST by software (BIC.B #UCSWRST,&UCAxCTL1).
5. Enable interrupts (optional) using UCRXIE or UCTXIE.

17.3.2 Character Format
The UART character format (see Figure 17-2) consists of a start bit, seven or eight data bits, an
even/odd/no parity bit, an address bit (address-bit mode), and one or two stop bits. The UCMSB bit
controls the direction of the transfer and selects LSB or MSB first. LSB first is typically required for UART
communication.
ST

D0

D6

D7 AD

PA

Mark

SP SP

Space
[2nd Stop Bit, UCSPB = 1]
[Parity Bit, UCPEN = 1]
[Address Bit, UCMODEx = 10]

[Optional Bit, Condition]

[8th Data Bit, UC7BIT = 0]

Figure 17-2. Character Format

17.3.3 Asynchronous Communication Format
When two devices communicate asynchronously, no multiprocessor format is required for the protocol.
When three or more devices communicate, the eUSCI_A supports the idle-line and address-bit
multiprocessor communication formats.
17.3.3.1 Idle-Line Multiprocessor Format
When UCMODEx = 01, the idle-line multiprocessor format is selected. Blocks of data are separated by an
idle time on the transmit or receive lines (see Figure 17-3). An idle receive line is detected when ten or
more continuous ones (marks) are received after the one or two stop bits of a character. The baud-rate
generator is switched off after reception of an idle line until the next start edge is detected. When an idle
line is detected, the UCIDLE bit is set.
The first character received after an idle period is an address character. The UCIDLE bit is used as an
address tag for each block of characters. In idle-line multiprocessor format, this bit is set when a received
character is an address.
484

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com
Blocks of
characters

UCAxTXD
UCAxRXD
Idle periods of 10 bits or more
UCAxTXD or UCAxRXD
Expanded

UCAxTXD
UCAxRXD
First character in block is
address, and it follows an
Idle period of 10 bits or more

Character within block

Character within block

Idle period fewer than 10 bits

Figure 17-3. Idle-Line Format
The UCDORM bit is used to control data reception in the idle-line multiprocessor format. When
UCDORM = 1, all nonaddress characters are assembled but not transferred into the UCAxRXBUF, and
interrupts are not generated. When an address character is received, the character is transferred into
UCAxRXBUF, UCRXIFG is set, and any applicable error flag is set when UCRXEIE = 1. When
UCRXEIE = 0 and an address character is received but has a framing error or parity error, the character is
not transferred into UCAxRXBUF, and UCRXIFG is not set.
If an address is received, user software can validate the address and must reset UCDORM to continue
receiving data. If UCDORM remains set, only address characters are received. When UCDORM is cleared
during the reception of a character, the receive interrupt flag is set after the reception completes. The
UCDORM bit is not modified automatically by the eUSCI_A hardware.
For address transmission in idle-line multiprocessor format, a precise idle period can be generated by the
eUSCI_A to generate address character identifiers on UCAxTXD. The double-buffered UCTXADDR flag
indicates if the next character loaded into UCAxTXBUF is preceded by an idle line of 11 bits. UCTXADDR
is automatically cleared when the start bit is generated.
17.3.3.1.1 Transmitting an Idle Frame
The following procedure sends out an idle frame to indicate an address character followed by associated
data:
1. Set UCTXADDR, then write the address character to UCAxTXBUF. UCAxTXBUF must be ready for
new data (UCTXIFG = 1).
This generates an idle period of exactly 11 bits followed by the address character. UCTXADDR is reset
automatically when the address character is transferred from UCAxTXBUF into the shift register.
2. Write desired data characters to UCAxTXBUF. UCAxTXBUF must be ready for new data
(UCTXIFG = 1).
The data written to UCAxTXBUF is transferred to the shift register and transmitted as soon as the shift
register is ready for new data.
The idle-line time must not be exceeded between address and data transmission or between data
transmissions. Otherwise, the transmitted data is misinterpreted as an address.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

485

eUSCI_A Operation – UART Mode

www.ti.com

17.3.3.2 Address-Bit Multiprocessor Format
When UCMODEx = 10, the address-bit multiprocessor format is selected. Each processed character
contains an extra bit used as an address indicator (see Figure 17-4). The first character in a block of
characters carries a set address bit that indicates that the character is an address. The eUSCI_A
UCADDR bit is set when a received character has its address bit set and is transferred to UCAxRXBUF.
The UCDORM bit is used to control data reception in the address-bit multiprocessor format. When
UCDORM is set, data characters with address bit = 0 are assembled by the receiver but are not
transferred to UCAxRXBUF and no interrupts are generated. When a character containing a set address
bit is received, the character is transferred into UCAxRXBUF, UCRXIFG is set, and any applicable error
flag is set when UCRXEIE = 1. When UCRXEIE = 0 and a character containing a set address bit is
received but has a framing error or parity error, the character is not transferred into UCAxRXBUF and
UCRXIFG is not set.
If an address is received, user software can validate the address and must reset UCDORM to continue
receiving data. If UCDORM remains set, only address characters with address bit = 1 are received. The
UCDORM bit is not modified by the eUSCI_A hardware automatically.
When UCDORM = 0, all received characters set the receive interrupt flag UCRXIFG. If UCDORM is
cleared during the reception of a character, the receive interrupt flag is set after the reception is
completed.
For address transmission in address-bit multiprocessor mode, the address bit of a character is controlled
by the UCTXADDR bit. The value of the UCTXADDR bit is loaded into the address bit of the character
transferred from UCAxTXBUF to the transmit shift register. UCTXADDR is automatically cleared when the
start bit is generated.
Blocks of
characters

UCAxTXD
UCAxRXD
Idle periods of no significance
UCAxTXD, UCAxRXD
Expanded

UCAxTXD
UCAxRXD

ST

Address

1 SP ST

First character within block
is an address, AD bit is 1

Data

AD bit is 0 for
data within block

0

SP

ST

Data

0 SP

Idle time is of no significance

Figure 17-4. Address-Bit Multiprocessor Format

17.3.3.2.1 Break Reception and Generation
When UCMODEx = 00, 01, or 10, the receiver detects a break when all data, parity, and stop bits are low,
regardless of the parity, address mode, or other character settings. When a break is detected, the UCBRK
bit is set. If the break interrupt enable bit (UCBRKIE) is set, the receive interrupt flag UCRXIFG is also set.
In this case, the value in UCAxRXBUF is 0h, because all data bits were zero.
To transmit a break, set the UCTXBRK bit, then write 0h to UCAxTXBUF. UCAxTXBUF must be ready for
new data (UCTXIFG = 1). This generates a break with all bits low. UCTXBRK is automatically cleared
when the start bit is generated.

486

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

17.3.4 Automatic Baud-Rate Detection
When UCMODEx = 11, UART mode with automatic baud-rate detection is selected. For automatic baudrate detection, a data frame is preceded by a synchronization sequence that consists of a break and a
synch field. A break is detected when 11 or more continuous zeros (spaces) are received. If the length of
the break exceeds 21 bit times, the break timeout error flag UCBTOE is set. The eUSCI_A cannot transmit
data while receiving the break/sync field. The synch field follows the break as shown in Figure 17-5.
Delimiter

Break

Synch

Figure 17-5. Auto Baud-Rate Detection – Break/Synch Sequence
For LIN conformance, the character format should be set to eight data bits, LSB first, no parity, and one
stop bit. No address bit is available.
The synch field consists of the data 055h inside a byte field (see Figure 17-6). The synchronization is
based on the time measurement between the first falling edge and the last falling edge of the pattern. The
transmit baud-rate generator is used for the measurement if automatic baud-rate detection is enabled by
setting UCABDEN. Otherwise, the pattern is received but not measured. The result of the measurement is
transferred into the baud-rate control registers (UCAxBRW and UCAxMCTLW). If the length of the synch
field exceeds the measurable time, the synch timeout error flag UCSTOE is set. The result can be read
after the receive interrupt flag UCRXIFG is set.
Synch
8 Bit Times

Start
0
Bit

1

2

3

4

5

6

7

Stop
Bit

Figure 17-6. Auto Baud-Rate Detection – Synch Field
The UCDORM bit is used to control data reception in this mode. When UCDORM is set, all characters are
received but not transferred into the UCAxRXBUF, and interrupts are not generated. When a break/synch
field is detected, the UCBRK flag is set. The character following the break/synch field is transferred into
UCAxRXBUF and the UCRXIFG interrupt flag is set. Any applicable error flag is also set. If the UCBRKIE
bit is set, reception of the break/synch sets the UCRXIFG. The UCBRK bit is reset by user software or by
reading the receive buffer UCAxRXBUF.
When a break/synch field is received, user software must reset UCDORM to continue receiving data. If
UCDORM remains set, only the character after the next reception of a break/synch field is received. The
UCDORM bit is not modified by the eUSCI_A hardware automatically.
When UCDORM = 0, all received characters set the receive interrupt flag UCRXIFG. If UCDORM is
cleared during the reception of a character, the receive interrupt flag is set after the reception is complete.
The counter used to detect the baud rate is limited to 0FFFFh (216) counts. This means the minimum baud
rate detectable is 244 baud in oversampling mode and 15 baud in low-frequency mode. The highest
detectable baud rate is 1 Mbaud.
The automatic baud-rate detection mode can be used in a full-duplex communication system with some
restrictions. The eUSCI_A cannot transmit data while receiving the break/sync field and, if a 0h byte with
framing error is received, any data transmitted during this time is corrupted. The latter case can be
discovered by checking the received data and the UCFE bit.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

487

eUSCI_A Operation – UART Mode

www.ti.com

17.3.4.1 Transmitting a Break/Synch Field
The following procedure transmits a break/synch field:
1. Set UCTXBRK with UMODEx = 11.
2. Write 055h to UCAxTXBUF. UCAxTXBUF must be ready for new data (UCTXIFG = 1).
This generates a break field of 13 bits followed by a break delimiter and the synch character. The
length of the break delimiter is controlled with the UCDELIMx bits. UCTXBRK is reset automatically
when the synch character is transferred from UCAxTXBUF into the shift register.
3. Write desired data characters to UCAxTXBUF. UCAxTXBUF must be ready for new data (UCTXIFG =
1).
The data written to UCAxTXBUF is transferred to the shift register and transmitted as soon as the shift
register is ready for new data.

17.3.5 IrDA Encoding and Decoding
When UCIREN is set, the IrDA encoder and decoder are enabled and provide hardware bit shaping for
IrDA communication.
17.3.5.1 IrDA Encoding
The encoder sends a pulse for every zero bit in the transmit bit stream coming from the UART (see
Figure 17-7). The pulse duration is defined by UCIRTXPLx bits specifying the number of one-half clock
periods of the clock selected by UCIRTXCLK.
Start
Bit

Stop
Bit

Data Bits

UART

IrDA

Figure 17-7. UART vs IrDA Data Format
To set the pulse time of 3/16 bit period required by the IrDA standard, the BITCLK16 clock is selected with
UCIRTXCLK = 1, and the pulse length is set to six one-half clock cycles with UCIRTXPLx = 6 – 1 = 5.
When UCIRTXCLK = 0, the pulse length tPULSE is based on BRCLK and is calculated as:
UCIRTXPLx = tPULSE × 2 × fBRCLK – 1
When UCIRTXCLK = 0, the prescaler UCBRx must be set to a value greater or equal to 5.
17.3.5.2 IrDA Decoding
The decoder detects high pulses when UCIRRXPL = 0. Otherwise, it detects low pulses. In addition to the
analog deglitch filter, an additional programmable digital filter stage can be enabled by setting UCIRRXFE.
When UCIRRXFE is set, only pulses longer than the programmed filter length are passed. Shorter pulses
are discarded. The equation to program the filter length UCIRRXFLx is:
UCIRRXFLx = (tPULSE − tWAKE) × 2 × fBRCLK – 4
Where:
tPULSE = Minimum receive pulse width
tWAKE = Wake time from any low-power mode. Zero when the device is in active mode.

488

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

17.3.6 Automatic Error Detection
Glitch suppression prevents the eUSCI_A from being accidentally started. Any pulse on UCAxRXD shorter
than the deglitch time tt (selected by UCGLITx) is ignored (see the device-specific data sheet for
parameters).
When a low period on UCAxRXD exceeds tt, a majority vote is taken for the start bit. If the majority vote
fails to detect a valid start bit, the eUSCI_A halts character reception and waits for the next low period on
UCAxRXD. The majority vote is also used for each bit in a character to prevent bit errors.
The eUSCI_A module automatically detects framing errors, parity errors, overrun errors, and break
conditions when receiving characters. The bits UCFE, UCPE, UCOE, and UCBRK are set when their
respective condition is detected. When the error flags UCFE, UCPE, or UCOE are set, UCRXERR is also
set. The error conditions are described in Table 17-1.
Table 17-1. Receive Error Conditions
Error Condition

Error Flag

Description

Framing error

UCFE

A framing error occurs when a low stop bit is detected. When two stop bits are used, both
stop bits are checked for framing error. When a framing error is detected, the UCFE bit is set.

Parity error

UCPE

A parity error is a mismatch between the number of 1s in a character and the value of the
parity bit. When an address bit is included in the character, it is included in the parity
calculation. When a parity error is detected, the UCPE bit is set.

Receive overrun

UCOE

An overrun error occurs when a character is loaded into UCAxRXBUF before the prior
character has been read. When an overrun occurs, the UCOE bit is set.

Break condition

UCBRK

When not using automatic baud-rate detection, a break is detected when all data, parity, and
stop bits are low. When a break condition is detected, the UCBRK bit is set. A break condition
can also set the interrupt flag UCRXIFG if the break interrupt enable UCBRKIE bit is set.

When UCRXEIE = 0 and a framing error or parity error is detected, no character is received into
UCAxRXBUF. When UCRXEIE = 1, characters are received into UCAxRXBUF and any applicable error
bit is set.
When any of the UCFE, UCPE, UCOE, UCBRK, or UCRXERR bit is set, the bit remains set until user
software resets it or UCAxRXBUF is read. UCOE must be reset by reading UCAxRXBUF. Otherwise, it
does not function properly. To detect overflows reliably, the following flow is recommended. After a
character is received and UCAxRXIFG is set, first read UCAxSTATW to check the error flags including the
overflow flag UCOE. Read UCAxRXBUF next. This clears all error flags except UCOE, if UCAxRXBUF
was overwritten between the read access to UCAxSTATW and to UCAxRXBUF. Therefore, the UCOE flag
should be checked after reading UCAxRXBUF to detect this condition. Note that, in this case, the
UCRXERR flag is not set.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

489

eUSCI_A Operation – UART Mode

www.ti.com

17.3.7 eUSCI_A Receive Enable
The eUSCI_A module is enabled by clearing the UCSWRST bit and the receiver is ready and in an idle
state. The receive baud rate generator is in a ready state but is not clocked nor producing any clocks.
The falling edge of the start bit enables the baud rate generator and the UART state machine checks for a
valid start bit. If no valid start bit is detected the UART state machine returns to its idle state and the baud
rate generator is turned off again. If a valid start bit is detected, a character is received.
When the idle-line multiprocessor mode is selected with UCMODEx = 01, the UART state machine checks
for an idle line after receiving a character. If a start bit is detected, another character is received.
Otherwise, the UCIDLE flag is set after 10 ones are received, the UART state machine returns to its idle
state, and the baud rate generator is turned off.
17.3.7.1 Receive Data Glitch Suppression
Glitch suppression prevents the eUSCI_A from being accidentally started. Any glitch on UCAxRXD shorter
than the deglitch time tt is ignored by the eUSCI_A, and further action is initiated as shown in Figure 17-8
(see the device-specific data sheet for parameters). The deglitch time tt can be set to four different values
using the UCGLITx bits.
UCAxRXD

URXS
tt

Figure 17-8. Glitch Suppression, eUSCI_A Receive Not Started
When a glitch is longer than tt, or a valid start bit occurs on UCAxRXD, the eUSCI_A receive operation is
started and a majority vote is taken (see Figure 17-9). If the majority vote fails to detect a start bit, the
eUSCI_A halts character reception.
Majority Vote Taken

URXS
tt

Figure 17-9. Glitch Suppression, eUSCI_A Activated

17.3.8 eUSCI_A Transmit Enable
The eUSCI_A module is enabled by clearing the UCSWRST bit and the transmitter is ready and in an idle
state. The transmit baud-rate generator is ready but is not clocked nor producing any clocks.
A transmission is initiated by writing data to UCAxTXBUF. When this occurs, the baud-rate generator is
enabled, and the data in UCAxTXBUF is moved to the transmit shift register on the next BITCLK after the
transmit shift register is empty. UCTXIFG is set when new data can be written into UCAxTXBUF.
Transmission continues as long as new data is available in UCAxTXBUF at the end of the previous byte
transmission. If new data is not in UCAxTXBUF when the previous byte has transmitted, the transmitter
returns to its idle state and the baud-rate generator is turned off.

490

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

17.3.9 UART Baud-Rate Generation
The eUSCI_A baud-rate generator is capable of producing standard baud rates from nonstandard source
frequencies. It provides two modes of operation selected by the UCOS16 bit.
A quick setup for finding the correct baud rate settings for the eUSCI_A can be found in Section 17.3.10.
17.3.9.1 Low-Frequency Baud-Rate Generation
The low-frequency mode is selected when UCOS16 = 0. This mode allows generation of baud rates from
low-frequency clock sources (for example, 9600 baud from a 32768-Hz crystal). By using a lower input
frequency, the power consumption of the module is reduced. Using this mode with higher frequencies and
higher prescaler settings causes the majority votes to be taken in an increasingly smaller window and,
thus, decrease the benefit of the majority vote.
In low-frequency mode, the baud-rate generator uses one prescaler and one modulator to generate bit
clock timing. This combination supports fractional divisors for baud-rate generation. In this mode, the
maximum eUSCI_A baud rate is one-third the UART source clock frequency BRCLK.
Timing for each bit is shown in Figure 17-10. For each bit received, a majority vote is taken to determine
the bit value. These samples occur at the N/2 – 1/2, N/2, and N/2 + 1/2 BRCLK periods, where N is the
number of BRCLKs per BITCLK.
Majority Vote:

(m= 0)
(m= 1)

Bit Start
BRCLK
Counter

N/2

N/2-1 N/2-2

1

N/2

1

0

N/2-1 N/2-2
N/2

N/2-1

1

N/2

N/2-1

1

0

N/2

BITCLK
NEVEN: INT(N/2)

INT(N/2) + m(= 0)

NODD: INT(N/2) + R(= 1)

INT(N/2) + m(= 1)
Bit Period
m: corresponding modulation bit
R: Remainder from N/2 division

Figure 17-10. BITCLK Baud-Rate Timing With UCOS16 = 0
Modulation is based on the UCBRSx setting as shown in Table 17-2. A 1 in the table indicates that m = 1
and the corresponding BITCLK period is one BRCLK period longer than a BITCLK period with m = 0. The
modulation wraps around after 8 bits but restarts with each new start bit.
Table 17-2. Modulation Pattern Examples
UCBRSx

Bit 0
(Start Bit)

Bit 1

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

0x00

0

0

0

0

0

0

0

0

0x01

0

0

0

0

0

0

0

1

⋮
0x35

0

0

1

1

0

1

0

1

0x36

0

0

1

1

0

1

1

0

0x37

0

0

1

1

0

1

1

1

1

1

1

1

⋮
0xFF

1

1

1

1

The correct setting of UCBRSx can be found as described in Section 17.3.10.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

491

eUSCI_A Operation – UART Mode

www.ti.com

17.3.9.2 Oversampling Baud-Rate Generation
The oversampling mode is selected when UCOS16 = 1. This mode supports sampling a UART bit stream
with higher input clock frequencies. This results in majority votes that are always 1/16 of a bit clock period
apart. This mode also easily supports IrDA pulses with a 3/16 bit time when the IrDA encoder and decoder
are enabled.
This mode uses one prescaler and one modulator to generate the BITCLK16 clock that is 16 times faster
than the BITCLK. An additional divider by 16 and modulator stage generates BITCLK from BITCLK16.
This combination supports fractional divisions of both BITCLK16 and BITCLK for baud-rate generation. In
this mode, the maximum eUSCI_A baud rate is 1/16 the UART source clock frequency BRCLK.
Modulation for BITCLK16 is based on the UCBRFx setting (see Table 17-3). A 1 in the table indicates that
the corresponding BITCLK16 period is one BRCLK period longer than the periods m = 0. The modulation
restarts with each new bit timing.
Modulation for BITCLK is based on the UCBRSx setting as previously described.
Table 17-3. BITCLK16 Modulation Pattern
UCBRFx

492

Number of BITCLK16 Clocks After Last Falling BITCLK Edge
0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

00h

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

01h

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

02h

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

1

03h

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

1

04h

0

1

1

0

0

0

0

0

0

0

0

0

0

0

1

1

05h

0

1

1

1

0

0

0

0

0

0

0

0

0

0

1

1

06h

0

1

1

1

0

0

0

0

0

0

0

0

0

1

1

1

07h

0

1

1

1

1

0

0

0

0

0

0

0

0

1

1

1

08h

0

1

1

1

1

0

0

0

0

0

0

0

1

1

1

1

09h

0

1

1

1

1

1

0

0

0

0

0

0

1

1

1

1

0Ah

0

1

1

1

1

1

0

0

0

0

0

1

1

1

1

1

0Bh

0

1

1

1

1

1

1

0

0

0

0

1

1

1

1

1

0Ch

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

1

0Dh

0

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

0Eh

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

0Fh

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

17.3.10 Setting a Baud Rate
For a given BRCLK clock source, the baud rate used determines the required division factor N:
N = fBRCLK/Baud Rate
The division factor N is often a noninteger value, thus, at least one divider and one modulator stage is
used to meet the factor as closely as possible.
If N is equal or greater than 16, it is recommended to use the oversampling baud-rate generation mode by
setting UCOS16.
NOTE:

Baud Rate settings quick set up
To calculate the correct the correct settings for the baud rate generation, perform these
steps:
1. Calculate N = fBRCLK/Baud Rate
[if N > 16 continue with step 3, otherwise with step 2]
2. OS16 = 0, UCBRx = INT(N) [continue with step 4]
3. OS16 = 1, UCBRx = INT(N/16), UCBRFx = INT([(N/16) – INT(N/16)] × 16)
4. UCBRSx can be found by looking up the fractional part of N ( = N - INT(N) ) in table
Table 17-4
5. If OS16 = 0 was chosen, a detailed error calculation is recommended to be performed

Table 17-4 can be used as a lookup table for finding the correct UCBRSx modulation pattern for the
corresponding fractional part of N. The values there are optimized for transmitting.
Table 17-4. UCBRSx Settings for Fractional Portion of N = fBRCLK/Baud Rate

(1)

Fractional Portion of N

UCBRSx (1)

Fractional Portion of N

UCBRSx (1)

0.0000

0x00

0.5002

0xAA

0.0529

0x01

0.5715

0x6B

0.0715

0x02

0.6003

0xAD

0.0835

0x04

0.6254

0xB5

0.1001

0x08

0.6432

0xB6

0.1252

0x10

0.6667

0xD6

0.1430

0x20

0.7001

0xB7

0.1670

0x11

0.7147

0xBB

0.2147

0x21

0.7503

0xDD

0.2224

0x22

0.7861

0xED

0.2503

0x44

0.8004

0xEE

0.3000

0x25

0.8333

0xBF

0.3335

0x49

0.8464

0xDF

0.3575

0x4A

0.8572

0xEF

0.3753

0x52

0.8751

0xF7

0.4003

0x92

0.9004

0xFB

0.4286

0x53

0.9170

0xFD

0.4378

0x55

0.9288

0xFE

The UCBRSx setting in one row is valid from the fractional portion given in that row until the one in the next row

17.3.10.1 Low-Frequency Baud-Rate Mode Setting
In low-frequency mode, the integer portion of the divisor is realized by the prescaler:
UCBRx = INT(N)
The fractional portion is realized by the modulator with its UCBRSx setting. The recommended way of
determining the correct UCBRSx is performing a detailed error calculation as explained in the following
sections. However it is also possible to look up the correct settings in table with typical crystals (see
Table 17-5).
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

493

eUSCI_A Operation – UART Mode

www.ti.com

17.3.10.2 Oversampling Baud-Rate Mode Setting
In the oversampling mode, the prescaler is set to:
UCBRx = INT(N/16)
and the first stage modulator is set to:
UCBRFx = INT([(N/16) – INT(N/16)] × 16)
The second modulation stage setting (UCBRSx) can be found by performing a detailed error calculation or
by using Table 17-4 and the fractional part of N = fBRCLK/Baud Rate.

17.3.11 Transmit Bit Timing - Error calculation
The timing for each character is the sum of the individual bit timings. Using the modulation features of the
baud-rate generator reduces the cumulative bit error. The individual bit error can be calculated using the
following steps.
17.3.11.1 Low-Frequency Baud-Rate Mode Bit Timing
In low-frequency mode, calculation of the length of bit i tbit,TX[i] is based on the UCBRx and UCBRSx
settings:
tbit,TX[i] = (1/fBRCLK)(UCBRx + mUCBRSx[i])
Where:
mUCBRSx[i] = Modulation of bit i of UCBRSx
17.3.11.2 Oversampling Baud-Rate Mode Bit Timing
In oversampling baud-rate mode, calculation of the length of bit i Tbit,TX[i] is based on the baud-rate
generator UCBRx, UCBRFx and UCBRSx settings:

tbit,TX[i] =

(

1
fBRCLK

15

(16 × UCBRx) +
j=0

mUCBRFx[j] + mUCBRSx[i]

(

Where:
15

mUCBRFx[j]
≤ j=0
= Sum of ones from the corresponding row in Table 17-3
mUCBRSx[i] = Modulation of bit i of UCBRSx

This results in an end-of-bit time tbit,TX[i] equal to the sum of all previous and the current bit times:
i

tbit,TX[i] =

St

[j]

bit,TX

j=0

To calculate bit error, this time is compared to the ideal bit time tbit,ideal,TX[i]:
tbit,ideal,TX[i] = (1/Baud Rate)(i + 1)
This results in an error normalized to one ideal bit time (1/baud rate):
ErrorTX[i] = (tbit,TX[i] – tbit,ideal,TX[i]) × Baud Rate × 100%

17.3.12 Receive Bit Timing – Error Calculation
Receive timing error consists of two error sources. The first is the bit-to-bit timing error similar to the
transmit bit timing error. The second is the error between a start edge occurring and the start edge being
accepted by the eUSCI_A module. Figure 17-11 shows the asynchronous timing errors between data on
the UCAxRXD pin and the internal baud-rate clock. This results in an additional synchronization error. The
synchronization error tSYNC is between –0.5 BRCLKs and +0.5 BRCLKs, independent of the selected baudrate generation mode.

494

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

i

1

0

tideal

2

t1

t0

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

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

BRCLK
UCAxRXD

ST

D0

D1

RXD synch.

ST

D0

D1

t0
Synchronization Error ± 0.5x BRCLK

tactual

t1

t2

Sample
RXD synch.
Majority Vote Taken

Majority Vote Taken

Majority Vote Taken

Figure 17-11. Receive Error
The ideal sampling time tbit,ideal,RX[i] is in the middle of a bit period:
tbit,ideal,RX[i] = (1/Baud Rate)(i + 0.5)
The real sampling time, tbit,RX[i], is equal to the sum of all previous bits according to the formulas shown in
the transmit timing section, plus one-half BITCLK for the current bit i, plus the synchronization error tSYNC.
This results in the following tbit,RX[i] for the low-frequency baud-rate mode:
i–1

tbit,RX[i] = tSYNC +
j=0

Tbit,RX[j] + 1
fBRCLK INT(½UCBRx) + mUCBRSx[i]

(

(

Where:
tbit,RX[i] = (1/fBRCLK)(UCBRx + mUCBRSx[i])
mUCBRSx[i] = Modulation of bit i of UCBRSx
For the oversampling baud-rate mode, the sampling time tbit,RX[i] of bit i is calculated by:
i–1

Tbit,RX[j] +

tbit,RX[i] = tSYNC +
j=0

1
fBRCLK

((8 * UCBRx) +

7

(

mUCBRFx[j] + mUCBRSx[i]
j=0

Where:

tbit,RX[i] =

1
fBRCLK

((16 × UCBRx) +

15
j=0

mUCBRFx[j] + mUCBRSx[i]

(

7 + mUCBRSx[i]

mUCBRFx[j]

= Sum of ones from columns 0 to (7 + mUCBRSx[i]) from the corresponding row in
Table 17-3.
mUCBRSx[i] = Modulation of bit i of UCBRSx
j=0

This results in an error normalized to one ideal bit time (1/baud rate) according to the following formula:
ErrorRX[i] = (tbit,RX[i] – tbit,ideal,RX[i]) × Baud Rate × 100%

17.3.13 Typical Baud Rates and Errors
Standard baud-rate data for UCBRx, UCBRSx, and UCBRFx are listed in Table 17-5 for a 32768-Hz
crystal sourcing ACLK and typical SMCLK frequencies. Make sure that the selected BRCLK frequency
does not exceed the device specific maximum eUSCI_A input frequency (see the device-specific data
sheet).
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

495

eUSCI_A Operation – UART Mode

www.ti.com

The receive error is the accumulated time versus the ideal scanning time in the middle of each bit. The
worst-case error is given for the reception of an 8-bit character with parity and one stop bit including
synchronization error.
The transmit error is the accumulated timing error versus the ideal time of the bit period. The worst-case
error is given for the transmission of an 8-bit character with parity and stop bit.
Table 17-5. Recommended Settings for Typical Crystals and Baud Rates
BRCLK

Baud Rate

UCOS16

UCBRx

UCBRFx

32768

1200

32768

2400

1

1

11

0

13

-

32768

4800

0

6

-

UCBRSx

TX Error (%)

RX Error (%)

neg

pos

neg

pos

0x25

-2.29

2.25

-2.56

5.35

0xB6

-3.12

3.91

-5.52

8.84

0xEE

-7.62

8.98

-21

10.25

32768

9600

0

3

-

0x92

-17.19

16.02

-23.24

37.3

1000000

9600

1

6

8

0x20

-0.48

0.64

-1.04

1.04

1000000

19200

1

3

4

0x2

-0.8

0.96

-1.84

1.84

1000000

38400

1

1

10

0x0

0

1.76

0

3.44

1000000

57600

0

17

-

0x4A

-2.72

2.56

-3.76

7.28

1000000

115200

0

8

-

0xD6

-7.36

5.6

-17.04

6.96

1048576

9600

1

6

13

0x22

-0.46

0.42

-0.48

1.23

1048576

19200

1

3

6

0xAD

-0.88

0.83

-2.36

1.18

1048576

38400

1

1

11

0x25

-2.29

2.25

-2.56

5.35

1048576

57600

0

18

-

0x11

-2

3.37

-5.31

5.55

1048576

115200

0

9

-

0x08

-5.37

4.49

-5.93

14.92

4000000

9600

1

26

0

0xB6

-0.08

0.16

-0.28

0.2

4000000

19200

1

13

0

0x84

-0.32

0.32

-0.64

0.48

4000000

38400

1

6

8

0x20

-0.48

0.64

-1.04

1.04

4000000

57600

1

4

5

0x55

-0.8

0.64

-1.12

1.76

4000000

115200

1

2

2

0xBB

-1.44

1.28

-3.92

1.68

4000000

230400

0

17

-

0x4A

-2.72

2.56

-3.76

7.28

4194304

9600

1

27

4

0xFB

-0.11

0.1

-0.33

0

4194304

19200

1

13

10

0x55

-0.21

0.21

-0.55

0.33

4194304

38400

1

6

13

0x22

-0.46

0.42

-0.48

1.23

4194304

57600

1

4

8

0xEE

-0.75

0.74

-2

0.87

4194304

115200

1

2

4

0x92

-1.62

1.37

-3.56

2.06

4194304

230400

0

18

-

0x11

-2

3.37

-5.31

5.55

8000000

9600

1

52

1

0x49

-0.08

0.04

-0.1

0.14

8000000

19200

1

26

0

0xB6

-0.08

0.16

-0.28

0.2

8000000

38400

1

13

0

0x84

-0.32

0.32

-0.64

0.48

8000000

57600

1

8

10

0xF7

-0.32

0.32

-1

0.36

8000000

115200

1

4

5

0x55

-0.8

0.64

-1.12

1.76

8000000

230400

1

2

2

0xBB

-1.44

1.28

-3.92

1.68

8000000

460800

0

17

-

0x4A

-2.72

2.56

-3.76

7.28

8388608

9600

1

54

9

0xEE

-0.06

0.06

-0.11

0.13

8388608

19200

1

27

4

0xFB

-0.11

0.1

-0.33

0

8388608

38400

1

13

10

0x55

-0.21

0.21

-0.55

0.33

8388608

57600

1

9

1

0xB5

-0.31

0.31

-0.53

0.78

8388608

115200

1

4

8

0xEE

-0.75

0.74

-2

0.87

8388608

230400

1

2

4

0x92

-1.62

1.37

-3.56

2.06

8388608

460800

0

18

-

0x11

-2

3.37

-5.31

5.55

12000000

9600

1

78

2

0x0

0

0

0

0.04

496 Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A Operation – UART Mode

www.ti.com

Table 17-5. Recommended Settings for Typical Crystals and Baud Rates (continued)
UCBRSx

TX Error (%)

BRCLK

Baud Rate

UCOS16

UCBRx

UCBRFx

12000000

19200

1

39

1

0x0

0

12000000

38400

1

19

8

0x65

-0.16

12000000

57600

1

13

0

0x25

-0.16

12000000

115200

1

6

8

0x20

12000000

230400

1

3

4

12000000

460800

1

1

10

16000000

9600

1

104

2

16000000

19200

1

52

16000000

38400

1

26

16000000

57600

1

16000000

115200

16000000

230400

16000000

neg

pos

RX Error (%)
neg

pos

0

0

0.16

0.16

-0.4

0.24

0.32

-0.48

0.48

-0.48

0.64

-1.04

1.04

0x2

-0.8

0.96

-1.84

1.84

0x0

0

1.76

0

3.44

0xD6

-0.04

0.02

-0.09

0.03

1

0x49

-0.08

0.04

-0.1

0.14

0

0xB6

-0.08

0.16

-0.28

0.2

17

5

0xDD

-0.16

0.2

-0.3

0.38

1

8

10

0xF7

-0.32

0.32

-1

0.36

1

4

5

0x55

-0.8

0.64

-1.12

1.76

460800

1

2

2

0xBB

-1.44

1.28

-3.92

1.68

16777216

9600

1

109

3

0xB5

-0.03

0.02

-0.05

0.06

16777216

19200

1

54

9

0xEE

-0.06

0.06

-0.11

0.13

16777216

38400

1

27

4

0xFB

-0.11

0.1

-0.33

0

16777216

57600

1

18

3

0x44

-0.16

0.15

-0.2

0.45

16777216

115200

1

9

1

0xB5

-0.31

0.31

-0.53

0.78

16777216

230400

1

4

8

0xEE

-0.75

0.74

-2

0.87

16777216

460800

1

2

4

0x92

-1.62

1.37

-3.56

2.06

20000000

9600

1

130

3

0x25

-0.02

0.03

0

0.07

20000000

19200

1

65

1

0xD6

-0.06

0.03

-0.1

0.1

20000000

38400

1

32

8

0xEE

-0.1

0.13

-0.27

0.14

20000000

57600

1

21

11

0x22

-0.16

0.13

-0.16

0.38

20000000

115200

1

10

13

0xAD

-0.29

0.26

-0.46

0.66

20000000

230400

1

5

6

0xEE

-0.67

0.51

-1.71

0.62

20000000

460800

1

2

11

0x92

-1.38

0.99

-1.84

2.8

17.3.14 Using the eUSCI_A Module in UART Mode With Low-Power Modes
The eUSCI_A module provides automatic clock activation for use with low-power modes. When the
eUSCI_A clock source is inactive because the device is in a low-power mode, the eUSCI_A module
automatically activates it when needed, regardless of the control-bit settings for the clock source. The
clock remains active until the eUSCI_A module returns to its idle condition. After the eUSCI_A module
returns to the idle condition, control of the clock source reverts to the settings of its control bits.

17.3.15 eUSCI_A Interrupts
The eUSCI_A has only one interrupt vector that is shared for transmission and for reception.
17.3.15.1 eUSCI_A Transmit Interrupt Operation
The UCTXIFG interrupt flag is set by the transmitter to indicate that UCAxTXBUF is ready to accept
another character. An interrupt request is generated if UCTXIE and GIE are also set. UCTXIFG is
automatically reset if a character is written to UCAxTXBUF.
UCTXIFG is set after a PUC or when UCSWRST = 1. UCTXIE is reset after a PUC or when
UCSWRST = 1.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

497

eUSCI_A Operation – UART Mode

www.ti.com

17.3.15.2 eUSCI_A Receive Interrupt Operation
The UCRXIFG interrupt flag is set each time a character is received and loaded into UCAxRXBUF. An
interrupt request is generated if UCRXIE and GIE are also set. UCRXIFG and UCRXIE are reset by a
system reset PUC signal or when UCSWRST = 1. UCRXIFG is automatically reset when UCAxRXBUF is
read.
Additional interrupt control features include:
• When UCRXEIE = 0, erroneous characters do not set UCRXIFG.
• When UCDORM = 1, nonaddress characters do not set UCRXIFG in multiprocessor modes. In plain
UART mode, no characters can set UCRXIFG.
• When UCBRKIE = 1, a break condition sets the UCBRK bit and the UCRXIFG flag.
17.3.15.3 eUSCI_A Receive Interrupt Operation
Table 17-6 describes the I2C state change interrupt flags.
Table 17-6. UART State Change Interrupt Flags
Interrupt Flag

Interrupt Condition

UCSTTIFG

START byte received interrupt. This flag is set when the UART module receives a START byte.

UCTXCPTIFG

Transmit complete interrupt. This flag is set, after the complete UART byte in the internal shift register
including STOP bit got shifted out and UCAxTXBUF is empty.

17.3.15.4 UCAxIV, Interrupt Vector Generator
The eUSCI_A interrupt flags are prioritized and combined to source a single interrupt vector. The interrupt
vector register UCAxIV is used to determine which flag requested an interrupt. The highest-priority
enabled interrupt generates a number in the UCAxIV register that can be evaluated or added to the
program counter to automatically enter the appropriate software routine. Disabled interrupts do not affect
the UCAxIV value.
Read access of the UCAxIV register automatically resets the highest-pending Interrupt condition and flag.
Write access of the UCAxIV register clears all pending Interrupt conditions and flags. If another interrupt
flag is set, another interrupt is generated immediately after servicing the initial interrupt.
Example 17-1 shows the recommended use of UCAxIV. The UCAxIV value is added to the PC to
automatically jump to the appropriate routine. The following example is given for eUSCI_A0.
Example 17-1. UCAxIV Software Example
#pragma vector = USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) {
switch(__even_in_range(UCA0IV,18)) {
case 0x00:
// Vector 0: No interrupts
break;
case 0x02: ... // Vector 2: UCRXIFG
break;
case 0x04: ... // Vector 4: UCTXIFG
break;
case 0x06: ... // Vector 6: UCSTTIFG
break;
case 0x08: ... // Vector 8: UCTXCPTIFG
break;
default: break;
}
}

498

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

17.4 eUSCI_A UART Registers
The eUSCI_A registers applicable in UART mode and their address offsets are listed in Table 17-7. The
base address can be found in the device-specific data sheet.
Table 17-7. eUSCI_A UART Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

UCAxCTLW0

eUSCI_Ax Control Word 0

Read/write

Word

0001h

Section 17.4.1

eUSCI_Ax Control 0

Read/write

Byte

00h

01h
00h

UCAxCTL0 (1)

eUSCI_Ax Control 1

Read/write

Byte

01h

02h

UCAxCTLW1

UCAxCTL1

eUSCI_Ax Control Word 1

Read/write

Word

0003h

Section 17.4.2

06h

UCAxBRW

eUSCI_Ax Baud Rate Control Word

Read/write

Word

0000h

Section 17.4.3

(1)

06h

UCAxBR0

eUSCI_Ax Baud Rate Control 0

Read/write

Byte

00h

07h

UCAxBR1

eUSCI_Ax Baud Rate Control 1

Read/write

Byte

00h

08h

UCAxMCTLW

eUSCI_Ax Modulation Control Word

Read/write

Word

00h

Section 17.4.4

0Ah

UCAxSTATW

eUSCI_Ax Status

Read/write

Word

00h

Section 17.4.5

0Ch

UCAxRXBUF

eUSCI_Ax Receive Buffer

Read/write

Word

00h

Section 17.4.6

0Eh

UCAxTXBUF

eUSCI_Ax Transmit Buffer

Read/write

Word

00h

Section 17.4.7

10h

UCAxABCTL

eUSCI_Ax Auto Baud Rate Control

Read/write

Word

00h

Section 17.4.8

12h

UCAxIRCTL

eUSCI_Ax IrDA Control

Section 17.4.9

Read/write

Word

0000h

12h

UCAxIRTCTL

eUSCI_Ax IrDA Transmit Control

Read/write

Byte

00h

13h

UCAxIRRCTL

eUSCI_Ax IrDA Receive Control

Read/write

Byte

00h

1Ah

UCAxIE

eUSCI_Ax Interrupt Enable

Read/write

Word

00h

Section 17.4.10

1Ch

UCAxIFG

eUSCI_Ax Interrupt Flag

Read/write

Word

02h

Section 17.4.11

1Eh

UCAxIV

eUSCI_Ax Interrupt Vector

Read

Word

0000h

Section 17.4.12

(1)

It is recommended to access these registers using 16-bit access. If 8-bit access is used, the corresponding bit names must be
followed by "_H".

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

499

eUSCI_A UART Registers

www.ti.com

17.4.1 UCAxCTLW0 Register
eUSCI_Ax Control Word Register 0
Figure 17-12. UCAxCTLW0 Register
15
UCPEN
rw-0

14
UCPAR
rw-0

13
UCMSB
rw-0

12
UC7BIT
rw-0

11
UCSPB
rw-0

rw-0

rw-0

8
UCSYNC
rw-0

7

6

5
UCRXEIE
rw-0

4
UCBRKIE
rw-0

3
UCDORM
rw-0

2
UCTXADDR
rw-0

1
UCTXBRK
rw-0

0
UCSWRST
rw-1

UCSSELx
rw-0

rw-0

10

9
UCMODEx

Modify only when UCSWRST = 1

Table 17-8. UCAxCTLW0 Register Description
Bit

Field

Type

Reset

Description

15

UCPEN

RW

0h

Parity enable
0b = Parity disabled
1b = Parity enabled. Parity bit is generated (UCAxTXD) and expected
(UCAxRXD). In address-bit multiprocessor mode, the address bit is included in
the parity calculation.

14

UCPAR

RW

0h

Parity select. UCPAR is not used when parity is disabled.
0b = Odd parity
1b = Even parity

13

UCMSB

RW

0h

MSB first select. Controls the direction of the receive and transmit shift register.
0b = LSB first
1b = MSB first

12

UC7BIT

RW

0h

Character length. Selects 7-bit or 8-bit character length.
0b = 8-bit data
1b = 7-bit data

11

UCSPB

RW

0h

Stop bit select. Number of stop bits.
0b = One stop bit
1b = Two stop bits

10-9

UCMODEx

RW

0h

eUSCI_A mode. The UCMODEx bits select the asynchronous mode when
UCSYNC = 0.
00b = UART mode
01b = Idle-line multiprocessor mode
10b = Address-bit multiprocessor mode
11b = UART mode with automatic baud-rate detection

8

UCSYNC

RW

0h

Synchronous mode enable
0b = Asynchronous mode
1b = Synchronous mode

7-6

UCSSELx

RW

0h

eUSCI_A clock source select. These bits select the BRCLK source clock.
00b = UCLK
01b = Device specific
10b = SMCLK
11b = SMCLK

5

UCRXEIE

RW

0h

Receive erroneous-character interrupt enable
0b = Erroneous characters rejected and UCRXIFG is not set.
1b = Erroneous characters received set UCRXIFG.

4

UCBRKIE

RW

0h

Receive break character interrupt enable
0b = Received break characters do not set UCRXIFG.
1b = Received break characters set UCRXIFG.

500

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

Table 17-8. UCAxCTLW0 Register Description (continued)
Bit

Field

Type

Reset

Description

3

UCDORM

RW

0h

Dormant. Puts eUSCI_A into sleep mode.
0b = Not dormant. All received characters set UCRXIFG.
1b = Dormant. Only characters that are preceded by an idle-line or with address
bit set UCRXIFG. In UART mode with automatic baud-rate detection, only the
combination of a break and synch field sets UCRXIFG.

2

UCTXADDR

RW

0h

Transmit address. Next frame to be transmitted is marked as address, depending
on the selected multiprocessor mode.
0b = Next frame transmitted is data.
1b = Next frame transmitted is an address.

1

UCTXBRK

RW

0h

Transmit break. Transmits a break with the next write to the transmit buffer. In
UART mode with automatic baud-rate detection, 055h must be written into
UCAxTXBUF to generate the required break/synch fields. Otherwise, 0h must be
written into the transmit buffer.
0b = Next frame transmitted is not a break.
1b = Next frame transmitted is a break or a break/synch.

0

UCSWRST

RW

1h

Software reset enable
0b = Disabled. eUSCI_A reset released for operation.
1b = Enabled. eUSCI_A logic held in reset state.

17.4.2 UCAxCTLW1 Register
eUSCI_Ax Control Word Register 1
Figure 17-13. UCAxCTLW1 Register
15

14

13

12

11

10

9

8
r-0

Reserved
r-0

r-0

r-0

r-0

r-0

r-0

r-0

7

6

5

4

3

2

1

Reserved
r-0

r-0

r-0

0
UCGLITx

r-0

r-0

r-0

rw-1

rw-1

Table 17-9. UCAxCTLW1 Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved

1-0

UCGLITx

RW

3h

Deglitch time
00b = Approximately 2 ns
01b = Approximately 50 ns
10b = Approximately 100 ns
11b = Approximately 200 ns

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

501

eUSCI_A UART Registers

www.ti.com

17.4.3 UCAxBRW Register
eUSCI_Ax Baud Rate Control Word Register
Figure 17-14. UCAxBRW Register
15

14

13

12

11

10

9

8

rw

rw

rw

rw

3

2

1

0

rw

rw

rw

rw

UCBRx
rw

rw

rw

rw

7

6

5

4
UCBRx

rw

rw

rw

rw

Modify only when UCSWRST = 1

Table 17-10. UCAxBRW Register Description
Bit

Field

Type

Reset

Description

15-0

UCBRx

RW

0h

Clock prescaler setting of the Baud rate generator

17.4.4 UCAxMCTLW Register
eUSCI_Ax Modulation Control Word Register
Figure 17-15. UCAxMCTLW Register
15

14

13

12

11

10

9

8

UCBRSx
rw-0

rw-0

7

6

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

5

4

3

1

rw-0

rw-0

r0

2
Reserved
r0

0
UCOS16
rw-0

UCBRFx
rw-0

rw-0

r0

Modify only when UCSWRST = 1

Table 17-11. UCAxMCTLW Register Description
Bit

Field

Type

Reset

Description

15-8

UCBRSx

RW

0h

Second modulation stage select. These bits hold a free modulation pattern for
BITCLK.

7-4

UCBRFx

RW

0h

First modulation stage select. These bits determine the modulation pattern for
BITCLK16 when UCOS16 = 1. Ignored with UCOS16 = 0. The "Oversampling
Baud-Rate Generation" section shows the modulation pattern.

3-1

Reserved

R

0h

Reserved

0

UCOS16

RW

0h

Oversampling mode enabled
0b = Disabled
1b = Enabled

502

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

17.4.5 UCAxSTATW Register
eUSCI_Ax Status Register
Figure 17-16. UCAxSTATW Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7
UCLISTEN

6
UCFE

5
UCOE

4
UCPE

3
UCBRK

2
UCRXERR

0
UCBUSY

rw-0

rw-0

rw-0

rw-0

rw-0

rw-0

1
UCADDR
UCIDLE
rw-0

r-0

Modify only when UCSWRST = 1.

Table 17-12. UCAxSTATW Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7

UCLISTEN

RW

0h

Listen enable. The UCLISTEN bit selects loopback mode.
0b = Disabled
1b = Enabled. UCAxTXD is internally fed back to the receiver.

6

UCFE

RW

0h

Framing error flag. UCFE is cleared when UCAxRXBUF is read.
0b = No error
1b = Character received with low stop bit

5

UCOE

RW

0h

Overrun error flag. This bit is set when a character is transferred into
UCAxRXBUF before the previous character was read. UCOE is cleared
automatically when UCxRXBUF is read, and must not be cleared by software.
Otherwise, it does not function correctly.
0b = No error
1b = Overrun error occurred.

4

UCPE

RW

0h

Parity error flag. When UCPEN = 0, UCPE is read as 0. UCPE is cleared when
UCAxRXBUF is read.
0b = No error
1b = Character received with parity error

3

UCBRK

RW

0h

Break detect flag. UCBRK is cleared when UCAxRXBUF is read.
0b = No break condition
1b = Break condition occurred.

2

UCRXERR

RW

0h

Receive error flag. This bit indicates a character was received with one or more
errors. When UCRXERR = 1, on or more error flags, UCFE, UCPE, or UCOE is
also set. UCRXERR is cleared when UCAxRXBUF is read.
0b = No receive errors detected
1b = Receive error detected

1

UCADDR UCIDLE

RW

0h

UCADDR: Address received in address-bit multiprocessor mode. UCADDR is
cleared when UCAxRXBUF is read.
UCIDLE: Idle line detected in idle-line multiprocessor mode. UCIDLE is cleared
when UCAxRXBUF is read.
0b = UCADDR: Received character is data. UCIDLE: No idle line detected
1b = UCADDR: Received character is an address. UCIDLE: Idle line detected

0

UCBUSY

R

0h

eUSCI_A busy. This bit indicates if a transmit or receive operation is in progress.
0b = eUSCI_A inactive
1b = eUSCI_A transmitting or receiving

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

503

eUSCI_A UART Registers

www.ti.com

17.4.6 UCAxRXBUF Register
eUSCI_Ax Receive Buffer Register
Figure 17-17. UCAxRXBUF Register
15

14

13

12

11

10

9

8

r-0

r-0

r-0

r-0

3

2

1

0

r

r

r

r

Reserved
r-0

r-0

r-0

r-0

7

6

5

4
UCRXBUFx

r

r

r

r

Table 17-13. UCAxRXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCRXBUFx

R

0h

The receive-data buffer is user accessible and contains the last received
character from the receive shift register. Reading UCAxRXBUF resets the
receive-error bits, the UCADDR or UCIDLE bit, and UCRXIFG. In 7-bit data
mode, UCAxRXBUF is LSB justified and the MSB is always reset.

17.4.7 UCAxTXBUF Register
eUSCI_Ax Transmit Buffer Register
Figure 17-18. UCAxTXBUF Register
15

14

13

12

11

10

9

8

r-0

r-0

r-0

r-0

3

2

1

0

rw

rw

rw

rw

Reserved
r-0

r-0

r-0

r-0

7

6

5

4
UCTXBUFx

rw

rw

rw

rw

Table 17-14. UCAxTXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCTXBUFx

RW

0h

The transmit data buffer is user accessible and holds the data waiting to be
moved into the transmit shift register and transmitted on UCAxTXD. Writing to
the transmit data buffer clears UCTXIFG. The MSB of UCAxTXBUF is not used
for 7-bit data and is reset.

504

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

17.4.8 UCAxABCTL Register
eUSCI_Ax Auto Baud Rate Control Register
Figure 17-19. UCAxABCTL Register
15

14

13

12

11

10

9

8

r-0

r-0

r-0

r-0

r-0

4

3
UCSTOE
rw-0

2
UCBTOE
rw-0

1
Reserved
r-0

0
UCABDEN
rw-0

Reserved
r-0
7

r-0

r-0

6

5

Reserved
r-0

UCDELIMx
r-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 17-15. UCAxABCTL Register Description
Bit

Field

Type

Reset

Description

15-6

Reserved

R

0h

Reserved

5-4

UCDELIMx

RW

0h

Break/synch delimiter length
00b = 1 bit time
01b = 2 bit times
10b = 3 bit times
11b = 4 bit times

3

UCSTOE

RW

0h

Synch field time out error
0b = No error
1b = Length of synch field exceeded measurable time.

2

UCBTOE

RW

0h

Break time out error
0b = No error
1b = Length of break field exceeded 22 bit times.

1

Reserved

R

0h

Reserved

0

UCABDEN

RW

0h

Automatic baud-rate detect enable
0b = Baud-rate detection disabled. Length of break and synch field is not
measured.
1b = Baud-rate detection enabled. Length of break and synch field is measured
and baud-rate settings are changed accordingly.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

505

eUSCI_A UART Registers

www.ti.com

17.4.9 UCAxIRCTL Register
eUSCI_Ax IrDA Control Word Register
Figure 17-20. UCAxIRCTL Register
15

14

13

12

11

10

rw-0

rw-0

rw-0

4

3

2

rw-0

rw-0

rw-0

UCIRRXFLx
rw-0

rw-0

rw-0

7

6

5
UCIRTXPLx

rw-0

rw-0

rw-0

9
UCIRRXPL
rw-0

8
UCIRRXFE
rw-0

1
UCIRTXCLK
rw-0

0
UCIREN
rw-0

Modify only when UCSWRST = 1.

Table 17-16. UCAxIRCTL Register Description
Bit

Field

Type

Reset

Description

15-10

UCIRRXFLx

RW

0h

Receive filter length. The minimum pulse length for receive is given by:
tMIN = (UCIRRXFLx + 4) / (2 × fIRTXCLK)

9

UCIRRXPL

RW

0h

IrDA receive input UCAxRXD polarity
0b = IrDA transceiver delivers a high pulse when a light pulse is seen.
1b = IrDA transceiver delivers a low pulse when a light pulse is seen.

8

UCIRRXFE

RW

0h

IrDA receive filter enabled
0b = Receive filter disabled
1b = Receive filter enabled

7-2

UCIRTXPLx

RW

0h

Transmit pulse length.
Pulse length tPULSE = (UCIRTXPLx + 1) / (2 × fIRTXCLK)

1

UCIRTXCLK

RW

0h

IrDA transmit pulse clock select
0b = BRCLK
1b = BITCLK16 when UCOS16 = 1. Otherwise, BRCLK.

0

UCIREN

RW

0h

IrDA encoder/decoder enable
0b = IrDA encoder/decoder disabled
1b = IrDA encoder/decoder enabled

506

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

17.4.10 UCAxIE Register
eUSCI_Ax Interrupt Enable Register
Figure 17-21. UCAxIE Register
15

14

13

12

11

10

9

8

Reserved
r-0

r-0

7

6

r-0

r-0

r-0

r-0

r-0

r-0

5

4

r-0

r-0

3
UCTXCPTIE
rw-0

2
UCSTTIE
rw-0

1
UCTXIE
rw-0

0
UCRXIE
rw-0

Reserved
r-0

r-0

Table 17-17. UCAxIE Register Description
Bit

Field

Type

Reset

Description

15-4

Reserved

R

0h

Reserved

3

UCTXCPTIE

RW

0h

Transmit complete interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

2

UCSTTIE

RW

0h

Start bit interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

1

UCTXIE

RW

0h

Transmit interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

0

UCRXIE

RW

0h

Receive interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

507

eUSCI_A UART Registers

www.ti.com

17.4.11 UCAxIFG Register
eUSCI_Ax Interrupt Flag Register
Figure 17-22. UCAxIFG Register
15

14

13

12

11

10

9

8

Reserved
r-0

r-0

7

6

r-0

r-0

r-0

r-0

r-0

r-0

5

4

r-0

r-0

3
UCTXCPTIFG
rw-0

2
UCSTTIFG
rw-0

1
UCTXIFG
rw-1

0
UCRXIFG
rw-0

Reserved
r-0

r-0

Table 17-18. UCAxIFG Register Description
Bit

Field

Type

Reset

Description

15-4

Reserved

R

0h

Reserved

3

UCTXCPTIFG

RW

0h

Transmit ready interrupt enable. UCTXRDYIFG is set when the entire byte in the
internal shift register got shifted out and UCAxTXBUF is empty.
0b = No interrupt pending
1b = Interrupt pending

2

UCSTTIFG

RW

0h

Start bit interrupt flag. UCSTTIFG is set after a Start bit was received
0b = No interrupt pending
1b = Interrupt pending

1

UCTXIFG

RW

1h

Transmit interrupt flag. UCTXIFG is set when UCAxTXBUF empty.
0b = No interrupt pending
1b = Interrupt pending

0

UCRXIFG

RW

0h

Receive interrupt flag. UCRXIFG is set when UCAxRXBUF has received a
complete character.
0b = No interrupt pending
1b = Interrupt pending

508

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A UART Registers

www.ti.com

17.4.12 UCAxIV Register
eUSCI_Ax Interrupt Vector Register
Figure 17-23. UCAxIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-(0)

r-(0)

r-(0)

r0

UCIVx
r0

r0

r0

r0

7

6

5

4
UCIVx

r0

r0

r0

r0

Table 17-19. UCAxIV Register Description
Bit

Field

Type

Reset

Description

15-0

UCIVx

R

0h

eUSCI_A interrupt vector value
00h = No interrupt pending
02h = Interrupt Source: Receive buffer full; Interrupt Flag: UCRXIFG; Interrupt
Priority: Highest
04h = Interrupt Source: Transmit buffer empty; Interrupt Flag: UCTXIFG
06h = Interrupt Source: Start bit received; Interrupt Flag: UCSTTIFG
08h = Interrupt Source: Transmit complete; Interrupt Flag: UCTXCPTIFG;
Interrupt Priority: Lowest

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – UART Mode

Copyright © 2014–2015, Texas Instruments Incorporated

509

Chapter 18
SLAU445D – October 2014 – Revised December 2015

Enhanced Universal Serial Communication Interface
(eUSCI) – SPI Mode
The enhanced universal serial communication interfaces, eUSCI_A and eUSCI_B, support multiple serial
communication modes with one hardware module. This chapter describes the operation of the
synchronous peripheral interface (SPI) mode.
Topic

18.1
18.2
18.3
18.4
18.5

510

...........................................................................................................................
Enhanced Universal Serial Communication Interfaces (eUSCI_A, eUSCI_B)
Overview .........................................................................................................
eUSCI Introduction – SPI Mode ..........................................................................
eUSCI Operation – SPI Mode ..............................................................................
eUSCI_A SPI Registers ......................................................................................
eUSCI_B SPI Registers ......................................................................................

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Page

511
511
513
519
526

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

www.ti.com

Enhanced Universal Serial Communication Interfaces (eUSCI_A, eUSCI_B) Overview

18.1 Enhanced Universal Serial Communication Interfaces (eUSCI_A, eUSCI_B) Overview
Both the eUSCI_A and the eUSCI_B support serial communication in SPI mode.

18.2 eUSCI Introduction – SPI Mode
In synchronous mode, the eUSCI connects the device to an external system through three or four pins:
UCxSIMO, UCxSOMI, UCxCLK, and UCxSTE. SPI mode is selected when the UCSYNC bit is set, and
SPI mode (3-pin or 4-pin) is selected with the UCMODEx bits.
SPI mode features include:
• 7-bit or 8-bit data length
• LSB-first or MSB-first data transmit and receive
• 3-pin or 4-pin SPI operation
• Master or slave modes
• Independent transmit and receive shift registers
• Separate transmit and receive buffer registers
• Continuous transmit and receive operation
• Selectable clock polarity and phase control
• Programmable clock frequency in master mode
• Independent interrupt capability for receive and transmit
• Slave operation in LPM4
Figure 18-1 shows the eUSCI when configured for SPI mode.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

511

eUSCI Introduction – SPI Mode

www.ti.com

Receive State Machine

Set UCOE
Set UCxRXIFG
UCLISTEN

UCMST

Receive Buffer UC xRXBUF
UCxSOMI
0

Receive Shift Register

1

1
0

UCMSB UC7BIT

UCSSELx
Bit Clock Generator
UCCKPH UCCKPL

UCxBRx
N/A

00

Device Specific

01

SMCLK

10

SMCLK

11

16
BRCLK

Prescaler/Divider

Clock Direction,
Phase and Polarity

UCxCLK

UCMSB UC7BIT
UCxSIMO
Transmit Shift Register
UCMODEx UCSTEM
2

UCxSTE

Transmit Buffer UC xTXBUF
Transmit Enable
Control

Set UCFE

Transmit State Machine
Set UCxTXIFG

Figure 18-1. eUSCI Block Diagram – SPI Mode

512

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI Operation – SPI Mode

www.ti.com

18.3 eUSCI Operation – SPI Mode
In SPI mode, serial data is transmitted and received by multiple devices using a shared clock provided by
the master. An additional pin controlled by the master, UCxSTE, is provided to enable a device to receive
and transmit data.
Three or four signals are used for SPI data exchange:
• UCxSIMO – slave in, master out
Master mode: UCxSIMO is the data output line.
Slave mode: UCxSIMO is the data input line.
• UCxSOMI – slave out, master in
Master mode: UCxSOMI is the data input line.
Slave mode: UCxSOMI is the data output line.
• UCxCLK – eUSCI SPI clock
Master mode: UCxCLK is an output.
Slave mode: UCxCLK is an input.
• UCxSTE – slave transmit enable
Used in 4-pin mode to allow multiple masters on a single bus. Not used in 3-pin mode. Table 18-1
describes the UCxSTE operation.
Table 18-1. UCxSTE Operation
UCMODEx

UCxSTE
Active State

01

High

10

Low

UCxSTE

Slave

Master

0

Inactive

Active

1

Active

Inactive

0

Active

Inactive

1

Inactive

Active

18.3.1 eUSCI Initialization and Reset
The eUSCI is reset by a PUC or by the UCSWRST bit. After a PUC, the UCSWRST bit is automatically
set, which keeps the eUSCI in a reset condition. When set, the UCSWRST bit resets the UCRXIE,
UCTXIE, UCRXIFG, UCOE, and UCFE bits, and sets the UCTXIFG flag. Clearing UCSWRST releases
the eUSCI for operation.
To avoid unpredictable behavior, configure or reconfigure the eUSCI module when UCSWRST is set.
NOTE:

Initializing or reconfiguring the eUSCI module
The recommended eUSCI initialization or reconfiguration process is:
1. Set UCSWRST.
BIS.B #UCSWRST,&UCxCTL1

2.
3.
4.

Initialize all eUSCI registers while UCSWRST = 1 (including UCxCTL1).
Configure ports.
Clear UCSWRST in software.

5.

Enable interrupts (optional) by setting UCRXIE or UCTXIE.

BIC.B #UCSWRST,&UCxCTL1

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

513

eUSCI Operation – SPI Mode

www.ti.com

18.3.2 Character Format
The eUSCI module in SPI mode supports 7-bit and 8-bit character lengths selected by the UC7BIT bit. In
7-bit data mode, UCxRXBUF is LSB justified and the MSB is always reset. The UCMSB bit controls the
direction of the transfer and selects LSB or MSB first.
NOTE:

Default character format
The default SPI character transmission is LSB first. For communication with other SPI
interfaces, MSB first mode may be required.

NOTE:

Character format for figures
Figures throughout this chapter use MSB first format.

18.3.3 Master Mode
Figure 18-2 shows the eUSCI as a master in both 3-pin and 4-pin configurations.
MASTER
Receive Buffer
UCxRXBUF

UCxSIMO

SLAVE

SIMO

Transmit Buffer
UCxTXBUF

SPI Receive Buffer
Px.x
UCxSTE

Receive Shift Register

Transmit Shift Register

UCx
SOMI

UCxCLK

STE
SS
Port.x
SOMI

Data Shift Register (DSR)

SCLK

MSP430 USCI

COMMON SPI

Figure 18-2. eUSCI Master and External Slave (UCSTEM = 0)
The eUSCI initiates data transfer when data is moved to the transmit data buffer UCxTXBUF. The
UCxTXBUF data is moved to the transmit (TX) shift register when the TX shift register is empty, initiating
data transfer on UCxSIMO starting with either the MSB or LSB, depending on the UCMSB setting. Data
on UCxSOMI is shifted into the receive shift register on the opposite clock edge. When the character is
received, the receive data is moved from the receive (RX) shift register to the received data buffer
UCxRXBUF and the receive interrupt flag UCRXIFG is set, indicating that the RX or TX operation is
complete.
A set transmit interrupt flag, UCTXIFG, indicates that data has moved from UCxTXBUF to the TX shift
register and UCxTXBUF is ready for new data. It does not indicate RX or TX completion.
To receive data into the eUSCI in master mode, data must be written to UCxTXBUF, because receive and
transmit operations operate concurrently.
There two different options for configuring the eUSCI as a 4-pin master, which are described in the
following sections:
• The fourth pin is used as input to prevent conflicts with other masters (UCSTEM = 0).
• The fourth pin is used as output to generate a slave enable signal (UCSTEM = 1).
The bit UCSTEM is used to select the corresponding mode.

514

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI Operation – SPI Mode

www.ti.com

18.3.3.1 4-Pin SPI Master Mode (UCSTEM = 0)
In 4-pin master mode with UCSTEM = 0, UCxSTE is a digital input that can be used to prevent conflicts
with another master and controls the master as described in Table 18-1. When UCxSTE is in the masterinactive state and UCSTEM = 0:
• UCxSIMO and UCxCLK are set to inputs and no longer drive the bus.
• The error bit UCFE is set, indicating a communication integrity violation to be handled by the user.
• The internal state machines are reset and the shift operation is aborted.
If data is written into UCxTXBUF while the master is held inactive by UCxSTE, it is transmit as soon as
UCxSTE transitions to the master-active state. If an active transfer is aborted by UCxSTE transitioning to
the master-inactive state, the data must be rewritten into UCxTXBUF to be transferred when UCxSTE
transitions back to the master-active state. The UCxSTE input signal is not used in 3-pin master mode.
18.3.3.2 4-Pin SPI Master Mode (UCSTEM = 1)
If UCSTEM = 1 in 4-pin master mode, UCxSTE is a digital output. In this mode the slave enable signal for
a single slave is automatically generated on UCxSTE. The corresponding behavior can be seen in
Figure 18-4.
If multiple slaves are desired, this feature is not applicable and the software needs to use general-purpose
I/O pins instead to generate STE signals for each slave individually.

18.3.4 Slave Mode
Figure 18-3 shows the eUSCI as a slave in both 3-pin and 4-pin configurations.
MASTER

SIMO

SLAVE

UCxSIMO

SPI Receive Buffer

Transmit Buffer UCxTXBUF

Data Shift Register DSR

Px.x

UCxSTE

STE

SS
Port.x

SOMI

SCLK
COMMON SPI

UCx
SOMI

Transmit Shift Register

Receive Buffer
UCxRXBUF

Receive Shift Register

UCxCLK
MSP430 USCI

Figure 18-3. eUSCI Slave and External Master
UCxCLK is used as the input for the SPI clock and must be supplied by the external master. The datatransfer rate is determined by this clock and not by the internal bit clock generator. Data written to
UCxTXBUF and moved to the TX shift register before the start of UCxCLK is transmitted on UCxSOMI.
Data on UCxSIMO is shifted into the receive shift register on the opposite edge of UCxCLK and moved to
UCxRXBUF when the set number of bits are received. When data is moved from the RX shift register to
UCxRXBUF, the UCRXIFG interrupt flag is set, indicating that data has been received. The overrun error
bit UCOE is set when the previously received data is not read from UCxRXBUF before new data is moved
to UCxRXBUF.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

515

eUSCI Operation – SPI Mode

www.ti.com

18.3.4.1 4-Pin SPI Slave Mode
In 4-pin slave mode, UCxSTE is a digital input used by the slave to enable the transmit and receive
operations and is driven by the SPI master. When UCxSTE is in the slave-active state, the slave operates
normally. When UCxSTE is in the slave- inactive state:
• Any receive operation in progress on UCxSIMO is halted.
• UCxSOMI is set to the input direction.
• The shift operation is halted until the UCxSTE line transitions into the slave transmit active state.
The UCxSTE input signal is not used in 3-pin slave mode.

18.3.5 SPI Enable
When the eUSCI module is enabled by clearing the UCSWRST bit, it is ready to receive and transmit. In
master mode, the bit clock generator is ready, but is not clocked nor producing any clocks. In slave mode,
the bit clock generator is disabled and the clock is provided by the master.
A transmit or receive operation is indicated by UCBUSY = 1.
A PUC or set UCSWRST bit disables the eUSCI immediately and any active transfer is terminated.
18.3.5.1 Transmit Enable
In master mode, writing to UCxTXBUF activates the bit clock generator, and the data begins to transmit.
In slave mode, transmission begins when a master provides a clock and, in 4-pin mode, when the
UCxSTE is in the slave-active state.
18.3.5.2 Receive Enable
The SPI receives data when a transmission is active. Receive and transmit operations operate
concurrently.

18.3.6 Serial Clock Control
UCxCLK is provided by the master on the SPI bus. When UCMST = 1, the bit clock is provided by the
eUSCI bit clock generator on the UCxCLK pin. The clock used to generate the bit clock is selected with
the UCSSELx bits. When UCMST = 0, the eUSCI clock is provided on the UCxCLK pin by the master, the
bit clock generator is not used, and the UCSSELx bits are don't care. The SPI receiver and transmitter
operate in parallel and use the same clock source for data transfer.
The 16-bit value of UCBRx in the bit rate control registers UCxxBRW is the division factor of the eUSCI
clock source, BRCLK. With UCBRx = 0 the maximum bit clock that can be generated in master mode is
BRCLK. Modulation is not used in SPI mode, and UCAxMCTL should be cleared when using SPI mode
for eUSCI_A. The UCAxCLK or UCBxCLK frequency is given by Equation 12.
fBitClock = fBRCLK / UCBRx

(12)

When UCBRx = 0, no division is applied to BRCLK, and the bit clock equals BRCLK (fBitClock = fBRCLK).
Even UCBRx settings result in even divisions and, thus, generate a bit clock with a 50/50 duty cycle.
Odd UCBRx settings result in odd divisions. In this case, the high phase of the bit clock is one BRCLK
cycle longer than the low phase.
18.3.6.1 Serial Clock Polarity and Phase
The polarity and phase of UCxCLK are independently configured with the UCCKPL and UCCKPH control
bits of the eUSCI. Timing for each case is shown in Figure 18-4.

516

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI Operation – SPI Mode

www.ti.com
UC
UC
CKPH CKPL

Cycle#

0

0

UCxCLK

0

1

UCxCLK

1

0

UCxCLK

1

1

UCxCLK

1

2

3

4

5

6

7

8

UCxSTE
0

X

UCxSIMO/
UCxSOMI

MSB

LSB

1

X

UCxSIMO
UCxSOMI

MSB

LSB

Move to UCxTXBUF
TX Data Shifted Out
RX Sample Points

Figure 18-4. eUSCI SPI Timing With UCMSB = 1

18.3.7 Using the SPI Mode With Low-Power Modes
The eUSCI module provides automatic clock activation for use with low-power modes. When the eUSCI
clock source is inactive because the device is in a low-power mode, the eUSCI module automatically
activates it when needed, regardless of the control-bit settings for the clock source. The clock remains
active until the eUSCI module returns to its idle condition. After the eUSCI module returns to the idle
condition, control of the clock source reverts to the settings of its control bits.
In SPI slave mode, no internal clock source is required because the clock is provided by the external
master. It is possible to operate the eUSCI in SPI slave mode while the device is in LPM4 and all clock
sources are disabled. The receive or transmit interrupt can wake up the CPU from any low-power mode.
When receiving multiple bytes as a slave in LPM4 the wakeup time of the CPU needs to be considered. If
the wake-up time of the CPU is, for example, 150 µs (see device-specific data-sheet), it needs to be
ensured that the CPU serves the TXIFG of the first received byte before the second byte is completely
received by the eUSCI_A or eUSCI_B. Otherwise an overrun error occurs.

18.3.8 SPI Interrupts
The eUSCI has only one interrupt vector that is shared for transmission and for reception. eUSCI_Ax and
eUSCI_Bx do not share the same interrupt vector.
18.3.8.1 SPI Transmit Interrupt Operation
The UCTXIFG interrupt flag is set by the transmitter to indicate that UCxTXBUF is ready to accept another
character. An interrupt request is generated if UCTXIE and GIE are also set. UCTXIFG is automatically
reset if a character is written to UCxTXBUF. UCTXIFG is set after a PUC or when UCSWRST = 1.
UCTXIE is reset after a PUC or when UCSWRST = 1.
NOTE:

Writing to UCxTXBUF in SPI mode
Data written to UCxTXBUF when UCTXIFG = 0 may result in erroneous data transmission.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

517

eUSCI Operation – SPI Mode

www.ti.com

18.3.8.2 SPI Receive Interrupt Operation
The UCRXIFG interrupt flag is set each time a character is received and loaded into UCxRXBUF. An
interrupt request is generated if UCRXIE and GIE are also set. UCRXIFG and UCRXIE are reset by a
system reset PUC signal or when UCSWRST = 1. UCRXIFG is automatically reset when UCxRXBUF is
read.
18.3.8.3 UCxIV, Interrupt Vector Generator
The eUSCI interrupt flags are prioritized and combined to source a single interrupt vector. The interrupt
vector register UCxIV is used to determine which flag requested an interrupt. The highest-priority enabled
interrupt generates a number in the UCxIV register that can be evaluated or added to the program counter
(PC) to automatically enter the appropriate software routine. Disabled interrupts do not affect the UCxIV
value.
Any access, read or write, of the UCxIV register automatically resets the highest-pending interrupt flag. If
another interrupt flag is set, another interrupt is immediately generated after servicing the initial interrupt.
18.3.8.3.1 UCxIV Software Example
The following software example shows the recommended use of UCxIV. The UCxIV value is added to the
PC to automatically jump to the appropriate routine. The following example is given for eUSCI_B0.
USCI_SPI_ISR
ADD
RETI
JMP
TXIFG_ISR
...
RETI
RXIFG_ISR
...
RETI

518

&UCB0IV, PC
RXIFG_ISR

;
;
;
;
;
;
;
;
;

Add offset to jump table
Vector 0: No interrupt
Vector 2: RXIFG
Vector 4: TXIFG
Task starts here
Return
Vector 2
Task starts here
Return

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A SPI Registers

www.ti.com

18.4 eUSCI_A SPI Registers
The eUSCI_A registers applicable in SPI mode and their address offsets are listed in Table 18-2. The
base addresses can be found in the device-specific data sheet.
Table 18-2. eUSCI_A SPI Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

UCAxCTLW0

eUSCI_Ax Control Word 0

Read/write

Word

0001h

Section 18.4.1

eUSCI_Ax Control 1

Read/write

Byte

01h

eUSCI_Ax Control 0

00h
01h
06h
06h
07h

UCAxCTL1
UCAxCTL0
UCAxBRW
UCAxBR0
UCAxBR1

Read/write

Byte

00h

eUSCI_Ax Bit Rate Control Word

Read/write

Word

0000h

eUSCI_Ax Bit Rate Control 0

Read/write

Byte

00h

eUSCI_Ax Bit Rate Control 1

Section 18.4.2

Read/write

Byte

00h

0Ah

UCAxSTATW

eUSCI_Ax Status

Read/write

Word

00h

Section 18.4.3

0Ch

UCAxRXBUF

eUSCI_Ax Receive Buffer

Read/write

Word

00h

Section 18.4.4

0Eh

UCAxTXBUF

eUSCI_Ax Transmit Buffer

Read/write

Word

00h

Section 18.4.5

1Ah

UCAxIE

eUSCI_Ax Interrupt Enable

Read/write

Word

00h

Section 18.4.6

1Ch

UCAxIFG

eUSCI_Ax Interrupt Flag

Read/write

Word

02h

Section 18.4.7

1Eh

UCAxIV

eUSCI_Ax Interrupt Vector

Read

Word

0000h

Section 18.4.8

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

519

eUSCI_A SPI Registers

www.ti.com

18.4.1 UCAxCTLW0 Register
eUSCI_Ax Control Register 0
Figure 18-5. UCAxCTLW0 Register
15
UCCKPH
rw-0

14
UCCKPL
rw-0

13
UCMSB
rw-0

12
UC7BIT
rw-0

7

6

5

4

UCSSELx
rw-0

11
UCMST
rw-0

10

9

rw-0

rw-0

8
UCSYNC
rw-0

3

2

rw-0

rw-0

1
UCSTEM
rw-0

0
UCSWRST
rw-1

UCMODEx

Reserved
rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 18-3. UCAxCTLW0 Register Description
Bit

Field

Type

Reset

Description

15

UCCKPH

RW

0h

Clock phase select. Modify only when UCSWRST = 1.
0b = Data is changed on the first UCLK edge and captured on the following
edge.
1b = Data is captured on the first UCLK edge and changed on the following
edge.

14

UCCKPL

RW

0h

Clock polarity select. Modify only when UCSWRST = 1.
0b = The inactive state is low.
1b = The inactive state is high.

13

UCMSB

RW

0h

MSB first select. Controls the direction of the receive and transmit shift register.
Modify only when UCSWRST = 1.
0b = LSB first
1b = MSB first

12

UC7BIT

RW

0h

Character length. Selects 7-bit or 8-bit character length. Modify only when
UCSWRST = 1.
0b = 8-bit data
1b = 7-bit data

11

UCMST

RW

0h

Master mode select. Modify only when UCSWRST = 1.
0b = Slave mode
1b = Master mode

10-9

UCMODEx

RW

0h

eUSCI mode. The UCMODEx bits select the synchronous mode when UCSYNC
= 1. Modify only when UCSWRST = 1.
00b = 3-pin SPI
01b = 4-pin SPI with UCxSTE active high: Slave enabled when UCxSTE = 1
10b = 4-pin SPI with UCxSTE active low: Slave enabled when UCxSTE = 0
11b = I2C mode

8

UCSYNC

RW

0h

Synchronous mode enable. Modify only when UCSWRST = 1.
0b = Asynchronous mode
1b = Synchronous mode

7-6

UCSSELx

RW

0h

eUSCI clock source select. These bits select the BRCLK source clock in master
mode. UCxCLK is always used in slave mode. Modify only when UCSWRST = 1.
00b = Reserved
01b = Device specific
10b = SMCLK
11b = SMCLK

5-2

Reserved

R

0h

Reserved

1

UCSTEM

RW

0h

STE mode select in master mode. This byte is ignored in slave or 3-wire mode.
Modify only when UCSWRST = 1.
0b = STE pin is used to prevent conflicts with other masters
1b = STE pin is used to generate the enable signal for a 4-wire slave

520

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A SPI Registers

www.ti.com

Table 18-3. UCAxCTLW0 Register Description (continued)
Bit

Field

Type

Reset

Description

0

UCSWRST

RW

1h

Software reset enable
0b = Disabled. eUSCI reset released for operation.
1b = Enabled. eUSCI logic held in reset state.

18.4.2 UCAxBRW Register
eUSCI_Ax Bit Rate Control Register 1
Figure 18-6. UCAxBRW Register
15

14

13

12

11

10

9

8

UCBRx
rw

rw

rw

rw

rw

rw

rw

rw

7

6

5

4

3

2

1

0

rw

rw

rw

rw

UCBRx
rw

rw

rw

rw

Modify only when UCSWRST = 1.

Table 18-4. UCAxBRW Register Description
Bit

Field

Type

Reset

Description

15-0

UCBRx

RW

0h

Bit clock prescaler setting. Modify only when UCSWRST = 1.
fBitClock = fBRCLK / UCBRx
If UCBRx = 0, fBitClock = fBRCLK

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

521

eUSCI_A SPI Registers

www.ti.com

18.4.3 UCAxSTATW Register
eUSCI_Ax Status Register
Figure 18-7. UCAxSTATW Register
15

14

13

12

11

10

9

8

r0

r0

r0

2

1

rw-0

rw-0

0
UCBUSY
r-0

Reserved
r0

r0

r0

r0

r0

7
UCLISTEN
rw-0

6
UCFE
rw-0

5
UCOE
rw-0

4

3
Reserved

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 18-5. UCAxSTATW Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7

UCLISTEN

RW

0h

Listen enable. The UCLISTEN bit selects loopback mode. Modify only when
UCSWRST = 1.
0b = Disabled
1b = Enabled. The transmitter output is internally fed back to the receiver.

6

UCFE

RW

0h

Framing error flag. This bit indicates a bus conflict in 4-wire master mode. UCFE
is not used in 3-wire master or any slave mode.
0b = No error
1b = Bus conflict occurred

5

UCOE

RW

0h

Overrun error flag. This bit is set when a character is transferred into UCxRXBUF
before the previous character was read. UCOE is cleared automatically when
UCxRXBUF is read and must not be cleared by software. Otherwise, it does not
function correctly.
0b = No error
1b = Overrun error occurred

4-1

Reserved

RW

0h

Reserved

0

UCBUSY

R

0h

eUSCI busy. This bit indicates if a transmit or receive operation is in progress.
0b = eUSCI inactive
1b = eUSCI transmitting or receiving

522

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A SPI Registers

www.ti.com

18.4.4 UCAxRXBUF Register
eUSCI_Ax Receive Buffer Register
Figure 18-8. UCAxRXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw

rw

rw

rw

Reserved
r0

r0

r0

r0

7

6

5

4
UCRXBUFx

rw

rw

rw

rw

Table 18-6. UCAxRXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCRXBUFx

R

0h

The receive-data buffer is user accessible and contains the last received
character from the receive shift register. Reading UCxRXBUF resets the receiveerror bits and UCRXIFG. In 7-bit data mode, UCxRXBUF is LSB justified and the
MSB is always reset.

18.4.5 UCAxTXBUF Register
eUSCI_Ax Transmit Buffer Register
Figure 18-9. UCAxTXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw

rw

rw

rw

Reserved
r0

r0

r0

r0

7

6

5

4
UCTXBUFx

rw

rw

rw

rw

Table 18-7. UCAxTXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCTXBUFx

RW

0h

The transmit data buffer is user accessible and holds the data waiting to be
moved into the transmit shift register and transmitted. Writing to the transmit data
buffer clears UCTXIFG. The MSB of UCxTXBUF is not used for 7-bit data and is
reset.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

523

eUSCI_A SPI Registers

www.ti.com

18.4.6 UCAxIE Register
eUSCI_Ax Interrupt Enable Register
Figure 18-10. UCAxIE Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

r0

4

3

2

r-0

r-0

r-0

1
UCTXIE
rw-0

0
UCRXIE
rw-0

Reserved
r0

r0

r0

7

6

5
Reserved

r-0

r-0

r-0

Table 18-8. UCAxIE Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved

1

UCTXIE

RW

0h

Transmit interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

0

UCRXIE

RW

0h

Receive interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

18.4.7 UCAxIFG Register
eUSCI_Ax Interrupt Flag Register
Figure 18-11. UCAxIFG Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6

5

4

3

2

r-0

r-0

r-0

1
UCTXIFG
rw-1

0
UCRXIFG
rw-0

Reserved
r-0

r-0

r-0

Table 18-9. UCAxIFG Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved

1

UCTXIFG

RW

1h

Transmit interrupt flag. UCTXIFG is set when UCAxTXBUF empty.
0b = No interrupt pending
1b = Interrupt pending

0

UCRXIFG

RW

0h

Receive interrupt flag. UCRXIFG is set when UCAxRXBUF has received a
complete character.
0b = No interrupt pending
1b = Interrupt pending

524

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_A SPI Registers

www.ti.com

18.4.8 UCAxIV Register
eUSCI_Ax Interrupt Vector Register
Figure 18-12. UCAxIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

UCIVx
r0

r0

r0

r0

7

6

5

4
UCIVx

r0

r0

r0

r-0

Table 18-10. UCAxIV Register Description
Bit

Field

Type

Reset

Description

15-0

UCIVx

R

0h

eUSCI interrupt vector value
000h = No interrupt pending
002h = Interrupt Source: Data received; Interrupt Flag: UCRXIFG; Interrupt
Priority: Highest
004h = Interrupt Source: Transmit buffer empty; Interrupt Flag: UCTXIFG;
Interrupt Priority: Lowest

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

525

eUSCI_B SPI Registers

www.ti.com

18.5 eUSCI_B SPI Registers
The eUSCI_B registers applicable in SPI mode and their address offsets are listed in Table 18-11. The
base addresses can be found in the device-specific data sheet.
Table 18-11. eUSCI_B SPI Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

UCBxCTLW0

eUSCI_Bx Control Word 0

Read/write

Word

01C1h

Section 18.5.1

eUSCI_Bx Control 1

Read/write

Byte

C1h

eUSCI_Bx Control 0

00h
01h
06h
06h
07h

526

UCBxCTL1
UCBxCTL0
UCBxBRW
UCBxBR0
UCBxBR1

Read/write

Byte

01h

eUSCI_Bx Bit Rate Control Word

Read/write

Word

0000h

eUSCI_Bx Bit Rate Control 0

Read/write

Byte

00h

eUSCI_Bx Bit Rate Control 1

Section 18.5.2

Read/write

Byte

00h

08h

UCBxSTATW

eUSCI_Bx Status

Read/write

Word

00h

Section 18.5.3

0Ch

UCBxRXBUF

eUSCI_Bx Receive Buffer

Read/write

Word

00h

Section 18.5.4

0Eh

UCBxTXBUF

eUSCI_Bx Transmit Buffer

Read/write

Word

00h

Section 18.5.5

2Ah

UCBxIE

eUSCI_Bx Interrupt Enable

Read/write

Word

00h

Section 18.5.6

2Ch

UCBxIFG

eUSCI_Bx Interrupt Flag

Read/write

Word

02h

Section 18.5.7

2Eh

UCBxIV

eUSCI_Bx Interrupt Vector

Read

Word

0000h

Section 18.5.8

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B SPI Registers

www.ti.com

18.5.1 UCBxCTLW0 Register
eUSCI_Bx Control Register 0
Figure 18-13. UCBxCTLW0 Register
15
UCCKPH
rw-0

14
UCCKPL
rw-0

13
UCMSB
rw-0

12
UC7BIT
rw-0

7

6

5

4

UCSSELx
rw-1

11
UCMST
rw-0

10

9

rw-0

rw-0

8
UCSYNC
rw-1

3

2

rw-0

rw-0

1
UCSTEM
rw-0

0
UCSWRST
rw-1

UCMODEx

Reserved
rw-1

r0

rw-0

Modify only when UCSWRST = 1.

Table 18-12. UCBxCTLW0 Register Description
Bit

Field

Type

Reset

Description

15

UCCKPH

RW

0h

Clock phase select. Modify only when UCSWRST = 1.
0b = Data is changed on the first UCLK edge and captured on the following
edge.
1b = Data is captured on the first UCLK edge and changed on the following
edge.

14

UCCKPL

RW

0h

Clock polarity select. Modify only when UCSWRST = 1.
0b = The inactive state is low.
1b = The inactive state is high.

13

UCMSB

RW

0h

MSB first select. Controls the direction of the receive and transmit shift register.
Modify only when UCSWRST = 1.
0b = LSB first
1b = MSB first

12

UC7BIT

RW

0h

Character length. Selects 7-bit or 8-bit character length. Modify only when
UCSWRST = 1.
0b = 8-bit data
1b = 7-bit data

11

UCMST

RW

0h

Master mode select. Modify only when UCSWRST = 1.
0b = Slave mode
1b = Master mode

10-9

UCMODEx

RW

0h

eUSCI mode. The UCMODEx bits select the synchronous mode when UCSYNC
= 1. Modify only when UCSWRST = 1.
00b = 3-pin SPI
01b = 4-pin SPI with UCxSTE active high: Slave enabled when UCxSTE = 1
10b = 4-pin SPI with UCxSTE active low: Slave enabled when UCxSTE = 0
11b = I2C mode

8

UCSYNC

RW

1h

Synchronous mode enable. Modify only when UCSWRST = 1.
0b = Asynchronous mode
1b = Synchronous mode

7-6

UCSSELx

RW

3h

eUSCI clock source select. These bits select the BRCLK source clock in master
mode. UCxCLK is always used in slave mode. Modify only when UCSWRST = 1.
00b = Reserved
01b = Device Specific
10b = SMCLK
11b = SMCLK

5-2

Reserved

R

0h

Reserved

1

UCSTEM

RW

0h

STE mode select in master mode. This byte is ignored in slave or 3-wire mode.
Modify only when UCSWRST = 1.
0b = STE pin is used to prevent conflicts with other masters
1b = STE pin is used to generate the enable signal for a 4-wire slave

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

527

eUSCI_B SPI Registers

www.ti.com

Table 18-12. UCBxCTLW0 Register Description (continued)
Bit

Field

Type

Reset

Description

0

UCSWRST

RW

1h

Software reset enable
0b = Disabled. eUSCI reset released for operation.
1b = Enabled. eUSCI logic held in reset state.

18.5.2 UCBxBRW Register
eUSCI_Bx Bit Rate Control Register 1
Figure 18-14. UCBxBRW Register
15

14

13

12

11

10

9

8

UCBRx
rw

rw

rw

rw

rw

rw

rw

rw

7

6

5

4

3

2

1

0

rw

rw

rw

rw

UCBRx
rw

rw

rw

rw

Modify only when UCSWRST = 1.

Table 18-13. UCBxBRW Register Description
Bit

Field

Type

Reset

Description

15-0

UCBRx

RW

0h

Bit clock prescaler setting. Modify only when UCSWRST = 1.
fBitClock = fBRCLK / UCBRx
If UCBRx = 0, fBitClock = fBRCLK

528

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B SPI Registers

www.ti.com

18.5.3 UCBxSTATW Register
eUSCI_Bx Status Register
Figure 18-15. UCBxSTATW Register
15

14

13

12

11

10

9

8

r0

r0

r0

2

1

r0

r0

0
UCBUSY
r-0

Reserved
r0

r0

r0

r0

r0

7
UCLISTEN
rw-0

6
UCFE
rw-0

5
UCOE
rw-0

4

3
Reserved

r0

r0

Modify only when UCSWRST = 1.

Table 18-14. UCBxSTATW Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7

UCLISTEN

RW

0h

Listen enable. The UCLISTEN bit selects loopback mode. Modify only when
UCSWRST = 1.
0b = Disabled
1b = Enabled. The transmitter output is internally fed back to the receiver.

6

UCFE

RW

0h

Framing error flag. This bit indicates a bus conflict in 4-wire master mode. UCFE
is not used in 3-wire master mode or any slave mode.
0b = No error
1b = Bus conflict occurred

5

UCOE

RW

0h

Overrun error flag. This bit is set when a character is transferred into UCxRXBUF
before the previous character was read. UCOE is cleared automatically when
UCxRXBUF is read and must not be cleared by software. Otherwise, it does not
function correctly.
0b = No error
1b = Overrun error occurred

4-1

Reserved

R

0h

Reserved

0

UCBUSY

R

0h

eUSCI busy. This bit indicates if a transmit or receive operation is in progress.
0b = eUSCI inactive
1b = eUSCI transmitting or receiving

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

529

eUSCI_B SPI Registers

www.ti.com

18.5.4 UCBxRXBUF Register
eUSCI_Bx Receive Buffer Register
Figure 18-16. UCBxRXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw

rw

rw

rw

Reserved
r0

r0

r0

r0

7

6

5

4
UCRXBUFx

rw

rw

rw

rw

Table 18-15. UCBxRXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCRXBUFx

R

0h

The receive-data buffer is user accessible and contains the last received
character from the receive shift register. Reading UCxRXBUF resets the receiveerror bits and UCRXIFG. In 7-bit data mode, UCxRXBUF is LSB justified and the
MSB is always reset.

18.5.5 UCBxTXBUF Register
eUSCI_Bx Transmit Buffer Register
Figure 18-17. UCBxTXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw

rw

rw

rw

Reserved
r0

r0

r0

r0

7

6

5

4
UCTXBUFx

rw

rw

rw

rw

Table 18-16. UCBxTXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCTXBUFx

RW

0h

The transmit data buffer is user accessible and holds the data waiting to be
moved into the transmit shift register and transmitted. Writing to the transmit data
buffer clears UCTXIFG. The MSB of UCxTXBUF is not used for 7-bit data and is
reset.

530

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B SPI Registers

www.ti.com

18.5.6 UCBxIE Register
eUSCI_Bx Interrupt Enable Register
Figure 18-18. UCBxIE Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

r0

4

3

2

1

0

r-0

r-0

r-0

rw-0

rw-0

Reserved
r0

r0

r0

7

6

5
Reserved

r-0

r-0

r-0

Table 18-17. UCBxIE Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved

1

UCTXIE

RW

0h

Transmit interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

0

UCRXIE

RW

0h

Receive interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

18.5.7 UCBxIFG Register
eUSCI_Bx Interrupt Flag Register
Figure 18-19. UCBxIFG Register
15

14

13

12

11

10

9

8

Reserved
r0

r0

r0

r0

r0

r0

r0

r0

7

6

5

4

3

2

r-0

r-0

r-0

1
UCTXIFG
rw-1

0
UCRXIFG
rw-0

Reserved
r-0

r-0

r-0

Table 18-18. UCBxIFG Register Description
Bit

Field

Type

Reset

Description

15-2

Reserved

R

0h

Reserved

1

UCTXIFG

RW

1h

Transmit interrupt flag. UCTXIFG is set when UCBxTXBUF empty.
0b = No interrupt pending
1b = Interrupt pending

0

UCRXIFG

RW

0h

Receive interrupt flag. UCRXIFG is set when UCBxRXBUF has received a
complete character.
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

Copyright © 2014–2015, Texas Instruments Incorporated

531

eUSCI_B SPI Registers

www.ti.com

18.5.8 UCBxIV Register
eUSCI_Bx Interrupt Vector Register
Figure 18-20. UCBxIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

UCIVx
r0

r0

r0

r0

7

6

5

4
UCIVx

r0

r0

r0

r-0

Table 18-19. UCBxIV Register Description
Bit

Field

Type

Reset

Description

15-0

UCIVx

R

0h

eUSCI interrupt vector value
0000h = No interrupt pending
0002h = Interrupt Source: Data received; Interrupt Flag: UCRXIFG; Interrupt
Priority: Highest
0004h = Interrupt Source: Transmit buffer empty; Interrupt Flag: UCTXIFG;
Interrupt Priority: Lowest

532

Enhanced Universal Serial Communication Interface (eUSCI) – SPI Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

Chapter 19
SLAU445D – October 2014 – Revised December 2015

Enhanced Universal Serial Communication Interface
(eUSCI) – I2C Mode
The enhanced universal serial communication interface B (eUSCI_B) supports multiple serial
communication modes with one hardware module. This chapter describes the operation of the I2C mode.
Topic

19.1
19.2
19.3
19.4

...........................................................................................................................
Enhanced Universal Serial Communication Interface B (eUSCI_B) Overview ...........
eUSCI_B Introduction – I2C Mode .......................................................................
eUSCI_B Operation – I2C Mode ...........................................................................
eUSCI_B I2C Registers ......................................................................................

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

Page

534
534
535
555

533

Enhanced Universal Serial Communication Interface B (eUSCI_B) Overview

www.ti.com

19.1 Enhanced Universal Serial Communication Interface B (eUSCI_B) Overview
The eUSCI_B module supports two serial communication modes:
• I2C mode
• SPI mode
If more than one eUSCI_B module is implemented on one device, those modules are named with
incrementing numbers. For example, if one device has two eUSCI_B modules, they are named eUSCI0_B
and eUSCI1_B.

19.2 eUSCI_B Introduction – I2C Mode
In I2C mode, the eUSCI_B module provides an interface between the device and I2C-compatible devices
connected by the two-wire I2C serial bus. External components attached to the I2C bus serially transmit or
receive serial data to or from the eUSCI_B module through the 2-wire I2C interface.
The eUSCI_B I2C mode features include:
• 7-bit and 10-bit device addressing modes
• General call
• START, RESTART, STOP
• Multiple-master transmitter or receiver mode
• Slave receiver or transmitter mode
• Supports standard mode up to 100 kbps and fast mode up to 400 kbps
• Programmable UCxCLK frequency in master mode
• Designed for low power
• 8-bit byte counter with interrupt capability and automatic STOP assertion
• Up to four hardware slave addresses, each having its own interrupt
• Mask register for slave address and address received interrupt
• Clock low time-out interrupt to avoid bus stalls
• Slave operation in LPM4
• Slave receiver START detection for auto wake up from LPMx modes (not LPM3.5 and LPM4.5)
Figure 19-1 shows the eUSCI_B when configured in I2C mode.

534

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com
UCA10 UCGCEN
Address Mask
UCBxADDMASK

Own Address
UCBxI2COA0

Own Address
UCBxI2COA1

Own Address
UCBxI2COA2

Own Address
UCBxI2COA3
UCxSDA

Receive Shift Register

Receive Buffer UCBxRXBUF

I2C State Machine

Byte Counter UCBxBCNT

Transmit Buffer UCBxTXBUF
(2)

Transmit Shift Register

Slave Address UCBxI2CSA
MODCLK

UCSLA10

Clock Low
timeout generator
UCxSCL

UCSSELx
Bit Clock Generator
UCxBRx
UCLKI

(1)

00

Device Specific

01

SMCLK

10

SMCLK

11

(1)
(2)

(2)

16
UCMST
BRCLK

Prescaler/Divider

Externally provided clock on the eUSCI_B SPI clock input pin
Not the actual implementation (transistor not located in eUSCI_B module)

Figure 19-1. eUSCI_B Block Diagram – I2C Mode

19.3 eUSCI_B Operation – I2C Mode
The I2C mode supports any slave or master I2C-compatible device. Figure 19-2 shows an example of an
I2C bus. Each I2C device is recognized by a unique address and can operate as either a transmitter or a
receiver. A device connected to the I2C bus can be considered as the master or the slave when
performing data transfers. A master initiates a data transfer and generates the clock signal SCL. Any
device addressed by a master is considered a slave.
I2C data is communicated using the serial data (SDA) pin and the serial clock (SCL) pin. Both SDA and
SCL are bidirectional and must be connected to a positive supply voltage using a pullup resistor.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

535

eUSCI_B Operation – I2C Mode

www.ti.com

VCC
Device A

MSP430

Serial Data (SDA)
Serial Clock (SCL)

Device C

Device B

Figure 19-2. I2C Bus Connection Diagram

NOTE:

SDA and SCL levels
The SDA and SCL pins must not be pulled up above the device VCC level.

19.3.1 eUSCI_B Initialization and Reset
The eUSCI_B is reset by a PUC or by setting the UCSWRST bit. After a PUC, the UCSWRST bit is
automatically set, keeping the eUSCI_B in a reset condition. To select I2C operation, the UCMODEx bits
must be set to 11. After module initialization, it is ready for transmit or receive operation. Clearing
UCSWRST releases the eUSCI_B for operation.
Configuring and reconfiguring the eUSCI_B module should be done when UCSWRST is set to avoid
unpredictable behavior. Setting UCSWRST in I2C mode has the following effects:
• I2C communication stops.
• SDA and SCL are high impedance.
• UCBxSTAT, bits 15-9 and 6-4 are cleared.
• Registers UCBxIE and UCBxIFG are cleared.
• All other bits and registers remain unchanged.
NOTE:

Initializing or re-configuring the eUSCI_B module
The recommended eUSCI_B initialization/reconfiguration process is:
1. Set UCSWRST (BIS.B #UCSWRST,&UCxCTL1).
2. Initialize all eUSCI_B registers with UCSWRST = 1 (including UCxCTL1).
3. Configure ports.
4. Clear UCSWRST using software (BIC.B #UCSWRST,&UCxCTL1).
5. Enable interrupts (optional).

19.3.2 I2C Serial Data
One clock pulse is generated by the master device for each data bit transferred. The I2C mode operates
with byte data. Data is transferred MSB first as shown in Figure 19-3.
The first byte after a START condition consists of a 7-bit slave address and the R/W bit. When R/W = 0,
the master transmits data to a slave. When R/W = 1, the master receives data from a slave. The ACK bit
is sent from the receiver after each byte on the ninth SCL clock.

536

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

SDA
MSB

Acknowledgement
Signal From Receiver

Acknowledgement
Signal From Receiver

SCL
1
START
Condition (S)

2

7

8
R/W

9
ACK

1

2

8

9
ACK

STOP
Condition (P)

Figure 19-3. I2C Module Data Transfer
START and STOP conditions are generated by the master and are shown in Figure 19-3. A START
condition is a high-to-low transition on the SDA line while SCL is high. A STOP condition is a low-to-high
transition on the SDA line while SCL is high. The bus busy bit, UCBBUSY, is set after a START and
cleared after a STOP.
Data on SDA must be stable during the high period of SCL (see Figure 19-4). The high and low state of
SDA can change only when SCL is low, otherwise START or STOP conditions are generated.
Data Line
Stable Data
SDA

SCL

Change of Data Allowed

Figure 19-4. Bit Transfer on I2C Bus

19.3.3 I2C Addressing Modes
The I2C mode supports 7-bit and 10-bit addressing modes.
19.3.3.1 7-Bit Addressing
In the 7-bit addressing format (see Figure 19-5), the first byte is the 7-bit slave address and the R/W bit.
The ACK bit is sent from the receiver after each byte.
1

S

7

Slave Address

1

1

R/W

ACK

8

Data

1

ACK

8

Data

1

1

ACK P

Figure 19-5. I2C Module 7-Bit Addressing Format

19.3.3.2 10-Bit Addressing
In the 10-bit addressing format (see Figure 19-6), the first byte is made up of 11110b plus the two MSBs
of the 10-bit slave address and the R/W bit. The ACK bit is sent from the receiver after each byte. The
next byte is the remaining eight bits of the 10-bit slave address, followed by the ACK bit and the 8-bit data.
See I2C Slave 10-bit Addressing Mode and I2C Master 10-bit Addressing Mode for details how to use the
10-bit addressing mode with the eUSCI_B module.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

537

eUSCI_B Operation – I2C Mode
1

www.ti.com
1

7

S Slave Address 1st byte
1

1

1

1

0

X

1

R/W

1

8

1

8

ACK Slave Address 2nd byte ACK

Data

1

ACK P

X

Figure 19-6. I2C Module 10-Bit Addressing Format

19.3.3.3 Repeated Start Conditions
The direction of data flow on SDA can be changed by the master, without first stopping a transfer, by
issuing a repeated START condition. This is called a RESTART. After a RESTART is issued, the slave
address is again sent out with the new data direction specified by the R/W bit. The RESTART condition is
shown in Figure 19-7.
1

7

1

S

Slave Address

1

R/W ACK

1

8

1

1

Data

ACK

S

1

7

Slave Address

Any
Number

1

R/W ACK

1

8

1

1

Data

ACK

P

Any Number

Figure 19-7. I2C Module Addressing Format With Repeated START Condition

19.3.4 I2C Quick Setup
This section gives a quick introduction into the operation of the eUSCI_B in I2C mode. The basic steps to
start communication are described and shown as a software example. More detailed information about the
possible configurations and details can be found in Section 19.3.5.
The latest code examples can be found on the MSP430 website under "Code Examples".
To set up the eUSCI_B as a master transmitter that transmits to a slave with the address 0x12h, only a
few steps are needed (see Example 19-1).
Example 19-1. Master TX With 7-Bit Address
UCBxCTL1 |= UCSWRST;
// put eUSCI_B in reset state
UCBxCTLW0 |= UCMODE_3 + UCMST; // I2C master mode
UCBxBRW = 0x0008;
// baud rate = SMCLK / 8
UCBxCTLW1 = UCASTP_2;
// automatic STOP assertion
UCBxTBCNT = 0x07;
// TX 7 bytes of data
UCBxI2CSA = 0x0012;
// address slave is 12hex
P2SEL |= 0x03;
// configure I2C pins (device specific)
UCBxCTL1 &= ^UCSWRST;
// eUSCI_B in operational state
UCBxIE |= UCTXIE;
// enable TX-interrupt
GIE;
// general interrupt enable
...
// inside the eUSCI_B TX interrupt service routine
UCBxTXBUF = 0x77;
// fill TX buffer

As shown in the code example, all configurations must be done while UCSWRST is set. To select the I2C
operation of the eUSCI_B, UCMODE must be set accordingly. The baud rate of the transmission is set by
writing the correct divider in the UCBxBRW register. The default clock selected is SMCLK. How many
bytes are transmitted in one frame is controlled by the byte counter threshold register UCBxTBCNT
together with the UCASTPx bits.
The slave address to send to is specified in the UCBxI2CSA register. Finally, the ports must be
configured. This step is device dependent; see the data sheet for the pins that must be used.
Each byte that is to be transmitted must be written to UCBxTXBUF inside the interrupt service routine.
Example 19-3 shows the recommended structure of the interrupt service routine.
538

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

Example 19-2 shows the steps needed to set up the eUSCI_B as a slave with the address 0x12h that is
able to receive and transmit data to the master.
Example 19-2. Slave RX With 7-Bit Address
UCBxCTL1 |= UCSWRST;
// eUSCI_B in reset state
UCBxCTLW0 |= UCMODE_3;
// I2C slave mode
UCBxI2COA0 = 0x0012;
// own address is 12hex
P2SEL |= 0x03;
// configure I2C pins (device specific)
UCBxCTL1 &= ^UCSWRST;
// eUSCI_B in operational state
UCBxIE |= UCTXIE + UCRXIE; // enable TX&RX-interrupt
GIE;
// general interrupt enable
...
// inside the eUSCI_B TX interrupt service routine
UCBxTXBUF = 0x77;
// send 077h
...
// inside the eUSCI_B RX interrupt service routine
data = UCBxRXBUF;
// data is the internal variable

As shown in Example 19-2, all configurations must be done while UCSWRST is set. For the slave, I2C
operation is selected by setting UCMODE. The slave address is specified in the UCBxI2COA0 register. To
enable the interrupts for receive and transmit requests, the according bits in UCBxIE and, at the end, GIE
need to be set. Finally the ports must be configured. This step is device dependent; see the data sheet for
the pins that are used.
The RX interrupt service routine is called for every byte received by a master device. The TX interrupt
service routine is executed each time the master requests a byte. The recommended structure of the
interrupt service routine can be found in Example 19-3.

19.3.5 I2C Module Operating Modes
In I2C mode, the eUSCI_B module can operate in master transmitter, master receiver, slave transmitter, or
slave receiver mode. The modes are discussed in the following sections. Time lines are used to illustrate
the modes.
Figure 19-8 shows how to interpret the time-line figures. Data transmitted by the master is represented by
grey rectangles; data transmitted by the slave is represented by white rectangles. Data transmitted by the
eUSCI_B module, either as master or slave, is shown by rectangles that are taller than the others.
Actions taken by the eUSCI_B module are shown in grey rectangles with an arrow indicating where in the
data stream the action occurs. Actions that must be handled with software are indicated with white
rectangles with an arrow pointing to where in the data stream the action must take place.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

539

eUSCI_B Operation – I2C Mode

www.ti.com

Other Master

Other Slave

USCI Master

USCI Slave

...

Bits set or reset by software

...

Bits set or reset by hardware

Figure 19-8. I2C Time-Line Legend

19.3.5.1 Slave Mode
The eUSCI_B module is configured as an I2C slave by UCMODEx = 11, UCSYNC = 1, and UCMST = 0.
Initially, the eUSCI_B module must be configured in receiver mode by clearing the UCTR bit to receive the
I2C address. Afterwards, transmit and receive operations are controlled automatically, depending on the
R/W bit received together with the slave address.
The eUSCI_B slave address is programmed with the UCBxI2COA0 register. Support for multiple slave
addresses is explained in Section 19.3.9. When UCA10 = 0, 7-bit addressing is selected. When UCA10 =
1, 10-bit addressing is selected. The UCGCEN bit selects if the slave responds to a general call.
When a START condition is detected on the bus, the eUSCI_B module receives the transmitted address
and compares it against its own address stored in UCBxI2COA0. The UCSTTIFG flag is set when address
received matches the eUSCI_B slave address.
19.3.5.1.1 I2C Slave Transmitter Mode
Slave transmitter mode is entered when the slave address transmitted by the master is identical to its own
address with a set R/W bit. The slave transmitter shifts the serial data out on SDA with the clock pulses
that are generated by the master device. The slave device does not generate the clock, but it does hold
SCL low while intervention of the CPU is required after a byte has been transmitted.
If the master requests data from the slave, the eUSCI_B module is automatically configured as a
transmitter and UCTR and UCTXIFG0 become set. The SCL line is held low until the first data to be sent
is written into the transmit buffer UCBxTXBUF. Then the address is acknowledged and the data is
transmitted. As soon as the data is transferred into the shift register, the UCTXIFG0 is set again. After the
data is acknowledged by the master, the next data byte written into UCBxTXBUF is transmitted or, if the
buffer is empty, the bus is stalled during the acknowledge cycle by holding SCL low until new data is
written into UCBxTXBUF. If the master sends a NACK followed by a STOP condition, the UCSTPIFG flag
is set. If the NACK is followed by a repeated START condition, the eUSCI_B I2C state machine returns to
its address-reception state.
Figure 19-9 shows the slave transmitter operation.

540

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

Reception of own
S
SLA/R
address and
transmission of data
bytes
UCTR=1 (Transmitter)
UCSTTIFG=1
UCTXIFG=1
UCBxTXBUF discarded

A

DATA

A

DATA

A

DATA

A

P

Write data to UCBxTXBUF

UCTXIFG=1

UCSTPIFG=1

Bus stalled (SCL held low)
until data available
Write data to UCBxTXBUF
Repeated start continue as
slave transmitter

DATA

A

S

SLA/R

UCTR=1 (Transmitter)
UCSTTIFG=1
UCTXIFG=1
UCBxTXBUF discarded

Repeated start continue as
slave receiver

DATA

Arbitration lost as
master and
addressed as slave

A

S

SLA/W

UCTR=0 (Receiver)
UCSTTIFG=1

A

UCALIFG=1
UCMST=0
UCTR=1 (Transmitter)
UCSTTIFG=1
UCTXIFG=1

Figure 19-9. I2C Slave Transmitter Mode
19.3.5.1.2 I2C Slave Receiver Mode
Slave receiver mode is entered when the slave address transmitted by the master is identical to its own
address and a cleared R/W bit is received. In slave receiver mode, serial data bits received on SDA are
shifted in with the clock pulses that are generated by the master device. The slave device does not
generate the clock, but it can hold SCL low if intervention of the CPU is required after a byte has been
received.
If the slave receives data from the master, the eUSCI_B module is automatically configured as a receiver
and UCTR is cleared. After the first data byte is received, the receive interrupt flag UCRXIFG0 is set. The
eUSCI_B module automatically acknowledges the received data and can receive the next data byte.
If the previous data was not read from the receive buffer UCBxRXBUF at the end of a reception, the bus
is stalled by holding SCL low. As soon as UCBxRXBUF is read, the new data is transferred into
UCBxRXBUF, an acknowledge is sent to the master, and the next data can be received.
Setting the UCTXNACK bit causes a NACK to be transmitted to the master during the next
acknowledgment cycle. A NACK is sent even if UCBxRXBUF is not ready to receive the latest data. If the
UCTXNACK bit is set while SCL is held low, the bus is released, a NACK is transmitted immediately, and
UCBxRXBUF is loaded with the last received data. Because the previous data was not read, that data is
lost. To avoid loss of data, the UCBxRXBUF must be read before UCTXNACK is set.
When the master generates a STOP condition, the UCSTPIFG flag is set.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

541

eUSCI_B Operation – I2C Mode

www.ti.com

If the master generates a repeated START condition, the eUSCI_B I2C state machine returns to its
address-reception state.
Figure 19-10 shows the I2C slave receiver operation.
Reception of own
address and data
bytes. All are
acknowledged.

S

SLA/W

A

DATA

A

DATA

A

DATA

A

P or S

UCRXIFG=1
UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG = 0

Bus stalled
(SCL held low)
if UCBxRXBUF not read

Refer to:
”Slave Transmitter”
Timing Diagram

Read data from UCBxRXBUF

Last byte is not
acknowledged.

DATA

UCTXNACK=1

A

P or S

UCTXNACK=0

Bus not stalled even if
UCBxRXBUF not read
Reception of the
general call
address.

Gen Call

A

UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0
UCGC=1

Arbitration lost as
master and
addressed as slave

A

UCALIFG=1
UCMST=0
UCTR=0 (Receiver)
UCSTTIFG=1
(UCGC=1 if general call)
UCTXIFG=0
UCSTPIFG=0

Figure 19-10. I2C Slave Receiver Mode
19.3.5.1.3 I2C Slave 10-Bit Addressing Mode
The 10-bit addressing mode is selected when UCA10 = 1 and is as shown in Figure 19-11. In 10-bit
addressing mode, the slave is in receive mode after the full address is received. The eUSCI_B module
indicates this by setting the UCSTTIFG flag while the UCTR bit is cleared. To switch the slave into
transmitter mode, the master sends a repeated START condition together with the first byte of the address
but with the R/W bit set. This sets the UCSTTIFG flag if it was previously cleared by software, and the
eUSCI_B modules switches to transmitter mode with UCTR = 1.

542

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com
Slave Receiver

Reception of own
address and data
bytes. All are
acknowledged.

S

11110 xx/W

A

SLA (2.)

DATA

A

DATA

A

A

P or S

UCRXIFG=1
UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0

Reception of the
general call
address.

Gen Call

A

DATA

UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0
UCGC=1

DATA

A

A

P or S

UCRXIFG=1

Slave Transmitter

Reception of own
address and
transmission of data
bytes

S

11110 xx/W

A

SLA (2.)

A

S

11110 xx/R

A

DATA

A

P or S

UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0

UCTR=1 (Transmitter)
UCSTTIFG=1
UCTXIFG=1
UCSTPIFG=0

Figure 19-11. I2C Slave 10-Bit Addressing Mode

19.3.5.2 Master Mode
The eUSCI_B module is configured as an I2C master by selecting the I2C mode with UCMODEx = 11 and
UCSYNC = 1 and setting the UCMST bit. When the master is part of a multiple-master system, UCMM
must be set and its own address must be programmed into the UCBxI2COA0 register. Support for multiple
slave addresses is described in Section 19.3.9. When UCA10 = 0, 7-bit addressing is selected. When
UCA10 = 1, 10-bit addressing is selected. The UCGCEN bit selects if the eUSCI_B module responds to a
general call.
NOTE:

Addresses and multiple-master systems
In master mode with own-address detection enabled (UCOAEN = 1)—especially in multiplemaster systems—it is not allowed to specify the same address in the own address and slave
address register (UCBxI2CSA = UCBxI2COAx). This would mean that the eUSCI_B
addresses itself.
The user software must ensure that this situation does not occur. There is no hardware
detection for this case, and the consequence is unpredictable behavior of the eUSCI_B.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

543

eUSCI_B Operation – I2C Mode

www.ti.com

19.3.5.2.1 I2C Master Transmitter Mode
After initialization, master transmitter mode is initiated by writing the desired slave address to the
UCBxI2CSA register, selecting the size of the slave address with the UCSLA10 bit, setting UCTR for
transmitter mode, and setting UCTXSTT to generate a START condition.
The eUSCI_B module waits until the bus is available, then generates the START condition and transmits
the slave address. The UCTXIFG0 bit is set when the START condition is generated and the first data to
be transmitted can be written into UCBxTXBUF. The UCTXSTT flag is cleared as soon as the complete
address is sent.
The data written into UCBxTXBUF is transmitted if arbitration is not lost during transmission of the slave
address. UCTXIFG0 is set again as soon as the data is transferred from the buffer into the shift register. If
there is no data loaded to UCBxTXBUF before the acknowledge cycle, the bus is held during the
acknowledge cycle with SCL low until data is written into UCBxTXBUF. Data is transmitted or the bus is
held as long as:
• No automatic STOP is generated
• The UCTXSTP bit is not set
• The UCTXSTT bit is not set
Setting UCTXSTP generates a STOP condition after the next acknowledge from the slave. If UCTXSTP is
set during the transmission of the slave address or while the eUSCI_B module waits for data to be written
into UCBxTXBUF, a STOP condition is generated, even if no data was transmitted to the slave. In this
case, the UCSTPIFG is set. When transmitting a single byte of data, the UCTXSTP bit must be set while
the byte is being transmitted or any time after transmission begins, without writing new data into
UCBxTXBUF. Otherwise, only the address is transmitted. When the data is transferred from the buffer to
the shift register, UCTXIFG0 is set, indicating data transmission has begun, and the UCTXSTP bit may be
set. When UCASTPx = 10 is set, the byte counter is used for STOP generation and the user does not
need to set the UCTXSTP. This is recommended when transmitting only one byte.
Setting UCTXSTT generates a repeated START condition. In this case, UCTR may be set or cleared to
configure transmitter or receiver, and a different slave address may be written into UCBxI2CSA, if desired.
If the slave does not acknowledge the transmitted data, the not-acknowledge interrupt flag UCNACKIFG is
set. The master must react with either a STOP condition or a repeated START condition. If data was
already written into UCBxTXBUF, it is discarded. If this data should be transmitted after a repeated
START, it must be written into UCBxTXBUF again. Any set UCTXSTT or UCTXSTP is also discarded.
Figure 19-12 shows the I2C master transmitter operation.

544

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

Successful
transmission to a
slave receiver

S

A

SLA/W

1) UCTR=1 (Transmitter)
2) UCTXSTT=1

DATA

A

DATA

A

DATA

A

P

UCTXSTT=0

UCTXSTP=0

UCTXIFG=1

UCTXSTP=1

UCTXIFG=1
UCBxTXBUF discarded
Bus stalled (SCL held low)
until data available

Next transfer started
with a repeated start
condition

DATA

Write data to UCBxTXBUF

A

S

SLA/W

1) UCTR=1 (Transmitter)
2) UCTXSTT=1

UCTXSTT=0
UCNACKIFG=1

DATA

A

S

SLA/R

UCBxTXBUF discarded
1) UCTR=0 (Receiver)
2) UCTXSTT=1

UCTXSTP=1

Not acknowledge
received after slave
address

A

P

UCTXSTP=0
1) UCTR=1 (Transmitter)
2) UCTXSTT=1

Not acknowledge
received after a data
byte

A

S

SLA/W

S

SLA/R

UCTXIFG=1
UCBxTXBUF discarded

1) UCTR=0 (Receiver)
2) UCTXSTT=1

UCNACKIFG=1
UCBxTXBUF discarded

Arbitration lost in
slave address or
data byte

Other master continues

Other master continues

UCALIFG=1
UCMST=0

UCALIFG=1
UCMST=0

Arbitration lost and
addressed as slave

A

Other master continues

UCALIFG=1
UCMST=0
UCTR=0 (Receiver)
UCSTTIFG=1
(UCGC=1 if general call)
USCI continues as Slave Receiver

Figure 19-12. I2C Master Transmitter Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

545

eUSCI_B Operation – I2C Mode

www.ti.com

19.3.5.2.2 I2C Master Receiver Mode
After initialization, master receiver mode is initiated by writing the desired slave address to the
UCBxI2CSA register, selecting the size of the slave address with the UCSLA10 bit, clearing UCTR for
receiver mode, and setting UCTXSTT to generate a START condition.
The eUSCI_B module checks if the bus is available, generates the START condition, and transmits the
slave address. The UCTXSTT flag is cleared as soon as the complete address is sent.
After the acknowledge of the address from the slave, the first data byte from the slave is received and
acknowledged and the UCRXIFG flag is set. Data is received from the slave, as long as:
• No automatic STOP is generated
• The UCTXSTP bit is not set
• The UCTXSTT bit is not set
If a STOP condition was generated by the eUSCI_B module, the UCSTPIFG is set. If UCBxRXBUF is not
read, the master holds the bus during reception of the last data bit and until the UCBxRXBUF is read.
If the slave does not acknowledge the transmitted address, the not-acknowledge interrupt flag
UCNACKIFG is set. The master must react with either a STOP condition or a repeated START condition.
A STOP condition is either generated by the automatic STOP generation or by setting the UCTXSTP bit.
The next byte received from the slave is followed by a NACK and a STOP condition. This NACK occurs
immediately if the eUSCI_B module is currently waiting for UCBxRXBUF to be read.
If a RESTART is sent, UCTR may be set or cleared to configure transmitter or receiver, and a different
slave address may be written into UCBxI2CSA if desired.
Figure 19-13 shows the I2C master receiver operation.
NOTE:

Consecutive master transactions without repeated START
When performing multiple consecutive I2C master transactions without the repeated START
feature, the current transaction must be completed before the next one is initiated. This can
be done by ensuring that the transmit STOP condition flag UCTXSTP is cleared before the
next I2C transaction is initiated with setting UCTXSTT = 1. Otherwise, the current transaction
might be affected.

546

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

Successful
reception from a
slave transmitter

S

SLA/R

A

DATA

1) UCTR=0 (Receiver)
2) UCTXSTT=1

DATA

A

UCTXSTT=0

A

DATA

A

P

UCTXSTP=1

UCRXIFG=1

Next transfer started
with a repeated start
condition

DATA

A

UCTXSTP=0

S

SLA/W

1) UCTR=1 (Transmitter)
2) UCTXSTT=1

DATA

UCTXSTP=1

Not acknowledge
received after slave
address

A

P

A

S

SLA/R

1) UCTR=0 (Receiver)
2) UCTXSTT=1

UCTXSTP=0

UCTXSTT=0
UCNACKIFG=1
S

SLA/W

1) UCTR=1 (Transmitter)
2) UCTXSTT=1
UCTXIFG=1

S

Arbitration lost in
slave address or
data byte

SLA/R

1) UCTR=0 (Receiver)
2) UCTXSTT=1

Other master continues

Other master continues

UCALIFG=1
UCMST=0

UCALIFG=1
UCMST=0

Arbitration lost and
addressed as slave

A

Other master continues

UCALIFG=1
UCMST=0
UCTR=1 (Transmitter)
UCSTTIFG=1
UCTXIFG=1
USCI continues as Slave Transmitter

Figure 19-13. I2C Master Receiver Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

547

eUSCI_B Operation – I2C Mode

www.ti.com

19.3.5.2.3 I2C Master 10-Bit Addressing Mode
The 10-bit addressing mode is selected when UCSLA10 = 1 and is shown in Figure 19-14.
Master Transmitter

Successful
transmission to a
slave receiver

S

11110xx/W

A

SLA(2.)

A

1) UCTR=1(Transmitter)
2) UCTXSTT=1

A

DATA

A

DATA

P

UCTXSTT=0

UCTXSTP=0

UCTXIFG=1

UCTXSTP=1

UCTXIFG=1

Master Receiver

Successful
reception from a
slave transmitter

S

11110xx/W

A

SLA(2.)

A

1) UCTR=0(Receiver)
2) UCTXSTT=1

S

11110xx/R

A

UCTXSTT=0

DATA

A

DATA

UCRXIFG=1

A

P

UCTXSTP=0

UCTXSTP=1

Figure 19-14. I2C Master 10-Bit Addressing Mode

19.3.5.3 Arbitration
If two or more master transmitters simultaneously start a transmission on the bus, an arbitration procedure
is invoked. Figure 19-15 shows the arbitration procedure between two devices. The arbitration procedure
uses the data presented on SDA by the competing transmitters. The first master transmitter that generates
a logic high is overruled by the opposing master generating a logic low. The arbitration procedure gives
priority to the device that transmits the serial data stream with the lowest binary value. The master
transmitter that lost arbitration switches to the slave receiver mode and sets the arbitration lost flag
UCALIFG. If two or more devices send identical first bytes, arbitration continues on the subsequent bytes.
Bus Line
SCL
Device #1 Lost Arbitration
and Switches Off

n

Data From
Device #1
1
Data From
Device #2

0

0

0

0

1
Bus Line
SDA

0
1

1

1
0

1

1

Figure 19-15. Arbitration Procedure Between Two Master Transmitters
There is an undefined condition if the arbitration procedure is still in progress when one master sends a
repeated START or a STOP condition while the other master is still sending data. In other words, the
following combinations result in an undefined condition:
• Master 1 sends a repeated START condition and master 2 sends a data bit.
• Master 1 sends a STOP condition and master 2 sends a data bit.
• Master 1 sends a repeated START condition and master 2 sends a STOP condition.

548

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

19.3.6 Glitch Filtering
According to the I2C standard, both the SDA and the SCL line need to be glitch filtered. The eUSCI_B
module provides the UCGLITx bits to configure the length of this glitch filter:
Table 19-1. Glitch Filter Length Selection Bits
UCGLITx

Corresponding Glitch Filter Length on SDA and SCL

According to I2C
Standard

00

Pulses of max 50-ns length are filtered

yes

01

Pulses of max 25-ns length are filtered.

no

10

Pulses of max 12.5-ns length are filtered.

no

11

Pulses of max 6.25-ns length are filtered.

no

19.3.7 I2C Clock Generation and Synchronization
The I2C clock SCL is provided by the master on the I2C bus. When the eUSCI_B is in master mode,
BITCLK is provided by the eUSCI_B bit clock generator and the clock source is selected with the
UCSSELx bits. In slave mode, the bit clock generator is not used and the UCSSELx bits are don't care.
The 16-bit value of UCBRx in registers UCBxBR1 and UCBxBR0 is the division factor of the eUSCI_B
clock source, BRCLK. The maximum bit clock that can be used in single master mode is fBRCLK/4. In
multiple-master mode, the maximum bit clock is fBRCLK/8. The BITCLK frequency is given by:
fBitClock = fBRCLK/UCBRx
The minimum high and low periods of the generated SCL are:
tLOW,MIN = tHIGH,MIN = (UCBRx/2)/fBRCLK when UCBRx is even
tLOW,MIN = tHIGH,MIN = ((UCBRx – 1)/2)/fBRCLK when UCBRx is odd
The eUSCI_B clock source frequency and the prescaler setting UCBRx must to be chosen such that the
minimum low and high period times of the I2C specification are met.
During the arbitration procedure, the clocks from the different masters must be synchronized. A device
that first generates a low period on SCL overrules the other devices, forcing them to start their own low
periods. SCL is then held low by the device with the longest low period. The other devices must wait for
SCL to be released before starting their high periods. Figure 19-16 shows the clock synchronization. This
allows a slow slave to slow down a fast master.
Wait
State

Start HIGH
Period

SCL From
Device #1

SCL From
Device #2

Bus Line
SCL

Figure 19-16. Synchronization of Two I2C Clock Generators During Arbitration

19.3.7.1 Clock Stretching
The eUSCI_B module supports clock stretching and also makes use of this feature as described in the
operation mode sections.
The UCSCLLOW bit can be used to observe if another device pulls SCL low while the eUSCI_B module
already released SCL due to the following conditions:
• eUSCI_B is acting as master and a connected slave drives SCL low.
SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

549

eUSCI_B Operation – I2C Mode

•

www.ti.com

eUSCI_B is acting as master and another master drives SCL low during arbitration.

The UCSCLLOW bit is also active if the eUSCI_B holds SCL low because it is waiting as transmitter for
data being written into UCBxTXBUF or as receiver for the data being read from UCBxRXBUF. The
UCSCLLOW bit might be set for a short time with each rising SCL edge because the logic observes the
external SCL and compares it to the internally generated SCL.
19.3.7.2 Avoiding Clock Stretching
Even though clock stretching is part of the I2C specification, there are applications in which clock
stretching should be avoided.
The clock is stretched by the eUSCI_B under the following conditions:
• The internal shift register is expecting data, but the TXIFG is still pending
• The internal shift register is full, but the RXIFG is still pending
• The arbitration lost interrupt is pending
• UCSWACK is selected and UCBxI2COA0 did cause a match
To avoid clock stretching, all of these situations for clock stretch either need to be avoided or the
corresponding interrupt flags need to be processed before the actual clock stretch can occur.
The software must ensure that the corresponding interrupts are serviced in time before the clock is
stretched.
In slave transmitter mode, the TXIFG is set only after the reception of the direction bit; therefore, there is
only a short amount of time for the software to write the TXBUF before a clock stretch occurs. This
situation can be remedied by using the early Transmit Interrupt (see Section 19.3.11.2).
19.3.7.3 Clock Low Timeout
The UCCLTOIFG interrupt allows the software to react if the clock is low longer than a defined time. It is
possible to detect the situation, when a clock is stretched by a master or slave for a too long time. The
user can then, for example, reset the eUSCI_B module by using the UCSWRST bit.
The clock low time-out feature is enabled using the UCCLTO bits. It is possible to select one of three
predefined times for the clock low time-out. If the clock has been low longer than the time defined with the
UCCLTO bits and the eUSCI_B was actively receiving or transmitting, the UCCLTOIFG is set and an
interrupt request is generated if UCCLTOIE and GIE are set as well. The UCCLTOIFG is set only once,
even if the clock is stretched a multiple of the time defined in UCCLTO.

19.3.8 Byte Counter
The eUSCI_B module supports hardware counting of the bytes received or transmitted. The counter is
automatically active and counts up for each byte seen on the bus in both master and slave mode.
The byte counter is incremented at the second bit position of each byte independently of the following
ACK or NACK. A START or RESTART condition resets the counter value to zero. Address bytes do not
increment the counter. The byte counter is also incremented at the second bit position, if an arbitration lost
occurs during the first bit of data.
19.3.8.1 Byte Counter Interrupt
If UCASTPx = 01 or 10 the UCBCNTIFG is set when the byte counter threshold value UCBxTBCNT is
reached in both master- and slave-mode. Writing zero to UCBxTBCNT does not generate an interrupt.
19.3.8.2 Automatic STOP Generation
When the eUSCI_B module is configured as a master, the byte counter can be used for automatic STOP
generation by setting the UCASTPx = 10. Before starting the transmission using UCTXSTT, the byte
counter threshold UCBxTBCNT must be set to the number of bytes that are to be transmitted or received.
After the number of bytes that are configured in UCBxTBCNT have been transmitted, the eUSCI_B
automatically generates a STOP condition.
550

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

UCBxTBCNT cannot be used if the user wants to transmit the slave address only without any data. In this
case, it is recommended to set UCTXSTT and UCTXSTP at the same time.

19.3.9 Multiple Slave Addresses
The eUSCI_B module supports two different ways of implementing multiple slave addresses at the same
time:
• Hardware support for up to 4 different slave addresses, each with its own interrupt flag
• Software support for up to 210 different slave addresses all sharing one interrupt
19.3.9.1 Multiple Slave Address Registers
The registers UCBxI2COA0, UCBxI2COA1, UCBxI2COA2, and UCBxI2COA3 contain four slave
addresses. Up to four address registers are compared against a received 7- or 10-bit address. Each slave
address must be activated by setting the UCAOEN bit in the corresponding UCBxI2COAx register.
Register UCBxI2COA3 has the highest priority if the address received on the bus matches more than one
of the slave address registers. The priority decreases with the index number of the address register, so
that UCBxI2COA0 in combination with the address mask has the lowest priority.
When one of the slave registers matches the 7- or 10-bit address seen on the bus, the address is
acknowledged. In the following the corresponding receive- or transmit-interrupt flag (UCTXIFGx or
UCRXIFGx) to the received address is updated. The state change interrupt flags are independent of the
address comparison result. They are updated according to the bus condition.
19.3.9.2 Address Mask Register
The address mask register can be used when the eUSCI_B is configured in slave or in multiple-master
mode. To activate this feature, at least one bit of the address mask in register UCBxADDMASK must be
cleared.
If the received address matches the own address in UCBxI2COA0 on all bit positions that are not masked
by UCBxADDMASK, the eUSCI_B module considers the received address as its own address. If
UCSWACK = 0, the module sends an acknowledge automatically. If UCSWACK = 1, the user software
must evaluate the received address in register UCBxADDRX after the UCSTTIFG is set. To acknowledge
the received address, the software must set UCTXACK to 1.
The eUSCI_B module also automatically acknowledges a slave address that is seen on the bus if the
address matches any of the enabled slave addresses defined in UCBxI2COA1 to UCBxI2COA3.
NOTE:

UCSWACK and slave-transmitter
If the user selects manual acknowledge of slave addresses, TXIFG is set if the slave is
addressed as a transmitter. If the software decides not to acknowledge the address, TXIFG0
must be reset.

19.3.10 Using the eUSCI_B Module in I2C Mode With Low-Power Modes
The eUSCI_B module provides automatic clock activation for use with low-power modes. When the
eUSCI_B clock source is inactive because the device is in a low-power mode, the eUSCI_B module
automatically activates it when needed, regardless of the control-bit settings for the clock source. The
clock remains active until the eUSCI_B module returns to its idle condition. After the eUSCI_B module
returns to the idle condition, control of the clock source reverts to the settings of its control bits.
In I2C slave mode, no internal clock source is required because the clock is provided by the external
master. It is possible to operate the eUSCI_B in I2C slave mode while the device is in LPM4 and all
internal clock sources are disabled. The receive or transmit interrupts can wake up the CPU from any lowpower mode.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

551

eUSCI_B Operation – I2C Mode

www.ti.com
2

19.3.11 eUSCI_B Interrupts in I C Mode
The eUSCI_B has only one interrupt vector that is shared for transmission, reception, and the state
change.
Each interrupt flag has its own interrupt enable bit. When an interrupt is enabled and the GIE bit is set, the
interrupt flag generates an interrupt request.
All interrupt flags are not cleared automatically, but they need to be cleared together by user interactions
(for example, reading the UCRXBUF clears UCRXIFGx). If the user wants to use an interrupt flag he
needs to ensure that the flag has the correct state before the corresponding interrupt is enabled.
19.3.11.1 I2C Transmit Interrupt Operation
The UCTXIFG0 interrupt flag is set whenever the transmitter is able to accept a new byte. When operating
as a slave with multiple slave addresses, the UCTXIFGx flags are set corresponding to which address
was received before. If, for example, the slave address specified in register UCBxI2COA3 did match the
address seen on the bus, the UCTXIFG3 indicates that the UCBxTXBUF is ready to accept a new byte.
When operating in master mode with automatic STOP generation (UCASTPx = 10), the UCTXIFG0 is set
as many times as defined in UCBxTBCNT.
An interrupt request is generated if UCTXIEx and GIE are also set. UCTXIFGx is automatically reset if a
write to UCBxTXBUF occurs or if the UCALIFG is cleared. UCTXIFGx is set when:
• Master mode: UCTXSTT was set by the user
• Slave mode: own address was received(UCETXINT = 0) or START was received (UCETXINT = 1)
UCTXIEx is reset after a PUC or when UCSWRST = 1.
19.3.11.2 Early I2C Transmit Interrupt
Setting the UCETXINT causes UCTXIFG0 to be sent out automatically when a START condition is sent
and the eUSCI_B is configured as slave. In this case, it is not allowed to enable the other slave addresses
UCBxI2COA1-UCBxI2COA3. This allows the software more time to handle the UCTXIFG0 compared to
the normal situation, when UCTXIFG0 is sent out after the slave address match was detected. Situations
where the UCTXIFG0 was set and afterward no slave address match occurred need to be handled in
software. The use of the byte counter is recommended to handle this.
19.3.11.3 I2C Receive Interrupt Operation
The UCRXIFG0 interrupt flag is set when a character is received and loaded into UCBxRXBUF. When
operating as a slave with multiple slave addresses, the UCRXIFGx flag is set corresponding to which
address was received before.
An interrupt request is generated if UCRXIEx and GIE are also set. UCRXIFGx and UCRXIEx are reset
after a PUC signal or when UCSWRST = 1. UCRXIFGx is automatically reset when UCxRXBUF is read.
19.3.11.4 I2C State Change Interrupt Operation
Table 19-2 describes the I2C state change interrupt flags.
Table 19-2. I2C State Change Interrupt Flags
Interrupt Flag

Interrupt Condition

UCALIFG

Arbitration lost interrupt. Arbitration can be lost when two or more transmitters start a transmission
simultaneously, or when the eUSCI_B operates as master but is addressed as a slave by another master in
the system. The UCALIFG flag is set when arbitration is lost. When UCALIFG is set, the UCMST bit is cleared
and the I2C controller becomes a slave.

UCNACKIFG

Not acknowledge interrupt. This flag is set when an acknowledge is expected but is not received.
UCNACKIFG is used in master mode only.

UCCLTOIFG

Clock low time-out. This interrupt flag is set, if the clock is held low longer than defined by the UCCLTO bits.

552 Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B Operation – I2C Mode

www.ti.com

Table 19-2. I2C State Change Interrupt Flags (continued)
Interrupt Flag

Interrupt Condition

UCBIT9IFG

This interrupt flag is generated each time the eUSCI_B is transferring the nineth clock cycle of a byte of data.
This gives the user the ability to follow the I2C communication in software if wanted. UCBIT9IFG is not set for
address information.

UCBCNTIFG

Byte counter interrupt. This flag is set when the byte counter value reaches the value defined in UCBxTBCNT
and UCASTPx = 01 or 10. This bit allows to organize following communications, especially if a RESTART will
be issued.

UCSTTIFG

START condition detected interrupt. This flag is set when the I2C module detects a START condition together
with its own address (1). UCSTTIFG is used in slave mode only.

UCSTPIFG

STOP condition detected interrupt. This flag is set when the I2C module detects a STOP condition on the bus.
UCSTPIFG is used in slave and master mode.

(1)

The address evaluation includes the address mask register if it is used.

19.3.11.5 UCBxIV, Interrupt Vector Generator
The eUSCI_B interrupt flags are prioritized and combined to source a single interrupt vector. The interrupt
vector register UCBxIV is used to determine which flag requested an interrupt. The highest-priority
enabled interrupt generates a number in the UCBxIV register that can be evaluated or added to the PC to
automatically enter the appropriate software routine. Disabled interrupts do not affect the UCBxIV value.
Read access of the UCBxIV register automatically resets the highest-pending interrupt flag. If another
interrupt flag is set, another interrupt is immediately generated after servicing the initial interrupt.
Write access of the UCBxIV register clears all pending Interrupt conditions and flags.
Example 19-3 shows the recommended use of UCBxIV. The UCBxIV value is added to the PC to
automatically jump to the appropriate routine. The example is given for eUSCI0_B.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

553

eUSCI_B Operation – I2C Mode

www.ti.com

Example 19-3. UCBxIV Software Example
#pragma vector = USCI_B0_VECTOR __interrupt void USCI_B0_ISR(void) {
switch(__even_in_range(UCB0IV,0x1e))
{
case 0x00:
// Vector 0: No interrupts
break;
case 0x02: ... // Vector 2: ALIFG
break;
case 0x04: ... // Vector 4: NACKIFG
break;
case 0x06: ... // Vector 6: STTIFG
break;
case 0x08: ... // Vector 8: STPIFG
break;
case 0x0a: ... // Vector 10: RXIFG3
break;
case 0x0c: ... // Vector 12: TXIFG3
break;
case 0x0e: ... // Vector 14: RXIFG2
break;
case 0x10: ... // Vector 16: TXIFG2
break;
case 0x12: ... // Vector 18: RXIFG1
break;
case 0x14: ... // Vector 20: TXIFG1
break;
case 0x16: ... // Vector 22: RXIFG0
break;
case 0x18: ... // Vector 24: TXIFG0
break;
case 0x1a: ... // Vector 26: BCNTIFG
break;
case 0x1c: ... // Vector 28: clock low time-out
break;
case 0x1e: ... // Vector 30: 9th bit
break;
default:
break;
}
}

554

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4 eUSCI_B I2C Registers
The eUSCI_B registers applicable in I2C mode and their address offsets are listed in Table 19-3. The
base address can be found in the device-specific data sheet.
Table 19-3. eUSCI_B Registers
Offset

Acronym

Register Name

Type

Access

Reset

Section

00h

UCBxCTLW0

eUSCI_Bx Control Word 0

Read/write

Word

01C1h

Section 19.4.1

eUSCI_Bx Control 1

Read/write

Byte

C1h

eUSCI_Bx Control 0

00h

UCBxCTL1

01h

UCBxCTL0

Read/write

Byte

01h

02h

UCBxCTLW1

eUSCI_Bx Control Word 1

Read/write

Word

0000h

Section 19.4.2

06h

UCBxBRW

eUSCI_Bx Bit Rate Control Word

Read/write

Word

0000h

Section 19.4.3

06h

UCBxBR0

eUSCI_Bx Bit Rate Control 0

Read/write

Byte

00h

07h

UCBxBR1

eUSCI_Bx Bit Rate Control 1

Read/write

Byte

00h

Read

Word

0000h

08h

UCBxSTATW

eUSCI_Bx Status Word

Section 19.4.4

08h

UCBxSTAT

eUSCI_Bx Status

Read

Byte

00h

09h

UCBxBCNT

eUSCI_Bx Byte Counter Register

Read

Byte

00h

Read/Write

Word

00h

Section 19.4.5

0Ah

UCBxTBCNT

eUSCI_Bx Byte Counter Threshold
Register

0Ch

UCBxRXBUF

eUSCI_Bx Receive Buffer

Read/write

Word

00h

Section 19.4.6

0Eh

UCBxTXBUF

eUSCI_Bx Transmit Buffer

Read/write

Word

00h

Section 19.4.7

14h

UCBxI2COA0

eUSCI_Bx I2C Own Address 0

Read/write

Word

0000h

Section 19.4.8

16h

UCBxI2COA1

eUSCI_Bx I2C Own Address 1

Read/write

Word

0000h

Section 19.4.9

18h

UCBxI2COA2

eUSCI_Bx I2C Own Address 2

Read/write

Word

0000h

Section 19.4.10

1Ah

UCBxI2COA3

eUSCI_Bx I2C Own Address 3

Read/write

Word

0000h

Section 19.4.11

1Ch

UCBxADDRX

eUSCI_Bx Received Address Register

Read

Word

1Eh

UCBxADDMASK

eUSCI_Bx Address Mask Register

Read/write

Word

03FFh

Section 19.4.13

20h

UCBxI2CSA

eUSCI_Bx I2C Slave Address

Read/write

Word

0000h

Section 19.4.14

2Ah

UCBxIE

eUSCI_Bx Interrupt Enable

Read/write

Word

0000h

Section 19.4.15

2Ch

UCBxIFG

eUSCI_Bx Interrupt Flag

Read/write

Word

2A02h

Section 19.4.16

2Eh

UCBxIV

eUSCI_Bx Interrupt Vector

Read

Word

0000h

Section 19.4.17

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Section 19.4.12

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

555

eUSCI_B I2C Registers

www.ti.com

19.4.1 UCBxCTLW0 Register
eUSCI_Bx Control Word Register 0
Figure 19-17. UCBxCTLW0 Register
15
UCA10
rw-0

14
UCSLA10
rw-0

13
UCMM
rw-0

12
Reserved
r0

11
UCMST
rw-0

rw-0

rw-0

8
UCSYNC
r1

6

5
UCTXACK
rw-0

4
UCTR
rw-0

3
UCTXNACK
rw-0

2
UCTXSTP
rw-0

1
UCTXSTT
rw-0

0
UCSWRST
rw-1

7
UCSSELx
rw-1

rw-1

10

9
UCMODEx

Modify only when UCSWRST = 1.

Table 19-4. UCBxCTLW0 Register Description
Bit

Field

Type

Reset

Description

15

UCA10

RW

0h

Own addressing mode select.
Modify only when UCSWRST = 1.
0b = Own address is a 7-bit address.
1b = Own address is a 10-bit address.

14

UCSLA10

RW

0h

Slave addressing mode select
0b = Address slave with 7-bit address
1b = Address slave with 10-bit address

13

UCMM

RW

0h

Multi-master environment select.
Modify only when UCSWRST = 1.
0b = Single master environment. There is no other master in the system. The
address compare unit is disabled.
1b = Multiple-master environment

12

Reserved

R

0h

Reserved

11

UCMST

RW

0h

Master mode select. When a master loses arbitration in a multiple-master
environment (UCMM = 1), the UCMST bit is automatically cleared and the
module acts as slave.
0b = Slave mode
1b = Master mode

10-9

UCMODEx

RW

0h

eUSCI_B mode. The UCMODEx bits select the synchronous mode when
UCSYNC = 1.
Modify only when UCSWRST = 1.
00b = 3-pin SPI
01b = 4-pin SPI (master or slave enabled if STE = 1)
10b = 4-pin SPI (master or slave enabled if STE = 0)
11b = I2C mode

8

UCSYNC

RW

1h

Synchronous mode enable. For eUSCI_B always read and write as 1.

7-6

UCSSELx

RW

3h

eUSCI_B clock source select. These bits select the BRCLK source clock. These
bits are ignored in slave mode.
Modify only when UCSWRST = 1.
00b = UCLKI
01b = Device specific
10b = SMCLK
11b = SMCLK

5

UCTXACK

RW

0h

Transmit ACK condition in slave mode with enabled address mask register. After
the UCSTTIFG has been set, the user needs to set or reset the UCTXACK flag
to continue with the I2C protocol. The clock is stretched until the UCBxCTL1
register has been written. This bit is cleared automatically after the ACK has
been send.
0b = Do not acknowledge the slave address
1b = Acknowledge the slave address

556

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

Table 19-4. UCBxCTLW0 Register Description (continued)
Bit

Field

Type

Reset

Description

4

UCTR

RW

0h

Transmitter/receiver
0b = Receiver
1b = Transmitter

3

UCTXNACK

RW

0h

Transmit a NACK. UCTXNACK is automatically cleared after a NACK is
transmitted. Only for slave receiver mode.
0b = Acknowledge normally
1b = Generate NACK

2

UCTXSTP

RW

0h

Transmit STOP condition in master mode. Ignored in slave mode. In master
receiver mode, the STOP condition is preceded by a NACK. UCTXSTP is
automatically cleared after STOP is generated. This bit is a don't care, if
automatic UCASTPx is different from 01 or 10.
0b = No STOP generated
1b = Generate STOP

1

UCTXSTT

RW

0h

Transmit START condition in master mode. Ignored in slave mode. In master
receiver mode, a repeated START condition is preceded by a NACK. UCTXSTT
is automatically cleared after START condition and address information is
transmitted. Ignored in slave mode.
0b = Do not generate START condition
1b = Generate START condition

0

UCSWRST

RW

1h

Software reset enable.
Modify only when UCSWRST = 1.
0b = Disabled. eUSCI_B released for operation.
1b = Enabled. eUSCI_B logic held in reset state.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

557

eUSCI_B I2C Registers

www.ti.com

19.4.2 UCBxCTLW1 Register
eUSCI_Bx Control Word Register 1
Figure 19-18. UCBxCTLW1 Register
15

14

13

r0

r0
6

7
UCCLTO
rw-0

rw-0

11

10

9

r0

12
Reserved
r0

r0

r0

r0

5
UCSTPNACK
rw-0

4
UCSWACK
rw-0

3

2

1

UCASTPx
rw-0

8
UCETXINT
rw-0
0
UCGLITx

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-5. UCBxCTLW1 Register Description
Bit

Field

Type

Reset

Description

15-9

Reserved

R

0h

Reserved

8

UCETXINT

RW

0h

Early UCTXIFG0. Only in slave mode. When this bit is set, the slave addresses
defined in UCxI2COA1 to UCxI2COA3 must be disabled.
Modify only when UCSWRST = 1.
0b = UCTXIFGx is set after an address match with UCxI2COAx and the direction
bit indicating slave transmit
1b = UCTXIFG0 is set for each START condition

7-6

UCCLTO

RW

0h

Clock low time-out select.
Modify only when UCSWRST = 1.
00b = Disable clock low time-out counter
01b = 135 000 MODCLK cycles (approximately 28 ms)
10b = 150 000 MODCLK cycles (approximately 31 ms)
11b = 165 000 MODCLK cycles (approximately 34 ms)

5

UCSTPNACK

RW

0h

The UCSTPNACK bit allows to make the eUSCI_B master acknowledge the last
byte in master receiver mode as well. This is not conform to the I2C specification
and should only be used for slaves, which automatically release the SDA after a
fixed packet length.
Modify only when UCSWRST = 1.
0b = Send a non-acknowledge before the STOP condition as a master receiver
(conform to I2C standard)
1b = All bytes are acknowledged by the eUSCI_B when configured as master
receiver

4

UCSWACK

RW

0h

Using this bit it is possible to select, whether the eUSCI_B module triggers the
sending of the ACK of the address or if it is controlled by software.
0b = The address acknowledge of the slave is controlled by the eUSCI_B
module
1b = The user needs to trigger the sending of the address ACK by issuing
UCTXACK

3-2

UCASTPx

RW

0h

Automatic STOP condition generation. In slave mode only UCBCNTIFG is
available.
Modify only when UCSWRST = 1.
00b = No automatic STOP generation. The STOP condition is generated after
the user sets the UCTXSTP bit. The value in UCBxTBCNT is a don't care.
01b = UCBCNTIFG is set with the byte counter reaches the threshold defined in
UCBxTBCNT
10b = A STOP condition is generated automatically after the byte counter value
reached UCBxTBCNT. UCBCNTIFG is set with the byte counter reaching the
threshold.
11b = Reserved

558

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

Table 19-5. UCBxCTLW1 Register Description (continued)
Bit

Field

Type

Reset

Description

1-0

UCGLITx

RW

0h

Deglitch time
00b = 50 ns
01b = 25 ns
10b = 12.5 ns
11b = 6.25 ns

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

559

eUSCI_B I2C Registers

www.ti.com

19.4.3 UCBxBRW Register
eUSCI_Bx Bit Rate Control Word Register
Figure 19-19. UCBxBRW Register
15

14

13

12

11

10

9

8

rw

rw

rw

rw

3

2

1

0

rw

rw

rw

rw

UCBRx
rw

rw

rw

rw

7

6

5

4
UCBRx

rw

rw

rw

rw

Modify only when UCSWRST = 1.

Table 19-6. UCBxBRW Register Description
Bit

Field

Type

Reset

Description

15-0

UCBRx

RW

0h

Bit clock prescaler.
Modify only when UCSWRST = 1.

19.4.4 UCBxSTATW
eUSCI_Bx Status Word Register
Figure 19-20. UCBxSTATW Register
15

14

13

12

11

10

9

8

r-0

r-0

1

0

r0

r0

UCBCNTx
r-0

r-0

r-0

r-0

r-0

r-0

7
Reserved
r0

6
UCSCLLOW
r-0

5
UCGC
r-0

4
UCBBUSY
r-0

3

2
Reserved

r-0

r0

Table 19-7. UCBxSTATW Register Description
Bit

Field

Type

Reset

Description

15-8

UCBCNTx

R

0h

Hardware byte counter value. Reading this register returns the number of bytes
received or transmitted on the I2C-Bus since the last START or RESTART.
There is no synchronization of this register done. When reading UCBxBCNT
during the first bit position, a faulty readback can occur.

7

Reserved

R

0h

Reserved

6

UCSCLLOW

R

0h

SCL low
0b = SCL is not held low
1b = SCL is held low

5

UCGC

R

0h

General call address received. UCGC is automatically cleared when a START
condition is received.
0b = No general call address received
1b = General call address received

4

UCBBUSY

R

0h

Bus busy
0b = Bus inactive
1b = Bus busy

3-0

Reserved

R

0h

Reserved

560

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.5 UCBxTBCNT Register
eUSCI_Bx Byte Counter Threshold Register
Figure 19-21. UCBxTBCNT Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

Reserved
r0

r0

r0

r0

7

6

5

4
UCTBCNTx

rw-0

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-8. UCBxTBCNT Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCTBCNTx

RW

0h

The byte counter threshold value is used to set the number of I2C data bytes
after which the automatic STOP or the UCSTPIFG should occur. This value is
evaluated only if UCASTPx is different from 00.
Modify only when UCSWRST = 1.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

561

eUSCI_B I2C Registers

www.ti.com

19.4.6 UCBxRXBUF Register
eUSCI_Bx Receive Buffer Register
Figure 19-22. UCBxRXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r

r

r

r

Reserved
r0

r0

r0

r0

7

6

5

4
UCRXBUFx

r

r

r

r

Table 19-9. UCBxRXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCRXBUFx

R

0h

The receive-data buffer is user accessible and contains the last received
character from the receive shift register. Reading UCBxRXBUF resets the
UCRXIFGx flags.

19.4.7 UCBxTXBUF
eUSCI_Bx Transmit Buffer Register
Figure 19-23. UCBxTXBUF Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

rw

rw

rw

rw

Reserved
r0

r0

r0

r0

7

6

5

4
UCTXBUFx

rw

rw

rw

rw

Table 19-10. UCBxTXBUF Register Description
Bit

Field

Type

Reset

Description

15-8

Reserved

R

0h

Reserved

7-0

UCTXBUFx

RW

0h

The transmit data buffer is user accessible and holds the data waiting to be
moved into the transmit shift register and transmitted. Writing to the transmit data
buffer clears the UCTXIFGx flags.

562

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.8 UCBxI2COA0 Register
eUSCI_Bx I2C Own Address 0 Register
Figure 19-24. UCBxI2COA0 Register
15
UCGCEN
rw-0

14

13

12

r0

r0

r0

7

6

5

4

11
r0

10
UCOAEN
rw-0

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

Reserved

9

8
I2COA0

I2COA0
rw-0

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-11. UCBxI2COA0 Register Description
Bit

Field

Type

Reset

Description

15

UCGCEN

RW

0h

General call response enable. This bit is only available in UCBxI2COA0.
Modify only when UCSWRST = 1.
0b = Do not respond to a general call
1b = Respond to a general call

14-11

Reserved

R

0h

Reserved

10

UCOAEN

RW

0h

Own Address enable register. With this register it can be selected if the I2C
slave-address related to this register UCBxI2COA0 is evaluated or not.
Modify only when UCSWRST = 1.
0b = The slave address defined in I2COA0 is disabled
1b = The slave address defined in I2COA0 is enabled

9-0

I2COAx

RW

0h

I2C own address. The I2COA0 bits contain the local address of the eUSCIx_B
I2C controller. The address is right justified. In 7-bit addressing mode, bit 6 is the
MSB and bits 9-7 are ignored. In 10-bit addressing mode, bit 9 is the MSB.
Modify only when UCSWRST = 1.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

563

eUSCI_B I2C Registers

www.ti.com

19.4.9 UCBxI2COA1 Register
eUSCI_Bx I2C Own Address 1 Register
Figure 19-25. UCBxI2COA1 Register
15

14

rw-0

r0

13
Reserved
r0

7

6

5

12

4

11

r0

r0

10
UCOAEN
rw-0

9

8

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

I2COA1

I2COA1
rw-0

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-12. UCBxI2COA1 Register Description
Bit

Field

Type

Reset

Description

15-11

Reserved

R

0h

Reserved

10

UCOAEN

RW

0h

Own Address enable register. With this register it can be selected if the I2C
slave-address related to this register UCBxI2COA1 is evaluated or not.
Modify only when UCSWRST = 1.
0b = The slave address defined in I2COA1 is disabled
1b = The slave address defined in I2COA1 is enabled

9-0

I2COA1

RW

0h

I2C own address. The I2COAx bits contain the local address of the eUSCIx_B
I2C controller. The address is right justified. In 7-bit addressing mode, bit 6 is the
MSB and bits 9-7 are ignored. In 10-bit addressing mode, bit 9 is the MSB.
Modify only when UCSWRST = 1.

19.4.10 UCBxI2COA2 Register
eUSCI_Bx I2C Own Address 2 Register
Figure 19-26. UCBxI2COA2 Register
15

14

rw-0

r0

13
Reserved
r0

7

6

5

12
r0
4

11
r0

10
UCOAEN
rw-0

9

8

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

I2COA2

I2COA2
rw-0

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-13. UCBxI2COA2 Register Description
Bit

Field

Type

Reset

Description

15-11

Reserved

R

0h

Reserved

10

UCOAEN

RW

0h

Own Address enable register. With this register it can be selected if the I2C
slave-address related to this register UCBxI2COA2 is evaluated or not.
Modify only when UCSWRST = 1.
0b = The slave address defined in I2COA2 is disabled
1b = The slave address defined in I2COA2 is enabled

9-0

I2COA2

RW

0h

I2C own address. The I2COAx bits contain the local address of the eUSCIx_B
I2C controller. The address is right justified. In 7-bit addressing mode, bit 6 is the
MSB and bits 9-7 are ignored. In 10-bit addressing mode, bit 9 is the MSB.
Modify only when UCSWRST = 1.

564

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.11 UCBxI2COA3 Register
eUSCI_Bx I2C Own Address 3 Register
Figure 19-27. UCBxI2COA3 Register
15

14

rw-0

r0

13
Reserved
r0

7

6

5

12

4

11

r0

r0

10
UCOAEN
rw-0

9

8

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

I2COA3

I2COA3
rw-0

rw-0

rw-0

rw-0

Modify only when UCSWRST = 1.

Table 19-14. UCBxI2COA3 Register Description
Bit

Field

Type

Reset

Description

15-11

Reserved

R

0h

Reserved

10

UCOAEN

RW

0h

Own Address enable register. With this register it can be selected if the I2C
slave-address related to this register UCBxI2COA3 is evaluated or not.
Modify only when UCSWRST = 1.
0b = The slave address defined in I2COA3 is disabled
1b = The slave address defined in I2COA3 is enabled

9-0

I2COA3

RW

0h

I2C own address. The I2COA3 bits contain the local address of the eUSCIx_B
I2C controller. The address is right justified. In 7-bit addressing mode, bit 6 is the
MSB and bits 9-7 are ignored. In 10-bit addressing mode, bit 9 is the MSB.
Modify only when UCSWRST = 1.

19.4.12 UCBxADDRX Register
eUSCI_Bx I2C Received Address Register
Figure 19-28. UCBxADDRX Register
15

14

13

12

11

10

9

Reserved

8
ADDRXx

r-0

r0

r0

r0

r0

r0

r-0

r-0

7

6

5

4

3

2

1

0

r-0

r-0

r-0

r-0

ADDRXx
r-0

r-0

r-0

r-0

Table 19-15. UCBxADDRX Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved

9-0

ADDRXx

R

0h

Received Address Register. This register contains the last received slave
address on the bus. Using this register and the address mask register it is
possible to react on more than one slave address using one eUSCI_B module.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

565

eUSCI_B I2C Registers

www.ti.com

19.4.13 UCBxADDMASK Register
eUSCI_Bx I2C Address Mask Register
Figure 19-29. UCBxADDMASK Register
15

14

13

12

11

10

9

Reserved

8
ADDMASKx

r-0

r0

r0

r0

7

6

5

4

r0

r0

rw-1

rw-1

3

2

1

0

rw-1

rw-1

rw-1

rw-1

ADDMASKx
rw-1

rw-1

rw-1

rw-1

Modify only when UCSWRST = 1.

Table 19-16. UCBxADDMASK Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved

9-0

ADDMASKx

RW

3FFh

Address Mask Register. By clearing the corresponding bit of the own address,
this bit is a don't care when comparing the address on the bus to the own
address. Using this method, it is possible to react on more than one slave
address. When all bits of ADDMASKx are set, the address mask feature is
deactivated.
Modify only when UCSWRST = 1.

19.4.14 UCBxI2CSA Register
eUSCI_Bx I2C Slave Address Register
Figure 19-30. UCBxI2CSA Register
15

14

13

12

11

10

9

Reserved

8
I2CSAx

r-0

r0

r0

r0

7

6

5

4

r0

r0

rw-0

rw-0

3

2

1

0

rw-0

rw-0

rw-0

rw-0

I2CSAx
rw-0

rw-0

rw-0

rw-0

Table 19-17. UCBxI2CSA Register Description
Bit

Field

Type

Reset

Description

15-10

Reserved

R

0h

Reserved

9-0

I2CSAx

RW

0h

I2C slave address. The I2CSAx bits contain the slave address of the external
device to be addressed by the eUSCIx_B module. It is only used in master
mode. The address is right justified. In 7-bit slave addressing mode, bit 6 is the
MSB and bits 9-7 are ignored. In 10-bit slave addressing mode, bit 9 is the MSB.

566

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.15 UCBxIE Register
eUSCI_Bx I2C Interrupt Enable Register
Figure 19-31. UCBxIE Register
15
Reserved
r0

14
UCBIT9IE
rw-0

13
UCTXIE3
rw-0

12
UCRXIE3
rw-0

11
UCTXIE2
rw-0

10
UCRXIE2
rw-0

9
UCTXIE1
rw-0

8
UCRXIE1
rw-0

7
UCCLTOIE
rw-0

6
UCBCNTIE
rw-0

5
UCNACKIE
rw-0

4
UCALIE
rw-0

3
UCSTPIE
rw-0

2
UCSTTIE
rw-0

1
UCTXIE0
rw-0

0
UCRXIE0
rw-0

Table 19-18. UCBxIE Register Description
Bit

Field

Type

Reset

Description

15

Reserved

R

0h

Reserved

14

UCBIT9IE

RW

0h

Bit position 9 interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

13

UCTXIE3

RW

0h

Transmit interrupt enable 3
0b = Interrupt disabled
1b = Interrupt enabled

12

UCRXIE3

RW

0h

Receive interrupt enable 3
0b = Interrupt disabled
1b = Interrupt enabled

11

UCTXIE2

RW

0h

Transmit interrupt enable 2
0b = Interrupt disabled
1b = Interrupt enabled

10

UCRXIE2

RW

0h

Receive interrupt enable 2
0b = Interrupt disabled
1b = Interrupt enabled

9

UCTXIE1

RW

0h

Transmit interrupt enable 1
0b = Interrupt disabled
1b = Interrupt enabled

8

UCRXIE1

RW

0h

Receive interrupt enable 1
0b = Interrupt disabled
1b = Interrupt enabled

7

UCCLTOIE

RW

0h

Clock low time-out interrupt enable.
0b = Interrupt disabled
1b = Interrupt enabled

6

UCBCNTIE

RW

0h

Byte counter interrupt enable.
0b = Interrupt disabled
1b = Interrupt enabled

5

UCNACKIE

RW

0h

Not-acknowledge interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

4

UCALIE

RW

0h

Arbitration lost interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

3

UCSTPIE

RW

0h

STOP condition interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

567

eUSCI_B I2C Registers

www.ti.com

Table 19-18. UCBxIE Register Description (continued)
Bit

Field

Type

Reset

Description

2

UCSTTIE

RW

0h

START condition interrupt enable
0b = Interrupt disabled
1b = Interrupt enabled

1

UCTXIE0

RW

0h

Transmit interrupt enable 0
0b = Interrupt disabled
1b = Interrupt enabled

0

UCRXIE0

RW

0h

Receive interrupt enable 0
0b = Interrupt disabled
1b = Interrupt enabled

568

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.16 UCBxIFG Register
eUSCI_Bx I2C Interrupt Flag Register
Figure 19-32. UCBxIFG Register
15
Reserved
r0

14
UCBIT9IFG
rw-0

13
UCTXIFG3
rw-1

12
UCRXIFG3
rw-0

11
UCTXIFG2
rw-1

10
UCRXIFG2
rw-0

9
UCTXIFG1
rw-1

8
UCRXIFG1
rw-0

7
UCCLTOIFG
rw-0

6
UCBCNTIFG
rw-0

5
UCNACKIFG
rw-0

4
UCALIFG
rw-0

3
UCSTPIFG
rw-0

2
UCSTTIFG
rw-0

1
UCTXIFG0
rw-1

0
UCRXIFG0
rw-0

Table 19-19. UCBxIFG Register Description
Bit

Field

Type

Reset

Description

15

Reserved

R

0h

Reserved

14

UCBIT9IFG

RW

0h

Bit position 9 interrupt flag
0b = No interrupt pending
1b = Interrupt pending

13

UCTXIFG3

RW

1h

eUSCI_B transmit interrupt flag 3. UCTXIFG3 is set when UCBxTXBUF is empty
in slave mode, if the slave address defined in UCBxI2COA3 was on the bus in
the same frame.
0b = No interrupt pending
1b = Interrupt pending

12

UCRXIFG3

RW

0h

Receive interrupt flag 2. UCRXIFG2 is set when UCBxRXBUF has received a
complete byte in slave mode and if the slave address defined in UCBxI2COA2
was on the bus in the same frame.
0b = No interrupt pending
1b = Interrupt pending

11

UCTXIFG2

RW

0h

eUSCI_B transmit interrupt flag 2. UCTXIFG2 is set when UCBxTXBUF is empty
in slave mode, if the slave address defined in UCBxI2COA2 was on the bus in
the same frame.
0b = No interrupt pending
1b = Interrupt pending

10

UCRXIFG2

RW

0h

Receive interrupt flag 2. UCRXIFG2 is set when UCBxRXBUF has received a
complete byte in slave mode and if the slave address defined in UCBxI2COA2
was on the bus in the same frame.
0b = No interrupt pending
1b = Interrupt pending

9

UCTXIFG1

RW

1h

eUSCI_B transmit interrupt flag 1. UCTXIFG1 is set when UCBxTXBUF is empty
in slave mode, if the slave address defined in UCBxI2COA1 was on the bus in
the same frame.
0b = No interrupt pending
1b = Interrupt pending

8

UCRXIFG1

RW

0h

Receive interrupt flag 1. UCRXIFG1 is set when UCBxRXBUF has received a
complete byte in slave mode and if the slave address defined in UCBxI2COA1
was on the bus in the same frame.
0b = No interrupt pending
1b = Interrupt pending

7

UCCLTOIFG

RW

0h

Clock low time-out interrupt flag
0b = No interrupt pending
1b = Interrupt pending

6

UCBCNTIFG

RW

0h

Byte counter interrupt flag. When using this interrupt the user needs to ensure
enough processing bandwidth (see the Byte Counter Interrupt section).
0b = No interrupt pending
1b = Interrupt pending

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

569

eUSCI_B I2C Registers

www.ti.com

Table 19-19. UCBxIFG Register Description (continued)
Bit

Field

Type

Reset

Description

5

UCNACKIFG

RW

0h

Not-acknowledge received interrupt flag. This flag only is updated when
operating in master mode.
0b = No interrupt pending
1b = Interrupt pending

4

UCALIFG

RW

0h

Arbitration lost interrupt flag
0b = No interrupt pending
1b = Interrupt pending

3

UCSTPIFG

RW

0h

STOP condition interrupt flag
0b = No interrupt pending
1b = Interrupt pending

2

UCSTTIFG

RW

0h

START condition interrupt flag
0b = No interrupt pending
1b = Interrupt pending

1

UCTXIFG0

RW

0h

eUSCI_B transmit interrupt flag 0. UCTXIFG0 is set when UCBxTXBUF is empty
in master mode or in slave mode, if the slave address defined in UCBxI2COA0
was on the bus in the same frame.
0b = No interrupt pending
1b = Interrupt pending

0

UCRXIFG0

RW

0h

eUSCI_B receive interrupt flag 0. UCRXIFG0 is set when UCBxRXBUF has
received a complete character in master mode or in slave mode, if the slave
address defined in UCBxI2COA0 was on the bus in the same frame.
0b = No interrupt pending
1b = Interrupt pending

570

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Copyright © 2014–2015, Texas Instruments Incorporated

eUSCI_B I2C Registers

www.ti.com

19.4.17 UCBxIV Register
eUSCI_Bx Interrupt Vector Register
Figure 19-33. UCBxIV Register
15

14

13

12

11

10

9

8

r0

r0

r0

r0

3

2

1

0

r-0

r-0

r-0

r0

UCIVx
r0

r0

r0

r0

7

6

5

4
UCIVx

r0

r0

r0

r0

Table 19-20. UCBxIV Register Description
Bit

Field

Type

Reset

Description

15-0

UCIVx

R

0h

eUSCI_B interrupt vector value. It generates an value that can be used as
address offset for fast interrupt service routine handling. Writing to this register
clears all pending interrupt flags.
00h = No interrupt pending
02h = Interrupt Source: Arbitration lost; Interrupt Flag: UCALIFG; Interrupt
Priority: Highest
04h = Interrupt Source: Not acknowledgment; Interrupt Flag: UCNACKIFG
06h = Interrupt Source: Start condition received; Interrupt Flag: UCSTTIFG
08h = Interrupt Source: Stop condition received; Interrupt Flag: UCSTPIFG
0Ah = Interrupt Source: Slave 3 Data received; Interrupt Flag: UCRXIFG3
0Ch = Interrupt Source: Slave 3 Transmit buffer empty; Interrupt Flag:
UCTXIFG3
0Eh = Interrupt Source: Slave 2 Data received; Interrupt Flag: UCRXIFG2
10h = Interrupt Source: Slave 2 Transmit buffer empty; Interrupt Flag: UCTXIFG2
12h = Interrupt Source: Slave 1 Data received; Interrupt Flag: UCRXIFG1
14h = Interrupt Source: Slave 1 Transmit buffer empty; Interrupt Flag: UCTXIFG1
16h = Interrupt Source: Data received; Interrupt Flag: UCRXIFG0
18h = Interrupt Source: Transmit buffer empty; Interrupt Flag: UCTXIFG0
1Ah = Interrupt Source: Byte counter zero; Interrupt Flag: UCBCNTIFG
1Ch = Interrupt Source: Clock low time-out; Interrupt Flag: UCCLTOIFG
1Eh = Interrupt Source: Nineth bit position; Interrupt Flag: UCBIT9IFG; Priority:
Lowest

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback

Enhanced Universal Serial Communication Interface (eUSCI) – I2C Mode

Copyright © 2014–2015, Texas Instruments Incorporated

571

Chapter 20
SLAU445D – October 2014 – Revised December 2015

Embedded Emulation Module (EEM)
This chapter describes the embedded emulation module (EEM) that is implemented in all devices.
Topic

20.1
20.2
20.3

572

...........................................................................................................................

Page

Embedded Emulation Module (EEM) Introduction ................................................. 573
EEM Building Blocks ........................................................................................ 575
EEM Configurations .......................................................................................... 576

Embedded Emulation Module (EEM)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Embedded Emulation Module (EEM) Introduction

www.ti.com

20.1 Embedded Emulation Module (EEM) Introduction
Every device in this family implements an EEM. It is accessed and controlled through either 4-wire JTAG
mode or Spy-Bi-Wire mode. Each implementation is device dependent and is described in Section 20.3
and the device-specific data sheet.
In
•
•
•
•
•
•
•
•
•
•
•

general, the following features are available:
Nonintrusive code execution with real-time breakpoint control
Single-step, step-into, and step-over functionality
Full support of all low-power modes
Support for all system frequencies and for all clock sources
Up to eight (device dependent) hardware triggers or breakpoints on memory address bus (MAB) or
memory data bus (MDB)
Up to two (device dependent) hardware triggers or breakpoints on CPU register write accesses
MAB, MDB, and CPU register access triggers can be combined to form up to ten (device dependent)
complex triggers or breakpoints
Up to two (device dependent) cycle counters
Trigger sequencing (device dependent)
Storage of internal bus and control signals using an integrated trace buffer (device dependent)
Clock control for timers, communication peripherals, and other modules on a global device level or on
a per module basis during an emulation stop

Figure 20-1 shows a simplified block diagram of the largest currently available EEM implementation.
For more details on how the features of the EEM can be used together with the IAR Embedded
Workbench™ debugger or with Code Composer Studio™ IDE (CCS), see the application report Advanced
Debugging Using the Enhanced Emulation Module (SLAA393) at www.msp430.com. Most other
debuggers that support the MSP430 devices have the same or a similar feature set. For details, see the
user's guide of the applicable debugger.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Embedded Emulation Module (EEM)

573

Embedded Emulation Module (EEM) Introduction

Trigger
Blocks

www.ti.com

"AND" Matrix- Combination Triggers
0

1

2

3

4

5

6

7

8

9

&

&

&

&

&

&

&

&

&

&

MB0
MB1
MB2
MB3
MB4
MB5
MB6
MB7
CPU0
CPU1

Trigger Sequencer

OR

CPU Stop

OR

Start/Stop State Storage

OR

Start/Stop Cycle Counter

Figure 20-1. Large Implementation of EEM

574

Embedded Emulation Module (EEM)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

EEM Building Blocks

www.ti.com

20.2 EEM Building Blocks
20.2.1 Triggers
The event control in the EEM of the MSP430 system consists of triggers, which are internal signals
indicating that a certain event has happened. These triggers may be used as simple breakpoints, but it is
also possible to combine two or more triggers to allow detection of complex events and cause various
reactions other than stopping the CPU.
In
•
•
•
•

general, the triggers can be used to control the following functional blocks of the EEM:
Breakpoints (CPU stop)
State storage
Sequencer
Cycle counter

There are two different types of triggers – the memory trigger and the CPU register write trigger.
Each memory trigger block can be independently selected to compare either the MAB or the MDB with a
given value. Depending on the implemented EEM, the comparison can be =, ≠, ≥, or ≤. The comparison
can also be limited to certain bits with the use of a mask. The mask is either bit-wise or byte-wise,
depending upon the device. In addition to selecting the bus and the comparison, the condition under which
the trigger is active can be selected. The conditions include read access, write access, DMA access, and
instruction fetch.
Each CPU register write trigger block can be independently selected to compare what is written into a
selected register with a given value. The observed register can be selected for each trigger independently.
The comparison can be =, ≠, ≥, or ≤. The comparison can also be limited to certain bits with the use of a
bit mask.
Both types of triggers can be combined to form more complex triggers. For example, a complex trigger
can signal when a particular value is written into a user-specified address.

20.2.2 Trigger Sequencer
The trigger sequencer allows the definition of a certain sequence of trigger signals before an event is
accepted for a break or state storage event. Within the trigger sequencer, it is possible to use the following
features:
• Four states (State 0 to State 3)
• Two transitions per state to any other state
• Reset trigger that resets the sequencer to State 0.
The trigger sequencer always starts at State 0 and must execute to State 3 to generate an action. If
State 1 or State 2 are not required, they can be bypassed.

20.2.3 State Storage (Internal Trace Buffer)
The state storage function uses a built-in buffer to store MAB, MDB, and CPU control signal information
(that is, read, write, or instruction fetch) in a nonintrusive manner. The built-in buffer can hold up to eight
entries. The flexible configuration allows the user to record the information of interest very efficiently.

20.2.4 Cycle Counter
The cycle counter provides one or two 40-bit counters to measure the cycles used by the CPU to execute
certain tasks. On some devices, the cycle counter operation can be controlled using triggers. This allows,
for example, conditional profiling, such as profiling a specific section of code.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Embedded Emulation Module (EEM)

575

EEM Building Blocks

www.ti.com

20.2.5 Clock Control
The EEM provides device-dependent flexible clock control. This is useful in applications where a running
clock is needed for peripherals after the CPU is stopped (for example, to allow a UART module to
complete its transfer of a character or to allow a timer to continue generating a PWM signal).
The clock control is flexible and supports both modules that need a running clock and modules that must
be stopped when the CPU is stopped due to a breakpoint.

20.3 EEM Configurations
Table 20-1 gives an overview of the EEM configurations. The implemented configuration is device
dependent, and details can be found in the device-specific data sheet and the following documents:
Advanced Debugging Using the Enhanced Emulation Module (EEM) With CCS Version 4 (SLAA393)
IAR Embedded Workbench for MSP430 User's Guide (SLAU138)
Code Composer Studio for MSP430 User’s Guide (SLAU157)
Table 20-1. EEM Configurations
Feature
Memory bus triggers
Memory bus trigger mask for

XS

S

M

L

2
(=, ≠ only)

3

5

8

1) Low byte
1) Low byte
1) Low byte
2) High byte
2) High byte
2) High byte
3) Four upper addr bits 3) Four upper addr bits 3) Four upper addr bits

All 16 or 20 bits

CPU register write triggers

0

1

1

2

Combination triggers

2

4

6

10

Sequencer

No

No

Yes

Yes

State storage

No

No

No

Yes

Cycle counter

1

1

1

2
(including
triggered start or stop)

In general, the following features can be found on any device:
• At least two MAB or MDB triggers supporting:
– Distinction between CPU, DMA, read, and write accesses
– =, ≠, ≥, or ≤ comparison (in XS, only =, ≠)
• At least two trigger combination registers
• Hardware breakpoints using the CPU stop reaction
• At least one 40-bit cycle counter
• Enhanced clock control with individual control of module clocks

576

Embedded Emulation Module (EEM)

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Revision History

www.ti.com

Revision History
Changes from November 6, 2015 to December 9, 2015 ................................................................................................. Page
•
•

Added row for LPM4 to Table 3-1, Clock Request System and Power Modes.................................................. 97
Added Section 9.3, CapTIvate Registers ........................................................................................... 318

NOTE: Page numbers for previous revisions may differ from page numbers in the current version.

SLAU445D – October 2014 – Revised December 2015
Submit Documentation Feedback
Copyright © 2014–2015, Texas Instruments Incorporated

Revision History

577

IMPORTANT NOTICE
Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, enhancements, improvements and other
changes to its semiconductor products and services per JESD46, latest issue, and to discontinue any product or service per JESD48, latest
issue. Buyers should obtain the latest relevant information before placing orders and should verify that such information is current and
complete. All semiconductor products (also referred to herein as “components”) are sold subject to TI’s terms and conditions of sale
supplied at the time of order acknowledgment.
TI warrants performance of its components to the specifications applicable at the time of sale, in accordance with the warranty in TI’s terms
and conditions of sale of semiconductor products. Testing and other quality control techniques are used to the extent TI deems necessary
to support this warranty. Except where mandated by applicable law, testing of all parameters of each component is not necessarily
performed.
TI assumes no liability for applications assistance or the design of Buyers’ products. Buyers are responsible for their products and
applications using TI components. To minimize the risks associated with Buyers’ products and applications, Buyers should provide
adequate design and operating safeguards.
TI does not warrant or represent that any license, either express or implied, is granted under any patent right, copyright, mask work right, or
other intellectual property right relating to any combination, machine, or process in which TI components or services are used. Information
published by TI regarding third-party products or services does not constitute a license to use such products or services or a warranty or
endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the
third party, or a license from TI under the patents or other intellectual property of TI.
Reproduction of significant portions of TI information in TI data books or data sheets is permissible only if reproduction is without alteration
and is accompanied by all associated warranties, conditions, limitations, and notices. TI is not responsible or liable for such altered
documentation. Information of third parties may be subject to additional restrictions.
Resale of TI components or services with statements different from or beyond the parameters stated by TI for that component or service
voids all express and any implied warranties for the associated TI component or service and is an unfair and deceptive business practice.
TI is not responsible or liable for any such statements.
Buyer acknowledges and agrees that it is solely responsible for compliance with all legal, regulatory and safety-related requirements
concerning its products, and any use of TI components in its applications, notwithstanding any applications-related information or support
that may be provided by TI. Buyer represents and agrees that it has all the necessary expertise to create and implement safeguards which
anticipate dangerous consequences of failures, monitor failures and their consequences, lessen the likelihood of failures that might cause
harm and take appropriate remedial actions. Buyer will fully indemnify TI and its representatives against any damages arising out of the use
of any TI components in safety-critical applications.
In some cases, TI components may be promoted specifically to facilitate safety-related applications. With such components, TI’s goal is to
help enable customers to design and create their own end-product solutions that meet applicable functional safety standards and
requirements. Nonetheless, such components are subject to these terms.
No TI components are authorized for use in FDA Class III (or similar life-critical medical equipment) unless authorized officers of the parties
have executed a special agreement specifically governing such use.
Only those TI components which TI has specifically designated as military grade or “enhanced plastic” are designed and intended for use in
military/aerospace applications or environments. Buyer acknowledges and agrees that any military or aerospace use of TI components
which have not been so designated is solely at the Buyer's risk, and that Buyer is solely responsible for compliance with all legal and
regulatory requirements in connection with such use.
TI has specifically designated certain components as meeting ISO/TS16949 requirements, mainly for automotive use. In any case of use of
non-designated products, TI will not be responsible for any failure to meet ISO/TS16949.
Products

Applications

Audio

www.ti.com/audio

Automotive and Transportation

www.ti.com/automotive

Amplifiers

amplifier.ti.com

Communications and Telecom

www.ti.com/communications

Data Converters

dataconverter.ti.com

Computers and Peripherals

www.ti.com/computers

DLP® Products

www.dlp.com

Consumer Electronics

www.ti.com/consumer-apps

DSP

dsp.ti.com

Energy and Lighting

www.ti.com/energy

Clocks and Timers

www.ti.com/clocks

Industrial

www.ti.com/industrial

Interface

interface.ti.com

Medical

www.ti.com/medical

Logic

logic.ti.com

Security

www.ti.com/security

Power Mgmt

power.ti.com

Space, Avionics and Defense

www.ti.com/space-avionics-defense

Microcontrollers

microcontroller.ti.com

Video and Imaging

www.ti.com/video

RFID

www.ti-rfid.com

OMAP Applications Processors

www.ti.com/omap

TI E2E Community

e2e.ti.com

Wireless Connectivity

www.ti.com/wirelessconnectivity
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2015, Texas Instruments Incorporated



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
Linearized                      : No
PDF Version                     : 1.4
Page Mode                       : UseOutlines
Page Count                      : 578
Creator                         : TopLeaf 8.0.009
Producer                        : iText 2.1.7 by 1T3XT
Title                           : MSP430FR4xx and MSP430FR2xx Family (Rev. D)
Keywords                        : SLAU445, SLAU445D
Subject                         : User's Guide
Modify Date                     : 2015:12:09 08:08:44-06:00
Top Leaf-Profile                : final
Top Leaf-Version                : Version=tlapi 8.0 9 2015/10/02 support@turnkey.com.au Licence=X0514600
Author                          : Texas Instruments, Incorporated
Create Date                     : 2015:12:09 08:08:44-06:00
EXIF Metadata provided by EXIF.tools

Navigation menu