TMS320x2806x Piccolo Technical Reference Guide (Rev. G) F28069 Manual Uj
f28069_manual_uj
User Manual:
Open the PDF directly: View PDF
.
Page Count: 1196
| Download | |
| Open PDF In Browser | View PDF |
TMS320x2806x Piccolo
Technical Reference Manual
Literature Number: SPRUH18G
January 2011 – Revised April 2017
Contents
Preface....................................................................................................................................... 44
1
System Control and Interrupts ............................................................................................. 46
1.2
1.3
1.4
1.5
1.6
1.7
1.8
2
Boot ROM ........................................................................................................................ 194
2.1
2
Flash and OTP Memory Blocks .......................................................................................... 47
1.2.1 Flash Memory ...................................................................................................... 47
1.2.2 OTP Memory ....................................................................................................... 47
1.2.3 Flash and OTP Power Modes ................................................................................... 48
1.2.4 Flash and OTP Registers ........................................................................................ 53
Code Security Module (CSM)............................................................................................. 59
1.3.1 Functional Description ............................................................................................ 59
1.3.2 CSM Impact on Other On-Chip Resources .................................................................... 61
1.3.3 Incorporating Code Security in User Applications ............................................................ 61
1.3.4 Do's and Don'ts to Protect Security Logic...................................................................... 67
1.3.5 CSM Features - Summary ....................................................................................... 67
Clocking ..................................................................................................................... 68
1.4.1 Clocking and System Control .................................................................................... 68
1.4.2 OSC and PLL Block ............................................................................................... 75
1.4.3 Low-Power Modes Block ....................................................................................... 100
1.4.4 CPU Watchdog Block ........................................................................................... 102
1.4.5 32-Bit CPU Timers 0/1/2 ........................................................................................ 108
General-Purpose Input/Output (GPIO) ................................................................................. 113
1.5.1 GPIO Module Overview ......................................................................................... 113
1.5.2 Configuration Overview ......................................................................................... 119
1.5.3 Digital General Purpose I/O Control ........................................................................... 121
1.5.4 Input Qualification ................................................................................................ 122
1.5.5 GPIO and Peripheral Multiplexing (MUX) .................................................................... 127
1.5.6 Register Bit Definitions .......................................................................................... 131
Peripheral Frames ........................................................................................................ 157
1.6.1 Peripheral Frame Registers .................................................................................... 157
1.6.2 EALLOW-Protected Registers ................................................................................. 159
1.6.3 Device Emulation Registers .................................................................................... 163
1.6.4 Write-Followed-by-Read Protection ........................................................................... 166
Peripheral Interrupt Expansion (PIE) ................................................................................... 167
1.7.1 Overview of the PIE Controller ................................................................................. 167
1.7.2 Vector Table Mapping ........................................................................................... 170
1.7.3 Interrupt Sources................................................................................................. 172
1.7.4 PIE Configuration Registers .................................................................................... 181
1.7.5 PIE Interrupt Registers .......................................................................................... 182
1.7.6 External Interrupt Control Registers .......................................................................... 190
VREG/BOR/POR ......................................................................................................... 192
1.8.1 On-chip Voltage Regulator (VREG) ........................................................................... 192
1.8.2 On-chip Power-On Reset (POR) and Brown-Out Reset (BOR) Circuit ................................... 193
Boot ROM Memory Map ................................................................................................. 195
2.1.1 On-Chip Boot ROM Math Tables .............................................................................. 197
2.1.2 On-Chip Boot ROM IQmath Functions ........................................................................ 199
Contents
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
2.2
2.3
2.4
3
2.1.3 On-Chip Flash API ...............................................................................................
2.1.4 CPU Vector Table ...............................................................................................
Bootloader Features ......................................................................................................
2.2.1 Bootloader Functional Operation ..............................................................................
2.2.2 Bootloader Device Configuration ..............................................................................
2.2.3 PLL Multiplier and DIVSEL Selection .........................................................................
2.2.4 Watchdog Module ...............................................................................................
2.2.5 Taking an ITRAP Interrupt ......................................................................................
2.2.6 Internal Pullup Resisters ........................................................................................
2.2.7 PIE Configuration ................................................................................................
2.2.8 Reserved Memory ...............................................................................................
2.2.9 Bootloader Modes ...............................................................................................
2.2.10 Device_Cal ......................................................................................................
2.2.11 Bootloader Data Stream Structure...........................................................................
2.2.12 Basic Transfer Procedure .....................................................................................
2.2.13 InitBoot Assembly Routine ....................................................................................
2.2.14 SelectBootMode Function ....................................................................................
2.2.15 CopyData Function .............................................................................................
2.2.16 SCI_Boot Function .............................................................................................
2.2.17 Parallel_Boot Function (GPIO) ................................................................................
2.2.18 SPI_Boot Function ..............................................................................................
2.2.19 I2C Boot Function ..............................................................................................
2.2.20 eCAN Boot Function ...........................................................................................
2.2.21 ExitBoot Assembly Routine ...................................................................................
Building the Boot Table ..................................................................................................
2.3.1 The C2000 Hex Utility ...........................................................................................
2.3.2 Example: Preparing a COFF File For eCAN Bootloading ..................................................
Bootloader Code Overview ..............................................................................................
2.4.1 Boot ROM Version and Checksum Information .............................................................
199
199
202
202
203
203
203
204
204
204
204
205
211
211
216
217
218
221
221
223
228
231
234
236
237
237
238
242
242
Enhanced Pulse Width Modulator (ePWM) Module ................................................................ 243
3.1
3.2
3.3
Introduction ................................................................................................................
3.1.1 Submodule Overview............................................................................................
3.1.2 Register Mapping ................................................................................................
ePWM Submodules ......................................................................................................
3.2.1 Overview ..........................................................................................................
3.2.2 Time-Base (TB) Submodule ....................................................................................
3.2.3 Counter-Compare (CC) Submodule ...........................................................................
3.2.4 Action-Qualifier (AQ) Submodule ..............................................................................
3.2.5 Dead-Band Generator (DB) Submodule ......................................................................
3.2.6 PWM-Chopper (PC) Submodule ...............................................................................
3.2.7 Trip-Zone (TZ) Submodule .....................................................................................
3.2.8 Event-Trigger (ET) Submodule ................................................................................
3.2.9 Digital Compare (DC) Submodule .............................................................................
Applications to Power Topologies ......................................................................................
3.3.1 Overview of Multiple Modules .................................................................................
3.3.2 Key Configuration Capabilities .................................................................................
3.3.3 Controlling Multiple Buck Converters With Independent Frequencies ....................................
3.3.4 Controlling Multiple Buck Converters With Same Frequencies ............................................
3.3.5 Controlling Multiple Half H-Bridge (HHB) Converters .......................................................
3.3.6 Controlling Dual 3-Phase Inverters for Motors (ACI and PMSM)..........................................
3.3.7 Practical Applications Using Phase Control Between PWM Modules ....................................
3.3.8 Controlling a 3-Phase Interleaved DC/DC Converter .......................................................
3.3.9 Controlling Zero Voltage Switched Full Bridge (ZVSFB) Converter .......................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
244
244
247
250
250
252
263
269
284
289
293
298
303
309
309
309
310
314
317
319
323
324
329
3
www.ti.com
3.4
4
4.3
4.4
4.5
4.6
4.7
5.4
5.5
374
376
377
379
380
390
390
396
396
397
401
401
402
403
Introduction ................................................................................................................
Description .................................................................................................................
Operational Details .......................................................................................................
5.3.1 HRCAP Clocking .................................................................................................
5.3.2 HRCAP Modes of Operation ...................................................................................
5.3.3 HRCAP Interrupts ................................................................................................
Register Descriptions.....................................................................................................
5.4.1 HRCAP Control Register (HCCTL) – EALLOW protected .................................................
5.4.2 HRCAP Interrupt Flag Register (HCIFR) .....................................................................
5.4.3 HRCAP Interrupt Clear Register (HCICLR) ..................................................................
5.4.4 HRCAP Interrupt Force Register (HCIFRC) ..................................................................
5.4.5 HRCAP Counter Register (HCCOUNTER) ...................................................................
5.4.6 HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0) .............................
5.4.7 HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1) .............................
5.4.8 HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0) ............................
5.4.9 HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1) ............................
HRCAP Calibration Library .............................................................................................
5.5.1 HRCAP Calibration Library Functions ........................................................................
5.5.2 HRCAP Calibration Library Software Usage .................................................................
406
406
407
407
408
411
412
412
413
414
415
415
416
416
416
417
417
418
422
Enhanced Capture (eCAP) Module ...................................................................................... 425
6.1
6.2
6.3
6.4
4
Introduction ................................................................................................................
Operational Description of HRPWM ....................................................................................
4.2.1 Controlling the HRPWM Capabilities ..........................................................................
4.2.2 Configuring the HRPWM ........................................................................................
4.2.3 Principle of Operation ...........................................................................................
4.2.4 Scale Factor Optimizing Software (SFO) .....................................................................
4.2.5 HRPWM Examples Using Optimized Assembly Code. .....................................................
HRPWM Register Descriptions .........................................................................................
4.3.1 Register Summary ...............................................................................................
4.3.2 Registers and Field Descriptions ..............................................................................
Appendix A: SFO Library Software - SFO_TI_Build_V6.lib .........................................................
Scale Factor Optimizer Function - int SFO() ..........................................................................
Software Usage ...........................................................................................................
SFO Library Version Software Differences ............................................................................
High Resolution Capture (HRCAP) ...................................................................................... 405
5.1
5.2
5.3
6
331
333
336
336
343
347
350
353
355
361
366
372
High-Resolution Pulse Width Modulator (HRPWM)................................................................ 373
4.1
4.2
5
3.3.10 Controlling a Peak Current Mode Controlled Buck Module ...............................................
3.3.11 Controlling H-Bridge LLC Resonant Converter .............................................................
Registers ...................................................................................................................
3.4.1 Time-Base Submodule Registers..............................................................................
3.4.2 Counter-Compare Submodule Registers .....................................................................
3.4.3 Action-Qualifier Submodule Registers ........................................................................
3.4.4 Dead-Band Submodule Registers .............................................................................
3.4.5 PWM-Chopper Submodule Control Register .................................................................
3.4.6 Trip-Zone Submodule Control and Status Registers ........................................................
3.4.7 Digital Compare Submodule Registers .......................................................................
3.4.8 Event-Trigger Submodule Registers ..........................................................................
3.4.9 Proper Interrupt Initialization Procedure ......................................................................
Introduction ................................................................................................................
Description .................................................................................................................
Capture and APWM Operating Mode ..................................................................................
Capture Mode Description ...............................................................................................
6.4.1 Event Prescaler ..................................................................................................
Contents
426
426
427
427
428
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
6.5
6.6
6.7
6.8
7
429
429
430
431
431
432
433
434
442
442
443
446
448
450
452
452
Enhanced QEP (eQEP) Module ........................................................................................... 454
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
8
6.4.2 Edge Polarity Select and Qualifier .............................................................................
6.4.3 Continuous/One-Shot Control ..................................................................................
6.4.4 32-Bit Counter and Phase Control.............................................................................
6.4.5 CAP1-CAP4 Registers ..........................................................................................
6.4.6 Interrupt Control ..................................................................................................
6.4.7 Shadow Load and Lockout Control ............................................................................
6.4.8 APWM Mode Operation .........................................................................................
Capture Module - Control and Status Registers ......................................................................
Register Mapping .........................................................................................................
Application of the ECAP Module .......................................................................................
6.7.1 Example 1 - Absolute Time-Stamp Operation Rising Edge Trigger.......................................
6.7.2 Example 2 - Absolute Time-Stamp Operation Rising and Falling Edge Trigger ........................
6.7.3 Example 3 - Time Difference (Delta) Operation Rising Edge Trigger.....................................
6.7.4 Example 4 - Time Difference (Delta) Operation Rising and Falling Edge Trigger ......................
Application of the APWM Mode .........................................................................................
6.8.1 Example 1 - Simple PWM Generation (Independent Channel/s)..........................................
Introduction ................................................................................................................
Description .................................................................................................................
7.2.1 EQEP Inputs ......................................................................................................
7.2.2 Functional Description...........................................................................................
7.2.3 eQEP Memory Map .............................................................................................
Quadrature Decoder Unit (QDU) .......................................................................................
7.3.1 Position Counter Input Modes..................................................................................
7.3.2 eQEP Input Polarity Selection..................................................................................
7.3.3 Position-Compare Sync Output ................................................................................
Position Counter and Control Unit (PCCU) ............................................................................
7.4.1 Position Counter Operating Modes ............................................................................
7.4.2 Position Counter Latch ..........................................................................................
7.4.3 Position Counter Initialization ..................................................................................
7.4.4 eQEP Position-compare Unit ...................................................................................
eQEP Edge Capture Unit ................................................................................................
eQEP Watchdog ..........................................................................................................
Unit Timer Base ...........................................................................................................
eQEP Interrupt Structure ................................................................................................
eQEP Registers ...........................................................................................................
Analog-to-Digital Converter and Comparator
8.1
8.2
455
457
457
458
458
460
460
463
463
463
463
465
467
468
469
473
473
474
474
....................................................................... 488
Analog-to-Digital Converter (ADC) .....................................................................................
8.1.1 Features ...........................................................................................................
8.1.2 Block Diagram ....................................................................................................
8.1.3 SOC Principle of Operation.....................................................................................
8.1.4 ONESHOT Single Conversion Support .......................................................................
8.1.5 ADC Conversion Priority ........................................................................................
8.1.6 Simultaneous Sampling Mode .................................................................................
8.1.7 EOC and Interrupt Operation ...................................................................................
8.1.8 Power-Up Sequence ............................................................................................
8.1.9 ADC Calibration ..................................................................................................
8.1.10 Internal/External Reference Voltage Selection .............................................................
8.1.11 ADC Registers ..................................................................................................
8.1.12 ADC Timings ....................................................................................................
8.1.13 Internal Temperature Sensor..................................................................................
Comparator Block .........................................................................................................
8.2.1 Features ...........................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
489
489
489
490
493
494
497
497
498
498
500
501
518
522
523
523
5
www.ti.com
8.2.2
8.2.3
8.2.4
8.2.5
8.2.6
8.2.7
8.2.8
9
9.3
9.4
9.5
9.6
9.7
Control Law Accelerator (CLA) Overview .............................................................................
CLA Interface ..............................................................................................................
9.2.1 CLA Memory .....................................................................................................
9.2.2 CLA Memory Bus ................................................................................................
9.2.3 Shared Peripherals and EALLOW Protection ................................................................
9.2.4 CLA Tasks and Interrupt Vectors ..............................................................................
CLA Configuration and Debug ..........................................................................................
9.3.1 Building a CLA Application .....................................................................................
9.3.2 Typical CLA Initialization Sequence ...........................................................................
9.3.3 Debugging CLA Code ...........................................................................................
9.3.4 CLA Illegal Opcode Behavior ..................................................................................
9.3.5 Resetting the CLA ...............................................................................................
Register Set ...............................................................................................................
9.4.1 Register Memory Mapping......................................................................................
9.4.2 Task Interrupt Vector Registers ................................................................................
9.4.3 Configuration Registers .........................................................................................
9.4.4 Execution Registers .............................................................................................
Pipeline .....................................................................................................................
9.5.1 Pipeline Overview ................................................................................................
9.5.2 CLA Pipeline Alignment .........................................................................................
9.5.3 Parallel Instructions ..............................................................................................
Instruction Set .............................................................................................................
9.6.1 Instruction Descriptions .........................................................................................
9.6.2 Addressing Modes and Encoding..............................................................................
9.6.3 Instructions .......................................................................................................
Appendix A: CLA and CPU Arbitration .................................................................................
9.7.1 CLA and CPU Arbitration .......................................................................................
Viterbi, Complex Math and CRC Unit (VCU)
10.1
10.2
10.3
10.4
10.5
6
524
524
525
525
526
526
527
Control Law Accelerator (CLA) ........................................................................................... 532
9.1
9.2
10
Block Diagram ....................................................................................................
Comparator Function ............................................................................................
DAC Reference ..................................................................................................
Ramp Generator Input ..........................................................................................
Initialization .......................................................................................................
Digital Domain Manipulation....................................................................................
Comparator Registers ...........................................................................................
......................................................................... 683
Overview ...................................................................................................................
Components of the C28x plus VCU ....................................................................................
Emulation Logic ...........................................................................................................
10.3.1 Memory Map ....................................................................................................
10.3.2 CPU Interrupt Vectors ..........................................................................................
10.3.3 Memory Interface ...............................................................................................
10.3.4 Address and Data Buses ......................................................................................
10.3.5 Alignment of 32-Bit Accesses to Even Addresses .........................................................
Register Set ...............................................................................................................
10.4.1 VCU Register Set ...............................................................................................
10.4.2 VCU Status Register (VSTATUS) ............................................................................
10.4.3 Repeat Block Register (RB) ...................................................................................
Pipeline .....................................................................................................................
10.5.1 Pipeline Overview...............................................................................................
10.5.2 General Guidelines for Floating-Point Pipeline Alignment ................................................
10.5.3 Parallel Instructions .............................................................................................
10.5.4 Invalid Delay Instructions ......................................................................................
Contents
533
535
535
535
536
537
538
538
538
540
541
541
542
542
543
544
558
561
561
561
564
566
566
568
570
679
679
684
685
686
687
687
687
687
687
689
689
691
694
696
696
696
697
697
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
10.6
10.7
11
Direct Memory Access (DMA) Module
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
12
Instruction Set .............................................................................................................
10.6.1 Instruction Descriptions ........................................................................................
10.6.2 General Instructions ...........................................................................................
10.6.3 Complex Math Instructions ...................................................................................
10.6.4 Cyclic Redundancy Check (CRC) Instructions .............................................................
10.6.5 Viterbi Instructions .............................................................................................
Rounding Mode ...........................................................................................................
701
701
703
734
772
784
806
................................................................................ 808
Introduction ...............................................................................................................
DMA Overview ............................................................................................................
Architecture ................................................................................................................
11.3.1 Block Diagram ...................................................................................................
11.3.2 Peripheral Interrupt Event Trigger Sources .................................................................
11.3.3 DMA Bus .........................................................................................................
Pipeline Timing and Throughput ........................................................................................
CPU Arbitration ...........................................................................................................
Channel Priority ...........................................................................................................
11.6.1 Round-Robin Mode .............................................................................................
11.6.2 Channel 1 High Priority Mode .................................................................................
Address Pointer and Transfer Control .................................................................................
Overrun Detection Feature ..............................................................................................
Register Descriptions.....................................................................................................
11.9.1 DMA Control Register (DMACTRL) — EALLOW Protected ..............................................
11.9.2 Debug Control Register (DEBUGCTRL) — EALLOW Protected .........................................
11.9.3 Revision Register (REVISION) ...............................................................................
11.9.4 Priority Control Register 1 (PRIORITYCTRL1) — EALLOW Protected .................................
11.9.5 Priority Status Register (PRIORITYSTAT) ..................................................................
11.9.6 Mode Register (MODE) — EALLOW Protected ............................................................
11.9.7 Control Register (CONTROL) — EALLOW Protected .....................................................
11.9.8 Burst Size Register (BURST_SIZE) — EALLOW Protected ..............................................
11.9.9 BURST_COUNT Register .....................................................................................
11.9.10 Source Burst Step Register Size (SRC_BURST_STEP) — EALLOW Protected ....................
11.9.11 Destination Burst Step Register Size (DST_BURST_STEP) — EALLOW Protected ................
11.9.12 Transfer Size Register (TRANSFER_SIZE) — EALLOW Protected ...................................
11.9.13 Transfer Count Register (TRANSFER_COUNT) .........................................................
11.9.14 Source Transfer Step Size Register (SRC_TRANSFER_STEP) — EALLOW Protected ...........
11.9.15 Destination Transfer Step Size Register (DST_TRANSFER_STEP) — EALLOW Protected.......
11.9.16 Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE) — EALLOW protected) ........
11.9.17 Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT) ..............................
11.9.18 Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP) — EALLOW Protected
11.9.19 Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) — All EALLOW Protected ............
11.9.20 Active Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR/DST_BEG_ADDR) .......................................................................
11.9.21 Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) — All EALLOW Protected ..........................
11.9.22 Active Destination Begin and Current Address Pointer Registers (SRC_ADDR/DST_ADDR) .....
809
809
809
809
810
812
813
814
814
814
815
815
820
822
823
825
825
826
827
828
830
832
832
833
834
834
835
835
836
836
837
837
838
838
839
839
Serial Peripheral Interface (SPI) .......................................................................................... 840
12.1
Enhanced SPI Module Overview .......................................................................................
12.1.1 SPI Block Diagram .............................................................................................
12.1.2 SPI Module Signal Summary..................................................................................
12.1.3 Overview of SPI Module Registers ...........................................................................
12.1.4 SPI Operation ...................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
841
842
844
844
845
7
www.ti.com
12.2
13
13.2
Enhanced SCI Module Overview .......................................................................................
13.1.1 Architecture ......................................................................................................
SCI Registers..............................................................................................................
13.2.1 SCI Module Register Summary ...............................................................................
13.2.2 SCI Communication Control Register (SCICCR) ...........................................................
13.2.3 SCI Control Register 1 (SCICTL1) ...........................................................................
13.2.4 SCI Baud-Select Registers (SCIHBAUD, SCILBAUD) ....................................................
13.2.5 SCI Control Register 2 (SCICTL2) ...........................................................................
13.2.6 SCI Receiver Status Register (SCIRXST) ...................................................................
13.2.7 Receiver Data Buffer Registers (SCIRXEMU, SCIRXBUF) ...............................................
13.2.8 SCI Transmit Data Buffer Register (SCITXBUF) ...........................................................
13.2.9 SCI FIFO Registers (SCIFFTX, SCIFFRX, SCIFFCT) .....................................................
13.2.10 Priority Control Register (SCIPRI) ..........................................................................
Inter-Integrated Circuit Module (I2C)
14.1
14.2
14.3
14.4
14.5
8
847
852
854
856
858
858
863
Serial Communications Interface (SCI) ................................................................................ 873
13.1
14
12.1.5 SPI Interrupts ....................................................................................................
12.1.6 SPI FIFO Description...........................................................................................
12.1.7 SPI 3-Wire Mode Description .................................................................................
12.1.8 SPI STEINV Bit in Digital Audio Transfers ..................................................................
SPI Registers and Waveforms ..........................................................................................
12.2.1 SPI Example Waveforms ......................................................................................
12.2.2 SPI Control Registers ..........................................................................................
................................................................................... 901
Introduction to the I2C Module ..........................................................................................
14.1.1 Features..........................................................................................................
14.1.2 Features Not Supported .......................................................................................
14.1.3 Functional Overview ............................................................................................
14.1.4 Clock Generation ...............................................................................................
I2C Module Operational Details .........................................................................................
14.2.1 Input and Output Voltage Levels .............................................................................
14.2.2 Data Validity .....................................................................................................
14.2.3 Operating Modes ...............................................................................................
14.2.4 I2C Module START and STOP Conditions ..................................................................
14.2.5 Serial Data Formats ............................................................................................
14.2.6 NACK Bit Generation...........................................................................................
14.2.7 Clock Synchronization .........................................................................................
14.2.8 Arbitration ........................................................................................................
Interrupt Requests Generated by the I2C Module....................................................................
14.3.1 Basic I2C Interrupt Requests..................................................................................
14.3.2 I2C FIFO Interrupts .............................................................................................
Resetting/Disabling the I2C Module ....................................................................................
I2C Module Registers ....................................................................................................
14.5.1 I2C Mode Register (I2CMDR) .................................................................................
14.5.2 I2C Extended Mode Register (I2CEMDR) ...................................................................
14.5.3 I2C Interrupt Enable Register (I2CIER) ......................................................................
14.5.4 I2C Status Register (I2CSTR) ................................................................................
14.5.5 I2C Interrupt Source Register (I2CISRC) ....................................................................
14.5.6 I2C Prescaler Register (I2CPSC).............................................................................
14.5.7 I2C Clock Divider Registers (I2CCLKL and I2CCLKH) ....................................................
14.5.8 I2C Slave Address Register (I2CSAR).......................................................................
14.5.9 I2C Own Address Register (I2COAR) .......................................................................
14.5.10 I2C Data Count Register (I2CCNT) .........................................................................
14.5.11 I2C Data Receive Register (I2CDRR) ......................................................................
14.5.12 I2C Data Transmit Register (I2CDXR) .....................................................................
Contents
874
876
888
888
889
890
892
893
893
895
896
896
900
902
903
903
903
904
905
905
905
906
907
907
909
910
910
911
911
912
912
913
914
917
919
919
922
923
923
925
925
926
926
926
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
14.5.13 I2C Transmit FIFO Register (I2CFFTX) .................................................................... 927
14.5.14 I2C Receive FIFO Register (I2CFFRX) .................................................................... 928
15
Multichannel Buffered Serial Port (McBSP) .......................................................................... 930
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
Overview ...................................................................................................................
15.1.1 Features of the McBSP ........................................................................................
15.1.2 McBSP Pins/Signals............................................................................................
15.1.3 McBSP Operation...............................................................................................
15.1.4 Data Transfer Process of McBSP ............................................................................
15.1.5 Companding (Compressing and Expanding) Data .........................................................
Clocking and Framing Data .............................................................................................
15.2.1 Clocking ..........................................................................................................
15.2.2 Serial Words .....................................................................................................
15.2.3 Frames and Frame Synchronization .........................................................................
15.2.4 Generating Transmit and Receive Interrupts ...............................................................
15.2.5 Ignoring Frame-Synchronization Pulses .....................................................................
15.2.6 Frame Frequency ...............................................................................................
15.2.7 Maximum Frame Frequency ..................................................................................
Frame Phases .............................................................................................................
15.3.1 Number of Phases, Words, and Bits Per Frame ...........................................................
15.3.2 Single-Phase Frame Example ................................................................................
15.3.3 Dual-Phase Frame Example ..................................................................................
15.3.4 Implementing the AC97 Standard With a Dual-Phase Frame ............................................
15.3.5 McBSP Reception ..............................................................................................
15.3.6 McBSP Transmission ..........................................................................................
15.3.7 Interrupts and DMA Events Generated by a McBSP ......................................................
McBSP Sample Rate Generator ........................................................................................
15.4.1 Block Diagram ...................................................................................................
15.4.2 Frame Synchronization Generation in the Sample Rate Generator .....................................
15.4.3 Synchronizing Sample Rate Generator Outputs to an External Clock ..................................
15.4.4 Reset and Initialization Procedure for the Sample Rate Generator ......................................
McBSP Exception/Error Conditions ....................................................................................
15.5.1 Types of Errors ..................................................................................................
15.5.2 Overrun in the Receiver........................................................................................
15.5.3 Unexpected Receive Frame-Synchronization Pulse .......................................................
15.5.4 Overwrite in the Transmitter ...................................................................................
15.5.5 Unexpected Transmit Frame-Synchronization Pulse ......................................................
Multichannel Selection Modes ..........................................................................................
15.6.1 Channels, Blocks, and Partitions .............................................................................
15.6.2 Multichannel Selection .........................................................................................
15.6.3 Configuring a Frame for Multichannel Selection ............................................................
15.6.4 Using Two Partitions ...........................................................................................
15.6.5 Using Eight Partitions ..........................................................................................
15.6.6 Receive Multichannel Selection Mode .......................................................................
15.6.7 Transmit Multichannel Selection Modes .....................................................................
SPI Operation Using the Clock Stop Mode............................................................................
15.7.1 SPI Protocol .....................................................................................................
15.7.2 Clock Stop Mode................................................................................................
15.7.3 Bits Used to Enable and Configure the Clock Stop Mode ................................................
15.7.4 Clock Stop Mode Timing Diagrams ..........................................................................
15.7.5 Procedure for Configuring a McBSP for SPI Operation ...................................................
15.7.6 McBSP as the SPI Master .....................................................................................
15.7.7 McBSP as an SPI Slave .......................................................................................
Receiver Configuration ...................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
931
931
932
933
934
934
936
936
936
937
937
937
938
938
938
939
939
939
940
940
942
943
943
944
947
947
949
950
950
950
952
954
956
958
958
959
959
959
961
962
962
965
965
966
966
967
969
969
971
972
9
www.ti.com
15.8.1 Programming the McBSP Registers for the Desired Receiver Operation ............................... 972
15.8.2 Resetting and Enabling the Receiver ........................................................................ 973
15.8.3 Set the Receiver Pins to Operate as McBSP Pins ......................................................... 973
15.8.4 Enable/Disable the Digital Loopback Mode ................................................................. 974
15.8.5 Enable/Disable the Clock Stop Mode ........................................................................ 974
15.8.6 Enable/Disable the Receive Multichannel Selection Mode................................................ 975
15.8.7 Choose One or Two Phases for the Receive Frame ...................................................... 975
15.8.8 Set the Receive Word Length(s).............................................................................. 976
15.8.9 Set the Receive Frame Length ............................................................................... 976
15.8.10 Enable/Disable the Receive Frame-Synchronization Ignore Function ................................. 977
15.8.11 Set the Receive Companding Mode ........................................................................ 978
15.8.12 Set the Receive Data Delay ................................................................................. 979
15.8.13 Set the Receive Sign-Extension and Justification Mode ................................................. 981
15.8.14 Set the Receive Interrupt Mode ............................................................................. 982
15.8.15 Set the Receive Frame-Synchronization Mode ........................................................... 982
15.8.16 Set the Receive Frame-Synchronization Polarity ......................................................... 984
15.8.17 Set the Receive Clock Mode ................................................................................ 986
15.8.18 Set the Receive Clock Polarity .............................................................................. 987
15.8.19 Set the SRG Clock Divide-Down Value .................................................................... 989
15.8.20 Set the SRG Clock Synchronization Mode ................................................................ 989
15.8.21 Set the SRG Clock Mode (Choose an Input Clock) ...................................................... 989
15.8.22 Set the SRG Input Clock Polarity ........................................................................... 991
15.9 Transmitter Configuration ................................................................................................ 991
15.9.1 Programming the McBSP Registers for the Desired Transmitter Operation ............................ 991
15.9.2 Resetting and Enabling the Transmitter ..................................................................... 992
15.9.3 Set the Transmitter Pins to Operate as McBSP Pins ...................................................... 993
15.9.4 Enable/Disable the Digital Loopback Mode ................................................................. 993
15.9.5 Enable/Disable the Clock Stop Mode ........................................................................ 993
15.9.6 Enable/Disable Transmit Multichannel Selection ........................................................... 994
15.9.7 Choose One or Two Phases for the Transmit Frame ...................................................... 996
15.9.8 Set the Transmit Word Length(s) ............................................................................. 996
15.9.9 Set the Transmit Frame Length ............................................................................... 997
15.9.10 Enable/Disable the Transmit Frame-Synchronization Ignore Function ................................ 998
15.9.11 Set the Transmit Companding Mode ....................................................................... 999
15.9.12 Set the Transmit Data Delay ............................................................................... 1000
15.9.13 Set the Transmit DXENA Mode ............................................................................ 1002
15.9.14 Set the Transmit Interrupt Mode ........................................................................... 1002
15.9.15 Set the Transmit Frame-Synchronization Mode ......................................................... 1003
15.9.16 Set the Transmit Frame-Synchronization Polarity ....................................................... 1004
15.9.17 Set the SRG Frame-Synchronization Period and Pulse Width ........................................ 1005
15.9.18 Set the Transmit Clock Mode .............................................................................. 1006
15.9.19 Set the Transmit Clock Polarity ............................................................................ 1006
15.10 Emulation and Reset Considerations ................................................................................ 1008
15.10.1 McBSP Emulation Mode .................................................................................... 1008
15.10.2 Resetting and Initializing McBSP .......................................................................... 1008
15.11 Data Packing Examples ................................................................................................ 1010
15.11.1 Data Packing Using Frame Length and Word Length .................................................. 1010
15.11.2 Data Packing Using Word Length and the Frame-Synchronization Ignore Function ............... 1012
15.12 McBSP Registers ....................................................................................................... 1012
15.12.1 Register Summary ........................................................................................... 1012
15.12.2 Data Receive Registers (DRR[1,2]) ....................................................................... 1013
15.12.3 Data Transmit Registers (DXR[1,2]) ...................................................................... 1014
15.12.4 Serial Port Control Registers (SPCR[1,2]) ............................................................... 1015
10
Contents
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
15.12.5 Receive Control Registers (RCR[1, 2]) ..................................................................
15.12.6 Transmit Control Registers (XCR1 and XCR2) ..........................................................
15.12.7 Sample Rate Generator Registers (SRGR1 and SRGR2) .............................................
15.12.8 Multichannel Control Registers (MCR[1,2]) ..............................................................
15.12.9 Pin Control Register (PCR) .................................................................................
15.12.10 Receive Channel Enable Registers (RCERA, RCERB, RCERC, RCERD, RCERE, RCERF,
RCERG, RCERH) ..............................................................................................
15.12.11 Transmit Channel Enable Registers (XCERA, XCERB, XCERC, XCERD, XCERE, XCERF,
XCERG, XCERH) ..............................................................................................
15.12.12 Interrupt Generation .......................................................................................
16
1020
1022
1025
1027
1032
1034
1036
1038
Enhanced Controller Area Network (eCAN) ........................................................................ 1042
16.1
16.2
16.3
16.4
16.5
16.6
16.7
16.8
16.9
CAN Overview ...........................................................................................................
16.1.1 Features ........................................................................................................
16.1.2 Block Diagram .................................................................................................
16.1.3 eCAN Compatibility With Other TI CAN Modules .........................................................
The CAN Network and Module ........................................................................................
16.2.1 CAN Protocol Overview ......................................................................................
eCAN Controller Overview .............................................................................................
16.3.1 Standard CAN Controller (SCC) Mode .....................................................................
16.3.2 Memory Map ...................................................................................................
16.3.3 eCAN Control and Status Registers ........................................................................
Message Objects ........................................................................................................
Message Mailbox ........................................................................................................
16.5.1 Transmit Mailbox ..............................................................................................
16.5.2 Receive Mailbox ...............................................................................................
16.5.3 CAN Module Operation in Normal Configuration .........................................................
eCAN Registers .........................................................................................................
16.6.1 Mailbox Enable Register (CANME) .........................................................................
16.6.2 Mailbox-Direction Register (CANMD).......................................................................
16.6.3 Transmission-Request Set Register (CANTRS) ..........................................................
16.6.4 Transmission-Request-Reset Register (CANTRR) .......................................................
16.6.5 Transmission-Acknowledge Register (CANTA) ...........................................................
16.6.6 Abort-Acknowledge Register (CANAA).....................................................................
16.6.7 Received-Message-Pending Register (CANRMP) ........................................................
16.6.8 Received-Message-Lost Register (CANRML) .............................................................
16.6.9 Remote-Frame-Pending Register (CANRFP) .............................................................
16.6.10 Global Acceptance Mask Register (CANGAM) ..........................................................
16.6.11 Master Control Register (CANMC) ........................................................................
16.6.12 Bit-Timing Configuration Register (CANBTC) ............................................................
16.6.13 Error and Status Register (CANES) .......................................................................
16.6.14 CAN Error Counter Registers (CANTEC/CANREC) ....................................................
16.6.15 Interrupt Registers ...........................................................................................
16.6.16 Overwrite Protection Control Register (CANOPC) ......................................................
16.6.17 eCAN I/O Control Registers (CANTIOC, CANRIOC) ...................................................
Timer Management Unit ................................................................................................
16.7.1 Time Stamp Functions........................................................................................
16.7.2 Time-Out Functions ...........................................................................................
16.7.3 Behavior/Usage of MTOF0/1 Bit in User Applications....................................................
Mailbox Layout...........................................................................................................
16.8.1 Message Identifier Register (MSGID) ......................................................................
16.8.2 CPU Mailbox Access .........................................................................................
16.8.3 Message-Control Register (MSGCTRL)....................................................................
16.8.4 Message Data Registers (CANMDL, CANMDH) ..........................................................
Acceptance Filter ........................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
1043
1043
1044
1044
1045
1045
1046
1047
1048
1050
1051
1051
1053
1054
1054
1054
1054
1056
1057
1058
1059
1060
1061
1062
1063
1065
1066
1069
1071
1073
1074
1081
1082
1084
1084
1087
1089
1090
1090
1091
1092
1093
1094
11
www.ti.com
16.9.1 Local-Acceptance Masks (CANLAM) .......................................................................
16.10 CAN Module Initialization ..............................................................................................
16.10.1 CAN Bit-Timing Configuration ..............................................................................
16.10.2 CAN Bit Rate Calculation ...................................................................................
16.10.3 Bit Configuration Parameters for 30 -MHz CAN Clock .................................................
16.10.4 Bit Configuration Parameters for 100 -MHz CAN Clock ................................................
16.10.5 EALLOW Protection .........................................................................................
16.11 Steps to Configure eCAN ..............................................................................................
16.11.1 Configuring a Mailbox for Transmit ........................................................................
16.11.2 Transmitting a Message ....................................................................................
16.11.3 Configuring Mailboxes for Receive ........................................................................
16.11.4 Receiving a Message .......................................................................................
16.11.5 Handling of Overload Situations ...........................................................................
16.12 Handling of Remote Frame Mailboxes ...............................................................................
16.12.1 Requesting Data From Another Node ....................................................................
16.12.2 Answering a Remote Request .............................................................................
16.12.3 Updating the Data Field .....................................................................................
16.13 Interrupts .................................................................................................................
16.13.1 Interrupts Scheme ...........................................................................................
16.13.2 Mailbox Interrupt .............................................................................................
16.13.3 Interrupt Handling ............................................................................................
16.14 CAN Power-Down Mode ...............................................................................................
16.14.1 Entering and Exiting Local Power-Down Mode ..........................................................
16.14.2 Precautions for Entering and Exiting Device Low-Power Modes (LPM)..............................
16.14.3 Enabling/Disabling Clock to the CAN Module............................................................
16.14.4 Possible Failure Modes External to the CAN Controller Module ......................................
17
Universal Serial Bus (USB) Controller................................................................................ 1110
17.1
17.2
17.3
17.4
17.5
17.6
12
1094
1095
1096
1097
1097
1098
1100
1100
1101
1101
1101
1102
1102
1102
1102
1103
1103
1103
1105
1105
1106
1108
1108
1108
1109
1109
Introduction ...............................................................................................................
Features ..................................................................................................................
17.2.1 Block Diagram .................................................................................................
17.2.2 Signal Description .............................................................................................
17.2.3 Signal Pinout Tables .........................................................................................
17.2.4 VBus Recommendations .....................................................................................
Functional Description ..................................................................................................
17.3.1 Operation as a Device ........................................................................................
17.3.2 Operation as a Host...........................................................................................
17.3.3 DMA Operation ................................................................................................
17.3.4 Address/Data Bus Bridge ....................................................................................
Initialization and Configuration.........................................................................................
17.4.1 Pin Configuration ..............................................................................................
17.4.2 Endpoint Configuration .......................................................................................
Register Map .............................................................................................................
Register Descriptions ...................................................................................................
17.6.1 USB Device Functional Address Register (USBFADDR), offset 0x000................................
17.6.2 USB Power Management Register (USBPOWER), offset 0x001 .......................................
17.6.3 USB Transmit Interrupt Status Register (USBTXIS), offset 0x002 .....................................
17.6.4 USB Receive Interrupt Status Register (USBRXIS), offset 0x004 ......................................
17.6.5 USB Transmit Interrupt Enable Register (USBTXIE), offset 0x006 ....................................
17.6.6 USB Receive Interrupt Enable Register (USBRXIE), offset 0x008 .....................................
17.6.7 USB General Interrupt Status Register (USBIS), offset 0x00A .........................................
17.6.8 USB Interrupt Enable Register (USBIE), offset 0x00B ...................................................
17.6.9 USB Frame Value Register (USBFRAME), offset 0x00C ................................................
17.6.10 USB Endpoint Index Register (USBEPIDX), offset 0x00E .............................................
Contents
1111
1111
1111
1112
1112
1112
1113
1113
1117
1120
1121
1123
1123
1123
1124
1129
1129
1130
1132
1133
1134
1135
1136
1138
1140
1140
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
17.6.11 USB Test Mode Register (USBTEST), offset 0x00F ....................................................
17.6.12 USB FIFO Endpoint n Register (USBFIFO[0]-USBFIFO[3]) ...........................................
17.6.13 USB Device Control Register (USBDEVCTL), offset 0x060 ...........................................
17.6.14 USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ), offset 0x062......................
17.6.15 USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ), offset 0x063 ......................
17.6.16 USB Transmit FIFO Start Address Register (USBTXFIFOADD), offset 0x064......................
17.6.17 USB Receive FIFO Start Address Register (USBRXFIFOADD), offset 0x066 ......................
17.6.18 USB Connect Timing Register (USBCONTIM), offset 0x07A ..........................................
17.6.19 USB Full-Speed Last Transaction to End of Frame Timing Register (USBFSEOF), offset
0x07D ............................................................................................................
17.6.20 USB Low-Speed Last Transaction to End of Frame Timing Register (USBLSEOF), offset
0x07E ............................................................................................................
17.6.21 USB Transmit Functional Address Endpoint n Registers (USBTXFUNCADDR[0]USBTXFUNCADDR[3]) ........................................................................................
17.6.22 USB Transmit Hub Address Endpoint n Registers (USBTXHUBADDR[0]-USBTXHUBADDR[3])
17.6.23 USB Transmit Hub Port Endpoint n Registers (USBTXHUBPORT[0]-USBTXHUBPORT[3]) .....
17.6.24 USB Receive Functional Address Endpoint n Registers (USBRXFUNCADDR[1]USBRXFUNCADDR[3) ........................................................................................
17.6.25 USB Receive Hub Address Endpoint n Registers (USBRXHUBADDR[1]-USBRXHUBADDR[3) .
17.6.26 USB Receive Hub Port Endpoint n Registers (USBRXHUBPORT[1]-USBRXHUBPORT[3]) .....
17.6.27 USB Maximum Transmit Data Endpoint n Registers (USBTXMAXP[1]-USBTXMAXP[3]).........
17.6.28 USB Control and Status Endpoint 0 Low Register (USBCSRL0), offset 0x102 .....................
17.6.29 USB Control and Status Endpoint 0 High Register (USBCSRH0), offset 0x103 ....................
17.6.30 USB Receive Byte Count Endpoint 0 Register (USBCOUNT0), offset 0x108 .......................
17.6.31 USB Type Endpoint 0 Register (USBTYPE0), offset 0x10A ...........................................
17.6.32 USB NAK Limit Register (USBNAKLMT), offset 0x10B ................................................
17.6.33 USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[1]-USBTXCSRL[3)..
17.6.34 USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[1]USBTXCSRH[3]) ...............................................................................................
17.6.35 USB Maximum Receive Data Endpoint n Registers (USBRXMAXP[1]-USBRXMAXP[3]) .........
17.6.36 USB Receive Control and Status Endpoint n Low Register (USBRXCSRL[1]-USBRXCSRL[3) ..
17.6.37 USB Receive Control and Status Endpoint n High Register (USBRXCSRH[1]USBRXCSRH[3]) ...............................................................................................
17.6.38 USB Receive Byte Count Endpoint n Registers (USBRXCOUNT[1]-USBRXCOUNT[3) ..........
17.6.39 USB Host Transmit Configure Type Endpoint n Register (USBTXTYPE[1]-USBTXTYPE[3]) ....
17.6.40 USB Host Transmit Interval Endpoint n Register (USBTXINTERVAL[1]USBTXINTERVAL[3]) ...
17.6.41 USB Host Configure Receive Type Endpoint n Register (USBRXTYPE[1]-USBRXTYPE[3]) .....
17.6.42 USB Host Receive Polling Interval Endpoint n Register (USBRXINTERVAL[1]USBRXINTERVAL[3]) .........................................................................................
17.6.43 USB Request Packet Count in Block Transfer Endpoint n Registers (USBRQPKTCOUNT[1]USBRQPKTCOUNT[3) ........................................................................................
17.6.44 USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS), offset 0x340 .....
17.6.45 USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS), offset 0x342 ....
17.6.46 USB External Power Control Register (USBEPC), offset 0x400 ......................................
17.6.47 USB External Power Control Raw Interrupt Status Register (USBEPCRIS), offset 0x404 ........
17.6.48 USB External Power Control Interrupt Mask Register (USBEPCIM), offset 0x408 .................
17.6.49 USB External Power Control Interrupt Status and Clear Register (USBEPCISC), offset 0x40C .
17.6.50 USB Device RESUME Raw Interrupt Status Register (USBDRRIS), offset 0x410 .................
17.6.51 USB Device RESUME Raw Interrupt Mask Register (USBDRIM), offset 0x414 ....................
17.6.52 USB Device RESUME Interrupt Status and Clear Register (USBDRISC), offset 0x418 ...........
17.6.53 USB General-Purpose Control and Status Register (USBGPCS), offset 0x41C ....................
17.6.54 USB DMA Select Register (USBDMASEL), offset 0x450 ..............................................
1141
1143
1144
1146
1147
1148
1149
1150
1151
1151
1152
1153
1154
1155
1156
1157
1158
1159
1161
1162
1162
1163
1164
1167
1169
1170
1173
1175
1176
1177
1178
1179
1180
1181
1182
1183
1185
1186
1187
1188
1189
1190
1191
1192
Revision History ...................................................................................................................... 1194
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Contents
13
www.ti.com
List of Figures
1-1.
Flash Power Mode State Diagram ....................................................................................... 49
1-2.
Flash Pipeline ............................................................................................................... 51
1-3.
Flash Configuration Access Flow Diagram ............................................................................. 52
1-4.
Flash Options Register (FOPT)
1-5.
Flash Power Register (FPWR) ........................................................................................... 54
1-6.
Flash Status Register (FSTATUS) ....................................................................................... 55
1-7.
Flash Standby Wait Register (FSTDBYWAIT)
1-8.
1-9.
1-10.
1-11.
1-12.
1-13.
1-14.
1-15.
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.
1-33.
1-34.
1-35.
1-36.
1-37.
1-38.
1-39.
1-40.
1-41.
1-42.
1-43.
1-44.
1-45.
1-46.
1-47.
14
..........................................................................................
54
......................................................................... 56
Flash Standby to Active Wait Counter Register (FACTIVEWAIT) .................................................. 56
Flash Wait-State Register (FBANKWAIT) .............................................................................. 57
OTP Wait-State Register (FOTPWAIT) ................................................................................. 58
CSM Status and Control Register (CSMSCR) ......................................................................... 63
Password Match Flow (PMF) ............................................................................................ 64
Clock and Reset Domains ................................................................................................ 69
Peripheral Clock Control 0 Register (PCLKCR0) ...................................................................... 70
Peripheral Clock Control 1 Register (PCLKCR1) ...................................................................... 72
Peripheral Clock Control 2 Register (PCLKCR2) ..................................................................... 73
Peripheral Clock Control 3 Register (PCLKCR3) ...................................................................... 74
Low-Speed Peripheral Clock Prescaler Register (LOSPCP) ......................................................... 75
Clocking Options ........................................................................................................... 76
Internal Oscillator Trim (INTOSCnTRIM) Register .................................................................... 77
Clocking (XCLK) Register ................................................................................................. 78
Clock Control (CLKCTL) Register ....................................................................................... 78
OSC and PLL Block ........................................................................................................ 81
PLLCR Change Procedure Flow Chart .................................................................................. 83
PLLCR Register Layout ................................................................................................... 84
PLL Status Register (PLLSTS) ........................................................................................... 84
PLL Lock Period (PLLLOCKPRD) Register............................................................................. 86
PLL2 Input and Output Configurations .................................................................................. 87
PLL2 Configuration (PLL2CTL) Register (EALLOW protected) ...................................................... 87
PLL2 Multiplier (PLL2MULT) Register (EALLOW protected) ......................................................... 87
PLL2 Lock Status (PLL2STS) Register ................................................................................. 88
SYSCLK2 Clock Counter (SYSCLK2CNTR) Register................................................................. 88
EPWM DMA/CLA Configuration (EPWMCFG) Register .............................................................. 89
Clocking and Reset Logic ................................................................................................. 90
Clock Fail Interrupt ......................................................................................................... 94
NMI Configuration (NMICFG) Register .................................................................................. 95
NMI Flag (NMIFLG) Register Register ................................................................................. 95
NMI Flag (NMIFLGCLR) Register Register ............................................................................ 96
NMI Flag (NMIFLGFRC) Register Register ............................................................................ 97
NMI Watchdog Counter (NMIWDCNT) Register ....................................................................... 97
NMI Watchdog Period (NMIWDPRD) Register ......................................................................... 97
XCLKOUT Generation ..................................................................................................... 99
Low-Power Mode Control 0 Register (LPMCR0) ..................................................................... 101
CPU Watchdog Module .................................................................................................. 102
System Control and Status Register (SCSR) ........................................................................ 105
Watchdog Counter Register (WDCNTR) .............................................................................. 106
Watchdog Reset Key Register (WDKEY) ............................................................................. 106
List of Figures
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
1-48.
Watchdog Control Register (WDCR) ................................................................................... 106
1-49.
CPU-Timers
108
1-50.
CPU-Timer Interrupts Signals and Output Signal
108
1-51.
1-52.
1-53.
1-54.
1-55.
1-56.
1-57.
1-58.
1-59.
1-60.
1-61.
1-62.
1-63.
1-64.
1-65.
1-66.
1-67.
1-68.
1-69.
1-70.
1-71.
1-72.
1-73.
1-74.
1-75.
1-76.
1-77.
1-78.
1-79.
1-80.
1-81.
1-82.
1-83.
1-84.
1-85.
1-86.
1-87.
1-88.
1-89.
1-90.
1-91.
1-92.
1-93.
1-94.
1-95.
1-96.
...............................................................................................................
....................................................................
TIMERxTIM Register (x = 0, 1, 2) ......................................................................................
TIMERxTIMH Register (x = 0, 1, 2) ....................................................................................
TIMERxPRD Register (x = 0, 1, 2) .....................................................................................
TIMERxPRDH Register (x = 0, 1, 2) ...................................................................................
TIMERxTCR Register (x = 0, 1, 2) .....................................................................................
TIMERxTPR Register (x = 0, 1, 2)......................................................................................
TIMERxTPRH Register (x = 0, 1, 2) ...................................................................................
GPIO0 to GPIO31, GPIO34, GPIO40-GPIO58 Multiplexing Diagram .............................................
GPIO32, GPIO33 Multiplexing Diagram ...............................................................................
JTAG Port/GPIO Multiplexing ...........................................................................................
JTAGDEBUG Register (Addfress 0x702A, EALLOW protected) ...................................................
Analog/GPIO Multiplexing ...............................................................................................
Input Qualification Using a Sampling Window ........................................................................
Input Qualifier Clock Cycles .............................................................................................
GPIO Port A MUX 1 (GPAMUX1) Register ...........................................................................
GPIO Port A MUX 2 (GPAMUX2) Register ...........................................................................
GPIO Port B MUX 1 (GPBMUX1) Register ...........................................................................
GPIO Port B MUX 2 (GPBMUX2) Register ...........................................................................
Analog I/O MUX (AIOMUX1) Register .................................................................................
GPIO Port A Qualification Control (GPACTRL) Register ...........................................................
GPIO Port B Qualification Control (GPBCTRL) Register ...........................................................
GPIO A Control Register 2 Register (GPACTRL2) Register ........................................................
GPIO Port A Qualification Select 1 (GPAQSEL1) Register .........................................................
GPIO Port A Qualification Select 2 (GPAQSEL2) Register .........................................................
GPIO Port B Qualification Select 1 (GPBQSEL1) Register .........................................................
GPIO Port B Qualification Select 2 (GPBQSEL2) Register .........................................................
GPIO Port A Direction (GPADIR) Register ...........................................................................
GPIO Port B Direction (GPBDIR) Register ...........................................................................
Analog I/O DIR (AIODIR) Register .....................................................................................
GPIO Port A Pullup Disable (GPAPUD) Registers ..................................................................
GPIO Port B Pullup Disable (GPBPUD) Registers ..................................................................
GPIO Port A Data (GPADAT) Register ...............................................................................
GPIO Port B Data (GPBDAT) Register ...............................................................................
Analog I/O DAT (AIODAT) Register ....................................................................................
GPIO Port A Set, Clear and Toggle (GPASET, GPACLEAR, GPATOGGLE) Registers .......................
GPIO Port B Set, Clear and Toggle (GPBSET, GPBCLEAR, GPBTOGGLE) Registers .......................
Analog I/O Toggle (AIOSET, AIOCLEAR, AIOTOGGLE) Register ................................................
GPIO XINTn Interrupt Select (GPIOXINTnSEL) Registers ..........................................................
GPIO Low Power Mode Wakeup Select (GPIOLPMSEL) Register ................................................
Device Configuration (DEVICECNF) Register ........................................................................
Part ID Register ...........................................................................................................
REVID Register ...........................................................................................................
Overview: Multiplexing of Interrupts Using the PIE Block ...........................................................
Typical PIE/CPU Interrupt Response - INTx.y ........................................................................
Reset Flow Diagram ......................................................................................................
PIE Interrupt Sources and External Interrupts XINT1/XINT2/XINT3 ...............................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
109
109
110
110
110
111
112
114
115
116
116
118
123
126
131
133
135
137
138
139
141
141
143
144
145
146
146
147
148
148
149
150
151
151
152
153
154
155
156
163
164
165
167
169
171
172
15
www.ti.com
1-97.
1-98.
1-99.
1-100.
1-101.
1-102.
1-103.
1-104.
1-105.
1-106.
1-107.
2-1.
2-2.
2-3.
2-4.
2-5.
2-6.
2-7.
2-8.
2-9.
2-10.
2-11.
2-12.
2-13.
2-14.
2-15.
2-16.
2-17.
2-18.
2-19.
2-20.
2-21.
2-22.
2-23.
2-24.
2-25.
2-26.
2-27.
2-28.
3-1.
3-2.
3-3.
3-4.
3-5.
3-6.
3-7.
3-8.
3-9.
3-10.
16
.........................................................................
PIECTRL Register (Address 0xCE0) ...................................................................................
PIE Interrupt Acknowledge Register (PIEACK) Register (Address 0xCE1) .......................................
PIEIFRx Register (x = 1 to 12) ..........................................................................................
PIEIERx Register (x = 1 to 12) ..........................................................................................
Interrupt Flag Register (IFR) — CPU Register .......................................................................
Interrupt Enable Register (IER) — CPU Register ....................................................................
Debug Interrupt Enable Register (DBGIER) — CPU Register .....................................................
External Interrupt n Control Register (XINTnCR) ....................................................................
External Interrupt n Counter (XINTnCTR) (Address 7078h) ........................................................
BOR Configuration (BORCFG) Register ..............................................................................
F2806x Memory Map of On-Chip ROM ................................................................................
F2806xM/2806xF Memory Map of On-Chip ROM ....................................................................
Vector Table Map .........................................................................................................
Bootloader Flow Diagram ................................................................................................
Boot ROM Stack ..........................................................................................................
Boot ROM Function Overview ..........................................................................................
Bootloader Basic Transfer Procedure .................................................................................
Overview of InitBoot Assembly Function ..............................................................................
Overview of the SelectBootMode Function ...........................................................................
Overview of Get_mode() Function .....................................................................................
Overview of CopyData Function .......................................................................................
Overview of SCI Bootloader Operation ................................................................................
Overview of SCI_Boot Function ........................................................................................
Overview of SCI_GetWordData Function .............................................................................
Overview of Parallel GPIO bootloader Operation ....................................................................
Parallel GPIO Boot Loader Handshake Protocol .....................................................................
Parallel GPIO Mode Overview ..........................................................................................
Parallel GPIO Mode - Host Transfer Flow .............................................................................
8-Bit Parallel GetWord Function ........................................................................................
SPI Loader .................................................................................................................
Data Transfer From EEPROM Flow ....................................................................................
Overview of SPIA_GetWordData Function ...........................................................................
EEPROM Device at Address 0x50 .....................................................................................
Overview of I2C_Boot Function ........................................................................................
Random Read .............................................................................................................
Sequential Read ..........................................................................................................
Overview of eCAN-A bootloader Operation ...........................................................................
ExitBoot Procedure Flow ................................................................................................
Multiple ePWM Modules .................................................................................................
Submodules and Signal Connections for an ePWM Module........................................................
ePWM Submodules and Critical Internal Signal Interconnects .....................................................
Time-Base Submodule Block Diagram ................................................................................
Time-Base Submodule Signals and Registers ........................................................................
Time-Base Frequency and Period ......................................................................................
Time-Base Counter Synchronization Scheme 1 ......................................................................
Time-Base Counter Synchronization Scheme 2 ......................................................................
Time-Base Counter Synchronization Scheme 3 ......................................................................
Time-Base Up-Count Mode Waveforms ...............................................................................
Multiplexed Interrupt Request Flow Diagram
List of Figures
175
182
182
183
183
185
187
188
190
191
193
195
196
200
202
204
206
217
218
219
220
221
221
222
223
223
224
225
226
227
228
230
230
231
232
233
233
234
236
245
246
247
252
253
255
257
258
259
261
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
3-11.
3-12.
3-13.
3-14.
3-15.
3-16.
3-17.
...........................................................................
Time-Base Up-Down-Count Waveforms, TBCTL[PHSDIR = 0] Count Down On Synchronization Event ....
Time-Base Up-Down Count Waveforms, TBCTL[PHSDIR = 1] Count Up On Synchronization Event ........
Counter-Compare Submodule ..........................................................................................
Detailed View of the Counter-Compare Submodule .................................................................
Counter-Compare Event Waveforms in Up-Count Mode ............................................................
Counter-Compare Events in Down-Count Mode .....................................................................
Time-Base Down-Count Mode Waveforms
262
262
263
263
265
267
268
3-18.
Counter-Compare Events In Up-Down-Count Mode, TBCTL[PHSDIR = 0] Count Down On
Synchronization Event ................................................................................................... 269
3-19.
Counter-Compare Events In Up-Down-Count Mode, TBCTL[PHSDIR = 1] Count Up On Synchronization
Event ....................................................................................................................... 269
3-20.
Action-Qualifier Submodule
3-21.
Action-Qualifier Submodule Inputs and Outputs ...................................................................... 271
3-22.
Possible Action-Qualifier Actions for EPWMxA and EPWMxB Outputs ........................................... 272
3-23.
Up-Down-Count Mode Symmetrical Waveform ....................................................................... 275
3-24.
Up, Single Edge Asymmetric Waveform, With Independent Modulation on EPWMxA and
EPWMxB—Active High .................................................................................................. 276
3-25.
Up, Single Edge Asymmetric Waveform With Independent Modulation on EPWMxA and
EPWMxB—Active Low ................................................................................................... 278
3-26.
Up-Count, Pulse Placement Asymmetric Waveform With Independent Modulation on EPWMxA ............. 279
3-27.
Up-Down-Count, Dual Edge Symmetric Waveform, With Independent Modulation on EPWMxA and
EPWMxB — Active Low ................................................................................................. 281
3-28.
Up-Down-Count, Dual Edge Symmetric Waveform, With Independent Modulation on EPWMxA and
EPWMxB — Complementary ........................................................................................... 282
3-29.
Up-Down-Count, Dual Edge Asymmetric Waveform, With Independent Modulation on EPWMxA—Active
Low ......................................................................................................................... 283
3-30.
Dead-Band Submodule .................................................................................................. 284
3-31.
Configuration Options for the Dead-Band Submodule ............................................................... 285
3-32.
Dead-Band Waveforms for Typical Cases (0% < Duty < 100%) ................................................... 287
3-33.
PWM-Chopper Submodule .............................................................................................. 289
3-34.
PWM-Chopper Submodule Operational Details ...................................................................... 290
3-35.
Simple PWM-Chopper Submodule Waveforms Showing Chopping Action Only ................................ 290
3-36.
PWM-Chopper Submodule Waveforms Showing the First Pulse and Subsequent Sustaining Pulses
3-37.
PWM-Chopper Submodule Waveforms Showing the Pulse Width (Duty Cycle) Control of Sustaining
Pulses ...................................................................................................................... 292
3-38.
Trip-Zone Submodule .................................................................................................... 293
3-39.
Trip-Zone Submodule Mode Control Logic ............................................................................ 297
3-40.
Trip-Zone Submodule Interrupt Logic .................................................................................. 298
3-41.
Event-Trigger Submodule
3-42.
3-43.
3-44.
3-45.
3-46.
3-47.
3-48.
3-49.
3-50.
3-51.
3-52.
3-53.
.............................................................................................
.......
...............................................................................................
Event-Trigger Submodule Inter-Connectivity of ADC Start of Conversion ........................................
Event-Trigger Submodule Showing Event Inputs and Prescaled Outputs ........................................
Event-Trigger Interrupt Generator ......................................................................................
Event-Trigger SOCA Pulse Generator .................................................................................
Event-Trigger SOCB Pulse Generator .................................................................................
Digital-Compare Submodule High-Level Block Diagram ............................................................
DCAEVT1 Event Triggering .............................................................................................
DCAEVT2 Event Triggering .............................................................................................
DCBEVT1 Event Triggering .............................................................................................
DCBEVT2 Event Triggering .............................................................................................
Event Filtering .............................................................................................................
Blanking Window Timing Diagram ......................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
270
291
299
299
300
301
302
302
303
305
305
306
306
307
308
17
www.ti.com
3-54.
Simplified ePWM Module ................................................................................................ 309
3-55.
EPWM1 Configured as a Typical Master, EPWM2 Configured as a Slave
310
3-56.
Control of Four Buck Stages. Here FPWM1≠ FPWM2≠ FPWM3≠ FPWM4
311
3-57.
3-58.
3-59.
3-60.
3-61.
3-62.
3-63.
3-64.
3-65.
3-66.
3-67.
3-68.
3-69.
3-70.
3-71.
3-72.
3-73.
3-74.
3-75.
3-76.
3-77.
3-78.
3-79.
3-80.
3-81.
3-82.
3-83.
3-84.
3-85.
3-86.
3-87.
3-88.
3-89.
3-90.
3-91.
3-92.
3-93.
3-94.
3-95.
3-96.
3-97.
3-98.
3-99.
3-100.
3-101.
3-102.
18
......................................
....................................................
Buck Waveforms for (Note: Only three bucks shown here) .........................................................
Control of Four Buck Stages. (Note: FPWM2 = N x FPWM1) .............................................................
Buck Waveforms for (Note: FPWM2 = FPWM1)) ............................................................................
Control of Two Half-H Bridge Stages (FPWM2 = N x FPWM1) ...........................................................
Half-H Bridge Waveforms for (Note: Here FPWM2 = FPWM1 ) ...........................................................
Control of Dual 3-Phase Inverter Stages as Is Commonly Used in Motor Control ...............................
3-Phase Inverter Waveforms for (Only One Inverter Shown) .......................................................
Configuring Two PWM Modules for Phase Control ..................................................................
Timing Waveforms Associated With Phase Control Between 2 Modules .........................................
Control of a 3-Phase Interleaved DC/DC Converter .................................................................
3-Phase Interleaved DC/DC Converter Waveforms for .............................................................
Controlling a Full-H Bridge Stage (FPWM2 = FPWM1) ....................................................................
ZVS Full-H Bridge Waveforms ..........................................................................................
Peak Current Mode Control of a Buck Converter ....................................................................
Peak Current Mode Control Waveforms for ..........................................................................
Control of Two Resonant Converter Stages ..........................................................................
H-Bridge LLC Resonant Converter PWM Waveforms ...............................................................
Time-Base Period Register (TBPRD) ..................................................................................
Time Base Period High Resolution Register (TBPRDHR) ..........................................................
Time Base Period Mirror Register (TBPRDM) ........................................................................
Time-Base Period High Resolution Mirror Register (TBPRDHRM) ...............................................
Time-Base Phase Register (TBPHS) ..................................................................................
Time-Base Phase High Resolution Register (TBPHSHR)...........................................................
Time-Base Counter Register (TBCTR) ................................................................................
Time-Base Control Register (TBCTL) ..................................................................................
Time-Base Status Register (TBSTS) ...................................................................................
EPWM DMA/CLA Configuration (EPWMCFG) Register .............................................................
High Resolution Period Control Register (HRPCTL) .................................................................
Counter-Compare A Register (CMPA) ................................................................................
Counter-Compare B Register (CMPB) .................................................................................
Counter-Compare Control Register (CMPCTL) .......................................................................
Compare A High Resolution Register (CMPAHR) ...................................................................
Counter-Compare A Mirror Register (CMPAM) ......................................................................
Compare A High Resolution Mirror Register ..........................................................................
Action-Qualifier Output A Control Register (AQCTLA)...............................................................
Action-Qualifier Output B Control Register (AQCTLB)...............................................................
Action-Qualifier Software Force Register (AQSFRC) ................................................................
Action-Qualifier Continuous Software Force Register (AQCSFRC)................................................
Dead-Band Generator Control Register (DBCTL) ....................................................................
Dead-Band Generator Rising Edge Delay Register (DBRED) ......................................................
Dead-Band Generator Falling Edge Delay Register (DBFED) .....................................................
PWM-Chopper Control Register (PCCTL) .............................................................................
Trip-Zone Select Register (TZSEL) ....................................................................................
Trip-Zone Control Register (TZCTL) ...................................................................................
Trip-Zone Enable Interrupt Register (TZEINT) ........................................................................
Trip-Zone Flag Register (TZFLG).......................................................................................
List of Figures
312
314
315
317
318
320
321
323
324
325
326
329
330
332
332
334
334
336
336
336
337
337
338
338
338
341
341
342
343
343
345
346
346
346
347
348
349
350
351
352
352
353
355
356
357
358
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
3-103. Trip-Zone Clear Register (TZCLR) ..................................................................................... 359
3-104. Trip-Zone Force Register (TZFRC)..................................................................................... 359
3-105. Trip Zone Digital Compare Event Select Register (TZDCSEL) ..................................................... 359
...........................................................................
Digital Compare A Control Register (DCACTL) ......................................................................
Digital Compare B Control Register (DCBCTL).......................................................................
Digital Compare Filter Control Register (DCFCTL) ..................................................................
Digital Compare Capture Control Register (DCCAPCTL) ...........................................................
Digital Compare Counter Capture Register (DCCAP) ...............................................................
Digital Compare Filter Offset Register (DCFOFFSET) ..............................................................
Digital Compare Filter Offset Counter Register (DCFOFFSETCNT) ..............................................
Digital Compare Filter Window Register (DCFWINDOW) ...........................................................
Digital Compare Filter Window Counter Register (DCFWINDOWCNT) ...........................................
Event-Trigger Selection Register (ETSEL) ............................................................................
Event-Trigger Prescale Register (ETPS) ..............................................................................
Event-Trigger Flag Register (ETFLG) ..................................................................................
Event-Trigger Clear Register (ETCLR) ................................................................................
Event-Trigger Force Register (ETFRC) ................................................................................
Resolution Calculations for Conventionally Generated PWM .......................................................
Operating Logic Using MEP .............................................................................................
HRPWM Extension Registers and Memory Configuration ..........................................................
HRPWM System Interface ...............................................................................................
HRPWM Block Diagram .................................................................................................
Required PWM Waveform for a Requested Duty = 30.0% .........................................................
Low % Duty Cycle Range Limitation Example (HRPCTL[HRPE] = 0) .............................................
High % Duty Cycle Range Limitation Example (HRPCTL[HRPE] = 0) ...........................................
Up-Count Duty Cycle Range Limitation Example (HRPCTL[HRPE]=1) ...........................................
Up-Down Count Duty Cycle Range Limitation Example (HRPCTL[HRPE]=1) ...................................
Simple Buck Controlled Converter Using a Single PWM ............................................................
PWM Waveform Generated for Simple Buck Controlled Converter ...............................................
Simple Reconstruction Filter for a PWM Based DAC ................................................................
PWM Waveform Generated for the PWM DAC Function ...........................................................
HRPWM Configuration Register (HRCNFG) ..........................................................................
Counter Compare A High Resolution Register (CMPAHR) .........................................................
TB Phase High Resolution Register (TBPHSHR) ....................................................................
Time Base Period High Resolution Register ..........................................................................
Compare A High Resolution Mirror Register ..........................................................................
Time-Base Period High Resolution Mirror Register ..................................................................
High Resolution Period Control Register (HRPCTL) .................................................................
High Resolution Micro Step Register (HRMSTEP) (EALLOW protected): ........................................
HRCAP Module System Block Diagram ...............................................................................
HRCAP Block Diagram ..................................................................................................
HCCAPCLK Generation .................................................................................................
HCCOUNTER Behavior During High Pulse Width Capture .........................................................
Rise vs. Fall Capture Events ............................................................................................
High Pulse Width Normal Mode Capture ..............................................................................
Low Pulse Width Normal Mode Capture ...............................................................................
HRCAP High-Resolution Mode Operating Logic .....................................................................
Interrupts in HRCAP Module ............................................................................................
3-106. Digital Compare Trip Select (DCTRIPSEL)
361
3-107.
362
3-108.
3-109.
3-110.
3-111.
3-112.
3-113.
3-114.
3-115.
3-116.
3-117.
3-118.
3-119.
3-120.
4-1.
4-2.
4-3.
4-4.
4-5.
4-6.
4-7.
4-8.
4-9.
4-10.
4-11.
4-12.
4-13.
4-14.
4-15.
4-16.
4-17.
4-18.
4-19.
4-20.
4-21.
4-22.
5-1.
5-2.
5-3.
5-4.
5-5.
5-6.
5-7.
5-8.
5-9.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
363
363
364
364
365
365
366
366
366
368
369
370
370
374
376
377
378
379
381
384
386
386
387
391
391
393
393
397
398
398
398
399
399
399
400
406
407
407
408
409
410
410
411
411
19
www.ti.com
5-10.
5-11.
5-12.
5-13.
5-14.
5-15.
5-16.
5-17.
5-18.
5-19.
5-20.
5-21.
6-1.
6-2.
6-3.
6-4.
6-5.
6-6.
6-7.
6-8.
6-9.
6-10.
6-11.
6-12.
6-13.
6-14.
6-15.
6-16.
6-17.
6-18.
6-19.
6-20.
6-21.
6-22.
6-23.
6-24.
6-25.
7-1.
7-2.
7-3.
7-4.
7-5.
7-6.
7-7.
7-8.
7-9.
7-10.
7-11.
7-12.
20
....................................................................................
HRCAP Interrupt Flag Register (HCIFR) ..............................................................................
HRCAP Interrupt Clear Register (HCICLR) ...........................................................................
HRCAP Interrupt Force Register (HCIFRC) ..........................................................................
HRCAP Counter Register (HCCOUNTER) ............................................................................
HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0) ......................................
HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1) ......................................
HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0) .....................................
HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1) .....................................
LowPulseWidth0 Capture on RISE and FALL Events ...............................................................
HighPulseWidth0/1 Capture on RISE and FALL Events ............................................................
PeriodWidthRise0 and PeriodWidthFall0 Capture on RISE and FALL Events ...................................
Capture and APWM Modes of Operation..............................................................................
Capture Function Diagram...............................................................................................
Event Prescale Control...................................................................................................
Prescale Function Waveforms ..........................................................................................
Details of the Continuous/One-shot Block .............................................................................
Details of the Counter and Synchronization Block ...................................................................
Interrupts in eCAP Module ..............................................................................................
PWM Waveform Details Of APWM Mode Operation ................................................................
Time-Stamp Counter Register (TSCTR) ...............................................................................
Counter Phase Control Register (CTRPHS) .........................................................................
Capture-1 Register (CAP1) .............................................................................................
Capture-2 Register (CAP2) ..............................................................................................
Capture-3 Register (CAP3) ..............................................................................................
Capture-4 Register (CAP4) ..............................................................................................
ECAP Control Register 1 (ECCTL1) ...................................................................................
ECAP Control Register 2 (ECCTL2) ...................................................................................
ECAP Interrupt Enable Register (ECEINT)............................................................................
ECAP Interrupt Flag Register (ECFLG)................................................................................
ECAP Interrupt Clear Register (ECCLR) ..............................................................................
ECAP Interrupt Forcing Register (ECFRC)............................................................................
Capture Sequence for Absolute Time-stamp and Rising Edge Detect ............................................
Capture Sequence for Absolute Time-stamp With Rising and Falling Edge Detect .............................
Capture Sequence for Delta Mode Time-stamp and Rising Edge Detect .........................................
Capture Sequence for Delta Mode Time-stamp With Rising and Falling Edge Detect ..........................
PWM Waveform Details of APWM Mode Operation .................................................................
Optical Encoder Disk .....................................................................................................
QEP Encoder Output Signal for Forward/Reverse Movement ......................................................
Index Pulse Example .....................................................................................................
Functional Block Diagram of the eQEP Peripheral ...................................................................
Functional Block Diagram of Decoder Unit ............................................................................
Quadrature Decoder State Machine....................................................................................
Quadrature-clock and Direction Decoding .............................................................................
Position Counter Reset by Index Pulse for 1000 Line Encoder (QPOSMAX = 3999 or 0xF9F) ...............
Position Counter Underflow/Overflow (QPOSMAX = 4) ............................................................
Software Index Marker for 1000-line Encoder (QEPCTL[IEL] = 1) .................................................
Strobe Event Latch (QEPCTL[SEL] = 1)...............................................................................
eQEP Position-compare Unit ............................................................................................
HRCAP Control Register (HCCTL)
List of Figures
412
413
414
415
415
416
416
416
417
419
420
421
427
428
429
429
430
431
432
433
434
434
434
434
435
435
435
436
439
440
440
441
444
446
448
450
452
455
455
456
458
460
461
462
464
465
466
467
468
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
7-13.
eQEP Position-compare Event Generation Points ................................................................... 469
7-14.
eQEP Position-compare Sync Output Pulse Stretcher .............................................................. 469
7-15.
eQEP Edge Capture Unit ................................................................................................ 471
7-16.
Unit Position Event for Low Speed Measurement (QCAPCTL[UPPS] = 0010)
7-17.
7-18.
7-19.
7-20.
7-21.
7-22.
7-23.
7-24.
7-25.
7-26.
7-27.
7-28.
7-29.
7-30.
7-31.
7-32.
7-33.
7-34.
7-35.
7-36.
7-37.
7-38.
7-39.
7-40.
7-41.
7-42.
7-43.
7-44.
8-1.
8-2.
8-3.
8-4.
8-5.
8-6.
8-7.
8-8.
8-9.
8-10.
8-11.
8-12.
8-13.
8-14.
8-15.
8-16.
8-17.
..................................
eQEP Edge Capture Unit - Timing Details ............................................................................
eQEP Watchdog Timer ..................................................................................................
eQEP Unit Time Base ....................................................................................................
EQEP Interrupt Generation ..............................................................................................
QEP Decoder Control (QDECCTL) Register ..........................................................................
eQEP Control (QEPCTL) Register .....................................................................................
eQEP Position-compare Control (QPOSCTL) Register .............................................................
eQEP Capture Control (QCAPCTL) Register .........................................................................
eQEP Position Counter (QPOSCNT) Register .......................................................................
eQEP Position Counter Initialization (QPOSINIT) Register .........................................................
eQEP Maximum Position Count Register (QPOSMAX) Register ..................................................
eQEP Position-compare (QPOSCMP) Register ......................................................................
eQEP Index Position Latch (QPOSILAT) Register ...................................................................
eQEP Strobe Position Latch (QPOSSLAT) Register ................................................................
eQEP Position Counter Latch (QPOSLAT) Register .................................................................
eQEP Unit Timer (QUTMR) Register ..................................................................................
eQEP Register Unit Period (QUPRD) Register .......................................................................
eQEP Watchdog Timer (QWDTMR) Register.........................................................................
eQEP Watchdog Period (QWDPRD) Register ........................................................................
eQEP Interrupt Enable (QEINT) Register .............................................................................
eQEP Interrupt Flag (QFLG) Register .................................................................................
eQEP Interrupt Clear (QCLR) Register ................................................................................
eQEP Interrupt Force (QFRC) Register ...............................................................................
eQEP Status (QEPSTS) Register ......................................................................................
eQEP Capture Timer (QCTMR) Register ..............................................................................
eQEP Capture Period (QCPRD) Register .............................................................................
eQEP Capture Timer Latch (QCTMRLAT) Register .................................................................
eQEP Capture Period Latch (QCPRDLAT) Register ................................................................
ADC Block Diagram ......................................................................................................
SOC Block Diagram ......................................................................................................
ADCINx Input Model......................................................................................................
ONESHOT Single Conversion ..........................................................................................
Round Robin Priority Example ..........................................................................................
High Priority Example ....................................................................................................
Interrupt Structure ........................................................................................................
ADC Control Register 1 (ADCCTL1) (Address Offset 00h) .........................................................
ADC Control Register 2 (ADCCTL2) (Address Offset 01h) ........................................................
ADC Interrupt Flag Register (ADCINTFLG) (Address Offset 04h) .................................................
ADC Interrupt Flag Clear Register (ADCINTFLGCLR) (Address Offset 05h) ....................................
ADC Interrupt Overflow Register (ADCINTOVF) (Address Offset 06h) ...........................................
ADC Interrupt Overflow Clear Register (ADCINTOVFCLR) (Address Offset 07h) ...............................
Interrupt Select 1 And 2 Register (INTSEL1N2) (Address Offset 08h) ............................................
Interrupt Select 3 And 4 Register (INTSEL3N4) (Address Offset 09h) ............................................
Interrupt Select 5 And 6 Register (INTSEL5N6) (Address Offset 0Ah) ............................................
Interrupt Select 7 And 8 Register (INTSEL7N8) (Address Offset 0Bh) ............................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
471
472
473
473
474
474
475
477
478
478
478
479
479
479
479
480
480
480
480
481
481
482
483
484
485
486
486
486
487
490
491
493
494
495
496
498
501
503
504
505
505
505
506
506
506
506
21
www.ti.com
8-18.
Interrupt Select 9 And 10 Register (INTSEL9N10) (Address Offset 0Ch)......................................... 507
8-19.
ADC Start of Conversion Priority Control Register (SOCPRICTL) ................................................. 508
8-20.
ADC Sample Mode Register (ADCSAMPLEMODE) (Address Offset 12h) ....................................... 510
8-21.
ADC Interrupt Trigger SOC Select 1 Register (ADCINTSOCSEL1) (Address Offset 14h)
8-22.
8-23.
8-24.
8-25.
8-26.
8-27.
8-28.
8-29.
8-30.
8-31.
8-32.
8-33.
8-34.
8-35.
8-36.
8-37.
8-38.
8-39.
8-40.
8-41.
8-42.
8-43.
8-44.
8-45.
8-46.
8-47.
8-48.
8-49.
8-50.
8-51.
9-1.
9-2.
9-3.
9-4.
9-5.
9-6.
9-7.
9-8.
9-9.
9-10.
9-11.
9-12.
9-13.
9-14.
10-1.
22
.....................
ADC Interrupt Trigger SOC Select 2 Register (ADCINTSOCSEL2) (Address Offset 15h) .....................
ADC SOC Flag 1 Register (ADCSOCFLG1) (Address Offset 18h) ................................................
ADC SOC Force 1 Register (ADCSOCFRC1) (Address Offset 1Ah) ..............................................
ADC SOC Overflow 1 Register (ADCSOCOVF1) (Address Offset 1Ch) ..........................................
ADC SOC Overflow Clear 1 Register (ADCSOCOVFCLR1) (Address Offset 1Eh) .............................
ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) (Address Offset 20h - 2Fh) ..........................
ADC Reference/Gain Trim Register (ADCREFTRIM) (Address Offset 40h) ......................................
ADC Offset Trim Register (ADCOFFTRIM) (Address Offset 41h) .................................................
Comparator Hysteresis Control Register (COMPHYSTCTL) (Address Offset 4Ch) .............................
ADC Revision Register (ADCREV) (Address Offset 4Fh) ...........................................................
ADC RESULT0 - RESULT15 Registers (ADCRESULTx) (PF1 Block Address Offset 00h - 0Fh) .............
Timing Example For Sequential Mode / Late Interrupt Pulse .......................................................
Timing Example For Sequential Mode / Early Interrupt Pulse ......................................................
Timing Example For Simultaneous Mode / Late Interrupt Pulse ...................................................
Timing Example For Simultaneous Mode / Early Interrupt Pulse ..................................................
Timing Example for NONOVERLAP Mode ............................................................................
Temperature Sensor Transfer Function ...............................................................................
Comparator Block Diagram ..............................................................................................
Comparator ................................................................................................................
Ramp Generator Block Diagram ........................................................................................
Ramp Generator Behavior ...............................................................................................
Comparator Control (COMPCTL) Register ...........................................................................
Compare Output Status (COMPSTS) Register .......................................................................
DAC Control (DACCTL) Register ......................................................................................
DAC Value (DACVAL) Register .........................................................................................
Ramp Generator Maximum Reference Active (RAMPMAXREF_ACTIVE) Register ............................
Ramp Generator Maximum Reference Shadow (RAMPMAXREF_SHDW) Register............................
Ramp Generator Decrement Value Active (RAMPDECVAL_ACTIVE) Register .................................
Ramp Generator Decrement Value Shadow (RAMPDECVAL_SHDW) Register ................................
Ramp Generator Status (RAMPSTS) Register .......................................................................
CLA Block Diagram .......................................................................................................
Task Interrupt Vector (MVECT1/2/3/4/5/6/7/8) Register .............................................................
Control Register (MCTL) .................................................................................................
Memory Configuration Register (MMEMCFG) ........................................................................
CLA Peripheral Interrupt Source Select 1 Register (MPISRCSEL1)...............................................
Interrupt Enable Register (MIER) .......................................................................................
Interrupt Flag Register (MIFR) ..........................................................................................
Interrupt Overflow Flag Register (MIOVF) .............................................................................
Interrupt Run Status Register (MIRUN) ................................................................................
Interrupt Force Register (MIFRC).......................................................................................
Interrupt Flag Clear Register (MICLR) .................................................................................
Interrupt Overflow Flag Clear Register (MICLROVF) ................................................................
Program Counter (MPC) .................................................................................................
CLA Status Register (MSTF) ............................................................................................
C28x + VCU Block Diagram .............................................................................................
List of Figures
511
512
512
512
513
513
514
516
516
517
517
518
518
519
520
521
521
522
524
524
525
526
527
528
528
529
529
530
530
530
530
534
543
544
546
548
550
551
552
553
555
556
557
558
558
685
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
10-2.
C28x + FPU + VCU Registers .......................................................................................... 689
10-3.
VCU Status Register (VSTATUS) ...................................................................................... 691
10-4.
Repeat Block Register (RB) ............................................................................................. 694
10-5.
C28x + FCU + VCU Pipeline ............................................................................................ 696
11-1.
DMA Block Diagram ...................................................................................................... 810
11-2.
Peripheral Interrupt Trigger Input Diagram ............................................................................ 811
11-3.
4-Stage Pipeline DMA Transfer ......................................................................................... 813
11-4.
4-Stage Pipeline With One Read Stall (McBSP as source) ......................................................... 813
11-5.
DMA State Diagram ...................................................................................................... 819
11-6.
Overrun Detection Logic ................................................................................................. 821
11-7.
DMA Control Register (DMACTRL) .................................................................................... 823
11-8.
Debug Control Register (DEBUGCTRL)
11-9.
Revision Register (REVISION).......................................................................................... 825
..............................................................................
825
11-10. Priority Control Register 1 (PRIORITYCTRL1) ....................................................................... 826
............................................................................
.................................................................................................
Control Register (CONTROL) ..........................................................................................
Burst Size Register (BURST_SIZE) ...................................................................................
Burst Count Register (BURST_COUNT) .............................................................................
Source Burst Step Size Register (SRC_BURST_STEP) ...........................................................
Destination Burst Step Register Size (DST_BURST_STEP) ......................................................
Transfer Size Register (TRANSFER_SIZE) ..........................................................................
Transfer Count Register (TRANSFER_COUNT) ....................................................................
Source Transfer Step Size Register (SRC_TRANSFER_STEP) ..................................................
Destination Transfer Step Size Register (DST_TRANSFER_STEP) .............................................
Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE) ...............................................
Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT) .........................................
Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP) ......................................
11-11. Priority Status Register (PRIORITYSTAT)
827
11-12. Mode Register (MODE)
828
11-13.
11-14.
11-15.
11-16.
11-17.
11-18.
11-19.
11-20.
11-21.
11-22.
11-23.
11-24.
830
832
832
833
834
834
835
835
836
836
837
837
11-25. Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) ..................................................... 838
11-26. Active Source Begin and Current Address Pointer Registers (SRC_BEG_ADDR/DST_BEG_ADDR)
.......
838
11-27. Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) ................................................................... 839
11-28. Active Destination Begin and Current Address Pointer Registers (SRC_ADDR/DST_ADDR) ................. 839
12-1.
SPI CPU Interface ........................................................................................................ 841
12-2.
Serial Peripheral Interface Module Block Diagram ................................................................... 843
12-3.
SPI Master/Slave Connection ........................................................................................... 846
12-4.
SPICLK Signal Options .................................................................................................. 850
12-5.
SPI: SPICLK-CLKOUT Characteristic When (BRR + 1) is Odd, BRR > 3, and CLOCK POLARITY = 1 ..... 850
12-6.
Five Bits per Character................................................................................................... 852
12-7.
SPI FIFO Interrupt Flags and Enable Logic Generation ............................................................. 853
12-8.
SPI 3-wire Master Mode ................................................................................................. 854
12-9.
SPI 3-wire Slave Mode ................................................................................................... 855
12-10. SPI Digital Audio Receiver Configuration Using 2 SPIs ............................................................. 857
12-11. Standard Right-Justified Digital Audio Data Format.................................................................. 857
12-12. CLOCK POLARITY = 0, CLOCK PHASE = 0 (All data transitions are during the rising edge, non-delayed
clock. Inactive level is low.) .............................................................................................. 858
12-13. CLOCK POLARITY = 0, CLOCK PHASE = 1 (All data transitions are during the rising edge, but delayed
by half clock cycle. Inactive level is low.) .............................................................................. 859
12-14. CLOCK POLARITY = 1, CLOCK PHASE = 0 (All data transitions are during the falling edge. Inactive
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
23
www.ti.com
level is high.)
..............................................................................................................
860
12-15. CLOCK POLARITY = 1, CLOCK PHASE = 1 (All data transitions are during the falling edge, but delayed
by half clock cycle. Inactive level is high.) ............................................................................. 861
12-16. SPISTE Behavior in Master Mode (Master lowers SPISTE during the entire 16 bits of transmission.) ....... 862
863
12-18. SPI Configuration Control Register (SPICCR) — Address 7040h
863
12-19.
865
12-20.
12-21.
12-22.
12-23.
12-24.
12-25.
12-26.
12-27.
12-28.
12-29.
13-1.
13-2.
13-3.
13-4.
13-5.
13-6.
13-7.
13-8.
13-9.
13-10.
13-11.
13-12.
13-13.
13-14.
13-15.
13-16.
13-17.
13-18.
13-19.
13-20.
13-21.
13-22.
13-23.
13-24.
14-1.
14-2.
14-3.
14-4.
14-5.
14-6.
14-7.
14-8.
24
...
.................................................
SPI Operation Control Register (SPICTL) — Address 7041h ......................................................
SPI Status Register (SPIST) — Address 7042h ......................................................................
SPI Baud Rate Register (SPIBRR) — Address 7044h ..............................................................
SPI Emulation Buffer Register (SPIRXEMU) — Address 7046h ...................................................
SPI Serial Receive Buffer Register (SPIRXBUF) — Address 7047h ..............................................
SPI Serial Transmit Buffer Register (SPITXBUF) — Address 7048h ..............................................
SPI Serial Data Register (SPIDAT) — Address 7049h ..............................................................
SPI FIFO Transmit (SPIFFTX) Register − Address 704Ah .........................................................
SPI FIFO Receive (SPIFFRX) Register − Address 704Bh ..........................................................
SPI FIFO Control (SPIFFCT) Register − Address 704Ch ...........................................................
SPI Priority Control Register (SPIPRI) — Address 704Fh ..........................................................
SCI CPU Interface ........................................................................................................
Serial Communications Interface (SCI) Module Block Diagram ....................................................
Typical SCI Data Frame Formats .......................................................................................
Idle-Line Multiprocessor Communication Format .....................................................................
Double-Buffered WUT and TXSHF .....................................................................................
Address-Bit Multiprocessor Communication Format .................................................................
SCI Asynchronous Communications Format ..........................................................................
SCI RX Signals in Communication Modes ............................................................................
SCI TX Signals in Communications Mode ............................................................................
SCI FIFO Interrupt Flags and Enable Logic ...........................................................................
SCI Communication Control Register (SCICCR) — Address 7050h ..............................................
SCI Control Register 1 (SCICTL1) — Address 7051h ...............................................................
Baud-Select MSbyte Register (SCIHBAUD) — Address 7052h ....................................................
Baud-Select LSbyte Register (SCILBAUD) — Address 7053h .....................................................
SCI Control Register 2 (SCICTL2) — Address 7054h ...............................................................
SCI Receiver Status Register (SCIRXST) — Address 7055h ......................................................
Register SCIRXST Bit Associations — Address 7055h .............................................................
Emulation Data Buffer Register (SCIRXEMU) — Address 7056h..................................................
SCI Receive Data Buffer Register (SCIRXBUF) — Address 7057h ...............................................
Transmit Data Buffer Register (SCITXBUF) — Address 7059h ....................................................
SCI FIFO Transmit (SCIFFTX) Register — Address 705Ah ........................................................
SCI FIFO Receive (SCIFFRX) Register — Address 705Bh ........................................................
SCI FIFO Control (SCIFFCT) Register — Address 705Ch .........................................................
SCI Priority Control Register (SCIPRI) — Address 705Fh ..........................................................
Multiple I2C Modules Connected .......................................................................................
I2C Module Conceptual Block Diagram................................................................................
Clocking Diagram for the I2C Module ..................................................................................
Bit Transfer on the I2C-Bus .............................................................................................
I2C Module START and STOP Conditions ............................................................................
I2C Module Data Transfer (7-Bit Addressing with 8-bit Data Configuration Shown).............................
I2C Module 7-Bit Addressing Format (FDF = 0, XA = 0 in I2CMDR) ..............................................
I2C Module 10-Bit Addressing Format (FDF = 0, XA = 1 in I2CMDR) ............................................
12-17. SPISTE Behavior in Slave Mode (Slave’s SPISTE is lowered during the entire 16 bits of transmission.)
List of Figures
866
866
867
868
868
869
870
870
871
872
874
875
878
879
880
881
882
882
883
886
889
890
892
892
893
893
895
895
895
896
896
897
898
900
902
904
905
906
907
908
908
908
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
14-9.
I2C Module Free Data Format (FDF = 1 in I2CMDR) ................................................................ 908
14-10. Repeated START Condition (in This Case, 7-Bit Addressing Format) ............................................ 909
14-11. Synchronization of Two I2C Clock Generators During Arbitration
.................................................
910
14-12. Arbitration Procedure Between Two Master-Transmitters........................................................... 911
14-13. Enable Paths of the I2C Interrupt Requests
..........................................................................
912
14-14. I2C Mode Register (I2CMDR) ........................................................................................... 914
14-15. Pin Diagram Showing the Effects of the Digital Loopback Mode (DLB) Bit ....................................... 917
14-16. I2C Extended Mode Register (I2CEMDR) ............................................................................. 917
14-17. BCM Bit, Slave Transmitter Mode ...................................................................................... 918
14-18. I2C Interrupt Enable Register (I2CIER) ................................................................................ 919
14-19. I2C Status Register (I2CSTR)........................................................................................... 920
14-20. I2C Interrupt Source Register (I2CISRC) .............................................................................. 922
14-21. I2C Prescaler Register (I2CPSC) ....................................................................................... 923
14-22. The Roles of the Clock Divide-Down Values (ICCL and ICCH) .................................................... 924
14-23. I2C Clock Low-Time Divider Register (I2CCLKL) .................................................................... 924
14-24. I2C Clock High-Time Divider Register (I2CCLKH) ................................................................... 924
14-25. I2C Slave Address Register (I2CSAR) ................................................................................. 925
14-26. I2C Own Address Register (I2COAR).................................................................................. 925
....................................................................................
I2C Data Receive Register (I2CDRR)..................................................................................
I2C Data Transmit Register (I2CDXR) .................................................................................
I2C Transmit FIFO Register (I2CFFTX) ...............................................................................
I2C Receive FIFO Register (I2CFFRX) ................................................................................
Conceptual Block Diagram of the McBSP .............................................................................
McBSP Data Transfer Paths ............................................................................................
Companding Processes..................................................................................................
μ-Law Transmit Data Companding Format ............................................................................
A-Law Transmit Data Companding Format ...........................................................................
Two Methods by Which the McBSP Can Compand Internal Data .................................................
Example - Clock Signal Control of Bit Transfer Timing ..............................................................
McBSP Operating at Maximum Packet Frequency ..................................................................
Single-Phase Frame for a McBSP Data Transfer ....................................................................
Dual-Phase Frame for a McBSP Data Transfer ......................................................................
Implementing the AC97 Standard With a Dual-Phase Frame ......................................................
Timing of an AC97-Standard Data Transfer Near Frame Synchronization .......................................
McBSP Reception Physical Data Path .................................................................................
McBSP Reception Signal Activity .......................................................................................
McBSP Transmission Physical Data Path .............................................................................
McBSP Transmission Signal Activity ...................................................................................
Conceptual Block Diagram of the Sample Rate Generator .........................................................
Possible Inputs to the Sample Rate Generator and the Polarity Bits ..............................................
CLKG Synchronization and FSG Generation When GSYNC = 1 and CLKGDV = 1 ............................
CLKG Synchronization and FSG Generation When GSYNC = 1 and CLKGDV = 3 ............................
Overrun in the McBSP Receiver ........................................................................................
Overrun Prevented in the McBSP Receiver ...........................................................................
Possible Responses to Receive Frame-Synchronization Pulses...................................................
An Unexpected Frame-Synchronization Pulse During a McBSP Reception ......................................
Proper Positioning of Frame-Synchronization Pulses................................................................
Data in the McBSP Transmitter Overwritten and Thus Not Transmitted ..........................................
14-27. I2C Data Count Register (I2CCNT)
926
14-28.
926
14-29.
14-30.
14-31.
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.
15-15.
15-16.
15-17.
15-18.
15-19.
15-20.
15-21.
15-22.
15-23.
15-24.
15-25.
15-26.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
927
927
928
933
934
935
935
935
936
936
938
939
939
940
940
941
941
942
942
944
946
948
949
951
952
952
953
954
954
25
www.ti.com
15-27. Underflow During McBSP Transmission ............................................................................... 955
15-28. Underflow Prevented in the McBSP Transmitter ..................................................................... 956
15-29. Possible Responses to Transmit Frame-Synchronization Pulses .................................................. 956
15-30. An Unexpected Frame-Synchronization Pulse During a McBSP Transmission .................................. 957
15-31. Proper Positioning of Frame-Synchronization Pulses................................................................ 958
.............................. 960
Reassigning Channel Blocks Throughout a McBSP Data Transfer ................................................ 961
McBSP Data Transfer in the 8-Partition Mode ........................................................................ 962
Activity on McBSP Pins for the Possible Values of XMCM ......................................................... 965
Typical SPI Interface ..................................................................................................... 966
SPI Transfer With CLKSTP = 10b (No Clock Delay), CLKXP = 0, and CLKRP = 0 ............................. 968
SPI Transfer With CLKSTP = 11b (Clock Delay), CLKXP = 0, CLKRP = 1 ...................................... 968
SPI Transfer With CLKSTP = 10b (No Clock Delay), CLKXP = 1, and CLKRP = 0 ............................. 968
SPI Transfer With CLKSTP = 11b (Clock Delay), CLKXP = 1, CLKRP = 1 ...................................... 968
SPI Interface with McBSP Used as Master ........................................................................... 970
SPI Interface With McBSP Used as Slave ............................................................................ 971
Unexpected Frame-Synchronization Pulse With (R/X)FIG = 0 ..................................................... 978
Unexpected Frame-Synchronization Pulse With (R/X)FIG = 1 ..................................................... 978
Companding Processes for Reception and for Transmission ...................................................... 979
Range of Programmable Data Delay................................................................................... 980
2-Bit Data Delay Used to Skip a Framing Bit ......................................................................... 981
Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a Falling Edge .... 985
Frame of Period 16 CLKG Periods and Active Width of 2 CLKG Periods ........................................ 986
Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a Falling Edge .... 988
Unexpected Frame-Synchronization Pulse With (R/X) FIG = 0 .................................................... 998
Unexpected Frame-Synchronization Pulse With (R/X) FIG = 1 .................................................... 998
Companding Processes for Reception and for Transmission....................................................... 999
μ-Law Transmit Data Companding Format ............................................................................ 999
A-Law Transmit Data Companding Format .......................................................................... 1000
Range of Programmable Data Delay ................................................................................. 1001
2-Bit Data Delay Used to Skip a Framing Bit ........................................................................ 1001
Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a Falling Edge .. 1005
Frame of Period 16 CLKG Periods and Active Width of 2 CLKG Periods ....................................... 1005
Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a Falling Edge .. 1007
Four 8-Bit Data Words Transferred To/From the McBSP .......................................................... 1011
One 32-Bit Data Word Transferred To/From the McBSP .......................................................... 1011
8-Bit Data Words Transferred at Maximum Packet Frequency ................................................... 1012
Configuring the Data Stream of as a Continuous 32-Bit Word .................................................... 1012
Data Receive Registers (DRR2 and DRR1) ......................................................................... 1014
Data Transmit Registers (DXR2 and DXR1) ........................................................................ 1014
Serial Port Control 1 Register (SPCR1) ............................................................................. 1015
Serial Port Control 2 Register (SPCR2) ............................................................................. 1018
Receive Control Register 1 (RCR1) .................................................................................. 1020
Receive Control Register 2 (RCR2) .................................................................................. 1021
Transmit Control 1 Register (XCR1) .................................................................................. 1023
Transmit Control 2 Register (XCR2) ................................................................................. 1024
Sample Rate Generator 1 Register (SRGR1) ....................................................................... 1026
Sample Rate Generator 2 Register (SRGR2) ....................................................................... 1026
Multichannel Control 1 Register (MCR1) ............................................................................ 1028
15-32. Alternating Between the Channels of Partition A and the Channels of Partition B
15-33.
15-34.
15-35.
15-36.
15-37.
15-38.
15-39.
15-40.
15-41.
15-42.
15-43.
15-44.
15-45.
15-46.
15-47.
15-48.
15-49.
15-50.
15-51.
15-52.
15-53.
15-54.
15-55.
15-56.
15-57.
15-58.
15-59.
15-60.
15-61.
15-62.
15-63.
15-64.
15-65.
15-66.
15-67.
15-68.
15-69.
15-70.
15-71.
15-72.
15-73.
15-74.
15-75.
26
List of Figures
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
15-76. Multichannel Control 2 Register (MCR2) ............................................................................. 1030
15-77. Pin Control Register (PCR)
...........................................................................................
1032
15-78. Receive Channel Enable Registers (RCERA...RCERH) ........................................................... 1034
..........................................................
Receive Interrupt Generation ..........................................................................................
Transmit Interrupt Generation .........................................................................................
McBSP Interrupt Enable Register (MFFINT) ........................................................................
eCAN Block Diagram and Interface Circuit ..........................................................................
CAN Data Frame ........................................................................................................
Architecture of the eCAN Module .....................................................................................
eCAN-A Memory Map ..................................................................................................
Mailbox-Enable Register (CANME) ...................................................................................
Mailbox-Direction Register (CANMD).................................................................................
Transmission-Request Set Register (CANTRS) ....................................................................
Transmission-Request-Reset Register (CANTRR) .................................................................
Transmission-Acknowledge Register (CANTA) .....................................................................
Abort-Acknowledge Register (CANAA) ...............................................................................
Received-Message-Pending Register (CANRMP) ..................................................................
Received-Message-Lost Register (CANRML) .......................................................................
Remote-Frame-Pending Register (CANRFP) .......................................................................
Global Acceptance Mask Register (CANGAM)......................................................................
Master Control Register (CANMC) ....................................................................................
Bit-Timing Configuration Register (CANBTC) .......................................................................
Error and Status Register (CANES) ..................................................................................
Transmit-Error-Counter Register (CANTEC) ........................................................................
Receive-Error-Counter Register (CANREC) .........................................................................
Global Interrupt Flag 0 Register (CANGIF0) .........................................................................
Global Interrupt Flag 1 Register (CANGIF1) .........................................................................
Global Interrupt Mask Register (CANGIM) ...........................................................................
Mailbox Interrupt Mask Register (CANMIM) .........................................................................
Mailbox Interrupt Level Register (CANMIL) ..........................................................................
Overwrite Protection Control Register (CANOPC) ..................................................................
TX I/O Control Register (CANTIOC) ..................................................................................
RX I/O Control Register (CANRIOC) .................................................................................
Time-Stamp Counter Register (CANTSC) ...........................................................................
Message Object Time Stamp Registers (MOTS) ...................................................................
Message-Object Time-Out Registers (MOTO) ......................................................................
Time-Out Control Register (CANTOC) ...............................................................................
Time-Out Status Register (CANTOS) ................................................................................
Message Identifier Register (MSGID) Register......................................................................
Message-Control Register (MSGCTRL)..............................................................................
Message-Data-Low Register With DBO = 0 (CANMDL) ...........................................................
Message-Data-High Register With DBO = 0 (CANMDH) ..........................................................
Message-Data-Low Register With DBO = 1 (CANMDL) ...........................................................
Message-Data-High Register With DBO = 1 (CANMDH) ..........................................................
Local-Acceptance-Mask Register (LAMn) ...........................................................................
Initialization Sequence ..................................................................................................
CAN Bit Timing ..........................................................................................................
Interrupts Scheme .......................................................................................................
15-79. Transmit Channel Enable Registers (XCERA...XCERH)
1036
15-80.
1038
15-81.
15-82.
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.
16-23.
16-24.
16-25.
16-26.
16-27.
16-28.
16-29.
16-30.
16-31.
16-32.
16-33.
16-34.
16-35.
16-36.
16-37.
16-38.
16-39.
16-40.
16-41.
16-42.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
1039
1040
1044
1045
1046
1049
1055
1056
1057
1058
1059
1060
1061
1062
1063
1065
1066
1069
1071
1073
1073
1075
1075
1077
1079
1080
1081
1082
1083
1085
1086
1087
1088
1089
1090
1092
1093
1093
1093
1093
1095
1096
1097
1104
27
www.ti.com
17-1.
USB Block Diagram ..................................................................................................... 1111
17-2.
USB Scheme............................................................................................................. 1113
17-3.
Function Address Register (USBFADDR)
17-4.
Power Management Register (USBPOWER) in Host Mode....................................................... 1130
17-5.
Power Management Register (USBPOWER) in Device Mode .................................................... 1130
17-6.
USB Transmit Interrupt Status Register (USBTXIS) ................................................................ 1132
17-7.
USB Receive Interrupt Status Register (USBRXIS) ................................................................ 1133
17-8.
USB Transmit Interrupt Status Enable Register (USBTXIE)
17-9.
USB Receive Interrupt Enable Register (USBRXIE) ............................................................... 1135
...........................................................................
......................................................
1129
1134
17-10. USB General Interrupt Status Register (USBIS) in Host Mode ................................................... 1136
................................................
USB Interrupt Enable Register (USBIE) in Host Mode .............................................................
USB Interrupt Enable Register (USBIE) in Device Mode ..........................................................
Frame Number Register (FRAME) ....................................................................................
USB Endpoint Index Register (USBEPIDX) .........................................................................
USB Test Mode Register (USBTEST) in Host Mode ...............................................................
USB Test Mode Register (USBTEST) in Device Mode ............................................................
USB FIFO Endpoint n Register (USBFIFO[n]) ......................................................................
USB Device Control Register (USBDEVCTL) .......................................................................
USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ) .................................................
USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ) ..................................................
USB Transmit FIFO Start Address Register (USBTXFIFOADDR]) ...............................................
USB Receive FIFO Start Address Register (USBRXFIFOADDR) ................................................
USB Connect Timing Register (USBCONTIM) ......................................................................
USB Full-Speed Last Transaction to End of Frame Timing Register (USBFSEOF) ...........................
USB Low-Speed Last Transaction to End of Frame Timing Register (USBLSEOF) ...........................
USB Transmit Functional Address Endpoint n Registers (USBTXFUNCADDR[n]) ............................
USB Transmit Hub Address Endpoint n Registers (USBTXHUBADDR[n])......................................
USB Transmit Hub Port Endpoint n Registers (USBTXHUBPORT[n]) ...........................................
USB Receive Functional Address Endpoint n Registers (USBFIFO[n]) .........................................
USB Receive Hub Address Endpoint n Registers (USBRXHUBADDR[n]) ......................................
USB Transmit Hub Port Endpoint n Registers (USBRXHUBPORT[n]) ..........................................
USB Maximum Transmit Data Endpoint n Registers (USBTXMAXP[n]) .........................................
USB Control and Status Endpoint 0 Low Register (USBCSRL0) in Host Mode ................................
USB Control and Status Endpoint 0 Low Register (USBCSRL0) in Device Mode .............................
USB Control and Status Endpoint 0 High Register (USBCSRH0) in Host Mode ...............................
USB Control and Status Endpoint 0 High Register (USBCSRH0) in Device Mode ............................
USB Receive Byte Count Endpoint 0 Register (USBCOUNT0)...................................................
USB Type Endpoint 0 Register (USBTYPE0) .......................................................................
USB NAK Limit Register (USBNAKLMT) ............................................................................
USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n]) in Host Mode ................
USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n]) in Device Mode .............
USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n]) in Host Mode ...............
USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n]) in Device Mode ............
USB Maximum Receive Data Endpoint n Registers (USBRXMAXP[n]) .........................................
USB Receive Control and Status Endpoint n Low Register (USBCSRL[n]) in Host Mode ....................
USB Control and Status Endpoint n Low Register (USBCSRL[n]) in Device Mode ............................
USB Receive Control and Status Endpoint n High Register (USBCSRH[n]) in Host Mode ...................
USB Control and Status Endpoint n High Register (USBCSRH[n]) in Device Mode ...........................
17-11. USB General Interrupt Status Register (USBIS) in Device Mode
17-12.
17-13.
17-14.
17-15.
17-16.
17-17.
17-18.
17-19.
17-20.
17-21.
17-22.
17-23.
17-24.
17-25.
17-26.
17-27.
17-28.
17-29.
17-30.
17-31.
17-32.
17-33.
17-34.
17-35.
17-36.
17-37.
17-38.
17-39.
17-40.
17-41.
17-42.
17-43.
17-44.
17-45.
17-46.
17-47.
17-48.
17-49.
28
List of Figures
1137
1138
1139
1140
1140
1141
1141
1143
1144
1146
1147
1148
1149
1150
1151
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1161
1162
1162
1163
1164
1165
1167
1168
1169
1170
1171
1173
1174
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
17-50. USB Maximum Receive Data Endpoint n Registers (USBRXCOUNT[n]) ....................................... 1175
17-51. USB Host Transmit Configure Type Endpoint n Register (USBTXTYPE[n]) .................................... 1176
.......................................
....................................
USB Host Receive Polling Interval Endpoint n Register (USBRXINTERVAL[n]) ...............................
USB Request Packet Count in Block Transfer Endpoint n Registers (USBRQPKTCOUNT[n]) ..............
USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS) .................................
USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS) ................................
USB External Power Control Register (USBEPC) ..................................................................
USB External Power Control Raw Interrupt Status Register (USBEPCRIS) ....................................
USB External Power Control Interrupt Mask Register (USBEPCIM) .............................................
USB External Power Control Interrupt Status and Clear Register (USBEPCISC) ..............................
USB Device RESUME Raw Interrupt Status Register (USBDRRIS) .............................................
USB Device RESUME Raw Interrupt Status Register (USBDRRIS) .............................................
USB Device RESUME Interrupt Status and Clear Register (USBDRISC).......................................
USB General-Purpose Control and Status Register (USBGPCS) ................................................
USB DMA Select Register (USBDMASEL) ..........................................................................
17-52. USB Host Transmit Interval Endpoint n Register (USBTXINTERVAL[n])
1177
17-53. USB Host Configure Receive Type Endpoint n Register (USBRXTYPE[n])
1178
17-54.
1179
17-55.
17-56.
17-57.
17-58.
17-59.
17-60.
17-61.
17-62.
17-63.
17-64.
17-65.
17-66.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Figures
1180
1181
1182
1183
1185
1186
1187
1188
1189
1190
1191
1192
29
www.ti.com
List of Tables
1-1.
Flash/OTP Configuration Registers ...................................................................................... 53
1-2.
Flash Options Register (FOPT) Field Descriptions .................................................................... 54
1-3.
Flash Power Register (FPWR) Field Descriptions ..................................................................... 54
1-4.
Flash Status Register (FSTATUS) Field Descriptions ................................................................. 55
1-5.
Flash Standby Wait Register (FSTDBYWAIT) Field Descriptions ................................................... 56
1-6.
Flash Standby to Active Wait Counter Register (FACTIVEWAIT) Field Descriptions ............................. 56
1-7.
Flash Wait-State Register (FBANKWAIT) Field Descriptions ........................................................ 57
1-8.
OTP Wait-State Register (FOTPWAIT) Field Descriptions ........................................................... 58
1-9.
Security Levels
1-10.
Resources Affected by the CSM ......................................................................................... 61
1-11.
Resources Not Affected by the CSM .................................................................................... 61
1-12.
Code Security Module (CSM) Registers ................................................................................ 62
1-13.
CSM Status and Control Register (CSMSCR) Field Descriptions ................................................... 63
1-14.
PLL, Clocking, Watchdog, and Low-Power Mode Registers ......................................................... 70
1-15.
Peripheral Clock Control 0 Register (PCLKCR0) Field Descriptions ................................................ 71
1-16.
Peripheral Clock Control 1 Register (PCLKCR1) Field Descriptions
1-17.
Peripheral Clock Control 2 Register (PCLKCR2) Field Descriptions ................................................ 73
1-18.
Peripheral Clock Control 3 Register (PCLKCR3) Field Descriptions ................................................ 74
1-19.
Low-Speed Peripheral Clock Prescaler Register (LOSPCP) Field Descriptions................................... 75
1-20.
Internal Oscillator Trim (INTOSCnTRIM) Register Field Descriptions
1-21.
1-22.
1-23.
1-24.
1-25.
1-26.
1-27.
1-28.
1-29.
1-30.
1-31.
1-32.
1-33.
1-34.
1-35.
1-36.
1-37.
1-38.
1-39.
1-40.
1-41.
1-42.
1-43.
1-44.
1-45.
1-46.
1-47.
30
.............................................................................................................
...............................................
59
72
.............................................. 77
Clocking (XCLK) Field Descriptions ..................................................................................... 78
Clock Control (CLKCTL) Register Field Descriptions ................................................................. 78
Possible PLL Configuration Modes ...................................................................................... 81
PLL Settings ................................................................................................................ 84
PLL Status Register (PLLSTS) Field Descriptions ..................................................................... 85
PLL Lock Period (PLLLOCKPRD) Register Field Descriptions ...................................................... 86
PLL2 Configuration (PLL2CTL) Register Field Descriptions ......................................................... 87
PLL2 Multiplier (PLL2MULT) Register Field Descriptions ............................................................ 88
PLL2 Lock Status (PLL2STS) Register Field Descriptions ........................................................... 88
SYSCLK2 Clock Counter (SYSCLK2CNTR) Register Field Descriptions .......................................... 88
EPWM DMA/CLA Configuration (EPWMCFG) Register Field Descriptions ........................................ 89
NMI Interrupt Registers .................................................................................................... 94
NMI Configuration (NMICFG) Register Bit Definitions (EALLOW) ................................................... 95
NMI Flag (NMIFLG) Register Bit Definitions (EALLOW Protected).................................................. 95
NMI Flag Clear (NMIFLGCLR) Register Bit Definitions (EALLOW Protected) ..................................... 96
NMI Flag Force (NMIFLGFRC) Register Bit Definitions (EALLOW Protected) .................................... 97
NMI Watchdog Counter (NMIWDCNT) Register Bit Definitions ...................................................... 97
NMI Watchdog Period (NMIWDPRD) Register Bit Definitions (EALLOW Protected) ............................. 97
Low-Power Mode Summary ............................................................................................. 100
Low Power Modes ........................................................................................................ 100
Low-Power Mode Control 0 Register (LPMCR0) Field Descriptions ............................................... 101
Example Watchdog Key Sequences ................................................................................... 103
System Control and Status Register (SCSR) Field Descriptions ................................................... 105
Watchdog Counter Register (WDCNTR) Field Descriptions ........................................................ 106
Watchdog Reset Key Register (WDKEY) Field Descriptions ....................................................... 106
Watchdog Control Register (WDCR) Field Descriptions ............................................................ 106
CPU-Timers 0, 1, 2 Configuration and Control Registers ........................................................... 109
List of Tables
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
1-48.
TIMERxTIM Register Field Descriptions ............................................................................... 109
1-49.
TIMERxTIMH Register Field Descriptions ............................................................................. 110
1-50.
TIMERxPRD Register Field Descriptions .............................................................................. 110
1-51.
TIMERxPRDH Register Field Descriptions ............................................................................ 110
1-52.
TIMERxTCR Register Field Descriptions .............................................................................. 110
1-53.
TIMERxTPR Register Field Descriptions .............................................................................. 111
1-54.
TIMERxTPRH Register Field Descriptions ............................................................................ 112
1-55.
JTAGDEBUG Register Field Descriptions ............................................................................. 117
1-56.
GPIO Control Registers .................................................................................................. 119
1-57.
GPIO Interrupt and Low Power Mode Select Registers ............................................................. 119
1-58.
GPIO Data Registers ..................................................................................................... 121
1-59.
Sampling Period
1-60.
Sampling Frequency
1-61.
1-62.
1-63.
1-64.
1-65.
1-66.
1-67.
1-68.
1-69.
1-70.
1-71.
1-72.
1-73.
1-74.
1-75.
1-76.
1-77.
1-78.
1-79.
1-80.
1-81.
1-82.
1-83.
1-84.
1-85.
1-86.
1-87.
1-88.
1-89.
1-90.
1-91.
1-92.
1-93.
1-94.
1-95.
1-96.
..........................................................................................................
.....................................................................................................
Case 1: Three-Sample Sampling Window Width .....................................................................
Case 2: Six-Sample Sampling Window Width ........................................................................
Default State of Peripheral Input ........................................................................................
GPIOA MUX ..............................................................................................................
GPIOB MUX ..............................................................................................................
Analog MUX ...............................................................................................................
GPIO Port A Multiplexing 1 (GPAMUX1) Register Field Descriptions .............................................
GPIO Port A MUX 2 (GPAMUX2) Register Field Descriptions .....................................................
GPIO Port B MUX 1 (GPBMUX1) Register Field Descriptions .....................................................
GPIO Port B MUX 2 (GPBMUX2) Register Field Descriptions .....................................................
Analog I/O MUX (AIOMUX1) Register Field Descriptions ...........................................................
GPIO Port A Qualification Control (GPACTRL) Register Field Descriptions .....................................
GPIO Port B Qualification Control (GPBCTRL) Register Field Descriptions .....................................
(GPACTRL2) Register Field Descriptions .............................................................................
GPIO Port A Qualification Select 1 (GPAQSEL1) Register Field Descriptions ...................................
GPIO Port A Qualification Select 2 (GPAQSEL2) Register Field Descriptions ...................................
GPIO Port B Qualification Select 1 (GPBQSEL1) Register Field Descriptions ...................................
GPIO Port B Qualification Select 2 (GPBQSEL2) Register Field Descriptions ...................................
GPIO Port A Direction (GPADIR) Register Field Descriptions ......................................................
GPIO Port B Direction (GPBDIR) Register Field Descriptions ......................................................
Analog I/O DIR (AIODIR) Register Field Descriptions ...............................................................
GPIO Port A Internal Pullup Disable (GPAPUD) Register Field Descriptions ....................................
GPIO Port B Internal Pullup Disable (GPBPUD) Register Field Descriptions ....................................
GPIO Port A Data (GPADAT) Register Field Descriptions ..........................................................
GPIO Port B Data (GPBDAT) Register Field Descriptions ..........................................................
Analog I/O DAT (AIODAT) Register Field Descriptions .............................................................
GPIO Port A Set (GPASET) Register Field Descriptions............................................................
GPIO Port A Clear (GPACLEAR) Register Field Descriptions .....................................................
GPIO Port A Toggle (GPATOGGLE) Register Field Descriptions .................................................
GPIO Port B Set (GPBSET) Register Field Descriptions............................................................
GPIO Port B Clear (GPBCLEAR) Register Field Descriptions .....................................................
GPIO Port B Toggle (GPBTOGGLE) Register Field Descriptions .................................................
Analog I/O Set (AIOSET) Register Field Descriptions ...............................................................
Analog I/O Clear (AIOCLEAR) Register Field Descriptions .........................................................
Analog I/O Toggle (AIOTOGGLE) Register Field Descriptions .....................................................
GPIO XINTn Interrupt Select (GPIOXINTnSEL) Register Field Descriptions .....................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
124
124
124
125
128
129
130
131
131
133
136
137
139
139
141
142
143
144
145
146
146
147
148
148
149
150
151
152
152
152
153
153
153
154
154
155
155
155
31
www.ti.com
1-97.
XINT1/XINT2/XINT3 Interrupt Select and Configuration Registers ................................................ 155
1-98.
GPIO Low Power Mode Wakeup Select (GPIOLPMSEL) Register Field Descriptions.......................... 156
1-99.
Peripheral Frame 0 Registers ........................................................................................... 157
1-100. Peripheral Frame 1 Registers ........................................................................................... 158
1-101. Peripheral Frame 2 Registers ........................................................................................... 158
1-102. Peripheral Frame 3 Registers ........................................................................................... 158
1-103. Access to EALLOW-Protected Registers .............................................................................. 159
1-104. EALLOW-Protected Device Emulation Registers..................................................................... 159
1-105. EALLOW-Protected Flash/OTP Configuration Registers ............................................................ 159
1-106. EALLOW-Protected Code Security Module (CSM) Registers ...................................................... 160
1-107. EALLOW-Protected PLL, Clocking, Watchdog, and Low-Power Mode Registers ............................... 160
1-108. EALLOW-Protected GPIO Registers ................................................................................... 161
1-109. EALLOW-Protected PIE Vector Table ................................................................................. 162
1-110. EALLOW-Protected ePWM1 - ePWM 7 Registers ................................................................... 162
1-111. Device Emulation Registers ............................................................................................. 163
1-112. DEVICECNF Register Field Descriptions.............................................................................. 163
1-113. PARTID Register Field Descriptions ................................................................................... 164
1-114. CLASSID Register Field Descriptions.................................................................................. 165
1-115. REVID Register Field Descriptions ..................................................................................... 165
1-116. Enabling Interrupt ......................................................................................................... 169
170
1-118.
170
1-119.
1-120.
1-121.
1-122.
1-123.
1-124.
1-125.
1-126.
1-127.
1-128.
1-129.
1-130.
1-131.
1-132.
2-1.
2-2.
2-3.
2-4.
2-5.
2-6.
2-7.
2-8.
2-9.
2-10.
2-11.
2-12.
2-13.
32
........................................................................................
Vector Table Mapping After Reset Operation ........................................................................
PIE MUXed Peripheral Interrupt Vector Table ........................................................................
PIE Vector Table ..........................................................................................................
PIE Configuration and Control Registers ..............................................................................
PIECTRL Register Address Field Descriptions .......................................................................
PIE Interrupt Acknowledge Register (PIEACK) Field Descriptions.................................................
PIEIFRx Register Field Descriptions ...................................................................................
PIEIERx Register (x = 1 to 12) Field Descriptions ...................................................................
Interrupt Flag Register (IFR) — CPU Register Field Descriptions .................................................
Interrupt Enable Register (IER) — CPU Register Field Descriptions ..............................................
Debug Interrupt Enable Register (DBGIER) — CPU Register Field Descriptions ...............................
Interrupt Control and Counter Registers (not EALLOW Protected) ................................................
External Interrupt n Control Register (XINTnCR) Field Descriptions ..............................................
External Interrupt n Counter (XINTnCTR) Field Descriptions .......................................................
BOR Configuration (BORCFG) Field Descriptions ...................................................................
Vector Locations ..........................................................................................................
Configuration for Device Modes ........................................................................................
PIE Vector SARAM Locations Used by the Boot ROM ..............................................................
Boot Mode Selection .....................................................................................................
Valid EMU_KEY and EMU_BMODE Values ..........................................................................
OTP Values for GetMode ................................................................................................
Emulation Boot modes (TRST = 1) .....................................................................................
Stand-Alone Boot Modes with (TRST = 0) ............................................................................
General Structure Of Source Program Data Stream In 16-Bit Mode .............................................
LSB/MSB Loading Sequence in 8-Bit Data Stream ..................................................................
Parallel GPIO Boot 8-Bit Data Stream .................................................................................
SPI 8-Bit Data Stream ...................................................................................................
I2C 8-Bit Data Stream ...................................................................................................
1-117. Interrupt Vector Table Mapping
List of Tables
176
177
181
182
182
183
184
185
187
188
190
190
191
193
201
203
205
205
207
209
210
210
213
215
224
228
233
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
2-14.
Bit-Rate Value for Internal Oscillators .................................................................................. 234
2-15.
eCAN 8-Bit Data Stream ................................................................................................. 235
2-16.
CPU Register Restored Values ......................................................................................... 237
2-17.
Boot Loader Options
2-18.
3-1.
3-2.
3-3.
3-4.
3-5.
3-6.
3-7.
3-8.
3-9.
3-10.
3-11.
3-12.
3-13.
3-14.
3-15.
3-16.
3-17.
3-18.
3-19.
3-20.
3-21.
3-22.
3-23.
3-24.
3-25.
3-26.
3-27.
3-28.
3-29.
3-30.
3-31.
3-32.
3-33.
3-34.
3-35.
3-36.
3-37.
3-38.
3-39.
3-40.
3-41.
3-42.
3-43.
3-44.
.....................................................................................................
Bootloader Revision and Checksum Information .....................................................................
ePWM Module Control and Status Register Set Grouped by Submodule ........................................
Submodule Configuration Parameters .................................................................................
Time-Base Submodule Registers.......................................................................................
Key Time-Base Signals ..................................................................................................
Counter-Compare Submodule Registers .............................................................................
Counter-Compare Submodule Key Signals ...........................................................................
Action-Qualifier Submodule Registers .................................................................................
Action-Qualifier Submodule Possible Input Events ..................................................................
Action-Qualifier Event Priority for Up-Down-Count Mode ...........................................................
Action-Qualifier Event Priority for Up-Count Mode ...................................................................
Action-Qualifier Event Priority for Down-Count Mode ................................................................
Behavior if CMPA/CMPB is Greater than the Period ................................................................
Dead-Band Generator Submodule Registers .........................................................................
Classical Dead-Band Operating Modes ...............................................................................
Dead-Band Delay Values in μS as a Function of DBFED and DBRED ..........................................
PWM-Chopper Submodule Registers ..................................................................................
Possible Pulse Width Values for SYSCLKOUT = 90 MHz ..........................................................
Trip-Zone Submodule Registers ........................................................................................
Possible Actions On a Trip Event.......................................................................................
Event-Trigger Submodule Registers ..................................................................................
Digital Compare Submodule Registers ................................................................................
Time-Base Period Register (TBPRD) Field Descriptions ............................................................
Time Base Period High Resolution Register (TBPRDHR) Field Descriptions ....................................
Time Base Period Mirror Register (TBPRDM) Field Descriptions ..................................................
Time-Base Period High Resolution Mirror Register (TBPRDHRM) Field Descriptions ..........................
Time-Base Phase Register (TBPHS) Field Descriptions ............................................................
Time-Base Phase High Resolution Register (TBPHSHR) Field Descriptions ....................................
Time-Base Counter Register (TBCTR) Field Descriptions ..........................................................
Time-Base Control Register (TBCTL) Field Descriptions ...........................................................
Time-Base Status Register (TBSTS) Field Descriptions ............................................................
EPWM DMA/CLA Configuration (EPWMCFG) Register Field Descriptions ......................................
High Resolution Period Control Register (HRPCTL) Field Descriptions ..........................................
Counter-Compare A Register (CMPA) Field Descriptions...........................................................
Counter-Compare B Register (CMPB) Field Descriptions...........................................................
Counter-Compare Control Register (CMPCTL) Field Descriptions ................................................
Compare A High Resolution Register (CMPAHR) Field Descriptions .............................................
Counter-Compare A Mirror Register (CMPAM) Field Descriptions ................................................
Compare A High-Resolution Mirror Register (CMPAHRM) Field Descriptions ...................................
Action-Qualifier Output A Control Register (AQCTLA) Field Descriptions .......................................
Action-Qualifier Output B Control Register (AQCTLB) Field Descriptions .......................................
Action-Qualifier Software Force Register (AQSFRC) Field Descriptions ..........................................
Action-qualifier Continuous Software Force Register (AQCSFRC) Field Descriptions ..........................
Dead-Band Generator Control Register (DBCTL) Field Descriptions..............................................
Dead-Band Generator Rising Edge Delay Register (DBRED) Field Descriptions ...............................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
238
242
248
250
253
254
264
265
270
271
273
273
273
273
284
286
288
289
291
294
296
300
303
336
336
337
337
337
338
338
338
341
341
342
343
344
345
346
346
347
347
348
349
350
351
352
33
www.ti.com
3-45.
Dead-Band Generator Falling Edge Delay Register (DBFED) Field Descriptions ............................... 352
3-46.
PWM-Chopper Control Register (PCCTL) Bit Descriptions
353
3-47.
Trip-Zone Submodule Select Register (TZSEL) Field Descriptions
355
3-48.
3-49.
3-50.
3-51.
3-52.
3-53.
3-54.
3-55.
3-56.
3-57.
3-58.
3-59.
3-60.
3-61.
3-62.
3-63.
3-64.
3-65.
3-66.
3-67.
4-1.
4-2.
4-3.
4-4.
4-5.
4-6.
4-7.
4-8.
4-9.
4-10.
4-11.
4-12.
4-13.
4-14.
4-15.
4-16.
5-1.
5-2.
5-3.
5-4.
5-5.
5-6.
5-7.
5-8.
5-9.
5-10.
34
........................................................
...............................................
Trip-Zone Control Register Field Descriptions ........................................................................
Trip-Zone Enable Interrupt Register (TZEINT) Field Descriptions .................................................
Trip-Zone Flag Register Field Descriptions ...........................................................................
Trip-Zone Force Register (TZFRC) Field Descriptions ..............................................................
Trip Zone Digital Compare Event Select Register (TZDCSEL) Field Descriptions ..............................
Digital Compare Trip Select (DCTRIPSEL) Field Descriptions .....................................................
Digital Compare A Control Register (DCACTL) Field Descriptions ................................................
Digital Compare B Control Register (DCBCTL) Field Descriptions ................................................
Digital Compare Filter Control Register (DCFCTL) Field Descriptions ............................................
Digital Compare Capture Control Register (DCCAPCTL) Field Descriptions .....................................
Digital Compare Counter Capture Register (DCCAP) Field Descriptions .........................................
Digital Compare Filter Offset Register (DCFOFFSET) Field Descriptions ........................................
Digital Compare Filter Offset Counter Register (DCFOFFSETCNT) Field Descriptions ........................
Digital Compare Filter Window Register (DCFWINDOW) Field Descriptions.....................................
Digital Compare Filter Window Counter Register (DCFWINDOWCNT) Field Descriptions.....................
Event-Trigger Selection Register (ETSEL) Field Descriptions .....................................................
Event-Trigger Prescale Register (ETPS) Field Descriptions .......................................................
Event-Trigger Flag Register (ETFLG) Field Descriptions ...........................................................
Event-Trigger Clear Register (ETCLR) Field Descriptions ..........................................................
Event-Trigger Force Register (ETFRC) Field Descriptions .........................................................
Resolution for PWM and HRPWM......................................................................................
HRPWM Registers........................................................................................................
Relationship Between MEP Steps, PWM Frequency and Resolution .............................................
CMPA vs Duty (left), and [CMPA:CMPAHR] vs Duty (right) ........................................................
Duty Cycle Range Limitation for 3 SYSCLK/TBCLK Cycles ........................................................
Register Descriptions.....................................................................................................
HRPWM Configuration Register (HRCNFG) Field Descriptions ....................................................
Counter Compare A High Resolution Register (CMPAHR) Field Descriptions ...................................
TB Phase High Resolution Register (TBPHSHR) Field Descriptions ..............................................
Time Base Period High-Resolution Register (TBPRDHR) Field Descriptions ....................................
Compare A High-Resolution Mirror Register (CMPAHRM) Field Descriptions ...................................
Time-Base Period High-Resolution Mirror Register (TBPRDHRM) Field Descriptions ..........................
High Resolution Period Control Register (HRPCTL) Field Descriptions ..........................................
High Resolution Micro Step Register (HRMSTEP) Field Descriptions ............................................
SFO Library Features ....................................................................................................
Factor Values..............................................................................................................
HRCAP Register Summary ..............................................................................................
HRCAP Control Register (HCCTL) Field Descriptions...............................................................
HRCAP Interrupt Flag Register (HCIFR) Field Descriptions ........................................................
HRCAP Interrupt Clear Register (HCICLR) Field Descriptions .....................................................
HRCAP Interrupt Force Register (HCIFRC) Field Descriptions ....................................................
HRCAP Counter Register (HCCOUNTER) Field Descriptions .....................................................
HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0) Field Descriptions ...............
HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1) Field Descriptions ...............
HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0) Field Descriptions ...............
HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1) Field Descriptions ...............
List of Tables
356
357
358
359
360
361
362
363
363
364
365
365
365
366
366
367
368
369
370
370
375
376
380
382
385
396
397
398
398
398
399
399
400
400
401
402
412
412
413
414
415
415
416
416
416
417
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
6-1.
6-2.
6-3.
6-4.
6-5.
6-6.
6-7.
6-8.
6-9.
6-10.
6-11.
6-12.
6-13.
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.
7-19.
7-20.
7-21.
7-22.
7-23.
7-24.
7-25.
7-26.
8-1.
8-2.
8-3.
8-4.
8-5.
8-6.
8-7.
8-8.
8-9.
8-10.
........................................................
Counter Phase Control Register (CTRPHS) Field Descriptions ....................................................
Capture-1 Register (CAP1) Field Descriptions .......................................................................
Capture-2 Register (CAP2) Field Descriptions .......................................................................
Capture-3 Register (CAP3) Field Descriptions .......................................................................
Capture-4 Register (CAP4) Field Descriptions .......................................................................
ECAP Control Register 1 (ECCTL1) Field Descriptions .............................................................
ECAP Control Register 2 (ECCTL2) Field Descriptions .............................................................
ECAP Interrupt Enable Register (ECEINT) Field Descriptions .....................................................
ECAP Interrupt Flag Register (ECFLG) Field Descriptions .........................................................
ECAP Interrupt Clear Register (ECCLR) Field Descriptions .......................................................
ECAP Interrupt Forcing Register (ECFRC) Field Descriptions ....................................................
Control and Status Register Set ........................................................................................
EQEP Memory Map .....................................................................................................
Quadrature Decoder Truth Table ......................................................................................
eQEP Decoder Control (QDECCTL) Register Field Descriptions .................................................
eQEP Control (QEPCTL) Register Field Descriptions ...............................................................
eQEP Position-compare Control (QPOSCTL) Register Field Descriptions .......................................
eQEP Capture Control (QCAPCTL) Register Field Descriptions ...................................................
eQEP Position Counter (QPOSCNT) Register Field Descriptions .................................................
eQEP Position Counter Initialization (QPOSINIT) Register Field Descriptions ...................................
eQEP Maximum Position Count (QPOSMAX) Register Field Descriptions .......................................
eQEP Position-compare (QPOSCMP) Register Field Descriptions ................................................
eQEP Index Position Latch(QPOSILAT) Register Field Descriptions .............................................
eQEP Strobe Position Latch (QPOSSLAT) Register Field Descriptions ..........................................
eQEP Position Counter Latch (QPOSLAT) Register Field Descriptions ..........................................
eQEP Unit Timer (QUTMR) Register Field Descriptions ............................................................
eQEP Unit Period (QUPRD) Register Field Descriptions ...........................................................
eQEP Watchdog Timer (QWDTMR) Register Field Descriptions ..................................................
eQEP Watchdog Period (QWDPRD) Register Field Description ...................................................
eQEP Interrupt Enable(QEINT) Register Field Descriptions ........................................................
eQEP Interrupt Flag (QFLG) Register Field Descriptions ...........................................................
eQEP Interrupt Clear (QCLR) Register Field Descriptions ..........................................................
eQEP Interrupt Force (QFRC) Register Field Descriptions .........................................................
eQEP Status (QEPSTS) Register Field Descriptions ...............................................................
eQEP Capture Timer (QCTMR) Register Field Descriptions .......................................................
eQEP Capture Period Register (QCPRD) Register Field Descriptions ............................................
eQEP Capture Timer Latch (QCTMRLAT) Register Field Descriptions ...........................................
eQEP Capture Period Latch (QCPRDLAT) Register Field Descriptions ..........................................
Sample Timings with Different Values of ACQPS ....................................................................
ADC Configuration and Control Registers (AdcRegs and AdcResult): ............................................
ADC Control Register 1 (ADCCTL1) Field Descriptions .............................................................
ADC Control Register 2 (ADCCTL2) Field Descriptions .............................................................
ADC Interrupt Flag Register (ADCINTFLG) Field Descriptions .....................................................
ADC Interrupt Flag Clear Register (ADCINTFLGCLR) Field Descriptions ........................................
ADC Interrupt Overflow Register (ADCINTOVF) Field Descriptions ...............................................
ADC Interrupt Overflow Clear Register (ADCINTOVFCLR) Field Descriptions ..................................
INTSELxNy Register Field Descriptions ...............................................................................
SOCPRICTL Register Field Descriptions ..............................................................................
Time-Stamp Counter Register (TSCTR) Field Descriptions
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
434
434
434
434
435
435
435
437
439
440
441
441
442
458
461
474
476
477
478
478
479
479
479
479
480
480
480
480
481
481
481
482
483
484
485
486
486
487
487
492
501
502
504
504
505
505
506
507
508
35
www.ti.com
8-11.
ADC Sample Mode Register (ADCSAMPLEMODE) Field Descriptions........................................... 510
8-12.
ADC Interrupt Trigger SOC Select 1 Register (ADCINTSOCSEL1) Register Field Descriptions .............. 511
8-13.
ADC Interrupt Trigger SOC Select 2 Register (ADCINTSOCSEL2) Field Descriptions ......................... 512
8-14.
ADC SOC Flag 1 Register (ADCSOCFLG1) Field Descriptions
8-15.
8-16.
8-17.
8-18.
8-19.
8-20.
8-21.
8-22.
8-23.
8-24.
8-25.
8-26.
8-27.
8-28.
8-29.
8-30.
8-31.
8-32.
8-33.
8-34.
9-1.
9-2.
9-3.
9-4.
9-5.
9-6.
9-7.
9-8.
9-9.
9-10.
9-11.
9-12.
9-13.
9-14.
9-15.
9-16.
9-17.
9-18.
9-19.
9-20.
9-21.
9-22.
9-23.
9-24.
9-25.
36
...................................................
ADC SOC Force 1 Register (ADCSOCFRC1) Field Descriptions..................................................
ADC SOC Overflow 1 Register (ADCSOCOVF1) Field Descriptions ..............................................
ADC SOC Overflow Clear 1 Register (ADCSOCOVFCLR1) Field Descriptions .................................
ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) Register Field Descriptions ..........................
ADC Reference/Gain Trim Register (ADCREFTRIM) Field Descriptions .........................................
ADC Offset Trim Register (ADCOFFTRIM) Field Descriptions .....................................................
Comparator Hysteresis Control Register (COMPHYSTCTL) Field Descriptions .................................
ADC Revision Register (ADCREV) Field Descriptions ..............................................................
ADC RESULT0 - ADCRESULT15 Registers (ADCRESULTx) Field Descriptions ...............................
Comparator Truth Table .................................................................................................
Comparator Module Registers .........................................................................................
COMPCTL Register Field Descriptions ................................................................................
Compare Output Status (COMPSTS) Register Field Descriptions .................................................
DACCTL Register Field Descriptions ..................................................................................
DAC Value (DACVAL) Register Field Descriptions ..................................................................
Ramp Generator Maximum Reference Active (RAMPMAXREF_ACTIVE) Register Field Descriptions ......
Ramp Generator Maximum Reference Shadow (RAMPMAXREF_SHDW) Register Field Descriptions .....
Ramp Generator Decrement Value Active (RAMPDECVAL_ACTIVE) Register Field Descriptions ...........
Ramp Generator Decrement Value Shadow (RAMPDECVAL_SHDW) Register Field Descriptions ..........
Ramp Generator Status (RAMPSTS) Register Field Descriptions .................................................
CLA Module Control and Status Register Set ........................................................................
Task Interrupt Vector (MVECT1/2/3/4/5/6/7/8) Field Descriptions .................................................
Control Register (MCTL) Field Descriptions ..........................................................................
Memory Configuration Register (MMEMCFG) Field Descriptions ..................................................
Peripheral Interrupt Source Select 1 (MPISRCSEL1) Register Field Descriptions ..............................
Interrupt Enable Register (MIER) Field Descriptions.................................................................
Interrupt Flag Register (MIFR) Field Descriptions ....................................................................
Interrupt Overflow Flag Register (MIOVF) Field Descriptions ......................................................
Interrupt Run Status Register (MIRUN) Field Descriptions .........................................................
Interrupt Force Register (MIFRC) Field Descriptions ................................................................
Interrupt Flag Clear Register (MICLR) Field Descriptions ...........................................................
Interrupt Overflow Flag Clear Register (MICLROVF) Field Descriptions ..........................................
Program Counter (MPC) Field Descriptions ...........................................................................
CLA Status (MSTF) Register Field Descriptions .....................................................................
Write Followed by Read - Read Occurs First ........................................................................
Write Followed by Read - Write Occurs First ........................................................................
ADC to CLA Early Interrupt Response ................................................................................
Operand Nomenclature ..................................................................................................
INSTRUCTION dest, source1, source2 Short Description ..........................................................
Addressing Modes ........................................................................................................
Shift Field Encoding ......................................................................................................
Condition Field Encoding ................................................................................................
General Instructions ......................................................................................................
Pipeline Activity For MBCNDD, Branch Not Taken ..................................................................
Pipeline Activity For MBCNDD, Branch Taken .......................................................................
List of Tables
512
513
513
513
514
516
516
517
517
518
524
527
528
528
529
529
529
530
530
530
531
542
543
545
546
548
550
551
552
553
555
556
557
558
559
562
562
564
566
567
568
568
569
570
585
585
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
9-26.
9-27.
9-28.
9-29.
9-30.
9-31.
9-32.
9-33.
10-1.
10-2.
10-3.
10-4.
10-5.
10-6.
10-7.
10-8.
10-9.
10-10.
10-11.
10-12.
10-13.
10-14.
10-15.
10-16.
10-17.
10-18.
11-1.
11-2.
11-3.
11-4.
11-5.
11-6.
11-7.
11-8.
11-9.
11-10.
11-11.
11-12.
11-13.
11-14.
11-15.
11-16.
11-17.
11-18.
11-19.
11-20.
.....................................................................
Pipeline Activity For MCCNDD, Call Taken ..........................................................................
Pipeline Activity For MMOV16 MARx, MRa , #16I ...................................................................
Pipeline Activity For MMOV16 MAR0/MAR1, mem16 ...............................................................
Pipeline Activity For MMOVI16 MAR0/MAR1, #16I ..................................................................
Pipeline Activity For MRCNDD, Return Not Taken ..................................................................
Pipeline Activity For MRCNDD, Return Taken .......................................................................
Pipeline Activity For MSTOP ............................................................................................
Viterbi Decode Performance ............................................................................................
Complex Math Performance.............................................................................................
VCU Register Set .........................................................................................................
28x CPU Register Summary ............................................................................................
VCU Status (VSTATUS) Register Field Descriptions ................................................................
Operation Interaction with VSTATUS Bits .............................................................................
Repeat Block (RB) Register Field Descriptions .......................................................................
Operand Nomenclature ..................................................................................................
INSTRUCTION dest, source1, source2 Short Description ..........................................................
General Instructions ......................................................................................................
Complex Math Instructions ..............................................................................................
CRC Instructions ..........................................................................................................
Viterbi Instructions ........................................................................................................
Example: Values Before Shift Right ....................................................................................
Example: Values after Shift Right ......................................................................................
Example: Addition with Right Shift and Rounding ....................................................................
Example: Addition with Rounding After Shift Right ...................................................................
Shift Right Operation With and Without Rounding ...................................................................
Peripheral Interrupt Trigger Source Options ..........................................................................
DMA Register Summary ................................................................................................
DMA Control Register (DMACTRL) Field Descriptions ..............................................................
Debug Control Register (DEBUGCTRL) Field Descriptions ........................................................
Revision Register (REVISION) Field Descriptions ...................................................................
Priority Control Register 1 (PRIORITYCTRL1) Field Descriptions .................................................
Priority Status Register (PRIORITYSTAT) Field Descriptions ......................................................
Mode Register (MODE) Field Descriptions ............................................................................
Control Register (CONTROL) Field Descriptions .....................................................................
Burst Size Register (BURST_SIZE) Field Descriptions..............................................................
Burst Count Register (BURST_COUNT) Field Descriptions ........................................................
Source Burst Step Size Register (SRC_BURST_STEP) Field Descriptions......................................
Destination Burst Step Register Size (DST_BURST_STEP) Field Descriptions .................................
Transfer Size Register (TRANSFER_SIZE) Field Descriptions ....................................................
Transfer Count Register (TRANSFER_COUNT) Field Descriptions ...............................................
Source Transfer Step Size Register (SRC_TRANSFER_STEP) Field Descriptions ............................
Destination Transfer Step Size Register (DST_TRANSFER_STEP) Field Descriptions ........................
Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE) Field Descriptions .........................
Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT) Field Descriptions ....................
Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP) Field Descriptions .................
Pipeline Activity For MCCNDD, Call Not Taken
11-21. Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) Field Descriptions
..............................
591
591
623
625
638
660
660
664
684
684
690
691
692
692
694
701
702
703
734
772
784
806
806
806
806
806
812
822
823
825
825
826
827
828
830
832
832
833
834
834
835
835
836
836
837
837
838
11-22. Active Source Begin and Current Address Pointer Registers (SRC_BEG_ADDR/DST_BEG_ADDR) Field
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
37
www.ti.com
Descriptions
...............................................................................................................
838
11-23. Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) Field Descriptions ............................................. 839
11-24. Active Destination Begin and Current Address Pointer Registers (SRC_ADDR/DST_ADDR) Field
Descriptions ............................................................................................................... 839
12-1.
SPI Module Signal Summary ............................................................................................ 844
12-2.
SPI Registers .............................................................................................................. 844
12-3.
SPI Clocking Scheme Selection Guide ................................................................................ 850
12-4.
SPI Interrupt Flag Modes ................................................................................................ 853
12-5.
4-wire vs. 3-wire SPI Pin Functions .................................................................................... 854
12-6.
3-Wire SPI Pin Configuration ............................................................................................ 855
12-7.
SPI Configuration Control Register (SPICCR) Field Descriptions .................................................. 864
12-8.
Character Length Control Bit Values ................................................................................... 864
12-9.
SPI Operation Control Register (SPICTL) Field Descriptions....................................................... 865
12-10. SPI Status Register (SPIST) Field Descriptions ...................................................................... 866
12-11. Field Descriptions ......................................................................................................... 867
12-12. SPI Emulation Buffer Register (SPIRXEMU) Field Descriptions ................................................... 867
868
12-14.
868
12-15.
12-16.
12-17.
12-18.
12-19.
13-1.
13-2.
13-3.
13-4.
13-5.
13-6.
13-7.
13-8.
13-9.
13-10.
13-11.
13-12.
13-13.
13-14.
13-15.
13-16.
13-17.
13-18.
14-1.
14-2.
14-3.
14-4.
14-5.
14-6.
14-7.
38
..............................................
SPI Serial Transmit Buffer Register (SPITXBUF) Field Descriptions ..............................................
SPI Serial Data Register (SPIDAT) Field Descriptions ..............................................................
SPI FIFO Transmit (SPIFFTX) Register Field Descriptions .........................................................
SPI FIFO Receive (SPIFFRX) Register Field Descriptions .........................................................
SPI FIFO Control (SPIFFCT) Register Field Descriptions ..........................................................
SPI Priority Control Register (SPIPRI) Field Descriptions ...........................................................
SCI-A Registers ...........................................................................................................
SCI-B Registers ...........................................................................................................
SCI Module Signal Summary ...........................................................................................
Programming the Data Format Using SCICCR .......................................................................
Asynchronous Baud Register Values for Common SCI Bit Rates .................................................
SCI Interrupt Flags........................................................................................................
SCIA Registers ............................................................................................................
SCIB Registers ............................................................................................................
SCI Communication Control Register (SCICCR) Field Descriptions ...............................................
SCI Control Register 1 (SCICTL1) Field Descriptions ...............................................................
Baud-Select Register Field Descriptions ..............................................................................
SCI Control Register 2 (SCICTL2) Field Descriptions ...............................................................
SCI Receiver Status Register (SCIRXST) Field Descriptions ......................................................
SCI Receive Data Buffer Register (SCIRXBUF) Field Descriptions ...............................................
SCI FIFO Transmit (SCIFFTX) Register Field Descriptions.........................................................
SCI FIFO Receive (SCIFFRX) Register Field Descriptions .........................................................
SCI FIFO Control (SCIFFCT) Register Field Descriptions ..........................................................
Field Descriptions .........................................................................................................
Operating Modes of the I2C Module ...................................................................................
Ways to Generate a NACK Bit ..........................................................................................
Descriptions of the Basic I2C Interrupt Requests ....................................................................
I2C Module Registers ....................................................................................................
I2C Mode Register (I2CMDR) Field Descriptions ....................................................................
Master-Transmitter/Receiver Bus Activity Defined by the RM, STT, and STP Bits of I2CMDR ................
How the MST and FDF Bits of I2CMDR Affect the Role of the TRX Bit of I2CMDR ............................
12-13. SPI Serial Receive Buffer Register (SPIRXBUF) Field Descriptions
List of Tables
869
870
871
871
872
876
876
877
878
885
886
888
888
889
890
892
893
894
896
896
897
898
900
906
909
911
913
914
916
916
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
14-8.
14-9.
14-10.
14-11.
14-12.
14-13.
14-14.
14-15.
14-16.
14-17.
14-18.
14-19.
14-20.
14-21.
14-22.
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.
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.
......................................................
I2C Interrupt Enable Register (I2CIER) Field Descriptions..........................................................
I2C Status Register (I2CSTR) Field Descriptions ....................................................................
I2C Interrupt Source Register (I2CISRC) Field Descriptions .......................................................
I2C Prescaler Register (I2CPSC) Field Descriptions ................................................................
I2C Clock Low-Time Divider Register (I2CCLKL) Field Description ...............................................
I2C Clock High-Time Divider Register (I2CCLKH) Field Description ..............................................
Dependency of Delay d on the Divide-Down Value IPSC ...........................................................
I2C Slave Address Register (I2CSAR) Field Descriptions ..........................................................
I2C Own Address Register (I2COAR) Field Descriptions ...........................................................
I2C Data Count Register (I2CCNT) Field Descriptions ..............................................................
I2C Data Receive Register (I2CDRR) Field Descriptions ...........................................................
I2C Data Transmit Register (I2CDXR) Field Descriptions ...........................................................
I2C Transmit FIFO Register (I2CFFTX) Field Descriptions .........................................................
I2C Receive FIFO Register (I2CFFRX) Field Descriptions..........................................................
McBSP Interface Pins/Signals ..........................................................................................
Register Bits That Determine the Number of Phases, Words, and Bits ...........................................
Interrupts and DMA Events Generated by a McBSP ................................................................
Effects of DLB and CLKSTP on Clock Modes ........................................................................
Choosing an Input Clock for the Sample Rate Generator with the SCLKME and CLKSM Bits ................
Polarity Options for the Input to the Sample Rate Generator ......................................................
Input Clock Selection for Sample Rate Generator ...................................................................
Block - Channel Assignment ............................................................................................
2-Partition Mode ..........................................................................................................
8-Partition mode ..........................................................................................................
Receive Channel Assignment and Control With Eight Receive Partitions ........................................
Transmit Channel Assignment and Control When Eight Transmit Partitions Are Used .........................
Selecting a Transmit Multichannel Selection Mode With the XMCM Bits .........................................
Bits Used to Enable and Configure the Clock Stop Mode...........................................................
Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme ...................................................
Bit Values Required to Configure the McBSP as an SPI Master ..................................................
Bit Values Required to Configure the McBSP as an SPI Slave ....................................................
Register Bits Used to Reset or Enable the McBSP Receiver Field Descriptions ................................
Reset State of Each McBSP Pin........................................................................................
Register Bit Used to Enable/Disable the Digital Loopback Mode ..................................................
Receive Signals Connected to Transmit Signals in Digital Loopback Mode ......................................
Register Bits Used to Enable/Disable the Clock Stop Mode ........................................................
Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme ...................................................
Register Bit Used to Enable/Disable the Receive Multichannel Selection Mode .................................
Register Bit Used to Choose One or Two Phases for the Receive Frame .......................................
Register Bits Used to Set the Receive Word Length(s) .............................................................
Register Bits Used to Set the Receive Frame Length ...............................................................
How to Calculate the Length of the Receive Frame .................................................................
Register Bit Used to Enable/Disable the Receive Frame-Synchronization Ignore Function ....................
Register Bits Used to Set the Receive Companding Mode .........................................................
Register Bits Used to Set the Receive Data Delay...................................................................
Register Bits Used to Set the Receive Sign-Extension and Justification Mode ..................................
Example: Use of RJUST Field With 12-Bit Data Value ABCh ......................................................
Example: Use of RJUST Field With 20-Bit Data Value ABCDEh ..................................................
I2C Extended Mode Register (I2CEMDR) Field Descriptions
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
917
919
920
922
923
924
924
925
925
925
926
926
927
927
928
932
939
943
945
945
946
949
958
959
959
961
962
963
966
967
970
971
973
973
974
974
974
975
975
975
976
976
977
977
978
979
981
981
981
39
www.ti.com
.............................................................. 982
Register Bits Used to Set the Receive Frame Synchronization Mode ............................................ 982
Select Sources to Provide the Receive Frame-Synchronization Signal and the Effect on the FSR Pin ...... 983
Register Bit Used to Set Receive Frame-Synchronization Polarity ................................................ 984
Register Bits Used to Set the SRG Frame-Synchronization Period and Pulse Width ........................... 985
Register Bits Used to Set the Receive Clock Mode ................................................................. 986
Receive Clock Signal Source Selection ............................................................................... 987
Register Bit Used to Set Receive Clock Polarity ..................................................................... 987
Register Bits Used to Set the Sample Rate Generator (SRG) Clock Divide-Down Value ...................... 989
Register Bit Used to Set the SRG Clock Synchronization Mode ................................................... 989
Register Bits Used to Set the SRG Clock Mode (Choose an Input Clock) ....................................... 989
Register Bits Used to Set the SRG Input Clock Polarity............................................................. 991
Register Bits Used to Place Transmitter in Reset Field Descriptions .............................................. 992
Register Bit Used to Enable/Disable the Digital Loopback Mode .................................................. 993
Receive Signals Connected to Transmit Signals in Digital Loopback Mode ...................................... 993
Register Bits Used to Enable/Disable the Clock Stop Mode ........................................................ 993
Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme ................................................... 994
Register Bits Used to Enable/Disable Transmit Multichannel Selection ........................................... 995
Register Bit Used to Choose 1 or 2 Phases for the Transmit Frame .............................................. 996
Register Bits Used to Set the Transmit Word Length(s)............................................................. 996
Register Bits Used to Set the Transmit Frame Length .............................................................. 997
How to Calculate Frame Length ........................................................................................ 997
Register Bit Used to Enable/Disable the Transmit Frame-Synchronization Ignore Function ................... 998
Register Bits Used to Set the Transmit Companding Mode ........................................................ 999
Register Bits Used to Set the Transmit Data Delay ................................................................ 1000
Register Bit Used to Set the Transmit DXENA (DX Delay Enabler) Mode ...................................... 1002
Register Bits Used to Set the Transmit Interrupt Mode ............................................................ 1002
Register Bits Used to Set the Transmit Frame-Synchronization Mode .......................................... 1003
How FSXM and FSGM Select the Source of Transmit Frame-Synchronization Pulses ....................... 1003
Register Bit Used to Set Transmit Frame-Synchronization Polarity .............................................. 1004
Register Bits Used to Set SRG Frame-Synchronization Period and Pulse Width .............................. 1005
Register Bit Used to Set the Transmit Clock Mode ................................................................. 1006
How the CLKXM Bit Selects the Transmit Clock and the Corresponding Status of the MCLKX pin ......... 1006
Register Bit Used to Set Transmit Clock Polarity ................................................................... 1006
McBSP Emulation Modes Selectable with FREE and SOFT Bits of SPCR2.................................... 1008
Reset State of Each McBSP Pin ...................................................................................... 1008
McBSP Register Summary............................................................................................. 1013
Serial Port Control 1 Register (SPCR1) Field Descriptions ....................................................... 1015
Serial Port Control 2 Register (SPCR2) Field Descriptions........................................................ 1018
Receive Control Register 1 (RCR1) Field Descriptions ............................................................ 1020
Frame Length Formula for Receive Control 1 Register (RCR1) .................................................. 1021
Receive Control Register 2 (RCR2) Field Descriptions ............................................................ 1021
Frame Length Formula for Receive Control 2 Register (RCR2) .................................................. 1022
Transmit Control 1 Register (XCR1) Field Descriptions ........................................................... 1023
Frame Length Formula for Transmit Control 1 Register (XCR1) ................................................. 1023
Transmit Control 2 Register (XCR2) Field Descriptions ........................................................... 1024
Frame Length Formula for Transmit Control 2 Register (XCR2) ................................................. 1025
Sample Rate Generator 1 Register (SRGR1) Field Descriptions ................................................. 1026
Sample Rate Generator 2 Register (SRGR2) Field Descriptions ................................................. 1027
15-35. Register Bits Used to Set the Receive Interrupt Mode
15-36.
15-37.
15-38.
15-39.
15-40.
15-41.
15-42.
15-43.
15-44.
15-45.
15-46.
15-47.
15-48.
15-49.
15-50.
15-51.
15-52.
15-53.
15-54.
15-55.
15-56.
15-57.
15-58.
15-59.
15-60.
15-61.
15-62.
15-63.
15-64.
15-65.
15-66.
15-67.
15-68.
15-69.
15-70.
15-71.
15-72.
15-73.
15-74.
15-75.
15-76.
15-77.
15-78.
15-79.
15-80.
15-81.
15-82.
15-83.
40
List of Tables
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
......................................................
Multichannel Control 2 Register (MCR2) Field Descriptions ......................................................
Pin Control Register (PCR) Field Descriptions ......................................................................
Pin Configuration .......................................................................................................
Receive Channel Enable Registers (RCERA...RCERH) Field Descriptions.....................................
Use of the Receive Channel Enable Registers .....................................................................
Transmit Channel Enable Registers (XCERA...XCERH) Field Descriptions ....................................
Use of the Transmit Channel Enable Registers ....................................................................
Receive Interrupt Sources and Signals ..............................................................................
Transmit Interrupt Sources and Signals ..............................................................................
Error Flags ...............................................................................................................
McBSP Interrupt Enable Register (MFFINT) Field Descriptions ..................................................
McBSP Mode Selection ................................................................................................
Register Map .............................................................................................................
eCAN-A Mailbox RAM Layout .........................................................................................
Addresses of LAM, MOTS and MOTO registers for mailboxes (eCAN-A) ......................................
Message Object Behavior Configuration .............................................................................
Mailbox-Enable Register (CANME) Field Descriptions .............................................................
Mailbox-Direction Register (CANMD) Field Descriptions ..........................................................
Transmission-Request Set Register (CANTRS) Field Descriptions ..............................................
Transmission-Request-Reset Register (CANTRR) Field Descriptions ...........................................
Transmission-Acknowledge Register (CANTA) Field Descriptions ...............................................
Abort-Acknowledge Register (CANAA) Field Descriptions ........................................................
Received-Message-Pending Register (CANRMP) Field Descriptions ...........................................
Received-Message-Lost Register (CANRML) Field Descriptions.................................................
Remote-Frame-Pending Register (CANRFP) Field Descriptions .................................................
Global Acceptance Mask Register (CANGAM) Field Descriptions ...............................................
Master Control Register (CANMC) Field Descriptions .............................................................
Bit-Timing Configuration Register (CANBTC) Field Descriptions .................................................
Error and Status Register (CANES) Field Descriptions ............................................................
Global Interrupt Flag Registers (CANGIF0/CANGIF1) Field Descriptions .......................................
Global Interrupt Mask Register (CANGIM) Field Descriptions ....................................................
Mailbox Interrupt Mask Register (CANMIM) Field Descriptions ...................................................
Mailbox Interrupt Level Register (CANMIL) Field Descriptions ...................................................
Overwrite Protection Control Register (CANOPC) Field Descriptions ...........................................
TX I/O Control Register (CANTIOC) Field Descriptions ...........................................................
RX I/O Control Register (CANRIOC) Field Descriptions ...........................................................
Time-Stamp Counter Register (CANTSC) Field Descriptions .....................................................
Message Object Time Stamp Registers (MOTS) Field Descriptions .............................................
Message-Object Time-Out Registers (MOTO) Field Descriptions ................................................
Time-Out Control Register (CANTOC) Field Descriptions .........................................................
Time-Out Status Register (CANTOS) Field Descriptions ..........................................................
Message Identifier Register (MSGID) Field Descriptions ..........................................................
Message-Control Register (MSGCTRL) Field Descriptions .......................................................
Local-Acceptance-Mask Register (LAMn) Field Descriptions .....................................................
BRP Field for Bit Rates (BT = 15, TSEG1reg = 10, TSEG2reg = 2, Sampling Point = 80%) ....................
Achieving Different Sampling Points With a BT of 15 ..............................................................
BRP Field for Bit Rates (BT = 10, TSEG1reg = 6, TSEG2reg = 1, Sampling Point = 80%) ......................
BRP Field for Bit Rates (BT = 10, TSEG1reg = 6, TSEG2reg = 1, Sampling Point = 80%) ......................
15-84. Multichannel Control 1 Register (MCR1) Field Descriptions
1028
15-85.
1030
15-86.
15-87.
15-88.
15-89.
15-90.
15-91.
15-92.
15-93.
15-94.
15-95.
15-96.
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.
16-23.
16-24.
16-25.
16-26.
16-27.
16-28.
16-29.
16-30.
16-31.
16-32.
16-33.
16-34.
16-35.
16-36.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
1032
1034
1034
1035
1036
1037
1038
1039
1039
1040
1040
1050
1052
1053
1053
1055
1056
1057
1058
1059
1060
1061
1062
1063
1065
1066
1069
1071
1075
1077
1079
1080
1081
1082
1083
1085
1086
1087
1088
1089
1090
1092
1095
1098
1098
1098
1098
41
www.ti.com
16-37. Achieving Different Sampling Points With a BT of 20 .............................................................. 1098
...................................................................................
...........................................................................................................
USB Memory Access From Software .................................................................................
USB Memory Access From CCS......................................................................................
Universal Serial Bus (USB) Controller Register Map ..............................................................
Function Address Register (USBFADDR) Field Descriptions .....................................................
Power Management Register (USBPOWER) in Host Mode Field Descriptions ................................
Power Management Register (USBPOWER) in Device Mode Field Descriptions..............................
USB Transmit Interrupt Status Register (USBTXIS) Field Descriptions .........................................
USB Receive Interrupt Status Register (USBRXIS) Field Descriptions ..........................................
USB Transmit Interrupt Status Register (USBTXIE) Field Descriptions .........................................
USB Receive Interrupt Register (USBRXIE) Field Descriptions ..................................................
USB General Interrupt Status Register (USBIS) in Host Mode Field Descriptions .............................
USB General Interrupt Status Register (USBIS) in Device Mode Field Descriptions ..........................
USB Interrupt Enable Register (USBIE) in Host Mode Field Descriptions ......................................
USB Interrupt Enable Register (USBIE) in Device Mode Field Descriptions ....................................
Frame Number Register (FRAME) Field Descriptions .............................................................
USB Endpoint Index Register (USBEPIDX) Field Descriptions ...................................................
USB Test Mode Register (USBTEST) in Host Mode Field Descriptions.........................................
USB Test Mode Register (USBTEST) in Device Mode Field Descriptions ......................................
USB FIFO Endpoint n Register (USBFIFO[n]) Field Descriptions ................................................
USB Device Control Register (USBDEVCTL) Field Descriptions .................................................
USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ) Field Descriptions ...........................
USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ) Field Descriptions ............................
USB Transmit FIFO Start Address Register (USBTXFIFOADDR) Field Descriptions .........................
USB Receive FIFO Start Address Register (USBRXFIFOADDR) Field Descriptions ..........................
USB Connect Timing Register (USBCONTIM) Field Descriptions................................................
USB Full-Speed Last Transaction to End of Frame Timing Register (USBFSEOF) Field Descriptions .....
USB Low-Speed Last Transaction to End of Frame Timing Register (USBLSEOF) Field Descriptions.....
USB Transmit Functional Address Endpoint n Registers (USBTXFUNCADDR[n]) Field Descriptions ......
USB Transmit Hub Address Endpoint n Registers(USBTXHUBADDR[n]) Field Descriptions ................
USB Transmit Hub Port Endpoint n Registers(USBTXHUBPORT[n]) Field Descriptions .....................
USB Recieve Functional Address Endpoint n Registers(USBFIFO[n]) Field Descriptions ....................
USB Receive Hub Address Endpoint n Registers(USBRXHUBADDR[n]) Field Descriptions ................
USB Transmit Hub Port Endpoint n Registers(USBRXHUBPORT[n]) Field Descriptions .....................
USB Maximum Transmit Data Endpoint n Registers(USBTXMAXP[n]) Field Descriptions ...................
USB Control and Status Endpoint 0 Low Register(USBCSRL0) in Host Mode Field Descriptions ..........
USB Control and Status Endpoint 0 Low Register (USBCSRL0) in Device Mode Field Descriptions .......
USB Control and Status Endpoint 0 High Register (USBCSRH0) in Host Mode Field Descriptions.........
USB Control and Status Endpoint 0 High Register (USBCSRH0) in Device Mode Field Descriptions ......
USB Receive Byte Count Endpoint 0 Register (USBCOUNT0) Field Descriptions ............................
USB Type Endpoint 0 Register (USBTYPE0) Field Descriptions .................................................
USB NAK Limit Register (USBNAKLMT) Field Descriptions ......................................................
16-38. eCAN Interrupt Assertion/Clearing
1106
17-1.
1112
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.
17-20.
17-21.
17-22.
17-23.
17-24.
17-25.
17-26.
17-27.
17-28.
17-29.
17-30.
17-31.
17-32.
17-33.
17-34.
17-35.
17-36.
17-37.
17-38.
17-39.
17-40.
17-41.
17-42.
Signal Pinouts
1121
1122
1124
1129
1130
1130
1132
1133
1134
1135
1136
1137
1138
1139
1140
1140
1141
1141
1143
1144
1146
1147
1148
1149
1150
1151
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1161
1162
1162
1163
17-43. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n]) in Host Mode Field
Descriptions .............................................................................................................. 1164
17-44. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n]) in Device Mode Field
Descriptions .............................................................................................................. 1165
17-45. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n]) in Host Mode Field
Descriptions .............................................................................................................. 1167
42
List of Tables
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
17-46. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n]) in Device Mode Field
Descriptions .............................................................................................................. 1168
17-47. USB Maximum Receive Data Endpoint n Registers (USBTXMAXP[n]) Field Descriptions ................... 1169
17-48. USB Control and Status Endpoint n Low Register(USBCSRL[n]) in Host Mode Field Descriptions ......... 1170
17-49. USB Control and Status Endpoint 0 Low Register(USBCSRL[n]) in Device Mode Field Descriptions ...... 1171
17-50. USB Control and Status Endpoint n High Register (USBCSRH[n]) in Host Mode Field Descriptions ....... 1173
17-51. USB Control and Status Endpoint 0 High Register(USBCSRH[n]) in Device Mode Field Descriptions ..... 1174
17-52. USB Maximum Receive Data Endpoint n Registers (USBRXCOUNT[n]) Field Descriptions ................. 1175
17-53. USB Host Transmit Configure Type Endpoint n Register(USBTXTYPE[n]) Field Descriptions
..............
1176
17-54. USBTXINTERVAL[n] Frame Numbers ............................................................................... 1177
17-55. USB Host Transmit Interval Endpoint n Register(USBTXINTERVAL[n]) Field Descriptions .................. 1177
17-56. USB Host Configure Receive Type Endpoint n Register(USBRXTYPE[n]) Field Descriptions ............... 1178
17-57. USBRXINTERVAL[n] Frame Numbers ............................................................................... 1179
17-58. USB Host Receive Polling Interval Endpoint n Register(USBRXINTERVAL[n]) Field Descriptions.......... 1179
17-59. USB Request Packet Count in Block Transfer Endpoint n Registers (USBRQPKTCOUNT[n]) Field
Descriptions .............................................................................................................. 1180
17-60. USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS) Field Descriptions .......... 1181
17-61. USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS) Field Descriptions .......... 1182
17-62. USB External Power Control Register (USBEPC) Field Descriptions ............................................ 1183
17-63. USB External Power Control Raw Interrupt Status Register (USBEPCRIS) Field Descriptions .............. 1185
17-64. USB External Power Control Interrupt Mask Register (USBEPCIM) Field Descriptions....................... 1186
17-65. USB External Power Control Interrupt Status and Clear Register (USBEPCISC) Field Descriptions ....... 1187
17-66. USB Device RESUME Raw Interrupt Status Register (USBDRRIS) Field Descriptions....................... 1188
17-67. USB Device RESUME Raw Interrupt Status Register (USBDRRIS) Field Descriptions....................... 1189
17-68. USB Device RESUME Interrupt Status and Clear Register (USBDRISC) Field Descriptions ................ 1190
17-69. USB General-Purpose Control and Status Register (USBGPCS) Field Descriptions .......................... 1191
17-70. USB DMA Select Register (USBDMASEL) Field Descriptions .................................................... 1192
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
List of Tables
43
Preface
SPRUH18G – January 2011 – Revised April 2017
Read This First
About This Manual
This Technical Reference Manual (TRM) details the integration, the environment, the functional
description, and the programming models for each peripheral and subsystem in the device.
Notational Conventions
This document uses the following conventions.
• Hexadecimal numbers may be shown with the suffix h or the prefix 0x. For example, the following
number is 40 hexadecimal (decimal 64): 40h or 0x40.
• Registers in this document are shown in figures and described in tables.
– Each register figure shows a rectangle divided into fields that represent the fields of the register.
Each field is labeled with its bit name, its beginning and ending bit numbers above, and its
read/write properties with default reset value below. A legend explains the notation used for the
properties.
– Reserved bits in a register figure can have one of multiple meanings:
• Not implemented on the device
• Reserved for future device expansion
• Reserved for TI testing
• Reserved configurations of the device that are not supported
– Writing nondefault values to the Reserved bits could cause unexpected behavior and should be
avoided.
Glossary
TI Glossary — This glossary lists and explains terms, acronyms, and definitions.
Related Documentation From Texas Instruments
For product information, visit the Texas Instruments website at http://www.ti.com.
SPRU430— TMS320C28x CPU and Instruction Set Reference Guide. Describes the central processing
unit (CPU) and the assembly language instructions of the TMS320C28x 32-bit fixed-point CPU. It
also describes emulation features available on these devices.
SPRUEO2— TMS320C28x Floating Point Unit and Instruction Set Reference Guide. Describes the CPU
architecture, pipeline, instruction set, and interrupts of the C28x floating-point DSP.
Documentation Feedback
Use the link at the bottom of the page to submit documentation feedback.
Community Resources
The following links connect to TI community resources. Linked contents are provided "AS IS" by the
respective contributors. They do not constitute TI specifications and do not necessarily reflect TI's views;
see TI's Terms of Use.
TI E2E™ Online Community— TI's Engineer-to-Engineer (E2E) Community. Created to foster
collaboration among engineers. At e2e.ti.com, you can ask questions, share knowledge, explore
ideas and help solve problems with fellow engineers.
44
Read This First
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Export Control Notice
www.ti.com
TI Embedded Processors Wiki— Texas Instruments Embedded Processors Wiki. Established to help
developers get started with Embedded Processors from Texas Instruments and to foster innovation
and growth of general knowledge about the hardware and software surrounding these devices.
Export Control Notice
Recipient agrees to not knowingly export or re-export, directly or indirectly, any product or technical data
(as defined by the U.S., EU, and other Export Administration Regulations) including software, or any
controlled product restricted by other applicable national regulations, received from disclosing party under
nondisclosure obligations (if any), or any direct product of such technology, to any destination to which
such export or re-export is restricted or prohibited by U.S. or other applicable laws, without obtaining prior
authorization from U.S. Department of Commerce and other competent Government authorities to the
extent required by those laws.
Trademarks
E2E, Piccolo, Code Composer Studio are trademarks of Texas Instruments.
Trademarks
E2E, Piccolo, Code Composer Studio are trademarks of Texas Instruments.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Read This First
45
Chapter 1
SPRUH18G – January 2011 – Revised April 2017
System Control and Interrupts
This chapter is applicable for the System Control and Interrupts found on the Piccolo™ microcontrollers
(MCUs). This guide describes how various system controls and interrupts work and provides information
on the:
• Flash and one-time programmable (OTP) memories
• Code security module (CSM), which is a security feature incorporated in TMS320x28x devices.
• Clocking mechanisms including the oscillator, PLL, XCLKOUT, watchdog module, and the low-power
modes. In addition, the 32-bit CPU-Timers are also described.
• GPIO multiplexing (MUX) registers used to select the operation of shared pins on the device.
• Accessing the peripheral frames to write to and read from various peripheral registers on the device.
• Interrupt sources both external and the peripheral interrupt expansion (PIE) block that multiplexes
numerous interrupt sources into a smaller set of interrupt inputs.
Topic
1.2
1.3
1.4
1.5
1.6
1.7
1.8
46
...........................................................................................................................
Page
Flash and OTP Memory Blocks ............................................................................ 47
Code Security Module (CSM) ............................................................................... 59
Clocking............................................................................................................ 68
General-Purpose Input/Output (GPIO) ................................................................. 113
Peripheral Frames ............................................................................................ 157
Peripheral Interrupt Expansion (PIE) ................................................................... 167
VREG/BOR/POR ............................................................................................... 192
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
1.2
Flash and OTP Memory Blocks
This chapter describes the proper sequence to configure the wait states and operating mode of flash and
one-time programmable (OTP) memories. It also includes information on flash and OTP power modes and
how to improve flash performance by enabling the flash pipeline mode.
1.2.1 Flash Memory
The on-chip flash is uniformly mapped in both program and data memory space. This flash memory is
always enabled and features:
• Multiple sectors
The minimum amount of flash memory that can be erased is a sector. Having multiple sectors provides
the option of leaving some sectors programmed and only erasing specific sectors.
• Code security
The flash is protected by the Code Security Module (CSM). By programming a password into the flash,
the user can prevent access to the flash by unauthorized persons. See Section 1.3 for information on
using the Code Security Module.
• Low power modes
To save power when the flash is not in use, two levels of low power modes are available. See
Section 1.2.3 for more information on the available flash power modes.
• Configurable wait states
Configurable wait states can be adjusted based on CPU frequency to give the best performance for a
given execution speed.
• Enhanced performance
A flash pipeline mode is provided to improve performance of linear code execution.
1.2.2 OTP Memory
The 1K x 16 block of one-time programmable (OTP) memory is uniformly mapped in both program and
data memory space. Thus, the OTP can be used to program data or code. This block, unlike flash, can be
programmed only one time and cannot be erased.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
47
Flash and OTP Memory Blocks
www.ti.com
1.2.3 Flash and OTP Power Modes
The following operating states apply to the flash and OTP memory:
• Reset or Sleep State
This is the state after a device reset. In this state, the bank and pump are in a sleep state (lowest
power). When the flash is in the sleep state, a CPU data read or opcode fetch to the flash or OTP
memory map area will automatically initiate a change in power modes to the standby state and then to
the active state. During this transition time to the active state, the CPU will automatically be stalled.
Once the transition to the active state is completed, the CPU access will complete as normal.
• Standby State
In this state, the bank and pump are in standby power mode state. This state uses more power then
the sleep state, but takes a shorter time to transition to the active or read state. When the flash is in
the standby state, a CPU data read or opcode fetch to the flash or OTP memory map area will
automatically initiate a change in power modes to the active state. During this transition time to the
active state, the CPU will automatically be stalled. Once the flash/OTP has reached the active state,
the CPU access will complete as normal.
• Active or Read State
In this state, the bank and pump are in active power mode state (highest power). The CPU read or
fetch access wait states to the flash/OTP memory map area is controlled by the FBANKWAIT and
FOTPWAIT registers. A prefetch mechanism called flash pipeline can also be enabled to improve fetch
performance for linear code execution.
NOTE: During the boot process, the Boot ROM performs a dummy read of the Code Security
Module (CSM) password locations located in the flash. This read is performed to unlock a
new or erased device that has no password stored in it so that flash programming or loading
of code into CSM protected SARAM can be performed. On devices with a password stored,
this read has no affect and the CSM remains locked (see Section 1.3 for information on the
CSM). One effect of this read is that the flash will transition from the sleep (reset) state to the
active state.
The flash/OTP bank and pump are always in the same power mode. See Figure 1-1 for a graphic
depiction of the available power states. You can change the current flash/OTP memory power state as
follows:
• To move to a lower power state
Change the PWR mode bits from a higher power mode to a lower power mode. This change
instantaneously moves the flash/OTP bank to the lower power state. This register should be accessed
only by code running outside the flash/OTP memory.
• To move to a higher power state
To move from a lower power state to a higher power state, there are two options.
1. Change the FPWR register from a lower state to a higher state. This access brings the flash/OTP
memory to the higher state.
2. Access the flash or OTP memory by a read access or program opcode fetch access. This access
automatically brings the flash/OTP memory to the active state.
There is a delay when moving from a lower power state to a higher one. See Figure 1-1. This delay is
required to allow the flash to stabilize at the higher power mode. If any access to the flash/OTP memory
occurs during this delay the CPU automatically stalls until the delay is complete.
48
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
Figure 1-1. Flash Power Mode State Diagram
Highest
power
Active
state
Delay
FACTIVEWAIT
cycles
PWR=0,1
PWR=0,0
Standby
state
PWR=1,1
or access to
the Flash/OTP
Delay
FSTDBYWAIT
cycles
PWR=0,0
Delay
FACTIVEWAIT
cycles
Delay
FSTDBYWAIT
cycles
PWR=0,1
Sleep
state
PWR=1,1
or access to
the Flash/OTP
Lowest power
Longest
Wake up time
Reset
The duration of the delay is determined by the FSTDBYWAIT and FACTIVEWAIT registers. Moving from
the sleep state to a standby state is delayed by a count determined by the FSTDBYWAIT register. Moving
from the standby state to the active state is delayed by a count determined by the FACTIVEWAIT register.
Moving from the sleep mode (lowest power) to the active mode (highest power) is delayed by
FSTDBYWAIT + FACTIVEWAIT. These registers should be left in their default state.
1.2.3.1
Flash and OTP Performance
CPU read or data fetch operations to the flash/OTP can take one of the following forms:
• 32-bit instruction fetch
• 16-bit or 32-bit data space read
• 16-bit program space read
Once flash is in the active power state, then a read or fetch access to the bank memory map area can be
classified as a flash access or an OTP access.
The main flash array is organized into rows and columns. The rows contain 2048 bits of information.
Accesses to flash and OTP are one of three types:
1. Flash Memory Random Access
The first access to a 2048 bit row is considered a random access.
2. Flash Memory Paged Access
While the first access to a row is considered a random access, subsequent accesses within the same
row are termed paged accesses.
The number of wait states for both a random and a paged access can be configured by programming
the FBANKWAIT register. The number of wait states used by a random access is controlled by the
RANDWAIT bits and the number of wait states used by a paged access is controlled by the
PAGEWAIT bits. The FBANKWAIT register defaults to a worst-case wait state count and, thus, needs
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
49
Flash and OTP Memory Blocks
www.ti.com
to be initialized for the appropriate number of wait states to improve performance based on the CPU
clock rate and the access time of the flash. The flash supports 0-wait accesses when the PAGEWAIT
bits are set to zero. This assumes that the CPU speed is low enough to accommodate the access
time. To determine the random and paged access time requirements, refer to the data manual for your
particular device.
3. OTP Access
Read or fetch accesses to the OTP are controlled by the OTPWAIT bits in the FOTPWAIT register.
Accesses to the OTP take longer than the flash and there is no paged mode. To determine OTP
access time requirements, see the data manual for your particular device.
Some other points to keep in mind when working with flash:
• CPU writes to the flash or OTP memory map area are ignored. They complete in a single cycle.
• When the Code Security Module (CSM) is secured, reads to the flash/OTP memory map area from
outside the secure zone take the same number of cycles as a normal access. However, the read
operation returns a zero.
• Reads of the CSM password locations are hardwired for 16 wait-states. The PAGEWAIT and
RANDOMWAIT bits have no effect on these locations. See Section 1.3 for more information on the
CSM.
1.2.3.2
Flash Pipeline Mode
Flash memory is typically used to store application code. During code execution, instructions are fetched
from sequential memory addresses, except when a discontinuity occurs. Usually the portion of the code
that resides in sequential addresses makes up the majority of the application code and is referred to as
linear code. To improve the performance of linear code execution, a flash pipeline mode has been
implemented. The flash pipeline feature is disabled by default. Setting the ENPIPE bit in the FOPT register
enables this mode. The flash pipeline mode is independent of the CPU pipeline.
An instruction fetch from the flash or OTP reads out 64 bits per access. The starting address of the access
from flash is automatically aligned to a 64-bit boundary such that the instruction location is within the 64
bits to be fetched. With flash pipeline mode enabled (see Figure 1-2), the 64 bits read from the instruction
fetch are stored in a 64-bit wide by 2-level deep instruction pre-fetch buffer. The contents of this pre-fetch
buffer are then sent to the CPU for processing as required.
Up to two 32-bit instructions or up to four 16-bit instructions can reside within a single 64-bit access. The
majority of C28x instructions are 16 bits, so for every 64-bit instruction fetch from the flash bank it is likely
that there are up to four instructions in the pre-fetch buffer ready to process through the CPU. During the
time it takes to process these instructions, the flash pipeline automatically initiates another access to the
flash bank to pre-fetch the next 64 bits. In this manner, the flash pipeline mode works in the background to
keep the instruction pre-fetch buffers as full as possible. Using this technique, the overall efficiency of
sequential code execution from flash or OTP is improved significantly.
50
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
Figure 1-2. Flash Pipeline
Flash and OTP
16 bits
Flash Pipeline
Instruction buffer
Instruction Fetch
CPU
32 bits
64-bit
Buffer
64-bit
Buffer
Flash or OTP
Read
(64 bits)
M
U
X
Data read from either program or data memory
The flash pipeline pre-fetch is aborted only on a PC discontinuity caused by executing an instruction such
as a branch, BANZ, call, or loop. When this occurs, the pre-fetch is aborted and the contents of the prefetch buffer are flushed. There are two possible scenarios when this occurs:
1. If the destination address is within the flash or OTP, the pre-fetch aborts and then resumes at the
destination address.
2. If the destination address is outside of the flash and OTP, the pre-fetch is aborted and begins again
only when a branch is made back into the flash or OTP. The flash pipeline pre-fetch mechanism only
applies to instruction fetches from program space. Data reads from data memory and from program
memory do not utilize the pre-fetch buffer capability and thus bypass the pre-fetch buffer. For example,
instructions such as MAC, DMAC, and PREAD read a data value from program memory. When this
read happens, the pre-fetch buffer is bypassed but the buffer is not flushed. If an instruction pre-fetch
is already in progress when a data read operation is initiated, then the data read will be stalled until the
pre-fetch completes.
1.2.3.3
Reserved Locations Within Flash and OTP
When allocating code and data to flash and OTP memory, keep the following in mind:
1. Address locations 0x3F 7FF6 and 0x3F 7FF7 are reserved for an entry into flash branch instruction.
When the boot to flash boot option is used, the boot ROM will jump to address 0x3F 7FF6. If you
program a branch instruction here that will then re-direct code execution to the entry point of the
application.
2. Addresses from 0x3F 7FF0 to 0x3F 7FF5 are reserved for data variables and should not contain
program code.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
51
Flash and OTP Memory Blocks
1.2.3.4
www.ti.com
Procedure to Change the Flash Configuration Registers
During flash configuration, no accesses to the flash or OTP can be in progress. This includes instructions
still in the CPU pipeline, data reads, and instruction pre-fetch operations. To be sure that no access takes
place during the configuration change, you should follow the procedure shown in Figure 1-3 for any code
that modifies the FOPT, FPWR, FBANKWAIT, or FOTPWAIT registers.
Figure 1-3. Flash Configuration Access Flow Diagram
SARAM, Flash, OTP
Branch or call to
configuration code
Begin Flash configuration
change
Branch or call is required to properly flush the
CPU pipeline before the configuration
change.
The function that changes the configuration
cannot execute from the Flash or OTP.
SARAM
Do not execute from
Flash/OTP
Flash configuration
change
Wait 8 cycles (8 NOPs)
Write instructions to FOPT, FBANKWAIT,
etc.
Wait eight cycles to let the write instructions
propagate through the CPU pipeline. This
must be done before the return-from-function
call is made.
Return to calling function
SARAM, Flash,
or OTP
52
System Control and Interrupts
Continue execution
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
1.2.4 Flash and OTP Registers
The flash and OTP memory can be configured by the registers shown in Table 1-1. The configuration
registers are all EALLOW protected. The bit descriptions are in Figure 1-4 through Figure 1-10.
Table 1-1. Flash/OTP Configuration Registers
Name (1)
(2)
Address
Size (x16)
Description
Bit Description
FOPT
0x0A80
1
Flash Option Register
Figure 1-4
Reserved
0x0A81
1
Reserved
FPWR
0x0A82
1
Flash Power Modes Register
Figure 1-5
0x0A83
1
Status Register
Figure 1-6
0x0A84
1
Flash Sleep To Standby Wait Register
Figure 1-7
0x0A85
1
Flash Standby To Active Wait Register
Figure 1-8
FBANKWAIT
0x0A86
1
Flash Read Access Wait State Register
Figure 1-9
FOTPWAIT
0x0A87
1
OTP Read Access Wait State Register
Figure 1-10
FSTATUS
FSTDBYWAIT
FACTIVEWAIT
(1)
(2)
(3)
(3)
(3)
These registers are EALLOW protected. See Section 1.6.2 for information.
These registers are protected by the Code Security Module (CSM). See Section 1.3 for more information.
These registers should be left in their default state.
NOTE: The flash configuration registers should not be written to by code that is running from OTP or
flash memory or while an access to flash or OTP may be in progress. All register accesses
to the flash registers should be made from code executing outside of flash/OTP memory and
an access should not be attempted until all activity on the flash/OTP has completed. No
hardware is included to protect against this.
To summarize, you can read the flash registers from code executing in flash/OTP; however,
do not write to the registers.
CPU write access to the flash configuration registers can be enabled only by executing the EALLOW
instruction. Write access is disabled when the EDIS instruction is executed. This protects the registers
from spurious accesses. Read access is always available. The registers can be accessed through the
JTAG port without the need to execute EALLOW. See Section 1.6.2 for information on EALLOW
protection. These registers support both 16-bit and 32-bit accesses.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
53
Flash and OTP Memory Blocks
www.ti.com
Figure 1-4. Flash Options Register (FOPT)
15
1
0
Reserved
ENPIPE
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-2. Flash Options Register (FOPT) Field Descriptions
Bit
15-1
0
Field
Value
Description
(1) (2) (3)
Reserved
Any writes to these bits(s) must always have a value of 0.
ENPIPE
Enable Flash Pipeline Mode Bit. Flash pipeline mode is active when this bit is set. The pipeline
mode improves performance of instruction fetches by pre-fetching instructions. See Section 1.2.3.2
for more information.
When pipeline mode is enabled, the flash wait states (paged and random) must be greater than
zero.
On flash devices, ENPIPE affects fetches from flash and OTP.
(1)
(2)
(3)
0
Flash Pipeline mode is not active. (default)
1
Flash Pipeline mode is active.
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
When writing to this register, follow the procedure described in Section 1.2.3.4.
Figure 1-5. Flash Power Register (FPWR)
15
2
1
0
Reserved
PWR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-3. Flash Power Register (FPWR) Field Descriptions
Bit
(1)
(2)
54
Field
Value
Description
(1) (2)
15-2
Reserved
Any writes to these bits(s) must always have a value of 0.
1-0
PWR
Flash Power Mode Bits. Writing to these bits changes the current power mode of the flash bank
and pump. See section Section 1.2.3 for more information on changing the flash bank power mode.
00
Pump and bank sleep (lowest power)
01
Pump and bank standby
10
Reserved (no effect)
11
Pump and bank active (highest power)
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
Figure 1-6. Flash Status Register (FSTATUS)
15
9
7
8
Reserved
3VSTAT
R-0
R/W1C-0
3
2
Reserved
4
ACTIVEWAITS
STDBYWAITS
1
PWRS
0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; W1C = Write 1 to clear; -n = value after reset
Table 1-4. Flash Status Register (FSTATUS) Field Descriptions
Bit
Field
Value
Description
(1) (2)
15-9
Reserved
Any writes to these bits(s) must always have a value of 0.
8
3VSTAT
Flash Voltage (VDD3VFL) Status Latch Bit. When set, this bit indicates that the 3VSTAT signal from
the pump module went to a high level. This signal indicates that the flash 3.3-V supply went out of
the allowable range.
0
Writes of 0 are ignored.
1
When this bit reads 1, it indicates that the flash 3.3-V supply went out of the allowable range.
Clear this bit by writing a 1.
7-4
3
2
1-0
Reserved
Any writes to these bits(s) must always have a value of 0.
ACTIVEWAITS
Bank and Pump Standby To Active Wait Counter Status Bit. This bit indicates whether the
respective wait counter is timing out an access.
0
The counter is not counting.
1
The counter is counting.
STDBYWAITS
Bank and Pump Sleep To Standby Wait Counter Status Bit. This bit indicates whether the
respective wait counter is timing out an access.
0
The counter is not counting.
1
The counter is counting.
PWRS
Power M odes Status Bits. These bits indicate which power mode the flash/OTP is currently in.
The PWRS bits are set to the new power mode only after the appropriate timing delays have
expired.
(1)
(2)
00
Pump and bank in sleep mode (lowest power)
01
Pump and bank in standby mode
10
Reserved
11
Pump and bank active and in read mode (highest power)
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
55
Flash and OTP Memory Blocks
www.ti.com
Figure 1-7. Flash Standby Wait Register (FSTDBYWAIT)
15
9
8
0
Reserved
STDBYWAIT
R-0
R/W-0x1FF
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-5. Flash Standby Wait Register (FSTDBYWAIT) Field Descriptions
Bit
Field
Value
Description
(1) (2)
15-9
Reserved
Any writes to these bits(s) must always have a value of 0.
8-0
STDBYWAIT
This register should be left in its default state.
Bank and Pump Sleep To Standby Wait Count.
111111111
(1)
511 SYSCLKOUT cycles (default)
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
(2)
Figure 1-8. Flash Standby to Active Wait Counter Register (FACTIVEWAIT)
7
9
8
0
Reserved
ACTIVEWAIT
R-0
R/W-0x1FF
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-6. Flash Standby to Active Wait Counter Register (FACTIVEWAIT) Field Descriptions
Bits
Field
Value
Description
(1) (2)
15-9
Reserved
Any writes to these bits(s) must always have a value of 0.
8-0
ACTIVEWAIT
This register should be left in its default state.
Bank and Pump Standby To Active Wait Count:
111111111
(1)
(2)
56
511 SYSCLKOUT cycles (default)
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Flash and OTP Memory Blocks
www.ti.com
Figure 1-9. Flash Wait-State Register (FBANKWAIT)
15
12
11
8
7
4
3
0
Reserved
PAGEWAIT
Reserved
RANDWAIT
R-0
R/W-0xF
R-0
R/W-0xF
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-7. Flash Wait-State Register (FBANKWAIT) Field Descriptions
Bits
Field
Value
Description
(1) (2) (3)
15-12 Reserved
Any writes to these bits(s) must always have a value of 0.
11-8
Flash Paged Read Wait States. These register bits specify the number of wait states for a paged
read operation in CPU clock cycles (0..15 SYSCLKOUT cycles) to the flash bank. See
Section 1.2.3.1 for more information.
PAGEWAIT
See the device-specific data manual for the minimum time required for a PAGED flash access.
You must set RANDWAIT to a value greater than or equal to the PAGEWAIT setting. No hardware is
provided to detect a PAGEWAIT value that is greater then RANDWAIT.
0000
Zero wait-state per paged flash access or one SYSCLKOUT cycle per access
0001
One wait state per paged flash access or a total of two SYSCLKOUT cycles per access
0010
Two wait states per paged flash access or a total of three SYSCLKOUT cycles per access
0011
Three wait states per paged flash access or a total of four SYSCLKOUT cycles per access
...
1111
...
15 wait states per paged flash access or a total of 16 SYSCLKOUT cycles per access. (default)
7-4
Reserved
Any writes to these bits(s) must always have a value of 0.
3-0
RANDWAIT
Flash Random Read Wait States. These register bits specify the number of wait states for a random
read operation in CPU clock cycles (1..15 SYSCLKOUT cycles) to the flash bank. See
Section 1.2.3.1 for more information.
See the device-specific data manual for the minimum time required for a RANDOM flash access.
RANDWAIT must be set greater than 0. That is, at least 1 random wait state must be used. In
addition, you must set RANDWAIT to a value greater than or equal to the PAGEWAIT setting. The
device will not detect and correct a PAGEWAIT value that is greater then RANDWAIT.
0000
Illegal value. RANDWAIT must be set greater then 0.
0001
One wait state per random flash access or a total of two SYSCLKOUT cycles per access.
0010
Two wait states per random flash access or a total of three SYSCLKOUT cycles per access.
0011
Three wait states per random flash access or a total of four SYSCLKOUT cycles per access.
...
1111
(1)
(2)
(3)
...
15 wait states per random flash access or a total of 16 SYSCLKOUT cycles per access. (default)
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
When writing to this register, follow the procedure described in Section 1.2.3.4.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
57
Flash and OTP Memory Blocks
www.ti.com
Figure 1-10. OTP Wait-State Register (FOTPWAIT)
15
5
4
0
Reserved
OTPWAIT
R-0
R/W-0x1F
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-8. OTP Wait-State Register (FOTPWAIT) Field Descriptions
Bit(s)
Field
Value
Description
(1) (2) (3)
15-5
Reserved
Any writes to these bits(s) must always have a value of 0.
4-0
OTPWAIT
OTP Read Wait States. These register bits specify the number of wait states for a read operation in
CPU clock cycles (1..31 SYSCLKOUT cycles) to the OTP. See CPU Read Or Fetch Access From
flash/OTP section for details. There is no PAGE mode in the OTP.
OTPWAIT must be set greater than 0. That is, a minimum of 1 wait state must be used. See the
device-specific data manual for the minimum time required for an OTP access.
00000 Illegal value. OTPWAIT must be set to 1 or greater.
00001 One wait state will be used each OTP access for a total of two SYSCLKOUT cycles per access.
00010 Two wait states will be used for each OTP access for a total of three SYSCLKOUT cycles per access.
00011 Three wait states will be used for each OTP access for a total of four SYSCLKOUT cycles per access.
...
...
11111 31 wait states will be used for an OTP access for a total of 32 SYSCLKOUT cycles per access.
(1)
(2)
(3)
58
This register is EALLOW protected. See Section 1.6.2 for more information.
This register is protected by the Code Security Module (CSM). See Section 1.3 for more information.
When writing to this register, follow the procedure described in Section 1.2.3.4.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Code Security Module (CSM)
www.ti.com
1.3
Code Security Module (CSM)
The code security module (CSM) is a security feature incorporated in 28x devices. It prevents
access/visibility to on-chip memory to unauthorized persons — that is, it prevents duplication/reverse
engineering of proprietary code.
The word secure means access to on-chip memory is protected. The word unsecure means access to onchip secure memory is not protected — that is, the contents of the memory could be read by any means
(through a debugging tool such as Code Composer Studio™, for example).
1.3.1 Functional Description
The security module restricts the CPU access to certain on-chip memory without interrupting or stalling
CPU execution. When a read occurs to a protected memory location, the read returns a zero value and
CPU execution continues with the next instruction. This, in effect, blocks read and write access to various
memories through the JTAG port or external peripherals. Security is defined with respect to the access of
on-chip memory and prevents unauthorized copying of proprietary code or data.
The device is secure when CPU access to the on-chip secure memory locations is restricted. When
secure, two levels of protection are possible, depending on where the program counter is currently
pointing. If code is currently running from inside secure memory, only an access through JTAG is blocked
(that is, through the emulator). This allows secure code to access secure data. Conversely, if code is
running from nonsecure memory, all accesses to secure memories are blocked. User code can
dynamically jump in and out of secure memory, thereby allowing secure function calls from nonsecure
memory. Similarly, interrupt service routines can be placed in secure memory, even if the main program
loop is run from nonsecure memory.
Security is protected by a password of 128-bits of data (eight 16-bit words) that is used to secure or
unsecure the device. This password is stored at the end of flash in 8 words referred to as the password
locations.
The device is unsecured by executing the password match flow (PMF), described in Section 1.3.3.2.
Table 1-9 shows the levels of security.
Table 1-9. Security Levels
PMF Executed
With Correct
Password?
Operating Mode
Program Fetch
Location
Security Description
No
Secure
Outside secure memory
No
Secure
Inside secure memory
CPU has full access.
JTAG port cannot read the secured memory contents.
Yes
Not Secure
Anywhere
Full access for CPU and JTAG port to secure memory
Only instruction fetches by the CPU are allowed to secure
memory. In other words, code can still be executed, but not
read
The password is stored in code security password locations (PWL) in flash memory (0x3F 7FF8 0x3F 7FFF). These locations store the password predetermined by the system designer.
If the password locations have all 128 bits as ones, the device is labeled unsecure. Since new flash
devices have erased flash (all ones), only a read of the password locations is required to bring the device
into unsecure mode. If the password locations have all 128 bits as zeros, the device is secure, regardless
of the contents of the KEY registers. Do not use all zeros as a password or reset the device during an
erase of the flash. Resetting the device during an erase routine can result in either an all zero or unknown
password. If a device is reset when the password locations are all zeros, the device cannot be unlocked
by the password match flow described in Section 1.3.3.2. Using a password of all zeros will seriously limit
your ability to debug secure code or reprogram the flash.
NOTE: If a device is reset while the password locations are all zero or an unknown value, the device
will be permanently locked unless a method to run the flash erase routine from secure
SARAM is embedded into the flash or OTP. Care must be taken when implementing this
procedure to avoid introducing a security hole.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
59
Code Security Module (CSM)
www.ti.com
User accessible registers (eight 16-bit words) that are used to unsecure the device are referred to as key
registers. These registers are mapped in the memory space at addresses 0x00 0AE0 - 0x00 0AE7 and
are EALLOW protected.
In addition to the CSM, the emulation code security logic (ECSL) has been implemented to prevent
unauthorized users from stepping through secure code. Any code or data access to flash, user OTP, L0
memory while the emulator is connected will trip the ECSL and break the emulation connection. To allow
emulation of secure code, while maintaining the CSM protection against secure memory reads, you must
write the correct value into the lower 64 bits of the KEY register, which matches the value stored in the
lower 64 bits of the password locations within the flash. Note that dummy reads of all 128 bits of the
password in the flash must still be performed. If the lower 64 bits of the password locations are all ones
(unprogrammed), then the KEY value does not need to match.
When initially debugging a device with the password locations in flash programmed (that is, secured), the
emulator takes some time to take control of the CPU. During this time, the CPU will start running and may
execute an instruction that performs an access to a protected ECSL area. If this happens, the ECSL will
trip and cause the emulator connection to be cut. Two solutions to this problem exist:
1. The first is to use the Wait-In-Reset emulation mode, which will hold the device in reset until the
emulator takes control. The emulator must support this mode for this option.
2. The second option is to use the “Branch to check boot mode” boot option. This will sit in a loop and
continuously poll the boot mode select pins. You can select this boot mode and then exit this mode
once the emulator is connected by re-mapping the PC to another address or by changing the boot
mode selection pin to the desired boot mode.
NOTE:
The 128-bit password (at 0x3F 7FF8 - 0x3F 7FFF) must not be programmed to zeros. Doing
so would permanently lock the device.
Addresses 0x3F 7FF0 through 0x3F 7FF5 are reserved for data variables and should not
contain program code.
Disclaimer:
Code Security Module Disclaimer
The Code Security Module ( CSM ) included on this device was designed to password
protect the data stored in the associated memory and is warranted by Texas Instruments
(TI), in accordance with its standard terms and conditions, to conform to TI's published
specifications for the warranty period applicable for this device.
TI DOES NOT, HOWEVER, WARRANT OR REPRESENT THAT THE CSM CANNOT BE
COMPROMISED OR BREACHED OR THAT THE DATA STORED IN THE ASSOCIATED
MEMORY CANNOT BE ACCESSED THROUGH OTHER MEANS. MOREOVER, EXCEPT
AS SET FORTH ABOVE, TI MAKES NO WARRANTIES OR REPRESENTATIONS
CONCERNING THE CSM OR OPERATION OF THIS DEVICE, INCLUDING ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL TI BE LIABLE FOR ANY CONSEQUENTIAL, SPECIAL, INDIRECT,
INCIDENTAL, OR PUNITIVE DAMAGES, HOWEVER CAUSED, ARISING IN ANY WAY
OUT OF YOUR USE OF THE CSM OR THIS DEVICE, WHETHER OR NOT TI HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. EXCLUDED DAMAGES INCLUDE,
BUT ARE NOT LIMITED TO LOSS OF DATA, LOSS OF GOODWILL, LOSS OF USE OR
INTERRUPTION OF BUSINESS OR OTHER ECONOMIC LOSS.
60
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Code Security Module (CSM)
www.ti.com
1.3.2 CSM Impact on Other On-Chip Resources
The CSM affects access to the on-chip resources listed in Table 1-10.
Table 1-10. Resources Affected by the CSM
Address
Block
0x00 0A80 - 0x00 0A87
Flash Configuration Registers
0x00 8000 - 0x00 87FF
L0 SARAM (2K x 16)
0x00 8800 - 0x00 8BFF
L1 DPSARAM - CLA Data RAM 0 (1K x 16)
0x00 8C00 - 0x00 8FFF
L2 DPSARAM - CLA Data RAM 1 (1K x 16)
0x00 9000 - 0x00 9FFF
L3 DPSARAM - CLA Program RAM (4K x 16)
0x3D 8000 - 0x3F 7FFF or
0x3E 8000 - 0x3F 7FFF
Flash (128K x 16)
Flash (64K x 16)
0x3D 7800 - 0x3D 7BFF
User One-Time Programmable (OTP) (1K x 16)
0x3D 7C00 - 0x3D 7FFF
TI One-Time Programmable (OTP) (1)(1K x 16)
0x00 A000 - 0x00 BFFF
L4 SARAM
(1)
Not affected by ECSL
The Code Security Module has no impact whatsoever on the following on-chip resources:
• Single-access RAM (SARAM) blocks not designated as secure - These memory blocks can be freely
accessed and code run from them, whether the device is in secure or unsecure mode.
• Boot ROM contents - Visibility to the boot ROM contents is not impacted by the CSM.
• On-chip peripheral registers - The peripheral registers can be initialized by code running from on-chip
or off-chip memory, whether the device is in secure or unsecure mode.
• PIE Vector Table - Vector tables can be read and written regardless of whether the device is in secure
or unsecure mode. Table 1-10 and Table 1-11 show which on-chip resources are affected (or are not
affected) by the CSM.
Table 1-11. Resources Not Affected by the CSM
Address
Block
0x00 0000 - 0x00 03FF
M0 SARAM (1K x 16)
0x00 0400 - 0x00 07FF
M1 SARAM (1K x16)
0x00 0800 - 0x00 0CFF
Peripheral Frame 0 (2K x 16)
0x00 0D00 - 0x00 0FFF
PIE Vector RAM (256 x 16)
0x00 6000 - 0x00 6FFF
Peripheral Frame 1 (4K x 16)
0x00 7000 - 0x00 7FFF
Peripheral Frame 2 (4K x 16)
0x00 C000 - 0x00DFFF
L5 DPSARAM
0x3F 8000 - 0x3F FFFF
Boot ROM (32K x 16)
To summarize, it is possible to load code onto the unprotected on-chip program SARAM via the JTAG
connector without any impact from the Code Security Module. The code can be debugged and the
peripheral registers initialized, independent of whether the device is in secure or unsecure mode.
1.3.3 Incorporating Code Security in User Applications
Code security is typically not employed in the development phase of a project; however, security may be
desired once the application code is finalized. Before such a code is programmed in the flash memory, a
password should be chosen to secure the device. Once a password is in place, the device is secured (that
is, programming a password at the appropriate locations and either performing a device reset or setting
the FORCESEC bit (CSMSCR.15) is the action that secures the device). From that time on, access to
debug the contents of secure memory by any means (via JTAG, code running off external/on-chip
memory, and so on) requires the supply of a valid password. A password is not needed to run the code
out of secure memory (such as in end-customer usage); however, access to secure memory contents for
debug purpose requires a password.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
61
Code Security Module (CSM)
www.ti.com
If the code-security feature is used, any one of the following directives must be used when a function
residing in secure memory calls another function which belongs to a different secure zone or to unsecure
memory:
• Use unsecure memory as stack
• Switch stack to unsecure memory before calling the function
• Unlock security before calling the function
Note that the above directives apply for any address-based-parameters passed on to the called function,
basically making sure that the called function can read/write to these address-based parameters.
Table 1-12. Code Security Module (CSM) Registers
Memory
Address
Register Name
Reset Values
Register Description
KEY Registers
0x00 - 0AE0
KEY0 (1)
0xFFFF
Low word of the 128-bit KEY register
0x00 - 0AE1
KEY1 (1)
0xFFFF
Second word of the 128-bit KEY register
0x00 - 0AE2
KEY2 (1)
0xFFFF
Third word of the 128-bit KEY register
0x00 - 0AE3
KEY3
(1)
0xFFFF
Fourth word of the 128-bit key
0x00 - 0AE4
KEY4 (1)
0xFFFF
Fifth word of the 128-bit key
0x00 - 0AE5
KEY5 (1)
0xFFFF
Sixth word of the 128-bit key
0x00 - 0AE6
KEY6
(1)
0xFFFF
Seventh word of the 128-bit key
0x00 - 0AE7
KEY7 (1)
0xFFFF
High word of the 128-bit KEY register
0x00 - 0AEF
CSMSCR (1)
0x002F
CSM status and control register
Password Locations (PWL) in Flash Memory - Reserved for the CSM password only
0x3F - 7FF8
PWL0
User defined
Low word of the 128-bit password
0x3F - 7FF9
PWL1
User defined
Second word of the 128-bit password
0x3F - 7FFA
PWL2
User defined
Third word of the 128-bit password
0x3F - 7FFB
PWL3
User defined
Fourth word of the 128-bit password
0x3F - 7FFC
PWL4
User defined
Fifth word of the 128-bit password
0x3F - 7FFD
PWL5
User defined
Sixth word of the 128-bit password
0x3F - 7FFE
PWL6
User defined
Seventh word of the 128-bit password
0x3F - 7FFF
PWL7
User defined
High word of the 128-bit password
(1)
62
These registers are EALLOW protected. Refer to Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Code Security Module (CSM)
www.ti.com
Figure 1-11. CSM Status and Control Register (CSMSCR)
15
14
1
0
FORCESEC
Reserved
SECURE
W-0
R-0x002E
R-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-13. CSM Status and Control Register (CSMSCR) Field Descriptions
Bits
Field
15
(1)
Value
FORCESEC
14-1
Reserved
0
SECURE
Description
(1)
Writing a 1 clears the KEY registers and secures the device.
0
A read always returns a zero.
1
Clears the KEY registers and secures the device. The password match flow described in
Section 1.3.3.2 must be followed to unsecure the device again.
Reserved
Read-only bit that reflects the security state of the device.
0
Device is unsecure (CSM unlocked).
1
Device is secure (CSM locked).
This register is EALLOW protected. Refer to Section 1.6.2 for more information.
1.3.3.1
Environments That Require Security Unlocking
Following are the typical situations under which unsecuring can be required:
• Code development using debuggers (such as Code Composer Studio™).
This is the most common environment during the design phase of a product.
• Flash programming using TI's flash utilities such as Code Composer Studio™ F28xx On-Chip Flash
Programmer plug-in.
Flash programming is common during code development and testing. Once the user supplies the
necessary password, the flash utilities disable the security logic before attempting to program the flash.
The flash utilities can disable the code security logic in new devices without any authorization, since
new devices come with an erased flash. However, reprogramming devices (that already contain a
custom password) require the password to be supplied to the flash utilities in order to unlock the device
to enable programming. In custom programming solutions that use the flash API supplied by TI
unlocking the CSM can be avoided by executing the flash programming algorithms from secure
memory.
• Custom environment defined by the application
In addition to the above, access to secure memory contents can be required in situations such as:
• Using the on-chip bootloader to load code or data into secure SARAM or to erase/program the flash.
• Executing code from on-chip unsecure memory and requiring access to secure memory for lookup
table. This is not a suggested operating condition as supplying the password from external code could
compromise code security.
The unsecuring sequence is identical in all the above situations. This sequence is referred to as the
password match flow (PMF) for simplicity. Figure 1-12 explains the sequence of operation that is required
every time the user attempts to unsecure a device. A code example is listed for clarity.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
63
Code Security Module (CSM)
1.3.3.2
www.ti.com
Password Match Flow
Password match flow (PMF) is essentially a sequence of eight dummy reads from password locations
(PWL) followed by eight writes to KEY registers.
Figure 1-12 shows how the PMF helps to initialize the security logic registers and disable security logic.
Figure 1-12. Password Match Flow (PMF)
Start
Device secure after
reset or runtime
KEY registers = all ones
Do dummy read of PWL
0x3F 7FF8 − 0x3F 7FFF
Device permanently secured
Are PWL =
all zeros?
Yes
CPU access is limited.
Device cannot be debugged
or reprogrammed.
No
Yes
Are PWL =
all Fs?
No
Write the password to
KEY registers
0x00 0AE0 − 0x00 0AE7
(A)
Device unsecure
Correct
password?
Yes
User can access
on-chip secure
memory
No
A
The KEY registers are EALLOW protected.
NOTE: Any read of the CSM password would yield 0x0000 until the device is unlocked. These reads are
labeled "dummy read" or a "fake read." The application reads the password locations, but will always get
0's no matter what the actual value is. What is important is the actual value of the password. If the actual
value is all 0xFFFF, then doing this "dummy read" will unlock the device. If the actual value is all 0x0000,
then no matter what the application code does, one will never be able to unlock the device. If the actual
value is something other than all 0xFFFF or 0x0000, then when the dummy read is performed, the actual
value must match the password the user provided.
64
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Code Security Module (CSM)
www.ti.com
1.3.3.3
Unsecuring Considerations for Devices With/Without Code Security
Case 1 and Case 2 provide unsecuring considerations for devices with and without code security.
Case 1: Device With Code
Security
A device with code security should have a predetermined password stored in the password locations
(0x3F 7FF8 - 0x3F 7FFF in memory). In addition, locations 0x3F 7F80 - 0x3F 7FF5 should be
programmed with all 0x0000 and not used for program and/or data storage. The following are steps to
unsecure this device:
1. Perform a dummy read of the password locations. The CSM blocks the OTP reads to password
location. Hence the dummy reads to password location can be done only from RAM (secure/unsecure)
or Flash.
2. Write the password into the KEY registers (locations 0x00 0AE0 - 0x00 0AE7 in memory).
3. If the password is correct, the device becomes unsecure; otherwise, it stays secure.
Case 2: Device Without Code Security
A device without code security should have 0x FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF (128 bits
of all ones) stored in the password locations. The following are steps to use this device:
1. At reset, the CSM will lock memory regions protected by the CSM.
2. Perform a dummy read of the password locations. The CSM blocks the OTP reads to password
location. Hence the dummy reads to password location can be done only from RAM (secure/unsecure)
or Flash.
3. Since the password is all ones, this alone will unlock all memory regions. Secure memory is fully
accessible immediately after this operation is completed.
NOTE: Even if a device is not protected with a password (all password locations all ones), the CSM
will lock at reset. Thus, a dummy read operation must still be performed on these devices
prior to reading, writing, or programming secure memory if the code performing the access is
executing from outside of the CSM protected memory region. The Boot ROM code does this
dummy read for convenience.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
65
Code Security Module (CSM)
www.ti.com
1.3.3.3.1 C Code Example to Unsecure
volatile int *CSM = (volatile int *)0x000AE0; //CSM register file
volatile int *PWL = (volatile int *)0x003F7FF8; //Password location
volatile int tmp;
int I;
// Read the 128-bits of the password locations (PWL)
// in flash at address 0x3F 7FF8 - 0x3F 7FFF
// If the device is secure, then the values read will
// not actually be loaded into the temp variable, so
// this is called a dummy read.
for (I=0; i<8; I++) tmp = *PWL++;
// If the password locations (PWL) are all = ones (0xFFFF),
// then the device will now be unsecure. If the password
// is not all ones (0xFFFF), then the code below is required
// to unsecure the CSM.
// Write the 128-bit password to the KEY registers
// If this password matches that stored in the
// PWL then the CSM will become unsecure. If it does not
// match, then the device will remain secure.
// An example password of:
// 0x11112222333344445555666677778888 is used.
asm(" EALLOW"); // Key registers are EALLOW protected
*CSM++ = 0x1111; // Register KEY0 at 0xAE0
*CSM++ = 0x2222; // Register KEY1 at 0xAE1
*CSM++ = 0x3333; // Register KEY2 at 0xAE2
*CSM++ = 0x4444; // Register KEY3 at 0xAE3
*CSM++ = 0x5555; // Register KEY4 at 0xAE4
*CSM++ = 0x6666; // Register KEY5 at 0xAE5
*CSM++ = 0x7777; // Register KEY6 at 0xAE6
*CSM++ = 0x8888; // Register KEY7 at 0xAE7
asm(" EDIS");
1.3.3.3.2 C Code Example to Resecure
volatile int *CSMSCR = 0x00AEF;
asm(" EALLOW");
//CSMSCR register
//Set FORCESEC bit
//CSMSCR register is EALLOW protected.
*CSMSCR = 0x8000;
asm("EDIS");
66
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Code Security Module (CSM)
www.ti.com
1.3.4 Do's and Don'ts to Protect Security Logic
1.3.4.1 Do's
• To keep the debug and code development phase simple, use the device in the unsecure mode; that is,
use all 128 bits as ones in the password locations (or use a password that is easy to remember). Use
a password after the development phase when the code is frozen.
• Recheck the password stored in the password locations before programming the COFF file using flash
utilities.
• The flow of code execution can freely toggle back and forth between secure memory and unsecure
memory without compromising security. To access data variables located in secure memory when the
device is secured, code execution must currently be running from secure memory.
• Program locations 0x3F 7F80 - 0x3F 7FF5 with 0x0000 when using the CSM.
1.3.4.2 Don'ts
• If code security is desired, do not embed the password in your application anywhere other than in the
password locations or security can be compromised.
• Do not use 128 bits of all zeros as the password. This automatically secures the device, regardless of
the contents of the KEY register. The device is not debuggable nor reprogrammable.
• Do not pull a reset during an erase operation on the flash array. This can leave either zeros or an
unknown value in the password locations. If the password locations are all zero during a reset, the
device will always be secure, regardless of the contents of the KEY register.
• Do not use locations 0x3F 7F80 - 0x3F 7FF5 to store program and/or data. These locations should be
programmed to 0x0000 when using the CSM.
1.3.5 CSM Features - Summary
1. The flash is secured after a reset until the password match flow described in Section 1.3.3.2 is
executed.
2. The standard way of running code out of the flash is to program the flash with the code and power up
the DSP. Since instruction fetches are always allowed from secure memory, regardless of the state of
the CSM, the code functions correctly even without executing the password match flow.
3. Secure memory cannot be modified by code executing from unsecure memory while the device is
secured.
4. Secure memory cannot be read from any code running from unsecure memory while the device is
secured.
5. Secure memory cannot be read or written to by the debugger (Code Composer Studio™) at any time
that the device is secured.
6. Complete access to secure memory from both the CPU code and the debugger is granted while the
device is unsecured.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
67
Clocking
1.4
www.ti.com
Clocking
This section describes the oscillator, PLL and clocking mechanisms, the watchdog function, and the lowpower modes.
1.4.1 Clocking and System Control
Figure 1-13 shows the various clock and reset domains.
68
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-13. Clock and Reset Domains
SYSCLKOUT
LOSPCP
(System Ctrl Regs)
PCLKCR0/1/2/3
(System Ctrl Regs)
PLL2
Clock Enables
I/O
C28x Core
CLKIN
LSPCLK
SPI-A, SPI-B, SCI-A, SCI-B
Peripheral
Registers
PF2
Peripheral
Registers
PF3
Clock Enables
I/O
USB
LOSPCP
(System Ctrl Regs)
Clock Enables
LSPCLK
McBSP
I/O
Clock Enables
GPIO
Mux
I/O
eCAN-A
Peripheral
Registers
PF3
/2
Peripheral
Registers
PF1
Peripheral
Registers
PF3
Peripheral
Registers
PF3
Peripheral
Registers
PF2
Peripheral
Registers
PF1
Clock Enables
I/O
eCAP1, eCAP2, eCAP3
eQEP1, eQEP2
Clock Enables
I/O
ePWM1, ePWM2,
ePWM3, ePWM4, ePWM5,
ePWM6, ePWM7, ePWM8
Clock Enables
I2C-A
I/O
Clock Enables
I/O
HRCAP1, HRCAP2,
HRCAP3, HRCAP4
Clock Enables
16 Ch
12-Bit ADC
ADC
Registers
PF2
PF0
Analog
GPIO
Mux
Clock Enables
6
COMP1/2/3
COMP
Registers
PF3
The PLL, clocking, watchdog and low-power modes, are controlled by the registers listed in Table 1-14.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
69
Clocking
www.ti.com
Table 1-14. PLL, Clocking, Watchdog, and Low-Power Mode Registers
ADDRESS
SIZE (x16)
BORCFG
NAME
0x00 0985
1
BOR Configuration Register
XCLK
0x00 7010
1
XCLKOUT Control
PLLSTS
0x00 7011
1
PLL Status Register
CLKCTL
0x00 7012
1
Clock Control Register
PLLLOCKPRD
0x00 7013
1
PLL Lock Period
INTOSC1TRIM
0x00 7014
1
Internal Oscillator 1 Trim Register
INTOSC2TRIM
0x00 7016
1
Internal Oscillator 2 Trim Register
PCLKCR2
0x00 7019
1
Peripheral Clock Control Register 2
LOSPCP
0x00 701B
1
Low-Speed Peripheral Clock Prescaler Register
PCLKCR0
0x00 701C
1
Peripheral Clock Control Register 0
PCLKCR1
0x00 701D
1
Peripheral Clock Control Register 1
LPMCR0
0x00 701E
1
Low Power Mode Control Register 0
PCLKCR3
0x00 7020
1
Peripheral Clock Control Register 3
PLLCR
0x00 7021
1
PLL Control Register
SCSR
0x00 7022
1
System Control and Status Register
WDCNTR
0x00 7023
1
Watchdog Counter Register
WDKEY
0x00 7025
1
Watchdog Reset Key Register
WDCR
0x00 7029
1
Watchdog Control Register
PLL2CTL
0x00 7030
1
PLL2 Configuration Register
PLL2MULT
0x00 7032
1
PLL2 Multiplier Register
PLL2STS
0x00 7034
1
PLL2 Lock Status Register
SYSCLK2CNTR
0x00 7036
1
SYSCLK2 Clock Counter Register
EPWMCFG
0x00 703A
1
ePWM DMA/CLA Configuration Register
1.4.1.1
DESCRIPTION
Enabling/Disabling Clocks to the Peripheral Modules
The PCLKCR0/1/3 registers enable/disable clocks to the various peripheral modules. There is a 2SYSCLKOUT cycle delay from when a write to the PCLKCR0/1/3 registers occurs to when the action is
valid. This delay must be taken into account before attempting to access the peripheral configuration
registers. Due to the peripheral-GPIO multiplexing at the pin level, all peripherals cannot be used at the
same time. While it is possible to turn on the clocks to all the peripherals at the same time, such a
configuration may not be useful. If this is done, the current drawn will be more than required. To avoid this,
only enable the clocks required by the application.
Figure 1-14. Peripheral Clock Control 0 Register (PCLKCR0)
15
14
13
12
11
10
9
8
Reserved
ECANAENCLK
Reserved
MCBSPAENCL
K
SCIBENCLK
SCIAENCLK
SPIBENCLK
SPIAENCLK
R-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
5
Reserved
R-0
4
3
2
1
0
I2CAENCLK
ADCENCLK
TBCLKSYNC
Reserved
HRPWMENCLK
R/W-0
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
70
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-15. Peripheral Clock Control 0 Register (PCLKCR0) Field Descriptions
Bit
Field
15
Reserved
Any writes to these bits(s) must always have a value of 0.
14
ECANAENCLK
ECAN-A clock enable
13
Reserved
12
MCBSPAENCLK
11
10
9
8
7-5
4
3
2
Value
Description
The eCAN-A module is not clocked. (default)
1
The eCAN-A module is clocked (SYSCLKOUT/2).
Any writes to these bits(s) must always have a value of 0.
MCBSP clock enable
0
The McBSP module is not clocked.
1
The McBSP module is clocked.
SCIBENCLK
SCI-B clock enable
0
The SCI-B module is not clocked.
1
The SCI-B module is clocked.
SCIAENCLK
SCI-A clock enable
(2)
(1)
0
The SCI-A module is not clocked. (default)
1
The SCI-A module is clocked by the low-speed clock (LSPCLK).
SPIBENCLK
SPI-B clock enable
(1)
0
The SPI-B module is not clocked. (default)
1
The SPI-B module is clocked by the low-speed clock (LSPCLK).
SPIAENCLK
SPI-A clock enable
(1)
0
The SPI-A module is not clocked. (default)
1
The SPI-A module is clocked by the low-speed clock (LSPCLK).
Reserved
Any writes to these bits(s) must always have a value of 0.
I2CAENCLK
I2C clock enable
0
The I2C module is not clocked. (default) (1)
1
The I2C module is clocked.
ADCENCLK
ADC clock enable
0
The ADC is not clocked. (default)
1
The ADC module is clocked
TBCLKSYNC
(2)
ePWM Module Time Base Clock (TBCLK) Sync: Allows the user to globally synchronize all enabled
ePWM modules to the time base clock (TBCLK):
0
The TBCLK (Time Base Clock) within each enabled ePWM module is stopped. (default). If,
however, the ePWM clock enable bit is set in the PCLKCR1 register, then the ePWM module will
still be clocked by SYSCLKOUT even if TBCLKSYNC is 0.
1
All enabled ePWM module clocks are started with the first rising edge of TBCLK aligned. For
perfectly synchronized TBCLKs, the prescaler bits in the TBCTL register of each ePWM module
must be set identically. The proper procedure for enabling ePWM clocks is as follows:
•
•
•
•
(1)
(1)
0
Enable ePWM module clocks in the PCLKCR1 register.
Set TBCLKSYNC to 0.
Configure prescaler values and ePWM modes.
Set TBCLKSYNC to 1.
1
Reserved
Any writes to these bits(s) must always have a value of 0.
0
HRPWMENCLK
HRPWM clock enable
0
HRPWM is not enabled.
1
HRPWM is enabled.
If a peripheral block is not used, the clock to that peripheral can be turned off to minimize power consumption.
If a peripheral block is not used, the clock to that peripheral can be turned off to minimize power consumption.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
71
Clocking
www.ti.com
Figure 1-15. Peripheral Clock Control 1 Register (PCLKCR1)
15
14
EQEP2ENCLK
EQEP1ENCLK
R/W-0
R/W-0
7
13
11
5
10
9
8
Reserved
ECAP3ENCLK
ECAP2ENCLK
ECAP1ENCLK
R-0
R/W-0
R/W-0
R/W-0
2
1
0
4
3
EPWM8ENCLK EPWM7ENCLK EPWM6ENCLK EPWM5ENCLK EPWM4ENCLK EPWM3ENCLK EPWM2ENCLK EPWM1ENCLK
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-16. Peripheral Clock Control 1 Register (PCLKCR1) Field Descriptions
Bits
15
14
13-11
10
9
8
7
6
5
4
3
2
(1)
(2)
(3)
72
Field
Value
EQEP2ENCLK
Description
(1)
eQEP2 clock enable
(2)
0
The eQEP2 module is not clocked. (default)
1
The eQEP2 module is clocked by the system clock (SYSCLKOUT).
EQEP1ENCLK
eQEP1 clock enable
(2)
0
The eQEP1 module is not clocked. (default)
1
The eQEP1 module is clocked by the system clock (SYSCLKOUT).
Reserved
Any writes to these bits(s) must always have a value of 0.
ECAP3ENCLK
eCAP3 clock enable
(2)
0
The eCAP3 module is not clocked. (default)
1
The eCAP3 module is clocked by the system clock (SYSCLKOUT).
ECAP2ENCLK
eCAP2 clock enable
(2)
0
The eCAP2 module is not clocked. (default)
1
The eCAP2 module is clocked by the system clock (SYSCLKOUT).
ECAP1ENCLK
eCAP1 clock enable
(2)
0
The eCAP1 module is not clocked. (default)
1
The eCAP1 module is clocked by the system clock (SYSCLKOUT).
EPWM8ENCLK
ePWM8 clock enable.
(3)
(2)
0
The ePWM8 module is not clocked. (default)
1
The ePWM8 module is clocked by the system clock (SYSCLKOUT).
EPWM7ENCLK
ePWM7 clock enable.
(3)
(2)
0
The ePWM7 module is not clocked. (default)
1
The ePWM7 module is clocked by the system clock (SYSCLKOUT).
EPWM6ENCLK
ePWM6 clock enable.
(3)
(2)
0
The ePWM6 module is not clocked. (default)
1
The ePWM6 module is clocked by the system clock (SYSCLKOUT).
EPWM5ENCLK
ePWM5 clock enable
(3)
(2)
0
The ePWM5 module is not clocked. (default)
1
The ePWM5 module is clocked by the system clock (SYSCLKOUT).
EPWM4ENCLK
ePWM4 clock enable.
(3)
(2)
0
The ePWM4 module is not clocked. (default)
1
The ePWM4 module is clocked by the system clock (SYSCLKOUT).
EPWM3ENCLK
ePWM3 clock enable.
(3)
(2)
0
The ePWM3 module is not clocked. (default)
1
The ePWM3 module is clocked by the system clock (SYSCLKOUT).
This register is EALLOW protected. See Section 1.6.2 for more information.
If a peripheral block is not used, the clock to that peripheral can be turned off to minimize power consumption.
To start the ePWM Time-base clock (TBCLK) within the ePWM modules, the TBCLKSYNC bit in PCLKCR0 must also be set.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-16. Peripheral Clock Control 1 Register (PCLKCR1) Field Descriptions (continued)
Bits
Field
1
Value
EPWM2ENCLK
0
Description
ePWM2 clock enable.
(1)
(3)
(2)
0
The ePWM2 module is not clocked. (default)
1
The ePWM2 module is clocked by the system clock (SYSCLKOUT).
EPWM1ENCLK
ePWM1 clock enable.
(3)
(2)
0
The ePWM1 module is not clocked. (default)
1
The ePWM1 module is clocked by the system clock (SYSCLKOUT).
Figure 1-16. Peripheral Clock Control 2 Register (PCLKCR2)
15
11
10
9
8
Reserved
12
HRCAP4ENCLK
HRCAP3ENCLK
HRCAP2ENCLK
HRCAP1ENCLK
R-0
R/W-0
R/W-0
R/W-0
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-17. Peripheral Clock Control 2 Register (PCLKCR2) Field Descriptions
Bit
15-12
Reserved
11
HRCAP4ENCLK
10
HRCAP3ENCLK
9
HRCAP2ENCLK
8
HRCAP1ENCLK
0-7
(1)
Field
Reserved
Value
Description
0
Any writes to these bits(s) must always have a value of 0.
0
The HRCAP4 module is not clocked. (default)
1
The HRCAP4 module is clocked.
0
The HRCAP3 module is not clocked. (default)
1
The HRCAP3 module is clocked.
0
The HRCAP2 module is not clocked. (default)
1
The HRCAP2 module is clocked.
0
The HRCAP1 module is not clocked. (default) (1)
1
The HRCAP1 module is clocked.
(1)
(1)
(1)
Any writes to these bits(s) must always have a value of 0.
If a peripheral block is not used, the clock to that peripheral can be turned off to minimize power consumption.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
73
Clocking
www.ti.com
Figure 1-17. Peripheral Clock Control 3 Register (PCLKCR3)
15
14
13
12
11
10
9
8
USB0ENCLK
CLA1ENCLK
Reserved
Reserved
DMAENCLK
CPUTIMER2ENCLK
CPUTIMER1ENCLK
CPUTIMER0ENCLK
R-0
R/W-0
R-1
R-0
R/W-0
R/W-1
R/W-1
R/W-1
7
2
1
0
Reserved
3
COMP3ENCLK
COMP2ENCLK
COMP1ENCLK
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-18. Peripheral Clock Control 3 Register (PCLKCR3) Field Descriptions
Bit
Field
15
USB0ENCLK
14
Description
USB module clock enable
0
Clock is disabled
1
Clock is enabled
CLA1ENCLK
CLA module clock enable
0
CLA is not clocked
1
CLA is clocked
13
Reserved
Reserved
12
Reserved
Any writes to these bits(s) must always have a value of 0.
11
DMAENCLK
DMA module clock enable
10
9
8
7:3
2
1
0
74
Value
0
DMA is not clocked
1
DMA is clocked
CPUTIMER2ENCLK
CPU Timer 2 Clock Enable
0
The CPU Timer 2 is not clocked.
1
The CPU Timer 2 is clocked.
CPUTIMER1ENCLK
CPU Timer 1 Clock Enable
0
The CPU Timer 1 is not clocked.
1
The CPU Timer 1 is clocked.
CPUTIMER0ENCLK
CPU Timer 0 Clock Enable
0
The CPU Timer 0 is not clocked.
1
The CPU Timer 0 is clocked.
Reserved
Any writes to these bits(s) must always have a value of 0.
COMP3ENCLK
Comparator3 clock enable
0
Comparator3 is not clocked
1
Comparator3 is clocked
COMP2ENCLK
Comparator2 clock enable
0
Comparator2 is not clocked
1
Comparator2 is clocked
COMP1ENCLK
Comparator1 clock enable
0
Comparator1 is not clocked
1
Comparator1 is clocked
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.1.2
Configuring the Low-Speed Peripheral Clock Prescaler
The low-speed peripheral clock prescale (LOSPCP) registers are used to configure the low-speed
peripheral clocks. See Figure 1-18 for the LOSPCP layout.
Figure 1-18. Low-Speed Peripheral Clock Prescaler Register (LOSPCP)
15
3
2
0
Reserved
LSPCLK
R-0
R/W-010
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-19. Low-Speed Peripheral Clock Prescaler Register (LOSPCP) Field Descriptions
Bits
Field
Value
Description
(1)
15-3
Reserved
Reserved
2-0
LSPCLK
These bits configure the low-speed peripheral clock (LSPCLK) rate relative to SYSCLKOUT:
If LOSPCP (2) ≠ 0, then LSPCLK = SYSCLKOUT/(LOSPCP X 2)
If LOSPCP = 0, then LSPCLK = SYSCLKOUT
(1)
(2)
000
Low speed clock = SYSCLKOUT/1
001
Low speed clock= SYSCLKOUT/2
010
Low speed clock= SYSCLKOUT/4 (reset default)
011
Low speed clock= SYSCLKOUT/6
100
Low speed clock= SYSCLKOUT/8
101
Low speed clock= SYSCLKOUT/10
110
Low speed clock= SYSCLKOUT/12
111
Low speed clock= SYSCLKOUT/14
This register is EALLOW protected. See Section 1.6.2 for more information.
LOSPCP in this equation denotes the value of bits 2:0 in the LOSPCP register.
1.4.2 OSC and PLL Block
The on-chip oscillators and phase-locked loop (PLL) block provide the clocking signals for the device, as
well as control for low-power mode (LPM) entry or exit.
1.4.2.1
Input Clock Options
The device has two internal oscillators (INTOSC1 and INTOSC2) that need no external components. It
also has an on-chip, PLL-based clock module. Figure 1-19 shows the different options that are available to
clock the device. Following are the input clock options available:
• INTOSC1 (Internal zero-pin Oscillator 1): This is the on-chip internal oscillator 1. It can provide the
clock for the Watchdog block, CPU-core and CPU-Timer 2. This is the default clock source upon reset.
• INTOSC2 (Internal zero-pin Oscillator 2): This is the on-chip internal oscillator 2. It can provide the
clock for the Watchdog block, CPU-core and CPU-Timer 2. Both INTOSC1 and INTOSC2 can be
independently chosen for the Watchdog block, CPU-core, and CPU-Timer 2. If using INTOSC2 as a
clock source, please refer to the Advisory Oscillator: CPU clock switching to INTOSC2 may result in
missing clock condition after reset in the device errata.
• XTAL OSC (Crystal or Resonator): The on-chip crystal oscillator enables the use of an external
quartz crystal or ceramic resonator. The crystal or resonator is connected to the X1/X2 pins.
• XCLKIN (External clock source): If the on-chip crystal oscillator is not used, this mode allows it to be
bypassed. The device clock is generated from an external clock source input on the XCLKIN pin. Note
that the XCLKIN is multiplexed with GPIO19 or GPIO38 pin. The XCLKIN input can be selected as
GPIO19 or GPIO38 via the XCLKINSEL bit in XCLK register. The CLKCTL[XCLKINOFF] bit disables
this clock input (forced low). If the clock source is not used or the respective pins are used as GPIOs,
the user should disable it at boot time.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
75
Clocking
www.ti.com
Figure 1-19. Clocking Options
CLKCTL[WDCLKSRCSEL]
Internal
OSC1CLK
OSC 1
(10 MHz) OSCCLKSRC1
(A)
INTOSC1TRIM Reg
0
WDCLK
CPU-Watchdog
(OSC1CLK on XRS reset)
OSCE
1
CLKCTL[INTOSC1OFF]
1 = Turn OSC Off
CLKCTL[OSCCLKSRCSEL]
CLKCTL[INTOSC1HALT]
WAKEOSC
1 = Ignore HALT
0
Internal OSC2CLK
OSC 2
(10 MHz)
(A)
INTOSC2TRIM Reg
OSCCLK
PLL
Missing-Clock-Detect Circuit
(OSC1CLK on XRS reset)
SYSCLKOUT
1
OSCE
CLKCTL[TRM2CLKPRESCALE]
CLKCTL[TMR2CLKSRCSEL]
1 = Turn OSC Off
10
CLKCTL[INTOSC2OFF]
Prescale
/1, /2, /4,
/8, /16
11
1 = Ignore HALT
SYNC
Edge
Detect
01, 10, 11
CPUTMR2CLK
01
1
00
CLKCTL[INTOSC2HALT]
SYSCLKOUT
OSCCLKSRC2
0
0 = GPIO38
1 = GPIO19
XCLK[XCLKINSEL]
PLL2CTL.PLL2CLKSRCSEL
CLKCTL[XCLKINOFF]
0
CLKCTL[OSCCLKSRC2SEL]
PLL2CTL.PLL2EN
1
DEVICECNF[SYSCLK2DIV2DIS]
GPIO19
or
GPIO38
XCLKIN
PLL2
0
/2
XCLKIN
X1
SYSCLK2 to USB
EXTCLK
(Crystal)
OSC
XTAL
CLKCTL[XTALOSCOFF]
PLL2CLK
1
HRCAP
WAKEOSC
(Oscillators enabled when this signal is high)
X2
A
0
0 = OSC on (default on reset)
1 = Turn OSC off
Register loaded from TI OTP-based calibration function.
1.4.2.1.1 Trimming INTOSCn
The nominal frequency of both INTOSC1 and INTOSC2 is 10 MHz. Two 16-bit registers are provided for
trimming each oscillator at manufacturing time (called coarse trim) and also provide a way to trim the
oscillator using software (called fine trim). The bit layout for both registers is the same, so only one is
shown with "n" in place of the numbers 1 or 2.
76
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-20. Internal Oscillator Trim (INTOSCnTRIM) Register
15
14
9
8
Reserved
FINETRIM
Reserved
R-0
R/W-0
R-0
7
0
COARSETRIM
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-20. Internal Oscillator Trim (INTOSCnTRIM) Register Field Descriptions
Bit
Field
Description (1)
15
Reserved
Any writes to these bit(s) must always have a value of 0.
14-9
FINETRIM
6-bit Fine Trim Value: Signed magnitude value (- 31 to + 31)
8
Reserved
Any writes to these bit(s) must always have a value of 0.
COARSETRIM
8-bit Coarse Trim Value: Signed magnitude value (- 127 to + 127)
7-0
(1)
Value
The internal oscillators are software trimmed with parameters stored in OTP. During boot time, the boot-ROM copies this value to the
above registers.
1.4.2.1.2 Device_Cal
The device calibration routine, Device_cal(), is programmed into TI reserved memory by the factory. The
boot ROM automatically calls the Device_cal() routine to calibrate the internal oscillators and ADC with
device-specific calibration data. During normal operation, this process occurs automatically and no action
is required by the user.
If the boot ROM is bypassed by Code Composer Studio during the development process, then the
calibration process must be initiated by the application. For working examples, see the system initialization
routines in controlSUITE.
NOTE: Failure to initialize these registers will cause the oscillators and ADC to function out of
specification. The following three steps describe how to call the Device_cal routine from an
application.
Step 1: Create a pointer to the Device_cal function as shown in Example 2-5. This #define is included in
the Header Files and Peripheral Examples.
Step 2: Call the function pointed to by Device_cal() as shown in Example 2-5. The ADC clocks must be
enabled before making this call.
Example 1-1. Calling the Device_cal() function
//Device_cal is a pointer to a function
//that begins at the address shown
# define Device_cal (void(*)(void))0x3D7C80
... ...
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
(*Device_cal)();
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0;
EDIS;
...
1.4.2.2
Configuring XCLKIN Source and XCLKOUT Options
The XCLK register is used to choose the GPIO pin for XCLKIN input and to configure the XCLKOUT pin
frequency.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
77
Clocking
www.ti.com
Figure 1-21. Clocking (XCLK) Register
15
8
Reserved
R-0
7
6
Reserved
XCLKINSEL
5
Reserved
2
1
XCLKOUTDIV
0
R-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-21. Clocking (XCLK) Field Descriptions
Bit
Field
15-7
6
(1)
Value
Description (1)
Reserved
Any writes to these bits(s) must always have a value of 0.
XCLKINSEL
XCLKIN Source Select Bit: This bit selects the source
0
GPIO38 is XCLKIN input source (this is also the JTAG port TCK source)
1
GPIO19 is XCLKIN input source
5-2
Reserved
Any writes to these bits(s) must always have a value of 0.
1-0
XCLKOUTDIV (2)
XCLKOUT Divide Ratio: These two bits select the XCLKOUT frequency ratio relative to
SYSCLKOUT. The ratios are:
00
XCLKOUT = SYSCLKOUT/4
01
XCLKOUT = SYSCLKOUT/2
10
XCLKOUT = SYSCLKOUT
11
XCLKOUT = Off
The XCLKINSEL bit in the XCLK register is reset by XRS input signal.
Refer to the device datasheet for the maximum permissible XCLKOUT frequency.
(2)
1.4.2.3
Configuring Device Clock Domains
The CLKCTL register is used to choose between the avaliable clock sources and also configure device
behavior during clock failure.
Figure 1-22. Clock Control (CLKCTL) Register
15
14
13
12
11
10
9
8
NMIRESETSEL
XTALOSCOFF
XCLKINOFF
WDHALTI
INTOSC2HALTI
INTOSC2OFF
INTOSC1HALTI
INTOSC1OFF
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
5
4
3
7
2
1
0
TMR2CLKPRESCALE
TMR2CLKSRCSEL
WDCLKSRCSEL
OSCCLKSRC2SEL
OSCCLKSRCSEL
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-22. Clock Control (CLKCTL) Register Field Descriptions
Bit
Field
15
NMIRESETSEL
Value
Description
NMI Reset Select bit. This bit selects the action when the VCOCLK counter overflows due
to a missing clock condition.
0
MCLKRS is driven without any delay (default on reset)
1
NMI Watcdog Reset (NMIRS) initiates MCLKRS
Note: The CLOCKFAIL signal is generated regardless of this mode selection.
14
78
XTALOSCOFF
System Control and Interrupts
Crystal Oscillator Off bit. This bit could be used to turn off the crystal oscillator if it is not
used.
0
Crystal oscillator on (default on reset)
1
Crystal oscillator off
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-22. Clock Control (CLKCTL) Register Field Descriptions (continued)
Bit
Field
13
XCLKINOFF
Value
Description
XCLKIN Off Bit: This bit turns external XCLKIN oscillator input off:
0
XCLKIN oscillator input on (default on reset)
1
XCLKIN oscillator input off
Note: You need to select XCLKIN GPIO pin source via the XCLKINSEL bit in the XCLK
register. See the XCLK register description for more details. XTALOSCOFF must be set to
1 if XCLKIN is used.
12
11
10
9
8
7-5
4-3
WDHALTI
Watchdog HALT Mode Ignore bit. This bit selects if the watchdog is automatically turned off
by the HALT mode or not. This feature can be used to allow the selected WDCLK source to
continue clocking the watchdog when HALT mode is active. This would enable the
watchdog to periodically wake up the device.
0
Watchdog automatically turned off by HALT (default on reset)
1
Watchdog continues to function in HALT mode.
INTOSC2HALTI
Internal Oscillator 2 HALT Mode Ignore bit. This bit selects if the internal oscillator 2 is
automatically turned off by the HALT mode or not. This feature can be used to allow the
internal oscillator to continue clocking when HALT mode is active. This would enable a
quicker wake-up from HALT.
0
Internal oscillator 2 automatically turned Off by HALT (default on reset)
1
Internal oscillator 2 continues to function in HALT mode. This feature can be used to allow
the internal oscillator to continue clocking when HALT mode is active. This would enable a
quicker wake-up from HALT.
INTOSC2OFF
Internal Oscillator 2 Off bit. This bit turns oscillator 2 off.
0
Internal ocillator 2 On (default on reset)
1
Internal oscillator 2 Off. This bit could be used by the user to turn off the internal oscillator 2
if it is not used. This selection is not affected by the missing clock detect circuit.
INTOSC1HALTI
Internal Oscillator 1 HALT Mode Ignore bit. This bit selects if the internal oscillator 1 is
automatically turned off by the HALT mode or not:
0
Internal oscillator 1 automatically turned Off by HALT (default on reset)
1
Internal oscillator 1 continues to function in HALT mode. This feature can be used to allow
the internal oscillator to continue clocking when HALT mode is active. This would enable a
quicker wake-up from HALT.
INTOSC1OFF
Internal Oscillator 1 Off bit. This bit turns oscillator 1 off:
0
Internal oscillator 1 On (default on reset)
1
Internal oscillator 1 Off. This bit could be used by the user to turn off the internal oscillator 1
if it is not used. This selection is not affected by the missing clock detect circuit.
TMR2CLKPRESCALE
CPU Timer 2 Clock Pre-Scale Value. These bits select the pre-scale value for the selected
clock source for CPU Timer 2. This selection is not affected by the missing clock detect
circuit.
000
/1 (default on reset)
001
/2
010
/4
011
/8
100
/16
101
Reserved
110
Reserved
111
Reserved
TMR2CLKSRCSEL
CPU Timer 2 Clock Source Select bit. This bit selects the source for CPU Timer 2.
00
SYSCLKOUT selected (default on reset, pre-scaler is bypassed)
01
External oscillator selected (at XOR output)
10
Internal oscillator 1 selected
11
Internal oscillator 2 selected. This selection is not affected by the missing clock detect
circuit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
79
Clocking
www.ti.com
Table 1-22. Clock Control (CLKCTL) Register Field Descriptions (continued)
Bit
2
1
0
Field
Value
WDCLKSRCSEL
Description
Watchdog Clock Source Select bit. This bit selects the source for WDCLK. On XRS low
and after XRS goes high, internal oscillator 1 is selected by default. User would need to
select external oscillator or internal oscillator 2 during their initialization process. If missing
clock detect circuit detects a missing clock, then this bit is forced to 0 and internal oscillator
1 is selected. The user changing this bit does not affect the PLLCR value.
0
Internal oscillator 1 selected (default on reset)
1
External oscillator or Internal oscillator 2 selected
OSCCLKSRC2SEL
Oscillator 2 Clock Source Select bit. This bit selects between internal oscillator 2 or external
oscillator. This selection is not affected by the missing clock detect circuit.
0
External oscillator selected (default on reset)
1
Internal oscillator 2 selected
OSCCLKSRCSEL
Oscillator Clock Source Select bit. This bit selects the source for OSCCLK. On XRS low
and after XRS goes high, internal oscillator 1 is selected by default. The user would need to
select external oscillator or internal oscillator 2 during their initialization process. Whenever
the user changes the clock source using these bits, the PLLCR register will be
automatically forced to zero. This prevents potential PLL overshoot. The user will then have
to write to the PLLCR register to configure the appropriate PLL multiplier value. The user
can also configure the PLL lock period using the PLLLOCKPRD register to reduce the lock
time if necessary. If the missing clock detect circuit detects a missing clock, then this bit is
automatically forced to 0 and internal oscillator 1 is selected. The PLLCR register will also
be automatically forced to zero to prevent any potential overshoot.
0
Internal oscillator 1 selected (default on reset)
1
External oscillator or Internal oscillator 2 selected note. If users wish to use oscillator 2 or
external oscillator to clock the CPU, they should configure the OSCCLKSRC2SEL bit first,
and then write to the OSCCLKSRCSEL bit next.
1.4.2.3.1 Switching the Input Clock Source
The following procedure may be used to switch clock sources:
1. Use CPU Timer 2 to detect if clock sources are functional.
2. If any of the clock sources is not functional, turn off the respective clock source (using the respective
CLKCTL bit).
3. Switch over to a new clock source.
4. If clock source switching occurred while in Limp Mode, then write a 1 to MCLKCLR will be issued to
exit Limp Mode.
If OSCCLKSRC2 (an external Crystal [XTAL] or oscillator [XCLKIN input] or Internal Oscillator 2
[INTOSC2]) is selected as the clock source and a missing clock is detected, the missing clock detect
circuit will automatically switch to Internal Oscillator 1 (OSCCLKSRC1) and generate a CLOCKFAIL
signal. In addition, the PLLCR register is forced to zero (PLL is bypassed) to prevent any potential
overshoot. The user can then write to the PLLCR register to re-lock the PLL. Under this situation, the
missing clock detect circuit will be automatically re-enabled (PLLSTS[MCLKSTS] bit will be automatically
cleared). If Internal Oscillator 1 (OSCCLKSRC1) should also fail, then under this situation, the missing
clock detect circuit will remain in limp mode. The user will have to re-enable the logic via the
PLLSTS[MCLKCLR] bit.
1.4.2.3.2 Switching to INTOSC2 in the Absence of External Clocks
For the device to work properly upon a switch from INTOSC1 to INTOSC2 in the absence of any external
clock, the application code needs to write a 1 to the CLKCTL.XTALOSCOFF and CLKCTL.XCLKINOFF
bits first. This is to indicate to the clock switching circuitry that external clocks are not present. Only after
this should the OSCCLKSRCSEL and OSCCLKSRC2SEL bits be written to. Note that this sequence
should be separated into two writes as follows:
First write → CLKCTL.XTALOSCOFF=1 and CLKCTL.XCLKINOFF=1
Second write → CLKCTL.OSCCLKLSRCSEL=1 and CLKCTL.OSCCLKSRC2SEL=1
80
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
The second write should not alter the values of XTALOSCOFF and XCLKINOFF bits. If controlSUITE,
supplied by Texas Instruments is used, clock switching can be achieved with the following code snip:
SysCtrlRegs.CLKCTL.all = 0x6000; // Set XTALOSCOFF=1 & XCLKINOFF=1
SysCtrlRegs.CLKCTL.all = 0x6003; // Set OSCCLKLSRCSEL=1 & OSCCLKSRC2SEL=1
The system initialization file DSP2806x_SysCtrl.c, provided as part of the header files, also contain
functions to switch to different clock sources. If an attempt is made to switch from INTOSC1 to INTOSC2
without the write to the XTALOSCOFF and XCLKINOFF bits, a missing clock will be detected due to the
absence of external clock source (even after the proper source selection). The PLLCR will be zeroed out
and the device will automatically clear the MCLKSTS bit and switch back INTOSC1.
1.4.2.4
PLL-based Clock Module
This device has two PLL modules. “PLL” refers to the main PLL that generats the clock for the core and all
peripherals. PLL2 refers to the PLL that generates the clock for the USB and HRCAP modules. The figure
below shows the OSC and PLL block diagram.
Figure 1-23. OSC and PLL Block
OSCCLK
OSCCLK
0
PLLSTS[OSCOFF]
PLL
OSCCLK or
VCOCLK
VCOCLK
n
/1
/2
CLKIN
To
CPU
/4
n≠ 0
PLLSTS[PLLOFF]
PLLSTS[DIVSEL]
4-bit Multiplier PLLCR[DIV]
The following is applicable for devices that have X1/X2 pins:
When using XCLKIN as the external clock source, you must tie X1 low and leave X2 disconnected.
Table 1-23. Possible PLL Configuration Modes
Remarks
PLLSTS[DIVSEL] (1)
CLKIN and
SYSCLKOUT (2)
PLL Off
Invoked by the user setting the PLLOFF bit in the PLLSTS register. The
PLL block is disabled in this mode. The CPU clock (CLKIN) can then be
derived directly from any one of the following sources: INTOSC1,
INTOSC2, XCLKIN pin, or X1/X2 pins. This can be useful to reduce
system noise and for low power operation. The PLLCR register must first
be set to 0x0000 (PLL Bypass) before entering this mode.
0, 1
2
3
OSCCLK/4
OSCCLK/2
OSCCLK/1
PLL Bypass
PLL Bypass is the default PLL configuration upon power-up or after an
external reset (XRS). This mode is selected when the PLLCR register is
set to 0x0000 or while the PLL locks to a new frequency after the
PLLCR register has been modified. In this mode, the PLL itself is
bypassed but the PLL is not turned off.
0, 1
2
3
OSCCLK/4
OSCCLK/2
OSCCLK/1
0, 1
2
3
OSCCLK*n/4
OSCCLK*n/2
OSCCLK*n/1
PLL Mode
PLL Enabled Achieved by writing a non-zero value n into the PLLCR register. Upon
writing to the PLLCR, the device will switch to PLL Bypass mode until
the PLL locks.
(1)
(2)
1.4.2.5
PLLSTS[DIVSEL] must be 0 before writing to the PLLCR and should be changed only after PLLSTS[PLLLOCKS] = 1. See
Figure 1-24.
The input clock and PLLCR[DIV] bits should be chosen in such a way that the output frequency of the PLL (VCOCLK) is a
minimum of 50 MHz.
PLL Control (PLLCR) Register
The PLLCR register is used to change the PLL multiplier of the device. Before writing to the PLLCR
register, the following requirements must be met:
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
81
Clocking
•
www.ti.com
The PLLSTS[DIVSEL] bit must be 0 (CLKIN divide by 4 enabled). Change PLLSTS[DIVSEL] only after
the PLL has completed locking, that is, after PLLSTS[PLLLOCKS] = 1.
Once the PLL is stable and has locked at the new specified frequency, the PLL switches CLKIN to the
new value as shown in Table 1-24. When this happens, the PLLLOCKS bit in the PLLSTS register is set,
indicating that the PLL has finished locking and the device is now running at the new frequency. User
software can monitor the PLLLOCKS bit to determine when the PLL has completed locking. Once
PLLSTS[PLLLOCKS] = 1, DIVSEL can be changed.
Follow the procedure in Figure 1-24 any time you are writing to the PLLCR register.
82
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-24. PLLCR Change Procedure Flow Chart
Start
PLLSTS[MCLKSTS]
= 1?
Yes
No
Device is operating in limp
mode. Take appropriate
action for your system.
Do not write to PLLCR.
Yes
Set PLLSTS[DIVSEL] = 0
PLLSTS[DIVSEL]
= 2 or 3?
No
Set PLLSTS[MCLKOFF] = 1
to disable failed oscillator
detect logic
Set new PLLCR value
Is
PLLSTS[PLLLOCKS]
= 1?
No
Continue to wait for PLL
to lock. This is important
for time-critical software.
Yes
Set PLL[MCLKOFF] = 0
to enable failed oscillator
detect logic.
If required,
PLLSTS [DIVSEL]
can now be changed.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
83
Clocking
1.4.2.6
www.ti.com
PLL Control, Status and XCLKOUT Register Descriptions
The DIV field in the PLLCR register controls whether the PLL is bypassed or not and sets the PLL
clocking ratio when it is not bypassed. PLL bypass is the default mode after reset. Do not write to the DIV
field if the PLLSTS[DIVSEL] bit is 10 or 11, or if the PLL is operating in limp mode as indicated by the
PLLSTS[MCLKSTS] bit being set. See the procedure for changing the PLLCR described in Figure 1-24.
Figure 1-25. PLLCR Register Layout
15
5
4
0
Reserved
DIV
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-24. PLL Settings (1)
SYSCLKOUT (CLKIN) (2)
PLLCR[DIV] Value
(1)
(2)
(3)
(3)
PLLSTS[DIVSEL] = 0 or 1
PLLSTS[DIVSEL] = 2
PLLSTS[DIVSEL] = 3
0000 (PLL bypass)
OSCCLK/4 (Default)
OSCCLK/2
OSCCLK/1
00001
(OSCCLK * 1)/4
(OSCCLK * 1)/2
(OSCCLK * 1)/1
00010
(OSCCLK * 2)/4
(OSCCLK * 2)/2
(OSCCLK * 2)/1
00011
(OSCCLK * 3)/4
(OSCCLK * 3)/2
(OSCCLK * 3)/1
00100
(OSCCLK * 4)/4
(OSCCLK * 4)/2
(OSCCLK * 4)/1
00101
(OSCCLK * 5)/4
(OSCCLK * 5)/2
(OSCCLK * 5)/1
00110
(OSCCLK * 6)/4
(OSCCLK * 6)/2
(OSCCLK * 6)/1
00111
(OSCCLK * 7)/4
(OSCCLK * 7)/2
(OSCCLK * 7)/1
01000
(OSCCLK * 8)/4
(OSCCLK * 8)/2
(OSCCLK * 8)/1
01001
(OSCCLK * 9)/4
(OSCCLK * 9)/2
(OSCCLK * 9)/1
01010
(OSCCLK * 10)/4
(OSCCLK * 10)/2
(OSCCLK * 10)/1
01011
(OSCCLK * 11)/4
(OSCCLK * 11)/2
(OSCCLK * 11)/1
01100
(OSCCLK * 12)/4
(OSCCLK * 12)/2
(OSCCLK * 12)/1
01101
(OSCCLK * 13)/4
(OSCCLK * 13)/2
(OSCCLK * 13)/1
01110
(OSCCLK * 14)/4
(OSCCLK * 14)/2
(OSCCLK * 14)/1
01111
(OSCCLK * 15)/4
(OSCCLK * 15)/2
(OSCCLK * 15)/1
10000
(OSCCLK * 16)/4
(OSCCLK * 16)/2
(OSCCLK * 16)/1
10001
(OSCCLK * 17)/4
(OSCCLK * 17)/2
(OSCCLK * 17)/1
10010
(OSCCLK * 18)/4
(OSCCLK * 18)/2
(OSCCLK * 18)/1
10011-11111
Reserved
Reserved
Reserved
This register is EALLOW protected. See Section 1.6.2 for more information.
PLLSTS[DIVSEL] must be 0 or 1 before writing to the PLLCR and should be changed only after PLLSTS[PLLLOCKS] = 1. See
Figure 1-24.
The PLL control register (PLLCR) and PLL Status Register (PLLSTS) are reset to their default state by the XRS signal or a
watchdog reset only. A reset issued by the debugger or the missing clock detect logic have no effect.
Figure 1-26. PLL Status Register (PLLSTS)
15
14
9
8
NORMRDYE
Reserved
DIVSEL
R/W-0
R-0
R/W-0
7
6
5
4
3
2
1
0
DIVSEL
MCLKOFF
OSCOFF
MCLKCLR
MCLKSTS
PLLOFF
Reserved
PLLLOCKS
R/W-0
R/W-0
R/W-0
W-0
R-0
R/W-0
R-0
R-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
84
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-25. PLL Status Register (PLLSTS) Field Descriptions
Bits
15
Field
Value
NORMRDYE
Description
(1) (2)
NORMRDY Enable Bit: This bit selects if NORMRDY signal from VREG gates the PLL from turning
on when the VREG is out of regulation. It may be required to keep the PLL off while coming in and
out of HALT mode and this signal can be used for that purpose:
0
NORMRDY signal from VREG does not gate PLL (PLL ignores NORMRDY)
1
NORMRDY signal from VREG will gate PLL (PLL off when NORMRDY low)
The NORMRDY signal from the VREG is low when the VREG is out of regulation and this signal
will go high if the VREG is within regulation.
14-9
Reserved
Any writes to these bits(s) must always have a value of 0.
8:7
DIVSEL
Divide Select: This bit selects between /4, /2, and /1 for CLKIN to the CPU.
The configuration of the DIVSEL bit is as follows:
6
5
00, 01
Select Divide By 4 for CLKIN
10
Select Divide By 2 for CLKIN
11
Select Divide By 1 for CLKIN
MCLKOFF
Missing clock-detect off bit
0
Main oscillator fail-detect logic is enabled. (default)
1
Main oscillator fail-detect logic is disabled and the PLL will not issue a limp-mode clock. Use this
mode when code must not be affected by the detection circuit. For example, if external clocks are
turned off.
OSCOFF
Oscillator Clock Off Bit
0
The OSCCLK signal from X1/X2 or XCLKIN is fed to the PLL block. (default)
1
The OSCCLK signal from X1/X2 or XCLKIN is not fed to the PLL block. This does not shut down
the internal oscillator. The OSCOFF bit is used for testing the missing clock detection logic.
When the OSCOFF bit is set, do not enter HALT or STANDBY modes or write to PLLCR as these
operations can result in unpredictable behavior.
When the OSCOFF bit is set, the behavior of the watchdog is different depending on which input
clock source (X1, X1/X2 or XCLKIN) is being used:
• X1/X2: The watchdog is not functional.
• XCLKIN: The watchdog is functional and should be disabled before setting OSCOFF.
4
3
MCLKCLR
Missing Clock Clear Bit.
0
Writing a 0 has no effect. This bit always reads 0.
1
Forces the missing clock detection circuits to be cleared and reset. If OSCCLK is still missing, the
detection circuit will again generate a reset to the system, set the missing clock status bit
(MCLKSTS), and the CPU will be clocked by the PLL operating at a limp mode frequency.
MCLKSTS
Missing Clock Status Bit. Check the status of this bit after a reset to determine whether a missing
oscillator condition was detected. Under normal conditions, this bit should be 0. Writes to this bit
are ignored. This bit will be cleared by writing to the MCLKCLR bit or by forcing an external reset.
0
Indicates normal operation. A missing clock condition has not been detected.
1
Indicates that OSCCLK was detected as missing. The main oscillator fail detect logic has reset the
device and the CPU is now clocked by the PLL operating at the limp mode frequency.
When the missing clock detection circuit automatically switches between OSCCLKSRC2 to
OSCCLKSRC1 (upon detecting OSCCLKSRC2 failure), this bit will be automatically cleared and
the missing clock detection circuit will be re-enabled. For all other cases, the user needs to reenable this mode by writing a 1 to the MCLKCLR bit.
2
PLLOFF
PLL Off Bit. This bit turns off the PLL. This is useful for system noise testing. This mode must only
be used when the PLLCR register is set to 0x0000.
0
PLL On (default)
1
PLL Off. While the PLLOFF bit is set the PLL module will be kept powered down.
The device must be in PLL bypass mode (PLLCR = 0x0000) before writing a 1 to PLLOFF. While
the PLL is turned off (PLLOFF = 1), do not write a non-zero value to the PLLCR.
The STANDBY and HALT low power modes will work as expected when PLLOFF = 1. After waking
up from HALT or STANDBY the PLL module will remain powered down.
1
(1)
(2)
Reserved
Any writes to these bits(s) must always have a value of 0.
This register is reset to its default state only by the XRS signal or a watchdog reset. It is not reset by a missing clock or debugger reset.
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
85
Clocking
www.ti.com
Table 1-25. PLL Status Register (PLLSTS) Field Descriptions (continued)
Bits
0
Field
Value
PLLLOCKS
Description
(1) (2)
PLL Lock Status Bit.
0
Indicates that the PLLCR register has been written to and the PLL is currently locking. The CPU is
clocked by OSCCLK/2 until the PLL locks.
1
Indicates that the PLL has finished locking and is now stable.
Figure 1-27. PLL Lock Period (PLLLOCKPRD) Register
15
0
PLLLOCKPRD
R/W-FFFFh
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-26. PLL Lock Period (PLLLOCKPRD) Register Field Descriptions
Bit
15:0
Field
Value
PLLLOCKPRD
Description (1)
(2)
PLL Lock Period Counter Value
These 16 bits configure the PLL lock period. This value is programmable, so shorter PLL lock-time
can be programmed by user. The user needs to compute the number of OSCCLK cycles (based on
the OSCCLK value used in the design) and update this register.
PLL Lock Period
FFFFh
65535 OSCLK Cycles (default on reset)
FFFEh
65534 OSCLK Cycles
...
(1)
(2)
86
...
0001h
1 OSCCLK Cycle
0000h
0 OSCCLK Cycles (no PLL lock period)
PLLLOCKPRD is affected by the XRSn signal only.
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.2.7
PLL2 Registers
In addition to the main PLL that clocks the CPU, a second PLL (PLL2) exists for clocking the USB and
HRCAP modules. Figure 1-28 shows the possible input and output configurations for PLL2.
Figure 1-28. PLL2 Input and Output Configurations
PLL2CTL.PLL2CLKSRCSEL
PLL2CTL.PLL2EN
INTOSC1
DEVICECNF.SYSCLK2DIV2DIS
X1
XCLKIN
PLL2
0
/2
SYSCLK2 to
USB
1
PLL2CLK
HRCAP
Figure 1-29. PLL2 Configuration (PLL2CTL) Register (EALLOW protected)
15
3
2
1
0
Reserved
PLL2EN
PLL2CLKSRCSEL
R-0
R/W-1
R/W-00
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-27. PLL2 Configuration (PLL2CTL) Register Field Descriptions
Bit
Field
Value
Description
15-3
Reserved
Any writes to these bits(s) must always have a value of 0.
2
PLL2EN
PLL enabled or disabled: This bit decides if PLL2 is enabled or not
1-0
PLL2CLKSRCSE
L
0
PLL2 is powered off – clock to SYSCLK2 is a direct feed from input clock source as decided by the
PLL2CLKSRCSEL bit
1
PLL2 is enabled and clock to SYSCLK2 will depend on the DEVICECNF[SYSCLK2DIV2DIS] bit.
PLL2 Clock Source Select Bits: These bit select the source for the PLL2 input clock:
00
Internal oscillator 1 is selected as clock to PLL2
01
Internal oscillator 1 is selected as clock to PLL2
10
X1 clock source is selected as clock to PLL2
11
GPIO_XCLKIN is selected as clock to PLL2
On XRS low and after XRS goes high, X1 is selected as clock source to the USB PLL by default.
The user would need to select X1 or GPIO_XCLKIN as clock source during their initialization
process.
Whenever the user changes the clock source using these bits, the DEVICECNF[SYSCLK2DIV2DIS]
bit will be automatically forced to zero. This prevents potential PLL overshoot. The user will then
have to write to the DEVICECNF[SYSCLK2DIV2DIS] bit to configure the appropriate divisor ratio.
Note: PLL2CTL is affected by the XRS signal only.
Figure 1-30. PLL2 Multiplier (PLL2MULT) Register (EALLOW protected)
15
4
3
0
Reserved
PLL2MULT
R-0
R/W-0x0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
87
Clocking
www.ti.com
Table 1-28. PLL2 Multiplier (PLL2MULT) Register Field Descriptions
Bit
Field
Value
Description
15-4
Reserved
Any writes to these bits(s) must always have a value of 0.
3-0
PLL2MULT
PLL2 Multiplier. This bit field determines the output frequency of PLL2
(PLL2Fout) for a given input (PLL2Fin)
0000 PLL2Fout = PLL2Fin (PLLBYPASS)
0001 PLL2Fout = PLL2Fin * 1
0010 PLL2Fout = PLL2Fin * 2
0011 PLL2Fout = PLL2Fin * 3
...
...
1111 PLL2Fout = PLL2Fin * 15
PLL2 should be enabled (PLL2EN = 1) prior to setting these bits.
Note: PLL2MULT is affected by XRSn signal only.
Figure 1-31. PLL2 Lock Status (PLL2STS) Register
15
1
0
Reserved
PLL2LOCKS
R-0
R-0x0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset Note: PLL2STS is affected by XRnS signal only.
Table 1-29. PLL2 Lock Status (PLL2STS) Register Field Descriptions
Bit
Field
Value
Description
15-4
Reserved
Any writes to these bits(s) must always have a value of 0.
3-0
PLL2MULT
PLL2 Lock Status Bit: This bit indicates whether PLL2 is locked or not. When the PLL2MULT
setting is modified, a counter is loaded with the value from the main PLL PLLLOCKPRD bit field
and the PLL2LOCKS bit is cleared. Once set to a non-zero value, the counter begins downcounting. Upon reaching zero, the counter stops and the PLL2LOCKS bit is set.
0
PLL2 is not yet locked
1
PLL2 is locked
Note: PLL2STS is affected by XRSn signal only.
Figure 1-32. SYSCLK2 Clock Counter (SYSCLK2CNTR) Register
15
0
COUNT
R/C-0x0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-30. SYSCLK2 Clock Counter (SYSCLK2CNTR) Register Field Descriptions
Bit
15-0
Field
Value
COUNT
Description
SYSCLK2 Counter Bit Field: This bit field is a free-running counter based off the SYSCLK2 clock.
Software can compare the rate of update of this bit field against the rate of update of a CPU Timer
to determine at what approximate frequency the SYSCLK2 clock is running.
Note 1: Since COUNT will begin updating as soon as reset is released, the value of this register after reset will be non-zero before software
can read it.
Note 2: SYSCLK2CNTR will tap off the clock after the /2 from PLL2OUT if it is enabled. If not enabled it will tap off PLL2OUT.
88
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-33. EPWM DMA/CLA Configuration (EPWMCFG) Register
15
1
0
Reserved
CONFIG
R-0
R/W-0X0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-31. EPWM DMA/CLA Configuration (EPWMCFG) Register Field Descriptions
Bit
Field
15-1
Reserved
0
CONFIG
1.4.2.8
Value
Description
Any writes to these bits(s) must always have a value of 0.
EPWM DMA Enable Bit:
0
The EPWM blocks are connected to the CLA bus and are inaccessible to the DMA bus
1
The EPWM blocks are connected to the DMA bus and are inaccessible to the CLA bus
Input Clock Fail Detection
It is possible for the clock source of the device to fail. When the PLL is not disabled, the main oscillator fail
logic allows the device to detect this condition and handle it as described in this section.
Two counters are used to monitor the presence of the OSCCLK signal as shown in Figure 1-34. The first
counter is incremented by the OSCCLK signal itself. When the PLL is not turned off, the second counter is
incremented by the VCOCLK coming out of the PLL block. These counters are configured such that when
the 7-bit OSCCLK counter overflows, it clears the 13-bit VCOCLK counter. In normal operating mode, as
long as OSCCLK is present, the VCOCLK counter will never overflow.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
89
Clocking
www.ti.com
Figure 1-34. Clocking and Reset Logic
WDINT
WD
Block
WAKEINT
WDHALT
Low Power
Modes Block
WDHALTI
(ignore HALT)
XRS
TZ5
CLOCKFAIL
CLKCTL Reg
ePWM1.../ePWMx
VREGHALT
VREG
NORMRDY
GPIO
Mux
PIE
LPMINT
WAKEOSC
HALT
STANDBY
WDRST
WDCLK
XCLKIN
X1 (Vcore)
X2 (Vcore)
CLOCKFAIL
Internal
CPUTMR2CLK
&
OSCCLK
External
Oscillators
CPU Timer2
NMI
WD
NMIRS
PLLDIS
(used in device test mode)
WAKEOSC
OSCCLK
0
NMI
SYSCLKOUT
CLKIN
PLLDIS (turn off when 0, used in device test mode)
PLLCLK
PLLSTS[PLLOFF]
Clock
Switch
Logic
(turn off when 1)
res
clk
PLLSTS[OSCOFF]
1
PLLLOCKS
MCLKOFF
(turn off when 1)
NORMRDYE
MCLKSTS
MCLKCLR
clear
PLL Lock
Counter
clk
ovf
(16 bits)
PLLLOCKPRD Reg
VCOCLK
Counter
(13 bits)
clear clear
off
ovf
C28
Core
GPIO
Mux
res
PLL
clear
XCLKOUT
OSCCLK
Counter
clk
ovf
(7 bits)
XCLK Reg
MCLKRES
clear clear
PLLSTS
Reg
PLLCR Reg
0
res
1
DIVSEL
(/4 on reset)
VCOCLK
(OSCCLK * PLLCR ratio)
PLL
/1,
/2,
/4
/1, /2,
/4, off
SYSCLKOUT
Sync
XRS
If the OSCCLK input signal is missing, then the PLL will output a default limp mode frequency and the
VCOCLK counter will continue to increment. Since the OSCCLK signal is missing, the OSCCLK counter
will not increment, and therefore, the VCOCLK counter is not periodically cleared. Eventually, the
VCOCLK counter overflows. This signals a missing clock condition to the missing-clock-detection logic.
What happens next is based on which clock source has been chosen for the PLL and the value of
NMIRESETSEL.
90
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Case A:
INTOSC1 is used as the clock source. NMIWD is disabled (NMIRESETSEL = 0)
Failure of INTOSC1 causes PLL to issue a limp mode clock. The system continues to function with the
limp clock and so does the VCOCLK counter. Eventually, VCOCLK counter overflows and issues a
CLOCKFAIL signal (MCLKSTS bit is set) and the missing clock detection logic resets the CPU,
peripherals, and other device logic by way of MCLKRS. The exact delay (from the time the clock was
stopped to the time a reset is asserted) depends on the VCOCLK counter value when the INTOSC1 clock
vanished. The MCLKSTS bit is only affected by XRS, not by a missing clock reset. So, after a reset, code
can examine this bit to determine if the reset was due to a missing clock and take appropriate action. Note
that even though the CLOCKFAIL signal is generated, the NMIWDCNTR will not count.
Case B:
INTOSC1 is used as the clock source. NMIWD is enabled (NMIRESETSEL = 1)
Failure of INTOSC1 causes PLL to issue a limp mode clock. The system continues to function with the
limp clock and so does the VCOCLK counter. Eventually, the VCOCLK counter overflows and issues
CLOCKFAIL (MCLKSTS bit is set), which asserts the NMI and starts the NMIWDCNTR. If NMIWDCNTR
is allowed to reach the NMIWDPRD value, a reset (MCLKRS) is asserted. In the interim period, the
application could choose to gracefully shut down the system before a reset is generated. Inside the
NMI_ISR, the flags in NMIFLG register may be cleared, which prevents a reset.
In
•
•
•
case A, reset is inevitable and cannot be delayed. In case B, the software can
Choose to clear the flags to prevent a reset.
Perform a graceful shutdown of the system.
Switch to OSCCLKSRC2, if need be.
Case C:
OSCCLKSRC2 (INTOSC2 or X1/X2 or XCLKIN) is used as the clock source. NMIWD is disabled
(NMIRESETSEL = 0)
When the VCOCLK counter overflows (due to loss of OSCCLKSRC2), the Missing-Clock-Detect circuit
recognizes the missing clock condition. CLOCKFAIL will be generated (but it is of no consequence). Since
NMIRESETSEL=0, the device will be reset. No switching of clock source happens, since the device is
reset. This is similar to Case A.
Case D:
OSCCLKSRC2 (INTOSC2 or X1/X2 or XCLKIN) is used as the clock source. NMIWD is enabled
(NMIRESETSEL = 1)
When the VCOCLK counter overflows (due to loss of OSCCLKSRC2), the Missing-Clock-Detect circuit
recognizes the missing clock condition. CLOCKFAIL is generated and OSCCLK is switched to INTOSC1.
For this reason, INTOSC1 should not be disabled in user code. The MCLKSTS bit is set, but cleared
automatically after the clock switch. PLLCR is zeroed. The user must reconfigure PLLCR. Since
NMIRESETSEL=1, NMI interrupt will be triggered and PLL could be reconfigured there. Inside the
NMI_ISR, the flags in the NMIFLG register may be cleared, which prevents a reset. If INTOSC1 also fails,
this becomes similar to Case B. The advantage of using OSCCLKSRC2 as the source for the PLL is that
the clock source is automatically switched to INTOSC1 upon loss of OSCCLKSRC2.
1.4.2.9
Missing Clock Reset and Missing Clock Status
The MCLKRS is an internal reset only. The external XRS pin of the device is not pulled low by MCLKRS ,
and the PLLCR and PLLSTS registers are not reset. This is the default behavior at reset. In addition to
resetting the device, the missing clock detect logic sets the PLLSTS[MCLKSTS] register bit. When the
MCLKSTS bit is 1, this indicates that the missing oscillator detect logic has reset the part and that the
CPU is now running at the limp mode frequency.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
91
Clocking
www.ti.com
Software should check the PLLSTS[MCLKSTS] bit after a reset to determine if the device was reset by
MCLKRS due to a missing clock condition. If MCLKSTS is set, then the firmware should take the action
appropriate for the system such as a system shutdown. The missing clock status can be cleared by writing
a 1 to the PLLSTS[MCLKCLR] bit. This will reset the missing clock detection circuits and counters. If
OSCCLK is still missing after writing to the MCLKCLR bit, then the VCOCLK counter again overflows and
the process will repeat.
NOTE: Applications in which the correct CPU operating frequency is absolutely critical should
implement a mechanism by which the DSP will be held in reset should the input clocks ever
fail. For example, an R-C circuit may be used to trigger the XRS pin of the DSP should the
capacitor ever get fully charged. An I/O pin may be used to discharge the capacitor on a
periodic basis to prevent it from getting fully charged. Such a circuit would also help in
detecting failure of the flash memory.
The following precautions and limitations should be kept in mind:
• Use the proper procedure when changing the PLL Control Register. Always follow the procedure
outlined in Figure 1-24 when modifying the PLLCR register.
• Do not write to the PLLCR register when the device is operating in limp mode. When writing to
the PLLCR register, the device switches to the CPU's CLKIN input to OSCCLK/2. When operating after
limp mode has been detected, OSCCLK may not be present and the clocks to the system will stop.
Always check that the PLLSTS[MCLKSTS] bit = 0 before writing to the PLLCR register as described in
Figure 1-24.
• Do not enter HALT low power mode when the device is operating in limp mode. If you try to enter
HALT mode when the device is already operating in limp mode then the device may not properly enter
HALT. The device may instead enter STANDBY mode or may hang and you may not be able to exit
HALT mode. For this reason, always check that the PLLSTS[MCLKSTS] bit = 0 before entering HALT
mode.
The following list describes the behavior of the missing clock detect logic in various operating modes:
• PLL by-pass mode
When the PLL control register is set to 0x0000, the PLL is bypassed. Depending on the state of the
PLLSTS[DIVSEL] bit, OSCCLK, OSCCLK/2, or OSCCLK/4 is connected directly to the CPU's input
clock, CLKIN. If the OSCCLK is detected as missing, the device will automatically switch to the PLL’s
limp mode clock. Further behavior is determined by the clock source used for OSCCLK and the value
of NMIRESETSEL bit as explained before.
• STANDBY low power mode
In this mode, the CLKIN to the CPU is stopped. If a missing input clock is detected, the missing clock
status bit will be set and the device will generate a missing clock reset. If the PLL is in by-pass mode
when this occurs, then one-half of the PLL limp frequency will automatically be routed to the CPU. The
device will now run at the PLL limp mode frequency or at one-half or one-fourth of the PLL limp mode
frequency, depending on the state of the PLLSTS[DIVSEL] bit.
• HALT low power mode
In HALT low power mode, all of the clocks to the device are turned off. When the device comes out of
HALT mode, the oscillator and PLL will power up. The counters that are used to detect a missing input
clock (VCOCLK and OSCCLK) will be enabled only after this power-up has completed. If VCOCLK
counter overflows, the missing clock detect status bit will be set and the device will generate a missing
clock reset. If the PLL is in by-pass mode when the overflow occurs, then one-half of the PLL limp
frequency will automatically be routed to the CPU. The device will now run at the PLL limp mode
frequency or at one-half or one-fourth of the PLL limp mode frequency depending on the state of the
PLLSTS[DIVSEL] bit.
92
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.2.10 NMI Interrupt and Watchdog
The NMI watchdog (NMIWD) is used to detect and aid in handling a clock failure condition. The NMI
interrupt enables the monitoring of clock failure. In 280x/2833x/2823x devices, when the VCOCLK counter
overflows (due to loss of input clock), a missing clock condition is detected and a missing-clock-reset
(MCLKRS) is generated immediately. In Piccolo devices, a CLOCKFAIL signal can be generated first,
which is then fed to the NMI Watchdog circuit and a reset can be generated after a preprogrammed delay.
This feature is not enabled upon power-up, however. That is, when Piccolo device first powers up, the
MCLKRS signal is generated immediately upon clock failure like 280x/2833x/2823x devices. The user
must enable the generation of the CLOCKFAIL signal via the CLKCTL[NMIRESETSEL] bit. Note that the
NMI watchdog is different from the watchdog described in Section 1.4.4.
When the OSCCLK goes missing, the CLOCKFAIL signal triggers the NMI and gets the NMIWD counter
running. In the NMI ISR, the application is expected to take corrective action (such as gracefully shut
down the system before a reset is generated or clear the CLOCKFAIL and NMIINT flags and switch to an
alternate clock source, if applicable). If this is not done, the NMIWDCTR overflows and generates an NMI
reset (NMIRS) after a preprogrammed number of SYSCLKOUT cycles. NMIRS is fed to MCLKRS to
generate a system reset back into the core. Note that NMI reset is internal to the device and will not be
reflected on the XRS pin.
The CLOCKFAIL signal could also be used to activate the TZ5 signal to drive the PWM pins into a high
impedance state. This allows the PWM outputs to b tripped in case of clock failure. Figure 1-35 shows the
CLOCKFAIL interrupt mechanism.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
93
Clocking
www.ti.com
Figure 1-35. Clock Fail Interrupt
NMIFLG[NMINT]
NMIFLGCLR[NMINT]
Clear
Latch
Set Clear
XRS
NMINT
Generate
Interrupt
Pulse
When
Input = 1
1
NMIFLG[CLOCKFAIL]
0
Clear
NMIFLGCLR[CLOCKFAIL]
CLOCKFAIL
SYNC?
SYSCLKOUT
Latch
Clear Set
0
NMICFG[CLOCKFAIL]
NMIFLGFRC[CLOCKFAIL]
XRS
SYSCLKOUT
SYSRS
NMIWDPRD[15:0]
NMIWDCNT[15:0]
A
NMI Watchdog
See System
Control Section
NMIRS
The NMI watchdog module is clocked by SYSCLKOUT. Due to the limp mode function of the PLL, SYSCLKOUT is
present even if the source clock for OSCCLK fails.
The NMI Interrupt support registers are listed in Table 1-32.
Table 1-32. NMI Interrupt Registers
Name
94
Address Range
Size (x16)
EALLOW
NMICFG
0x7060
1
yes
NMI Configuration Register
NMIFLG
0x7061
1
yes
NMI Flag Register
NMIFLGCLR
0x7062
1
yes
NMI Flag Clear Register
NMIFLGFRC
0x7063
1
yes
NMI Flag Force Register
NMIWDCNT
0x7064
1
-
NMIWDPRD
0x7065
1
yes
System Control and Interrupts
Description
NMI Watchdog Counter Register
NMI Watchdog Period Register
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-36. NMI Configuration (NMICFG) Register
15
2
1
0
Reserved
CLOCKFAIL
Reserved
R-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-33. NMI Configuration (NMICFG) Register Bit Definitions (EALLOW)
Bits Name
Type
15:2 Reserved
1
0
Description
Any writes to these bits(s) must always have a value of 0.
CLOCKFAIL
CLOCKFAIL-interrupt Enable Bit: This bit, when set to 1 enables the CLOCKFAIL condition to
generate an NMI interrupt. Once enabled, the flag cannot be cleared by the user. Only a device
reset clears the flag. Writes of 0 are ignored. Reading the bit will indicate if the flag is enabled or
disabled:
0
CLOCKFAIL Interrupt Disabled
1
CLOCKFAIL Interrupt Enabled
Reserved
Any writes to these bits(s) must always have a value of 0.
Figure 1-37. NMI Flag (NMIFLG) Register Register
15
1
0
Reserved
2
CLOCKFAIL
NMIINT
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-34. NMI Flag (NMIFLG) Register Bit Definitions (EALLOW Protected)
Bits
Name
15:2
Reserved
Any writes to these bits(s) must always have a value of 0.
CLOCKFAIL
CLOCKFAIL Interrupt Flag: This bit indicates if the CLOCKFAIL condition is latched. This bit can
be cleared only by writing to the respective bit in the NMIFLGCLR register or by a device reset
(XRS):
1
0
Type Description
0
No CLOCKFAIL condition pending
1
CLOCKFAIL condition detected. This bit will be set in the event of any clock failure.
NMIINT
NMI Interrupt Flag: This bit indicates if an NMI interrupt was generated. This bit can only be
cleared by writing to the respective bit in the NMIFLGCLR register or by an XRS reset:
0
No NMI interrupt generated
1
NMI interrupt generated
No further NMI interrupts are generated until you clear this flag.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
95
Clocking
www.ti.com
Figure 1-38. NMI Flag (NMIFLGCLR) Register Register
15
2
1
0
Reserved
CLOCKFAIL
NMIINT
R-0
W-0
W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-35. NMI Flag Clear (NMIFLGCLR) Register Bit Definitions (EALLOW Protected)
Bits
Name
15:2
Reserved
1
0
(1)
96
Type Description
Any writes to these bits(s) must always have a value of 0.
CLOCKFAIL (1)
NMIINT
CLOCKFAIL Flag Clear
0
Writes of 0 are ignored. Always reads back 0.
1
Writing a 1 to the respective bit clears the corresponding flag bit in the NMIFLG register.
(1)
NMI Flag Clear
0
Writes of 0 are ignored. Always reads back 0.
1
Writing a 1 to the respective bit clears the corresponding flag bit in the NMIFLG register.
If hardware is trying to set a bit to 1 while software is trying to clear a bit to 0 on the same cycle, hardware has priority. You
should clear the pending CLOCKFAIL flag first and then clear the NMIINT flag.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Figure 1-39. NMI Flag (NMIFLGFRC) Register Register
15
2
1
0
Reserved
CLOCKFAIL
Reserved
R-0
W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-36. NMI Flag Force (NMIFLGFRC) Register Bit Definitions (EALLOW Protected)
Bits
Name
15:2
Reserved
1
0
Value
Description
Any writes to these bits(s) must always have a value of 0.
CLOCKFAIL
CLOCKFAIL flag force. This can be used as a means to test the NMI mechanisms.
0
Writes of 0 are ignored. Always reads back 0.
1
Writing a 1 sets the CLOCKFAIL flag.
Reserved
Any writes to these bits(s) must always have a value of 0.
Figure 1-40. NMI Watchdog Counter (NMIWDCNT) Register
15
0
NMIWDCNT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-37. NMI Watchdog Counter (NMIWDCNT) Register Bit Definitions
Bits
Name
15:0
NMIWDCNT
Type
Description
NMI Watchdog Counter: This 16-bit incremental counter will start incrementing whenever any
one of the enabled FAIL flags are set. If the counter reaches the period value, an NMIRS
signal is fired, which then resets the system. The counter resets to zero when it reaches the
period value and then restarts counting if any of the enabled FAIL flags are set.
0
If no enabled FAIL flag is set, then the counter resets to zero and remains at zero until an
enabled FAIL flag is set.
1
Normally, the software would respond to the NMI interrupt generated and clear the offending
FLAG(s) before the NMI watchdog triggers a reset. In some situations, the software may
decide to allow the watchdog to reset the device anyway.
The counter is clocked at the SYSCLKOUT rate. Reset value of this counter is zero.
Figure 1-41. NMI Watchdog Period (NMIWDPRD) Register
15
0
NMIWDPRD
R/W-0xFFFF
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-38. NMI Watchdog Period (NMIWDPRD) Register Bit Definitions (EALLOW Protected)
Bits
Name
Type
Description
15:0
NMIWDPRD
R/W
NMI Watchdog Period: This 16-bit value contains the period value at which a reset is
generated when the watchdog counter matches. At reset this value is set at the maximum.
The software can decrease the period value at initialization time.
Writing a PERIOD value that is equal to the current counter value automatically forces an
NMIRS and resets the watchdog counter. If a PERIOD value is written that is smaller than the
current counter value, the counter will continue counting until it overflows and starts counting
up again from 0. After the overflow, once the COUNTER value equals the new PERIOD
value, an NMIRS is forced which resets the watchdog counter .
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
97
Clocking
www.ti.com
1.4.2.10.1 NMI Watchdog Emulation Considerations
The NMI watchdog module does not operate when trying to debug the target device (emulation suspend
such as breakpoint). The NMI watchdog module behaves as follows under various debug conditions:
CPU Suspended:
Run-Free Mode:
Real-Time Single-Step
Mode:
Real-Time Run-Free
Mode:
98
System Control and Interrupts
When the CPU is suspended, the NMI watchdog counter is suspended.
When the CPU is placed in run-free mode, the NMI watchdog counter
resumes operation as normal.
When the CPU is in real-time single-step mode, the NMI watchdog counter
is suspended. The counter remains suspended even within real-time
interrupts.
When the CPU is in real-time run-free mode, the NMI watchdog counter
operates as normal.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.2.11 XCLKOUT Generation
The XCLKOUT signal is directly derived from the system clock SYSCLKOUT as shown in Figure 1-42.
XCLKOUT can be either equal to, one-half, or one-fourth of SYSCLKOUT. By default, at power-up,
XCLKOUT = SYSCLKOUT/4 or XCLKOUT = OSCCLK/16.
Figure 1-42. XCLKOUT Generation
/4
PLL Bypass
OSCCLK
/2
0
0
or
1
2
CLKIN
3
n
PLL
/4
0,0
/2
0,1
28x CPU
SYSCLKOUT
1,0
XCLKOUT
Pin
n≠0
PLLCR
PLLSTS[DIVSEL]
XCLK[XCLKOUTDIV]
Default at reset
If XCLKOUT is not being used, it can be turned off by setting the XCLKOUTDIV bit to 3 in the XCLK
register.
1.4.2.12 External Reference Oscillator Clock Option
TI recommends that customers have the resonator/crystal vendor characterize the operation of their
device with the DSP chip. The resonator/crystal vendor has the equipment and expertise to tune the tank
circuit. The vendor can also advise the customer regarding the proper tank component values to provide
proper start-up and stability over the entire operating range.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
99
Clocking
www.ti.com
1.4.3 Low-Power Modes Block
Table 1-39 summarizes the various modes.
The various low-power modes operate as shown in Table 1-40.
See the TMS320F2806x Piccolo Microcontrollers (literature number SPRS698 ) for exact timing for
entering and exiting the low power modes.
Table 1-39. Low-Power Mode Summary
Exit (1)
Mode
LPMCR0[1:0]
OSCCLK
CLKIN
SYSCLKOUT
IDLE
00
On
On
On
XRS,
Watchdog interrupt,
Any enabled interrupt
STANDBY
01
On
(watchdog still running)
Off
Off
XRS,
Watchdog interrupt,
GPIO Port A signal,
Debugger (2)
HALT
1X
Off
(oscillator and PLL turned off,
watchdog not functional)
Off
Off
XRS,
GPIO Port A Signal,
Debugger (2)
(1)
(2)
The Exit column lists which signals or under what conditions the low power mode is exited. This signal must be kept low long enough for
an interrupt to be recognized by the device. Otherwise the IDLE mode is not exited and the device goes back into the indicated low
power mode.
On the 28x, the JTAG port can still function even if the clock to the CPU (CLKIN) is turned off.
Table 1-40. Low Power Modes
Mode
Description
IDLE
Mode:
This mode is exited by any enabled interrupt. The LPM block itself performs no tasks during this mode.
STANDBY
Mode:
If the LPM bits in the LPMCR0 register are set to 01, the device enters STANDBY mode when the IDLE instruction is
executed. In STANDBY mode the clock input to the CPU (CLKIN) is disabled, which disables all clocks derived from
SYSCLKOUT. The oscillator and PLL and watchdog will still function. Before entering the STANDBY mode, you should
perform the following tasks:
• Enable the WAKEINT interrupt in the PIE module. This interrupt is connected to both the watchdog and the low
power mode module interrupt.
• If desired, specify one of the GPIO port A signals to wake the device in the GPIOLPMSEL register. The
GPIOLPMSEL register is part of the GPIO module. In addition to the selected GPIO signal, the XRS input and the
watchdog interrupt, if enabled in the LPMCR0 register, can wake the device from the STANDBY mode.
• Select the input qualification in the LPMCR0 register for the signal that will wake the device.
When the selected external signal goes low, it must remain low a number of OSCCLK cycles as specified by the
qualification period in the LPMCR0 register. If the signal should be sampled high during this time, the qualification will
restart. At the end of the qualification period, the PLL enables the CLKIN to the CPU and the WAKEINT interrupt is
latched in the PIE block. The CPU then responds to the WAKEINT interrupt if it is enabled.
HALT
Mode:
If the LPM bits in the LPMCR0 register are set to 1x, the device enters the HALT mode when the IDLE instruction is
executed. In HALT mode all of the device clocks, including the PLL and oscillator, are shut down. Before entering the
HALT mode, you should perform the following tasks:
• Enable the WAKEINT interrupt in the PIE module (PIEIER1.8 = 1). This interrupt is connected to both the
watchdog and the Low-Power-Mode module interrupt.
• Specify one of the GPIO port A signals to wake the device in the GPIOLPMSEL register. The GPIOLPMSEL
register is part of the GPIO module. In addition to the selected GPIO signal, the XRS input can also wake the
device from the HALT mode.
• Disable all interrupts with the possible exception of the HALT mode wakeup interrupt. The interrupts can be reenabled after the device is brought out of HALT mode.
1.
For device to exit HALT mode properly, the following conditions must be met:
Bit 7 (INT1.8) of PIEIER1 register should be 1.
Bit 0 (INT1) of IER register must be 1.
2.
If the above conditions are met,
(a) WAKE_INT ISR will be executed first, followed by the instruction(s) after IDLE, if INTM = 0.
(b) WAKE_INT ISR will not be executed and instruction(s) after IDLE will be executed, if INTM = 1.
100
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-40. Low Power Modes (continued)
Mode
Description
Do not enter HALT low power mode when the device is operating in limp mode (PLLSTS[MCLKSTS] = 1).
If you try to enter HALT mode when the device is already operating in limp mode then the device may not properly enter
HALT. The device may instead enter STANDBY mode or may hang and you may not be able to exit HALT mode. For
this reason, always check that the PLLSTS[MCLKSTS] bit = 0 before entering HALT mode.
When the selected external signal goes low, it is fed asynchronously to the LPM block. The oscillator is turned on and
begins to power up. You must hold the signal low long enough for the oscillator to complete power up. When the signal
is held low for enough time and driven high, this will asynchronously release the PLL and it will begin to lock. Once the
PLL has locked, it feeds the CLKIN to the CPU at which time the CPU responds to the WAKEINT interrupt if enabled.
The low-power modes are controlled by the LPMCR0 register (Figure 1-43).
Figure 1-43. Low-Power Mode Control 0 Register (LPMCR0)
15
14
8
7
2
1
0
WDINTE
Reserved
QUALSTDBY
LPM
R/W-0
R-0
R/W-0x3F
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-41. Low-Power Mode Control 0 Register (LPMCR0) Field Descriptions
Bits
Field
15
Value
WDINTE
Watchdog interrupt enable
The watchdog interrupt is not allowed to wake the device from STANDBY. (default)
1
The watchdog is allowed to wake the device from STANDBY. The watchdog interrupt must also
be enabled in the SCSR register.
14-8
Reserved
Any writes to these bits(s) must always have a value of 0.
7-2
QUALSTDBY
Select number of OSCCLK clock cycles to qualify the selected GPIO inputs that wake the device
from STANDBY mode. This qualification is only used when in STANDBY mode. The GPIO
signals that can wake the device from STANDBY are specified in the GPIOLPMSEL register.
000000
2 OSCCLKs
000001
3 OSCCLKs
111111
LPM (2)
1-0
(2)
(1)
0
...
(1)
Description
...
65 OSCCLKs (default)
These bits set the low power mode for the device.
00
Set the low power mode to IDLE (default)
01
Set the low power mode to STANDBY
10
Set the low power mode to HALT
11
Set the low power mode to HALT
This register is EALLOW protected. See Section 1.6.2 for more information.
The low power mode bits (LPM) only take effect when the IDLE instruction is executed. Therefore, you must set the LPM bits to the
appropriate mode before executing the IDLE instruction.
1.4.3.1
Options for Automatic Wakeup in Low-power Modes
The device provides two options to automatically wake up from HALT and STANDBY modes, without the
need for an external stimulus:
Wakeup from HALT: Set WDHALTI bit in CLKCTL register to 1. When the device wakes up from HALT, it
will be through a CPU-watchdog reset. The WDFLAG bit in the WDCR register can be used to differentiate
between a CPU-watchdog-reset and a device reset.
Wakeup from STANDBY: Set WDINTE bit in LPMCR0 register to 1. When the device wakes up from
STANDBY, it will be through the WAKEINT interrupt (Interrupt 1.8 in the PIE).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
101
Clocking
www.ti.com
1.4.4 CPU Watchdog Block
The watchdog module generates an output pulse, 512 oscillator-clocks (OSCCLK) wide whenever the 8bit watchdog up counter has reached its maximum value. To prevent this, the user can either disable the
counter or the software must periodically write a 0x55 + 0xAA sequence into the watchdog key register
which resets the watchdog counter. Figure 1-44 shows the various functional blocks within the watchdog
module.
Figure 1-44. CPU Watchdog Module
WDCR (WDPS[2:0])
WDCR (WDDIS)
WDCNTR(7:0)
WDCLK
Watchdog
Prescaler
/512
WDCLK
8-Bit
Watchdog
Counter
CLR
Clear Counter
Internal
Pullup
WDKEY(7:0)
Watchdog
55 + AA
Key Detector
WDRST
Generate
Output Pulse
WDINT
(512 OSCCLKs)
Good K ey
XRS
Core-reset
WDCR (WDCHK[2:0])
WDRST(A)
A
102
1
0
Bad
WDCHK
Key
SCSR (WDENINT)
1
The WDRST and XRS signals are driven low for 512 OSCCLK cycles when a watchdog reset occurs. Likewise, if the
watchdog interrupt is enabled, the WDINT signal will be driven low for 512 OSCCLK cycles when an interrupt occurs.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.4.1
Servicing the Watchdog Timer
The WDCNTR is reset when the proper sequence is written to the WDKEY register before the 8-bit
watchdog counter (WDCNTR) overflows. The WDCNTR is reset-enabled when a value of 0x55 is written
to the WDKEY. When the next value written to the WDKEY register is 0xAA then the WDCNTR is reset.
Any value written to the WDKEY other than 0x55 or 0xAA causes no action. Any sequence of 0x55 and
0xAA values can be written to the WDKEY without causing a system reset; only a write of 0x55 followed
by a write of 0xAA to the WDKEY resets the WDCNTR.
Table 1-42. Example Watchdog Key Sequences
Step
Value Written to WDKEY
1
0xAA
No action
Result
2
0xAA
No action
3
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
4
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
5
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
6
0xAA
WDCNTR is reset.
7
0xAA
No action
8
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
9
0xAA
WDCNTR is reset.
10
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
11
0x32
Improper value written to WDKEY.
No action, WDCNTR no longer enabled to be reset by next 0xAA.
12
0xAA
No action due to previous invalid value.
13
0x55
WDCNTR is enabled to be reset if next value is 0xAA.
14
0xAA
WDCNTR is reset.
Step 3 in Table 1-42 is the first action that enables the WDCNTR to be reset. The WDCNTR is not
actually reset until step 6. Step 8 again re-enables the WDCNTR to be reset and step 9 resets the
WDCNTR. Step 10 again re-enables the WDCNTR ro be reset. Writing the wrong key value to the
WDKEY in step 11 causes no action, however the WDCNTR is no longer enabled to be reset and the
0xAA in step 12 now has no effect.
If the watchdog is configured to reset the device, then a WDCR overflow or writing the incorrect value to
the WDCR[WDCHK] bits will reset the device and set the watchdog flag (WDFLAG) in the WDCR register.
After a reset, the program can read the state of this flag to determine the source of the reset. After reset,
the WDFLAG should be cleared by software to allow the source of subsequent resets to be determined.
Watchdog resets are not prevented when the flag is set.
1.4.4.2
Watchdog Reset or Watchdog Interrupt Mode
The watchdog can be configured in the SCSR register to either reset the device (WDRST) or assert an
interrupt (WDINT) if the watchdog counter reaches its maximum value. The behavior of each condition is
described below:
• Reset mode:
If the watchdog is configured to reset the device, then the WDRST signal will pull the device reset
(XRS) pin low for 512 OSCCLK cycles when the watchdog counter reaches its maximum value.
• Interrupt mode:
If the watchdog is configured to assert an interrupt, then the WDINT signal will be driven low for 512
OSCCLK cycles, causing the WAKEINT interrupt in the PIE to be taken if it is enabled in the PIE
module. The watchdog interrupt is edge triggered on the falling edge of WDINT. Thus, if the WAKEINT
interrupt is re-enabled before WDINT goes inactive, you will not immediately get another interrupt. The
next WAKEINT interrupt will occur at the next watchdog timeout. If the watchdog is disabled before
WDINT goes inactive, the 512-cycle count will halt and WDINT will remain active. The count will
resume when the watchdog is enabled again.
If the watchdog is reconfigured from interrupt mode to reset mode while WDINT is still active low, then
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
103
Clocking
www.ti.com
the device will reset immediately. The WDINTS bit in the SCSR register can be read to determine the
current state of the WDINT signal before reconfiguring the watchdog to reset mode.
1.4.4.3
Watchdog Operation in Low-power Modes
In STANDBY mode, all of the clocks to the peripherals are turned off on the device. The only peripheral
that remains functional is the watchdog since the watchdog module runs off the oscillator clock
(OSCCLK). The WDINT signal is fed to the Low Power Modes (LPM) block so that it can be used to wake
the device from STANDBY low power mode (if enabled). See the Low Power Modes Block section of the
device data manual for details.
In IDLE mode, the watchdog interrupt (WDINT) signal can generate an interrupt to the CPU to take the
CPU out of IDLE mode. The watchdog is connected to the WAKEINT interrupt in the PIE.
NOTE:
If the watchdog interrupt is used to wake-up from an IDLE or STANDBY low power mode
condition, then make sure that the WDINT signal goes back high again before attempting to
go back into the IDLE or STANDBY mode. The WDINT signal will be held low for 512
OSCCLK cycles when the watchdog interrupt is generated. You can determine the current
state of WDINT by reading the watchdog interrupt status bit (WDINTS) bit in the SCSR
register. WDINTS follows the state of WDINT by two SYSCLKOUT cycles.
In HALT mode, this feature cannot be used because the oscillator (and PLL) are turned off and, therefore,
so is the watchdog.
1.4.4.4
Emulation Considerations
The watchdog module behaves as follows under various debug conditions:
CPU Suspended:
Run-Free Mode:
Real-Time Single-Step
Mode:
Real-Time Run-Free
Mode:
104
System Control and Interrupts
When the CPU is suspended, the watchdog clock (WDCLK) is suspended
When the CPU is placed in run-free mode, then the watchdog module
resumes operation as normal.
When the CPU is in real-time single-step mode, the watchdog clock
(WDCLK) is suspended. The watchdog remains suspended even within realtime interrupts.
When the CPU is in real-time run-free mode, the watchdog operates as
normal.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
1.4.4.5
Watchdog Registers
The system control and status register (SCSR) contains the watchdog override bit and the watchdog
interrupt enable/disable bit. Figure 1-45 describes the bit functions of the SCSR register.
Figure 1-45. System Control and Status Register (SCSR)
15
8
Reserved
R-0
7
2
1
0
Reserved
3
WDINTS
WDENINT
WDOVERRIDE
R-0
R-1
R/W-0
R/W1C-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-43. System Control and Status Register (SCSR) Field Descriptions
Bit
Field
Value
Description
(1)
15-3
Reserved
Any writes to these bits(s) must always have a value of 0.
2
WDINTS
Watchdog interrupt status bit. WDINTS reflects the current state of the WDINT signal from the
watchdog block. WDINTS follows the state of WDINT by two SYSCLKOUT cycles.
If the watchdog interrupt is used to wake the device from IDLE or STANDBY low power mode, use
this bit to make sure WDINT is not active before attempting to go back into IDLE or STANDBY
mode.
1
0
Watchdog interrupt signal (WDINT) is active.
1
Watchdog interrupt signal (WDINT) is not active.
WDENINT
Watchdog interrupt enable.
0
The watchdog reset (WDRST) output signal is enabled and the watchdog interrupt (WDINT) output
signal is disabled. This is the default state on reset (XRS). When the watchdog interrupt occurs the
WDRST signal will stay low for 512 OSCCLK cycles.
If the WDENINT bit is cleared while WDINT is low, a reset will immediately occur. The WDINTS bit
can be read to determine the state of the WDINT signal.
1
The WDRST output signal is disabled and the WDINT output signal is enabled. When the watchdog
interrupt occurs, the WDINTsignal will stay low for 512 OSCCLK cycles.
If the watchdog interrupt is used to wake the device from IDLE or STANDBY low power mode, use
the WDINTS bit to make sure WDINT is not active before attempting to go back into IDLE or
STANDBY mode.
0
(1)
WDOVERRIDE
Watchdog override
0
Writing a 0 has no effect. If this bit is cleared, it remains in this state until a reset occurs. The
current state of this bit is readable by the user.
1
You can change the state of the watchdog disable (WDDIS) bit in the watchdog control (WDCR)
register. If the WDOVERRIDE bit is cleared by writing a 1, you cannot modify the WDDIS bit.
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
105
Clocking
www.ti.com
Figure 1-46. Watchdog Counter Register (WDCNTR)
15
8
7
0
Reserved
WDCNTR
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-44. Watchdog Counter Register (WDCNTR) Field Descriptions
Bits
Field
Description
15-8
Reserved
Any writes to these bits(s) must always have a value of 0.
7-0
WDCNTR
These bits contain the current value of the WD counter. The 8-bit counter continually increments at the
watchdog clock (WDCLK), rate. If the counter overflows, then the watchdog initiates a reset. If the WDKEY
register is written with a valid combination, then the counter is reset to zero. The watchdog clock rate is
configured in the WDCR register.
Figure 1-47. Watchdog Reset Key Register (WDKEY)
15
8
7
0
Reserved
WDKEY
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-45. Watchdog Reset Key Register (WDKEY) Field Descriptions
Bits
Field
15-8
Reserved
7-0
WDKEY
Value
Description
(1)
Any writes to these bits(s) must always have a value of 0.
Refer to Table 1-42 for examples of different WDKEY write sequences.
0x55 + 0xAA
Writing 0x55 followed by 0xAA to WDKEY causes the WDCNTR bits to be cleared.
Other value
Writing any value other than 0x55 or 0xAA causes no action to be generated. If any value other than
0xAA is written after 0x55, then the sequence must restart with 0x55.
Reads from WDKEY return the value of the WDCR register.
(1)
This register is EALLOW protected. See Section 1.6.2 for more information.
Figure 1-48. Watchdog Control Register (WDCR)
15
8
Reserved
R-0
7
6
WDFLAG
WDDIS
5
WDCHK
3
2
WDPS
0
R/W1C-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-46. Watchdog Control Register (WDCR) Field Descriptions
Bits
15-8
Reserved
7
WDFLAG
6
(1)
106
Field
Value
Description
(1)
Any writes to these bits(s) must always have a value of 0.
Watchdog reset status flag bit
0
The reset was caused either by the XRS pin or because of power-up. The bit remains latched
until you write a 1 to clear the condition. Writes of 0 are ignored.
1
Indicates a watchdog reset (WDRST) generated the reset condition. .
WDDIS
Watchdog disable. On reset, the watchdog module is enabled.
0
Enables the watchdog module. WDDIS can be modified only if the WDOVERRIDE bit in the
SCSR register is set to 1. (default)
1
Disables the watchdog module.
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-46. Watchdog Control Register (WDCR) Field Descriptions (continued)
Bits
5-3
2-0
Field
Value
WDCHK
Description
(1)
Watchdog check.
0,0,0
You must ALWAYS write 1,0,1 to these bits whenever a write to this register is performed
unless the intent is to reset the device via software.
other
Writing any other value causes an immediate device reset or watchdog interrupt to be taken.
Note that this happens even when watchdog module is disabled. Do not write to WDCHK bits
when the watchdog module is disabled. These bits can be used to generate a software reset
of the device. These three bits always read back as zero (0, 0, 0).
WDPS
Watchdog pre-scale. These bits configure the watchdog counter clock (WDCLK) rate relative
to OSCCLK/512:
000
WDCLK = OSCCLK/512/1 (default)
001
WDCLK = OSCCLK/512/1
010
WDCLK = OSCCLK/512/2
011
WDCLK = OSCCLK/512/4
100
WDCLK = OSCCLK/512/8
101
WDCLK = OSCCLK/512/16
110
WDCLK = OSCCLK/512/32
111
WDCLK = OSCCLK/512/64
When the XRS line is low, the WDFLAG bit is forced low. The WDFLAG bit is only set if a rising edge on
WDRST signal is detected (after synch and an 8192 SYSCLKOUT cycle delay) and the XRS signal is
high. If the XRS signal is low when WDRST goes high, then the WDFLAG bit remains at 0. In a typical
application, the WDRST signal connects to the XRS input. Hence to distinguish between a watchdog reset
and an external device reset, an external reset must be longer in duration then the watchdog pulse.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
107
Clocking
www.ti.com
1.4.5 32-Bit CPU Timers 0/1/2
This section describes the three 32-bit CPU-timers (TIMER0/1/2) shown in (Figure 1-49).
The CPU Timer-0 and CPU-Timer 1 can be used in user applications. Timer 2 is reserved for DSP/BIOS.
If the application is not using DSP/BIOS, then Timer 2 can be used in the application. The CPU-timer
interrupt signals (TINT0, TINT1, TINT2) are connected as shown in Figure 1-50.
Figure 1-49. CPU-Timers
Reset
Timer reload
16-bit timer divide-down
TDDRH:TDDR
32-bit timer period
PRDH:PRD
16-bit prescale counter
PSCH:PSC
SYSCLKOUT
TCR.4
(Timer start status)
32-bit counter
TIMH:TIM
Borrow
Borrow
TINT
Figure 1-50. CPU-Timer Interrupts Signals and Output Signal
INT1
to
INT12
PIE
TINT0
CPU-TIMER 0
28x
CPU
TINT1
CPU-TIMER 1
INT13
XINT13
TINT2
INT14
108
A
The timer registers are connected to the Memory Bus of the 28x processor.
B
The timing of the timers is synchronized to SYSCLKOUT of the processor clock.
System Control and Interrupts
CPU-TIMER 2
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
The general operation of the CPU-timer is as follows: The 32-bit counter register TIMH:TIM is loaded with
the value in the period register PRDH:PRD. The counter decrements once every (TPR[TDDRH:TDDR]+1)
SYSCLKOUT cycles, where TDDRH:TDDR is the timer divider. When the counter reaches 0, a timer
interrupt output signal generates an interrupt pulse. The registers listed in Table 1-47 are used to
configure the timers.
Table 1-47. CPU-Timers 0, 1, 2 Configuration and Control Registers
Name
Address
Size (x16)
Description
Bit Description
TIMER0TIM
0x0C00
1
CPU-Timer 0, Counter Register
Figure 1-51
TIMER0TIMH
0x0C01
1
CPU-Timer 0, Counter Register High
Figure 1-52
TIMER0PRD
0x0C02
1
CPU-Timer 0, Period Register
Figure 1-53
TIMER0PRDH
0x0C03
1
CPU-Timer 0, Period Register High
Figure 1-54
TIMER0TCR
0x0C04
1
CPU-Timer 0, Control Register
Figure 1-55
TIMER0TPR
0x0C06
1
CPU-Timer 0, Prescale Register
Figure 1-56
TIMER0TPRH
0x0C07
1
CPU-Timer 0, Prescale Register High
Figure 1-57
TIMER1TIM
0x0C08
1
CPU-Timer 1, Counter Register
Figure 1-51
TIMER1TIMH
0x0C09
1
CPU-Timer 1, Counter Register High
Figure 1-52
TIMER1PRD
0x0C0A
1
CPU-Timer 1, Period Register
Figure 1-53
TIMER1PRDH
0x0C0B
1
CPU-Timer 1, Period Register High
Figure 1-54
TIMER1TCR
0x0C0C
1
CPU-Timer 1, Control Register
Figure 1-55
TIMER1TPR
0x0C0E
1
CPU-Timer 1, Prescale Register
Figure 1-56
TIMER1TPRH
0x0C0F
1
CPU-Timer 1, Prescale Register High
Figure 1-57
TIMER2TIM
0x0C10
1
CPU-Timer 2, Counter Register
Figure 1-51
TIMER2TIMH
0x0C11
1
CPU-Timer 2, Counter Register High
Figure 1-52
TIMER2PRD
0x0C12
1
CPU-Timer 2, Period Register
Figure 1-53
TIMER2PRDH
0x0C13
1
CPU-Timer 2, Period Register High
Figure 1-54
TIMER2TCR
0x0C14
1
CPU-Timer 2, Control Register
Figure 1-55
TIMER2TPR
0x0C16
1
CPU-Timer 2, Prescale Register
Figure 1-56
TIMER2TPRH
0x0C17
1
CPU-Timer 2, Prescale Register High
Figure 1-57
Figure 1-51. TIMERxTIM Register (x = 0, 1, 2)
15
0
TIM
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-48. TIMERxTIM Register Field Descriptions
Bits
15-0
Field
TIM
Description
CPU-Timer Counter Registers (TIMH:TIM): The TIM register holds the low 16 bits of the current 32-bit count
of the timer. The TIMH register holds the high 16 bits of the current 32-bit count of the timer. The TIMH:TIM
decrements by one every (TDDRH:TDDR+1) clock cycles, where TDDRH:TDDR is the timer prescale dividedown value. When the TIMH:TIM decrements to zero, the TIMH:TIM register is reloaded with the period
value contained in the PRDH:PRD registers. The timer interrupt (TINT) signal is generated.
Figure 1-52. TIMERxTIMH Register (x = 0, 1, 2)
15
0
TIMH
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
109
Clocking
www.ti.com
Table 1-49. TIMERxTIMH Register Field Descriptions
Bits
Field
Description
15-0
TIMH
See description for TIMERxTIM.
Figure 1-53. TIMERxPRD Register (x = 0, 1, 2)
15
0
PRD
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-50. TIMERxPRD Register Field Descriptions
Bits
Field
15-0
Description
PRD
CPU-Timer Period Registers (PRDH:PRD): The PRD register holds the low 16 bits of the 32-bit period. The
PRDH register holds the high 16 bits of the 32-bit period. When the TIMH:TIM decrements to zero, the
TIMH:TIM register is reloaded with the period value contained in the PRDH:PRD registers, at the start of
the next timer input clock cycle (the output of the prescaler). The PRDH:PRD contents are also loaded into
the TIMH:TIM when you set the timer reload bit (TRB) in the Timer Control Register (TCR).
Figure 1-54. TIMERxPRDH Register (x = 0, 1, 2)
15
0
PRDH
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-51. TIMERxPRDH Register Field Descriptions
Bits
Field
15-0
Description
PRDH
See description for TIMERxPRD
Figure 1-55. TIMERxTCR Register (x = 0, 1, 2)
15
14
13
12
11
10
9
8
TIF
TIE
Reserved
FREE
SOFT
Reserved
R/W-0
R/W-0
R-0
R/W-0
R/W-0
R-0
7
5
4
Reserved
6
TRB
TSS
3
Reserved
0
R-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-52. TIMERxTCR Register Field Descriptions
Bits
15
Field
Value
TIF
Description
CPU-Timer Interrupt Flag.
0
The CPU-Timer has not decremented to zero.
Writes of 0 are ignored.
1
This flag gets set when the CPU-timer decrements to zero.
Writing a 1 to this bit clears the flag.
14
TIE
13-12 Reserved
110
System Control and Interrupts
CPU-Timer Interrupt Enable.
0
The CPU-Timer interrupt is disabled.
1
The CPU-Timer interrupt is enabled. If the timer decrements to zero, and TIE is set, the
timer asserts its interrupt request.
Any writes to these bits(s) must always have a value of 0.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking
www.ti.com
Table 1-52. TIMERxTCR Register Field Descriptions (continued)
Bits
Field
Value
Description
11-10 FREE
SOFT
CPU-Timer Emulation Modes: These bits are special emulation bits that determine the
state of the timer when a breakpoint is encountered in the high-level language
debugger. If the FREE bit is set to 1, then, upon a software breakpoint, the timer
continues to run (that is, free runs). In this case, SOFT is a don't care. But if FREE is 0,
then SOFT takes effect. In this case, if SOFT = 0, the timer halts the next time the
TIMH:TIM decrements. If the SOFT bit is 1, then the timer halts when the TIMH:TIM
has decremented to zero.
FREE
SOFT
0
0
CPU-Timer Emulation Mode
Stop after the next decrement of the TIMH:TIM (hard stop)
0
1
Stop after the TIMH:TIM decrements to 0 (soft stop)
1
0
Free run
1
1
Free run
In the SOFT STOP mode, the timer generates an interrupt before shutting down (since
reaching 0 is the interrupt causing condition).
9-6
5
4
Reserved
Any writes to these bits(s) must always have a value of 0.
TRB
CPU-Timer Reload bit.
0
The TRB bit is always read as zero. Writes of 0 are ignored.
1
When you write a 1 to TRB, the TIMH:TIM is loaded with the value in the PRDH:PRD,
and the prescaler counter (PSCH:PSC) is loaded with the value in the timer dividedown register (TDDRH:TDDR).
TSS
CPU-Timer stop status bit. TSS is a 1-bit flag that stops or starts the CPU-timer.
0
Reads of 0 indicate the CPU-timer is running.
To start or restart the CPU-timer, set TSS to 0. At reset, TSS is cleared to 0 and the
CPU-timer immediately starts.
1
Reads of 1 indicate that the CPU-timer is stopped.
To stop the CPU-timer, set TSS to 1.
3-0
Reserved
Any writes to these bits(s) must always have a value of 0.
Figure 1-56. TIMERxTPR Register (x = 0, 1, 2)
15
8
7
0
PSC
TDDR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-53. TIMERxTPR Register Field Descriptions
Bits
Field
Description
15-8
PSC
CPU-Timer Prescale Counter. These bits hold the current prescale count for the timer. For every timer clock
source cycle that the PSCH:PSC value is greater than 0, the PSCH:PSC decrements by one. One timer clock
(output of the timer prescaler) cycle after the PSCH:PSC reaches 0, the PSCH:PSC is loaded with the contents
of the TDDRH:TDDR, and the timer counter register (TIMH:TIM) decrements by one. The PSCH:PSC is also
reloaded whenever the timer reload bit (TRB) is set by software. The PSCH:PSC can be checked by reading
the register, but it cannot be set directly. It must get its value from the timer divide-down register
(TDDRH:TDDR). At reset, the PSCH:PSC is set to 0.
7-0
TDDR
CPU-Timer Divide-Down. Every (TDDRH:TDDR + 1) timer clock source cycles, the timer counter register
(TIMH:TIM) decrements by one. At reset, the TDDRH:TDDR bits are cleared to 0. To increase the overall timer
count by an integer factor, write this factor minus one to the TDDRH:TDDR bits. When the prescaler counter
(PSCH:PSC) value is 0, one timer clock source cycle later, the contents of the TDDRH:TDDR reload the
PSCH:PSC, and the TIMH:TIM decrements by one. TDDRH:TDDR also reloads the PSCH:PSC whenever the
timer reload bit (TRB) is set by software.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
111
Clocking
www.ti.com
Figure 1-57. TIMERxTPRH Register (x = 0, 1, 2)
15
8
7
0
PSCH
TDDRH
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-54. TIMERxTPRH Register Field Descriptions
112
Bits
Field
Description
15-8
PSCH
See description of TIMERxTPR.
7-0
TDDRH
See description of TIMERxTPR.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
1.5
General-Purpose Input/Output (GPIO)
The GPIO multiplexing (MUX) registers are used to select the operation of shared pins. The pins are
named by their general purpose I/O name (GPIO0 - GPIO 58). These pins can be individually selected to
operate as digital I/O, referred to as GPIO, or connected to one of up to three peripheral I/O signals (via
the GPxMUXn registers). If selected for digital I/O mode, registers are provided to configure the pin
direction (via the GPxDIR registers). You can also qualify the input signals to remove unwanted noise (via
the GPxQSELn, GPACTRL, and GPBCTRL registers).
1.5.1 GPIO Module Overview
Up to three independent peripheral signals are multiplexed on a single GPIO-enabled pin in addition to
individual pin bit-I/O capability. There are three I/O ports. Port A consists of GPIO0-GPIO31, port B
consists of GPIO32-GPIO 58. The analog port consists of AIO0-AIO15. Figure 1-58 shows the basic
modes of operation for the GPIO module. Note that GPIO functionality is provided on JTAG pins as well.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
113
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-58. GPIO0 to GPIO31, GPIO34, GPIO40-GPIO58 Multiplexing Diagram
GPIOLPMSEL
GPIO XINT1SEL
LPMCR0
GPIO XINT2SEL
GPIO XINT3SEL
Low power
modes block
External
interrupt
MUX
GPIOx.async
GPAPUD
0 = enable PU
1 = disable PU
(disabled after reset)
GPADAT (read)
SYSCLKOUT
XRS
PU
(async disable
when low)
(default
on reset)
Sync
3 samples
Qual
GPIO0
to
GPIO31
Pins
PIE
6 samples
async
00
00
N/C (default on reset)
01
01
Peripheral 1 input
10
10
Peripheral 2 input
11
11
Peripheral 3 input
GPASET,
GPACTRL
GPACLEAR,
GPAQSEL 1/2
GPATOGGLE
2
High
impedance
output
control
00
GPAMUX 1/2
(default on reset)
GPIOx_OUT
GPADAT
(latch)
01
Peripheral 1 output
10
Peripheral 2 output
11
Peripheral 3 output
2
00
(default on reset)
GPIOx_DIR
GPADIR
01
(latch)
Peripheral 1 output enable
10
Peripheral 2 output enable
11
Peripheral 3 output enable
0 = input, 1 = output
XRS
A
114
GPxDAT latch/read are accessed at the same memory location.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-59. GPIO32, GPIO33 Multiplexing Diagram
GPBPUD
SYSCLKOUT
0 = enable PU
1 = disable PU
(disabled after reset)
XRS
PU
(async disable
when low)
GPBDAT (read)
(default on reset)
Sync
3 samples
Qual
6 samples
async
GPIO32,
GPIO33
Pins
00
00
N/C
01
01
Perpheral 1 input
10
10
Peripheral 2 input
11
11
Peripheral 3 input
GPBSET
GPBCTRL
GPBCLEAR
GPBTOGGLE
High
Impedance
Output
Control
GPBSEL1
2
GPIO32/33_OUT
(default on reset)
00
GPBMUX1
01
Perpheral 1 output
10
Peripheral 2 output
11
Peripheral 3 output
(default on reset)
GPIO32/33-DIR
2
00
0x
0 = Input , 1 = Output
Default at Reset
GPBDAT
(latch)
GPBDIR
(latch)
SDAA/SCLA (I2C output enable)
01
SDAA/SCLA (I2C data out)
10
1x
Peripheral 2 output enable
11
Peripheral 3 output enable
XRS
A
The GPIOINENCLK bit in the PCLKCR3 register does not affect the above GPIOs (I2C pins) since the pins are bidirectional.
B
The input qualification circuit is not reset when modes are changed (such as changing from output to input mode).
Any state will get flushed by the circuit eventually.
1.5.1.1
JTAG Port
The JTAG port is reduced to 5 pins (TRST, TCK, TDI, TMS, TDO). TCK, TDI, TMS and TDO pins are also
GPIO pins. The TRST signal selects either JTAG or GPIO operating mode for the pins in Figure 1-60.
NOTE: The JTAG pins may also be used as GPIO pins. Care should be taken in the board design to
ensure that the circuitry connected to these pins do not affect the emulation capabilities of
the JTAG pin function. Any circuitry connected to these pins should not prevent the emulator
from driving (or being driven by) the JTAG pins for successful debug.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
115
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-60. JTAG Port/GPIO Multiplexing
TRST = 0: JTAG Disabled (GPIO Mode)
TRST = 1: JTAG Mode
TRST
TRST
XCLKIN
GPIO38_in
TCK
TCK/GPIO38
GPIO38_out
C28x
Core
GPIO37_in
TDO/GPIO37
TDO
1
GPIO37_out
0
GPIO36_in
1
TMS
TMS/GPIO36
1
GPIO36_out
0
GPIO35_in
1
TDI
TDI/GPIO35
1
GPIO35_out
1.5.1.2
0
Choosing JTAG or GPIO Functionality
The TRST signal selects the functionality of the JTAG signals, in combination with the JTAGDIS bit in the
JTAGDEBUG register as follows.
TRST
JTAGDISBbit
JTAG Port Mode
0
X
GPIO mode enabled, JTAG
port disabled
1
0
JTAG port enabled (GPIOs
should be configured as inputs)
1
1
GPIO mode enabled, JTAG
port disabled
The JTAGDEBUG register is shown and described below.
Figure 1-61. JTAGDEBUG Register (Addfress 0x702A, EALLOW protected)
15
1
0
Reserved
JTAGDIS
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
116
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-55. JTAGDEBUG Register Field Descriptions
Bits
Field
15-1
Reserved
Value
Any writes to these bits(s) must always have a value of 0.
Description
0
JTAGDIS
JTAG Port Disable Bit: This bit enables/disables the JTAG port. When disabled, the JTAG
pins can be used as GPIOs:
0
JTAG Port Enabled
1
JTAG Port Disabled (GPIO Mode)
This bit is reset by TRST. The bit is forced to "0" when TRST is "0". When TRST is "1", then
JTAGDIS bit can be modified by CPU.
Note: Ensure no contention with the emulator signals when JTAGDIS=1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
117
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-62. Analog/GPIO Multiplexing
To COMPy A or B input
To ADC Channel X
Logic implemented in GPIO MUX block
AIOx Pin
SYSCLKOUT
AIOxIN
1
AIOxINE
AIODAT Reg
(Read)
SYNC
0
AIODAT Reg
(Latch)
AIOMUX1 Reg
AIOxDIR
(1 = Input,
0 = Output)
AIOSET,
AIOCLEAR,
AIOTOGGLE
Regs
AIODIR Reg
(Latch)
1
(0 = Input, 1 = Output)
0
118
A
The ADC/Comparator path is always enabled, irrespective of the AIOMUX1 value.
B
The AIO section is blocked off when the corresponding AIOMUX1 bit is 1.
System Control and Interrupts
0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
1.5.2 Configuration Overview
The pin function assignments, input qualification, and the external interrupt sources are all controlled by
the GPIO configuration control registers. In addition, you can assign pins to wake the device from the
HALT and STANDBY low power modes and enable/disable internal pullup resistors. Table 1-56 and
Table 1-57 list the registers that are used to configure the GPIO pins to match the system requirements.
Table 1-56. GPIO Control Registers
Name
(1)
Register Description
Bit Description
GPACTRL
0x6F80
2
GPIO A Control Register (GPIO0-GPIO31)
Figure 1-70
GPAQSEL1
0x6F82
2
GPIO A Qualifier Select 1 Register (GPIO0-GPIO15)
Figure 1-73
GPAQSEL2
0x6F84
2
GPIO A Qualifier Select 2 Register (GPIO16-GPIO31)
Figure 1-74
GPAMUX1
0x6F86
2
GPIO A MUX 1 Register (GPIO0-GPIO15)
Figure 1-65
GPAMUX2
0x6F88
2
GPIO A MUX 2 Register (GPIO16-GPIO31)
Figure 1-66
GPADIR
0x6F8A
2
GPIO A Direction Register (GPIO0-GPIO31)
Figure 1-77
GPAPUD
0x6F8C
2
GPIO A Pull Up Disable Register (GPIO0-GPIO31)
Figure 1-80
GPACTRL2
0x6F8E
2
USB I/O Control
Figure 1-72
GPBCTRL
0x6F90
2
GPIO B Control Register (GPIO32-GPIO58)
Figure 1-71
GPBQSEL1
0x6F92
2
GPIO B Qualifier Select 1 Register (GPIO32-GPIO44)
Figure 1-75
GPBQSEL2
0x6F94
2
GPIO B Qualifier Select 2 Register (GPIO50-GPIO58)
Figure 1-76
GPBMUX1
0x6F96
2
GPIO B MUX 1 Register (GPIO32-GPIO44)
Figure 1-67
GPBMUX2
0x6F98
2
GPIO B MUX2 Register (GPIO50-GPIO58)
Figure 1-68
GPBDIR
0x6F9A
2
GPIO B Direction Register (GPIO32-GPIO58)
Figure 1-78
GPBPUD
0x6F9C
2
GPIO B Pull Up Disable Register (GPIO32-GPIO58)
Figure 1-81
AIOMUX1
0x6FB6
2
Analog, I/O MUX 1 register (AIO0 - AIO15)
Figure 1-69
AIODIR
0x6FBA
2
Analog, I/O Direction Register (AIO0 - AIO15)
Figure 1-79
(1)
Address
Size (x16)
The registers in this table are EALLOW protected. See Section 1.6.2 for more information.
Table 1-57. GPIO Interrupt and Low Power Mode Select Registers
Address
Size
(x16)
GPIOXINT1SEL
0x6FE0
GPIOXINT2SEL
0x6FE1
GPIOXINT3SEL
GPIOLPMSEL
Name
(1)
(1)
Register Description
Bit Description
1
XINT1 Source Select Register (GPIO0-GPIO31)
Figure 1-88
1
XINT2 Source Select Register (GPIO0-GPIO31)
Figure 1-88
0x6FE2
1
XINT3 Source Select Register (GPIO0 - GPIO31)
Figure 1-88
0x6FE8
1
LPM wakeup Source Select Register (GPIO0-GPIO31)
Figure 10-3
The registers in this table are EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
119
General-Purpose Input/Output (GPIO)
www.ti.com
To plan configuration of the GPIO module, consider the following steps:
Step 1. Plan the device pin-out:
Through a pin multiplexing scheme, a lot of flexibility is provided for assigning functionality to the
GPIO-capable pins. Before getting started, look at the peripheral options available for each pin, and
plan pin-out for your specific system. Will the pin be used as a general purpose input or output (GPIO)
or as one of up to three available peripheral functions? Knowing this information will help determine
how to further configure the pin.
Step 2. Enable or disable internal pull-up resistors:
To enable or disable the internal pullup resistors, write to the respective bits in the GPIO pullup disable
(GPAPUD and GPBPUD) registers. For pins that can function as ePWM output pins, the internal pullup
resistors are disabled by default. All other GPIO-capable pins have the pullup enabled by default. The
AIOx pins do not have internal pull-up resistors.
Step 3. Select input qualification:
If the pin will be used as an input, specify the required input qualification, if any. The input qualification
is specified in the GPACTRL, GPBCTRL, GPAQSEL1, GPAQSEL2, GPBQSEL1, and GPBQSEL2
registers. By default, all of the input signals are synchronized to SYSCLKOUT only.
Step 4. Select the pin function:
Configure the GPxMUXn or AIOMUXn registers such that the pin is a GPIO or one of three available
peripheral functions. By default, all GPIO-capable pins are configured at reset as general purpose input
pins.
Step 5. For digital general purpose I/O, select the direction of the pin:
If the pin is configured as an GPIO, specify the direction of the pin as either input or output in the
GPADIR, GPBDIR, or AIODIR registers. By default, all GPIO pins are inputs. To change the pin from
input to output, first load the output latch with the value to be driven by writing the appropriate value to
the GPxCLEAR, GPxSET, or GPxTOGGLE (or AIOCLEAR, AIOSET, or AIOTOGGLE) registers. Once
the output latch is loaded, change the pin direction from input to output via the GPxDIR registers. The
output latch for all pins is cleared at reset.
Step 6. Select low power mode wake-up sources:
Specify which pins, if any, will be able to wake the device from HALT and STANDBY low power
modes. The pins are specified in the GPIOLPMSEL register.
Step 7. Select external interrupt sources:
Specify the source for the XINT1 - XINT3 interrupts. For each interrupt you can specify one of the port
A signals as the source. This is done by specifying the source in the GPIOXINTnSEL register. The
polarity of the interrupts can be configured in the XINTnCR register as described in Section 1.7.6.
NOTE: There is a 2-SYSCLKOUT cycle delay from when a write to configuration registers such as
GPxMUXn and GPxQSELn occurs to when the action is valid
120
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
1.5.3 Digital General Purpose I/O Control
For pins that are configured as GPIO you can change the values on the pins by using the registers in
Table 1-58.
Table 1-58. GPIO Data Registers
Name
Address
Size (x16)
Register Description
Bit Description
GPADAT
0x6FC0
2
GPIO A Data Register (GPIO0-GPIO31)
Figure 1-82
GPASET
0x6FC2
2
GPIO A Set Register (GPIO0-GPIO31)
Figure 1-85
GPACLEAR
0x6FC4
2
GPIO A Clear Register (GPIO0-GPIO31)
Figure 1-85
GPATOGGLE
0x6FC6
2
GPIO A Toggle Register (GPIO0-GPIO31)
Figure 1-85
GPBDAT
0x6FC8
2
GPIO B Data Register (GPIO32-GPIO58)
Figure 1-83
GPBSET
0x6FCA
2
GPIO B Set Register (GPIO32-GPIO58)
Figure 1-86
GPBCLEAR
0x6FCC
2
GPIO B Clear Register (GPIO32-GPIO58)
Figure 1-86
GPBTOGGLE
0x6FCE
2
GPIO B Toggle Register (GPIO32-GPIO58)
Figure 1-86
AIODAT
0x6FD8
2
Analog I/O Data Register (AIO0 - AIO15)
Figure 1-84
AIOSET
0x6FDA
2
Analog I/O Data Set Register (AIO0 - AIO15)
Figure 1-87
AIOCLEAR
0x6FDC
2
Analog I/O Clear Register (AIO0 - AIO15)
Figure 1-87
AIOTOGGLE
0x6FDE
2
Analog I/O Toggle Register (AIO0 - AIO15)
Figure 1-87
•
GPxDAT/AIODAT Registers
Each I/O port has one data register. Each bit in the data register corresponds to one GPIO pin. No
matter how the pin is configured (GPIO or peripheral function), the corresponding bit in the data
register reflects the current state of the pin after qualification (This does not apply to AIOx pins).
Writing to the GPxDAT/AIODAT register clears or sets the corresponding output latch and if the pin is
enabled as a general purpose output (GPIO output) the pin will also be driven either low or high. If the
pin is not configured as a GPIO output then the value will be latched, but the pin will not be driven.
Only if the pin is later configured as a GPIO output, will the latched value be driven onto the pin.
When using the GPxDAT register to change the level of an output pin, you should be cautious not to
accidentally change the level of another pin. For example, if you mean to change the output latch level
of GPIOA1 by writing to the GPADAT register bit 0 using a read-modify-write instruction, a problem can
occur if another I/O port A signal changes level between the read and the write stage of the instruction.
Following is an analysis of why this happens:
The GPxDAT registers reflect the state of the pin, not the latch. This means the register reflects the
actual pin value. However, there is a lag between when the register is written to when the new pin
value is reflected back in the register. This may pose a problem when this register is used in
subsequent program statements to alter the state of GPIO pins. An example is shown below where two
program statements attempt to drive two different GPIO pins that are currently low to a high state.
If Read-Modify-Write operations are used on the GPxDAT registers, because of the delay between the
output and the input of the first instruction (I1), the second instruction (I2) will read the old value and
write it back.
GpioDataRegs.GPADAT.bit.GPIO1 = 1
; I1 performs
read-modify-write of GPADAT GpioDataRegs.GPADAT.bit.GPIO2 = 1
; I2 also a readmodify-write of GPADAT.
; It gets the old
value of GPIO1 due to the delay
The second instruction will wait for the first to finish its write due to the write-followed-by-read
protection on this peripheral frame. There will be some lag, however, between the write of (I1) and the
GPxDAT bit reflecting the new value (1) on the pin. During this lag, the second instruction will read the
old value of GPIO1 (0) and write it back along with the new value of GPIO2 (1). Therefore, GPIO1 pin
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
121
General-Purpose Input/Output (GPIO)
www.ti.com
stays low.
•
•
•
One solution is to put some NOP’s between instructions. A better solution is to use the
GPxSET/GPxCLEAR/GPxTOGGLE registers instead of the GPxDAT registers. These registers always
read back a 0 and writes of 0 have no effect. Only bits that need to be changed can be specified
without disturbing any other bit(s) that are currently in the process of changing.
GPxSET/AIOSET Registers
The set registers are used to drive specified GPIO pins high without disturbing other pins. Each I/O
port has one set register and each bit corresponds to one GPIO pin. The set registers always read
back 0. If the corresponding pin is configured as an output, then writing a 1 to that bit in the set register
will set the output latch high and the corresponding pin will be driven high. If the pin is not configured
as a GPIO output, then the value will be latched but the pin will not be driven. Only if the pin is later
configured as a GPIO output will the latched value will be driven onto the pin. Writing a 0 to any bit in
the set registers has no effect.
GPxCLEAR/AIOCLEAR Registers
The clear registers are used to drive specified GPIO pins low without disturbing other pins. Each I/O
port has one clear register. The clear registers always read back 0. If the corresponding pin is
configured as a general purpose output, then writing a 1 to the corresponding bit in the clear register
will clear the output latch and the pin will be driven low. If the pin is not configured as a GPIO output,
then the value will be latched but the pin will not be driven. Only if the pin is later configured as a GPIO
output will the latched value will be driven onto the pin. Writing a 0 to any bit in the clear registers has
no effect.
GPxTOGGLE/AIOTOGGLE Registers
The toggle registers are used to drive specified GPIO pins to the opposite level without disturbing other
pins. Each I/O port has one toggle register. The toggle registers always read back 0. If the
corresponding pin is configured as an output, then writing a 1 to that bit in the toggle register flips the
output latch and pulls the corresponding pin in the opposite direction. That is, if the output pin is driven
low, then writing a 1 to the corresponding bit in the toggle register will pull the pin high. Likewise, if the
output pin is high, then writing a 1 to the corresponding bit in the toggle register will pull the pin low. If
the pin is not configured as a GPIO output, then the value will be latched but the pin will not be driven.
Only if the pin is later configured as a GPIO output will the latched value will be driven onto the pin.
Writing a 0 to any bit in the toggle registers has no effect.
1.5.4 Input Qualification
The input qualification scheme has been designed to be very flexible. You can select the type of input
qualification for each GPIO pin by configuring the GPAQSEL1, GPAQSEL2, GPBQSEL1 and GPBQSEL2
registers. In the case of a GPIO input pin, the qualification can be specified as only synchronize to
SYSCLKOUT or qualification by a sampling window. For pins that are configured as peripheral inputs, the
input can also be asynchronous in addition to synchronized to SYSCLKOUT or qualified by a sampling
window. The remainder of this section describes the options available.
1.5.4.1
No Synchronization (asynchronous input)
This mode is used for peripherals where input synchronization is not required or the peripheral itself
performs the synchronization. Examples include communication ports SCI, SPI, and I2C. In addition, it may
be desirable to have the ePWM trip zone (TZn) signals function independent of the presence of
SYSCLKOUT.
The asynchronous option is not valid if the pin is used as a general purpose digital input pin (GPIO). If the
pin is configured as a GPIO input and the asynchronous option is selected then the qualification defaults
to synchronization to SYSCLKOUT as described in Section 1.5.4.2.
122
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
1.5.4.2
Synchronization to SYSCLKOUT Only
This is the default qualification mode of all the pins at reset. In this mode, the input signal is only
synchronized to the system clock (SYSCLKOUT). Because the incoming signal is asynchronous, it can
take up to a SYSCLKOUT period of delay in order for the input to the DSP to be changed. No further
qualification is performed on the signal.
1.5.4.3
Qualification Using a Sampling Window
In this mode, the signal is first synchronized to the system clock (SYSCLKOUT) and then qualified by a
specified number of cycles before the input is allowed to change. Figure 1-63 and Figure 1-64 show how
the input qualification is performed to eliminate unwanted noise. Two parameters are specified by the user
for this type of qualification: 1) the sampling period, or how often the signal is sampled, and 2) the number
of samples to be taken.
Figure 1-63. Input Qualification Using a Sampling Window
Time between samples
GPxCTRL Reg
GPIOx
SYNC
Qualification
Input Signal
Qualified By 3
or 6 Samples
GPxQSEL1/2
SYSCLKOUT
Number of Samples
Time between samples (sampling period):
To qualify the signal, the input signal is sampled at a regular period. The sampling period is specified by
the user and determines the time duration between samples, or how often the signal will be sampled,
relative to the CPU clock (SYSCLKOUT).
The sampling period is specified by the qualification period (QUALPRDn) bits in the GPxCTRL register.
The sampling period is configurable in groups of 8 input signals. For example, GPIO0 to GPIO7 use
GPACTRL[QUALPRD0] setting and GPIO8 to GPIO15 use GPACTRL[QUALPRD1]. Table 1-59 and
Table 1-60 show the relationship between the sampling period or sampling frequency and the
GPxCTRL[QUALPRDn] setting.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 123
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-59. Sampling Period
Sampling Period
1 × TSYSCLKOUT
2 × GPxCTRL[QUALPRDn] × TSYSCLKOUT
Where TSYSCLKOUT is the period in time of SYSCLKOUT
If GPxCTRL[QUALPRDn] = 0
If GPxCTRL[QUALPRDn] ≠ 0
Table 1-60. Sampling Frequency
If GPxCTRL[QUALPRDn] = 0
If GPxCTRL[QUALPRDn] ≠ 0
Sampling Frequency
fSYSCLKOUT
fSYSCLKOUT × 1 ÷ (2 × GPxCTRL[QUALPRDn])
Where fSYSCLKOUT is the frequency of SYSCLKOUT
From these equations, the minimum and maximum time between samples can be calculated for a given
SYSCLKOUT frequency:
Example: Maximum Sampling Frequency:
If GPxCTRL[QUALPRDn] = 0
then the sampling frequency is fSYSCLKOUT
If, for example, fSYSCLKOUT = 60 MHz
then the signal will be sampled at 60 MHz or one sample every 16.67 ns.
Example: Minimum Sampling Frequency:
If GPxCTRL[QUALPRDn] = 0xFF (255)
then the sampling frequency is fSYSCLKOUT × 1 ÷ (2 × GPxCTRL[QUALPRDn])
If, for example, fSYSCLKOUT = 60 MHz
then the signal will be sampled at 60 MHz × 1 ÷ (2 × 255) or one sample every 8.5 μs.
Number of samples:
The number of times the signal is sampled is either 3 samples or 6 samples as specified in the
qualification selection (GPAQSEL1, GPAQSEL2, GPBQSEL1, and GPBQSEL2) registers. When 3 or 6
consecutive cycles are the same, then the input change will be passed through to the DSP.
Total Sampling Window Width:
The sampling window is the time during which the input signal will be sampled as shown in Figure 1-64.
By using the equation for the sampling period along with the number of samples to be taken, the total
width of the window can be determined.
For the input qualifier to detect a change in the input, the level of the signal must be stable for the duration
of the sampling window width or longer.
The number of sampling periods within the window is always one less then the number of samples taken.
For a thee-sample window, the sampling window width is 2 sampling periods wide where the sampling
period is defined in Table 1-59. Likewise, for a six-sample window, the sampling window width is 5
sampling periods wide. Table 1-61 and Table 1-62 show the calculations that can be used to determine
the total sampling window width based on GPxCTRL[QUALPRDn] and the number of samples taken.
Table 1-61. Case 1: Three-Sample Sampling Window Width
If GPxCTRL[QUALPRDn] = 0
If GPxCTRL[QUALPRDn] ≠ 0
124
System Control and Interrupts
Total Sampling Window Width
2 × TSYSCLKOUT
2 × 2 × GPxCTRL[QUALPRDn] × TSYSCLKOUT
Where TSYSCLKOUT is the period in time of SYSCLKOUT
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-62. Case 2: Six-Sample Sampling Window Width
If GPxCTRL[QUALPRDn] = 0
If GPxCTRL[QUALPRDn] ≠ 0
Total Sampling Window Width
5 × TSYSCLKOUT
5 × 2 × GPxCTRL[QUALPRDn] × TSYSCLKOUT
Where TSYSCLKOUT is the period in time of SYSCLKOUT
NOTE: The external signal change is asynchronous with respect to both the sampling period and
SYSCLKOUT. Due to the asynchronous nature of the external signal, the input should be
held stable for a time greater than the sampling window width to make sure the logic detects
a change in the signal. The extra time required can be up to an additional sampling period +
TSYSCLKOUT.
The required duration for an input signal to be stable for the qualification logic to detect a
change is described in the device specific data manual.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
125
General-Purpose Input/Output (GPIO)
www.ti.com
Example Qualification Window:
For the example shown in Figure 1-64, the input qualification has been configured as follows:
• GPxQSEL1/2 = 1,0. This indicates a six-sample qualification.
• GPxCTRL[QUALPRDn] = 1. The sampling period is tw(SP) = 2 × GPxCTRL[QUALPRDn] × TSYSCLKOUT .
This configuration results in the following:
• The width of the sampling window is: .
tw(IQSW) = 5 × tw(SP) = 5 × 2 × GPxCTRL[QUALPRDn] × TSYSCLKOUT or 5 × 2 × TSYSCLKOUT
• If, for example, TSYSCLKOUT = 16.67 ns, then the duration of the sampling window is:
tw(IQSW) = 5 × 2 × 16.67 ns =166.7 ns.
• To account for the asynchronous nature of the input relative to the sampling period and SYSCLKOUT,
up to an additional sampling period, tw(SP), + TSYSCLKOUT may be required to detect a change in the
input signal. For this example:
tw(SP) + TSYSCLKOUT = 333.4 ns + 166.67 ns = 500.1 ns
• In Figure 1-64, the glitch (A) is shorter then the qualification window and will be ignored by the input
qualifier.
Figure 1-64. Input Qualifier Clock Cycles
(A)
GPIO Signal
GPxQSELn = 1,0 (6 samples)
1
1
0
0
0
0
0
0
0
1
tw(SP)
0
0
0
1
1
1
1
1
1
1
1
1
Sampling Period determined
by GPxCTRL[QUALPRD](B)
tw(IQSW)
(SYSCLKOUT cycle * 2 * QUALPRD) * 5(C))
Sampling Window
SYSCLKOUT
QUALPRD = 1
(SYSCLKOUT/2)
(D)
Output From
Qualifier
A. This glitch will be ignored by the input qualifier. The QUALPRD bit field specifies the qualification sampling period. It can vary from 00 to
0xFF. If QUALPRD = 00, then the sampling period is 1 SYSCLKOUT cycle. For any other value “n”, the qualification sampling period in 2n
SYSCLKOUT cycles (i.e., at every 2n SYSCLKOUT cycles, the GPIO pin will be sampled).
B. The qualification period selected via the GPxCTRL register applies to groups of 8 GPIO pins.
C. The qualification block can take either three or six samples. The GPxQSELn Register selects which sample mode is used.
D. In the example shown, for the qualifier to detect the change, the input should be stable for 10 SYSCLKOUT cycles or greater. In other words,
the inputs should be stable for (5 x QUALPRD x 2) SYSCLKOUT cycles. That would ensure 5 sampling periods for detection to occur. Since
external signals are driven asynchronously, an 13-SYSCLKOUT-wide pulse ensures reliable recognition.
126
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
1.5.5 GPIO and Peripheral Multiplexing (MUX)
Up to three different peripheral functions are multiplexed along with a general input/output (GPIO) function
per pin. This allows you to pick and choose a peripheral mix that will work best for the particular
application.
Table 1-64 and Table 1-65 show an overview of the possible multiplexing combinations sorted by GPIO
pin. The second column indicates the I/O name of the pin on the device. Since the I/O name is unique, it
is the best way to identify a particular pin. Therefore, the register descriptions in this section only refer to
the GPIO name of a particular pin. The MUX register and particular bits that control the selection for each
pin are indicated in the first column.
For example, the multiplexing for the GPIO6 pin is controlled by writing to GPAMUX[13:12]. By writing to
these bits, the pin is configured as either GPIO6, or one of up to three peripheral functions. The GPIO6
pin can be configured as follows:
GPAMUX1[13:12] Bit Setting
If GPAMUX1[13:12] = 0,0
If GPAMUX1[13:12] = 0,1
If GPAMUX1[13:12] = 1,0
If GPAMUX1[13:12] = 1,1
Pin Functionality Selected
Pin configured as GPIO6
Pin configured as EPWM4A (O)
Pin configured as EPWMSYNCI (I)
Pin configured as EPWMSYNCO (O)
The devices have different multiplexing schemes. If a peripheral is not available on a particular device,
that MUX selection is reserved on that device and should not be used.
NOTE: If you should select a reserved GPIO MUX configuration that is not mapped to a peripheral,
the state of the pin will be undefined and the pin may be driven. Reserved configurations are
for future expansion and should not be selected. In the device MUX tables (Table 1-64 and
Table 1-65) these options are indicated as Reserved .
Some peripherals can be assigned to more than one pin via the MUX registers. For example, the
SPISIMOB can be assigned to either the GPIO12 or GPIO24 pin, depending on individual system
requirements as shown below:
Pin Assigned to SPISIMOB
Choice 1
GPIO12
or Choice 2
GPIO24
MUX Configuration
GPAMUX[25:24] = 1,1
GPAMUX2[17:16] = 1,1
If no pin is configured as an input to a peripheral, or if more than one pin is configured as an input for the
same peripheral, then the input to the peripheral will either default to a 0 or a 1 as shown in Table 1-63.
For example, if SPISIMOB were assigned to both GPIO12 and GPIO24, the input to the SPI peripheral
would default to a high state as shown in Table 1-63 and the input would not be connected to GPIO12 or
GPIO24.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 127
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-63. Default State of Peripheral Input
Peripheral Input
Description
Default Input
TZ1-TZ3
Trip zone 1-3
1
EPWMSYNCI
ePWM Synch Input
0
ECAP1
eCAP1 input
1
EQEP1A
eQEP input
1
EQEP1I
eQEP index
1
EQEP1S
eQEP strobe
1
SPICLKA/SPICLKB
SPI-A clock
1
SPISTEA /SPISTEB
SPI-A transmit enable
0
SPISIMOA/SPISIMOB
SPI-A Slave-in, master-out
1
SPISOMIA/SPISOMIB
SPI-A Slave-out, master-in
1
SCIRXDA - SCIRXDB
SCI-A - SCI-B receive
1
CANRXA
eCAN-A receive
1
2
SDAA
I C data
1
SCLA1
I2C clock
1
(1)
(1)
This value will be assigned to the peripheral input if more then one pin has been assigned to the peripheral function in the GPxMUX1/2
registers or if no pin has been assigned.
128 System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-64. GPIOA MUX
(1)
(2)
(3)
(1) (2)
DEFAULT AT RESET
PRIMARY I/O
FUNCTION
PERIPHERAL
SELECTION 1
PERIPHERAL
SELECTION 2
PERIPHERAL
SELECTION 3
GPAMUX1 REGISTER
BITS
(GPAMUX1 BITS = 00)
(GPAMUX1 BITS = 01)
(GPAMUX1 BITS = 10)
(GPAMUX1 BITS = 11)
1-0
GPIO0
EPWM1A (O)
Reserved
Reserved
3-2
GPIO1
EPWM1B (O)
Reserved
COMP1OUT (O)
5-4
GPIO2
EPWM2A (O)
Reserved
Reserved
7-6
GPIO3
EPWM2B (O)
SPISOMIA (I/O)
COMP2OUT (O)
9-8
GPIO4
EPWM3A (O)
Reserved
Reserved
11-10
GPIO5
EPWM3B (O)
SPISIMOA (I/O)
ECAP1 (I/O)
13-12
GPIO6
EPWM4A (O)
EPWMSYNCI (I)
EPWMSYNCO (O)
15-14
GPIO7
EPWM4B (O)
SCIRXDA (I)
ECAP2 (I/O)
17-16
GPIO8
EPWM5A (O)
Reserved
ADCSOCAO (O)
19-18
GPIO9
EPWM5B (O)
SCITXDB (3) (O)
ECAP3 (I/O)
21-20
GPIO10
EPWM6A (O)
Reserved
ADCSOCBO (O)
23-22
GPIO11
EPWM6B (O)
SCIRXDB (3) (I)
ECAP1 (I/O)
25-24
GPIO12
TZ1 (I)
SCITXDA (O)
SPISIMOB (I/O)
27-26
GPIO13
TZ2 (I)
Reserved
SPISOMIB (I/O)
29-28
GPIO14
TZ3 (I)
SCITXDB (3) (O)
SPICLKB (I/O)
SCIRXDB
(3)
31-30
GPIO15
ECAP2 (I/O)
GPAMUX2 REGISTER
BITS
(I)
SPISTEB (I/O)
(GPAMUX2 BITS = 00)
(GPAMUX2 BITS = 01)
(GPAMUX2 BITS = 10)
(GPAMUX2 BITS = 11)
1-0
GPIO16
SPISIMOA (I/O)
Reserved
TZ2 (I)
3-2
GPIO17
SPISOMIA (I/O)
Reserved
TZ3 (I)
5-4
GPIO18
SPICLKA (I/O)
SCITXDB (3) (O)
XCLKOUT (O)
7-6
GPIO19/XCLKIN
SPISTEA (I/O)
SCIRXDB (3) (I)
ECAP1 (I/O)
9-8
GPIO20
EQEP1A (I)
MDXA (O)
COMP1OUT (O)
11-10
GPIO21
EQEP1B (I)
MDRA (I)
COMP2OUT (O)
13-12
GPIO22
EQEP1S (I/O)
MCLKXA (I/O)
SCITXDB (3) (O)
15-14
GPIO23
EQEP1I (I/O)
MFSXA (I/O)
SCIRXDB (3) (I)
(3)
17-16
GPIO24
ECAP1 (I/O)
EQEP2A
(I)
SPISIMOB (I/O)
19-18
GPIO25
ECAP2 (I/O)
EQEP2B (3) (I)
SPISOMIB (I/O)
(3)
21-20
GPIO26
ECAP3 (I/O)
EQEP2I
(I/O)
SPICLKB (I/O)
23-22
GPIO27
HRCAP2 (I)
EQEP2S (3) (I/O)
SPISTEB (I/O)
25-24
GPIO28
SCIRXDA (I)
SDAA (I/OD)
TZ2 (I)
27-26
GPIO29
SCITXDA (O)
SCLA (I/OD)
TZ3 (I)
(3)
29-28
GPIO30
CANRXA (I)
EQEP2I
(I/O)
EPWM7A (O)
31-30
GPIO31
CANTXA (O)
EQEP2S (3) (I/O)
EPWM8A (O)
The word "Reserved" means that there is no peripheral assigned to this GPxMUX1/2 register setting. Should it be selected, the state of
the pin will be undefined and the pin may be driven. This selection is a reserved configuration for future expansion.
I = Input, O = Output, OD = Open Drain
eQEP2 is not available on the 80-pin PN/PFP package.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 129
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-65. GPIOB MUX
(1)
(2)
(3)
(1) (2)
DEFAULT AT RESET
PRIMARY I/O FUNCTION
PERIPHERAL
SELECTION 1
PERIPHERAL
SELECTION 2
PERIPHERAL
SELECTION 3
GPBMUX1 REGISTER
BITS
(GPBMUX1 BITS = 00)
(GPBMUX1 BITS = 01)
(GPBMUX1 BITS = 10)
(GPBMUX1 BITS = 11)
1-0
GPIO32
SDAA (I/OD)
EPWMSYNCI (I)
ADCSOCAO (O)
3-2
GPIO33
SCLA (I/OD)
EPWMSYNCO (O)
ADCSOCBO (O)
5-4
GPIO34
COMP2OUT (O)
Reserved
COMP3OUT (O)
7-6
GPIO35 (TDI)
Reserved
Reserved
Reserved
9-8
GPIO36 (TMS)
Reserved
Reserved
Reserved
11-10
GPIO37 (TDO)
Reserved
Reserved
Reserved
13-12
GPIO38/XCLKIN (TCK)
Reserved
Reserved
Reserved
15-14
GPIO39
Reserved
Reserved
Reserved
17-16
GPIO40 (3)
EPWM7A (O)
SCITXDB (O)
Reserved
19-18
GPIO41
(3)
EPWM7B (O)
SCIRXDB (I)
Reserved
21-20
GPIO42 (3)
EPWM8A (O)
TZ1 (I)
COMP1OUT (O)
23-22
GPIO43 (3)
EPWM8B (O)
TZ2 (I)
COMP2OUT (O)
25-24
GPIO44
(3)
MFSRA (I/O)
SCIRXDB (I)
EPWM7B (O)
27-26
Reserved
Reserved
Reserved
Reserved
29-28
Reserved
Reserved
Reserved
Reserved
31-30
Reserved
Reserved
Reserved
Reserved
GPBMUX2 REGISTER
BITS
(GPBMUX2 BITS = 00)
(GPBMUX2 BITS = 01)
(GPBMUX2 BITS = 10)
(GPBMUX2 BITS = 11)
1-0
Reserved
Reserved
Reserved
Reserved
3-2
Reserved
Reserved
Reserved
Reserved
5-4
GPIO50 (3)
EQEP1A (I)
MDXA (O)
TZ1 (I)
7-6
GPIO51 (3)
EQEP1B (I)
MDRA (I)
TZ2 (I)
9-8
GPIO52 (3)
EQEP1S (I/O)
MCLKXA (I/O)
TZ3 (I)
(3)
11-10
GPIO53
EQEP1I (I/O)
MFSXA (I/O)
Reserved
13-12
GPIO54 (3)
SPISIMOA (I/O)
EQEP2A (I)
HRCAP1 (I)
15-14
GPIO55 (3)
SPISOMIA (I/O)
EQEP2B (I)
HRCAP2 (I)
17-16
GPIO56
(3)
SPICLKA (I/O)
EQEP2I (I/O)
HRCAP3 (I)
19-18
GPIO57 (3)
SPISTEA (I/O)
EQEP2S (I/O)
HRCAP4 (I)
21-20
GPIO58 (3)
MCLKRA (I/O)
SCITXDB (O)
EPWM7A (O)
23-22
Reserved
Reserved
Reserved
Reserved
25-24
Reserved
Reserved
Reserved
Reserved
27-26
Reserved
Reserved
Reserved
Reserved
29-28
Reserved
Reserved
Reserved
Reserved
31-30
Reserved
Reserved
Reserved
Reserved
The word "Reserved" means that there is no peripheral assigned to this GPxMUX1/2 register setting. Should it be selected, the state of
the pin will be undefined and the pin may be driven. This selection is a reserved configuration for future expansion.
I = Input, O = Output, OD = Open Drain
This pin is not available in the 80-pin PN/PFP package.
130 System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-66. Analog MUX
Default at Reset
AIOx and Peripheral Selection1
Peripheral Selection 2 and Peripheral
Selection 3
AIOMUX1 Register bits
AIOMUX1 bits = 0,x
AIOMUX1 bits = 1,x
1-0
ADCINA0 (I)
ADCINA0 (I)
3-2
ADCINA1 (I)
ADCINA1 (I)
5-4
AIO2 (I/O)
ADCINA2 (I), COMP1A (I)
7-6
ADCINA3 (I)
ADCINA3 (I)
9-8
AIO4 (I/O)
ADCINA4 (I), COMP2A (I)
11-10
ADCINA5 (I)
ADCINA5 (I)
13-12
AIO6 (I/O)
ADCINA6 (I), COMP3A (1)
15-14
ADCINA7 (I)
ADCINA7 (I)
17-16
ADCINB0 (I)
ADCINB0 (I)
19-18
ADCINB1 (I)
ADCINB1 (I)
21-20
AIO10 (I/O)
ADCINB2 (I), COMP1B (I)
23-22
ADCINB3 (I)
ADCINB3 (I)
25-24
AIO12 (I/O)
ADCINB4 (I), COMP2B (I)
27-26
ADCINB5 (I)
ADCINB5 (I)
29-28
AIO14 (I/O)
ADCINB6 (I), COMP3B (1)
31-30
ADCINB7 (I)
ADCINB7 (I)
1.5.6 Register Bit Definitions
Figure 1-65. GPIO Port A MUX 1 (GPAMUX1) Register
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND- R/W = Read/Write; R = Read only; -n = value after reset
Table 1-67. GPIO Port A Multiplexing 1 (GPAMUX1) Register Field Descriptions
Bits
31-30
29-28
(1)
Field
Value
GPIO15
Description
(1)
Configure the GPIO15 pin as:
00
GPIO15 - General purpose input/output 15 (default) (I/O)
01
ECAP2 (I/O)
10
SCIRXDB (I)
11
SPISTEB (I/O)
GPIO14
Configure the GPIO14 pin as:
00
GPIO14 - General purpose I/O 14 (default) (I/O)
01
TZ3 - Trip zone 3 (I)
10
SCITXDB (O)
11
SPICLKB (IO) - SPI-B clock
This option is reserved on devices that do not have an SPI-B port.
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 131
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-67. GPIO Port A Multiplexing 1 (GPAMUX1) Register Field Descriptions (continued)
Bits
27-26
25-24
23-22
21-20
19-18
17-16
15-14
13-12
11-10
Field
Value
GPIO13
(1)
Configure the GPIO13 pin as:
00
GPIO13 - General purpose I/O 13 (default) (I/O)
01
TZ2 - Trip zone 2 (I)
10
Reserved
11
SPISOMIB (I/O) - SPI-B Slave Output/Master input
This option is reserved on devices that do not have an SPI-B port.
GPIO12
Configure the GPIO12 pin as:
00
GPIO12 - General purpose I/O 12 (default) (I/O)
01
TZ1 - Trip zone 1 (I)
10
SCITXDA - SCI-A Transmit (O)
11
SPISIMOB (I/O) - SPI-B Slave input/Master output
This option is reserved on devices that do not have an SPI-B port.
GPIO11
Configure the GPIO11 pin as:
00
GPIO11 - General purpose I/O 11 (default) (I/O)
01
EPWM6B - ePWM 6 output B (O)
10
SCIRXDB (I)
11
ECAP1 (I/O)
GPIO10
Configure the GPIO10 pin as:
00
GPIO10 - General purpose I/O 10 (default) (I/O)
01
EPWM6A - ePWM6 output A (O)
10
Reserved
11
ADCSOCBO - ADC Start of conversion B (O)
GPIO9
Configure the GPIO9 pin as:
00
GPIO9 - General purpose I/O 9 (default) (I/O)
01
EPWM5B - ePWM5 output B
10
SCITXDB (O)
11
ECAP3 (I/O)
GPIO8
Configure the GPIO8 pin as:
00
GPIO8 - General purpose I/O 8 (default) (I/O)
01
EPWM5A - ePWM5 output A (O)
10
Reserved
11
ADCSOCAO - ADC Start of conversion A
GPIO7
Configure the GPIO7 pin as:
00
GPIO7 - General purpose I/O 7 (default) (I/O)
01
EPWM4B - ePWM4 output B (O)
10
SCIRXDA (I) - SCI-A receive (I)
11
ECAP2 (I/O)
GPIO6
Configure the GPIO6 pin as:
00
GPIO6 - General purpose I/O 6 (default)
01
EPWM4A - ePWM4 output A (O)
10
EPWMSYNCI - ePWM Synch-in (I)
11
EPWMSYNCO - ePWM Synch-out (O)
GPIO5
132 System Control and Interrupts
Description
Configure the GPIO5 pin as:
00
GPIO5 - General purpose I/O 5 (default) (I/O)
01
EPWM3B - ePWM3 output B
10
SPISIMOA (I/O) - SPI-A Slave input/Master output
11
ECAP1 - eCAP1 (I/O)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-67. GPIO Port A Multiplexing 1 (GPAMUX1) Register Field Descriptions (continued)
Bits
9-8
7-6
5-4
3-2
1-0
Field
Value
Description
GPIO4
(1)
Configure the GPIO4 pin as:
00
GPIO4 - General purpose I/O 4 (default) (I/O)
01
EPWM3A - ePWM3 output A (O)
10
Reserved
11
Reserved
GPIO3
Configure the GPIO3 pin as:
00
GPIO3 - General purpose I/O 3 (default) (I/O)
01
EPWM2B - ePWM2 output B (O)
10
SPISOMIA (I/O) - SPI-A Slave output/Master input
11
COMP2OUT (O) - Comparator 2 output
GPIO2
Configure the GPIO2 pin as:
00
GPIO2 (I/O) General purpose I/O 2 (default) (I/O)
01
EPWM2A - ePWM2 output A (O)
10
Reserved
11
Reserved
GPIO1
Configure the GPIO1 pin as:
00
GPIO1 - General purpose I/O 1 (default) (I/O)
01
EPWM1B - ePWM1 output B (O)
10
Reserved
11
COMP1OUT (O) - Comparator 1 output
GPIO0
Configure the GPIO0 pin as:
00
GPIO0 - General purpose I/O 0 (default) (I/O)
01
EPWM1A - ePWM1 output A (O)
10
Reserved
11
Reserved
Figure 1-66. GPIO Port A MUX 2 (GPAMUX2) Register
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19/XCLKI
N
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-68. GPIO Port A MUX 2 (GPAMUX2) Register Field Descriptions
Bits
31-30
29-28
Field
Value
GPIO31
(1)
Configure the GPIO31 pin as:
00
GPIO31 - General purpose I/O 31 (default) (I/O)
01
CANTXA - eCAN-A transmit (O)
10
EQEP2S (I/O)
11
EPWM8A (O)
GPIO30
Configure the GPIO30 pin as:
00
(1)
Description
GPIO30 (I/O) General purpose I/O 30 (default) (I/O)
If reserved configurations are selected, then the state of the pin will be undefined and the pin may be driven. These selections
are reserved for future expansion and should not be used.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 133
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-68. GPIO Port A MUX 2 (GPAMUX2) Register Field Descriptions (continued)
Bits
27-26
25-24
23-22
21-20
19-18
17-16
15-14
13-12
Field
Value
(1)
01
CANRXA - eCAN-A receive (I)
10
EQEP2I (I/O)
11
EPWM7A (O)
GPIO29
Configure the GPIO29 pin as:
00
GPIO29 (I/O) General purpose I/O 29 (default) (I/O)
01
SCITXDA - SCI-A transmit. (O)
10
SCLA - I2C clock open drain bidirectional port (I/O)
11
TZ3 - Trip zone 3(I)
GPIO28
Configure the GPIO28 pin as:
00
GPIO28 (I/O) General purpose I/O 28 (default) (I/O)
01
SCIRXDA - SCI-A receive (I)
10
SDAA - I2C data open drain bidirectional port (I/O)
11
TZ2 - Trip zone 2 (I)
GPIO27
Configure the GPIO27 pin as:
00
GPIO27 - General purpose I/O 27 (default) (I/O)
01
HRCAP2 (I)
10
EQEP2S (I/O)
11
SPISTEB (I/O) - SPI-B Slave transmit enable
GPIO26
Configure the GPIO26 pin as:
00
GPIO26 - General purpose I/O 26 (default) (I/O)
01
ECAP3 (I/O)
10
EQEP2I (I/O)
11
SPICLKB (I/O) - SPI-B clock
GPIO25
Configure the GPIO25 pin as:
00
GPIO25 - General purpose I/O 25 (default) (I/O)
01
ECAP2 (I/O)
10
EQEP2B (I)
11
SPISOMIB (I/O) - SPI-B Slave Output/Master input
GPIO24
Configure the GPIO24 pin as:
00
GPIO24 - General purpose I/O 24 (default) (I/O)
01
ECAP1 - eCAP1 (I/O)
10
EQEP2A (I)
11
SPISIMOB (I/O) - SPI-B Slave input/Master output
GPIO23
Configure the GPIO23 pin as:
00
GPIO23 - General purpose I/O 23 (default) (I/O)
01
EQEP1I - eQEP1 index (I/O)
10
MFSXA (I/O)
11
SCIRXDB (I)
GPIO22
134 System Control and Interrupts
Description
Configure the GPIO22 pin as:
00
GPIO22 - General purpose I/O 22 (default) (I/O)
01
EQEP1S - eQEP1 strobe (I/O)
10
MCLKXA (I/O)
11
SCITXDB (O)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-68. GPIO Port A MUX 2 (GPAMUX2) Register Field Descriptions (continued)
Bits
11-10
9-8
7-6
5-4
3-2
1-0
Field
Value
(1)
Description
GPIO21
Configure the GPIO21 pin as:
00
GPIO21 - General purpose I/O 21 (default) (I/O)
01
EQEP1B - eQEP1 input B (I)
10
MDRA (I)
11
COMP2OUT (O) - Comparator 2 output
GPIO20
Configure the GPIO20 pin as:
00
GPIO20 - General purpose I/O 20 (default) (I/O)
01
EQEP1A - eQEP1 input A (I)
10
MDXA (O)
11
COMP1OUT (O) - Comparator 1 output
GPIO19/XCLKIN
Configure the GPIO19 pin as:
00
GPIO19 - General purpose I/O 19 (default) (I/O) or XCLKIN
01
SPISTEA - SPI-A slave transmit enable (I/O)
10
SCIRXDB (I)
11
ECAP1 - eCAP1 (I/O)
GPIO18
Configure the GPIO18 pin as:
00
GPIO18 - General purpose I/O 18 (default) (I/O)
01
SPICLKA - SPI-A clock (I/O)
10
SCITXDB (O)
11
XCLKOUT (O) - External clock output
GPIO17
Configure the GPIO17 pin as:
00
GPIO17 - General purpose I/O 17 (default) (I/O)
01
SPISOMIA - SPI-A Slave output/Master input (I/O)
10
Reserved
11
TZ3 - Trip zone 3 (I)
GPIO16
Configure the GPIO16 pin as:
00
GPIO16 - General purpose I/O 16 (default) (I/O)
01
SPISIMOA - SPI-A slave-in, master-out (I/O),
10
Reserved
11
TZ2 - Trip zone 2 (I)
Figure 1-67. GPIO Port B MUX 1 (GPBMUX1) Register
31
15
26
14
25
24
23
22
21
20
19
18
17
16
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO39
GPIO38/XCLKI
N (TCK)
GPIO37(TDO)
GPIO36(TMS)
GPIO35(TDI)
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
135
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-69. GPIO Port B MUX 1 (GPBMUX1) Register Field Descriptions
Bit
Field
31:26
Reserved
25:24
GPIO44
23:22
21:20
19:18
17:16
15:14
13:12
11:10
9:8
136
Value
Reserved
Reserved
Configure this pin as:
00
GPIO44 - general purpose I/O 44 (default)
01
MFSRA (I/O)
10
SCIRXDB (I)
11
EPWM7B (O)
GPIO43
Configure this pin as:
00
GPIO43 - general purpose I/O 43 (default)
01
EPWM8B (O)
10
TZ2 (I)
11
COMP2OUT (O) - Comparator 2 output
GPIO42
Configure this pin as:
00
GPIO42 - general purpose I/O 42 (default)
01
EPWM8A (O)
10
TZ1 (I)
11
COMP1OUT (O) - Comparator 1 output
GPIO41
Configure this pin as:
00
GPIO41 - general purpose I/O 41 (default)
01
EPWM7B (O) ePWM7 output B (O)
10
SCIRXDB (I)
11
Reserved
GPIO40
Configure this pin as:
00
GPIO40 - general purpose I/O 40 (default)
01
EPWM7A (O) - ePWM7 output A (O)
10
SCITXDB (O)
11
Reserved
GPIO39
GPIO38/XCLKI
N (TCK)
Description
Configure this pin as:
00
GPIO39 - general purpose I/O 39 (default)
01
Reserved
10 or 11
Reserved
Configure this pin as:
00
GPIO38 - general purpose I/O 38 (default). If TRST = 1, JTAG TCK function is chosen for
this pin. This pin can also be used to provide a clock from an external oscillator to the core.
01
Reserved
10 or 11
Reserved
GPIO37(TDO)
Configure this pin as:
00
GPIO37 - general purpose I/O 37 (default). If TRST = 1, JTAG TDO function is chosen for
this pin.
01
Reserved
10 or 11
Reserved
GPIO36(TMS)
Configure this pin as:
00
GPIO36 - general purpose I/O 36 (default). If TRST = 1, JTAG TMS function is chosen for
this pin.
01
Reserved
10 or 11
Reserved
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-69. GPIO Port B MUX 1 (GPBMUX1) Register Field Descriptions (continued)
Bit
Field
7:6
GPIO35(TDI)
5:4
3:2
1:0
Value
Description
Configure this pin as:
00
GPIO35 - general purpose I/O 35 (default). If TRST = 1, JTAG TDI function is chosen for this
pin.
01
Reserved
10 or 11
Reserved
GPIO34
Configure this pin as:
00
GPIO34 - general purpose I/O 34 (default)
01
COMP2OUT (O) - Comparator 2 output
10
Reserved
11
COMP3OUT (O) - Comparator 3 output
GPIO33
Configure this pin as:
00
GPIO33 - general purpose I/O 33 (default)
01
SCLA - I2C clock open drain bidirectional port (I/O)
10
EPWMSYNCO - External ePWM sync pulse output (O)
11
ADCSOCBO - ADC start-of-conversion B (O)
GPIO32
Configure this pin as:
00
GPIO32 - general purpose I/O 32 (default)
01
SDAA - I2C data open drain bidirectional port (I/O)
10
EPWMSYNCI - External ePWM sync pulse input (I)
11
ADCSOCAO - ADC start-of-conversion A (O)
Figure 1-68. GPIO Port B MUX 2 (GPBMUX2) Register
31
22
15
14
13
12
21
20
19
18
17
16
Reserved
GPIO58
GPIO57
GPIO56
R-0
R/W-0
R/W-0
R/W-0
11
10
9
8
7
6
5
4
3
0
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-70. GPIO Port B MUX 2 (GPBMUX2) Register Field Descriptions
Bit
Field
Value
Description
31:22
Reserved
Any writes to these bit(s) must always have a value of 0.
21:20
GPIO58
Configure this pin as:
19:18
00
GPIO58 - general purpose I/O 42 (default)
01
MCLKRA (I/O)
10
SCITXDB (O)
11
EPWM7A (O)
GPIO57
Configure this pin as:
00
GPIO57 - general purpose I/O 57 (default)
01
SPISTEA (I/O)
10
EQEP2S (I/O)
11
HRCAP4 (I)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
137
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-70. GPIO Port B MUX 2 (GPBMUX2) Register Field Descriptions (continued)
Bit
Field
17:16
Value
Description
GPIO56
15:14
Configure this pin as:
00
GPIO56 - general purpose I/O 56(default)
01
SPICLKA (I/O)
10
EQEP2I (I/O)
11
HRCAP3 (I)
GPIO55
13:12
Configure this pin as:
00
GPIO55 - general purpose I/O 55 (default)
01
SPISOMIA (I/O)
10
EQEP2B (I)
11
HRCAP2 (I)
GPIO54
11:10
Configure this pin as:
00
GPIO54 - general purpose I/O 54 (default).
01
SPISIMOA (I/O)
10
EQEP2A (I)
11
HRCAP1 (I)
GPIO53
9:8
Configure this pin as:
00
GPIO53 - general purpose I/O 53 (default).
01
EQEP1I (I/O)
10
MFSXA (I/O)
11
Reserved
GPIO52
7:6
Configure this pin as:
00
GPIO52 - general purpose I/O 52 (default).
01
EQEP1S (I/O)
10
MCLKXA (I/O)
11
TZ3 (I)
GPIO51
5:4
Configure this pin as:
00
GPIO51 - general purpose I/O 51 (default).
01
EQEP1B (I)
10
MDRA (I)
11
TZ2 (I)
GPIO50
3:0
Configure this pin as:
00
GPIO50 - general purpose I/O 50 (default)
01
EQEP1A (I)
10
MDXA (O)
11
TZ1 (I)
Reserved
Any writes to these bit(s) must always have a value of 0.
Figure 1-69. Analog I/O MUX (AIOMUX1) Register
31
30
29
28
27
26
25
24
23
22
21
20
19
16
Reserved
AIO14
Reserved
AIO12
Reserved
AIO10
Reserved
R-0
R/W-1,x
R-0
R/W-1,x
R-0
R/W-1,x
R-0
15
14
13
12
11
10
9
8
7
6
5
4
3
0
Reserved
AIO6
Reserved
AIO4
Reserved
AIO2
Reserved
R-0
R/W-1,x
R-0
R/W-1,x
R-0
R/W-1,x
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
138
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-71. Analog I/O MUX (AIOMUX1) Register Field Descriptions
Bit
Field
Value
31:30
Reserved
29:28
AIO14
27:26
Reserved
25:24
AIO12
23:22
Reserved
21:20
AIO10
19:14
Reserved
13:12
AIO6
11:10
Reserved
9:8
AIO4
7:6
Reserved
5:4
AIO2
3:0
Reserved
Description
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO14 enabled
10 or 11
AIO14 disabled (default)
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO12 enabled
10 or 11
AIO12 disabled (default)
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO10 enabled
10 or 11
AIO10 disabled (default)
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO6 enabled
10 or 11
AIO6 disabled (default)
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO4 enabled
10 or 11
AIO4 disabled (default)
Any writes to these bit(s) must always have a value of 0.
00 or 01
AIO2 enabled
10 or 11
AIO2 disabled (default)
Any writes to these bit(s) must always have a value of 0.
Figure 1-70. GPIO Port A Qualification Control (GPACTRL) Register
31
24
23
16
QUALPRD3
QUALPRD2
R/W-0
R/W-0
15
8
7
0
QUALPRD1
QUALPRD0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
The GPxCTRL registers specify the sampling period for input pins when configured for input qualification
using a window of three or six samples. The sampling period is the amount of time between qualification
samples relative to the period of SYSCLKOUT. The number of samples is specified in the GPxQSELn
registers.
Table 1-72. GPIO Port A Qualification Control (GPACTRL) Register Field Descriptions
Bits
Field
31-24
QUALPRD3
Value
(2)
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
...
(2)
(1)
Specifies the sampling period for pins GPIO24 to GPIO31.
0xFF
(1)
Description
...
Sampling Period = 510 × TSYSCLKOUT
This register is EALLOW protected. See Section 1.6.2 for more information.
TSYSCLKOUT indicates the period of SYSCLKOUT.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
139
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-72. GPIO Port A Qualification Control (GPACTRL) Register Field Descriptions (continued)
Bits
Field
23-16
QUALPRD2
Value
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
QUALPRD1
...
Sampling Period = 510 × TSYSCLKOUT
Specifies the sampling period for pins GPIO8 to GPIO15.
(2)
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
...
0xFF
QUALPRD0
...
Sampling Period = 510 × TSYSCLKOUT
Specifies the sampling period for pins GPIO0 to GPIO7.
(2)
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
...
0xFF
140
(2)
0x00
0xFF
7-0
(1)
Specifies the sampling period for pins GPIO16 to GPIO23.
...
15-8
Description
System Control and Interrupts
...
Sampling Period = 510 × TSYSCLKOUT
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-71. GPIO Port B Qualification Control (GPBCTRL) Register
31
24
23
16
QUALPRD3
QUALPRD2
R/W-0
R/W-0
15
8
7
0
QUALPRD1
QUALPRD0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-73. GPIO Port B Qualification Control (GPBCTRL) Register Field Descriptions
Bits
Field
31-24
QUALPRD3
Value
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
QUALPRD2
Sampling Period = 510 × TSYSCLKOUT
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
QUALPRD1
(2)
...
Sampling Period = 510 × TSYSCLKOUT
Specifies the sampling period for pins GPIO40 to GPIO44
0xFF
Sampling Period = 510 × TSYSCLKOUT
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
...
0xFF
QUALPRD0
(2)
...
Sampling Period = 510 × TSYSCLKOUT
Specifies the sampling period for pins GPIO32 to GPIO39
0xFF
Sampling Period = 510 × TSYSCLKOUT
0x00
Sampling Period = TSYSCLKOUT
0x01
Sampling Period = 2 × TSYSCLKOUT
0x02
Sampling Period = 4 × TSYSCLKOUT
...
0xFF
(2)
Sampling Period = 510 × TSYSCLKOUT
Specifies the sampling period for pins GPIO50 to GPIO55
0xFF
(1)
...
0xFF
...
7-0
(2)
Sampling Period = TSYSCLKOUT
0xFF
15-8
(1)
Specifies the sampling period for pins GPIO56 to GPIO58
0x00
...
23-16
Description
(2)
...
Sampling Period = 510 × TSYSCLKOUT
This register is EALLOW protected. See Section 1.6.2 for more information.
TSYSCLKOUT indicates the period of SYSCLKOUT.
Figure 1-72. GPIO A Control Register 2 Register (GPACTRL2) Register
31
16
Reserved
R-0
15
1
0
Reserved
USBIOEN
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
141
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-74. (GPACTRL2) Register Field Descriptions
142
Bits
Field
31-1
Reserved
Any writes to these bit(s) must always have a value of 0.
0
USBIOEN
USB I/O Enable Bit
System Control and Interrupts
Value
Description
0
USB0DP and USB0DM pins are controlled by GPIO Mux register settings. USBPHY is
powered down.
1
USB0DP and USB0DM pins configured as USB function. GPIO function is disabled.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-73. GPIO Port A Qualification Select 1 (GPAQSEL1) Register
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-75. GPIO Port A Qualification Select 1 (GPAQSEL1) Register Field Descriptions
(1)
Bits
Field
31-0
GPIO15-GPIO0
Value
Description
(1)
Select input qualification type for GPIO0 to GPIO15. The input qualification of each GPIO
input is controlled by two bits as shown in Figure 1-73.
00
Synchronize to SYSCLKOUT only. Valid for both peripheral and GPIO pins.
01
Qualification using 3 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
10
Qualification using 6 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
11
Asynchronous. (no synchronization or qualification). This option applies to pins configured
as peripherals only. If the pin is configured as a GPIO input, then this option is the same as
0,0 or synchronize to SYSCLKOUT.
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
143
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-74. GPIO Port A Qualification Select 2 (GPAQSEL2) Register
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-76. GPIO Port A Qualification Select 2 (GPAQSEL2) Register Field Descriptions
(1)
144
Bits
Field
31-0
GPIO31-GPIO16
Value
Description
(1)
Select input qualification type for GPIO16 to GPIO31. The input qualification of each GPIO
input is controlled by two bits as shown in Figure 1-74.
00
Synchronize to SYSCLKOUT only. Valid for both peripheral and GPIO pins.
01
Qualification using 3 samples. Valid for pins configured as GPIO or a peripheral function. The
time between samples is specified in the GPACTRL register.
10
Qualification using 6 samples. Valid for pins configured as GPIO or a peripheral function. The
time between samples is specified in the GPACTRL register.
11
Asynchronous. (no synchronization or qualification). This option applies to pins configured as
peripherals only. If the pin is configured as a GPIO input, then this option is the same as 0,0
or synchronize to SYSCLKOUT.
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-75. GPIO Port B Qualification Select 1 (GPBQSEL1) Register
31
15
26
14
25
24
23
22
21
20
19
18
17
16
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPIO39
GPIO38
GPIO37
GPIO36
GPIO35
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-77. GPIO Port B Qualification Select 1 (GPBQSEL1) Register Field Descriptions
Bits
31- 26
25-0
(1)
Field
Value
Description
(1)
Reserved
Any writes to these bit(s) must always have a value of 0.
GPIO 44-GPIO32
Select input qualification type for GPIO32 to GPIO44. The input qualification of each GPIO
input is controlled by two bits as shown in Figure 1-75 .
00
Synchronize to SYSCLKOUT only. Valid for both peripheral and GPIO pins.
01
Qualification using 3 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
10
Qualification using 6 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
11
Asynchronous. (no synchronization or qualification). This option applies to pins configured
as peripherals only. If the pin is configured as a GPIO input, then this option is the same as
0,0 or synchronize to SYSCLKOUT.
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
145
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-76. GPIO Port B Qualification Select 2 (GPBQSEL2) Register
31
22
15
14
13
12
21
20
19
18
17
16
Reserved
GPIO58
GPIO57
GPIO56
R/W-0
R/W-0
R/W-0
R/W-0
11
10
9
8
7
6
5
4
3
0
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-78. GPIO Port B Qualification Select 2 (GPBQSEL2) Register Field Descriptions
Bits
31- 22
21-0
(1)
Field
Value
Description
(1)
Reserved
Any writes to these bit(s) must always have a value of 0.
GPIO58-GPIO50
Select input qualification type for GPIO58 to GPIO50. The input qualification of each GPIO
input is controlled by two bits as shown in Figure 1-76 .
00
Synchronize to SYSCLKOUT only. Valid for both peripheral and GPIO pins.
01
Qualification using 3 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
10
Qualification using 6 samples. Valid for pins configured as GPIO or a peripheral function.
The time between samples is specified in the GPACTRL register.
11
Asynchronous. (no synchronization or qualification). This option applies to pins configured
as peripherals only. If the pin is configured as a GPIO input, then this option is the same as
0,0 or synchronize to SYSCLKOUT.
This register is EALLOW protected. See Section 1.6.2 for more information.
The GPADIR and GPBDIR registers control the direction of the pins when they are configured as a GPIO
in the appropriate MUX register. The direction register has no effect on pins configured as peripheral
functions.
Figure 1-77. GPIO Port A Direction (GPADIR) Register
31
30
29
28
27
26
25
24
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
23
22
21
20
19
18
17
16
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-79. GPIO Port A Direction (GPADIR) Register Field Descriptions
Bits
Field
31-0
GPIO31-GPIO0
Value
Description
(1)
Controls direction of GPIO Port A pins when the specified pin is configured as a GPIO in the
appropriate GPAMUX1 or GPAMUX2 register.
0
Configures the GPIO pin as an input. (default)
1
Configures the GPIO pin as an output
The value currently in the GPADAT output latch is driven on the pin. To initialize the GPADAT
latch prior to changing the pin from an input to an output, use the GPASET, GPACLEAR, and
GPATOGGLE registers.
(1)
146
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-78. GPIO Port B Direction (GPBDIR) Register
31
27
26
25
24
Reserved
GPIO58
GPIO57
GPIO56
R-0
R/W-0
R/W-0
R/W-0
17
23
22
21
20
19
18
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
15
13
16
12
11
10
9
8
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO39
GPIO38
GPIO37
GPIO36
GPIO35
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-80. GPIO Port B Direction (GPBDIR) Register Field Descriptions
Bits
(1)
Field
Value
Description
(1)
31-27
Reserved
Any writes to these bit(s) must always have a value of 0.
26-18
GPIO58-GPIO50
Controls direction of GPIO pin when GPIO mode is selected. Reading the register returns the
current value of the register setting.
0
Configures the GPIO pin as an input. (default)
1
Configures the GPIO pin as an output
17-13
Reserved
Any writes to these bit(s) must always have a value of 0.
12-0
GPIO44-GPIO32
Controls direction of GPIO pin when GPIO mode is selected. Reading the register returns the
current value of the register setting.
0
Configures the GPIO pin as an input. (default)
1
Configures the GPIO pin as an output
This register is EALLOW protected. See Section 1.6.2 for more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
147
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-79. Analog I/O DIR (AIODIR) Register
31
16
Reserved
R-0
15
14
13
12
11
10
Reserved
AIO14
Reserved
AIO12
Reserved
AIO10
9
Reserved
8
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
7
6
5
4
3
2
Reserved
AIO6
Reserved
AIO4
Reserved
AIO2
1
Reserved
0
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-81. Analog I/O DIR (AIODIR) Register Field Descriptions
Bit
Field
Value
Description
31:15
Reserved
Any writes to these bit(s) must always have a value of 0.
14:0
AIOn
Controls direction of the available AIO pin when AIO mode is selected. Reading the register returns
the current value of the register setting
0
Configures the AIO pin as an input. (default)
1
Configures the AIO pin as an output
The pullup disable (GPxPUD) registers allow you to specify which pins should have an internal pullup
resister enabled. The internal pullups on the pins that can be configured as ePWM outputs(GPIO0GPIO11) are all disabled asynchronously when the external reset signal (XRS) is low. The internal pullups
on all other pins are enabled on reset. When coming out of reset, the pullups remain in their default state
until you enable or disable them selectively in software by writing to this register. The pullup configuration
applies both to pins configured as I/O and those configured as peripheral functions.
Figure 1-80. GPIO Port A Pullup Disable (GPAPUD) Registers
31
30
29
28
27
26
25
24
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
23
22
21
20
19
18
17
16
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-1
R/W-1
R/W-1
R/W-1
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-82. GPIO Port A Internal Pullup Disable (GPAPUD) Register Field Descriptions
(1)
148
Bits
Field
31-0
GPIO31-GPIO0
Value
Description
(1)
Configure the internal pullup resister on the selected GPIO Port A pin. Each GPIO pin
corresponds to one bit in this register.
0
Enable the internal pullup on the specified pin. (default for GPIO12-GPIO31)
1
Disable the internal pullup on the specified pin. (default for GPIO0-GPIO11)
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-81. GPIO Port B Pullup Disable (GPBPUD) Registers
31
27
26
25
24
Reserved
GPIO58
GPIO57
GPIO56
R-0
R/W-0
R/W-0
R/W-0
17
23
22
21
20
19
18
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
15
13
16
12
11
10
9
8
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R-0
R/W-0
R/W-1
R/W-1
R/W-1
R/W-1
7
6
5
4
3
2
1
0
GPIO39
GPIO38
GPIO37
GPIO36
GPIO35
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-83. GPIO Port B Internal Pullup Disable (GPBPUD) Register Field Descriptions
Bits
Value
Description
(1)
31- 27
Reserved
Any writes to these bit(s) must always have a value of 0.
26-18
GPIO58GPIO50
Configure the internal pullup resister on the selected GPIO Port B pin. Each GPIO pin
corresponds to one bit in this register.
0
Enable the internal pullup on the specified pin. (default for GPIO58-GPIO50))
1
Disable the internal pullup on the specified pin.
17-13
Reserved
Any writes to these bit(s) must always have a value of 0.
12-8
GPIO44GPIO40
Configure the internal pullup resister on the selected GPIO Port B pin. Each GPIO pin
corresponds to one bit in this register.
7-0
(1)
Field
0
Enable the internal pullup on the specified pin. (default for GPIO44)
1
Disable the internal pullup on the specified pin. (default for GPIO43-GPIO40)
GPIO39GPIO32
Configure the internal pullup resister on the selected GPIO Port B pin. Each GPIO pin
corresponds to one bit in this register.
0
Enable the internal pullup on the specified pin. (default for GPIO39-GPIO32)
1
Disable the internal pullup on the specified pin
This register is EALLOW protected. See Section 1.6.2 for more information.
The GPIO data registers indicate the current status of the GPIO pin, irrespective of which mode the pin is
in. Writing to this register will set the respective GPIO pin high or low if the pin is enabled as a GPIO
output, otherwise the value written is latched but ignored. The state of the output register latch will remain
in its current state until the next write operation. A reset will clear all bits and latched values to zero. The
value read from the GPxDAT registers reflect the state of the pin (after qualification), not the state of the
output latch of the GPxDAT register.
Typically the DAT registers are used for reading the current state of the pins. To easily modify the output
level of the pin refer to the SET, CLEAR and TOGGLE registers.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
149
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-82. GPIO Port A Data (GPADAT) Register
31
30
29
28
27
26
25
24
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
23
22
21
20
19
18
17
16
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
15
14
13
12
11
10
9
8
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset (1)
(1)
x = The state of the GPADAT register is unknown after reset. It depends on the level of the pin after reset.
Table 1-84. GPIO Port A Data (GPADAT) Register Field Descriptions
Bits
Field
31-0
GPIO31-GPIO0
Value
Description
Each bit corresponds to one GPIO port A pin (GPIO0-GPIO31) as shown in Figure 1-82.
0
Reading a 0 indicates that the state of the pin is currently low, irrespective of the mode the pin is
configured for.
Writing a 0 will force an output of 0 if the pin is configured as a GPIO output in the appropriate
GPAMUX1/2 and GPADIR registers; otherwise, the value is latched but not used to drive the
pin.
1
Reading a 1 indicates that the state of the pin is currently high irrespective of the mode the pin
is configured for.
Writing a 1will force an output of 1if the pin is configured as a GPIO output in the appropriate
GPAMUX1/2 and GPADIR registers; otherwise, the value is latched but not used to drive the
pin.
150
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-83. GPIO Port B Data (GPBDAT) Register
31
27
26
25
24
Reserved
GPIO58
GPIO57
GPIO56
R-0
R/W-0
R/W-0
R/W-0
17
23
22
21
20
19
18
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
15
13
16
12
11
10
9
8
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO39
GPIO38
GPIO37
GPIO36
GPIO35
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-85. GPIO Port B Data (GPBDAT) Register Field Descriptions
Bit
Field
Value
31-27
Reserved
26-18
GPIO 58-GPIO50
Description
Any writes to these bit(s) must always have a value of 0.
Each bit corresponds to one GPIO port B pin (GPIO58-GPIO50) as shown in Figure 1-83.
0
Reading a 0 indicates that the state of the pin is currently low, irrespective of the mode the pin is
configured for.
Writing a 0 will force an output of 0 if the pin is configured as a GPIO output in the appropriate
GPBMUX1 and GPBDIR registers; otherwise, the value is latched but not used to drive the pin.
1
Reading a 1 indicates that the state of the pin is currently high irrespective of the mode the pin is
configured for.
Writing a 1 will force an output of 1 if the pin is configured as a GPIO output in the GPBMUX1
and GPBDIR registers; otherwise, the value is latched but not used to drive the pin.
17-13
Reserved
Any writes to these bit(s) must always have a value of 0.
12-0
GPIO44-GPIO32
Each bit corresponds to one GPIO port B pin (GPIO44-GPIO32) as shown in Figure 1-83.
0
Reading a 0 indicates that the state of the pin is currently low, irrespective of the mode the pin is
configured for.
Writing a 0 will force an output of 0 if the pin is configured as a GPIO output in the appropriate
GPBMUX1 and GPBDIR registers; otherwise, the value is latched but not used to drive the pin.
1
Reading a 1 indicates that the state of the pin is currently high irrespective of the mode the pin is
configured for.
Writing a 1 will force an output of 1 if the pin is configured as a GPIO output in the GPBMUX1
and GPBDIR registers; otherwise, the value is latched but not used to drive the pin.
Figure 1-84. Analog I/O DAT (AIODAT) Register
31
16
Reserved
R-0
15
14
13
12
11
10
Reserved
AIO14
Reserved
AIO12
Reserved
AIO10
9
Reserved
8
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
7
6
5
4
3
2
Reserved
AIO6
Reserved
AIO4
Reserved
AIO2
1
Reserved
0
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
151
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-86. Analog I/O DAT (AIODAT) Register Field Descriptions
Bit
Field
Value
Description
31:15
Reserved
Any writes to these bit(s) must always have a value of 0.
14-0
AIOn
Each bit corresponds to one AIO port pin
0
Reading a 0 indicates that the state of the pin is currently low, irrespective of the mode the pin is
configured for.
Writing a 0 will force an output of 0 if the pin is configured as a AIO output in the appropriate
registers; otherwise, the value is latched but not used to drive the pin.
1
Reading a 1 indicates that the state of the pin is currently high irrespective of the mode the pin is
configured for.
Writing a 1will force an output of 1if the pin is configured as a AIO output in the appropriate
registers; otherwise, the value is latched but not used to drive the pin.
Figure 1-85. GPIO Port A Set, Clear and Toggle (GPASET, GPACLEAR, GPATOGGLE) Registers
31
30
29
28
27
26
25
24
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
23
22
21
20
19
18
17
16
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-87. GPIO Port A Set (GPASET) Register Field Descriptions
Bits
Field
Value
31-0
GPIO31-GPIO0
Description
Each GPIO port A pin (GPIO0-GPIO31) corresponds to one bit in this register as shown in
Figure 1-85.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to high. If the pin is configured as a GPIO
output then it will be driven high. If the pin is not configured as a GPIO output then the latch is set
high but the pin is not driven.
Table 1-88. GPIO Port A Clear (GPACLEAR) Register Field Descriptions
152
Bits
Field
31-0
GPIO31 - GPIO0
Value
Description
Each GPIO port A pin (GPIO0-GPIO31) corresponds to one bit in this register as shown in
Figure 1-85.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to low. If the pin is configured as a GPIO output
then it will be driven low. If the pin is not configured as a GPIO output then the latch is cleared but
the pin is not driven.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-89. GPIO Port A Toggle (GPATOGGLE) Register Field Descriptions
Bits
Field
31-0
Value
GPIO31-GPIO0
Description
Each GPIO port A pin (GPIO0-GPIO31) corresponds to one bit in this register as shown in Figure 185.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to toggle from its current state. If the pin is
configured as a GPIO output then it will be driven in the opposite direction of its current state. If the
pin is not configured as a GPIO output then the latch is toggled but the pin is not driven.
Figure 1-86. GPIO Port B Set, Clear and Toggle (GPBSET, GPBCLEAR, GPBTOGGLE) Registers
31
26
25
24
Reserved
27
GPIO58
GPIO57
GPIO56
R-0
R/W-0
R/W-0
R/W-0
17
23
22
21
20
19
18
GPIO55
GPIO54
GPIO53
GPIO52
GPIO51
GPIO50
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
15
13
16
12
11
10
9
8
Reserved
GPIO44
GPIO43
GPIO42
GPIO41
GPIO40
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO39
GPIO38
GPIO37
GPIO36
GPIO35
GPIO34
GPIO33
GPIO32
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-90. GPIO Port B Set (GPBSET) Register Field Descriptions
Bits
Field
Value
Description
31- 27
Reserved
Any writes to these bit(s) must always have a value of 0.
26-18
GPIO58 -GPIO50
Each GPIO port B pin (GPIO58-GPIO50) corresponds to one bit in this register as shown in
Figure 1-86.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to high. If the pin is configured as a GPIO
output then it will be driven high. If the pin is not configured as a GPIO output then the latch is
set but the pin is not driven.
17-13
Reserved
Any writes to these bit(s) must always have a value of 0.
12-0
GPIO44-GPIO32
Each GPIO port B pin (GPIO44-GPIO32) corresponds to one bit in this register as shown in
Figure 1-86.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to high. If the pin is configured as a GPIO
output then it will be driven high. If the pin is not configured as a GPIO output then the latch is
set but the pin is not driven.
Table 1-91. GPIO Port B Clear (GPBCLEAR) Register Field Descriptions
Bits
Field
Value
Description
31- 27
Reserved
Any writes to these bit(s) must always have a value of 0.
26-18
GPIO58-GPIO50
Each GPIO port B pin (GPIO58-GPIO50) corresponds to one bit in this register as shown in
Figure 1-86.
17-13
Reserved
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to low. If the pin is configured as a GPIO
output then it will be driven low. If the pin is not configured as a GPIO output then the latch is
cleared but the pin is not driven.
Any writes to these bit(s) must always have a value of 0.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
153
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-91. GPIO Port B Clear (GPBCLEAR) Register Field Descriptions (continued)
Bits
Field
12-0
Value
GPIO44-GPIO32
Description
Each GPIO port B pin (GPIO32-GPIO 44) corresponds to one bit in this register as shown in
Figure 1-86.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to low. If the pin is configured as a GPIO
output then it will be driven low. If the pin is not configured as a GPIO output then the latch is
cleared but the pin is not driven.
Table 1-92. GPIO Port B Toggle (GPBTOGGLE) Register Field Descriptions
Bits
Field
Value
Description
31- 27
Reserved
Any writes to these bit(s) must always have a value of 0.
26-18
GPIO58 -GPIO50
Each GPIO port B pin (GPIO58-GPIO50) corresponds to one bit in this register as shown in
Figure 1-86.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to toggle from its current state. If the pin is
configured as a GPIO output then it will be driven in the opposite direction of its current state. If
the pin is not configured as a GPIO output then the latch is cleared but the pin is not driven.
17-13
Reserved
Any writes to these bit(s) must always have a value of 0.
12-0
GPIO44-GPIO32
Each GPIO port B pin (GPIO44-GPIO32) corresponds to one bit in this register as shown in
Figure 1-86.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to toggle from its current state. If the pin is
configured as a GPIO output then it will be driven in the opposite direction of its current state. If
the pin is not configured as a GPIO output then the latch is cleared but the pin is not driven.
Figure 1-87. Analog I/O Toggle (AIOSET, AIOCLEAR, AIOTOGGLE) Register
31
16
Reserved
R-0
15
14
13
12
11
10
Reserved
AIO14
Reserved
AIO12
Reserved
AIO10
9
Reserved
8
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
7
6
5
4
3
2
Reserved
AIO6
Reserved
AIO4
Reserved
AIO2
1
Reserved
0
R-0
R/W-x
R-0
R/W-x
R-0
R/W-x
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-93. Analog I/O Set (AIOSET) Register Field Descriptions
Bits
Field
31-15
Reserved
14-0
AIOn
154
Value
Description
Any writes to these bit(s) must always have a value of 0.
Each AIO pin corresponds to one bit in this register.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to high. If the pin is configured as a AIO output
then it will be driven high. If the pin is not configured as a AIO output then the latch is set but the
pin is not driven.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
www.ti.com
Table 1-94. Analog I/O Clear (AIOCLEAR) Register Field Descriptions
Bits
Field
Value
Description
31-15
Reserved
Any writes to these bit(s) must always have a value of 0.
14-0
AIOn
Each AIO pin corresponds to one bit in this register.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to low. If the pin is configured as a AIO output
then it will be driven low. If the pin is not configured as a AIO output then the latch is cleared but
the pin is not driven.
Table 1-95. Analog I/O Toggle (AIOTOGGLE) Register Field Descriptions
Bits
Field
31-15
Reserved
14-0
AIOn
Value
Description
Any writes to these bit(s) must always have a value of 0.
Each AIO pin corresponds to one bit in this register.
0
Writes of 0 are ignored. This register always reads back a 0.
1
Writing a 1 forces the respective output data latch to toggle from its current state. If the pin is
configured as a AIO output then it will be driven in the opposite direction of its current state. If
the pin is not configured as a AIO output then the latch is cleared but the pin is not driven.
Figure 1-88. GPIO XINTn Interrupt Select (GPIOXINTnSEL) Registers
15
5
4
0
Reserved
GPIOXINTnSEL
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-96. GPIO XINTn Interrupt Select (GPIOXINTnSEL) (1) Register Field Descriptions
Bits
Field
Value
(2)
(2)
15-5
Reserved
Any writes to these bit(s) must always have a value of 0.
4-0
GPIOXINTnSEL
Select the port A GPIO signal (GPIO0 - GPIO31) that will be used as the XINT1, XINT2, or
XINT3 interrupt source. In addition, you can configure the interrupt in the XINT1CR, XINT2CR,
or XINT3CR registers described in Section 1.7.6.
To use XINT2 as ADC start of conversion, enable it in the desired ADCSOCxCTL register.
The ADCSOC signal is always rising edge sensitive.
00000
Select the GPIO0 pin as the XINTn interrupt source (default)
00001
Select the GPIO1 pin as the XINTn interrupt source
...
(1)
Description
...
11110
Select the GPIO30 pin as the XINTn interrupt source
11111
Select the GPIO31 pin as the XINTn interrupt source
n = 1 or 2
This register is EALLOW protected. See Section 1.6.2 for more information.
Table 1-97. XINT1/XINT2/XINT3 Interrupt Select and Configuration Registers
n
Interrupt
Interrupt Select Register
Configuration Register
1
XINT1
GPIOXINT1SEL
XINT1CR
2
XINT2
GPIOXINT2SEL
XINT2CR
3
XINT3
GPIOXINT3SEL
XINT3CR
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
155
General-Purpose Input/Output (GPIO)
www.ti.com
Figure 1-89. GPIO Low Power Mode Wakeup Select (GPIOLPMSEL) Register
31
30
29
28
27
26
25
24
GPIO31
GPIO30
GPIO29
GPIO28
GPIO27
GPIO26
GPIO25
GPIO24
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
23
22
21
20
19
18
17
16
GPIO23
GPIO22
GPIO21
GPIO20
GPIO19
GPIO18
GPIO17
GPIO16
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
15
14
13
12
11
10
9
8
GPIO15
GPIO14
GPIO13
GPIO12
GPIO11
GPIO10
GPIO9
GPIO8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
GPIO7
GPIO6
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-98. GPIO Low Power Mode Wakeup Select (GPIOLPMSEL) Register Field Descriptions
Bits
31-0
(1)
156
Field
Value
GPIO31 - GPIO0
Description
(1)
Low Power Mode Wakeup Selection. Each bit in this register corresponds to one GPIO port
A pin (GPIO0 - GPIO31) as shown in Figure 10-3.
0
If the bit is cleared, the signal on the corresponding pin will have no effect on the HALT and
STANDBY low power modes.
1
If the respective bit is set to 1, the signal on the corresponding pin is able to wake the
device from both HALT and STANDBY low power modes.
This register is EALLOW protected. See Section 1.6.2 for more information.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Frames
www.ti.com
1.6
Peripheral Frames
This chapter describes the peripheral frames and device emulation registers.
1.6.1 Peripheral Frame Registers
This device contains four peripheral register spaces. The spaces are categorized as follows:
• Peripheral Frame 0: These are peripherals that are mapped directly to the CPU memory bus. See
Table 1-99.
• Peripheral Frame 1: These are peripherals that are mapped to the 32-bit peripheral bus. See Table 1100.
• Peripheral Frame 2: These are peripherals that are mapped to the 16-bit peripheral bus. See Table 1101.
• Peripheral Frame 3: These are peripherals that are mapped to the 16-bit peripheral bus. See Table 1102.
Table 1-99. Peripheral Frame 0 Registers (1)
ADDRESS RANGE
SIZE (×16)
EALLOW PROTECTED (2)
Device Emulation Registers
0x00 0880 – 0x00 0984
261
Yes
System Power Control Registers
0x00 0985 – 0x00 0987
3
Yes
FLASH Registers (3)
0x00 0A80 – 0x00 0ADF
96
Yes
Code Security Module Registers
0x00 0AE0 – 0x00 0AEF
16
Yes
ADC registers
(0 wait read only)
0x00 0B00 – 0x00 0B0F
16
No
CPU–TIMER0/1/2 Registers
0x00 0C00 – 0x00 0C3F
64
No
PIE Registers
0x00 0CE0 – 0x00 0CFF
32
No
PIE Vector Table
0x00 0D00 – 0x00 0DFF
256
No
DMA Registers
0x00 1000 – 0x00 11FF
512
Yes
CLA Registers
0x00 1400 – 0x00 147F
128
Yes
CLA to CPU Message RAM (CPU writes
ignored)
0x00 1480 – 0x00 14FF
128
NA
CPU to CLA Message RAM (CLA writes
ignored)
0x00 1500 – 0x00 157F
128
NA
NAME
(1)
(2)
(3)
Registers in Frame 0 support 16-bit and 32-bit accesses.
If registers are EALLOW protected, then writes cannot be performed until the EALLOW instruction is executed. The EDIS
instruction disables writes to prevent stray code or pointers from corrupting register contents.
The Flash Registers are also protected by the Code Security Module (CSM).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 157
Peripheral Frames
www.ti.com
Table 1-100. Peripheral Frame 1 Registers
NAME
(1)
EALLOW PROTECTED (2)
ADDRESS RANGE
SIZE (×16)
eCAN-A registers
0x00 6000 – 0x00 61FF
512
(3)
Comparator 1 registers
0x00 6400 – 0x00 641F
32
(3)
Comparator 2 registers
0x00 6420 – 0x00 643F
32
(3)
Comparator 3 registers
0x00 6440 – 0x00 645F
32
(3)
ePWM1 + HRPWM1 registers
0x00 6800 – 0x00 683F
64
(3)
ePWM2 + HRPWM2 registers
0x00 6840 – 0x00 687F
64
(3)
ePWM3 + HRPWM3 registers
0x00 6880 – 0x00 68BF
64
(3)
ePWM4 + HRPWM4 registers
0x00 68C0 – 0x00 68FF
64
(3)
ePWM5 + HRPWM5 registers
0x00 6900 – 0x00 693F
64
(3)
ePWM6 + HRPWM6 registers
0x00 6940 – 0x00 697F
64
(3)
ePWM7 + HRPWM7 registers
0x00 6980 – 0x00 69BF
64
(3)
ePWM8 + HRPWM8 registers
0x00 69C0 – 0x00 69FF
64
(3)
eCAP1 registers
0x00 6A00 – 0x00 6A1F
32
No
eCAP2 registers
0x00 6A20 – 0x00 6A3F
32
No
eCAP3 registers
0x00 6A40 – 0x00 6A57
32
No
HRCAP1 registers
0x00 6AC0 – 0x00 6ADF
32
(3)
HRCAP2 registers
0x00 6AE0 – 0x00 6AFF
32
(3)
eQEP1 registers
0x00 6B00 – 0x00 6B3F
64
(3)
eQEP2 registers
0x00 6B40 – 0x00 6B7F
64
(3)
HRCAP3 registers
0x00 6C80 – 0x00 6C9F
32
(3)
HRCAP4 registers
0x00 6CA0 – 0x00 6CBF
32
(3)
GPIO registers
0x00 6F80 – 0x00 6FFF
128
(3)
(1)
(2)
(3)
Back-to-back write operations to Peripheral Frame 1 registers will incur a 1-cycle stall (1 cycle delay).
Peripheral Frame 1 allows 16-bit and 32-bit accesses. All 32-bit accesses are aligned to even address boundaries.
Some registers are EALLOW protected. See the module reference guide for more information.
Table 1-101. Peripheral Frame 2 Registers
NAME
ADDRESS RANGE
SIZE (×16)
EALLOW PROTECTED
System Control Registers
0x00 7010 – 0x00 702F
32
Yes
SPI-A Registers
0x00 7040 – 0x00 704F
16
No
SCI-A Registers
0x00 7050 – 0x00 705F
16
No
NMI Watchdog Interrupt Registers
0x00 7060 – 0x00 706F
16
Yes
External Interrupt Registers
0x00 7070 – 0x00 707F
16
Yes
ADC Registers
0x00 7100 – 0x00 717F
128
SPI-B Registers
0x00 7740 – 0x00 774F
16
No
SCI-B Registers
0x00 7750 – 0x00 775F
16
No
I2C-A Registers
0x00 7900 – 0x00 793F
64
(1)
(1)
(1)
Some registers are EALLOW protected. See the module reference guide for more information.
Table 1-102. Peripheral Frame 3 Registers
NAME
USB0 Registers
McBSP-A Registers
158
System Control and Interrupts
ADDRESS RANGE
SIZE (×16)
EALLOW PROTECTED
0x00 4000 – 0x4FFF
4096
No
0x00 5000 – 0x00 503F
64
No
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Frames
www.ti.com
1.6.2 EALLOW-Protected Registers
Several control registers are protected from spurious CPU writes by the EALLOW protection mechanism.
The EALLOW bit in status register 1 (ST1) indicates if the state of protection as shown in Table 1-103.
Table 1-103. Access to EALLOW-Protected Registers
(1)
EALLOW Bit
CPU Writes
CPU Reads
JTAG Writes
JTAG Reads
0
Ignored
Allowed
Allowed (1)
Allowed
1
Allowed
Allowed
Allowed
Allowed
The EALLOW bit is overridden via the JTAG port, allowing full access of protected registers during debug from the Code
Composer Studio interface.
At reset the EALLOW bit is cleared enabling EALLOW protection. While protected, all writes to protected
registers by the CPU are ignored and only CPU reads, JTAG reads, and JTAG writes are allowed. If this
bit is set, by executing the EALLOW instruction, then the CPU is allowed to write freely to protected
registers. After modifying registers, they can once again be protected by executing the EDI instruction to
clear the EALLOW bit.
The following registers are EALLOW-protected:
• Device Emulation Registers
• Flash Registers
• CSM Registers
• PIE Vector Table
• System Control Registers
• GPIO MUX Registers
Table 1-104. EALLOW-Protected Device Emulation Registers
Name
DEVICECNF
Address
Size
(x16)
0x0880
0x0881
2
Description
Device Configuration Register
Table 1-105. EALLOW-Protected Flash/OTP Configuration Registers
Name
Address
Size
(x16)
FOPT
0x0A80
1
Flash Option Register
FPWR
0x0A82
1
Flash Power Modes Register
FSTATUS
0x0A83
1
Status Register
FSTDBYWAIT
0x0A84
1
Flash Sleep To Standby Wait State Register
FACTIVEWAIT
0x0A85
1
Flash Standby To Active Wait State Register
FBANKWAIT
0x0A86
1
Flash Read Access Wait State Register
FOTPWAIT
0x0A87
1
OTP Read Access Wait State Register
Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 159
Peripheral Frames
www.ti.com
Table 1-106. EALLOW-Protected Code Security Module (CSM) Registers
Register Name
Address
Size
(x16)
KEY0
0x0AE0
1
Low word of the 128-bit KEY register
KEY1
0x0AE1
1
Second word of the 128-bit KEY register
KEY2
0x0AE2
1
Third word of the 128-bit KEY register
KEY3
0x0AE3
1
Fourth word of the 128-bit KEY register
KEY4
0x0AE4
1
Fifth word of the 128-bit KEY register
KEY5
0x0AE5
1
Sixth word of the 128-bit KEY register
KEY6
0x0AE6
1
Seventh word of the 128-bit KEY register
KEY7
0x0AE7
1
High word of the 128-bit KEY register
CSMSCR
0x0AEF
1
CSM status and control register
Register Description
Table 1-107. EALLOW-Protected PLL, Clocking, Watchdog, and Low-Power Mode Registers
ADDRESS
SIZE (x16)
BORCFG
NAME
0x00 0985
1
BOR Configuration Register
XCLK
0x00 7010
1
XCLKOUT Control
PLLSTS
0x00 7011
1
PLL Status Register
CLKCTL
0x00 7012
1
Clock Control Register
PLLLOCKPRD
0x00 7013
1
PLL Lock Period
INTOSC1TRIM
0x00 7014
1
Internal Oscillator 1 Trim Register
INTOSC2TRIM
0x00 7016
1
Internal Oscillator 2 Trim Register
PCLKCR2
0x00 7019
1
Peripheral Clock Control Register 2
LOSPCP
0x00 701B
1
Low-Speed Peripheral Clock Prescaler Register
PCLKCR0
0x00 701C
1
Peripheral Clock Control Register 0
PCLKCR1
0x00 701D
1
Peripheral Clock Control Register 1
LPMCR0
0x00 701E
1
Low Power Mode Control Register 0
PCLKCR3
0x00 7020
1
Peripheral Clock Control Register 3
PLLCR
0x00 7021
1
PLL Control Register
SCSR
0x00 7022
1
System Control and Status Register
WDCNTR
0x00 7023
1
Watchdog Counter Register
WDKEY
0x00 7025
1
Watchdog Reset Key Register
WDCR
0x00 7029
1
Watchdog Control Register
PLL2CTL
0x00 7030
1
PLL2 Configuration Register
PLL2MULT
0x00 7032
1
PLL2 Multiplier Register
PLL2STS
0x00 7034
1
PLL2 Lock Status Register
SYSCLK2CNTR
0x00 7036
1
SYSCLK2 Clock Counter Register
EPWMCFG
0x00 703A
1
ePWM DMA/CLA Configuration Register
160 System Control and Interrupts
DESCRIPTION
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Frames
www.ti.com
Table 1-108. EALLOW-Protected GPIO Registers
Name
(1)
Address
Size (x16)
GPACTRL
0x6F80
2
GPIO A Control Register
GPAQSEL1
0x6F82
2
GPIO A Qualifier Select 1 Register
GPAQSEL2
0x6F84
2
GPIO A Qualifier Select 2 Register
GPAMUX1
0x6F86
2
GPIO A MUX 1 Register
GPAMUX2
0x6F88
2
GPIO A MUX 2 Register
GPADIR
0x6F8A
2
GPIO A Direction Register
GPAPUD
0x6F8C
2
GPIO A Pull Up Disable Register
GPBCTRL
0x6F90
2
GPIO B Control Register
GPBQSEL1
0x6F92
2
GPIO B Qualifier Select 1 Register
GPBQSEL2
0x6F94
2
GPIO B Qualifier Select 2 Register
GPBMUX1
0x6F96
2
GPIO B MUX 1 Register
GPBMUX2
0x6F98
2
GPIO B MUX 2 Register
GPBDIR
0x6F9A
2
GPIO B Direction Register
GPBPUD
0x6F9C
2
GPIO B Pull Up Disable Register
AIOMUX1
0x6FB6
2
Analog, I/O MUX 1 register
AIODIR
0x6FBA
2
Analog, IO Direction Register
GPIOXINT1SEL
0x6FE0
1
XINT1 Source Select Register (GPIO0-GPIO31)
GPIOXINT2SEL
0x6FE1
1
XINT2 Source Select Register (GPIO0-GPIO31)
GPIOXINT3SEL
0x6FE2
1
XINT3 Source Select Register (GPIO0 - GPIO31)
GPIOLPMSEL
0x6FE8
1
LPM wakeup Source Select Register (GPIO0-GPIO31)
(1)
Register Description
The registers in this table are EALLOW protected. See Section 1.6.2 for more information.
Table 1-110 shows addresses for the following ePWM EALLOW-protected registers:
• Trip Zone Select Register (TZSEL)
• Trip Zone Control Register (TZCTL)
• Trip Zone Enable Interrupt Register (TZEINT)
• Trip Zone Clear Register (TZCLR)
• Trip Zone Force Register (TZFRC)
• HRPWM Configuration Register (HRCNFG)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 161
Peripheral Frames
www.ti.com
Table 1-109. EALLOW-Protected PIE Vector Table
Name
Address
Not used
0x0D00
Size (x16) Description
2
Reserved
0x0D02
0x0D04
0x0D06
0x0D08
0x0D0A
0x0D0C
0x0D0E
0x0D10
0x0D12
0x0D14
0x0D16
0x0D18
INT13
0x0D1A
2
CPU-Timer 1
INT14
0x0D1C
2
CPU-Timer 2
DATALOG
0x0D1E
2
CPU Data Logging Interrupt
RTOSINT
0x0D20
2
CPU Real-Time OS Interrupt
EMUINT
0x0D22
2
CPU Emulation Interrupt
NMI
0x0D24
2
External Non-Maskable Interrupt
ILLEGAL
0x0D26
2
Illegal Operation
USER1
0x0D28
2
User-Defined Trap
.
.
.
.
USER12
0x0D3E
2
User-Defined Trap
INT1.1
.
INT1.8
0x0D40
.
0x0D4E
2
.
2
Group 1 Interrupt Vectors
.
.
.
.
.
.
Group 2 Interrupt Vectors
to Group 11 Interrupt Vectors
0x0DF0
.
0x0DFE
2
.
2
Group 12 Interrupt Vectors
.
.
.
INT12.1
.
INT12.8
Table 1-110. EALLOW-Protected ePWM1 - ePWM 7 Registers
162
TZSEL
TZCTL
TZEINT
TZCLR
TZFRC
HRCNFG
Size x16
ePWM1
0x6812
0x6814
0x6815
0x6817
0x6818
0x6820
1
ePWM2
0x6852
0x6854
0x6855
0x6857
0x6858
0x6860
1
ePWM3
0x6892
0x6894
0x6895
0x6897
0x6898
0x68A0
1
ePWM4
0x68D2
0x68D4
0x68D5
0x68D7
0x68D8
0x68E0
1
ePWM5
0x6912
0x6914
0x6915
0x6917
0x6918
0x6920
1
ePWM6
0x6952
0x6954
0x6955
0x6957
0x6958
0x6960
1
ePWM7
0x6992
0x6994
0x6995
0x6997
0x6998
0x69A0
1
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Frames
www.ti.com
1.6.3 Device Emulation Registers
These registers are used to control the protection mode of the C28x CPU and to monitor some critical
device signals. The registers are defined in Table 1-111.
Table 1-111. Device Emulation Registers
Name
Address
Size (x16)
0x0880
0x0881
2
Device Configuration Register
0x3D 7E80
1
Part ID Register
CLASSID
0x0882
1
Class ID Register
REVID
0x0883
1
Revision ID Register
DEVICECNF
PARTID
Description
Figure 1-90. Device Configuration (DEVICECNF) Register
31
30
Rsvd
SYSCLK2DIV2DIS
29
Reserved
28
TRST
27
26
Reserved
20
ENPROT
Reserved
R-0
R/W-0
R-0
R-0
R-0
R/W-1
R-111
15
19
18
16
5
4
3
Reserved
XRS
Res
VMAPS
2
Reserved
0
R-0
R-P
R-0
R-1
R-011
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-112. DEVICECNF Register Field Descriptions
Bits
Field
31
Reserved
30
SYSCLK2DIV2DIS
29-28
27
Description
Any writes to these bit(s) must always have a value of 0.
SYSCLK2 Clock Divide by 2 Disable Bit
0
PLL2 Output/2
1
PLL2 Output/1
Reserved
TRST
26:20
Reserved
19
ENPROT
18-6
Value
Read status of TRST signal. Reading this bit gives the current status of the TRST signal.
0
No emulator is connected.
1
An emulator is connected.
Any writes to these bit(s) must always have a value of 0.
Enable Write-Read Protection Mode Bit.
0
Disables write-read protection mode
1
Enables write-read protection for the address range 0x4000-0x7FFF
Reserved
Any writes to these bit(s) must always have a value of 0.
5
XRS
Reset Input Signal Status. This is connected directly to the XRS input pin.
4
Reserved
Reserved
3
VMAPS
VMAP Configure Status. This indicates the status of VMAP.
Reserved
Any writes to these bit(s) must always have a value of 0.
2-0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
163
Peripheral Frames
www.ti.com
Figure 1-91. Part ID Register
15
8
7
0
PARTTYPE
PARTID
R
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
R
Table 1-113. PARTID Register Field Descriptions
Value (1)
Bit
Field
15:8
PARTTYPE
Description
Part type ID register. Specifies the type of device such as
flash-based.
0x00
Flash-based device
All other values are reserved.
7:0
(1)
(2)
164
PARTID
(2)
0x3D 7E80
Part ID Register. These 8 bits specify the feature set of
this device:
TMS320F28069PZP/PZ
0x9E
TMS320F28069UPZP/ PZ
0x9F
TMS320F28069PFP/PN
0x9C
TMS320F28069UPFP/PN
0x9D
TMS320F28068PZP/PZ
0x8E
TMS320F28068UPZP/PZ
0x8F
TMS320F28068PFP/PN
0x8C
TMS320F28068UPFP/PN
0x8D
TMS320F28067PZP/PZ
0x8A
TMS320F28067UPZP/PZ
0x8B
TMS320F28067PFP/PN
0x88
TMS320F28067UPFP/PN
0x89
TMS320F28066PZP/PZ
0x86
TMS320F28066UPZP/PZ
0x87
TMS320F28066PFP/PN
0x84
TMS320F28066UPFP/PN
0x85
TMS320F28065PZP/PZ
0x7E
TMS320F28065UPZP/PZ
0x7F
TMS320F28065PFP/PN
0x7C
TMS320F28065UPFP/PN
0x7D
TMS320F28064PZP/PZ
0x6E
TMS320F28064UPZP/PZ
0x6F
TMS320F28064PFP/PN
0x6C
TMS320F28064UPFP/PN
0x6D
TMS320F28063PZP/PZ
0x6A
TMS320F28063UPZP/PZ
0x6B
TMS320F28063PFP/PN
0x68
TMS320F28063UPFP/PN
0x69
TMS320F28062PZP/PZ
0x66
TMS320F28062UPZP/PZ
0x67
TMS320F28062PFP/PN
0x65
TMS320F28062UPFP/PN
0x64
The reset value depends on the device as indicated in the register description.
For TMS320F28069U devices, the PARTID/CLASSID numbers are also used for TMX devices. In the case of TMX320F28069UPFPA
and TMX320F28069UPZPA devices, the temperature rating is "A" instead of "T".
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Frames
www.ti.com
Table 1-114. CLASSID Register Field Descriptions
(1)
Bit
Field
Value (1)
7:0
CLASSID
0x0882
Description
Class ID register. These 8 bits specify the feature set of
this device:
TMS320F28069
0x009F
TMS320F28068
0x008F
TMS320F28067
0x008F
TMS320F28066
0x008F
TMS320F28065
0x007F
TMS320F28064
0x006F
TMS320F28063
0x006F
TMS320F28062
0x006F
The reset value depends on the device as indicated in the register description.
Figure 1-92. REVID Register
15
0
REVID
R- (1)
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
(1)
The reset value depends on the silicon revision as described in the register field description.
Table 1-115. REVID Register Field Descriptions
(1)
Bits
Field
15-0
REVID
Value
Description
(1)
These 16 bits specify the silicon revision number for the particular part. This number always
starts with 0x0000. It is typically incremented when major changes are made to the silicon. The
silicon revision information is also part of the package symbolization. It may be used to discern
the revision information in cases where the REVID is not incremented from one silicon revision
to another.
0x0000
Silicon Revision 0 - TMX
0x0001
Silicon Revision A - TMS
The reset value depends on the silicon revision as described in the register field description.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
165
Peripheral Frames
www.ti.com
1.6.4 Write-Followed-by-Read Protection
The memory address range for which CPU write followed by read operations are protected is 0x4000 0x7FFF (operations occur in sequence rather then in their natural pipeline order). This is necessary
protection for certain peripheral operations.
Example: The following lines of code perform a write to register 1 (REG1) location and then the next
instruction performs a read from Register 2 (REG2) location. On the processor memory bus, with block
protection disabled, the read operation is issued before the write as shown.
MOV @REG1,AL
TBIT @REG2,#BIT_X
---------+
---------|-------> Read
+-------> Write
If block protection is enabled, then the read is stalled until the write occurs as shown:
MOV
TBIT
166
@REG1,AL
@REG2,#BIT_X
System Control and Interrupts
---------+
---------|-----+
+-----|---> Write
+---> Read
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7
Peripheral Interrupt Expansion (PIE)
The peripheral interrupt expansion (PIE) block multiplexes numerous interrupt sources into a smaller set of
interrupt inputs. The PIE block can support 96 individual interrupts that are grouped into blocks of eight.
Each group is fed into one of 12 core interrupt lines (INT1 to INT12). Each of the 96 interrupts is
supported by its own vector stored in a dedicated RAM block that you can modify. The CPU, upon
servicing the interrupt, automatically fetches the appropriate interrupt vector. It takes nine CPU clock
cycles to fetch the vector and save critical CPU registers. Therefore, the CPU can respond quickly to
interrupt events. Prioritization of interrupts is controlled in hardware and software. Each individual interrupt
can be enabled/disabled within the PIE block.
1.7.1 Overview of the PIE Controller
The 28x CPU supports one nonmaskable interrupt (NMI) and 16 maskable prioritized interrupt requests
(INT1-INT14, RTOSINT, and DLOGINT) at the CPU level. The 28x devices have many peripherals and
each peripheral is capable of generating one or more interrupts in response to many events at the
peripheral level. Because the CPU does not have sufficient capacity to handle all peripheral interrupt
requests at the CPU level, a centralized peripheral interrupt expansion (PIE) controller is required to
arbitrate the interrupt requests from various sources such as peripherals and other external pins.
The PIE vector table is used to store the address (vector) of each interrupt service routine (ISR) within the
system. There is one vector per interrupt source including all MUXed and nonMUXed interrupts. You
populate the vector table during device initialization and you can update it during operation.
1.7.1.1
Interrupt Operation Sequence
Figure 1-93 shows an overview of the interrupt operation sequence for all multiplexed PIE interrupts.
Interrupt sources that are not multiplexed are fed directly to the CPU.
Figure 1-93. Overview: Multiplexing of Interrupts Using the PIE Block
IFR(12:1)
INTM
IER(12:1)
INT1
INT2
1
CPU
MUX
0
INT11
INT12
(Flag)
INTx
INTx.1
INTx.2
INTx.3
INTx.4
INTx.5
INTx.6
INTx.7
INTx.8
MUX
PIEACKx
(Enable/Flag)
•
Global
Enable
(Enable)
(Enable)
(Flag)
PIEIERx(8:1)
PIEIFRx(8:1)
From
Peripherals or
External
Interrupts
Peripheral Level
An interrupt-generating event occurs in a peripheral. The interrupt flag (IF) bit corresponding to that
event is set in a register for that particular peripheral.
If the corresponding interrupt enable (IE) bit is set, the peripheral generates an interrupt request to the
PIE controller. If the interrupt is not enabled at the peripheral level, then the IF remains set until
cleared by software. If the interrupt is enabled at a later time, and the interrupt flag is still set, the
interrupt request is asserted to the PIE.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
167
Peripheral Interrupt Expansion (PIE)
•
•
168
www.ti.com
Interrupt flags within the peripheral registers must be manually cleared. See the peripheral reference
guide for a specific peripheral for more information.
PIE Level
The PIE block multiplexes eight peripheral and external pin interrupts into one CPU interrupt. These
interrupts are divided into 12 groups: PIE group 1 - PIE group 12. The interrupts within a group are
multiplexed into one CPU interrupt. For example, PIE group 1 is multiplexed into CPU interrupt 1
(INT1) while PIE group 12 is multiplexed into CPU interrupt 12 (INT12). Interrupt sources connected to
the remaining CPU interrupts are not multiplexed. For the nonmultiplexed interrupts, the PIE passes
the request directly to the CPU.
For multiplexed interrupt sources, each interrupt group in the PIE block has an associated flag register
(PIEIFRx) and enable (PIEIERx) register (x = PIE group 1 - PIE group 12). Each bit, referred to as y,
corresponds to one of the 8 MUXed interrupts within the group. Thus PIEIFRx.y and PIEIERx.y
correspond to interrupt y (y = 1-8) in PIE group x (x = 1-12). In addition, there is one acknowledge bit
(PIEACK) for every PIE interrupt group referred to as PIEACKx (x = 1-12). Figure 1-94 illustrates the
behavior of the PIE hardware under various PIEIFR and PIEIER register conditions.
Once the request is made to the PIE controller, the corresponding PIE interrupt flag (PIEIFRx.y) bit is
set. If the PIE interrupt enable (PIEIERx.y) bit is also set for the given interrupt then the PIE checks the
corresponding PIEACKx bit to determine if the CPU is ready for an interrupt from that group. If the
PIEACKx bit is clear for that group, then the PIE sends the interrupt request to the CPU. If PIEACKx is
set, then the PIE waits until it is cleared to send the request for INTx. See Section 6.3 for details.
CPU Level
Once the request is sent to the CPU, the CPU level interrupt flag (IFR) bit corresponding to INTx is set.
After a flag has been latched in the IFR, the corresponding interrupt is not serviced until it is
appropriately enabled in the CPU interrupt enable (IER) register or the debug interrupt enable register
(DBGIER) and the global interrupt mask (INTM) bit.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Figure 1-94. Typical PIE/CPU Interrupt Response - INTx.y
Start
Stage E
IFRx bit set 1
Stage A
PIEIFRx.y=1
?
Wait for any
PIEIFRx.y=1
No
Stage F
IERx bit=1
?
Yes
Yes
Stage B
PIEIERx.y=1
?
Wait for
PIEIERx.y=1
No
Stage C
PIEACKx=0
?
No
Yes
No
Stage H
CPU responds
IFRx=0, IERx=0
INTM=1, EALLOW=0
Context Save performed
Stage I
Vector fetched from the PIE
PIEIFRx.y is cleared
CPU branches to ISR
Hardware sets
PIEACKx=1
Interrupts
to CPU
Stage G
INTM bit=0
?
Yes
Yes
Wait for
S/W to clear
PIEACKx bit=0
No
Stage J
Interrupt service routine responds
Write 1 to PIEACKx bit to clear
to enable other interrupts in
PIEIFRx group
Re-enable interrupts, INTM=0
Return
Stage D
Interrupt request
sent to 28x CPU
on INTx
End
PIE interrupt control
A
CPU interrupt control
For multiplexed interrupts, the PIE responds with the highest priority interrupt that is both flagged and enabled. If
there is no interrupt both flagged and enabled, then the highest priority interrupt within the group (INTx.1 where x is
the PIE group) is used. See Section Section 1.7.3.3 for details.
As shown in Table 1-116, the requirements for enabling the maskable interrupt at the CPU level depends
on the interrupt handling process being used. In the standard process, which happens most of the time,
the DBGIER register is not used. When the 28x is in real-time emulation mode and the CPU is halted, a
different process is used. In this special case, the DBGIER is used and the INTM bit is ignored. If the DSP
is in real-time mode and the CPU is running, the standard interrupt-handling process applies.
Table 1-116. Enabling Interrupt
Interrupt Handling Process
Interrupt Enabled If…
Standard
INTM = 0 and bit in IER is 1
DSP in real-time mode and halted
Bit in IER is 1 and DBGIER is 1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
169
Peripheral Interrupt Expansion (PIE)
www.ti.com
The CPU then prepares to service the interrupt. This preparation process is described in detail in
TMS320x28x DSP CPU and Instruction Set Reference Guide (literature number SPRU430). In
preparation, the corresponding CPU IFR and IER bits are cleared, EALLOW and LOOP are cleared, INTM
and DBGM are set, the pipeline is flushed and the return address is stored, and the automatic context
save is performed. The vector of the ISR is then fetched from the PIE module. If the interrupt request
comes from a multiplexed interrupt, the PIE module uses the group PIEIERx and PIEIFRx registers to
decode which interrupt needs to be serviced. This decode process is described in detail in Section
Section 1.7.3.3.
The address for the interrupt service routine that is executed is fetched directly from the PIE interrupt
vector table. There is one 32-bit vector for each of the possible 96 interrupts within the PIE. Interrupt flags
within the PIE module (PIEIFRx.y) are automatically cleared when the interrupt vector is fetched. The PIE
acknowledge bit for a given interrupt group, however, must be cleared manually when ready to receive
more interrupts from the PIE group.
1.7.2 Vector Table Mapping
On 28xx devices, the interrupt vector table can be mapped to four distinct locations in memory. In practice
only the PIE vector table mapping is used.
This vector mapping is controlled by the following mode bits/signals:
VMAP:
M0M1MAP:
ENPIE:
VMAP is found in the Status Register 1 ST1 (bit 3). A device reset sets this bit to 1. The state of this bit can be
modified by writing to ST1 or by SETC/CLRC VMAP instructions. For normal operation leave this bit set.
M0M1MAP is found in the Status Register 1 ST1 (bit 11). A device reset sets this bit to 1. The state of this bit
can be modified by writing to ST1 or by SETC/CLRC M0M1MAP instructions. For normal 28xx device operation,
this bit should remain set. M0M1MAP = 0 is reserved for TI testing only.
ENPIE is found in the PIECTRL Register (bit 0). The default value of this bit, on reset, is set to 0 (PIE disabled).
The state of this bit can be modified after reset by writing to the PIECTRL register (address 0x0000 0CE0).
Using these bits and signals the possible vector table mappings are shown in Table 1-117.
Table 1-117. Interrupt Vector Table Mapping
(1)
Vector MAPS
Vectors Fetched From
Address Range
VMAP
M0M1MAP
ENPIE
M1 Vector (1)
M1 SARAM Block
0x000000 - 0x00003F
0
0
X
M0 Vector (1)
M0 SARAM Block
0x000000 - 0x00003F
0
1
X
BROM Vector
Boot ROM Block
0x3FFFC0 - 0x3FFFFF
1
X
0
PIE Vector
PIE Block
0x000D00 - 0x000DFF
1
X
1
Vector map M0 and M1 Vector is a reserved mode only. On the 28x devices these are used as SARAM.
The M1 and M0 vector table mapping are reserved for TI testing only. When using other vector mappings,
the M0 and M1 memory blocks are treated as SARAM blocks and can be used freely without any
restrictions.
After a device reset operation, the vector table is mapped as shown in Table 1-118.
Table 1-118. Vector Table Mapping After Reset Operation
ENPIE
Vector MAPS
BROM Vector
(1)
(2)
(2)
Reset Fetched From
Address Range
Boot ROM Block
0x3FFFC0 - 0x3FFFFF
VMAP
(1)
1
M0M1MAP
(1)
1
(1)
0
On the 28x devices, the VMAP and M0M1MAP modes are set to 1 on reset. The ENPIE mode is forced to 0 on reset.
The reset vector is always fetched from the boot ROM.
After the reset and boot is complete, the PIE vector table should be initialized by the user's code. Then the
application enables the PIE vector table. From that point on the interrupt vectors are fetched from the PIE
vector table. Note: when a reset occurs, the reset vector is always fetched from the vector table as shown
in Table 1-118. After a reset the PIE vector table is always disabled.
Figure 1-95 illustrates the process by which the vector table mapping is selected.
170
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Figure 1-95. Reset Flow Diagram
Used for test purposes only
Recommended flow for 280x applications
Reset
(power-on reset or warm reset)
PIE disabled (ENPIE=0)
VMAP = 1
OBJMODE = 0
AMODE = 0
MOM1MAP = 1
User code initializes:
OBJMODE and AMODE state1
CPU IER register and INTM
VMAP state
Yes
Reset vector fetched from
boot ROM
No
Using
peripheral
interrupts
?
Branch into bootloader
routines, depending on the
state of GPIO pins
No
VMAP = 1
?
Vectors
(except for reset)
are fetched
from M0 vector
map‡
Yes
User code initializes:
OBJMODE and AMODE state†
PIE enable (ENPIE = 1)
PIE vector table
PIEIERx registers
CPU IER register and INTM
Vectors
(except for reset) are
fetched from BROM
vector map‡
Vectors (except for reset)
are fetched from PIE vector map‡
A
The compatibility operating mode of the 28x CPU is determined by a combination of the OBJMODE and AMODE bits
in Status Register 1 (ST1):
Operating Mode
C28x Mode
24x/240xA Source-Compatible
C27x Object-Compatible
B
OBJMODE
1
1
0
AMODE
0
1
0
(Default at reset)
The reset vector is always fetched from the boot ROM.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
171
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.3 Interrupt Sources
Figure 1-96 shows how the various interrupt sources are multiplexed within the devices. This multiplexing
(MUX) scheme may not be exactly the same on all 28x devices. See the data manual of your particular
device for details.
Figure 1-96. PIE Interrupt Sources and External Interrupts XINT1/XINT2/XINT3
Peripherals
(SPI, SCI, I2C, eCAN, eCAP, eQEP,
HRCAP, CLA)
Peripherals
(USB, McBSP, ePWM, ADC)
DMA clear
C28x
Core
WDINT
PIE
INT1
to
INT12
Up to 96 Interrupts
WAKEINT
Sync
LPMINT
Watchdog
Low-Power Modes
SYSCLKOUT
DMA
XINT1
XINT1
Interrupt Control
XINT1CR[15:0]
XINT1CTR[15:0]
DMA
GPIOXINT1SEL[4:0]
XINT2SOC
ADC
XINT2
M
U
X
XINT2
Interrupt Control
XINT2CR[15:0]
XINT2CTR[15:0]
M
U
X
GPIOXINT2SEL[4:0]
GPIO0.int
DMA
XINT3
XINT3
Interrupt Control
XINT3CR[15:0]
M
U
X
GPIO
MUX
GPIO31.int
XINT3CTR[15:0]
GPIOXINT3SEL[4:0]
DMA
INT13
INT14
TINT0
CPU TIMER 0
TINT1
CPU TIMER 1
TINT2
CPU TIMER 2
TOUT1
Flash Wrapper
CPUTMR2CLK
CLOCKFAIL
NMI
172
NMI Interrupt With Watchdog Function
(See the NMI Watchdog section.)
System Control and Interrupts
NMIRS
System Control
(See the System Control section.)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.3.1
Procedure for Handling Multiplexed Interrupts
The PIE module multiplexes eight peripheral and external pin interrupts into one CPU interrupt. These
interrupts are divided into 12 groups: PIE group 1 - PIE group 12. Each group has an associated enable
PIEIER and flag PIEIFR register. These registers are used to control the flow of interrupts to the CPU. The
PIE module also uses the PIEIER and PIEIFR registers to decode to which interrupt service routine the
CPU should branch.
There are three main rules that should be followed when clearing bits within the PIEIFR and the PIEIER
registers:
Rule 1: Never clear a PIEIFR bit by software
An incoming interrupt may be lost while a write or a read-modify-write operation to the PIEIFR register
takes place. To clear a PIEIFR bit, the pending interrupt must be serviced. If you want to clear the PIEIFR
bit without executing the normal service routine, then use the following procedure:
1. Set the EALLOW bit to allow modification to the PIE vector table.
2. Modify the PIE vector table so that the vector for the peripheral's service routine points to a temporary
ISR. This temporary ISR will only perform a return from interrupt (IRET) operation.
3. Enable the interrupt so that the interrupt will be serviced by the temporary ISR.
4. After the temporary interrupt routine is serviced, the PIEIFR bit will be clear
5. Modify the PIE vector table to re-map the peripheral's service routine to the proper service routine.
6. Clear the EALLOW bit.
Rule 2: Procedure for software-prioritizing interrupts
Use the method found in the C2833x C/C++ Header Files and Peripheral Examples in C (literature
number SPRC530).
(a) Use the CPU IER register as a global priority and the individual PIEIER registers for group priorities. In
this case the PIEIER register is only modified within an interrupt. In addition, only the PIEIER for the
same group as the interrupt being serviced is modified. This modification is done while the PIEACK bit
holds additional interrupts back from the CPU.
(b) Never disable a PIEIER bit for a group when servicing an interrupt from an unrelated group.
Rule 3: Disabling interrupts using PIEIER
If the PIEIER registers are used to enable and then later disable an interrupt then the procedure described
in Section 1.7.3.2 must be followed.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
173
Peripheral Interrupt Expansion (PIE)
1.7.3.2
www.ti.com
Procedures for Enabling And Disabling Multiplexed Peripheral Interrupts
The proper procedure for enabling or disabling an interrupt is by using the peripheral interrupt
enable/disable flags. The primary purpose of the PIEIER and CPU IER registers is for software
prioritization of interrupts within the same PIE interrupt group. The software package C280x C/C++
Header Files and Peripheral Examples in C (literature number SPRC191) includes an example that
illustrates this method of software prioritizing interrupts.
Should bits within the PIEIER registers need to be cleared outside of this context, one of the following two
procedures should be followed. The first method preserves the associated PIE flag register so that
interrupts are not lost. The second method clears the associated PIE flag register.
Method 1: Use the PIEIERx register to disable the interrupt and preserve the associated PIEIFRx
flags.
To clear bits within a PIEIERx register while preserving the associated flags in the PIEIFRx register, the
following procedure should be followed:
Step a.
Step b.
Step c.
Step d.
Step e.
Step f.
Disable global interrupts (INTM = 1).
Clear the PIEIERx.y bit to disable the interrupt for a given peripheral. This can be done for
one or more peripherals within the same group.
Wait 5 cycles. This delay is required to be sure that any interrupt that was incoming to the
CPU has been flagged within the CPU IFR register.
Clear the CPU IFRx bit for the peripheral group. This is a safe operation on the CPU IFR
register.
Clear the PIEACKx bit for the peripheral group.
Enable global interrupts (INTM = 0).
Method 2: Use the PIEIERx register to disable the interrupt and clear the associated PIEIFRx flags.
To perform a software reset of a peripheral interrupt and clear the associated flag in the PIEIFRx register
and CPU IFR register, the following procedure should be followed:
Step 1.
Step 2.
Step 3.
Step
Step
Step
Step
Step
Step
Step
Step
Step
Step
174
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Disable global interrupts (INTM = 1).
Set the EALLOW bit.
Modify the PIE vector table to temporarily map the vector of the specific peripheral interrupt to
a empty interrupt service routine (ISR). This empty ISR will only perform a return from
interrupt (IRET) instruction. This is the safe way to clear a single PIEIFRx.y bit without losing
any interrupts from other peripherals within the group.
Disable the peripheral interrupt at the peripheral register.
Enable global interrupts (INTM = 0).
Wait for any pending interrupt from the peripheral to be serviced by the empty ISR routine.
Disable global interrupts (INTM = 1).
Modify the PIE vector table to map the peripheral vector back to its original ISR.
Clear the EALLOW bit.
Disable the PIEIER bit for given peripheral.
Clear the IFR bit for given peripheral group (this is safe operation on CPU IFR register).
Clear the PIEACK bit for the PIE group.
Enable global interrupts.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.3.3
Flow of a Multiplexed Interrupt Request From a Peripheral to the CPU
Figure 1-97 shows the flow with the steps shown in circled numbers. Following the diagram, the steps are
described.
Figure 1-97. Multiplexed Interrupt Request Flow Diagram
3a
2
1
PIE
interrupt
flag
Peripheral
IE/IF
PIE
interrupt
enable
Highest
3b
PIEIERx.1
0
PIEIFRx.1
latch
0
Vector
PIE group
acknowledge
1
4
PIEACKx
5
1
1
Search order
highest to
lowest
8 interrupts
per group
0
Pulse
gen
1=valid Int
IFRx
latch
6
7
IERx
INTM
8
0
1
CPU
0
1
CPU
interrupt
logic
Lowest
Peripheral
IE/IF
PIEIERx.8
0
PIEIFRx.8
latch
0
Vector
Step 1.
Step 2.
Step 3.
Step 4.
Step 5.
Step 6.
Step 7.
Step 8.
Step 9.
1
Vector is fetched
only after CPU
interrupt logic
has recognized
the interrupt
1
9
Any peripheral or external interrupt within the PIE group generates an interrupt. If interrupts
are enabled within the peripheral module then the interrupt request is sent to the PIE module.
The PIE module recognizes that interrupt y within PIE group x (INTx.y) has asserted an
interrupt and the appropriate PIE interrupt flag bit is latched: PIEIFRx.y = 1.
For the interrupt request to be sent from the PIE to the CPU, both of the following conditions
must be true:
(a) The proper enable bit must be set (PIEIERx.y = 1) and
(b) The PIEACKx bit for the group must be clear.
If both conditions in 3a and 3b are true, then an interrupt request is sent to the CPU and the
acknowledge bit is again set (PIEACKx = 1). The PIEACKx bit will remain set until you clear it
to indicate that additional interrupts from the group can be sent from the PIE to the CPU.
The CPU interrupt flag bit is set (CPU IFRx = 1) to indicate a pending interrupt x at the CPU
level.
If the CPU interrupt is enabled (CPU IER bit x = 1, or DBGIER bit x = 1) AND the global
interrupt mask is clear (INTM = 0) then the CPU will service the INTx.
The CPU recognizes the interrupt and performs the automatic context save, clears the IER
bit, sets INTM, and clears EALLOW. All of the steps that the CPU takes in order to prepare to
service the interrupt are documented in the TM S320C28x DSP CPU and Instruction Set
Reference Guide (literature number SPRU430).
The CPU will then request the appropriate vector from the PIE.
For multiplexed interrupts, the PIE module uses the current value in the PIEIERx and
PIEIFRx registers to decode which vector address should be used. There are two possible
cases:
(a) The vector for the highest priority interrupt within the group that is both enabled in the
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
175
Peripheral Interrupt Expansion (PIE)
www.ti.com
PIEIERx register, and flagged as pending in the PIEIFRx is fetched and used as the
branch address. In this manner if an even higher priority enabled interrupt was flagged
after Step 7, it will be serviced first.
(b) If no flagged interrupts within the group are enabled, then the PIE will respond with the
vector for the highest priority interrupt within that group. That is the branch address used
for INTx.1. This behavior corresponds to the 28x TRAP or INT instructions.
NOTE: Because the PIEIERx register is used to determine which vector will be used for the branch,
you must take care when clearing bits within the PIEIERx register. The proper procedure for
clearing bits within a PIEIERx register is described in Section 1.7.3.2. Failure to follow these
steps can result in changes occurring to the PIEIERx register after an interrupt has been
passed to the CPU at Step 5 in Figure 6-5. In this case, the PIE will respond as if a TRAP or
INT instruction was executed unless there are other interrupts both pending and enabled.
At this point, the PIEIFRx.y bit is cleared and the CPU branches to the vector of the interrupt fetched
from the PIE.
1.7.3.4
The PIE Vector Table
The PIE vector table (see Table 1-120) consists of a 256 x 16 SARAM block that can also be used as
RAM (in data space only) if the PIE block is not in use. The PIE vector table contents are undefined on
reset. The CPU fixes interrupt priority for INT1 to INT12. The PIE controls priority for each group of eight
interrupts. For example, if INT1.1 should occur simultaneously with INT8.1, both interrupts are presented
to the CPU simultaneously by the PIE block, and the CPU services INT1.1 first. If INT1.1 should occur
simultaneously with INT1.8, then INT1.1 is sent to the CPU first and then INT1.8 follows. Interrupt
prioritization is performed during the vector fetch portion of the interrupt processing.
When the PIE is enabled, a TRAP #1 through TRAP #12 or an INTR INT1 to INTR INT12 instruction
transfers program control to the interrupt service routine corresponding to the first vector within the PIE
group. For example: TRAP #1 fetches the vector from INT1.1, TRAP #2 fetches the vector from INT2.1
and so forth. Similarly an OR IFR, #16-bit operation causes the vector to be fetched from INTR1.1 to
INTR12.1 locations, if the respective interrupt flag is set. All other TRAP, INTR, OR IFR,#16-bit operations
fetch the vector from the respective table location. The vector table is EALLOW protected.
Out of the 96 possible MUXed interrupts in Table 1-119, 43 interrupts are currently used. The remaining
interrupts are reserved for future devices. These reserved interrupts can be used as software interrupts if
they are enabled at the PIEIFRx level, provided none of the interrupts within the group is being used by a
peripheral. Otherwise, interrupts coming from peripherals may be lost by accidentally clearing their flags
when modifying the PIEIFR.
To summarize, there are two safe cases when the reserved interrupts can be used as software interrupts:
1. No peripheral within the group is asserting interrupts.
2. No peripheral interrupts are assigned to the group. For example, PIE group 11 and 12 do not have any
peripherals attached to them.
The interrupt grouping for peripherals and external interrupts connected to the PIE module is shown in
Table 1-119. Each row in the table shows the 8 interrupts multiplexed into a particular CPU interrupt. The
entire PIE vector table, including both MUXed and non-MUXed interrupts, is shown in Table 1-120.
Table 1-119. PIE MUXed Peripheral Interrupt Vector Table
INT1.y
INT2.y
INT3.y
INTx.8
INTx.7
INTx.6
INTx.5
INTx.4
INTx.3
INTx.2
INTx.1
WAKEINT
TINT0
ADCINT9
XINT2
XINT1
Reserved
ADCINT2
ADCINT1
(LPM/WD)
(TIMER 0)
(ADC)
Ext. int. 2
Ext. int. 1
–
(ADC)
(ADC)
0xD4E
0xD4C
0xD4A
0xD48
0xD46
0xD44
0xD42
0xD40
EPWM8_TZINT
EPWM7_TZINT
EPWM6_TZINT
EPWM5_TZINT
EPWM4_TZINT
EPWM3_TZINT
EPWM2_TZINT
EPWM1_TZINT
(ePWM8)
(ePWM7)
(ePWM6)
(ePWM5)
(ePWM4)
(ePWM3)
(ePWM2)
(ePWM1)
0xD5E
0xD5C
0xD5A
0xD58
0xD56
0xD54
0xD52
0xD50
EPWM8_INT
EPWM7_INT
EPWM6_INT
EPWM5_INT
EPWM4_INT
EPWM3_INT
EPWM2_INT
EPWM1_INT
(ePWM8)
(ePWM7)
(ePWM6)
(ePWM5)
(ePWM4)
(ePWM3)
(ePWM2)
(ePWM1)
0xD6E
0xD6C
0xD6A
0xD68
0xD66
0xD64
0xD62
0xD60
176 System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-119. PIE MUXed Peripheral Interrupt Vector Table (continued)
INT4.y
INT5.y
INT6.y
INT7.y
INT8.y
INT9.y
INT10.y
INT11.y
INT12.y
INTx.8
INTx.7
INTx.6
INTx.5
INTx.4
INTx.3
INTx.2
INTx.1
HRCAP2_INT
HRCAP1_INT
Reserved
Reserved
Reserved
ECAP3_INT
ECAP2_INT
ECAP1_INT
(HRCAP2)
(HRCAP1)
–
–
–
(eCAP3)
(eCAP2)
(eCAP1)
0xD7E
0xD7C
0xD7A
0xD78
0xD76
0xD74
0xD72
0xD70
Reserved
Reserved
Reserved
HRCAP4_INT
HRCAP3_INT
Reserved
EQEP2_INT
EQEP1_INT
(eQEP1)
USB0_INT (USB0)
–
–
(HRCAP4)
(HRCAP3)
–
(eQEP2)
0xD8E
0xD8C
0xD8A
0xD88
0xD86
0xD84
0xD82
0xD80
Reserved
Reserved
MXINTA
MRINTA
SPITXINTB
SPIRXINTB
SPITXINTA
SPIRXINTA
(SPI-A)
–
–
(McBSP-A)
(McBSP-A)
(SPI-B)
(SPI-B)
(SPI-A)
0xD9E
0xD9C
0xD9A
0xD98
0xD96
0xD94
0xD92
0xD90
Reserved
Reserved
DINTCH6
DINTCH5
DINTCH4
DINTCH3
DINTCH2
DINTCH1
–
–
(DMA)
(DMA)
(DMA)
(DMA)
(DMA)
(DMA)
0xDAE
0xDAC
0xDAA
0xDA8
0xDA6
0xDA4
0xDA2
0xDA0
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
I2CINT2A
I2CINT1A
–
–
–
–
–
–
(I2C-A)
(I2C-A)
0xDBE
0xDBC
0xDBA
0xDB8
0xDB6
0xDB4
0xDB2
0xDB0
Reserved
Reserved
ECAN1_INT1
ECAN0_INT0
SCITXINTB
SCIRXINTB
SCITXINTA
SCIRXINTA
(SCI-A)
–
–
(CAN-A)
(CAN-A)
(SCI-B)
(SCI-B)
(SCI-A)
0xDCE
0xDCC
0xDCA
0xDC8
0xDC6
0xDC4
0xDC2
0xDC0
ADCINT8
ADCINT7
ADCINT6
ADCINT5
ADCINT4
ADCINT3
ADCINT2
ADCINT1
(ADC)
(ADC)
(ADC)
(ADC)
(ADC)
(ADC)
(ADC)
(ADC)
0xDDE
0xDDC
0xDDA
0xDD8
0xDD6
0xDD4
0xDD2
0xDD0
CLA1_INT8
CLA1_INT7
CLA1_INT6
CLA1_INT5
CLA1_INT4
CLA1_INT3
CLA1_INT2
CLA1_INT1
(CLA)
(CLA)
(CLA)
(CLA)
(CLA)
(CLA)
(CLA)
(CLA)
0xDEE
0xDEC
0xDEA
0xDE8
0xDE6
0xDE4
0xDE2
0xDE0
LUF
LVF
Reserved
Reserved
Reserved
Reserved
Reserved
XINT3
(CLA, FPU32)
(CLA, FPU32)
–
–
–
–
–
Ext. Int. 3
0xDFE
0xDFC
0xDFA
0xDF8
0xDF6
0xDF4
0xDF2
0xDF0
Table 1-120. PIE Vector Table
Name
VECTOR
ID
Address (1)
CPU
Priority
PIE Group
Priority
Reset
0
0x0000 0D00
2
Reset is always fetched from location
0x003F FFC0 in Boot ROM.
1
(highest)
-
INT1
1
0x0000 0D02
2
INT2
2
0x0000 0D04
2
Not used. See PIE Group 1
5
-
Not used. See PIE Group 2
6
INT3
3
0x0000 0D06
-
2
Not used. See PIE Group 3
7
INT4
4
-
0x0000 0D08
2
Not used. See PIE Group 4
8
-
INT5
INT6
5
0x0000 0D0A
2
Not used. See PIE Group 5
9
-
6
0x0000 0D0C
2
Not used. See PIE Group 6
10
-
INT7
7
0x0000 0D0E
2
Not used. See PIE Group 7
11
-
INT8
8
0x0000 0D10
2
Not used. See PIE Group 8
12
-
INT9
9
0x0000 0D12
2
Not used. See PIE Group 9
13
-
INT10
10
0x0000 0D14
2
Not used. See PIE Group 10
14
-
INT11
11
0x0000 0D16
2
Not used. See PIE Group 11
15
-
INT12
12
0x0000 0D18
2
Not used. See PIE Group 12
16
-
INT13
13
0x0000 0D1A
2
External Interrupt 13 (XINT13) or
CPU-Timer1
17
-
INT14
14
0x0000 0D1C
2
CPU-Timer2
(for TI/RTOS use)
18
-
DATALOG
15
0x0000 0D1E
2
CPU Data Logging Interrupt
19 (lowest)
-
(1)
(2)
Size (x16) Description (2)
Reset is always fetched from location 0x003F FFC0 in Boot ROM.
All the locations within the PIE vector table are EALLOW protected.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 177
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-120. PIE Vector Table (continued)
VECTOR
ID
Address (1)
CPU
Priority
PIE Group
Priority
RTOSINT
16
0x0000 0D20
2
EMUINT
17
0x0000 0D22
2
CPU Real-Time OS Interrupt
4
-
CPU Emulation Interrupt
2
NMI
18
0x0000 0D24
-
2
External Non-Maskable Interrupt
3
ILLEGAL
19
-
0x0000 0D26
2
Illegal Operation
-
-
USER1
USER2
20
0x0000 0D28
2
User-Defined Trap
-
-
21
0x0000 0D2A
2
User Defined Trap
-
-
USER3
22
0x0000 0D2C
2
User Defined Trap
-
-
USER4
23
0x0000 0D2E
2
User Defined Trap
-
-
USER5
24
0x0000 0D30
2
User Defined Trap
-
-
USER6
25
0x0000 0D32
2
User Defined Trap
-
-
USER7
26
0x0000 0D34
2
User Defined Trap
-
-
USER8
27
0x0000 0D36
2
User Defined Trap
-
-
USER9
28
0x0000 0D38
2
User Defined Trap
-
-
USER10
29
0x0000 0D3A
2
User Defined Trap
-
-
USER11
30
0x0000 0D3C
2
User Defined Trap
-
-
USER12
31
0x0000 0D3E
2
User Defined Trap
-
-
Name
Size (x16) Description (2)
PIE Group 1 Vectors - MUXed into CPU INT1
INT1.1
32
0x0000 0D40
2
ADCINT1
(ADC)
5
1 (highest)
INT1.2
33
0x0000 0D42
2
ADCINT2
(ADC)
5
2
INT1.3
34
0x0000 0D44
2
Reserved
5
3
INT1.4
35
0x0000 0D46
2
XINT1
5
4
INT1.5
36
0x0000 0D48
2
XINT2
5
5
INT1.6
37
0x0000 0D4A
2
ADCINT9
(ADC)
5
6
INT1.7
38
0x0000 0D4C
2
TINT0
(CPUTimer0)
5
7
INT1.8
39
0x0000 0D4E
2
WAKEINT
(LPM/WD)
5
8 (lowest)
PIE Group 2 Vectors - MUXed into CPU INT2
INT2.1
40
0x0000 0D50
2
EPWM1_TZINT
(EPWM1)
6
1 (highest)
INT2.2
41
0x0000 0D52
2
EPWM2_TZINT
(EPWM2)
6
2
INT2.3
42
0x0000 0D54
2
EPWM3_TZINT
(EPWM3)
6
3
INT2.4
43
0x0000 0D56
2
EPWM4_TZINT
(EPWM4)
6
4
INT2.5
44
0x0000 0D58
2
EPWM5_TZINT
(EPWM5)
6
5
INT2.6
45
0x0000 0D5A
2
EPWM6_TZINT
(EPWM6)
6
6
INT2.7
46
0x0000 0D5C
2
EPWM7_TZINT
(EPWM7)
6
7
INT2.8
47
0x0000 0D5E
2
Reserved
6
8 (lowest)
PIE Group 3 Vectors - MUXed into CPU INT3
INT3.1
48
0x0000 0D60
2
EPWM1_INT
(EPWM1)
7
1 (highest)
INT3.2
49
0x0000 0D62
2
EPWM2_INT
(EPWM2)
7
2
INT3.3
50
0x0000 0D64
2
EPWM3_INT
(EPWM3)
7
3
INT3.4
51
0x0000 0D66
2
EPWM4_INT
(EPWM4)
7
4
INT3.5
52
0x0000 0D68
2
EPWM5_INT
(EPWM5)
7
5
INT3.6
53
0x0000 0D6A
2
EPWM6_INT
(EPWM6)
7
6
INT3.7
54
0x0000 0D6C
2
EPWM7_INT
(EPWM7)
7
7
INT3.8
55
0x0000 0D6E
2
EPWM8_INT
(EPWM8)
7
8 (lowest)
PIE Group 4 Vectors - MUXed into CPU INT4
INT4.1
56
0x0000 0D70
2
ECAP1_INT
(ECAP1)
8
1 (highest)
INT4.2
57
0x0000 0D72
2
ECAP2_INT
(ECAP2)
8
2
178 System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-120. PIE Vector Table (continued)
Name
VECTOR
ID
Address (1)
CPU
Priority
PIE Group
Priority
INT4.3
58
0x0000 0D74
2
ECAP3_INT
INT4.4
59
0x0000 0D76
2
Reserved
(ECAP3)
8
3
-
8
INT4.5
60
0x0000 0D78
2
4
Reserved
-
8
INT4.6
61
0x0000 0D7A
5
2
Reserved
-
8
6
INT4.7
62
INT4.8
63
0x0000 0D7C
2
Reserved
-
8
7
0x0000 0D7E
2
Reserved
-
8
8 (lowest)
Size (x16) Description (2)
PIE Group 5 Vectors - MUXed into CPU INT5
INT5.1
64
0x0000 0D80
2
EQEP1_INT
(EQEP1)
9
1 (highest)
INT5.2
65
0x0000 0D82
2
EQEP2_INT
(EQEP2)
9
2
INT5.3
66
0x0000 0D84
2
Reserved
9
3
INT5.4
67
0x0000 0D86
2
HRCAP3INT
HRCAP3
9
4
INT5.5
68
0x0000 0D88
2
HRCAP4INT
HRCAP4
9
5
INT5.6
69
0x0000 0D8A
2
Reserved
-
9
6
INT5.7
70
0x0000 0D8C
2
Reserved
-
9
7
INT5.8
71
0x0000 0D8E
2
USB0_INT (USB0)
-
9
8 (lowest)
PIE Group 6 Vectors - MUXed into CPU INT6
INT6.1
72
0x0000 0D90
2
SPIRXINTA
(SPI-A)
10
1 (highest)
INT6.2
73
0x0000 0D92
2
SPITXINTA
(SPI-A)
10
2
INT6.3
74
0x0000 0D94
2
SPIRXINTB
(SPI-B)
10
3
INT6.4
75
0x0000 0D96
2
SPITXINTB
(SPI-B)
10
4
INT6.5
76
0x0000 0D98
2
MRINTA
(McBSP-A)
10
5
INT6.6
77
0x0000 0D9A
2
MXINTA
(McBSP-A)
10
6
INT6.7
78
0x0000 0D9C
2
Reserved
-
10
7
INT6.8
79
0x0000 0D9E
2
Reserved
-
10
8 (lowest)
PIE Group 7 Vectors - MUXed into CPU INT7
INT7.1
80
0x0000 0DA0
2
DINTCH1
(DMA)
11
1 (highest)
INT7.2
81
0x0000 0DA2
2
DINTCH2
(DMA)
11
2
INT7.3
82
0x0000 0DA4
2
DINTCH3
(DMA)
11
3
INT7.4
83
0x0000 0DA6
2
DINTCH4
(DMA)
11
4
INT7.5
84
0x0000 0DA8
2
DINTCH5
(DMA)
11
5
INT7.6
85
0x0000 0DAA
2
DINTCH6
(DMA)
11
6
INT7.7
86
0x0000 0DAC
2
Reserved
-
11
7
INT7.8
87
0x0000 0DAE
2
Reserved
-
11
8 (lowest)
PIE Group 8 Vectors - MUXed into CPU INT8
INT8.1
88
0x0000 0DB0
2
I2CINT1A
(I2C-A)
12
1 (highest)
INT8.2
89
0x0000 0DB2
2
I2CINT2A
(I2C-A)
12
2
INT8.3
90
0x0000 0DB4
2
Reserved
-
12
3
INT8.4
91
0x0000 0DB6
2
Reserved
-
12
4
INT8.5
92
0x0000 0DB8
2
Reserved
-
12
5
INT8.6
93
0x0000 0DBA
2
Reserved
-
12
6
INT8.7
94
0x0000 0DBC
2
Reserved
-
12
7
INT8.8
95
0x0000 0DBE
2
Reserved
-
12
8 (lowest)
PIE Group 9 Vectors - MUXed into CPU INT9
INT9.1
96
0x0000 0DC0
2
SCIRXINTA
(SCI-A)
13
1 (highest)
INT9.2
97
0x0000 0DC2
2
SCITXINTA
(SCI-A)
13
2
INT9.3
98
0x0000 0DC4
2
SCIRXINTB
(SCI-B)
13
3
INT9.4
99
0x0000 0DC6
2
SCITXINTB
(SCI-B)
13
4
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts 179
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-120. PIE Vector Table (continued)
Name
VECTOR
ID
INT9.5
100
0x0000 0DC8
2
ECANAINT0
INT9.6
101
0x0000 0DCA
2
ECANAINT1
INT9.7
102
0x0000 0DCC
2
INT9.8
103
0x0000 0DCE
Address (1)
CPU
Priority
PIE Group
Priority
(CAN-A)
13
5
(CAN-A)
13
6
Reserved
-
13
7
2
Reserved
-
13
8 (lowest)
Size (x16) Description (2)
PIE Group 10 Vectors - MUXed into CPU INT10
INT10.1
104
0x0000 0DD0
2
ADCINT1
(ADC)
14
1 (highest)
INT10.2
105
0x0000 0DD2
2
ADCINT2
(ADC)
14
2
INT10.3
106
0x0000 0DD4
2
ADCINT3
(ADC)
14
3
INT10.4
107
0x0000 0DD6
2
ADCINT4
(ADC)
14
4
INT10.5
108
0x0000 0DD8
2
ADCINT5
(ADC)
14
5
INT10.6
109
0x0000 0DDA
2
ADCINT6
(ADC)
14
6
INT10.7
110
0x0000 0DDC
2
ADCINT7
(ADC)
14
7
INT10.8
111
0x0000 0DDE
2
ADCINT8
(ADC)
14
8 (lowest)
PIE Group 11 Vectors - MUXed into CPU INT11
INT11.1
112
0x0000 0DE0
2
CLA1_INT1
(CLA)
15
1 (highest)
INT11.2
113
0x0000 0DE2
2
CLA1_INT2
(CLA)
15
2
INT11.3
114
0x0000 0DE4
2
CLA1_INT3
(CLA)
15
3
INT11.4
115
0x0000 0DE6
2
CLA1_INT4
(CLA)
15
4
INT11.5
116
0x0000 0DE8
2
CLA1_INT5
(CLA)
15
5
INT11.6
117
0x0000 0DEA
2
CLA1_INT6
(CLA)
15
6
INT11.7
118
0x0000 0DEC
2
CLA1_INT7
(CLA)
15
7
INT11.8
119
0x0000 0DEE
2
CLA1_INT8
(CLA)
15
8 (lowest)
PIE Group 12 Vectors - Muxed into CPU INT12
180
INT12.1
120
0x0000 0DF0
2
XINT3
-
16
1 (highest)
INT12.2
121
0x0000 0DF2
2
Reserved
-
16
2
INT12.3
122
0x0000 0DF4
2
Reserved
-
16
3
INT12.4
123
0x0000 0DF6
2
Reserved
-
16
4
INT12.5
124
0x0000 0DF8
2
Reserved
-
16
5
INT12.6
125
0x0000 0DFA
2
Reserved
-
16
6
INT12.7
126
0x0000 0DFC
2
LVF
(CLA)
16
7
INT12.8
127
0x0000 0DFE
2
LUF
(CLA)
16
8 (lowest)
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.4 PIE Configuration Registers
The registers controlling the functionality of the PIE block are shown in Table 1-121.
Table 1-121. PIE Configuration and Control Registers
Name
Address
PIECTRL
0x0000 - 0CE0
Size (x16)
1
Description
PIE, Control Register
PIEACK
0x0000 - 0CE1
1
PIE, Acknowledge Register
PIEIER1
0x0000 - 0CE2
1
PIE, INT1 Group Enable Register
PIEIFR1
0x0000 - 0CE3
1
PIE, INT1 Group Flag Register
PIEIER2
0x0000 - 0CE4
1
PIE, INT2 Group Enable Register
PIEIFR2
0x0000 - 0CE5
1
PIE, INT2 Group Flag Register
PIEIER3
0x0000 - 0CE6
1
PIE, INT3 Group Enable Register
PIEIFR3
0x0000 - 0CE7
1
PIE, INT3 Group Flag Register
PIEIER4
0x0000 - 0CE8
1
PIE, INT4 Group Enable Register
PIEIFR4
0x0000 - 0CE9
1
PIE, INT4 Group Flag Register
PIEIER5
0x0000 - 0CEA
1
PIE, INT5 Group Enable Register
PIEIFR5
0x0000 - 0CEB
1
PIE, INT5 Group Flag Register
PIEIER6
0x0000 - 0CEC
1
PIE, INT6 Group Enable Register
PIEIFR6
0x0000 - 0CED
1
PIE, INT6 Group Flag Register
PIEIER7
0x0000 - 0CEE
1
PIE, INT7 Group Enable Register
PIEIFR7
0x0000 - 0CEF
1
PIE, INT7 Group Flag Register
PIEIER8
0x0000 - 0CF0
1
PIE, INT8 Group Enable Register
PIEIFR8
0x0000 - 0CF1
1
PIE, INT8 Group Flag Register
PIEIER9
0x0000 - 0CF2
1
PIE, INT9 Group Enable Register
PIEIFR9
0x0000 - 0CF3
1
PIE, INT9 Group Flag Register
PIEIER10
0x0000 - 0CF4
1
PIE, INT10 Group Enable Register
PIEIFR10
0x0000 - 0CF5
1
PIE, INT10 Group Flag Register
PIEIER11
0x0000 - 0CF6
1
PIE, INT11 Group Enable Register
PIEIFR11
0x0000 - 0CF7
1
PIE, INT11 Group Flag Register
PIEIER12
0x0000 - 0CF8
1
PIE, INT12 Group Enable Register
PIEIFR12
0x0000 - 0CF9
1
PIE, INT12 Group Flag Register
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
181
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.5 PIE Interrupt Registers
Figure 1-98. PIECTRL Register (Address 0xCE0)
15
1
0
PIEVECT
ENPIE
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-122. PIECTRL Register Address Field Descriptions
Bits
Field
15-1
PIEVECT
Value
Description
These bits indicate the address within the PIE vector table from which the vector was fetched. The
least significant bit of the address is ignored and only bits 1 to 15 of the address is shown. You can
read the vector value to determine which interrupt generated the vector fetch.
For Example: If PIECTRL = 0x0D27 then the vector from address 0x0D26 (illegal operation) was
fetched.
Note: When a NMI is serviced, the PIEVECT bit-field does not reflect the vector as it does for other
interrupts.
0
ENPIE
Enable vector fetching from PIE vector table.
Note: The reset vector is never fetched from the PIE, even when it is enabled. This vector is always
fetched from boot ROM.
0
If this bit is set to 0, the PIE block is disabled and vectors are fetched from the CPU vector table in
boot ROM. All PIE block registers (PIEACK, PIEIFR, PIEIER) can be accessed even when the PIE
block is disabled.
1
When ENPIE is set to 1, all vectors, except for reset, are fetched from the PIE vector table. The reset
vector is always fetched from the boot ROM.
Figure 1-99. PIE Interrupt Acknowledge Register (PIEACK) Register (Address 0xCE1)
15
12
11
0
Reserved
PIEACK
R-0
R/W1C-0
LEGEND: R/W1C = Read/Write 1 to clear; R = Read only; -n = value after reset
Table 1-123. PIE Interrupt Acknowledge Register (PIEACK) Field Descriptions
Bits
Field
Value
Description
15-12 Reserved
Reserved
11-0
Each bit in PIEACK refers to a specific PIE group. Bit 0 refers to interrupts in PIE group 1 that are
MUXed into INT1 up to Bit 11, which refers to PIE group 12 which is MUXed into CPU IN T12
PIEACK
bit x = 0
(1)
If a bit reads as a 0, it indicates that the PIE can send an interrupt from the respective group to the
CPU.
Writes of 0 are ignored.
bit x = 1
Reading a 1 indicates if an interrupt from the respective group has been sent to the CPU and all
other interrupts from the group are currently blocked.
Writing a 1 to the respective interrupt bit clears the bit and enables the PIE block to drive a pulse into
the CPU interrupt input if an interrupt is pending for that group.
(1)
182
bit x = PIEACK bit 0 - PIEACK bit 11. Bit 0 refers to CPU INT1 up to Bit 11, which refers to CPU INT12
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.5.1
PIE Interrupt Flag Registers
There are twelve PIEIFR registers, one for each CPU interrupt used by the PIE module (INT1-INT12).
Figure 1-100. PIEIFRx Register (x = 1 to 12)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
INTx.8
INTx.7
INTx.6
INTx.5
INTx.4
INTx.3
INTx.2
INTx.1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-124. PIEIFRx Register Field Descriptions
Bits
Field
Description
15-8
Reserved
Reserved
7
INTx.8
6
INTx.7
5
INTx.6
These register bits indicate whether an interrupt is currently active. They behave very much like the CPU
interrupt flag register. When an interrupt is active, the respective register bit is set. The bit is cleared when the
interrupt is serviced or by writing a 0 to the register bit. This register can also be read to determine which
interrupts are active or pending. x = 1 to 12. INTx means CPU INT1 to INT12
4
INTx.5
The PIEIFR register bit is cleared during the interrupt vector fetch portion of the interrupt processing.
3
INTx.4
Hardware has priority over CPU accesses to the PIEIFR registers.
2
INTx.3
1
INTx.2
0
INTx.1
NOTE: Never clear a PIEIFR bit. An interrupt may be lost during the read-modify-write operation.
See Section Section 1.7.3.1 for a method to clear flagged interrupts.
1.7.5.2
PIE Interrupt Enable Registers
There are twelve PIEIER registers, one for each CPU interrupt used by the PIE module (INT1-INT12).
Figure 1-101. PIEIERx Register (x = 1 to 12)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
INTx.8
INTx.7
INTx.6
INTx.5
INTx.4
INTx.3
INTx.2
INTx.1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
183
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-125. PIEIERx Register (x = 1 to 12) Field Descriptions
Bits
Field
Description
15-8
Reserved
Reserved
7
INTx.8
6
INTx.7
These register bits individually enable an interrupt within a group and behave very much like the core interrupt
enable register. Setting a bit to 1 enables the servicing of the respective interrupt. Setting a bit to 0 disables
the servicing of the interrupt. x = 1 to 12. INTx means CPU INT1 to INT12
5
INTx.6
4
INTx.5
3
INTx.4
2
INTx.3
1
INTx.2
0
INTx.1
NOTE: Care must be taken when clearing PIEIER bits during normal operation. See Section
Section 1.7.3.2 for the proper procedure for handling these bits.
1.7.5.3
CPU Interrupt Flag Register (IFR)
The CPU interrupt flag register (IFR), is a 16-bit, CPU register and is used to identify and clear pending
interrupts. The IFR contains flag bits for all the maskable interrupts at the CPU level (INT1-INT14,
DLOGINT and RTOSINT). When the PIE is enabled, the PIE module multiplexes interrupt sources for
INT1-INT12.
When a maskable interrupt is requested, the flag bit in the corresponding peripheral control register is set
to 1. If the corresponding mask bit is also 1, the interrupt request is sent to the CPU, setting the
corresponding flag in the IFR. This indicates that the interrupt is pending or waiting for acknowledgment.
To identify pending interrupts, use the PUSH IFR instruction and then test the value on the stack. Use the
OR IFR instruction to set IFR bits and use the AND IFR instruction to manually clear pending interrupts.
All pending interrupts are cleared with the AND IFR #0 instruction or by a hardware reset.
The following events also clear an IFR flag:
• The CPU acknowledges the interrupt.
• The 28x device is reset.
NOTE:
1.
2.
3.
4.
184
To clear a CPU IFR bit, you must write a zero to it, not a one.
When a maskable interrupt is acknowledged, only the IFR bit is cleared automatically.
The flag bit in the corresponding peripheral control register is not cleared. If an
application requires that the control register flag be cleared, the bit must be cleared by
software.
When an interrupt is requested by an INTR instruction and the corresponding IFR bit is
set, the CPU does not clear the bit automatically. If an application requires that the IFR
bit be cleared, the bit must be cleared by software.
IMR and IFR registers pertain to core-level interrupts. All peripherals have their own
interrupt mask and flag bits in their respective control/configuration registers. Note that
several peripheral interrupts are grouped under one core-level interrupt.
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Figure 1-102. Interrupt Flag Register (IFR) — CPU Register
15
14
13
12
11
10
9
8
RTOSINT
DLOGINT
INT14
INT13
INT12
INT11
INT10
INT9
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-126. Interrupt Flag Register (IFR) — CPU Register Field Descriptions
Bits
15
14
13
12
11
10
9
8
7
6
Field
Value
RTOSINT
Description
Real-time operating system flag. RTOSINT is the flag for RTOS interrupts.
0
No RTOS interrupt is pending
1
At least one RTOS interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
DLOGINT
Data logging interrupt fag. DLOGINT is the flag for data logging interrupts.
0
No DLOGINT is pending
1
At least one DLOGINT interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT14
Interrupt 14 flag. INT14 is the flag for interrupts connected to CPU interrupt level INT14.
0
No INT14 interrupt is pending
1
At least one INT14 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT13
Interrupt 13 flag. INT13 is the flag for interrupts connected to CPU interrupt level INT13I.
0
No INT13 interrupt is pending
1
At least one INT13 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT12
Interrupt 12 flag. INT12 is the flag for interrupts connected to CPU interrupt level INT12.
0
No INT12 interrupt is pending
1
At least one INT12 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT11
Interrupt 11 flag. INT11 is the flag for interrupts connected to CPU interrupt level INT11.
0
No INT11 interrupt is pending
1
At least one INT11 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT10
Interrupt 10 flag. INT10 is the flag for interrupts connected to CPU interrupt level INT10.
0
No INT10 interrupt is pending
1
At least one INT6 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT9
Interrupt 9 flag. INT9 is the flag for interrupts connected to CPU interrupt level INT6.
0
No INT9 interrupt is pending
1
At least one INT9 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT8
Interrupt 8 flag. INT8 is the flag for interrupts connected to CPU interrupt level INT6.
0
No INT8 interrupt is pending
1
At least one INT8 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT7
Interrupt 7 flag. INT7 is the flag for interrupts connected to CPU interrupt level INT7.
0
No INT7 interrupt is pending
1
At least one INT7 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
185
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-126. Interrupt Flag Register (IFR) — CPU Register Field Descriptions (continued)
Bits
Field
5
INT6
4
Value
Interrupt 6 flag. INT6 is the flag for interrupts connected to CPU interrupt level INT6.
0
No INT6 interrupt is pending
1
At least one INT6 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT5
3
Interrupt 5 flag. INT5 is the flag for interrupts connected to CPU interrupt level INT5.
0
No INT5 interrupt is pending
1
At least one INT5 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT4
2
Interrupt 4 flag. INT4 is the flag for interrupts connected to CPU interrupt level INT4.
0
No INT4 interrupt is pending
1
At least one INT4 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT3
1
Interrupt 3 flag. INT3 is the flag for interrupts connected to CPU interrupt level INT3.
0
No INT3 interrupt is pending
1
At least one INT3 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT2
0
Interrupt 2 flag. INT2 is the flag for interrupts connected to CPU interrupt level INT2.
0
No INT2 interrupt is pending
1
At least one INT2 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
INT1
1.7.5.4
Description
Interrupt 1 flag. INT1 is the flag for interrupts connected to CPU interrupt level INT1.
0
No INT1 interrupt is pending
1
At least one INT1 interrupt is pending. Write a 0 to this bit to clear it to 0 and clear the interrupt
request
Interrupt Enable Register (IER) and Debug Interrupt Enable Register (DBGIER)
The IER is a 16-bit CPU register. The IER contains enable bits for all the maskable CPU interrupt levels
(INT1-INT14, RTOSINT and DLOGINT). Neither NMI nor XRS is included in the IER; thus, IER has no
effect on these interrupts.
You can read the IER to identify enabled or disabled interrupt levels, and you can write to the IER to
enable or disable interrupt levels. To enable an interrupt level, set its corresponding IER bit to one using
the OR IER instruction. To disable an interrupt level, set its corresponding IER bit to zero using the AND
IER instruction. When an interrupt is disabled, it is not acknowledged, regardless of the value of the INTM
bit. When an interrupt is enabled, it is acknowledged if the corresponding IFR bit is one and the INTM bit
is zero.
When using the OR IER and AND IER instructions to modify IER bits make sure they do not modify the
state of bit 15 (RTOSINT) unless a real-time operating system is present.
When a hardware interrupt is serviced or an INTR instruction is executed, the corresponding IER bit is
cleared automatically. When an interrupt is requested by the TRAP instruction the IER bit is not cleared
automatically. In the case of the TRAP instruction if the bit needs to be cleared it must be done by the
interrupt service routine.
At reset, all the IER bits are cleared to 0, disabling all maskable CPU level interrupts.
The IER register is shown in Figure 1-103, and descriptions of the bits follow the figure.
186
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Figure 1-103. Interrupt Enable Register (IER) — CPU Register
15
14
13
12
11
10
9
8
RTOSINT
DLOGINT
INT14
INT13
INT12
INT11
INT10
INT9
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-127. Interrupt Enable Register (IER) — CPU Register Field Descriptions
Bits
15
14
13
12
11
10
9
8
7
6
5
4
Field
Value
RTOSINT
Description
Real-time operating system interrupt enable. RTOSINT enables or disables the CPU RTOS
interrupt.
0
Level INT6 is disabled
1
Level INT6 is enabled
DLOGINT
Data logging interrupt enable. DLOGINT enables or disables the CPU data logging interrupt.
0
Level INT6 is disabled
1
Level INT6 is enabled
INT14
Interrupt 14 enable. INT14 enables or disables CPU interrupt level INT14.
0
Level INT14 is disabled
1
Level INT14 is enabled
INT13
Interrupt 13 enable. INT13 enables or disables CPU interrupt level INT13.
0
Level INT13 is disabled
1
Level INT13 is enabled
INT12
Interrupt 12 enable. INT12 enables or disables CPU interrupt level INT12.
0
Level INT12 is disabled
1
Level INT12 is enabled
INT11
Interrupt 11 enable. INT11 enables or disables CPU interrupt level INT11.
0
Level INT11 is disabled
1
Level INT11 is enabled
INT10
Interrupt 10 enable. INT10 enables or disables CPU interrupt level INT10.
0
Level INT10 is disabled
1
Level INT10 is enabled
INT9
Interrupt 9 enable. INT9 enables or disables CPU interrupt level INT9.
0
Level INT9 is disabled
1
Level INT9 is enabled
INT8
Interrupt 8 enable. INT8 enables or disables CPU interrupt level INT8.
0
Level INT8 is disabled
1
Level INT8 is enabled
INT7
Interrupt 7 enable. INT7 enables or disables CPU interrupt level INT7.
0
Level INT7 is disabled
1
Level INT7 is enabled
INT6
Interrupt 6 enable. INT6 enables or disables CPU interrupt level INT6.
0
Level INT6 is disabled
1
Level INT6 is enabled
INT5
Interrupt 5 enable.INT5 enables or disables CPU interrupt level INT5.
0
Level INT5 is disabled
1
Level INT5 is enabled
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
187
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-127. Interrupt Enable Register (IER) — CPU Register Field Descriptions (continued)
Bits
Field
3
INT4
2
Value
Interrupt 4 enable.INT4 enables or disables CPU interrupt level INT4.
0
Level INT4 is disabled
1
Level INT4 is enabled
INT3
1
Interrupt 3 enable.INT3 enables or disables CPU interrupt level INT3.
0
Level INT3 is disabled
1
Level INT3 is enabled
INT2
0
Description
Interrupt 2 enable.INT2 enables or disables CPU interrupt level INT2.
0
Level INT2 is disabled
1
Level INT2 is enabled
INT1
Interrupt 1 enable.INT1 enables or disables CPU interrupt level INT1.
0
Level INT1 is disabled
1
Level INT1 is enabled
The Debug Interrupt Enable Register (DBGIER) is used only when the CPU is halted in real-time
emulation mode. An interrupt enabled in the DBGIER is defined as a time-critical interrupt. When the CPU
is halted in real-time mode, the only interrupts that are serviced are time-critical interrupts that are also
enabled in the IER. If the CPU is running in real-time emulation mode, the standard interrupt-handling
process is used and the DBGIER is ignored.
As with the IER, you can read the DBGIER to identify enabled or disabled interrupts and write to the
DBGIER to enable or disable interrupts. To enable an interrupt, set its corresponding bit to 1. To disable
an interrupt, set its corresponding bit to 0. Use the PUSH DBGIER instruction to read from the DBGIER
and POP DBGIER to write to the DBGIER register. At reset, all the DBGIER bits are set to 0.
Figure 1-104. Debug Interrupt Enable Register (DBGIER) — CPU Register
15
14
13
12
11
10
9
8
RTOSINT
DLOGINT
INT14
INT13
INT12
INT11
INT10
INT9
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-128. Debug Interrupt Enable Register (DBGIER) — CPU Register Field Descriptions
Bits
15
14
13
12
188
Field
Value
RTOSINT
DLOGINT
INT14
Description
Real-time operating system interrupt enable. RTOSINT enables or disables the CPU RTOS
interrupt.
0
Level INT6 is disabled
1
Level INT6 is enabled
.
Data logging interrupt enable. DLOGINT enables or disables the CPU data logging interrupt
0
Level INT6 is disabled
1
Level INT6 is enabled
.
Interrupt 14 enable. INT14 enables or disables CPU interrupt level INT14
0
Level INT14 is disabled
1
Level INT14 is enabled
INT13
Interrupt 13 enable. INT13 enables or disables CPU interrupt level INT13.
0
Level INT13 is disabled
1
Level INT13 is enabled
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Table 1-128. Debug Interrupt Enable Register (DBGIER) — CPU Register Field Descriptions (continued)
Bits
Field
11
INT12
10
9
8
7
6
5
4
3
2
1
0
Value
Description
Interrupt 12 enable. INT12 enables or disables CPU interrupt level INT12.
0
Level INT12 is disabled
1
Level INT12 is enabled
INT11
Interrupt 11 enable. INT11 enables or disables CPU interrupt level INT11.
0
Level INT11 is disabled
1
Level INT11 is enabled
INT10
Interrupt 10 enable. INT10 enables or disables CPU interrupt level INT10.
0
Level INT10 is disabled
1
Level INT10 is enabled
INT9
Interrupt 9 enable. INT9 enables or disables CPU interrupt level INT9.
0
Level INT9 is disabled
1
Level INT9 is enabled
INT8
Interrupt 8 enable. INT8 enables or disables CPU interrupt level INT8.
0
Level INT8 is disabled
1
Level INT8 is enabled
INT7
Interrupt 7 enable. INT7 enables or disables CPU interrupt level INT77.
0
Level INT7 is disabled
1
Level INT7 is enabled
INT6
Interrupt 6 enable. INT6 enables or disables CPU interrupt level INT6.
0
Level INT6 is disabled
1
Level INT6 is enabled
INT5
Interrupt 5 enable.INT5 enables or disables CPU interrupt level INT5.
0
Level INT5 is disabled
1
Level INT5 is enabled
INT4
Interrupt 4 enable.INT4 enables or disables CPU interrupt level INT4.
0
Level INT4 is disabled
1
Level INT4 is enabled
INT3
Interrupt 3 enable.INT3 enables or disables CPU interrupt level INT3.
0
Level INT3 is disabled
1
Level INT3 is enabled
INT2
Interrupt 2 enable.INT2 enables or disables CPU interrupt level INT2.
0
Level INT2 is disabled
1
Level INT2 is enabled
INT1
Interrupt 1 enable.INT1 enables or disables CPU interrupt level INT1.
0
Level INT1 is disabled
1
Level INT1 is enabled
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
189
Peripheral Interrupt Expansion (PIE)
www.ti.com
1.7.6 External Interrupt Control Registers
Three external interrupts, XINT1 –XINT3 are supported. Each of these external interrupts can be selected
for negative or positive edge triggered and can also be enabled or disabled. The masked interrupts also
contain a 16-bit free running up counter that is reset to zero when a valid interrupt edge is detected. This
counter can be used to accurately time stamp the interrupt.
Table 1-129. Interrupt Control and Counter Registers (not EALLOW Protected)
Name
Address Range
XINT1CR
0x0000 7070
Size (x16)
1
Description
XINT1 configuration register
XINT2CR
0x0000 7071
1
XINT2 configuration register
XINT3CR
0x0000 7072
1
XINT3 configuration register
reserved
0x0000 7073 - 0x0000 7077
5
XINT1CTR
0x0000 7078
1
XINT1 counter register
XINT2CTR
0x0000 7079
1
XINT2 counter register
XINT3CTR
0x0000 707A
1
XINT3 counter register
reserved
0x0000 707B - 0x0000 707E
5
XINT1CR through XINT3CR are identical except for the interrupt number; therefore, Figure 1-105 and
Table 1-130 represent registers for external interrupts 1 through 3 as XINTnCR where n = the interrupt
number.
Figure 1-105. External Interrupt n Control Register (XINTnCR)
15
1
0
Reserved
4
3
Polarity
2
Reserved
Enable
R-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-130. External Interrupt n Control Register (XINTnCR) Field Descriptions
Bits
Field
15-4
Reserved
Reads return zero; writes have no effect.
3-2
Polarity
This read/write bit determines whether interrupts are generated on the rising edge or the
falling edge of a signal on the pin.
1
Reserved
0
Enable
Value
Description
00
Interrupt generated on a falling edge (high-to-low transition)
01
Interrupt generated on a rising edge (low-to-high transition)
10
Interrupt generated on a falling edge (high-to-low transition)
11
Interrupt generated on both a falling edge and a rising edge (high-to-low and low-to-high
transition)
Reads return zero; writes have no effect
This read/write bit enables or disables external interrupt XINTn.
0
Disable interrupt
1
Enable interrupt
For XINT1/XINT2/XINT3, there is also a 16-bit counter that is reset to 0x000 whenever an interrupt edge is
detected. These counters can be used to accurately time stamp an occurrence of the interrupt. XINT1CTR
through XINT3CTR are identical except for the interrupt number; therefore, Figure 1-106 and Table 1-131
represent registers for the external interrupts as XINTnCTR, where n = the interrupt number.
190
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Peripheral Interrupt Expansion (PIE)
www.ti.com
Figure 1-106. External Interrupt n Counter (XINTnCTR) (Address 7078h)
15
0
INTCTR[15-8]
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-131. External Interrupt n Counter (XINTnCTR) Field Descriptions
Bits
Field
Description
15-0
INTCTR
This is a free running 16-bit up-counter that is clocked at the SYSCLKOUT rate. The counter value is
reset to 0x0000 when a valid interrupt edge is detected and then continues counting until the next valid
interrupt edge is detected. When the interrupt is disabled, the counter stops. The counter is a free-running
counter and wraps around to zero when the max value is reached. The counter is a read only register and
can only be reset to zero by a valid interrupt edge or by reset.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
191
VREG/BOR/POR
1.8
www.ti.com
VREG/BOR/POR
Although the core and I/O circuitry operate on two different voltages, these devices have an on-chip
voltage regulator (VREG) to generate the VDD voltage from the VDDIO supply. This eliminates the cost and
area of a second external regulator on an application board. Additionally, internal power-on reset (POR)
and brown-out reset (BOR) circuits monitor both the VDD and VDDIO rails during power-up and run mode,
eliminating a need for any external voltage supervisory circuits.
The VDD BOR is only valid when the VREG is enabled. If VREG is disabled, and external LDO is used for
1.8V, then there is no BOR functIon on VDD.
1.8.1 On-chip Voltage Regulator (VREG)
An on-chip voltage regulator facilitates the powering of the device without adding the cost or board space
of a second external regulator. This linear regulator generates the core VDD voltage from the VDDIO supply.
Therefore, although capacitors are required on each VDD pin to stabilize the generated voltage, power
need not be supplied to these pins to operate the device. Conversely, the VREG can be bypassed or
overdriven, should power or redundancy be the primary concern of the application.
1.8.1.1
Using the on-chip VREG
To utilize the on-chip VREG, the VREGENZ pin should be pulled low and the appropriate recommended
operating voltage should be supplied to the VDDIO and VDDA pins. In this case, the VDD voltage needed by
the core logic will be generated by the VREG. Each VDD pin requires on the order of 1.2 μF capacitance
for proper regulation of the VREG. These capacitors should be located as close as possible to the device
pins. See the TMS320F2806x Piccolo Microcontrollers (literature number SPRS698 ) for the acceptable
range of capacitance.
1.8.1.2
Bypassing the on-chip VREG
To conserve power, it is also possible to bypass the on-chip VREG and supply the core logic voltage to
the VDD pins with a more efficient external regulator. To enable this option, the VREGENZ pin must be
pulled high. See the TMS320F2806x Piccolo Microcontrollers (literature number SPRS698 ) for the
acceptable range of voltage that must be supplied to the VDD pins.
192
System Control and Interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VREG/BOR/POR
www.ti.com
1.8.2 On-chip Power-On Reset (POR) and Brown-Out Reset (BOR) Circuit
Two on-chip supervisory circuits, the power-on reset (POR) and the brown-out reset (BOR) remove the
burden of monitoring the VDD and VDDIO supply rails from the application board. The purpose of the POR is
to create a clean reset throughout the device during the entire power-up procedure. The trip point is a
looser, lower trip point than the BOR, which watches for dips in the VDD or VDDIO rail during device
operation. The POR function is present on both VDD and VDDIO rails at all times. After initial device powerup, the BOR function is present on VDDIO at all times, and on VDD when the internal VREG is enabled
(VREGENZ pin is pulled low). Both functions pull the XRS pin low when one of the voltages is below their
respective trip point. Additionally, when monitoring the VDD rail, the BOR pulls XRS low when VDD is above
its overvoltage trip point. See the device datasheet for the various trip points as well as the delay time
from the removal of the fault condition to enable the BOR function, to the release of the XRS pin.
A bit is provided in the BORCFG register (address 0x985) to disable both the VDD and VDDIO BOR
functions. The default state of this bit is to enable the BOR function. When the BOR functions are
disabled, the POR functions will remain enabled. See Table 1-132 for a description of the BORCFG
register. The BORCFG register state can only be modified by software and the XRS pin signal. A CPU
reset from the debugger will not modify this register.
Figure 1-107. BOR Configuration (BORCFG) Register
15
3
2
1
0
Reserved
Reserved
Reserved
BORENZ
R-0
R-1
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 1-132. BOR Configuration (BORCFG) Field Descriptions
Bits
Field
15-1
Reserved
0
BORENZ
Value
Description
Reserved
BOR enable active low bit.
0
BOR functions are enabled.
1
BOR functions are disabled.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
System Control and Interrupts
193
Chapter 2
SPRUH18G – January 2011 – Revised April 2017
Boot ROM
This chapter is applicable for the code and data stored in the on-chip boot ROM on the TMS320F2806x
Piccolo™ processors, which includes all devices within this family. The boot ROM is factory-programmed
with bootloading software. Bootmode signals (TRST and general purpose I/Os) indicates to the bootloader
software which mode to use on power-up. The boot ROM also contains standard math tables, such as
SIN/COS waveforms, for use in IQ math related algorithms found in the C28x IQMath Library - A Virtual
Floating Point Engine (literature number SPRC087). Described here are the purpose and features of the
bootloader, as well as other contents of the device on-chip boot ROM, and identifies where all of the
information is located within that memory. This chapter also refers to associated code that can be
downloaded via the latest version of controlSuite from the TI website.
194
Topic
...........................................................................................................................
2.1
2.2
2.3
2.4
Boot ROM Memory Map.....................................................................................
Bootloader Features .........................................................................................
Building the Boot Table .....................................................................................
Bootloader Code Overview ................................................................................
Boot ROM
Page
195
202
237
242
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM Memory Map
www.ti.com
2.1
Boot ROM Memory Map
The boot ROM is an 32K x 16 block of read-only memory located at addresses 0x3F 8000 - 0x3F FFFF.
The on-chip boot ROM is factory programmed with boot-load routines and both fixed-point and floatingpoint math tables. These are for use with the C28x IQMath Library - A Virtual Floating Point Engine
(SPRC087) and the C28x FPU Fast RTS Library (SPRC664). This document describes the following
items:
• Bootloader functions
• Version number, release date and checksum
• Reset vector
• Illegal trap vector (ITRAP)
• CPU vector table (used for test purposes only)
• IQmath Tables
• Selected IQmath functions
• Floating Point unit (FPU) math tables
• Flash API library
Figure 2-1 and Figure 2-2 show the memory map of the on-chip boot ROM. This will vary between F2806x
parts and F2806xF and F2806M parts. The memory block is 32Kx16 in size and is located at 0x3F 8000 0x3F FFFF in both program and data space.
Figure 2-1. F2806x Memory Map of On-Chip ROM
On Chip Boot ROM
Data Space
Section Start
Address
Prog Space
0x3F 8000
Reserved
0x3F D860
FPU Math Tables
IQTABLES
0x3F DF000
IQTABLES2
0x3F EA50
IQTABLES3
0x3F EADC
IQ Math Functions
0x3F F3B0
Bootloader Functions
0x3F F7D2
Flash API
0x3FFEB9
ROM API Table
0x3FFFBA
ROM Version
ROM Checksum
Reset Vector
CPU Vector Table
0x3F FFC0
0x3F FFFF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
195
Boot ROM Memory Map
www.ti.com
Figure 2-2. F2806xM/2806xF Memory Map of On-Chip ROM
On Chip Boot ROM
Data Space
Section Start
Address
Prog Space
0x3F 8000
FAST + SPIN libraries
FPU Math Tables
IQTABLES
IQTABLES2
0x3F D590
0x3F DC30
0x3F E780
0x3F E80C
IQTABLES3
IQ Math Functions
0x3F F3B0
Bootloader Functions
0x3F F7D2
Flash API
ROM API Table
0x3FFEB9
0x3FFFBA
ROM Version
ROM Checksum
Reset Vector
CPU Vector Table
196
Boot ROM
0x3F FFC0
0x3F FFFF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM Memory Map
www.ti.com
2.1.1 On-Chip Boot ROM Math Tables
Approximately 4K of the boot ROM is reserved for floating-point and IQ math tables. These tables are
provided to help improve performance and save SARAM space.
The floating-point math tables included in the boot ROM are used by the Texas Instruments™ C28x FPU
Fast RTS Library (SPRC664). The C28x Fast RTS Library is a collection of optimized floating-point math
functions for C programmers of the C28x with floating-point unit. Designers of computationally intensive
real-time applications can achieve execution speeds considerably faster than what are currently available
without having to rewrite existing code. The functions listed in the features section are specifically
optimized for the C28x + FPU controllers. The Fast RTS library accesses the floating-point tables through
the FPUmathTables memory section. If you do not wish to load a copy of these tables into the device, use
the boot ROM memory addresses and label the section as “NOLOAD” as shown in Example 2-1. This
facilitates referencing the look-up tables without actually loading the section to the target.
The following math tables are included in the Boot ROM:
• Sine/Cosine Table, Single-precision Floating point
– Table size: 1282 words
– Contents: 32-bit floating-point samples for one and a quarter period sine wave
• Normalized Arctan Table, Single-precision Floating point
– Table size: 388 words
– Contents 32-bit second order coefficients for line of best fit
• Exp Coefficient Table, Single-precision Floating point
– Table size: 20 words
– Contents: 32-bit coefficients for calculating exp (X) using a Taylor series
Example 2-1. Linker Command File to Access FPU Tables
MEMORY
{
PAGE 0 :
...
FPUTABLES
: origin = 0x3FD860, length = 0x0006A0
...
}
SECTIONS
{
...
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD,
...
}
The fixed-point math tables included in the boot ROM are used by the Texas Instruments™ C28x IQMath
Library - A Virtual Floating Point Engine (SPRC087). The 28x IQmath Library is a collection of highly optimized
and high precision mathematical functions for C/C++ programmers to seamlessly port a floating-point
algorithm into fixed-point code on TMS320C28x devices.
These routines are typically used in computational-intensive real-time applications where optimal execution
speed and high accuracy is critical. By using these routines, you can achieve execution speeds that are
considerably faster than equivalent code written in standard ANSI C language. In addition, by providing readyto-use high precision functions, the TI IQmath Library can shorten significantly your DSP application
development time.
The IQmath library accesses the tables through the IQmathTables and the IQmathTablesRam linker sections.
The IQmathTables section is completely included in the boot ROM. From the IQmathTablesRam section, only
the IQexp table is included and the remainder must be loaded into the device if used. If you do not wish to
load a copy of these tables already included in the ROM into the device, use the boot ROM memory
addresses and label the sections as “NOLOAD” as shown in Example 2-2. This facilitates referencing the lookup tables without actually loading the section to the target. Refer to the IQMath Library documentation for
more information.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
197
Boot ROM Memory Map
www.ti.com
Example 2‑2. Linker Command File to Access IQ Tables
MEMORY
{
PAGE 0 :
...
IQTABLES
: origin = 0x3FDB52, length = 0x000b50
IQTABLES2
: origin = 0x3FE6A2, length = 0x00008C
IQTABLES3
: origin = 0x3FE72E, length = 0x0000AA
...
}
SECTIONS
{
...
IQmathTables : load = IQTABLES, type = NOLOAD, PAGE = 0
IQmathTables2 > IQTABLES2, type = NOLOAD, PAGE = 0
{
IQmath.lib (IQmathTablesRam)
}
IQmathTables3 : load = IQTABLES3, PAGE = 0
{
IQNasinTable.obj (IQmathTablesRam)
}
IQmathTablesRam : load = DRAML1, PAGE = 1
...
}
The following math tables are included in the Boot ROM:
• Sine/Cosine Table, IQ Math Table
– Table size: 1282 words
– Q format: Q30
– Contents: 32-bit samples for one and a quarter period sine wave
This is useful for accurate sine wave generation and 32-bit FFTs. This can also be used for 16-bit math,
just skip over every second value.
• Normalized Inverse Table, IQ Math Table
– Table size: 528 words
– Q format: Q29
– Contents: 32-bit normalized inverse samples plus saturation limits
This table is used as an initial estimate in the Newton-Raphson inverse algorithm. By using a more
accurate estimate the convergence is quicker and hence cycle time is faster.
• Normalized Square Root Table, IQ Math Table
– Table size: 274 words
– Q format: Q30
– Contents: 32-bit normalized inverse square root samples plus saturation
This table is used as an initial estimate in the Newton-Raphson square-root algorithm. By using a more
accurate estimate the convergence is quicker and hence cycle time is faster.
• Normalized Arctan Table, IQ Math Table
– Table size: 452 words
– Q format: Q30
– Contents 32-bit second order coefficients for line of best fit plus normalization table
This table is used as an initial estimate in the Arctan iterative algorithm. By using a more accurate estimate
the convergence is quicker and hence cycle time is faster.
• Rounding and Saturation Table, IQ Math Table
198
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM Memory Map
www.ti.com
Example 2‑2. Linker Command File to Access IQ Tables (continued)
•
•
•
– Table size: 360 words
– Q format: Q30
– Contents: 32-bit rounding and saturation limits for various Q values
Exp Min/Max Table, IQMath Table
– Table size: 120 words
– Q format: Q1 - Q30
– Contents: 32-bit Min and Max values for each Q value
Exp Coefficient Table, IQMath Table
– Table size: 20 words
– Q format: Q31
– Contents: 32-bit coefficients for calculating exp (X) using a taylor series
Inverse Sin/Cos Table, IQ Math Table
– Table size: 85 x 16
– Q format: Q29
– Contents: Coefficient table to calculate the formula f(x) = c4*x^4 + c3*x^3 + c2*x^2 + c1*x + c0.
2.1.2 On-Chip Boot ROM IQmath Functions
The following IQmath functions are included in the Boot ROM:
• IQNatan2 N= 15, 20, 24, 29
• IQNcos N= 15, 20, 24, 29
• IQNdiv N= 15, 20, 24, 29
• IQisqrt N= 15, 20, 24, 29
• IQNmag N= 15, 20, 24, 29
• IQNsin N= 15, 20, 24, 29
• IQNsqrt N= 15, 20, 24, 29
These functions can be accessed using the IQmath boot ROM symbol library included with the boot ROM
source. If this library is linked in the project before the IQmath library, and the linker-priority option is used,
then any math tables and IQmath functions within the boot ROM will be used first. Refer to the IQMath
Library documentation for more information.
2.1.3 On-Chip Flash API
The boot ROM contains the API to program and erase the flash. This flash API can be accessed using the
boot ROM flash API symbol library released with the boot ROM source. Refer to the 2806x Flash API
Library documentation for information on how to use the symbol library.
2.1.4 CPU Vector Table
A CPU vector table resides in boot ROM memory from address 0x3F 8000 - 0x3F FFFF. This vector table
is active after reset when VMAP = 1, ENPIE = 0 (PIE vector table disabled).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
199
Boot ROM Memory Map
www.ti.com
Figure 2-3. Vector Table Map
Reserved section
+
Math tables
0x3F 8000
Bootloader
functions
64 x 16
Reset vector
CPU vector table
0x3F FFC0
0x3F FFFF
Reset fetched from here when
VMAP=1
Other vectors fetched from here when
VMAP=1, ENPIE=0
A
The VMAP bit is located in Status Register 1 (ST1). VMAP is alwatys 1 on reset. It can be changed after reset by
software, however, the normal operating mode will be to leave VMAP=1.
B
The ENPIE bit is located in the PIECTRL register. The default state of this bit at reset is 0, which disables the
Peripheral Interrupt Expansion block (PIE).
The only vector that will normally be handled from the internal boot ROM memory is the reset vector
located at 0x3F FFC0. The reset vector is factory programmed to point to the InitBoot function stored in
the boot ROM. This function starts the boot load process. A series of checking operations is performed on
TRST and General-Purpose I/O (GPIO I/O) pins to determine which boot mode to use. This boot mode
selection is described in Section 2.2.9 of this document.
The remaining vectors in the boot ROM are not used during normal operation. After the boot process is
complete, you should initialize the Peripheral Interrupt Expansion (PIE) vector table and enable the PIE
block. From that point on, all vectors, except reset, will be fetched from the PIE module and not the CPU
vector table shown in Table 2-1.
For TI silicon debug and test purposes the vectors located in the boot ROM memory point to locations in
the M0 SARAM block as described in Table 2-1. During silicon debug, you can program the specified
locations in M0 with branch instructions to catch any vectors fetched from boot ROM. This is not required
for normal device operation.
200 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM Memory Map
www.ti.com
Table 2-1. Vector Locations
Vector
Location in
Boot ROM
Contents
(i.e., points to)
Vector
Location in
Boot ROM
Contents
(i.e., points to)
RESET
0x3F FFC0
InitBoot
RTOSINT
0x3F FFE0
0x00 0060
INT1
0x3F FFC2
0x00 0042
Reserved
0x3F FFE2
0x00 0062
INT2
0x3F FFC4
0x00 0044
NMI
0x3F FFE4
0x00 0064
INT3
0x3F FFC6
0x00 0046
ILLEGAL
0x3F FFE6
ITRAPIsr
INT4
0x3F FFC8
0x00 0048
USER1
0x3F FFE8
0x00 0068
INT5
0x3F FFCA
0x00 004A
USER2
0x3F FFEA
0x00 006A
INT6
0x3F FFCC
0x00 004C
USER3
0x3F FFEC
0x00 006C
INT7
0x3F FFCE
0x00 004E
USER4
0x3F FFEE
0x00 006E
INT8
0x3F FFD0
0x00 0050
USER5
0x3F FFF0
0x00 0070
INT9
0x3F FFD2
0x00 0052
USER6
0x3F FFF2
0x00 0072
INT10
0x3F FFD4
0x00 0054
USER7
0x3F FFF4
0x00 0074
INT11
0x3F FFD6
0x00 0056
USER8
0x3F FFF6
0x00 0076
INT12
0x3F FFD8
0x00 0058
USER9
0x3F FFF8
0x00 0078
INT13
0x3F FFDA
0x00 005A
USER10
0x3F FFFA
0x00 007A
INT14
0x3F FFDC
0x00 005C
USER11
0x3F FFFC
0x00 007C
DLOGINT
0x3F FFDE
0x00 005E
USER12
0x3F FFFE
0x00 007E
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
201
Bootloader Features
2.2
www.ti.com
Bootloader Features
This section describes in detail the boot mode selection process, as well as the specifics of the bootloader
operation.
2.2.1 Bootloader Functional Operation
The bootloader uses the state of TRST and two GPIO signals to determine which boot mode to use. The
boot mode selection process and the specifics of each bootloader are described in the remainder of this
document. Figure 2-4 shows the basic bootloader flow:
Figure 2-4. Bootloader Flow Diagram
Reset
(Power-On Reset or
Warm Reset)
Silicon Sets the Following:
PIE Disabled (ENPIE=0)
VMAP=1
OBJMODE=0
AMODE=0
M0M1MAP=1
Emulator Not Connected
TRST=1?
Determine Boot Mode
Based on 2 GPIO Pins
and 2 OTP Locations
(OTP_KEY and
OTP_BMODE)
No
Yes
Boot ROM
Emulator Connected
Reset Vector Fetched
from Boot ROM Address
0x3F FFC0
Determine Boot Mode
Based on 2 RAM
Locations
(EMU_KEY and
EMU_BMODE)
Jump to InitBoot Function
to Start Boot Process
Begin Execution at Entry
Point as Determined by
Selected Boot Modes
Call Device_cal()
PLLSTS[DIVSEL]=3
Dummy Read of CSM
Password Locations
The reset vector in boot ROM redirects program execution to the InitBoot function. After performing device
initialization the bootloader will check the state of the TRST pin to determine if an emulation pod is
connected.
• Emulation Boot (Emulation Pod is connected and TRST = 1)
In emulation boot, the boot ROM will check two SARAM locations called EMU_KEY and EMU_BMODE for
a boot mode. If the contents of either location are invalid, then the "wait" boot mode is used. All boot mode
options can be accessed by modifying the value of EMU_BMODE through the debugger when performing
an emulation boot.
Stand-alone Boot (TRST = 0)
If the device is in stand-alone boot mode, then the state of two GPIO pins are used to determine which
boot mode execute. Options include: GetMode, wait, SCI, and parallel I/O. Each of the modes is described
in detail in Table 2-4. The GetMode option by default boots to flash but can be customized by
programming two values into OTP to select another boot loader.
These boot modes mentioned here are discussed in detail in Section 2.2.9.
After the selection process and if the required boot loading is complete, the processor will continue
execution at an entry point determined by the boot mode selected. If a bootloader was called, then the
input stream loaded by the peripheral determines this entry address. This data stream is described in
Section 2.2.11. If, instead, you choose to boot directly to Flash, OTP, or SARAM, the entry address is
predefined for each of these memory blocks.
202
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
The following sections discuss in detail the different boot modes available and the process used for
loading data code into the device.
2.2.2
Bootloader Device Configuration
At reset, any 28x CPU-based device is in 27x object-compatible mode. It is up to the application to place
the device in the proper operating mode before execution proceeds.
On the 28x devices, when booting from the internal boot ROM, the device is configured for 28x operating
mode by the boot ROM software. You are responsible for any additional configuration required.
For example, if your application includes C2xLP source, then you are responsible for configuring the
device for C2xLP source compatibility prior to execution of code generated from C2xLP source.
The configuration required for each operating mode is summarized in Table 2-2.
Table 2-2. Configuration for Device Modes
C27x Mode (Reset)
28x Mode
C2xLP Source
Compatible Mode
OBJMODE
0
1
1
AMODE
0
0
1
PAGE0
0
0
0
M0M1MAP (1)
1
1
1
Other Settings
(1)
SXM = 1, C = 1, SPM = 0
Normally for C27x compatibility, the M0M1MAP would be 0. On these devices, however, it is tied off
high internally; therefore, at reset, M0M1MAP is always configured for 28x mode.
2.2.3 PLL Multiplier and DIVSEL Selection
The Boot ROM changes the PLL multiplier (PLLCR) and divider (PLLSTS[DIVSEL]) bits as follows:
• All boot modes:
PLLCR is not modified. PLLSTS[DIVSEL] is set to 3 for SYSCLKOUT = CLKIN/1. This increases the
speed of the loaders.
NOTE: The PLL multiplier (PLLSTS) and divider (PLLSTS[DIVSEL]) are not affected by a reset from
the debugger. Therefore, a boot that is initialized from a reset from Code Composer Studio™
may be at a different speed than booting by pulling the external reset line (XRS) low.
NOTE: The reset value of PLLSTS[DIVSEL] is 0. This configures the device for SYSCLKOUT =
CLKIN/4 . The boot ROM will change this to SYSCLKOUT = CLKIN/1 to improve
performance of the loaders. PLLSTS[DIVSEL] is left in this state when the boot ROM exits
and it is up to the application to change it before configuring the PLLCR register.
NOTE: The boot ROM leaves PLLSTS[DIVSEL] in the CLKIN/1 state when the boot ROM exits. This
is not a valid configuration if the PLL is used. Thus the application must change it before
configuring the PLLCR register.
2.2.4 Watchdog Module
When branching directly to Flash, OTP, or M0 single-access RAM (SARAM) the watchdog is not touched.
In the other boot modes, the watchdog is disabled before booting and then re-enabled and cleared before
branching to the final destination address. In the case of an incorrect key value passed to the loader, the
watchdog will be enabled and the device will boot to flash.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
203
Bootloader Features
www.ti.com
2.2.5 Taking an ITRAP Interrupt
If an illegal opcode is fetched, the 28x will take an ITRAP (illegal trap) interrupt. During the boot process,
the interrupt vector used by the ITRAP is within the CPU vector table of the boot ROM. The ITRAP vector
points to an interrupt service routine (ISR) within the boot ROM named ITRAPIsr(). This interrupt service
routine attempts to enable the watchdog and then loops forever until the processor is reset. This ISR will
be used for any ITRAP until the user's application initializes and enables the peripheral interrupt
expansion (PIE) block. Once the PIE is enabled, the ITRAP vector located within the PIE vector table will
be used.
2.2.6 Internal Pullup Resisters
Each GPIO pin has an internal pullup resistor that can be enabled or disabled in software. The pins that
are read by the boot mode selection code to determine the boot mode selection have pull-ups enabled
after reset by default. In noisy conditions it is still recommended that you configure each of the boot mode
selection pins externally.
The peripheral bootloaders all enable the pullup resistors for the pins that are used for control and data
transfer. The bootloader leaves the resistors enabled for these pins when it exits. For example, the SCI-A
bootloader enables the pullup resistors on the SCITXA and SCIRXA pins. It is your responsibility to
disable them, if desired, after the bootloader exits.
2.2.7 PIE Configuration
The boot modes do not enable the PIE. It is left in its default state, which is disabled.
The boot ROM does, however, use the first six locations within the PIE vector table for emulation boot
mode information and Flash API variables. These locations are not used by the PIE itself and not used by
typical applications.
NOTE: If you are porting code from another 28x processor, check to see if the code initializes the
first six locations in the PIE vector table to some default value. If it does, then consider
modifying the code to not write to these locations so the EMU boot mode will not be over
written during debug. Refer to the 2806x C/C++ Header Files and Peripheral Examples.
2.2.8 Reserved Memory
The M0 memory block address range 0x0002 - 0x004E is reserved for the stack and .ebss code sections
during the boot-load process. If code is bootloaded into this region there is no error checking to prevent it
from corrupting the boot ROM stack. Address 0x0000-0x0001 is the boot to M0 entry point. This should be
loaded with a branch instruction to the start of the main application when using "boot to SARAM" mode.
Figure 2-5. Boot ROM Stack
0x004E
0x0002 Boot ROM Stack
0x0000 Boot to M0 entry point
Boot ROM loaders on older C28x devices had the stack in M1 memory.
NOTE: If code or data is bootloaded into the address range address range 0x0002 - 0x004E there is
no error checking to prevent it from corrupting the boot ROM stack.
204
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
In addition, the first 6 locations of the PIE vector table are used by the boot ROM. These locations are not
used by the PIE itself and not used by typical applications. These locations are used as SARAM by the
boot ROM and will not effect the behavior of the PIE. Note: Some example code from previous devices
may initialize these locations. This will overwrite any boot mode you have populated. These locations are:
Table 2-3. PIE Vector SARAM Locations Used by the Boot ROM
Location
0x0D00 x
0x0D01 x
0x0D02 x
0x0D04 x
16
16
32
32
Name
EMU_KEY
EMU_BMODE
Flash_CallbackPtr
Flash_CPUScaleFactor
Note
Used for emulation boot
Used for emulation boot
Used by the flash API
Used by the flash API
2.2.9 Bootloader Modes
To accommodate different system requirements, the boot ROM offers a variety of boot modes. This
section describes the different boot modes and gives brief summary of their functional operation. The
states of TRST and two GPIO pins are used to determine the desired boot mode as shown in Table 2-4.
Table 2-4. Boot Mode Selection
GPIO37 TDO
GPIO34
CMP2OUT
TRST
Mode EMU
x
x
1
Emulation Boot
Mode 0
0
0
0
Parallel I/O
Mode 1
0
1
0
SCI
Mode 2
1
0
0
Wait
Mode 3
1
1
0
GetMode
NOTE: The default behavior of the GetMode option on unprogrammed devices is to boot to flash.
This behavior can be changed by programming two locations in the OTP as shown in
Table 2-6. In addition, if these locations are used by an application, then GetMode will jump
to flash as long as OTP_KEY !=0x005A and/or OTP_BMODE is not a valid value.
NOTE: This device does not support the hardware wait-in-reset mode that is available on other
C2000 parts. The "wait" boot mode can be used to emulate a wait-in-reset mode. The "wait"
mode is very important for debugging devices with the CSM password programmed (i.e.,
secured). When the device is powered up, the CPU will start running and may execute an
instruction that performs an access to a protected emulation code security logic (ECSL) area.
If this happens, the ECSL will trip and cause the emulator connection to be cut. The "wait"
mode keeps this from happening by looping within the boot ROM until an emulator is
connected.
Figure 2-6 shows an overview of the boot process. Each step is described in greater detail in following
sections.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
205
Bootloader Features
www.ti.com
Figure 2-6. Boot ROM Function Overview
Reset
InitBoot
Call
SelectBootMode
Stand-Alone Boot
TRST==0?
Yes
Read the state of I/O
pins to determine
what Boot Mode
is desired
No
Emulation Boot
Read the EMU_KEY and
EMU_BMODE locations
to determine what boot
mode is desired
Call
Get_Mode()
?
Yes
Read OTP_KEY and
OTP_BMODE to
determine what Boot
Mode is desired
No
Call
Boot Loader
?
Yes
EntryPoint
determined directly
by the Boot Mode
Call Boot Loader
SCI, SPI, I2C, CAN, or
Parallel I/O
Read EntryPoint and
load the data
Call ExitBoot
Begin execution
at EntryPoint
206 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-5. Valid EMU_KEY and EMU_BMODE Values
Address
Name
Value
if TRST == 1 and EMU_KEY == 0x55AA,
0x0D00
EMU_KEY
then check EMU_BMODE for the boot mode,
else { Invalid EMU_KEY
Boot mode = WAIT_BOOT }
0x0D01
EMU_BMODE
0x0000
Boot mode = PARALLEL_BOOT
0x0001
Boot mode = SCI_BOOT
0x0002
Boot mode = WAIT_BOOT
0x0003
Boot mode = GET_BOOT
(GetMode from OTP_KEY/OTP_BMODE)
0x0004
Boot mode = SPI_BOOT
0x0005
Boot mode = I2C_BOOT
0x0006
Boot mode = OTP_BOOT
0x0007
Boot mode = CAN_BOOT
0x000A
Boot mode = RAM_BOOT
0x000B
Boot mode = FLASH_BOOT
Other
Boot mode = WAIT_BOOT
Table 2-7 shows the expanded emulation boot mode table.
Here are two examples of an emulation boot:
Example 2-3. Debug an application that loads through the SCI at boot.
To
•
•
•
•
•
•
debug an application that loads through the SCI at boot, follow these steps:
Configure the pins for mode 1, SCI, and initiate a power-on-reset.
The boot ROM will detect TRST = 0 and will use the two pins to determine SCI boot.
The boot ROM populates EMU_KEY with 0x55AA and EMU_BMODE with SCI_BOOT.
The boot ROM sits in the SCI loader waiting for data.
Connect the debugger. TRST will go high.
Perform a debugger reset and run. The boot loader will use the EMU_BMODE and boot to SCI.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
207
Bootloader Features
www.ti.com
Example 2-4. You want to connect your emulator, but do not want application code to start executing
before the emulator connects.
To
•
•
•
•
•
•
•
connect your emulator, but keep application code from executing before the emulator connects:
Configure GPIO37 and GPIO34 pins for mode 2, WAIT, and initiate a power-on-reset.
The boot ROM will detect TRST = 0 and will use the two pins to determine wait boot.
The boot ROM populates EMU_KEY with 0x55AA and EMU_BMODE with WAIT_BOOT.
The boot ROM sits in the wait routine.
Connect the debugger; TRST will go high.
Modify the EMU_BMODE via the debugger to boot to FLASH or other desired boot mode.
Perform a debugger reset and run. The boot loader will use the EMU_BMODE and boot to the desired
loader or location.
NOTE:
The behavior of emulators with regards to TRST differs. Some emulators pull TRST
high only when Code Composer Studio is in a connected state. For these emulators, if CCS
is disconnected TRST will return to a low state. With CCS disconnected, GPIO34 and
GPIO37 will be used to determine the boot mode. For these emulators, this is true even if the
emulator pod is physically connected.
Some emulators pull TRST high when CCS connects and leave it high as long as the power
sense pin is active. TRST will remain high even after CCS disconnects. For these emulators,
the EMU mode stored in RAM will be used unless the target is power cycled, causing the
state of TRST to reset back to a low state.
The following boot modes are invoked by the state of the boot mode pins if an emulator is not connected:
• Wait
This devices does not support the hardware wait-in-reset mode that is available on other C2000 parts.
The "wait" boot mode can be used to emulate a wait-in-reset mode. The "wait" mode is very important
for debugging devices with the CSM password programmed (i.e., secured). When the device is
powered up, the CPU will start running and may execute an instruction that performs an access to a
emulation code security logic (ECSL) protected area. If this happens, the ECSL will trip and cause the
emulator connection to be cut. The "wait" mode keeps this from happening by looping within the boot
ROM until an emulator is connected
This mode writes WAIT_BOOT to EMU_BMODE. Once the emulator is connected you can then
manually populate the EMU_BMODE with the appropriate boot mode for the debug session.
• SCI
In this mode, the boot ROM will load code to be executed into on-chip memory via the SCI-A port.
When invoked as a stand-alone mode, the boot ROM writes SCI_BOOT to EMU_BMODE.
• Parallel I/O 8-bit
The parallel I/O boot mode is typically used only by production flash programmers.
• GetMode
The GetMode option uses two locations within the USER OTP to determine the boot mode. On an unprogrammed device, this mode will always boot to flash. On a programmed device, you can choose to
program these locations to change the behavior. If either of these locations is not an expected value,
then boot to flash will be used.
The last six words of user OTP region (0x3D7BFA to 0x3D7BFF) are reserved for the GetMode
function usage.
The values used by the Get_Mode() function are shown in Table 2-6.
208
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-6. OTP Values for GetMode
Address
Name
Value
GetMode will be entered if one of the two conditions is true:
Case 1: TRST == 0, GPIO34 == 1 and GPIO37 == 1
0x3D7BFB
OTP_KEY
Case 2: TRST == 1, EMU_KEY == 0x55AA and EMU_BMODE == GET_BOOT
GetMode first checks the value of OTP_KEY:
if OTP_KEY == 0x005A, then check OTP_BMODE for the boot mode
else { Invalid key: Boot mode = FLASH_BOOT }
0x3D7BFE
OTP_BMODE
0x0001
Boot mode = SCI_BOOT
0x0004
Boot mode = SPI_BOOT
0x0005
Boot mode = I2C_BOOT
0x0006
Boot mode = OTP_BOOT
0x0007
Boot mode = CAN_BOOT
Other
Boot mode = FLASH_BOOT
The following boot modes are available through the emulation boot option. Some are also
available as a programmed get mode option.
• Jump to M0 SARAM
This mode is only available in emulation boot. The boot ROM software configures the device for 28x
operation and branches directly to address 0X000000. This is the first address in the M0 memory
block.
• Jump to branch instruction in flash memory.
Jump to flash is the default behavior of the Get Mode boot option. Jump to flash is also available as an
emulation boot option.
In this mode, the boot ROM software configures the device for 28x operation and branches directly to
location 0x3F 7FF6. This location is just before the 128-bit code security module (CSM) password
locations. You are required to have previously programmed a branch instruction at location 0x3F 7FF6
that will redirect code execution to either a custom boot-loader or the application code.
• Jump to OTP Memory
Jump to OTP is available only as an option programmed into OTP_BMODE via the get mode function.
With the emulator connected, jump to OTP can also be achieved by manually writing the OTP_BOOT
value to EMU_BMODE. The entry point location is 0x3D 7800.
• SPI EEPROM or Flash boot mode (SPI-A)
Jump to SPI is available in stand-alone mode as a programmed Get Mode option. That is, to configure
a device for SPI boot in stand-alone mode, the OTP_KEY and OTP_BMODE locations must be
programmed for SPI_BOOT and the boot mode pins configured for the Get Mode boot option.
SCI boot is also available as an emulation boot option.
In this mode, the boot ROM will load code and data into on-chip memory from an external SPI
EEPROM or SPI flash via the SPI-A port.
• I2C-A boot mode (I2C-A)
Jump to I2C is available in stand-alone mode as a programmed Get mode option. That is, to configure
a device for I2C boot in stand-alone mode, the OTP_KEY and OTP_BMODE locations must be
programmed for I2C_BOOT and the boot mode pins configured for the Get Mode boot option.
I2C boot is also available as an emulation boot option.
In this mode, the boot ROM will load code and data into on-chip memory from an external serial
EEPROM or flash at address 0x50 on the I2C-A bus.
• eCAN-A boot mode (eCAN-A)
Jump to eCAN is available in stand-alone mode as a programmed Get mode option. That is, to
configure a device for eCAN boot in stand-alone mode, the OTP_KEY and OTP_BMODE locations
must be programmed for CAN_BOOT and the boot mode pins configured for the Get Mode boot
option. eCAN boot is also available as an emulation boot option. In this mode, the eCAN-A peripheral
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
209
Bootloader Features
www.ti.com
is used to transfer data and code into the on-chip memory using eCAN-A mailbox 1. The transfer is an
8-bit data stream with two 8-bit values being transferred during each communication.
Table 2-7. Emulation Boot modes (TRST = 1)
TRST
1
(1)
(2)
GPIO37
TDO
x
(2)
EMU
KEY
EMU
BMODE
OTP
KEY
OTP
BMODE
GPIO34
Read
from
0x0D00
Read
from
0x0D01
Read
from
0x3D7BFB
Read
from
0x3D7BFE
x
!=0x55AA
x
x
x
Wait
-
-
0x55AA
0x0000
x
x
Parallel I/O
-
-
0x0001
x
x
SCI
-
-
0x0002
x
x
Wait
-
-
0x0003
!= 0x005A
x
GetMode: Flash
-
-
0x005A
0x0001
GetMode: SCI
-
-
0x000B
GetMode: Flash
-
-
0x0004
GetMode: SPI
-
-
0x0005
GetMode: I2C
-
-
0x0006
GetMode: OTP
-
-
0x0007
GetMode: CAN
-
-
Other
GetMode: Flash
-
-
Boot Mode
Selected (1)
EMU
KEY
EMU
BMODE
Written
to
0x0D00
Written
to
0x0D01
0x0004
x
x
SPI
-
-
0x0005
x
x
I2C
-
-
0x0006
x
x
OTP
-
-
0x0007
x
x
CAN
-
-
0x000A
x
x
Boot to RAM
-
-
0x000B
x
x
Boot to FLASH
-
-
Other
x
x
Wait
-
-
Get Mode indicated the boot mode was derived from the values programmed in the OTP_KEY and OTP_BMODE locations.
x = don't care.
Table 2-8. Stand-Alone Boot Modes with (TRST = 0)
EMU
KEY
EMU
BMODE
OTP
KEY
OTP
BMODE
Read
from
0x0D00
Read
from
0x0D01
Read
from
0x3D7BFB
Read
from
0x3D7BFE
(2)
EMU
BMODE
Written
to
0x0D00
Written
to
0x0D01
TRST
GPIO37
TDO
GPIO34
0
0
0
x
x
x
Parallel I/O
0x55AA
0x0000
0
0
1
x
x
x
x
SCI
0x55AA
0x0001
0
1
0
x
x
x
x
Wait
0x55AA
0x0002
!=0x005A
x
GetMode: Flash
0x0001
GetMode: SCI
0x000B
GetMode: Flash
0x0004
GetMode: SPI
0x0005
GetMode: I2C
0x55AA
0x0003
0x0006
GetMode: OTP
0x0007
GetMode: CAN
Other
GetMode: Flash
0
(1)
(2)
(3)
1
1
x
(3)
x
x
0x005A
Boot Mode
Selected (1)
(2)
EMU
KEY
Get Mode indicates the boot mode was derived from the values programmed in the OTP_KEY and OTP_BMODE locations.
The boot ROM will write this value to EMU_KEY and EMU_BMODE. This value can be used or overwritten by the user if a
debugger is connected.
x = don't care.
210 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
2.2.10 Device_Cal
The Device_cal() routine is programmed into TI reserved memory by the factory. The boot ROM
automatically calls the Device_cal() routine to calibrate the internal oscillators and ADC with device
specific calibration data. During normal operation, this process occurs automatically and no action is
required by the user.
If the boot ROM is bypassed by Code Composer Studio during the development process, then the
calibration must be initialized by application. For working examples, see the system initialization in the
C280 3x C/C++ Header Files and Peripheral Examples.
NOTE: Failure to initialize these registers will cause the oscillators and ADC to function out of
specification. The following three steps describe how to call the Device_cal routine from an
application.
Step 1: Create a pointer to the Device_cal function as shown in Example 2-5. This #define is included in
the Header Files and Peripheral Examples.
Step 2: Call the function pointed to by Device_cal() as shown in Example 2-5. The ADC clocks must be
enabled before making this call.
Example 2-5. Calling the Device_cal() function
//Device call is a pointer to a function
//that begins at the address shown
# define Device_cal (void(*)(void))0x3D7C80
... ...
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
(*Device_cal)();
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0;
EDIS;
...
2.2.11
Bootloader Data Stream Structure
The following two tables and associated examples show the structure of the data stream incoming to the
bootloader. The basic structure is the same for all the bootloaders and is based on the C54x source data
stream generated by the C54x hex utility. The C28x hex utility (hex2000.exe) has been updated to support
this structure. The hex2000.exe utility is included with the C2000 code generation tools. All values in the
data stream structure are in hex.
The first 16-bit word in the data stream is known as the key value. The key value indicates tol the
bootloader the width of the incoming stream: 8 or 16 bits. Note that not all bootloaders will accept both 8
and 16-bit streams. Please refer to the detailed information on each loader for the valid data stream width.
For an 8-bit data stream, the key value is 0x08AA and for a 16-bit stream it is 0x10AA. If a bootloader
receives an invalid key value, then the load is aborted.
The next eight words are used to initialize register values or otherwise enhance the bootloader by passing
values to it. If a bootloader does not use these values then they are reserved for future use and the
bootloader simply reads the value and then discards it. Currently only the SPI and I2C and parallel
bootloaders use these words to initialize registers.
The tenth and eleventh words comprise the 22-bit entry point address. This address is used to initialize
the PC after the boot load is complete. This address is most likely the entry point of the program
downloaded by the bootloader.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
211
Bootloader Features
www.ti.com
The twelfth word in the data stream is the size of the first data block to be transferred. The size of the
block is defined for both 8-bit and 16-bit data stream formats as the number of 16-bit words in the block.
For example, to transfer a block of 20 8-bit data values from an 8-bit data stream, the block size would be
0x000A to indicate 10 16-bit words.
The next two words indicate to the loader the destination address of the block of data. Following the size
and address will be the 16-bit words that makeup that block of data.
This pattern of block size/destination address repeats for each block of data to be transferred. Once all the
blocks have been transferred, a block size of 0x0000 signals to the loader that the transfer is complete. At
this point the loader will return the entry point address to the calling routine which in turn will cleanup and
exit. Execution will then continue at the entry point address as determined by the input data stream
contents.
212 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-9. General Structure Of Source Program Data Stream In 16-Bit Mode
Word
Contents
1
10AA (KeyValue for memory width = 16bits)
2
Register initialization value or reserved for future use
3
Register initialization value or reserved for future use
4
Register initialization value or reserved for future use
5
Register initialization value or reserved for future use
6
Register initialization value or reserved for future use
7
Register initialization value or reserved for future use
8
Register initialization value or reserved for future use
9
Register initialization value or reserved for future use
10
Entry point PC[22:16]
11
Entry point PC[15:0]
12
Block size (number of words) of the first block of data to load. If the block size is 0, this indicates the end of the
source program. Otherwise another section follows.
13
Destination address of first block Addr[31:16]
14
Destination address of first block Addr[15:0]
15
First word of the first block in the source being loaded
...
...
...
...
.
Last word of the first block of the source being loaded
.
Block size of the 2nd block to load.
.
Destination address of second block Addr[31:16]
.
Destination address of second block Addr[15:0]
.
First word of the second block in the source being loaded
.
…
.
Last word of the second block of the source being loaded
.
Block size of the last block to load
.
Destination address of last block Addr[31:16]
.
Destination address of last block Addr[15:0]
.
First word of the last block in the source being loaded
...
...
...
...
n
Last word of the last block of the source being loaded
n+1
Block size of 0000h - indicates end of the source program
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
213
Bootloader Features
www.ti.com
Example 2-6. Data Stream Structure 16-bit
10AA
; 0x10AA 16-bit key value
0000 0000 0000 0000 ; 8 reserved words
0000 0000 0000 0000
003F 8000
; 0x003F8000 EntryAddr, starting point after boot load completes
0005
; 0x0005 - First block consists of 5 16-bit words
003F 9010
; 0x003F9010 - First block will be loaded starting at 0x3F9010
0001 0002 0003 0004 ; Data loaded = 0x0001 0x0002 0x0003 0x0004 0x0005
0005
0002
; 0x0002 - 2nd block consists of 2 16-bit words
003F 8000
; 0x003F8000 - 2nd block will be loaded starting at 0x3F8000
7700 7625
; Data loaded = 0x7700 0x7625
0000
; 0x0000 - Size of 0 indicates end of data stream
After load has completed the following memory values will have been initialized as follows:
Location
Value
0x3F9010
0x0001
0x3F9011
0x0002
0x3F9012
0x0003
0x3F9013
0x0004
0x3F9014
0x0005
0x3F8000
0x7700
0x3F8001
0x7625
PC Begins execution at 0x3F8000
In 8-bit mode, the least significant byte (LSB) of the word is sent first followed by the most significant byte
(MSB). For 32-bit values, such as a destination address, the most significant word (MSW) is loaded first,
followed by the least significant word (LSW). The bootloaders take this into account when loading an 8-bit
data stream.
214 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-10. LSB/MSB Loading Sequence in 8-Bit Data Stream
Byte
Contents
LSB (First Byte of 2)
MSB (Second Byte of 2)
1
2
LSB: AA (KeyValue for memory width = 8 bits)
MSB: 08h (KeyValue for memory width = 8 bits)
3
4
LSB: Register initialization value or reserved
MSB: Register initialization value or reserved
5
6
LSB: Register initialization value or reserved
MSB: Register initialization value or reserved
7
8
LSB: Register initialization value or reserved
MSB: Register initialization value or reserved
...
...
...
...
...
...
...
...
17
18
LSB: Register initialization value or reserved
MSB: Register initialization value or reserved
19
20
LSB: Upper half of Entry point PC[23:16]
MSB: Upper half of entry point PC[31:24] (Always 0x00)
21
22
LSB: Lower half of Entry point PC[7:0]
MSB: Lower half of Entry point PC[15:8]
23
24
LSB: Block size in words of the first block to load. If the block
size is 0, this indicates the end of the source program.
Otherwise another block follows. For example, a block size of
0x000A would indicate 10 words or 20 bytes in the block.
MSB: block size
25
26
LSB: MSW destination address, first block Addr[23:16]
MSB: MSW destination address, first block Addr[31:24]
27
28
LSB: LSW destination address, first block Addr[7:0]
MSB: LSW destination address, first block Addr[15:8]
29
30
LSB: First word of the first block being loaded
MSB: First word of the first block being loaded
...
...
...
...
...
...
...
...
.
.
LSB: Last word of the first block to load
MSB: Last word of the first block to load
.
.
LSB: Block size of the second block
MSB: Block size of the second block
.
.
LSB: MSW destination address, second block Addr[23:16]
MSB: MSW destination address, second block Addr[31:24]
.
.
LSB: LSW destination address, second block Addr[7:0]
MSB: LSW destination address, second block Addr[15:8]
.
.
LSB: First word of the second block being loaded
MSB: First word of the second block being loaded
...
...
...
...
...
...
...
...
.
.
LSB: Last word of the second block
MSB: Last word of the second block
.
.
LSB: Block size of the last block
MSB: Block size of the last block
.
.
LSB: MSW of destination address of last block Addr[23:16]
MSB: MSW destination address, last block Addr[31:24]
.
.
LSB: LSW destination address, last block Addr[7:0]
MSB: LSW destination address, last block Addr[15:8]
.
.
LSB: First word of the last block being loaded
MSB: First word of the last block being loaded
...
...
...
...
...
...
...
...
.
.
LSB: Last word of the last block
MSB: Last word of the last block
n
n+1
LSB: 00h
MSB: 00h - indicates the end of the source
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
215
Bootloader Features
www.ti.com
Example 2-7. Data Stream Structure 8-bit
AA
00
00
00
00
3F
05
3F
01
02
03
04
05
02
3F
00
25
00
08
00
00
00
00
00
00
00
00
00
00
00
00
00
00
77
76
00
00
00
00
00
00
00
00
00
00
80
10 90
00 80
; 0x08AA 8-bit key value
; 8 reserved words
;
;
;
;
0x003F8000 EntryAddr, starting point after boot load completes
0x0005 - First block consists of 5 16-bit words
0x003F9010 - First block will be loaded starting at 0x3F9010
Data loaded = 0x0001 0x0002 0x0003 0x0004 0x0005
; 0x0002 - 2nd block consists of 2 16-bit words
; 0x003F8000 - 2nd block will be loaded starting at 0x3F8000
; Data loaded = 0x7700 0x7625
; 0x0000 - Size of 0 indicates end of data stream
After load has completed the following memory values will have been initialized as follows:
Location
Value
0x3F9010
0x0001
0x3F9011
0x0002
0x3F9012
0x0003
0x3F9013
0x0004
0x3F9014
0x0005
0x3F8000
0x7700
0x3F8001
0x7625
PC Begins execution at 0x3F8000
2.2.12 Basic Transfer Procedure
Figure 2-7 illustrates the basic process a bootloader uses to determine whether 8-bit or 16-bit data stream
has been selected, transfer that data, and start program execution. This process occurs after the
bootloader finds the valid boot mode selected by the state of TRST and GPIO pins.
The loader first compares the first value sent by the host against the 16-bit key value of 0x10AA. If the
value fetched does not match then the loader will read a second value. This value will be combined with
the first value to form a word. This will then be checked against the 8-bit key value of 0x08AA. If the
loader finds that the header does not match either the 8-bit or 16-bit key value, or if the value is not valid
for the given boot mode then the load will abort.
216
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Figure 2-7. Bootloader Basic Transfer Procedure
Read first word (W1)
W1=
0x10AA
?
No
Read second word
(W2) and discard
upper 8-bits
Yes
W2:W1=
0x08AA
?
16-bit data size
Read EntryPoint address
8-bit
DataSize
No
Data format error
Return flash
entry point
Yes
Read BlockSize (R)
R=0
?
Yes
Return
EntryPoint
No
Read BlockAddress
Transfer R words of
data from source to
destination
8-bit and 16-bit transfers are not valid for all boot modes. If only one mode is valid, then this decision tree is skipped
and the key value is only checked for correctness. See the info specific to a particular bootloader for any limitations.
In 8-bit mode, the LSB of the 16-bit word is read first followed by the MSB.
2.2.13 InitBoot Assembly Routine
The first routine called after reset is the InitBoot assembly routine. This routine initializes the device for
operation in C28x object mode. InitBoot also performs a dummy read of the Code Security Module (CSM)
password locations. If the CSM passwords are erased (all 0xFFFFs) then this has the effect of unlocking
the CSM. Otherwise the CSM will remain locked and this dummy read of the password locations will have
no effect. This can be useful if you have a new device that you want to boot load.
After the dummy read of the CSM password locations, the InitBoot routine calls the SelectBootMode
function. This function determines the type of boot mode desired by the state of TRST andcertain GPIO
pins. This process is described in Section 2.2.14. Once the boot is complete, the SelectBootMode function
passes back the entry point address (EntryAddr) to the InitBoot function. EntryAddr is the location where
code execution will begin after the bootloader exits. InitBoot then calls the ExitBoot routine that then
restores CPU registers to their reset state and exits to the EntryAddr that was determined by the boot
mode.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
217
Bootloader Features
www.ti.com
Figure 2-8. Overview of InitBoot Assembly Function
Init Boot
Initialize device
OBJMODE=1
AMODE = 0
MOM1MAP=1
DP = 0
OVM = 0
SPM= 0
SP = 0x400
2.2.14
Dummy read of
CSM password
locations
Call
SelectBootMode
Call
ExitBoot
SelectBootMode Function
To determine the desired boot mode, the SelectBootMode function examines the state of TRST and 2
GPIO pins as shown in Table 2-4.
For a boot mode to be selected, the pins corresponding to the desired boot mode have to be pulled low or
high until the selection process completes. Note that the state of the selection pins is not latched at reset;
they are sampled some cycles later in the SelectBootMode function. The internal pullup resistors are
enabled at reset for the boot mode selection pins. It is still suggested that the boot mode configuration be
made externally to avoid the effect of any noise on these pins.
NOTE: The SelectBootMode routine disables the watchdog before calling the SCI, I2C , SPI , or
parallel bootloaders. The bootloaders do not service the watchdog and assume that it is
disabled. Before exiting, the SelectBootMode routine will re-enable the watchdog and reset
its timer.
If a bootloader is not going to be called, then the watchdog is left untouched.
When selecting a boot mode, the pins should be pulled high or low through a weak pulldown or weak pullup such that the device can drive them to a new state when required.
218
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Figure 2-9. Overview of the SelectBootMode Function
SelectBootMode
A
DIVSEL=/1
ADCENCLK=1
Call DEVICE_CAL()
ADCENCLK=0
Read CSM Password
TRST==0?
Yes
No
Yes
EntryAddr=OTP Entry
Point 0x3D 7800
Yes
EntryAddr=SARAM
Entry Point 0x00 0000
Yes
EntryAddr=
SCI_Boot()
Yes
EntryAddr=
SPI_Boot()
Yes
EntryAddr=
I2C_Boot()
Yes
EntryAddr=
Parallel_IO_Boot()
Yes
EntryAddr=
CAN_Boot()
No
TDO is a GPIO
Boot Mode=
GPIO37:GPIO34
*EMU_KEY=0x55AA
*EMU_MODE=Boot Mode
No
EMU_KEY=
0x55AA
?
Boot
Mode=
OTP?
Boot
Mode=
RAM?
No
Boot
Mode=
SCI?
Invalid EMU_KEY
Boot Mode=WAIT
Yes
No
Boot
Mode=
SPI?
Boot Mode=*EMU_MODE
No
Boot
Mode=
WAIT
?
Yes
WaitBoot()
Boot
Mode=
I2C?
No
No
Divisible Watchdog
Boot
Mode=
GET MODE
?
Yes
Boot Mode=Get_Mode()
Returns FLASH if Either
the OTP_KEY or
OTP_MODE is Invalid
No
No
Boot
Mode=
FLASH
?
No
Boot
Mode=
PARALLEL
?
Yes
EntryAddr=Flash Entry
Point 0x3F 7FF6
Boot
Mode=
CAN?
No
A
Return EntryAddr
Invalid EMU_MODE
WaitBoot()
This Point is Reached if
TRST=1,
*EMU_KEY is Valid and
*EMU_MODE is Valid.
Enable Watchdog
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
219
Bootloader Features
www.ti.com
Figure 2-10. Overview of Get_mode() Function
B
Get_mode()
Function
OTP_KEY=
0x005A
?
OTP_BMODE
=I2C_BOOT
?
No
Yes
Mode=
CAN_BOOT
No
OTP_BMODE
=CAN?
Yes
Mode=
OTP_BOOT
Mode=
SCI_BOOT
No
OTP_BMODE
=SPI_BOOT
?
Yes
A
OTP_BMODE
=OTP_BOOT
?
Yes
Mode=
I2C_BOOT
No
Yes
OTP_BMODE
=SCI_BOOT
?
Yes
Mode=
SPI_BOOT
No
Mode=
FLASH_BOOT
No
A
B
Return Mode
220
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
2.2.15 CopyData Function
Each of the bootloaders uses the same function to copy data from the port to the device's SARAM. This
function is the CopyData() function. This function uses a pointer to a GetWordData function that is
initialized by each of the loaders to properly read data from that port. For example, when the SPI loader is
evoked, the GetWordData function pointer is initialized to point to the SPI-specific SPI_GetWordData
function. Thus when the CopyData() function is called, the correct port is accessed. The flow of the
CopyData function is shown in Figure 2-11.
Note: BlockSize must be less than 0xFFFF for correct operation of the CopyData function. This means the
max possible value of BlockSize is 0xFFFE, not 0xFFFF.
Figure 2-11. Overview of CopyData Function
CopyData
Call peripheral-specific
GetWordData to read
BlockHeader.BlockSize
BlockSize=
0x0000
?
Yes
Return
No
Call GetLongData
to read
BlockHeader.DestAddr
Transfer
BlockHeader.BlockSize
words of data from
port to memory
starting at DestAddr
2.2.16 SCI_Boot Function
The SCI boot mode asynchronously transfers code from SCI-A to internal memory. This boot mode only
supports an incoming 8-bit data stream and follows the same data flow as outlined in Example 2-7.
Figure 2-12. Overview of SCI Bootloader Operation
SCIRXDA
28x
SCITXDA
Host
(Data and program
source)
The SCI-A loader uses following pins:
• SCIRXDA on GPIO28
• SCITXDA on GPIO29
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
221
Bootloader Features
www.ti.com
The 28x device communicates with the external host device by communication through the SCI-A
peripheral. The autobaud feature of the SCI port is used to lock baud rates with the host. For this reason
the SCI loader is very flexible and you can use a number of different baud rates to communicate with the
device.
After each data transfer, the 28x will echo back the 8-bit character received to the host. In this manner, the
host can perform checks that each character was received by the 28x.
At higher baud rates, the slew rate of the incoming data bits can be effected by transceiver and connector
performance. While normal serial communications may work well, this slew rate may limit reliable autobaud detection at higher baud rates (typically beyond 100kbaud) and cause the auto-baud lock feature to
fail. To avoid this, the following is recommended:
1. Achieve a baud-lock between the host and 28x SCI bootloader using a lower baud rate.
2. Load the incoming 28x application or custom loader at this lower baud rate.
3. The host may then handshake with the loaded 28x application to set the SCI baud rate register to the
desired high baud rate.
Figure 2-13. Overview of SCI_Boot Function
SCI_Boot
Set GetWord function pointer
to SCIA_GetWordData
Enable the SCI-A clock
set the LSPCLK to /4
Echo autobaud character
Enable the SCIA TX and RX pin
functionality and pullups on
TX and RX
Read KeyValue
Valid
KeyValue
(0x08AA)
?
Setup SCI-A for
1 stop, 8-bit character,
no parity, use internal
SC clock, no loopback,
disable Rx/Tx interrupts
Read and discard 8
reserved words
Prime SCI-A baud register
Read EntryPoint address
Enable autobaud detection
Call CopyData
Autobaud
lock
?
Yes
Boot ROM
Jump to Flash
Yes
Disable SCI FIFOs
No
222
No
Return
EntryPoint
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Figure 2-14. Overview of SCI_GetWordData Function
Data
Received
?
SCIA_GetWordData
No
Yes
Read LSB
Data
Received
?
Echoback LSB
to host
No
Yes
Read MSB
Echoback MSB
to host
Return MSB:LSB
2.2.17 Parallel_Boot Function (GPIO)
The parallel general purpose I/O (GPIO) boot mode asynchronously transfers code from GPIO0 -GPIO5,
GPIO30-GPIO31 to internal memory. Each value is 8 bits long and follows the same data flow as outlined
in Section 2.2.11.
Figure 2-15. Overview of Parallel GPIO bootloader Operation
28x control − AIO6
Host control − AIO12
28x
8
Host
(Data and program
source)
Data GP I/O port GPIO[31,30,5:0]
The parallel GPIO loader uses following pins:
• Data on GPIO[31,30,5:0]
• 28x Control on AIO6 (external pull-up resistor may be required)
• Host Control on AIO12 (external pull-up resistor required)
The 28x communicates with the external host device by polling/driving the AIO12 and AIO6 lines. An
external pull-up resistor is required for AIO12 because AIO pins lack internal pull-up circuitry required to
prevent the 28x from reading data prematurely. Depending on your system an external pull-up may also
be required on AIO6. The handshake protocol shown in Figure 2-16 must be used to successfully transfer
each word via . This protocol is very robust and allows for a slower or faster host to communicate with the
28x.
Two consecutive 8-bit words are read to form a single 16-bit word. The most significant byte (MSB) is read
first followed by the least significant byte (LSB). In this case, data is read from GPIO[31,30,5:0].
The 8-bit data stream is shown in Table 2-11.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM 223
Bootloader Features
www.ti.com
Table 2-11. Parallel GPIO Boot 8-Bit Data Stream
Bytes
1
GPIO[ 31,30,5:0]
(Byte 1 of 2)
GPIO[ 31,30,5:0] Description
(Byte 2 of 2)
2
AA
08
0x08AA (KeyValue for memory width = 16bits)
3
4
00
00
8 reserved words (words 2 - 9)
...
...
...
...
...
17
18
00
00
Last reserved word
19
20
BB
00
Entry point PC[22:16]
21
22
DD
CC
Entry point PC[15:0] (PC = 0x00BBCCDD)
23
24
NN
MM
Block size of the first block of data to load = 0xMMNN words
25
26
BB
AA
Destination address of first block Addr[31:16]
27
28
DD
CC
Destination address of first block Addr[15:0] (Addr = 0xAABBCCDD)
29
30
BB
AA
First word of the first block in the source being loaded = 0xAABB
...
...
...
Data for this section.
...
.
BB
AA
Last word of the first block of the source being loaded = 0xAABB
.
NN
MM
Block size of the 2nd block to load = 0xMMNN words
.
BB
AA
Destination address of second block Addr[31:16]
.
DD
CC
Destination address of second block Addr[15:0]
.
BB
AA
First word of the second block in the source being loaded
.
…
n
n+1
BB
AA
Last word of the last block of the source being loaded
(More sections if required)
n+2
n+3
00
00
Block size of 0000h - indicates end of the source program
The 28x device first signals the host that it is ready to begin data transfer by pulling the AIO6 pin low. The
host load then initiates the data transfer by pulling the AIO12 pin low. The complete protocol is shown in
the diagram below:
Figure 2-16. Parallel GPIO Boot Loader Handshake Protocol
1
2
3
4
5
6
Host control
AIO12
28x control
AIO6
1. The 28x device indicates it is ready to start receiving data by pulling the AIO6pin low.
2. The bootloader waits until the host puts data on GPIO [31,30,5:0].The host signals to the 28x device
that data is ready by pulling the AIO12 pin low.
3. The 28x device reads the data and signals the host that the read is complete by pulling AIO6 high.
4. The bootloader waits until the host acknowledges the 28x by pulling AIO12 high.
5. The 28x device again indicates it is ready for more data by pulling the AIO6 pin low.
This process is repeated for each data value to be sent.
Figure 2-17 shows an overview of the Parallel GPIO bootloader flow.
224
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Figure 2-17. Parallel GPIO Mode Overview
Parallel_Boot
Initialize GP I/O MUX
and Dir registers
AIO[31,30,5:0] = input
AIO12 = input
AIO6 = output
Enable pullups on
GPIO[31,30,5:0]
Read and discard 8
reserved words
Read EntryPoint
address
Call
CopyData
No
Jump to Flash
Valid
KeyValue
(0x08AA)
?
Yes
Return
EntryPoint
Figure 2-18 shows the transfer flow from the host side. The operating speed of the CPU and host are not
critical in this mode as the host will wait for the 28x and the 28x will in turn wait for the host. In this manner
the protocol will work with both a host running faster and a host running slower than the 28x.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
225
Bootloader Features
www.ti.com
Figure 2-18. Parallel GPIO Mode - Host Transfer Flow
Start transfer
No
28x ready
(AIO6=0)
?
Yes
Load GPIO[31,30,5:0] with data
No
28x ack
(AIO6=1)
?
Yes
Signal that data
is ready
(AIO12=0)
Acknowledge 28x
(AIO12=1)
More
data
?
Yes
No
End transfer
Figure 2-19 shows the flow used to read a single word of data from the parallel port.
• 8-bit data stream
The 8-bit routine, shown in Figure 2-19, discards the upper 8 bits of the first read from the port and
treats the lower 8 bits masked with GPIO31 in bit position 7 and GPIO30 in bit position 6 as the least
significant byte (LSB) of the word to be fetched. The routine will then perform a second read to fetch
the most significant byte (MSB). It then combines the MSB and LSB into a single 16-bit value to be
passed back to the calling routine.
226
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Figure 2-19. 8-Bit Parallel GetWord Function
Parallel_GetWordData
8 bit
A
Signal host that 28x is ready
(AIO6 = 0)
Data
ready
(AIO12 = 0)
?
No
Signal host that 28x
is ready to read MSB
(AIO6 = 0)
Data
ready
(AIO12 = 0)
?
Yes
No
Yes
Read word of data
from GPIO[31,30,5:0]
Read GPIO[15:0]
with GPIO[31:30] masked
into GPIO[7:6] for LSB of data,
Discard GPIO[15:8],
repeat for MSB of data.
28x ack read complete
(AIO6 = 1)
28x ack read complete
(AIO6 = 1)
Host
ack
(AIO12 = 1)
?
Yes
No
Host
ack
(AIO12 = 1)
?
No
Yes
WordData = MSB:LSB
A
Return WordData
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
227
Bootloader Features
www.ti.com
2.2.18 SPI_Boot Function
The SPI loader expects an SPI-compatible 16-bit or 24-bit addressable serial EEPROM or serial flash
device to be present on the SPI-A pins as indicated in Figure 2-20. The SPI bootloader supports an 8-bit
data stream. It does not support a 16-bit data stream.
Figure 2-20. SPI Loader
SPISIMOA
SPISOMIA
28x
Serial SPI
EEPROM
DIN
DOUT
SPICLKA
CLK
SPIESTEA
CS
The SPI-A loader uses following pins:
• SPISIMOA on GPIO16
• SPISOMIA on GPIO17
• SPICLKA on GPIO18
• SPISTEA on GPIO19
The SPI boot ROM loader initializes the SPI module to interface to a serial SPI EEPROM or flash. Devices
of this type include, but are not limited to, the Xicor X25320 (4Kx8) and Xicor X25256 (32Kx8) SPI serial
SPI EEPROMs and the Atmel AT25F1024A serial flash.
The SPI boot ROM loader initializes the SPI with the following settings: FIFO enabled, 8-bit character,
internal SPICLK master mode and talk mode, clock phase = 1, polarity = 0, using the slowest baud rate.
If the download is to be performed from an SPI port on another device, then that device must be setup to
operate in the slave mode and mimic a serial SPI EEPROM. Immediately after entering the SPI_Boot
function, the pin functions for the SPI pins are set to primary and the SPI is initialized. The initialization is
done at the slowest speed possible. Once the SPI is initialized and the key value read, you could specify a
change in baud rate or low speed peripheral clock.
Table 2-12. SPI 8-Bit Data Stream
Byte
228
Boot ROM
Contents
1
LSB: AA (KeyValue for memory width = 8-bits)
2
MSB: 08h (KeyValue for memory width = 8-bits)
3
LSB: LOSPCP
4
MSB: SPIBRR
5
LSB: reserved for future use
6
MSB: reserved for future use
...
...
...
Data for this section.
...
17
LSB: reserved for future use
18
MSB: reserved for future use
19
LSB: Upper half (MSW) of Entry point PC[23:16]
20
MSB: Upper half (MSW) of Entry point PC[31:24] (Note: Always 0x00)
21
LSB: Lower half (LSW) of Entry point PC[7:0]
22
MSB: Lower half (LSW) of Entry point PC[15:8]
...
...
....
Data for this section.
...
...
Blocks of data in the format size/destination address/data as shown in the generic
data stream description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-12. SPI 8-Bit Data Stream (continued)
Byte
Contents
...
...
...
Data for this section.
...
n
LSB: 00h
n+1
MSB: 00h - indicates the end of the source
The data transfer is done in "burst" mode from the serial SPI EEPROM. The transfer is carried out entirely
in byte mode (SPI at 8 bits/character). A step-by-step description of the sequence follows:
Step 1. The SPI-A port is initialized
Step 2. The GPIO19 (SPISTE) pin is used as a chip-select for the serial SPI EEPROM or flash
Step 3. The SPI-A outputs a read command for the serial SPI EEPROM or flash
Step 4. The SPI-A sends the serial SPI EEPROM an address 0x0000; that is, the host requires that
the EEPROM or flash must have the downloadable packet starting at address 0x0000 in the
EEPROM or flash. The loader is compatible with both 16-bit addresses and 24-bit addresses.
Step 5. The next word fetched must match the key value for an 8-bit data stream (0x08AA). The least
significant byte of this word is the byte read first and the most significant byte is the next byte
fetched. This is true of all word transfers on the SPI. If the key value does not match, then the
load is aborted and the device will branch to the flash entry point address.
Step 6. The next 2 bytes fetched can be used to change the value of the low speed peripheral clock
register (LOSPCP) and the SPI baud rate register (SPIBRR). The first byte read is the
LOSPCP value and the second byte read is the SPIBRR value. The next 7 words are
reserved for future enhancements. The SPI bootloader reads these 7 words and discards
them.
Step 7. The next 2 words makeup the 32-bit entry point address where execution will continue after
the boot load process is complete. This is typically the entry point for the program being
downloaded through the SPI port.
Step 8. Multiple blocks of code and data are then copied into memory from the external serial SPI
EEPROM through the SPI port. The blocks of code are organized in the standard data stream
structure presented earlier. This is done until a block size of 0x0000 is encountered. At that
point in time the entry point address is returned to the calling routine that then exits the
bootloader and resumes execution at the address specified.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
229
Bootloader Features
www.ti.com
Figure 2-21. Data Transfer From EEPROM Flow
SPI_Boot
Enable the SPI-A clock
Set the LSPCLK to 4
Enable SPISIMOA,
SPISOMI and SPICLKA
pin functionality and enable
pullups on those pins
Valid
KeyValue
(0x08AA)
?
No
Jump to Flash
Yes
Read LOSPCP value
Change LOSPCP
Read SPIBRR value
Change SPIBRR
Set up SPI-A for
8-bit character,
Use internal SPI clock,
master mode
Use slowest baud rate (0x7F)
Relinquish SPI-A from reset
Set chip enable high
(GPIO19)
Enable EEPROM
Send read command and
start at EEPROM address
0x0000
Read and discard 7
reserved words
Read KeyValue
Read EntryPoint
address
Return
EntryPoint
Call CopyData
Figure 2-22. Overview of SPIA_GetWordData Function
SPIA_GetWordData
Send dummy
character
Data
Received
?
No
Yes
Read LSB
Data
Received
?
Send dummy
character
No
Yes
Read MSB
Return MSB:LSB
230
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
2.2.19 I2C Boot Function
The I2C bootloader expects an 8-bit wide I2C-compatible EEPROM device to be present at address 0x50
on the I2C-A bus as indicated in Figure 2-23. The EEPROM must adhere to conventional I2C EEPROM
protocol, as described in this section, with a 16-bit base address architecture.
Figure 2-23. EEPROM Device at Address 0x50
SDA
28x
Master
SCL
SDAA
SCLA
SDA
SCL
I2C
EEPROM
Slave Address
0x50
The I2C loader uses following pins:
• SDAA on GPIO 28
• SCLA on GPIO 29
If the download is to be performed from a device other than an EEPROM, then that device must be set up
to operate in the slave mode and mimic the I2C EEPROM. Immediately after entering the I2C boot
function, the GPIO pins are configured for I2C-A operation and the I2C is initialized. The following
requirements must be met when booting from the I2C module:
• The input frequency to the device must be in the appropriate range.
• The EEPROM must be at slave address 0x50.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
231
Bootloader Features
www.ti.com
Figure 2-24. Overview of I2C_Boot Function
I2C_Boot
Set CopyWord function
pointer to
I2C_CopyWord
Enable SDAA and
SCLA pins
Enable pullups on
SDAA and SCLA
NACK
received
?
Yes
Jump to Flash
No
Read KeyValue
Enable I2C-A clock
Set slave address 0x50
I2C prescaler I2CPSC = or 0
100-kHz bit rate
Enable TX/RX FIFOs to
receive 2 bytes.
Place I2C in master
transmitter mode
Set EEPROM address
pointer to 0x0000
Valid
KeyValue
(0x08AA)
?
No
Jump to Flash
Yes
Put 12c-A in Reset
Set I2CPSC value
Set I2CCLKH value
Set I2CCLKL value
Bring I2C-A out of Reset
Read I2CPSC value
Read I2CCLKH value
Read 12CCLKL value
Read and discard 5
reserved words
Read EntryPoint
address
Call CopyData
Return
EntryPoint
The bit-period prescalers (I2CCLKH and I2CCLKL) are configured by the bootloader to run the I2C at a 50
percent duty cycle at 100-kHz bit rate (standard I2C mode) when the system clock is 10 MHz. These
registers can be modified after receiving the first few bytes from the EEPROM. This allows the
communication to be increased up to a 400-kHz bit rate (fast I2C mode) during the remaining data reads.
Arbitration, bus busy, and slave signals are not checked. Therefore, no other master is allowed to control
the bus during this initialization phase. If the application requires another master during I2C boot mode,
that master must be configured to hold off sending any I2C messages until the application software
signals that it is past the bootloader portion of initialization.
The non-acknowledgment bit is checked only during the first message sent to initialize the EEPROM base
address. This is to make sure that an EEPROM is present at address 0x50 before continuing. If an
EEPROM is not present, code will The non-acknowledgment bit is not checked during the address phase
of the data read messages (I2C_Get Word). If a non acknowledgment is received during the data read
messages, the I2C bus will hang. Table 3-2 shows the 8-bit data stream used by the I2C.
232
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-13. I2C 8-Bit Data Stream
Byte
Contents
1
LSB: AA (KeyValue for memory width = 8 bits)
2
MSB: 08h (KeyValue for memory width = 8 bits)
3
LSB: I2CPSC[7:0]
4
reserved
5
LSB: I2CCLKH[7:0]
6
MSB: I2CCLKH[15:8]
7
LSB: I2CCLKL[7:0]
8
MSB: I2CCLKL[15:8]
...
...
...
Data for this section.
...
17
LSB: Reserved for future use
18
MSB: Reserved for future use
19
LSB: Upper half of entry point PC
20
MSB: Upper half of entry point PC[22:16] (Note: Always 0x00)
21
LSB: Lower half of entry point PC[15:8]
22
MSB: Lower half of entry point PC[7:0]
...
...
...
Data for this section.
...
Blocks of data in the format size/destination address/data as shown in the generic data stream
description.
...
...
...
Data for this section.
...
LSB: 00h
n+1
MSB: 00h - indicates the end of the source
The I2C EEPROM protocol required by the I2C bootloader is shown in Figure 2-25 and Figure 2-26. The
first communication, which sets the EEPROM address pointer to 0x0000 and reads the KeyValue
(0x08AA) from it, is shown in Figure 2-25. All subsequent reads are shown in Figure 2-26 and are read
two bytes at a time.
SDA LINE
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00
Device
Address
Address
Pointer, MSB
STOP
NO ACK
ACK
LSB
READ
ACK
MSB
RESTART
ACK
ACK
LSB
WRITE
ACK
MSB
START
Figure 2-25. Random Read
1 01 0 0 0 0 1 0
Address
Pointer, LSB
Device
Address
DATA BYTE 1
DATA BYTE 2
SDA LINE
STOP
NO ACK
ACK
READ
ACK
START
Figure 2-26. Sequential Read
1 01 0 0 0 0 1 0
Device
Address
DATA BYTE n
DATA BYTE n+1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
233
Bootloader Features
www.ti.com
2.2.20 eCAN Boot Function
The eCAN bootloader asynchronously transfers code from eCAN-A to internal memory. The host can be
any CAN node. The communication is first done with 11-bit standard identifiers (with a MSGID of 0x1)
using two bytes per data frame. The host can download a kernel to reconfigure the eCAN if higher data
throughput is desired.
The eCAN-A loader uses following pins:
• CANRXA on GPIO30
• CANTXA on GPIO31
Figure 2-27. Overview of eCAN-A bootloader Operation
CAN bus
28x
CAN
host
28x
The bit-timing registers are programmed in such a way that a valid bit-rate is achieved for a 10 MHz
internal oscillator frequency as shown in Table 2-14.
Table 2-14. Bit-Rate Value for Internal Oscillators
OSCCLK
SYSCLKOUT
Bit Rate
10 MHz
10 MHz
100 kbps
The SYSCLKOUT values shown are the reset values with the default PLL setting. The BRPreg and bit-time
values are hard-coded to 1 and 25, respectively.
Mailbox 1 is programmed with a standard MSGID of 0x1 for boot-loader communication. The CAN host
should transmit only 2 bytes at a time, LSB first and MSB next. For example, to transmit the word 0x08AA
to the device, transmit AA first, followed by 08. The program flow of the CAN bootloader is identical to the
SCI bootloader. The data sequence for the CAN bootloader is shown in Table 2-15:
234 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Bootloader Features
www.ti.com
Table 2-15. eCAN 8-Bit Data Stream
Byte 1 of 2
Byte 2 of 2
1
Bytes
2
AA
08
0x08AA (KeyValue for memory width = 16bits)
3
4
00
00
reserved
5
6
00
00
reserved
7
8
00
00
reserved
9
10
00
00
reserved
11
12
00
00
reserved
13
14
00
00
reserved
15
16
00
00
reserved
17
18
00
00
reserved
19
20
BB
00
Entry point PC[22:16]
21
22
DD
CC
Entry point PC[15:0] (PC = 0xAABBCCDD)
23
24
NN
MM
Block size of the first block of data to load = 0xMMNN words
25
26
BB
AA
Destination address of first block Addr[31:16]
27
28
DD
CC
Destination address of first block Addr[15:0] (Addr = 0xAABBCCDD)
29
30
BB
AA
First word of the first block in the source being loaded = 0xAABB
...
...
Description
....
Data for this section.
...
.
BB
AA
Last word of the first block of the source being loaded = 0xAABB
.
NN
MM
Block size of the 2nd block to load = 0xMMNN words
.
BB
AA
Destination address of second block Addr[31:16]
.
DD
CC
Destination address of second block Addr[15:0]
.
BB
AA
First word of the second block in the source being loaded
.
…
n
n+1
BB
AA
Last word of the last block of the source being loaded
(More sections if required)
n+2
n+3
00
00
Block size of 0000h - indicates end of the source program
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
235
Bootloader Features
2.2.21
www.ti.com
ExitBoot Assembly Routine
The Boot ROM includes an ExitBoot routine that restores the CPU registers to their default state at reset.
This is performed on all registers with one exception. The OBJMODE bit in ST1 is left set so that the
device remains configured for C28x operation. This flow is detailed in the following diagram:
Figure 2-28. ExitBoot Procedure Flow
Reset
InitBoot
Call
SelectBootMode
Call
BootLoader
?
Yes
Call Boot Loader
No
Call ExitBoot
Cleanup CPU
registers to default
value after reset*
Deallocate stack
(SP=0x400)
Branch to EntryPoint
Begin execution
at EntryPoint
The following CPU registers are restored to their default values:
• ACC = 0x0000 0000
• RPC = 0x0000 0000
• P = 0x0000 0000
• XT = 0x0000 0000
• ST0 = 0x0000
• ST1 = 0x0A0B
• XAR0 = XAR7 = 0x0000 0000
After the ExitBoot routine completes and the program flow is redirected to the entry point address, the
CPU registers will have the following values:
236 Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Building the Boot Table
www.ti.com
Table 2-16. CPU Register Restored Values
Register
Value
Register
Value
ACC
0x0000 0000
P
0x0000 0000
XT
0x0000 0000
RPC
0x00 0000
XAR0-XAR7
0x0000 0000
DP
0x0000
ST0
0x0000
ST1
0x0A0B
15:10 OVC = 0
9:7 PM = 0
15:13 ARP = 0
12 XF = 0
6 V=0
11 M0M1MAP = 1
5 N=0
10 reserved
4 Z=0
9 OBJMODE = 1
3 C=0
8 AMODE = 0
2 TC = 0
7 IDLESTAT = 0
1 OVM = 0
6 EALLOW = 0
0 SXM = 0
5 LOOP = 0
4 SPA = 0
3 VMAP = 1
2 PAGE0 = 0
1 DBGM = 1
0 INTM = 1
2.3
Building the Boot Table
This chapter explains how to generate the data stream and boot table required for the bootloader.
2.3.1 The C2000 Hex Utility
To use the features of the bootloader, you must generate a data stream and boot table as described in
Section 2.2.11. The hex conversion utility tool, included with the 28x code generation tools, can generate
the required data stream including the required boot table. This section describes the hex2000 utility. An
example of a file conversion performed by hex2000 is described in Section 2.3.2.
The hex utility supports creation of the boot table required for the SCI, SPI, I2C, eCAN, and parallel I/O
loaders. That is, the hex utility adds the required information to the file such as the key value, reserved
bits, entry point, address, block start address, block length and terminating value. The contents of the boot
table vary slightly depending on the boot mode and the options selected when running the hex conversion
utility. The actual file format required by the host (ASCII, binary, hex, etc.) will differ from one specific
application to another and some additional conversion may be required.
To build the boot table, follow these steps:
1. Assemble or compile the code.
This creates the object files that will then be used by the linker to create a single output file.
2. Link the file.
The linker combines all of the object files into a single output file in common object file format (COFF).
The specified linker command file is used by the linker to allocate the code sections to different
memory blocks. Each block of the boot table data corresponds to an initialized section in the COFF file.
Uninitialized sections are not converted by the hex conversion utility. The following options may be
useful:
The linker -m option can be used to generate a map file. This map file will show all of the sections that
were created, their location in memory and their length. It can be useful to check this file to make sure
that the initialized sections are where you expect them to be.
The linker -w option is also very useful. This option indicates if the linker has assigned a section to a
memory region on its own. For example, if you have a section in your code called ramfuncs.
3. Run the hex conversion utility.
Choose the appropriate options for the desired boot mode and run the hex conversion utility to convert
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
237
Building the Boot Table
www.ti.com
the COFF file produced by the linker to a boot table.
See the TMS320C28x Assembly Language Tools User's Guide (SPRU513) and the TMS320C28x
Optimizing C/C++ Compiler User's Guide (SPRU514) for more information on the compiling and linking
process.
Table 2-17 summarizes the hex conversion utility options available for the bootloader. See the
TMS320C28x Assembly Language Tools User's Guide (SPRU513) for a detailed description of the
hex2000 operations used to generate a boot table. Updates will be made to support the I2C boot. See the
Codegen release notes for the latest information.
Table 2-17. Boot Loader Options
Option
Description
-boot
Convert all sections into bootable form (use instead of a SECTIONS directive)
-sci8
Specify the source of the bootloader table as the SCI-A port, 8-bit mode
-spi8
Specify the source of the bootloader table as the SPI-A port, 8-bit mode
-gpio8
Specify the source of the bootloader table as the GPIO port, 8-bit mode
-gpio16
Specify the source of the bootloader table as the GPIO port, 16-bit mode
-bootorg value
Specify the source address of the bootloader table
-lospcp value
Specify the initial value for the LOSPCP register. This value is used only for the spi8 boot table format
and ignored for all other formats. If the value is greater than 0x7F, the value is truncated to 0x7F.
-spibrr value
Specify the initial value for the SPIBRR register. This value is used only for the spi8 boot table format and
ignored for all other formats. If the value is greater than 0x7F, the value is truncated to 0x7F.
-e value
Specify the entry point at which to begin execution after boot loading. The value can be an address or a
global symbol. This value is optional. The entry point can be defined at compile time using the linker -e
option to assign the entry point to a global symbol. The entry point for a C program is normally _c_int00
unless defined otherwise by the -e linker option.
-i2c8
Specify the source of the bootloader table as the I2C-A port, 8-bit
-i2cpsc value
Specify the value for the I2CPSC register. This value will be loaded and take effect after all I2C options
are loaded, prior to reading data from the EEPROM. This value will be truncated to the least significant
eight bits and should be set to maintain an I2C module clock of 7-12 MHz.
-i2cclkh value
Specify the value for the I2CCLKH register. This value will be loaded and take effect after all I2C options
are loaded, prior to reading data from the EEPROM.
-i2cclkl value
Specify the value for the I2CCLKL register. This value will be loaded and take effect after all I2C options
are loaded, prior to reading data from the EEPROM.
2.3.2 Example: Preparing a COFF File For eCAN Bootloading
This section shows how to convert a COFF file into a format suitable for CAN based bootloading. This
example assumes that the host sending the data stream is capable of reading an ASCII hex format file. An
example COFF file named GPIO34TOG.out has been used for the conversion.
Build the project and link using the -m linker option to generate a map file. Examine the .map file produced
by the linker. The information shown in Example 2-8 has been copied from the example map file
(GPIO34TOG.map). This shows the section allocation map for the code. The map file includes the
following information:
•
•
•
•
238
Output Section
This is the name of the output section specified with the SECTIONS directive in the linker command
file.
Origin
The first origin listed for each output section is the starting address of that entire output section. The
following origin values are the starting address of that portion of the output section.
Length
The first length listed for each output section is the length for that entire output section. The following
length values are the lengths associated with that portion of the output section.
Attributes/input sections
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Building the Boot Table
www.ti.com
This lists the input files that are part of the section or any value associated with an output section.
See the TMS320C28x Assembly Language Tools User's Guide (SPRU513) for detailed information on
generating a linker command file and a memory map.
All sections shown in Example 2-8 that are initialized need to be loaded into the DSP in order for the code
to execute properly. In this case, the codestart, ramfuncs, .cinit, myreset and .text sections need to be
loaded. The other sections are uninitialized and will not be included in the loading process. The map file
also indicates the size of each section and the starting address. For example, the .text section has 0x155
words and starts at 0x3FA000.
Example 2-8. GPIO34TOG Map File
output
section
-------codestart
length
----------
attributes/
input sections
----------------
page
----
origin
----------
0
00000002
00000002
00000000
DSP280x_CodeStartBranch.obj (codestart)
.pinit
0
00000000
00000000
00000002
.switch
0
00000002
00000000
UNINITIALIZED
ramfuncs
0
00000002
00000002
00000016
00000016
DSP280x_SysCtrl.obj (ramfuncs)
00000018
00000018
00000026
00000030
00000019
0000000e
0000000a
00000001
rts2800_ml.lib : exit.obj (.cinit)
: _lock.obj (.cinit)
--HOLE-- [fill = 0]
00000032
00000032
00000002
00000002
DSP280x_CodeStartBranch.obj (myreset)
.cinit
myreset
0
0
IQmath
0
003fa000
00000000
UNINITIALIZED
.text
0
003fa000
003fa000
00000155
00000046
rts2800_ml.lib : boot.obj (.text)
To load the code using the CAN bootloader, the host must send the data in the format that the bootloader
understands. That is, the data must be sent as blocks of data with a size, starting address followed by the
data. A block size of 0 indicates the end of the data. The HEX2000.exe utility can be used to convert the
COFF file into a format that includes this boot information. The following command syntax has been used
to convert the application into an ASCII hex format file that includes all of the required information for the
bootloader:
Example 2-9. HEX2000.exe Command Syntax
C: HEX2000 GPIO34TOG.OUT -boot -gpio8 -a
Where:
- boot
- gpio8
- a
Convert all sections into bootable form.
Use the GPIO in 8-bit mode data format. The eCAN
uses the same data format as the GPIO in 8-bit mode.
Select ASCII-Hex as the output format.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
239
Building the Boot Table
www.ti.com
The command line shown in Example 2-9 will generate an ASCII-Hex output file called GPIO34TOG.a00,
whose contents are explained in Example 2-10. This example assumes that the host will be able to read
an ASCII hex format file. The format may differ for your application. . Each section of data loaded can be
tied back to the map file described in Example 2-8. After the data stream is loaded, the boot ROM will
jump to the Entrypoint address that was read as part of the data stream. In this case, execution will begin
at 0x3FA0000.
240
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Building the Boot Table
www.ti.com
Example 2-10. GPIO34TOG Data Stream
AA
00
00
3F
02
00
7F
16
00
22
FF
06
F6
55
3F
AD
29
18
00
04
06
..
..
FC
19
00
FF
00
00
..
3F
02
00
00
00
08
00
00
00
00
00
00
00
00
76
05
96
00
01
00
28
1F
00
04
29
..
..
..
63
00
00
FF
00
00
..
00
00
00
00
00
;Keyvalue
;8 reserved words
00 00 00 00 00 00
00 00 00 00 00 00
00 A0
00 00
9A A0
02
1F
50
04
77
00
76
06
1A
06
00 A0
00 04
76 00
A8 28
29 0F
A8 24
..
..
..
E6 6F
;Load
18 00
00 B0
00 00
FE FF
..
00 00
2A 00 00 1A 01 00 06 CC F0
96 06 CC FF F0 A9 1A 00 05
FF 00 05 1A FF 00 1A 76 07
00
69
00
00
6F
01
FF
02
00
00
DF
1F
29
01
9B
A6
56
1B
09
A9
1E
16
76
1D
24
A1
56
22
61
01
F7
1A
76
C0
DF
86
56
A9
76
04
24
40
28
18
6C
A7
;Entrypoint 0x003FA000
;Load 2 words - codestart section
;Load block starting at 0x000000
;Data block 0x007F, 0xA09A
;Load 0x0016 words - ramfuncs section
;Load block starting at 0x000002
;Data = 0x7522, 0x761F etc...
;Load 0x0155 words - .text section
;Load block starting at 0x003FA000
;Data = 0x28AD, 0x4000 etc...
0x0019 words - .cinit section
3F 00 00 00 FE FF 02 B0 3F
00 FE FF 04 B0 3F 00 00 00
.. .. ..
;Load block starting at 0x000018
;Data = 0xFFFF, 0xB000 etc...
;Load 0x0002 words - myreset section
;Load block starting at 0x000032
;Data = 0x0000, 0x0000
;Block size of 0 - end of data
32 00
00 00
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Boot ROM
241
Bootloader Code Overview
2.4
www.ti.com
Bootloader Code Overview
This chapter contains information on the Boot ROM version, checksum, and code.
2.4.1 Boot ROM Version and Checksum Information
The boot ROM contains its own version number located at address 0x3F FFBA. This version number
starts at 1 and will be incremented any time the boot ROM code is modified. The next address, 0x3F
FFBB contains the month and year (MM/YY in decimal) that the boot code was released. The next four
memory locations contain a checksum value for the boot ROM. Taking a 64-bit summation of all
addresses within the ROM, except for the checksum locations, generates this checksum.
Table 2-18. Bootloader Revision and Checksum Information
Address
Contents
0x3F FFB9
242
0x3F FFBA
Boot ROM Version Number
0x3F FFBB
MM/YY of release (in decimal)
0x3F FFBC
Least significant word of checksum
0x3F FFBD
...
0x3F FFBE
...
0x3F FFBF
Most significant word of checksum
Boot ROM
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 3
SPRUH18G – January 2011 – Revised April 2017
Enhanced Pulse Width Modulator (ePWM) Module
The enhanced pulse width modulator (ePWM) peripheral is a key element in controlling many of the power
electronic systems found in both commercial and industrial equipments. These systems include digital
motor control, switch mode power supply control, uninterruptible power supplies (UPS), and other forms of
power conversion. The ePWM peripheral performs a digital to analog (DAC) function, where the duty cycle
is equivalent to a DAC analog value; it is sometimes referred to as a Power DAC.
This chapter guide is applicable for ePWM type 1. See the TMS320x28xx, 28xxx DSP Peripheral
Reference Guide (SPRU566) for a list of all devices with an ePWM module of the same type, to determine
the differences between the types, and for a list of device-specific differences within a type.
This chapter includes an overview of the module and information about each of its sub-modules:
• Time-Base Module
• Counter Compare Module
• Action Qualifier Module
• Dead-Band Generator Module
• PWM Chopper (PC) Module
• Trip Zone Module
• Event Trigger Module
ePWM Type 1 is fully compatible to the Type 0 module. Type 1 has the following enhancements in
addition to the Type 0 features:
• Increased Dead-Band Resolution
The dead-band clocking has been enhanced to allow half-cycle clocking to double resolution.
• Enhanced interrupt and SOC generation
Interrupts and ADC start-of-conversion can now be generated on both the TBCTR == zero and TBCTR
== period events. This feature enables dual edge PWM control. Additionally, the ADC start-ofconversion can be generated from an event defined in the digital compare sub-module.
• High Resolution Period Capability
Provides the ability to enable high-resolution period. This is discussed in more detail in the devicespecific HRPWM Reference Guide.
• Digital Compare Sub-module
The digital compare sub-module enhances the event triggering and trip zone sub-modules by providing
filtering, blanking and improved trip functionality to digital compare signals. Such features are essential
for peak current mode control and for support of analog comparators.
Topic
...........................................................................................................................
3.1
3.2
3.3
3.4
Introduction .....................................................................................................
ePWM Submodules ...........................................................................................
Applications to Power Topologies ......................................................................
Registers .........................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
Page
244
250
309
336
243
Introduction
3.1
www.ti.com
Introduction
An effective PWM peripheral must be able to generate complex pulse width waveforms with minimal CPU
overhead or intervention. It needs to be highly programmable and very flexible while being easy to
understand and use. The ePWM unit described here addresses these requirements by allocating all
needed timing and control resources on a per PWM channel basis. Cross coupling or sharing of resources
has been avoided; instead, the ePWM is built up from smaller single channel modules with separate
resources that can operate together as required to form a system. This modular approach results in an
orthogonal architecture and provides a more transparent view of the peripheral structure, helping users to
understand its operation quickly.
In this document the letter x within a signal or module name is used to indicate a generic ePWM instance
on a device. For example output signals EPWMxA and EPWMxB refer to the output signals from the
ePWMx instance. Thus, EPWM1A and EPWM1B belong to ePWM1 and likewise EPWM4A and EPWM4B
belong to ePWM4.
3.1.1 Submodule Overview
The ePWM module represents one complete PWM channel composed of two PWM outputs: EPWMxA
and EPWMxB. Multiple ePWM modules are instanced within a device as shown in Figure 3-1. Each
ePWM instance is identical with one exception. Some instances include a hardware extension that allows
more precise control of the PWM outputs. This extension is the high-resolution pulse width modulator
(HRPWM) and is described in the device-specific High-Resolution Pulse Width Modulator (HRPWM)
Reference Guide. See the device-specific data manual to determine which ePWM instances include this
feature. Each ePWM module is indicated by a numerical value starting with 1. For example ePWM1 is the
first instance and ePWM3 is the 3rd instance in the system and ePWMx indicates any instance.
The ePWM modules are chained together via a clock synchronization scheme that allows them to operate
as a single system when required. Additionally, this synchronization scheme can be extended to the
capture peripheral modules (eCAP). The number of modules is device-dependent and based on target
application needs. Modules can also operate stand-alone.
Each ePWM module supports the following features:
• Dedicated 16-bit time-base counter with period and frequency control
• Two PWM outputs (EPWMxA and EPWMxB) that can be used in the following configurations:
– Two independent PWM outputs with single-edge operation
– Two independent PWM outputs with dual-edge symmetric operation
– One independent PWM output with dual-edge asymmetric operation
• Asynchronous override control of PWM signals through software.
• Programmable phase-control support for lag or lead operation relative to other ePWM modules.
• Hardware-locked (synchronized) phase relationship on a cycle-by-cycle basis.
• Dead-band generation with independent rising and falling edge delay control.
• Programmable trip zone allocation of both cycle-by-cycle trip and one-shot trip on fault conditions.
• A trip condition can force either high, low, or high-impedance state logic levels at PWM outputs.
• All events can trigger both CPU interrupts and ADC start of conversion (SOC)
• Programmable event prescaling minimizes CPU overhead on interrupts.
• PWM chopping by high-frequency carrier signal, useful for pulse transformer gate drives.
Each ePWM module is connected to the input/output signals shown in Figure 3-1. The signals are
described in detail in subsequent sections.
244
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
Figure 3-1. Multiple ePWM Modules
EPWMSYNCI
EPWM1SYNCI
EPWM1B
EPWM1TZINT
EPWM1
Module
EPWM1INT
EPWM2TZINT
PIE
TZ1 to TZ3
EQEP1ERR
TZ4
EPWM2INT
CLOCKFAIL
TZ5
EPWMxTZINT
EMUSTOP
TZ6
EPWMxINT
(A)
EPWM1ENCLK
TBCLKSYNC
eCAPI
EPWM1SYNCO
EPWM1SYNCO
EPWM2SYNCI
COMPOUT1
COMPOUT2
TZ1 to TZ3
EPWM2B
EPWM2
Module
COMP
TZ4
TZ5
TZ6
EQEP1ERR
(A)
EPWM1A
H
R
P
W
M
CLOCKFAIL
EMUSTOP
EPWM2ENCLK
TBCLKSYNC
EPWM2A
EPWMxA
G
P
I
O
ADC
Peripheral Bus
EPWM2SYNCO
SOCA1
SOCB1
SOCA2
M
U
X
EPWMxB
EPWMxSYNCI
SOCB2
SOCAx
TZ1 to TZ3
EPWMx
Module
SOCBx
TZ4
TZ5
TZ6
EQEP1ERR
(A)
EQEP1ERR
CLOCKFAIL
EMUSTOP
eQEP1
EPWMxENCLK
TBCLKSYNC
System Control
C28x CPU
A
SOCA1
SOCA2
SPCAx
Pulse Stretch
(32 SYSCLKOUT Cycles, Active-Low Output)
ADCSOCAO
SOCB1
SOCB2
SPCBx
Pulse Stretch
(32 SYSCLKOUT Cycles, Active-Low Output)
ADCSOCBO
This signal exists only on devices with an eQEP1 module.
The order in which the ePWM modules are connected may differ from what is shown in Figure 3-1. See
Section 3.2.2.3.3 for the synchronization scheme for a particular device. Each ePWM module consists of
eight submodules and is connected within a system via the signals shown in Figure 3-2.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
245
Introduction
www.ti.com
Figure 3-2. Submodules and Signal Connections for an ePWM Module
ePWM module
EPWMxSYNCI
EPWMxSYNCO
COMP
COMPxOUT
CLOCKFAIL
Counter-compare (CC) module
EQEP1ERR
EPWMxTZINT
PIE
EMUSTOP
Time-base (TB) module
Action-qualifier (AQ) module
EPWMxINT
TZ1 to TZ3
Dead-band (DB) module
EPWMxSOCA
ADC
EPWMxA
PWM-chopper (PC) module
EPWMxSOCB
GPIO
MUX
EPWMxB
Event-trigger (ET) module
Peripheral bus
Trip-zone (TZ) module
Digital Compare (DC) module
Figure 3-3 shows more internal details of a single ePWM module. The main signals used by the ePWM
module are:
• PWM output signals (EPWMxA and EPWMxB).
The PWM output signals are made available external to the device through the GPIO peripheral
described in the system control and interrupts guide for your device.
• Trip-zone signals (TZ1 to TZ6).
These input signals alert the ePWM module of fault conditions external to the ePWM module. Each
module on a device can be configured to either use or ignore any of the trip-zone signals. The TZ1 to
TZ3 trip-zone signals can be configured as asynchronous inputs through the GPIO peripheral. TZ4 is
connected to an inverted EQEP1 error signal (EQEP1ERR) from the EQEP1 module (for those devices
with an EQEP1 module). TZ5 is connected to the system clock fail logic, and TZ6 is connected to the
EMUSTOP output from the CPU. This allows you to configure a trip action when the clock fails or the
CPU halts.
• Time-base synchronization input (EPWMxSYNCI) and output (EPWMxSYNCO) signals.
The synchronization signals daisy chain the ePWM modules together. Each module can be configured
to either use or ignore its synchronization input. The clock synchronization input and output signal are
brought out to pins only for ePWM1 (ePWM module #1). The synchronization output for ePWM1
(EPWM1SYNCO) is also connected to the SYNCI of the first enhanced capture module (eCAP1).
• ADC start-of-conversion signals (EPWMxSOCA and EPWMxSOCB).
Each ePWM module has two ADC start of conversion signals . Any ePWM module can trigger a start
of conversion. Whichever event triggers the start of conversion is configured in the Event-Trigger
submodule of the ePWM.
• Comparator output signals (COMPxOUT).
Output signals from the comparator module in conjunction with the trip zone signals can generate
digital compare events.
• Peripheral Bus
The peripheral bus is 32-bits wide and allows both 16-bit and 32-bit writes to the ePWM register file.
246
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
Figure 3-3. ePWM Submodules and Critical Internal Signal Interconnects
Time-Base (TB)
CTR=ZERO
TBPRD Shadow (24)
Disabled
TBPRD Active (24)
CTR=PRD
TBCTL[SYNCOSEL]
Counter
Up/Down
(16 Bit)
TBCTL[SWFSYNC]
(Software Forced
Sync)
CTR=ZERO
16
CTR_Dir
CTR=PRD
CTR=ZERO
CTR=PRD or ZERO
CTR=CMPA
8
TBPHS Active (24)
EPWMxSYNCO
8
TBCTL[PHSEN]
TBCTR
Active (16)
Sync
In/Out
Select
Mux
CTR=CMPB
Phase
Control
CTR=CMPB
CTR_Dir
(A)
DCAEVT1.soc
(A)
DCBEVT1.soc
EPWMxSYNCI
DCAEVT1.sync
DCBEVT1.sync
EPWMxINT
EPWMxSOCA
Event
Trigger
and
Interrupt
(ET)
EPWMxSOCB
EPWMxSOCA
ADC
EPWMxSOCB
Action
Qualifier
(AQ)
CTR=CMPA
16
CMPA Active (24)
CMPA Shadow (24)
EPWMxA
EPWMA
Dead
Band
(DB)
CTR=CMPB
16
PWM
Chopper
(PC)
Trip
Zone
(TZ)
EPWMB
EPWMxB
EPWMxTZINT
CMPB Active (16)
TZ1 to TZ3
CMPB Shadow (16)
EMUSTOP
CLOCKFAIL
CTR=ZERO
DCAEVT1.inter
DCBEVT1.inter
DCAEVT2.inter
DCBEVT2.inter
EQEP1ERR
(B)
DCAEVT1.force
DCAEVT2.force
DCBEVT1.force
DCBEVT2.force
(A)
(A)
(A)
(A)
A
These events are generated by the type 1 ePWM digital compare (DC) submodule based on the levels of the
COMPxOUT and TZ signals.
B
This signal exists only on devices with in eQEP1 module.
Figure 3-3 also shows the key internal submodule interconnect signals. Each submodule is described in
detail in its respective section.
3.1.2 Register Mapping
The complete ePWM module control and status register set is grouped by submodule as shown in
Table 3-1. Each register set is duplicated for each instance of the ePWM module. The start address for
each ePWM register file instance on a device is specified in the appropriate data manual.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 247
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
Table 3-1. ePWM Module Control and Status Register Set Grouped by Submodule
Name
Offset
(1)
Size
(x16)
Shadow
EALLOW
Description
Time-Base Submodule Registers
TBCTL
0x0000
1
Time-Base Control Register
TBSTS
0x0001
1
Time-Base Status Register
TBPHSHR
0x0002
1
Extension for HRPWM Phase Register
TBPHS
0x0003
1
Time-Base Phase Register
TBCTR
0x0004
1
TBPRD
0x0005
1
Yes
Time-Base Period Register
TBPRDHR
0x0006
1
Yes
Time Base Period High Resolution Register
CMPCTL
0x0007
1
CMPAHR
0x0008
1
Yes
Extension for HRPWM Counter-Compare A Register
CMPA
0x0009
1
Yes
Counter-Compare A Register
CMPB
0x000A
1
Yes
Counter-Compare B Register
(2)
Time-Base Counter Register
(3)
Counter-Compare Submodule Registers
Counter-Compare Control Register
(2)
Action-Qualifier Submodule Registers
AQCTLA
0x000B
1
Action-Qualifier Control Register for Output A (EPWMxA)
AQCTLB
0x000C
1
Action-Qualifier Control Register for Output B (EPWMxB)
AQSFRC
0x000D
1
AQCSFRC
0x000E
1
DBCTL
0x000F
1
Dead-Band Generator Control Register
DBRED
0x0010
1
Dead-Band Generator Rising Edge Delay Count Register
DBFED
0x0011
1
Dead-Band Generator Falling Edge Delay Count Register
TZSEL
0x0012
1
Yes
Trip-Zone Select Register
TZDCSEL
0x0013
1
Yes
Trip Zone Digital Compare Select Register
TZCTL
0x0014
1
Yes
Trip-Zone Control Register
TZEINT
0x0015
1
Yes
Trip-Zone Enable Interrupt Register
TZFLG
0x0016
1
TZCLR
0x0017
1
Yes
Trip-Zone Clear Register
(3)
TZFRC
0x0018
1
Yes
Trip-Zone Force Register
(3)
Action-Qualifier Software Force Register
Yes
Action-Qualifier Continuous S/W Force Register Set
Dead-Band Generator Submodule Registers
Trip-Zone Submodule Registers
Trip-Zone Flag Register
(3)
(3)
(3)
Event-Trigger Submodule Registers
ETSEL
0x0019
1
Event-Trigger Selection Register
ETPS
0x001A
1
Event-Trigger Pre-Scale Register
ETFLG
0x001B
1
Event-Trigger Flag Register
ETCLR
0x001C
1
Event-Trigger Clear Register
ETFRC
0x001D
1
Event-Trigger Force Register
PCCTL
0x001E
1
PWM-Chopper Submodule Registers
PWM-Chopper Control Register
High-Resolution Pulse Width Modulator (HRPWM) Extension
Registers
HRCNFG
0x0020
1
Yes
HRPWM Configuration Register
HRPWR
0x0021
1
Yes
HRPWM Power Register
HRMSTEP
0x0026
1
Yes
HRPWM MEP Step Register (3)
(1)
(2)
(3)
(4)
248
(2) (3)
(3) (4)
(4)
Locations not shown are reserved.
These registers are only available on ePWM instances that include the high-resolution PWM extension. Otherwise these locations are
reserved. These registers are described in the High-Resolution Pulse Width Modulator (HRPWM) section of this manual. See the device
specific data manual to determine which instances include the HRPWM.
EALLOW protected registers as described in the specific device version of the System Control and Interrupts Reference Guide.
These registers only exist in the ePWM1 register space. They cannot be accessed from any other ePWM module's register space.
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
Table 3-1. ePWM Module Control and Status Register Set Grouped by Submodule (continued)
Name
Offset
(1)
Size
(x16)
Shadow
EALLOW
Yes
Description
High Resolution Period Control Register (3)
HRPCTL
0x0028
1
TBPRDHRM
0x002A
1
Writes
Time Base Period High Resolution Register Mirror (3)
TBPRDM
0x002B
1
Writes
Time Base Period Register Mirror
CMPAHRM
0x002C
1
Writes
Compare A High Resolution Register Mirror (3)
CMPAM
0x002D
1
Writes
Compare A Register Mirror
DCTRIPSEL
0x0030
1
Yes
Digital Compare Trip Select Register
DCACTL
0x0031
1
Yes
Digital Compare A Control Register
DCBCTL
0x0032
1
Yes
Digital Compare B Control Register
DCFCTL
0x0033
1
Yes
Digital Compare Filter Control Register
DCCAPCTL
0x0034
1
Yes
Digital Compare Capture Control Register
DCFOFFSET
0x0035
1
DCFOFFSETCNT
0x0036
1
Digital Compare Filter Offset Counter Register
DCFWINDOW
0x0037
1
Digital Compare Filter Window Register
DCFWINDOWCNT
0x0038
1
DCCAP
0x0039
1
Digital Compare Event Registers
Writes
Digital Compare Filter Offset Register
Digital Compare Filter Window Counter Register
Yes
Digital Compare Counter Capture Register
The CMPA, CMPAHR, TBPRD, and TBPRDHR registers are mirrored in the register map (Mirror registers
include an "-M" suffix - CMPAM, CMPAHRM, TBPRDM, and TBPRDHRM). Note in the tables below, that
in both Immediate mode and Shadow mode, reads from these mirror registers result in the active value of
the register or a TI internal test value.
In Immediate Mode:
Register
Offset
Write
Read
Register
Offset
Write
Read
TBPRDHR
0x06
Active
Active
TBPRDHRM
0x2A
Active
TI_Internal
TBPRD
0x05
Active
Active
TBPRDM
0x2B
Active
Active
CMPAHR
0x08
Active
Active
CMPAHRM
0x2C
Active
TI_Internal
CMPA
0x09
Active
Active
CMPAM
0x2D
Active
Active
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
249
ePWM Submodules
3.2
www.ti.com
ePWM Submodules
Eight submodules are included in every ePWM peripheral. Each of these submodules performs specific
tasks that can be configured by software.
3.2.1 Overview
Table 3-2 lists the eight key submodules together with a list of their main configuration parameters. For
example, if you need to adjust or control the duty cycle of a PWM waveform, then you should see the
counter-compare submodule in Section 3.2.3 for relevant details.
Table 3-2. Submodule Configuration Parameters
Submodule
Time-base (TB)
Configuration Parameter or Option
• Scale the time-base clock (TBCLK) relative to the system clock (SYSCLKOUT).
• Configure the PWM time-base counter (TBCTR) frequency or period.
• Set the mode for the time-base counter:
•
•
•
•
•
–
count-up mode: used for asymmetric PWM
–
count-down mode: used for asymmetric PWM
– count-up-and-down mode: used for symmetric PWM
Configure the time-base phase relative to another ePWM module.
Synchronize the time-base counter between modules through hardware or software.
Configure the direction (up or down) of the time-base counter after a synchronization event.
Configure how the time-base counter will behave when the device is halted by an emulator.
Specify the source for the synchronization output of the ePWM module:
–
Synchronization input signal
–
Time-base counter equal to zero
–
Time-base counter equal to counter-compare B (CMPB)
–
No output synchronization signal generated.
Counter-compare (CC)
• Specify the PWM duty cycle for output EPWMxA and/or output EPWMxB
• Specify the time at which switching events occur on the EPWMxA or EPWMxB output
Action-qualifier (AQ)
• Specify the type of action taken when a time-base or counter-compare submodule event occurs:
–
No action taken
–
Output EPWMxA and/or EPWMxB switched high
–
Output EPWMxA and/or EPWMxB switched low
– Output EPWMxA and/or EPWMxB toggled
• Force the PWM output state through software control
• Configure and control the PWM dead-band through software
Dead-band (DB)
•
•
•
•
PWM-chopper (PC)
•
•
•
•
Control of traditional complementary dead-band relationship between upper and lower switches
Specify the output rising-edge-delay value
Specify the output falling-edge delay value
Bypass the dead-band module entirely. In this case the PWM waveform is passed through
without modification.
• Option to enable half-cycle clocking for double resolution.
Create a chopping (carrier) frequency.
Pulse width of the first pulse in the chopped pulse train.
Duty cycle of the second and subsequent pulses.
Bypass the PWM-chopper module entirely. In this case the PWM waveform is passed through
without modification.
250 Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Table 3-2. Submodule Configuration Parameters (continued)
Submodule
Trip-zone (TZ)
Configuration Parameter or Option
• Configure the ePWM module to react to one, all, or none of the trip-zone signals or digital
compare events.
• Specify the tripping action taken when a fault occurs:
–
Force EPWMxA and/or EPWMxB high
–
Force EPWMxA and/or EPWMxB low
–
Force EPWMxA and/or EPWMxB to a high-impedance state
– Configure EPWMxA and/or EPWMxB to ignore any trip condition.
• Configure how often the ePWM will react to each trip-zone signal:
–
One-shot
– Cycle-by-cycle
• Enable the trip-zone to initiate an interrupt.
• Bypass the trip-zone module entirely.
Event-trigger (ET)
• Enable the ePWM events that will trigger an interrupt.
• Enable ePWM events that will trigger an ADC start-of-conversion event.
• Specify the rate at which events cause triggers (every occurrence or every second or third
occurrence)
• Poll, set, or clear event flags
Digital-compare (DC)
• Enables comparator (COMP) module outputs and trip zone signals to create events and filtered
events
• Specify event-filtering options to capture TBCTR counter or generate blanking window
Code examples are provided in the remainder of this document that show how to implement various
ePWM module configurations. These examples use the constant definitions in the device EPwm_defines.h
file in the device-specific header file and peripheral examples software package.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
251
ePWM Submodules
www.ti.com
3.2.2 Time-Base (TB) Submodule
Each ePWM module has its own time-base submodule that determines all of the event timing for the
ePWM module. Built-in synchronization logic allows the time-base of multiple ePWM modules to work
together as a single system. Figure 3-4 illustrates the time-base module's place within the ePWM.
Figure 3-4. Time-Base Submodule Block Diagram
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
Event
Trigger
and
EPWMxINT
Interrupt
(ET)
PIE
EPWMxSOCA
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPB
PWMchopper
(PC)
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
GPIO
MUX
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
3.2.2.1
Digital
Compare
(DC)
COMPxOUT
COMP
Purpose of the Time-Base Submodule
You can configure the time-base submodule for the following:
• Specify the ePWM time-base counter (TBCTR) frequency or period to control how often events occur.
• Manage time-base synchronization with other ePWM modules.
• Maintain a phase relationship with other ePWM modules.
• Set the time-base counter to count-up, count-down, or count-up-and-down mode.
• Generate the following events:
– CTR = PRD: Time-base counter equal to the specified period (TBCTR = TBPRD) .
– CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000).
• Configure the rate of the time-base clock; a prescaled version of the CPU system clock
(SYSCLKOUT). This allows the time-base counter to increment/decrement at a slower rate.
252
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.2.2
Controlling and Monitoring the Time-base Submodule
Table 3-3 shows the registers used to control and monitor the time-base submodule.
Table 3-3. Time-Base Submodule Registers
Register
Address offset
Shadowed
TBCTL
0x0000
No
Time-Base Control Register
TBSTS
0x0001
No
Time-Base Status Register
TBPHSHR
0x0002
No
HRPWM Extension Phase Register
TBPHS
0x0003
No
Time-Base Phase Register
TBCTR
0x0004
No
Time-Base Counter Register
TBPRD
0x0005
Yes
Time-Base Period Register
TBPRDHR
0x0006
Yes
HRPWM Extension Period Register (1)
TBPRDHRM
0x002A
Yes
HRPWM Time-Base Period Extension Mirror Register (1)
TBPRDM
0x002B
Yes
HRPWM Extension Period Mirror Register (1)
(1)
Description
(1)
This register is available only on ePWM instances that include the high-resolution extension (HRPWM). On ePWM modules that
do not include the HRPWM, this location is reserved. This register is described in the device-specific High-Resolution Pulse
Width Modulator (HRPWM) Reference Guide. See the device specific data manual to determine which ePWM instances include
this feature.
The block diagram in Figure 3-5 shows the critical signals and registers of the time-base submodule.
Table 3-4 provides descriptions of the key signals associated with the time-base submodule.
Figure 3-5. Time-Base Submodule Signals and Registers
TBPRD
Period Shadow
TBCTL[PRDLD]
TBPRD
Period Active
DCAEVT1.sync
16
(1)
DCBEVT1.sync(A)
TBCTL[SWFSYNC]
CTR = PRD
TBCTR[15:0]
EPWMxSYNCI
16
CTR = Zero
Reset
Zero Counter
UP/DOWN Mode
Dir
Load
Max
CTR_dir
CTR_max
TBCLK
TBCTL[CTRMODE]
CTR = Zero
clk
TBCTR
Counter Active Reg
TBCTL[PHSEN]
CTR = CMPB
X
Disable
Sync
Out
Select
EPWMxSYNCO
16
TBPHS
Phase Active Reg
SYSCLKOUT
Clock
Prescale
TBCTL[SYNCOSEL]
TBCLK
TBCTL[HSPCLKDIV]
TBCTL[CLKDIV]
A. These signals are generated by the digital compare (DC) submodule.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
253
ePWM Submodules
www.ti.com
Table 3-4. Key Time-Base Signals
Signal
Description
EPWMxSYNCI
Time-base synchronization input.
Input pulse used to synchronize the time-base counter with the counter of ePWM module earlier in the
synchronization chain. An ePWM peripheral can be configured to use or ignore this signal. For the first ePWM
module (EPWM1) this signal comes from a device pin. For subsequent ePWM modules this signal is passed
from another ePWM peripheral. For example, EPWM2SYNCI is generated by the ePWM1 peripheral,
EPWM3SYNCI is generated by ePWM2 and so forth. See Section 3.2.2.3.3 for information on the
synchronization order of a particular device.
EPWMxSYNCO
Time-base synchronization output.
This output pulse is used to synchronize the counter of an ePWM module later in the synchronization chain.
The ePWM module generates this signal from one of three event sources:
1.
2.
3.
CTR = PRD
EPWMxSYNCI (Synchronization input pulse)
CTR = Zero: The time-base counter equal to zero (TBCTR = 0x0000).
CTR = CMPB: The time-base counter equal to the counter-compare B (TBCTR = CMPB) register.
Time-base counter equal to the specified period.
This signal is generated whenever the counter value is equal to the active period register value. That is when
TBCTR = TBPRD.
CTR = Zero
Time-base counter equal to zero
This signal is generated whenever the counter value is zero. That is when TBCTR equals 0x0000.
CTR = CMPB
Time-base counter equal to active counter-compare B register (TBCTR = CMPB).
This event is generated by the counter-compare submodule and used by the synchronization out logic
CTR_dir
Time-base counter direction.
Indicates the current direction of the ePWM's time-base counter. This signal is high when the counter is
increasing and low when it is decreasing.
CTR_max
Time-base counter equal max value. (TBCTR = 0xFFFF)
Generated event when the TBCTR value reaches its maximum value. This signal is only used only as a status
bit
TBCLK
Time-base clock.
This is a prescaled version of the system clock (SYSCLKOUT) and is used by all submodules within the
ePWM. This clock determines the rate at which time-base counter increments or decrements.
3.2.2.3
Calculating PWM Period and Frequency
The frequency of PWM events is controlled by the time-base period (TBPRD) register and the mode of the
time-base counter. Figure 3-6 shows the period (Tpwm) and frequency (Fpwm) relationships for the up-count,
down-count, and up-down-count time-base counter modes when when the period is set to 4 (TBPRD = 4).
The time increment for each step is defined by the time-base clock (TBCLK) which is a prescaled version
of the system clock (SYSCLKOUT).
The time-base counter has three modes of operation selected by the time-base control register (TBCTL):
• Up-Down-Count Mode:
In up-down-count mode, the time-base counter starts from zero and increments until the period
(TBPRD) value is reached. When the period value is reached, the time-base counter then decrements
until it reaches zero. At this point the counter repeats the pattern and begins to increment.
• Up-Count Mode:
In this mode, the time-base counter starts from zero and increments until it reaches the value in the
period register (TBPRD). When the period value is reached, the time-base counter resets to zero and
begins to increment once again.
• Down-Count Mode:
In down-count mode, the time-base counter starts from the period (TBPRD) value and decrements until
it reaches zero. When it reaches zero, the time-base counter is reset to the period value and it begins
to decrement once again.
254
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-6. Time-Base Frequency and Period
TPWM
4
PRD
4
4
3
3
2
3
2
1
2
1
0
Z 1
0
0
For Up Count and Down Count
TPWM
4
4
3
TPWM = (TBPRD + 1) x TTBCLK
FPWM = 1/ (TPWM)
PRD
4
3
2
3
2
1
2
1
0
1 Z
0
0
TPWM
TPWM
4
3
3
1
3
2
2
1
0
3.2.2.3.1
3
2
2
CTR_dir
1
1
0
0
Up
For Up and Down Count
TPWM = 2 x TBPRD x TTBCLK
FPWM = 1 / (TPWM)
4
Down
Up
Down
Time-Base Period Shadow Register
The time-base period register (TBPRD) has a shadow register. Shadowing allows the register update to
be synchronized with the hardware. The following definitions are used to describe all shadow registers in
the ePWM module:
• Active Register
The active register controls the hardware and is responsible for actions that the hardware causes or
invokes.
• Shadow Register
The shadow register buffers or provides a temporary holding location for the active register. It has no
direct effect on any control hardware. At a strategic point in time the shadow register's content is
transferred to the active register. This prevents corruption or spurious operation due to the register
being asynchronously modified by software.
The memory address of the shadow period register is the same as the active register. Which register is
written to or read from is determined by the TBCTL[PRDLD] bit. This bit enables and disables the TBPRD
shadow register as follows:
•
•
Time-Base Period Shadow Mode:
The TBPRD shadow register is enabled when TBCTL[PRDLD] = 0. Reads from and writes to the
TBPRD memory address go to the shadow register. The shadow register contents are transferred to
the active register (TBPRD (Active) ← TBPRD (shadow)) when the time-base counter equals zero
(TBCTR = 0x0000). By default the TBPRD shadow register is enabled.
Time-Base Period Immediate Load Mode:
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
255
ePWM Submodules
www.ti.com
If immediate load mode is selected (TBCTL[PRDLD] = 1), then a read from or a write to the TBPRD
memory address goes directly to the active register.
3.2.2.3.2 Time-Base Clock Synchronization
The TBCLKSYNC bit in the peripheral clock enable registers allows all users to globally synchronize all
enabled ePWM modules to the time-base clock (TBCLK). When set, all enabled ePWM module clocks are
started with the first rising edge of TBCLK aligned. For perfectly synchronized TBCLKs, the prescalers for
each ePWM module must be set identically.
The proper procedure for enabling ePWM clocks is as follows:
1. Enable ePWM module clocks in the PCLKCRx register
2. Set TBCLKSYNC= 0
3. Configure ePWM modules
4. Set TBCLKSYNC=1
3.2.2.3.3
Time-Base Counter Synchronization
A time-base synchronization scheme connects all of the ePWM modules on a device. Each ePWM
module has a synchronization input (EPWMxSYNCI) and a synchronization output (EPWMxSYNCO). The
input synchronization for the first instance (ePWM1) comes from an external pin. The possible
synchronization connections for the remaining ePWM modules are shown in Figure 3-7, Figure 3-8, and
Figure 3-9.
Scheme 1 shown in Figure 3-7 applies to the 280x, 2801x, 2802x, 2803x, and 2806x devices. Scheme 1
also applies to the 2804x devices when the ePWM pinout is configured for 280x compatible mode
(GPAMCFG[EPWMMODE] = 0).
256
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-7. Time-Base Counter Synchronization Scheme 1
EPWM1SYNCI
GPIO
MUX
ePWM1
EPWM1SYNCO
SYNCI
eCAP1
EPWM2SYNCI
ePWM2
EPWM2SYNCO
EPWM3SYNCI
ePWM3
EPWM3SYNCO
EPWMxSYNCI
ePWMx
EPWMxSYNCO
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
257
ePWM Submodules
www.ti.com
Scheme 2 shown in Figure 3-8 is used by the 2804x devices when the ePWM pinout is configured for Achannel only mode (GPAMCFG[EPWMMODE] = 3). If the 2804x ePWM pinout is configured for 280x
compatible mode (GPAMCFG[EPWMMODE] = 0), then Scheme 1 is used.
Figure 3-8. Time-Base Counter Synchronization Scheme 2
EPWM1SYNCI
ePWM1
GPIO
EPWM1SYNCO
MUX
SYNCI
eCAP1
258
EPWM13SYNCI
EPWM9SYNCI
EPWM5SYNCI
EPWM2SYNCI
ePWM13
ePWM9
ePWM5
ePWM2
EPWM13SYnCO
EPWM9SYNCO
EPWM5SYNCO
EPWM2SYNCO
EPWM14SYNCI
EPWM10SYNCI
EPWM6SYNCI
EPWM3SYNCI
ePWM14
ePWM10
ePWM6
ePWM3
EPWM14SYNCO
EPWM10SYNCO
EPWM36YNCO
EPWM3SYNCO
EPWM15SYNCI
EPWM11SYNCI
EPWM7SYNCI
EPWM4SYNCI
ePWM15
ePWM11
ePWM7
ePWM4
EPWM15SYNCO
EPWM11SYNCO
EPWM7SYNCO
EPWM4SYNCO
EPWM16SYNCI
EPWM12SYNCI
EPWM8SYNCI
ePWM16
ePWM12
ePWM8
EPWM16SYNCO
EPWM12SYNCO
EPWM8SYNCO
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Scheme 3, shown in Figure 3-9, is used by all other devices.
Figure 3-9. Time-Base Counter Synchronization Scheme 3
eCAP4
EPWM1SYNCI
ePWM1
GPIO
MUX
EPWM1SYNCO
SYNCI
eCAP1
EPWM7SYNCI
EPWM4SYNCI
EPWM2SYNCI
ePWM7
ePWM4
ePWM2
EPWM7SYNCO
EPWM4SYNCO
EPWM2SYNCO
EPWM8SYNCI
EPWM5SYNCI
EPWM3SYNCI
ePWM8
ePWM5
ePWM3
EPWM8SYNCO
EPWM5SYNCO
EPWM3SYNCO
EPWM9SYNCI
EPWM6SYNCI
ePWM9
ePWM6
NOTE: All modules shown in the synchronization schemes may not be available on all devices.
Please refer to the device specific data manual to determine which modules are available on
a particular device.
Each ePWM module can be configured to use or ignore the synchronization input. If the TBCTL[PHSEN]
bit is set, then the time-base counter (TBCTR) of the ePWM module will be automatically loaded with the
phase register (TBPHS) contents when one of the following conditions occur:
• EPWMxSYNCI: Synchronization Input Pulse:
The value of the phase register is loaded into the counter register when an input synchronization pulse
is detected (TBPHS → TBCTR). This operation occurs on the next valid time-base clock (TBCLK)
edge.
The delay from internal master module to slave modules is given by:
– if ( TBCLK = SYSCLKOUT): 2 x SYSCLKOUT
– if ( TBCLK != SYSCLKOUT):1 TBCLK
• Software Forced Synchronization Pulse:
Writing a 1 to the TBCTL[SWFSYNC] control bit invokes a software forced synchronization. This pulse
is ORed with the synchronization input signal, and therefore has the same effect as a pulse on
EPWMxSYNCI.
• Digital Compare Event Synchronization Pulse:
DCAEVT1 and DCBEVT1 digital compare events can be configured to generate synchronization
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
259
ePWM Submodules
www.ti.com
pulses which have the same affect as EPWMxSYNCI.
This feature enables the ePWM module to be automatically synchronized to the time base of another
ePWM module. Lead or lag phase control can be added to the waveforms generated by different ePWM
modules to synchronize them. In up-down-count mode, the TBCTL[PSHDIR] bit configures the direction of
the time-base counter immediately after a synchronization event. The new direction is independent of the
direction prior to the synchronization event. The PHSDIR bit is ignored in count-up or count-down modes.
See Figure 3-10 through Figure 3-13 for examples.
Clearing the TBCTL[PHSEN] bit configures the ePWM to ignore the synchronization input pulse. The
synchronization pulse can still be allowed to flow-through to the EPWMxSYNCO and be used to
synchronize other ePWM modules. In this way, you can set up a master time-base (for example, ePWM1)
and downstream modules (ePWM2 - ePWMx) may elect to run in synchronization with the master. See
the Application to Power Topologies Section 3.3 for more details on synchronization strategies.
3.2.2.4
Phase Locking the Time-Base Clocks of Multiple ePWM Modules
The TBCLKSYNC bit can be used to globally synchronize the time-base clocks of all enabled ePWM
modules on a device. This bit is part of the device's clock enable registers and is described in the System
Control and Interrupts section of this manual. When TBCLKSYNC = 0, the time-base clock of all ePWM
modules is stopped (default). When TBCLKSYNC = 1, all ePWM time-base clocks are started with the
rising edge of TBCLK aligned. For perfectly synchronized TBCLKs, the prescaler bits in the TBCTL
register of each ePWM module must be set identically. The proper procedure for enabling the ePWM
clocks is as follows:
1. Enable the individual ePWM module clocks. This is described in the device-specific version of the
System Control and Interrupts Reference Guide.
2. Set TBCLKSYNC = 0. This will stop the time-base clock within any enabled ePWM module.
3. Configure the prescaler values and desired ePWM modes.
4. Set TBCLKSYNC = 1.
3.2.2.5
Time-base Counter Modes and Timing Waveforms
The time-base counter operates in one of four modes:
• Up-count mode which is asymmetrical
• Down-count mode which is asymmetrical
• Up-down-count which is symmetrical
• Frozen where the time-base counter is held constant at the current value
To illustrate the operation of the first three modes, the following timing diagrams show when events are
generated and how the time-base responds to an EPWMxSYNCI signal.
260
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-10. Time-Base Up-Count Mode Waveforms
TBCTR[15:0]
0xFFFF
TBPRD
(value)
TBPHS
(value)
0000
EPWMxSYNCI
CTR_dir
CTR = zero
CTR = PRD
CNT_max
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
261
ePWM Submodules
www.ti.com
Figure 3-11. Time-Base Down-Count Mode Waveforms
TBCTR[15:0]
0xFFFF
TBPRD
(value)
TBPHS
(value)
0x000
EPWMxSYNCI
CTR_dir
CTR = zero
CTR = PRD
CNT_max
Figure 3-12. Time-Base Up-Down-Count Waveforms, TBCTL[PHSDIR = 0] Count Down On
Synchronization Event
TBCTR[15:0]
0xFFFF
TBPRD
(value)
TBPHS
(value)
0x0000
EPWMxSYNCI
UP
UP
UP
UP
CTR_dir
DOWN
DOWN
DOWN
CTR = zero
CTR = PRD
CNT_max
262
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-13. Time-Base Up-Down Count Waveforms, TBCTL[PHSDIR = 1] Count Up On Synchronization
Event
TBCTR[15:0]
0xFFFF
TBPRD (value)
TBPHS (value)
0x0000
EPWMxSYNCI
UP
UP
UP
CTR_dir
DOWN
DOWN
DOWN
CTR = zero
CTR = PRD
CNT_max
3.2.3 Counter-Compare (CC) Submodule
Figure 3-14 illustrates the counter-compare submodule within the ePWM.
Figure 3-14. Counter-Compare Submodule
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
Event
Trigger
and
EPWMxINT
EPWMxSOCA
Interrupt
(ET)
PIE
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPB
PWMchopper
(PC)
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
GPIO
MUX
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
Digital
Compare
(DC)
COMPxOUT
COMP
Figure 3-15 shows the basic structure of the counter-compare submodule.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
263
ePWM Submodules
3.2.3.1
www.ti.com
Purpose of the Counter-Compare Submodule
The counter-compare submodule takes as input the time-base counter value. This value is continuously
compared to the counter-compare A (CMPA) and counter-compare B (CMPB) registers. When the timebase counter is equal to one of the compare registers, the counter-compare unit generates an appropriate
event.
The counter-compare:
• Generates events based on programmable time stamps using the CMPA and CMPB registers
– CTR = CMPA: Time-base counter equals counter-compare A register (TBCTR = CMPA)
– CTR = CMPB: Time-base counter equals counter-compare B register (TBCTR = CMPB)
• Controls the PWM duty cycle if the action-qualifier submodule is configured appropriately
• Shadows new compare values to prevent corruption or glitches during the active PWM cycle
3.2.3.2
Controlling and Monitoring the Counter-Compare Submodule
The counter-compare submodule operation is controlled and monitored by the registers shown in Table 35:
Table 3-5. Counter-Compare Submodule Registers
Address Offset
Shadowed
CMPCTL
Register Name
0x0007
No
Counter-Compare Control Register.
CMPAHR
0x0008
Yes
HRPWM Counter-Compare A Extension Register
CMPA
0x0009
Yes
Counter-Compare A Register
CMPB
0x000A
Yes
Counter-Compare B Register
CMPAHRM
0x002C
Writes
HRPWM counter-compare A Extension Mirror Register (1)
CMPAM
0x002D
Writes
Counter-compare A mirror Register
(1)
264
Description
(1)
This register is available only on ePWM modules with the high-resolution extension (HRPWM). On ePWM modules that do not
include the HRPWM this location is reserved. This register is described in the device-specific High-Resolution Pulse Width
Modulator (HRPWM) section of this manual. Refer to the device specific data manual to determine which ePWM instances
include this feature.
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-15. Detailed View of the Counter-Compare Submodule
Time
Base
(TB)
Module
TBCTR[15:0] 16
CTR = CMPA
CMPA[15:0]
CTR = PRD
CTR =0
Shadow
load
16
CMPA
Compare A Active Reg.
CMPA
Compare A Shadow Reg.
CMPCTL[LOADAMODE]
TBCTR[15:0]
Digital
comparator A
CMPCTL
[SHDWAFULL]
CMPCTL
[SHDWAMODE]
Action
Qualifier
(AQ)
Module
16
CTR = CMPB
CMPB[15:0] 16
CTR = PRD
CTR = 0
Shadow
load
Digital
comparator B
CMPB
Compare B Active Reg.
CMPB
Compare B Shadow Reg.
CMPCTL[SHDWBFULL]
CMPCTL[SHDWBMODE]
CMPCTL[LOADBMODE]
The key signals associated with the counter-compare submodule are described in Table 3-6.
Table 3-6. Counter-Compare Submodule Key Signals
3.2.3.3
Signal
Description of Event
Registers Compared
CTR = CMPA
Time-base counter equal to the active counter-compare A value
TBCTR = CMPA
CTR = CMPB
Time-base counter equal to the active counter-compare B value
TBCTR = CMPB
CTR = PRD
Time-base counter equal to the active period.
Used to load active counter-compare A and B registers from the
shadow register
TBCTR = TBPRD
CTR = ZERO
Time-base counter equal to zero.
Used to load active counter-compare A and B registers from the
shadow register
TBCTR = 0x0000
Operational Highlights for the Counter-Compare Submodule
The counter-compare submodule is responsible for generating two independent compare events based on
two compare registers:
1. CTR = CMPA: Time-base counter equal to counter-compare A register (TBCTR = CMPA)
2. CTR = CMPB: Time-base counter equal to counter-compare B register (TBCTR = CMPB)
For up-count or down-count mode, each event occurs only once per cycle. For up-down-count mode each
event occurs twice per cycle if the compare value is between 0x0000-TBPRD and once per cycle if the
compare value is equal to 0x0000 or equal to TBPRD. These events are fed into the action-qualifier
submodule where they are qualified by the counter direction and converted into actions if enabled. Refer
to Section 3.2.4.1 for more details.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
265
ePWM Submodules
www.ti.com
The counter-compare registers CMPA and CMPB each have an associated shadow register. Shadowing
provides a way to keep updates to the registers synchronized with the hardware. When shadowing is
used, updates to the active registers only occur at strategic points. This prevents corruption or spurious
operation due to the register being asynchronously modified by software. The memory address of the
active register and the shadow register is identical. Which register is written to or read from is determined
by the CMPCTL[SHDWAMODE] and CMPCTL[SHDWBMODE] bits. These bits enable and disable the
CMPA shadow register and CMPB shadow register respectively. The behavior of the two load modes is
described below:
Shadow Mode:
The shadow mode for the CMPA is enabled by clearing the CMPCTL[SHDWAMODE] bit and the shadow
register for CMPB is enabled by clearing the CMPCTL[SHDWBMODE] bit. Shadow mode is enabled by
default for both CMPA and CMPB.
If the shadow register is enabled then the content of the shadow register is transferred to the active
register on one of the following events as specified by the CMPCTL[LOADAMODE] and
CMPCTL[LOADBMODE] register bits:
• CTR = PRD: Time-base counter equal to the period (TBCTR = TBPRD)
• CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
• Both CTR = PRD and CTR = Zero
Only the active register contents are used by the counter-compare submodule to generate events to be
sent to the action-qualifier.
Immediate Load Mode:
If immediate load mode is selected (TBCTL[SHADWAMODE] = 1 or TBCTL[SHADWBMODE] = 1), then a
read from or a write to the register will go directly to the active register.
3.2.3.4
Count Mode Timing Waveforms
The counter-compare module can generate compare events in all three count modes:
• Up-count mode: used to generate an asymmetrical PWM waveform
• Down-count mode: used to generate an asymmetrical PWM waveform
• Up-down-count mode: used to generate a symmetrical PWM waveform
To best illustrate the operation of the first three modes, the timing diagrams in Figure 3-16 through
Figure 3-19 show when events are generated and how the EPWMxSYNCI signal interacts.
266
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-16. Counter-Compare Event Waveforms in Up-Count Mode
TBCTR[15:0]
0xFFFF
TBPRD
(value)
CMPA
(value)
CMPB
(value)
TBPHS
(value)
0x0000
EPWMxSYNCI
CTR = CMPA
CTR = CMPB
NOTE: An EPWMxSYNCI external synchronization event can cause a discontinuity in the TBCTR count
sequence. This can lead to a compare event being skipped. This skipping is considered normal operation and
must be taken into account.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
267
ePWM Submodules
www.ti.com
Figure 3-17. Counter-Compare Events in Down-Count Mode
TBCTR[15:0]
0xFFFF
TBPRD
(value)
CMPA
(value)
CMPB
(value)
TBPHS
(value)
0x0000
EPWMxSYNCI
CTR = CMPA
CTR = CMPB
268
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-18. Counter-Compare Events In Up-Down-Count Mode, TBCTL[PHSDIR = 0] Count Down On
Synchronization Event
TBCTR[15:0]
0xFFFF
TBPRD (value)
CMPA (value)
CMPB (value)
TBPHS (value)
0x0000
EPWMxSYNCI
CTR = CMPB
CTR = CMPA
Figure 3-19. Counter-Compare Events In Up-Down-Count Mode, TBCTL[PHSDIR = 1] Count Up On
Synchronization Event
TBCTR[15:0]
0xFFFF
TBPRD
(value)
CMPA
(value)
CMPB
(value)
TBPHS
(value)
0x0000
EPWMxSYNCI
CTR = CMPB
CTR = CMPA
3.2.4 Action-Qualifier (AQ) Submodule
Figure 3-20 shows the action-qualifier (AQ) submodule (see shaded block) in the ePWM system.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
269
ePWM Submodules
www.ti.com
Figure 3-20. Action-Qualifier Submodule
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
CTR = 0
Event
Trigger
and
EPWMxINT
PIE
EPWMxSOCA
Interrupt
(ET)
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPA
Counter
Compare
(CC)
CTR = CMPB
PWMchopper
(PC)
GPIO
MUX
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
Digital
Compare
(DC)
COMPxOUT
COMP
The action-qualifier submodule has the most important role in waveform construction and PWM
generation. It decides which events are converted into various action types, thereby producing the
required switched waveforms at the EPWMxA and EPWMxB outputs.
3.2.4.1
Purpose of the Action-Qualifier Submodule
The action-qualifier submodule is responsible for the following:
• Qualifying and generating actions (set, clear, toggle) based on the following events:
– CTR = PRD: Time-base counter equal to the period (TBCTR = TBPRD).
– CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
– CTR = CMPA: Time-base counter equal to the counter-compare A register (TBCTR = CMPA)
– CTR = CMPB: Time-base counter equal to the counter-compare B register (TBCTR = CMPB)
• Managing priority when these events occur concurrently
• Providing independent control of events when the time-base counter is increasing and when it is
decreasing
3.2.4.2
Action-Qualifier Submodule Control and Status Register Definitions
The action-qualifier submodule operation is controlled and monitored via the registers in Table 3-7.
Table 3-7. Action-Qualifier Submodule Registers
Register
Name
270
Address offset
Shadowed
AQCTLA
0x000B
No
Action-Qualifier Control Register For Output A (EPWMxA)
AQCTLB
0x000C
No
Action-Qualifier Control Register For Output B (EPWMxB)
AQSFRC
0x000D
No
Action-Qualifier Software Force Register
AQCSFRC
0x000E
Yes
Action-Qualifier Continuous Software Force
Enhanced Pulse Width Modulator (ePWM) Module
Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
The action-qualifier submodule is based on event-driven logic. It can be thought of as a programmable
cross switch with events at the input and actions at the output, all of which are software controlled via the
set of registers shown in Table 3-7.
Figure 3-21. Action-Qualifier Submodule Inputs and Outputs
Action-qualifier (AQ) Module
TBCLK
EPWMA
AQCTLA[15:0]
Action-qualifier control A
CTR = PRD
AQCTLB[15:0]
Action-qualifier control B
CTR = Zero
CTR = CMPA
AQSFRC[15:0]
Action-qualifier S/W force
CTR = CMPB
EPWMB
AQCSFRC[3:0] (shadow)
continuous S/W force
CTR_dir
AQCSFRC[3:0] (active)
continuous S/W force
For convenience, the possible input events are summarized again in Table 3-8.
Table 3-8. Action-Qualifier Submodule Possible Input Events
Signal
Description
Registers Compared
CTR = PRD
Time-base counter equal to the period value
TBCTR = TBPRD
CTR = Zero
Time-base counter equal to zero
TBCTR = 0x0000
CTR = CMPA
Time-base counter equal to the counter-compare A
TBCTR = CMPA
CTR = CMPB
Time-base counter equal to the counter-compare B
TBCTR = CMPB
Software forced event
Asynchronous event initiated by software
The software forced action is a useful asynchronous event. This control is handled by registers AQSFRC
and AQCSFRC.
The action-qualifier submodule controls how the two outputs EPWMxA and EPWMxB behave when a
particular event occurs. The event inputs to the action-qualifier submodule are further qualified by the
counter direction (up or down). This allows for independent action on outputs on both the count-up and
count-down phases.
The possible actions imposed on outputs EPWMxA and EPWMxB are:
• Set High:
Set output EPWMxA or EPWMxB to a high level.
• Clear Low:
Set output EPWMxA or EPWMxB to a low level.
• Toggle:
If EPWMxA or EPWMxB is currently pulled high, then pull the output low. If EPWMxA or EPWMxB is
currently pulled low, then pull the output high.
• Do Nothing:
Keep outputs EPWMxA and EPWMxB at same level as currently set. Although the "Do Nothing" option
prevents an event from causing an action on the EPWMxA and EPWMxB outputs, this event can still
trigger interrupts and ADC start of conversion. See the Event-trigger Submodule description in
Section 3.2.8 for details.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
271
ePWM Submodules
www.ti.com
Actions are specified independently for either output (EPWMxA or EPWMxB). Any or all events can be
configured to generate actions on a given output. For example, both CTR = CMPA and CTR = CMPB can
operate on output EPWMxA. All qualifier actions are configured via the control registers found at the end
of this section.
For clarity, the drawings in this document use a set of symbolic actions. These symbols are summarized in
Figure 3-22. Each symbol represents an action as a marker in time. Some actions are fixed in time (zero
and period) while the CMPA and CMPB actions are moveable and their time positions are programmed
via the counter-compare A and B registers, respectively. To turn off or disable an action, use the "Do
Nothing option"; it is the default at reset.
Figure 3-22. Possible Action-Qualifier Actions for EPWMxA and EPWMxB Outputs
TB Counter equals:
Actions
S/W
force
Zero
Comp
A
Comp
B
Period
SW
Z
CA
CB
P
SW
Z
CA
CB
P
SW
Z
CA
CB
P
Do Nothing
Clear Low
Set High
SW
T
272
Z
T
CA
T
Enhanced Pulse Width Modulator (ePWM) Module
CB
T
P
T
Toggle
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.4.3
Action-Qualifier Event Priority
It is possible for the ePWM action qualifier to receive more than one event at the same time. In this case
events are assigned a priority by the hardware. The general rule is events occurring later in time have a
higher priority and software forced events always have the highest priority. The event priority levels for updown-count mode are shown in Table 3-9. A priority level of 1 is the highest priority and level 7 is the
lowest. The priority changes slightly depending on the direction of TBCTR.
Table 3-9. Action-Qualifier Event Priority for Up-Down-Count Mode
Priority Level
Event If TBCTR is Incrementing
TBCTR = Zero up to TBCTR = TBPRD
Event If TBCTR is Decrementing
TBCTR = TBPRD down to TBCTR = 1
Software forced event
Software forced event
2
Counter equals CMPB on up-count (CBU)
Counter equals CMPB on down-count (CBD)
3
Counter equals CMPA on up-count (CAU)
Counter equals CMPA on down-count (CAD)
4
Counter equals zero
Counter equals period (TBPRD)
5
Counter equals CMPB on down-count (CBD)
Counter equals CMPB on up-count (CBU)
6 (Lowest)
Counter equals CMPA on down-count (CAD)
Counter equals CMPA on up-count (CBU)
1 (Highest)
Table 3-10 shows the action-qualifier priority for up-count mode. In this case, the counter direction is
always defined as up and thus down-count events will never be taken.
Table 3-10. Action-Qualifier Event Priority for Up-Count Mode
Priority Level
Event
1 (Highest)
Software forced event
2
Counter equal to period (TBPRD)
3
Counter equal to CMPB on up-count (CBU)
4
Counter equal to CMPA on up-count (CAU)
5 (Lowest)
Counter equal to Zero
Table 3-11 shows the action-qualifier priority for down-count mode. In this case, the counter direction is
always defined as down and thus up-count events will never be taken.
Table 3-11. Action-Qualifier Event Priority for Down-Count Mode
Priority Level
Event
1 (Highest)
Software forced event
2
Counter equal to Zero
3
Counter equal to CMPB on down-count (CBD)
4
Counter equal to CMPA on down-count (CAD)
5 (Lowest)
Counter equal to period (TBPRD)
It is possible to set the compare value greater than the period. In this case the action will take place as
shown in Table 3-12.
Table 3-12. Behavior if CMPA/CMPB is Greater than the Period
Counter Mode
Compare on Up-Count Event
CAU/CBU
Compare on Down-Count Event
CAD/CBD
Up-Count Mode
If CMPA/CMPB ≤ TBPRD period, then the event
occurs on a compare match (TBCTR=CMPA or
CMPB).
Never occurs.
If CMPA/CMPB > TBPRD, then the event will not
occur.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 273
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Table 3-12. Behavior if CMPA/CMPB is Greater than the Period (continued)
Counter Mode
Compare on Up-Count Event
CAU/CBU
Down-Count Mode Never occurs.
Compare on Down-Count Event
CAD/CBD
If CMPA/CMPB < TBPRD, the event will occur on a
compare match (TBCTR=CMPA or CMPB).
If CMPA/CMPB ≥ TBPRD, the event will occur on a
period match (TBCTR=TBPRD).
Up-Down-Count
Mode
3.2.4.4
If CMPA/CMPB < TBPRD and the counter is
incrementing, the event occurs on a compare match
(TBCTR=CMPA or CMPB).
If CMPA/CMPB < TBPRD and the counter is
decrementing, the event occurs on a compare match
(TBCTR=CMPA or CMPB).
If CMPA/CMPB is ≥ TBPRD, the event will occur on a
period match (TBCTR = TBPRD).
If CMPA/CMPB ≥ TBPRD, the event occurs on a
period match (TBCTR=TBPRD).
Waveforms for Common Configurations
NOTE:
The waveforms in this document show the ePWMs behavior for a static compare register
value. In a running system, the active compare registers (CMPA and CMPB) are typically
updated from their respective shadow registers once every period. The user specifies when
the update will take place; either when the time-base counter reaches zero or when the timebase counter reaches period. There are some cases when the action based on the new
value can be delayed by one period or the action based on the old value can take effect for
an extra period. Some PWM configurations avoid this situation. These include, but are not
limited to, the following:
Use up-down-count mode to generate a symmetric PWM:
• If you load CMPA/CMPB on zero, then use CMPA/CMPB values greater
than or equal to 1.
• If you load CMPA/CMPB on period, then use CMPA/CMPB values less than
or equal to TBPRD-1.
This means there will always be a pulse of at least one TBCLK cycle in a
PWM period which, when very short, tend to be ignored by the system.
Use up-down-count mode to generate an asymmetric PWM:
• To achieve 50%-0% asymmetric PWM use the following configuration: Load
CMPA/CMPB on period and use the period action to clear the PWM and a
compare-up action to set the PWM. Modulate the compare value from 0 to
TBPRD to achieve 50%-0% PWM duty.
When using up-count mode to generate an asymmetric PWM:
• To achieve 0-100% asymmetric PWM use the following configuration: Load
CMPA/CMPB on TBPRD. Use the Zero action to set the PWM and a
compare-up action to clear the PWM. Modulate the compare value from 0 to
TBPRD+1 to achieve 0-100% PWM duty.
See the Using Enhanced Pulse Width Modulator (ePWM) Module for 0-100%
Duty Cycle Control Application Report (literature number SPRAAI1)
Figure 3-23 shows how a symmetric PWM waveform can be generated using the up-down-count mode of
the TBCTR. In this mode 0%-100% DC modulation is achieved by using equal compare matches on the
up count and down count portions of the waveform. In the example shown, CMPA is used to make the
comparison. When the counter is incrementing the CMPA match will pull the PWM output high. Likewise,
when the counter is decrementing the compare match will pull the PWM signal low. When CMPA = 0, the
PWM signal is low for the entire period giving the 0% duty waveform. When CMPA = TBPRD, the PWM
signal is high achieving 100% duty.
When using this configuration in practice, if you load CMPA/CMPB on zero, then use CMPA/CMPB values
greater than or equal to 1. If you load CMPA/CMPB on period, then use CMPA/CMPB values less than or
equal to TBPRD-1. This means there will always be a pulse of at least one TBCLK cycle in a PWM period
which, when very short, tend to be ignored by the system.
274
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-23. Up-Down-Count Mode Symmetrical Waveform
4
4
Mode: Up-Down Count
TBPRD = 4
CAU = SET, CAD = CLEAR
0% - 100% Duty
3
3
3
2
1
1
1
1
TBCTR
2
2
2
3
0
0
0
TBCTR Direction
DOWN
UP
DOWN
UP
Case 1:
CMPA = 4, 0% Duty
EPWMxA/EPWMxB
Case 2:
CMPA = 3, 25% Duty
EPWMxA/EPWMxB
Case 3:
CMPA = 2, 50% Duty
EPWMxA/EPWMxB
Case 3:
CMPA = 1, 75% Duty
EPWMxA/EPWMxB
Case 4:
CMPA = 0, 100% Duty
EPWMxA/EPWMxB
The PWM waveforms in Figure 3-24 through Figure 3-29 show some common action-qualifier
configurations. The C-code samples in Example 3-1 through Example 3-6 shows how to configure an
ePWM module for each case. Some conventions used in the figures and examples are as follows:
• TBPRD, CMPA, and CMPB refer to the value written in their respective registers. The active register,
not the shadow register, is used by the hardware.
• CMPx, refers to either CMPA or CMPB.
• EPWMxA and EPWMxB refer to the output signals from ePWMx
• Up-Down means Count-up-and-down mode, Up means up-count mode and Dwn means down-count
mode
• Sym = Symmetric, Asym = Asymmetric
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
275
ePWM Submodules
www.ti.com
Figure 3-24. Up, Single Edge Asymmetric Waveform, With Independent Modulation on EPWMxA and
EPWMxB—Active High
TBCTR
TBPRD
value
Z
P
CB
CA
Z
P
CB
CA
Z
P
Z
P
CB
CA
Z
P
CB
CA
Z
P
EPWMxA
EPWMxB
A
PWM period = (TBPRD + 1 ) × TTBCLK
B
Duty modulation for EPWMxA is set by CMPA, and is active high (that is, high time duty proportional to CMPA).
C
Duty modulation for EPWMxB is set by CMPB and is active high (that is, high time duty proportional to CMPB).
D
The "Do Nothing" actions ( X ) are shown for completeness, but will not be shown on subsequent diagrams.
E
Actions at zero and period, although appearing to occur concurrently, are actually separated by one TBCLK period.
TBCTR wraps from period to 0000.
Example 3-1 contains a code sample showing initialization and run time for the waveforms in Figure 3-24.
Example 3-1. Code Sample for Figure 3-24
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
//
EPwm1Regs.CMPA.half.CMPA = 350;
//
EPwm1Regs.CMPB = 200;
//
EPwm1Regs.TBPHS = 0;
//
EPwm1Regs.TBCTR = 0;
//
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
//
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
//
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; //
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A;
//
276
Enhanced Pulse Width Modulator (ePWM) Module
=
Period = 601 TBCLK counts
Compare A = 350 TBCLK counts
Compare B = 200 TBCLK counts
Set Phase register to zero
clear TB counter
Phase loading disabled
TBCLK = SYSCLK
load on CTR = Zero
load on CTR = Zero
=
adjust duty for output EPWM1A
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Example 3-1. Code Sample for Figure 3-24 (continued)
EPwm1Regs.CMPB = Duty1B;
// adjust duty for output EPWM1B
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
277
ePWM Submodules
www.ti.com
Figure 3-25. Up, Single Edge Asymmetric Waveform With Independent Modulation on EPWMxA and
EPWMxB—Active Low
TBCTR
TBPRD
value
P
CA
P
CA
P
EPWMxA
P
CB
CB
P
P
EPWMxB
A
PWM period = (TBPRD + 1 ) × TTBCLK
B
Duty modulation for EPWMxA is set by CMPA, and is active low (that is, the low time duty is proportional to CMPA).
C
Duty modulation for EPWMxB is set by CMPB and is active low (that is, the low time duty is proportional to CMPB).
D
Actions at zero and period, although appearing to occur concurrently, are actually separated by one TBCLK period.
TBCTR wraps from period to 0000.
Example 3-2 contains a code sample showing initialization and run time for the waveforms in Figure 3-25.
278
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Example 3-2. Code Sample for Figure 3-25
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
//
EPwm1Regs.CMPA.half.CMPA = 350;
//
EPwm1Regs.CMPB = 200;
//
EPwm1Regs.TBPHS = 0;
//
EPwm1Regs.TBCTR = 0;
//
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
//
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
//
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; //
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A;
//
EPwm1Regs.CMPB = Duty1B;
//
=
Period = 601 TBCLK counts
Compare A = 350 TBCLK counts
Compare B = 200 TBCLK counts
Set Phase register to zero
clear TB counter
Phase loading disabled
TBCLK = SYSCLKOUT
load on TBCTR = Zero
load on TBCTR = Zero
=
adjust duty for output EPWM1A
adjust duty for output EPWM1B
Figure 3-26. Up-Count, Pulse Placement Asymmetric Waveform With Independent Modulation on
EPWMxA
TBCTR
TBPRD
value
CB
CA
CA
CB
EPWMxA
Z
T
Z
T
Z
T
EPWMxB
A
PWM frequency = 1/( (TBPRD + 1 ) × TTBCLK )
B
Pulse can be placed anywhere within the PWM cycle (0000 - TBPRD)
C
High time duty proportional to (CMPB - CMPA)
D
EPWMxB can be used to generate a 50% duty square wave with frequency = � × ( (TBPRD + 1 ) × TBCLK )
Example 3-3 contains a code sample showing initialization and run time for the waveforms Figure 3-26.
Use the code in Example 3-5 to define the headers.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
279
ePWM Submodules
www.ti.com
Example 3-3. Code Sample for Figure 3-26
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
// Period = 601 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 200;
// Compare A = 200 TBCLK counts
EPwm1Regs.CMPB = 400;
// Compare B = 400 TBCLK counts
EPwm1Regs.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTR = 0;
// clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// TBCLK = SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on TBCTR = Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on TBCTR = Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_TOGGLE;
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = EdgePosA;
// adjust duty for output EPWM1A only
EPwm1Regs.CMPB = EdgePosB;
280
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-27. Up-Down-Count, Dual Edge Symmetric Waveform, With Independent Modulation on
EPWMxA and EPWMxB — Active Low
TBCTR
TBPRD
value
CA
CA
CA
CA
EPWMxA
CB
CB
CB
CB
EPWMxB
A
PWM period = 2 x TBPRD × TTBCLK
B
Duty modulation for EPWMxA is set by CMPA, and is active low (that is, the low time duty is proportional to CMPA).
C
Duty modulation for EPWMxB is set by CMPB and is active low (that is, the low time duty is proportional to CMPB).
D
Outputs EPWMxA and EPWMxB can drive independent power switches
Example 3-4 contains a code sample showing initialization and run time for the waveforms in Figure 3-27.
Use the code in Example 3-5 to define the headers.
Example 3-4. Code Sample for Figure 3-27
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
// Period = 2´600 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 400;
// Compare A = 400 TBCLK counts
EPwm1Regs.CMPB = 500;
// Compare B = 500 TBCLK counts
EPwm1Regs.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTR = 0;
// clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetric
xEPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
xEPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// TBCLK = SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A;
// adjust duty for output EPWM1A
EPwm1Regs.CMPB = Duty1B;
// adjust duty for output EPWM1B
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
281
ePWM Submodules
www.ti.com
Figure 3-28. Up-Down-Count, Dual Edge Symmetric Waveform, With Independent Modulation on
EPWMxA and EPWMxB — Complementary
TBCTR
TBPRD
value
CA
CA
CA
CA
EPWMxA
CB
CB
CB
CB
EPWMxB
A
PWM period = 2 × TBPRD × TTBCLK
B
Duty modulation for EPWMxA is set by CMPA, and is active low, that is, low time duty proportional to CMPA
C
Duty modulation for EPWMxB is set by CMPB and is active high, that is, high time duty proportional to CMPB
D
Outputs EPWMx can drive upper/lower (complementary) power switches
E
Dead-band = CMPB - CMPA (fully programmable edge placement by software). Note the dead-band module is also
available if the more classical edge delay method is required.
Example 3-5 contains a code sample showing initialization and run time for the waveforms in Figure 3-28.
Use the code in Example 3-5 to define the headers.
Example 3-5. Code Sample for Figure 3-28
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
// Period = 2´600 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 350;
// Compare A = 350 TBCLK counts
EPwm1Regs.CMPB = 400;
// Compare B = 400 TBCLK counts
EPwm1Regs.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTR = 0;
// clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetric
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// TBCLK = SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A;
// adjust duty for output EPWM1A
EPwm1Regs.CMPB = Duty1B;
// adjust duty for output EPWM1B
282
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-29. Up-Down-Count, Dual Edge Asymmetric Waveform, With Independent Modulation on
EPWMxA—Active Low
TBCTR
CA
CA
CB
CB
EPWMxA
Z
P
Z
P
EPWMxB
A
PWM period = 2 × TBPRD × TBCLK
B
Rising edge and falling edge can be asymmetrically positioned within a PWM cycle. This allows for pulse placement
techniques.
C
Duty modulation for EPWMxA is set by CMPA and CMPB.
D
Low time duty for EPWMxA is proportional to (CMPA + CMPB).
E
To change this example to active high, CMPA and CMPB actions need to be inverted (i.e., Set ! Clear and Clear Set).
F
Duty modulation for EPWMxB is fixed at 50% (utilizes spare action resources for EPWMxB)
Example 3-6 contains a code sample showing initialization and run time for the waveforms in Figure 3-29.
Use the code in Example 3-5 to define the headers.
Example 3-6. Code Sample for Figure 3-29
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
//
EPwm1Regs.CMPA.half.CMPA = 250;
//
EPwm1Regs.CMPB = 450;
//
EPwm1Regs.TBPHS = 0;
//
EPwm1Regs.TBCTR = 0;
//
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
//
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
//
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; //
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.PRD = AQ_SET;
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = EdgePosA;
//
EPwm1Regs.CMPB = EdgePosB;
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Period = 2 ´ 600 TBCLK counts
Compare A = 250 TBCLK counts
Compare B = 450 TBCLK counts
Set Phase register to zero
clear TB counter
Symmetric
Phase loading disabled
TBCLK = SYSCLKOUT
load on CTR = Zero
load on CTR = Zero
adjust duty for output EPWM1A only
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
283
ePWM Submodules
www.ti.com
3.2.5 Dead-Band Generator (DB) Submodule
Figure 3-30 illustrates the dead-band submodule within the ePWM module.
Figure 3-30. Dead-Band Submodule
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
Event
Trigger
and
EPWMxINT
Interrupt
(ET)
PIE
EPWMxSOCA
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPB
PWMchopper
(PC)
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
GPIO
MUX
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
3.2.5.1
Digital
Compare
(DC)
COMPxOUT
COMP
Purpose of the Dead-Band Submodule
The "Action-qualifier (AQ) Module" section discussed how it is possible to generate the required deadband by having full control over edge placement using both the CMPA and CMPB resources of the ePWM
module. However, if the more classical edge delay-based dead-band with polarity control is required, then
the dead-band submodule described here should be used.
The key functions of the dead-band module are:
• Generating appropriate signal pairs (EPWMxA and EPWMxB) with dead-band relationship from a
single EPWMxA input
• Programming signal pairs for:
– Active high (AH)
– Active low (AL)
– Active high complementary (AHC)
– Active low complementary (ALC)
• Adding programmable delay to rising edges (RED)
• Adding programmable delay to falling edges (FED)
• Can be totally bypassed from the signal path (note dotted lines in diagram)
3.2.5.2
Controlling and Monitoring the Dead-Band Submodule
The dead-band submodule operation is controlled and monitored via the following registers:
Table 3-13. Dead-Band Generator Submodule Registers
Register Name
284
Address offset
Shadowed
DBCTL
0x000F
No
Dead-Band Control Register
DBRED
0x0010
No
Dead-Band Rising Edge Delay Count Register
DBFED
0x0011
No
Dead-Band Falling Edge Delay Count Register
Enhanced Pulse Width Modulator (ePWM) Module
Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.5.3
Operational Highlights for the Dead-Band Submodule
The following sections provide the operational highlights.
The dead-band submodule has two groups of independent selection options as shown in Figure 3-31.
• Input Source Selection:
The input signals to the dead-band module are the EPWMxA and EPWMxB output signals from the
action-qualifier. In this section they will be referred to as EPWMxA In and EPWMxB In. Using the
DBCTL[IN_MODE) control bits, the signal source for each delay, falling-edge or rising-edge, can be
selected:
– EPWMxA In is the source for both falling-edge and rising-edge delay. This is the default mode.
– EPWMxA In is the source for falling-edge delay, EPWMxB In is the source for rising-edge delay.
– EPWMxA In is the source for rising edge delay, EPWMxB In is the source for falling-edge delay.
– EPWMxB In is the source for both falling-edge and rising-edge delay.
• Half Cycle Clocking:
The dead-band submodule can be clocked using half cycle clocking to double the resolution (that is,
counter clocked at 2× TBCLK).
• Output Mode Control:
The output mode is configured by way of the DBCTL[OUT_MODE] bits. These bits determine if the
falling-edge delay, rising-edge delay, neither, or both are applied to the input signals.
• Polarity Control:
The polarity control (DBCTL[POLSEL]) allows you to specify whether the rising-edge delayed signal
and/or the falling-edge delayed signal is to be inverted before being sent out of the dead-band
submodule.
Figure 3-31. Configuration Options for the Dead-Band Submodule
EPWMxA in
Rising edge
delay
0 S4
In
0 S2
0 S1
Out
1
1
1
EPWMxA
RED
(10-bit
counter)
Falling edge
delay
0 S5
In
0 S3
1 S0
EPWMxB
Out
1
1
FED
(10-bit
counter)
DBCTL[IN_MODE] DBCTL[HALFCYCLE]
DBCTL[POLSEL]
0
DBCTL[OUT_MODE]
EPWMxB in
Although all combinations are supported, not all are typical usage modes. Table 3-14 documents some
classical dead-band configurations. These modes assume that the DBCTL[IN_MODE] is configured such
that EPWMxA In is the source for both falling-edge and rising-edge delay. Enhanced, or non-traditional
modes can be achieved by changing the input signal source. The modes shown in Table 3-14 fall into the
following categories:
• Mode 1: Bypass both falling-edge delay (FED) and rising-edge delay (RED)
Allows you to fully disable the dead-band submodule from the PWM signal path.
• Mode 2-5: Classical Dead-Band Polarity Settings:
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
285
ePWM Submodules
•
www.ti.com
These represent typical polarity configurations that should address all the active high/low modes
required by available industry power switch gate drivers. The waveforms for these typical cases are
shown in Figure 3-32. Note that to generate equivalent waveforms to Figure 3-32, configure the actionqualifier submodule to generate the signal as shown for EPWMxA.
Mode 6: Bypass rising-edge-delay and Mode 7: Bypass falling-edge-delay
Finally the last two entries in Table 3-14 show combinations where either the falling-edge-delay (FED)
or rising-edge-delay (RED) blocks are bypassed.
Table 3-14. Classical Dead-Band Operating Modes
Mode
DBCTL[POLSEL]
S1
S0
EPWMxA and EPWMxB Passed Through (No Delay)
X
X
0
0
2
Active High Complementary (AHC)
1
0
1
1
3
Active Low Complementary (ALC)
0
1
1
1
4
Active High (AH)
0
0
1
1
5
Active Low (AL)
1
1
1
1
0 or 1
0 or 1
0
1
0 or 1
0 or 1
1
0
7
EPWMxA Out = EPWMxA In (No Delay)
EPWMxB Out = EPWMxA In with Falling Edge Delay
EPWMxA Out = EPWMxA In with Rising Edge Delay
EPWMxB Out = EPWMxB In with No Delay
Enhanced Pulse Width Modulator (ePWM) Module
S3
S2
DBCTL[OUT_MODE]
1
6
286
Mode Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-32 shows waveforms for typical cases where 0% < duty < 100%.
Figure 3-32. Dead-Band Waveforms for Typical Cases (0% < Duty < 100%)
Period
Original
(outA)
RED
Rising Edge
Delayed (RED)
FED
Falling Edge
Delayed (FED)
Active High
Complementary
(AHC)
Active Low
Complementary
(ALC)
Active High
(AH)
Active Low
(AL)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
287
ePWM Submodules
www.ti.com
The dead-band submodule supports independent values for rising-edge (RED) and falling-edge (FED)
delays. The amount of delay is programmed using the DBRED and DBFED registers. These are 10-bit
registers and their value represents the number of time-base clock, TBCLK, periods a signal edge is
delayed by. For example, the formula to calculate falling-edge-delay and rising-edge-delay are:
FED = DBFED × TTBCLK
RED = DBRED × TTBCLK
Where TTBCLK is the period of TBCLK, the prescaled version of SYSCLKOUT.
For convenience, delay values for various TBCLK options are shown in Table 3-15.
Table 3-15. Dead-Band Delay Values in μS as a Function of DBFED and DBRED
Dead-Band Value
Dead-Band Delay in μS
DBFED, DBRED
TBCLK = SYSCLKOUT/1
TBCLK = SYSCLKOUT /2
TBCLK = SYSCLKOUT/4
1
0.01 μS
0.03 μS
0.05 μS
5
0.06 μS
0.13μS
0.25 μS
10
0.13 μS
0.25 μS
0.50 μS
100
1.25 μS
2.50 μS
5.00 μS
200
2.50 μS
5.00 μS
10.00 μS
400
5.00 μS
10.00 μS
20.00 μS
500
6.25 μS
12.50 μS
25.00 μS
600
7.50 μS
15.00 μS
30.00 μS
700
8.75 μS
17.50 μS
35.00 μS
800
10.00 μS
20.00 μS
40.00 μS
900
11.25 μS
22.50 μS
45.00 μS
1000
12.50 μS
25.00 μS
50.00 μS
When half-cycle clocking is enabled, the formula to calculate the falling-edge-delay and rising-edge-delay
becomes:
FED = DBFED × TTBCLK/2
RED = DBRED × TTBCLK/2
288
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.6 PWM-Chopper (PC) Submodule
Figure 3-33 illustrates the PWM-chopper (PC) submodule within the ePWM module.
Figure 3-33. PWM-Chopper Submodule
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
EPWMxINT
Event
Trigger
and
PIE
EPWMxSOCA
Interrupt
(ET)
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
PWMchopper
(PC)
CTR = CMPB
GPIO
MUX
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
Digital
Compare
(DC)
COMPxOUT
COMP
The PWM-chopper submodule allows a high-frequency carrier signal to modulate the PWM waveform
generated by the action-qualifier and dead-band submodules. This capability is important if you need
pulse transformer-based gate drivers to control the power switching elements.
3.2.6.1
Purpose of the PWM-Chopper Submodule
The key functions of the PWM-chopper submodule are:
• Programmable chopping (carrier) frequency
• Programmable pulse width of first pulse
• Programmable duty cycle of second and subsequent pulses
• Can be fully bypassed if not required
3.2.6.2
Controlling the PWM-Chopper Submodule
The PWM-chopper submodule operation is controlled via the registers in Table 3-16.
Table 3-16. PWM-Chopper Submodule Registers
3.2.6.3
mnemonic
Address offset
Shadowed
PCCTL
0x001E
No
Description
PWM-chopper Control Register
Operational Highlights for the PWM-Chopper Submodule
Figure 3-34 shows the operational details of the PWM-chopper submodule. The carrier clock is derived
from SYSCLKOUT. Its frequency and duty cycle are controlled via the CHPFREQ and CHPDUTY bits in
the PCCTL register. The one-shot block is a feature that provides a high energy first pulse to ensure hard
and fast power switch turn on, while the subsequent pulses sustain pulses, ensuring the power switch
remains on. The one-shot width is programmed via the OSHTWTH bits. The PWM-chopper submodule
can be fully disabled (bypassed) via the CHPEN bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
289
ePWM Submodules
www.ti.com
Figure 3-34. PWM-Chopper Submodule Operational Details
Bypass
0
EPWMxA
EPWMxA
Start
One
shot
OSHT
PWMA_ch
1
Clk
Pulse-width
SYSCLKOUT
/8
PCCTL
[OSHTWTH]
PCCTL
[OSHTWTH]
Pulse-width
Divider and
duty control
PCCTL
[CHPEN]
PSCLK
PCCTL[CHPFREQ]
PCCTL[CHPDUTY]
Clk
One
shot
EPWMxB
PWMB_ch
1
OSHT
EPWMxB
Start
Bypass
3.2.6.4
0
Waveforms
Figure 3-35 shows simplified waveforms of the chopping action only; one-shot and duty-cycle control are
not shown. Details of the one-shot and duty-cycle control are discussed in the following sections.
Figure 3-35. Simple PWM-Chopper Submodule Waveforms Showing Chopping Action Only
EPWMxA
EPWMxB
PSCLK
EPWMxA
EPWMxB
290
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.6.4.1
One-Shot Pulse
The width of the first pulse can be programmed to any of 16 possible pulse width values. The width or
period of the first pulse is given by:
T1stpulse = TSYSCLKOUT × 8 × OSHTWTH
Where TSYSCLKOUT is the period of the system clock (SYSCLKOUT) and OSHTWTH is the four control bits
(value from 1 to 16)
Figure 3-36 shows the first and subsequent sustaining pulses and Table 3-17 gives the possible pulse
width values for a SYSCLKOUT = 80 MHz.
Figure 3-36. PWM-Chopper Submodule Waveforms Showing the First Pulse and Subsequent Sustaining
Pulses
Start OSHT pulse
EPWMxA in
PSCLK
Prog. pulse width
(OSHTWTH)
OSHT
EPWMxA out
Sustaining pulses
Table 3-17. Possible Pulse Width Values for
SYSCLKOUT = 90 MHz
OSHTWTHz
(hex)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Pulse Width
(nS)
0
89
1
178
2
267
3
356
4
445
5
533
6
622
7
711
8
800
9
889
A
978
B
1067
C
1156
D
1245
E
1334
F
1422
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
291
ePWM Submodules
3.2.6.4.2
www.ti.com
Duty Cycle Control
Pulse transformer-based gate drive designs need to comprehend the magnetic properties or
characteristics of the transformer and associated circuitry. Saturation is one such consideration. To assist
the gate drive designer, the duty cycles of the second and subsequent pulses have been made
programmable. These sustaining pulses ensure the correct drive strength and polarity is maintained on the
power switch gate during the on period, and hence a programmable duty cycle allows a design to be
tuned or optimized via software control.
Figure 3-37 shows the duty cycle control that is possible by programming the CHPDUTY bits. One of
seven possible duty ratios can be selected ranging from 12.5% to 87.5%.
Figure 3-37. PWM-Chopper Submodule Waveforms Showing the Pulse Width (Duty Cycle) Control of
Sustaining Pulses
PSCLK
PSCLK
period
75%
50%
25%
62.5% 37.5%
87.5%
12.5%
PSCLK Period
Duty
1/8
Duty
2/8
Duty
3/8
Duty
4/8
Duty
5/8
Duty
6/8
Duty
7/8
292
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.7 Trip-Zone (TZ) Submodule
Figure 3-38 shows how the trip-zone (TZ) submodule fits within the ePWM module.
Figure 3-38. Trip-Zone Submodule
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
Action
Qualifier
(AQ)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
Event
Trigger
and
EPWMxINT
Interrupt
(ET)
PIE
EPWMxSOCA
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPB
PWMchopper
(PC)
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
GPIO
MUX
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
Digital
Compare
(DC)
COMPxOUT
COMP
Each ePWM module is connected to six TZn signals (TZ1 to TZ6). TZ1 to TZ3 are sourced from the GPIO
mux. TZ4 is sourced from an inverted EQEP1ERR signal on those devices with an EQEP1 module. TZ5 is
connected to the system clock fail logic, and TZ6 is sourced from the EMUSTOP output from the CPU.
These signals indicate external fault or trip conditions, and the ePWM outputs can be programmed to
respond accordingly when faults occur.
3.2.7.1
Purpose of the Trip-Zone Submodule
The key functions of the Trip-Zone submodule are:
• Trip inputs TZ1 to TZ6 can be flexibly mapped to any ePWM module.
• Upon a fault condition, outputs EPWMxA and EPWMxB can be forced to one of the following:
– High
– Low
– High-impedance
– No action taken
• Support for one-shot trip (OSHT) for major short circuits or over-current conditions.
• Support for cycle-by-cycle tripping (CBC) for current limiting operation.
• Support for digital compare tripping (DC) based on state of on-chip analog comparator module outputs
and/or TZ1 to TZ3 signals.
• Each trip-zone input and digital compare (DC) submodule DCAEVT1/2 or DCBEVT1/2 force event can
be allocated to either one-shot or cycle-by-cycle operation.
• Interrupt generation is possible on any trip-zone input.
• Software-forced tripping is also supported.
• The trip-zone submodule can be fully bypassed if it is not required.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
293
ePWM Submodules
3.2.7.2
www.ti.com
Controlling and Monitoring the Trip-Zone Submodule
The trip-zone submodule operation is controlled and monitored through the following registers:
Table 3-18. Trip-Zone Submodule Registers
(1)
(2)
3.2.7.3
Register Name
Address offset
Shadowed
Description
(1)
TZSEL
0x0012
No
Trip-Zone Select Register
TZDCSEL
0x0013
No
Trip-zone Digital Compare Select Register
TZCTL
0x0014
No
Trip-Zone Control Register
TZEINT
0x0015
No
Trip-Zone Enable Interrupt Register
TZFLG
0x0016
No
Trip-Zone Flag Register
TZCLR
0x0017
No
Trip-Zone Clear Register
TZFRC
0x0018
No
Trip-Zone Force Register
(2)
All trip-zone registers are EALLOW protected and can be modified only after executing the EALLOW instruction. For more
information, see the device-specific version of the System Control and Interrupts Reference Guide listed in Section 1.
This register is discussed in more detail in Section 3.2.9 Digital Compare submodule.
Operational Highlights for the Trip-Zone Submodule
The following sections describe the operational highlights and configuration options for the trip-zone
submodule.
The trip-zone signals TZ1 to TZ6 (also collectively referred to as TZn) are active low input signals. When
one of these signals goes low, or when a DCAEVT1/2 or DCBEVT1/2 force happens based on the
TZDCSEL register event selection, it indicates that a trip event has occurred. Each ePWM module can be
individually configured to ignore or use each of the trip-zone signals or DC events. Which trip-zone signals
or DC events are used by a particular ePWM module is determined by the TZSEL register for that specific
ePWM module. The trip-zone signals may or may not be synchronized to the system clock (SYSCLKOUT)
and digitally filtered within the GPIO MUX block. A minimum of 3*TBCLK low pulse width on TZn inputs is
sufficient to trigger a fault condition on the ePWM module. If the pulse width is less than this, the trip
condition may not be latched by CBC or OST latches. The asynchronous trip makes sure that if clocks are
missing for any reason, the outputs can still be tripped by a valid event present on TZn inputs . The
GPIOs or peripherals must be appropriately configured. For more information, see the device-specific
version of the System Control and Interrupts Reference Guide.
Each TZn input can be individually configured to provide either a cycle-by-cycle or one-shot trip event for
an ePWM module. DCAEVT1 and DCBEVT1 events can be configured to directly trip an ePWM module or
provide a one-shot trip event to the module. Likewise, DCAVET2 and DCBEVT2 events can also be
configured to directly trip an ePWM module or provide a cycle-by-cycle trip event to the module. This
configuration is determined by the TZSEL[DCAEVT1/2], TZSEL[DCBEVT1/2], TZSEL[CBCn], and
TZSEL[OSHTn] control bits (where n corresponds to the trip input) respectively.
• Cycle-by-Cycle (CBC):
When a cycle-by-cycle trip event occurs, the action specified in the TZCTL[TZA] and TZCTL[TZB] bits
is carried out immediately on the EPWMxA and/or EPWMxB output. Table 3-19 lists the possible
actions. In addition, the cycle-by-cycle trip event flag (TZFLG[CBC]) is set and a EPWMx_TZINT
interrupt is generated if it is enabled in the TZEINT register and PIE peripheral.
If the CBC interrupt is enabled via the TZEINT register, and DCAEVT2 or DCBEVT2 are selected as
CBC trip sources via the TZSEL register, it is not necessary to also enable the DCAEVT2 or DCBEVT2
interrupts in the TZEINT register, as the DC events trigger interrupts through the CBC mechanism.
The specified condition on the inputs is automatically cleared when the ePWM time-base counter
reaches zero (TBCTR = 0x0000) if the trip event is no longer present. Therefore, in this mode, the trip
event is cleared or reset every PWM cycle. The TZFLG[CBC] flag bit will remain set until it is manually
cleared by writing to the TZCLR[CBC] bit. If the cycle-by-cycle trip event is still present when the
TZFLG[CBC] bit is cleared, then it will again be immediately set.
• One-Shot (OSHT):
When a one-shot trip event occurs, the action specified in the TZCTL[TZA] and TZCTL[TZB] bits is
carried out immediately on the EPWMxA and/or EPWMxB output. Table 3-19 lists the possible actions.
294
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
•
In addition, the one-shot trip event flag (TZFLG[OST]) is set and a EPWMx_TZINT interrupt is
generated if it is enabled in the TZEINT register and PIE peripheral. The one-shot trip condition must
be cleared manually by writing to the TZCLR[OST] bit.
If the one-shot interrupt is enabled via the TZEINT register, and DCAEVT1 or DCBEVT1 are selected
as OSHT trip sources via the TZSEL register, it is not necessary to also enable the DCAEVT1 or
DCBEVT1 interrupts in the TZEINT register, as the DC events trigger interrupts through the OSHT
mechanism.
Digital Compare Events (DCAEVT1/2 and DCBEVT1/2):
A digital compare DCAEVT1/2 or DCBEVT1/2 event is generated based on a combination of the
DCAH/DCAL and DCBH/DCBL signals as selected by the TZDCSEL register. The signals which
source the DCAH/DCAL and DCBH/DCBL signals are selected via the DCTRIPSEL register and can
be either trip zone input pins or analog comparator COMPxOUT signals. For more information on the
digital compare submodule signals, see Section 3.2.9.
When a digital compare event occurs, the action specified in the TZCTL[DCAEVT1/2] and
TZCTL[DCBEVT1/2] bits is carried out immediately on the EPWMxA and/or EPWMxB output. Table 319 lists the possible actions. In addition, the relevant DC trip event flag (TZFLG[DCAEVT1/2] /
TZFLG[DCBEVT1/2]) is set and a EPWMx_TZINT interrupt is generated if it is enabled in the TZEINT
register and PIE peripheral.
The specified condition on the pins is automatically cleared when the DC trip event is no longer
present. The TZFLG[DCAEVT1/2] or TZFLG[DCBEVT1/2] flag bit will remain set until it is manually
cleared by writing to the TZCLR[DCAEVT1/2] or TZCLR[DCBEVT1/2] bit. If the DC trip event is still
present when the TZFLG[DCAEVT1/2] or TZFLG[DCBEVT1/2] flag is cleared, then it will again be
immediately set.
The action taken when a trip event occurs can be configured individually for each of the ePWM output
pins by way of the TZCTL register bit fields. One of four possible actions, shown in Table 3-19, can be
taken on a trip event.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
295
ePWM Submodules
www.ti.com
Table 3-19. Possible Actions On a Trip Event
TZCTL Register bit-field
Settings
EPWMxA
and/or
EPWMxB
Comment
0,0
High-Impedance
Tripped
0,1
Force to High State
Tripped
1,0
Force to Low State
Tripped
1,1
No Change
Do Nothing.
No change is made to the output.
Example 3-7. Trip-Zone Configurations
Scenario A:
A one-shot trip event on TZ1 pulls both EPWM1A, EPWM1B low and also forces EPWM2A and EPWM2B
high.
• Configure the ePWM1 registers as follows:
– TZSEL[OSHT1] = 1: enables TZ1 as a one-shot event source for ePWM1
– TZCTL[TZA] = 2: EPWM1A will be forced low on a trip event.
– TZCTL[TZB] = 2: EPWM1B will be forced low on a trip event.
• Configure the ePWM2 registers as follows:
– TZSEL[OSHT1] = 1: enables TZ1 as a one-shot event source for ePWM2
– TZCTL[TZA] = 1: EPWM2A will be forced high on a trip event.
– TZCTL[TZB] = 1: EPWM2B will be forced high on a trip event.
Scenario B:
A cycle-by-cycle event on TZ5 pulls both EPWM1A, EPWM1B low.
A one-shot event on TZ1 or TZ6 puts EPWM2A into a high impedance state.
• Configure the ePWM1 registers as follows:
– TZSEL[CBC5] = 1: enables TZ5 as a one-shot event source for ePWM1
– TZCTL[TZA] = 2: EPWM1A will be forced low on a trip event.
– TZCTL[TZB] = 2: EPWM1B will be forced low on a trip event.
• Configure the ePWM2 registers as follows:
– TZSEL[OSHT1] = 1: enables TZ1 as a one-shot event source for ePWM2
– TZSEL[OSHT6] = 1: enables TZ6 as a one-shot event source for ePWM2
– TZCTL[TZA] = 0: EPWM2A will be put into a high-impedance state on a trip event.
– TZCTL[TZB] = 3: EPWM2B will ignore the trip event.
3.2.7.4
Generating Trip Event Interrupts
Figure 3-39 and Figure 3-40 illustrate the trip-zone submodule control and interrupt logic, respectively.
DCAEVT1/2 and DCBEVT1/2 signals are described in further detail in Section 3.2.9.
296
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-39. Trip-Zone Submodule Mode Control Logic
TZCTL[TZA, DCAEVT1, DCAEVT2]
COMPxOUT
TZ1
TZ2
TZ3
EPWMxA (from PC submodule)
DCAEVT1.force
DCAEVT2.force
DCAEVT1.force
Digital
DCAEVT2.force
Compare
DCBEVT1.force
Submodule
DCBEVT2.force
EPWMA
Trip
Logic
EPWMxA
TZCTL[TZB, DCBEVT1, DCBEVT2]
EPWMxB (from PC submodule)
DCBEVT1.force
DCBEVT2.force
EPWMB
Trip
Logic
EPWMxB
Clear
CTR=zero
CBC Latch
TZFRC[CBC]
Trip
Set
TZ1
TZ2
TZ3
TZ4
TZ5
TZ6
DCAEVT2.force
DCBEVT2.force
Sync
Set
TZCLR[CBC]
Async
Trip
TZFLG[CBC]
Clear
Cycle-by-Cycle (CBC)
Trip Events
TZSEL[CBC1 to CBC6, DCAEVT2, DCBEVT2]
TZCLR[OST]
Clear
OSHT Latch
TZFRC[OSHT]
Trip
Set
TZ1
TZ2
TZ3
TZ4
TZ5
TZ6
DCAEVT1.force
DCBEVT1.force
Sync
Clear
Set
Async
Trip
TZFLG[OST]
One-Shot (OSHT)
Trip Events
TZSEL[OSHT1 to OSHT6, DCAEVT1, DCBEVT1]
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
297
ePWM Submodules
www.ti.com
Figure 3-40. Trip-Zone Submodule Interrupt Logic
TZFLG[CBC]
TZEINT[CBC]
TZFLG[INT]
TZCLR[INT]
Clear
Latch
Set
Clear
Latch
Set
TZCLR[CBC]
Clear
Latch
Set
TZCLR[OST]
CBC Force
Output Event
TZFLG[OST]
TZEINT[OST]
OST Force
Output Event
TZFLG[DCAEVT1]
Generate
Interrupt
Pulse
EPWMxTZINT (PIE)
When
Input = 1
TZEINT[DCAEVT1]
Clear
Latch
Set
TZCLR[DCAEVT1]
DCAEVT1.inter
TZFLG[DCAEVT2]
TZEINT[DCAEVT2]
Clear
Latch
Set
TZCLR[DCAEVT2]
DCAEVT2.inter
TZFLG[DCBEVT1]
TZEINT[DCBEVT1]
Clear
Latch
Set
TZCLR[DCBEVT1]
DCBEVT1.inter
TZFLG[DCBEVT2]
TZEINT[DCBEVT2]
Clear
Latch
Set
TZCLR[DCBEVT2]
DCBEVT2.inter
3.2.8 Event-Trigger (ET) Submodule
The key functions of the event-trigger submodule are:
• Receives event inputs generated by the time-base, counter-compare, and digital-compare submodules
• Uses the time-base direction information for up/down event qualification
• Uses prescaling logic to issue interrupt requests and ADC start of conversion at:
– Every event
– Every second event
– Every third event
• Provides full visibility of event generation via event counters and flags
• Allows software forcing of Interrupts and ADC start of conversion
The event-trigger submodule manages the events generated by the time-base submodule, the countercompare submodule, and the digital-compare submodule to generate an interrupt to the CPU and/or a
start of conversion pulse to the ADC when a selected event occurs. Figure 3-41 illustrates where the
event-trigger submodule fits within the ePWM system.
298
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-41. Event-Trigger Submodule
Action
Qualifier
(AQ)
EPWMxSYNCI
CTR = PRD
EPWMxSYNCO
Digital Compare
Signals
Time-Base
(TB)
CTR = 0
Time Base
Signals
Counter Compare
Signals
Digital Compare
Signals
Event
Trigger
and
EPWMxINT
PIE
EPWMxSOCA
Interrupt
(ET)
ADC
EPWMxSOCB
CTR_Dir
EPWMxA
EPWMxB
CTR = CMPA
Counter
Compare
(CC)
EPWMxA
EPWMxB
Dead
Band
(DB)
CTR = CMPB
PWMchopper
(PC)
GPIO
MUX
TZ1 to TZ3
Trip
Zone
(TZ)
CTR = 0
EMUSTOP
CPU
CLOCKFAIL
SYSCTRL
EQEP1ERR
EQEP1
EPWMxTZINT
PIE
Digital Compare
Signals
3.2.8.1
Digital
Compare
(DC)
COMPxOUT
COMP
Operational Overview of the Event-Trigger Submodule
The following sections describe the event-trigger submodule's operational highlights.
Each ePWM module has one interrupt request line connected to the PIE and two start of conversion
signals connected to the ADC module. As shown in Figure 3-42, ADC start of conversion for all ePWM
modules are connected to individual ADC trigger inputs to the ADC, and hence multiple modules can
initiate an ADC start of conversion via the ADC trigger inputs.
Figure 3-42. Event-Trigger Submodule Inter-Connectivity of ADC Start of Conversion
ADCTRIG 5
ADCTRIG 6
ADCTRIG 7
ADCTRIG 8
ADCTRIG (2x+3)
ADCTRIG (2x+4)
EPWM1SOCA
EPWM1SOCB
EPWM2SOCA
EPWM2SOCB
EPWMxSOCA
EPWM 1
module
EPWM 2
module
EPWM1INT
EPWM2INT
PIE
EPWMxSOCB
ADC
EPWMx
module
EPWMxINT
The event-trigger submodule monitors various event conditions (the left side inputs to event-trigger
submodule shown in Figure 3-43) and can be configured to prescale these events before issuing an
Interrupt request or an ADC start of conversion. The event-trigger prescaling logic can issue Interrupt
requests and ADC start of conversion at:
• Every event
• Every second event
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
299
ePWM Submodules
•
www.ti.com
Every third event
Figure 3-43. Event-Trigger Submodule Showing Event Inputs and Prescaled Outputs
clear
CTR=Zero
Event Trigger
Module Logic
CTR=PRD
/n
EPWMxINTn
PIE
count
CTR=Zero or PRD
clear
CTRU=CMPA
ETSEL reg
CTR=CMPA
CTRD=CMPA
Direction
qualifier
CTR=CMPB
CTRU=CMPB
/n
EPWMxSOCA
ETPS reg
count
CTRD=CMPB
ETFLG reg
ADC
clear
CTR_dir
EPWMxSOCB
ETCLR reg
/n
DCAEVT1.soc
From Digital Compare
(DC) Submodule
DCBEVT1.soc
ETFRC reg
count
The key registers used to configure the event-trigger submodule are shown in Table 3-20:
Table 3-20. Event-Trigger Submodule Registers
Register Name
•
•
•
•
•
Address offset
Shadowed
Description
ETSEL
0x0019
No
Event-trigger Selection Register
ETPS
0x001A
No
Event-trigger Prescale Register
ETFLG
0x001B
No
Event-trigger Flag Register
ETCLR
0x001C
No
Event-trigger Clear Register
ETFRC
0x001D
No
Event-trigger Force Register
ETSEL—This selects which of the possible events will trigger an interrupt or start an ADC conversion
ETPS—This programs the event prescaling options mentioned above.
ETFLG—These are flag bits indicating status of the selected and prescaled events.
ETCLR—These bits allow you to clear the flag bits in the ETFLG register via software.
ETFRC—These bits allow software forcing of an event. Useful for debugging or s/w intervention.
A more detailed look at how the various register bits interact with the Interrupt and ADC start of
conversion logic are shown in Figure 3-44, Figure 3-45, and Figure 3-46.
Figure 3-44 shows the event-trigger's interrupt generation logic. The interrupt-period (ETPS[INTPRD]) bits
specify the number of events required to cause an interrupt pulse to be generated. The choices available
are:
• Do not generate an interrupt.
• Generate an interrupt on every event
• Generate an interrupt on every second event
• Generate an interrupt on every third event
Which event can cause an interrupt is configured by the interrupt selection (ETSEL[INTSEL]) bits. The
event can be one of the following:
• Time-base counter equal to zero (TBCTR = 0x0000).
• Time-base counter equal to period (TBCTR = TBPRD).
• Time-base counter equal to zero or period (TBCTR = 0x0000 || TBCTR = TBPRD)
300
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
•
•
•
•
Time-base
Time-base
Time-base
Time-base
counter equal
counter equal
counter equal
counter equal
to
to
to
to
the compare
the compare
the compare
the compare
A
A
B
B
register
register
register
register
(CMPA) when the
(CMPA) when the
(CMPB) when the
(CMPB) when the
timer
timer
timer
timer
is incrementing.
is decrementing.
is incrementing.
is decrementing.
The number of events that have occurred can be read from the interrupt event counter (ETPS[INTCNT])
register bits. That is, when the specified event occurs the ETPS[INTCNT] bits are incremented until they
reach the value specified by ETPS[INTPRD]. When ETPS[INTCNT] = ETPS[INTPRD] the counter stops
counting and its output is set. The counter is only cleared when an interrupt is sent to the PIE.
When ETPS[INTCNT] reaches ETPS[INTPRD] the following behaviors will occur:
• If interrupts are enabled, ETSEL[INTEN] = 1 and the interrupt flag is clear, ETFLG[INT] = 0, then an
interrupt pulse is generated and the interrupt flag is set, ETFLG[INT] = 1, and the event counter is
cleared ETPS[INTCNT] = 0. The counter will begin counting events again.
• If interrupts are disabled, ETSEL[INTEN] = 0, or the interrupt flag is set, ETFLG[INT] = 1, the counter
stops counting events when it reaches the period value ETPS[INTCNT] = ETPS[INTPRD].
• If interrupts are enabled, but the interrupt flag is already set, then the counter will hold its output high
until the ENTFLG[INT] flag is cleared. This allows for one interrupt to be pending while one is serviced.
Writing to the INTPRD bits will automatically clear the counter INTCNT = 0 and the counter output will be
reset (so no interrupts are generated). Writing a 1 to the ETFRC[INT] bit will increment the event counter
INTCNT. The counter will behave as described above when INTCNT = INTPRD. When INTPRD = 0, the
counter is disabled and hence no events will be detected and the ETFRC[INT] bit is also ignored.
The above definition means that you can generate an interrupt on every event, on every second event, or
on every third event. An interrupt cannot be generated on every fourth or more events.
Figure 3-44. Event-Trigger Interrupt Generator
ETFLG[INT]
ETCLR[INT]
Clear
Latch
Set
ETPS[INTCNT]
EPWMxINT
Generate
Interrupt
Pulse
When
Input = 1
1
ETSEL[INTSEL]
0
Clear CNT
2-bit
Counter
0
ETSEL[INT]
Inc CNT
ETPS[INTPRD]
ETFRC[INT]
000
001
010
011
100
101
110
111
0
CTR=Zero
CTR=PRD
CTRU=CMPA
CTRD=CMPA
CTRU=CMPB
CTRD=CMPB
Figure 3-45 shows the operation of the event-trigger's start-of-conversion-A (SOCA) pulse generator. The
ETPS[SOCACNT] counter and ETPS[SOCAPRD] period values behave similarly to the interrupt generator
except that the pulses are continuously generated. That is, the pulse flag ETFLG[SOCA] is latched when a
pulse is generated, but it does not stop further pulse generation. The enable/disable bit ETSEL[SOCAEN]
stops pulse generation, but input events can still be counted until the period value is reached as with the
interrupt generation logic. The event that will trigger an SOCA and SOCB pulse can be configured
separately in the ETSEL[SOCASEL] and ETSEL[SOCBSEL] bits. The possible events are the same
events that can be specified for the interrupt generation logic with the addition of the DCAEVT1.soc and
DCBEVT1.soc event signals from the digital compare (DC) submodule.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
301
ePWM Submodules
www.ti.com
Figure 3-45. Event-Trigger SOCA Pulse Generator
ETCLR[SOCA]
Clear
Latch
Set
ETFLG[SOCA]
ETPS[SOCACNT]
ETSEL[SOCASEL]
Clear CNT
Generate
SOC
Pulse
When
Input = 1
SOCA
2-bit
Counter
ETFRC[SOCA]
Inc CNT
ETSEL[SOCA]
ETPS[SOCAPRD]
A
DCAEVT1.soc [A]
CTR=Zero
CTR=PRD
000
001
010
011
100
101
110
111
CTRU=CMPA
CTRD=CMPA
CTRU=CMPB
CTRD=CMPB
The DCAEVT1.soc signals are signals generated by the Digital compare (DC) submodule described later in
Section 3.2.9
Figure 3-46 shows the operation of the event-trigger's start-of-conversion-B (SOCB) pulse generator. The
event-trigger's SOCB pulse generator operates the same way as the SOCA.
Figure 3-46. Event-Trigger SOCB Pulse Generator
ETCLR[SOCB]
Clear
Latch
Set
ETFLG[SOCB]
ETPS[SOCBCNT]
ETSEL[SOCBSEL]
Clear CNT
SOCB
Generate
SOC
Pulse
When
Input = 1
2-bit
Counter
Inc CNT
ETSEL[SOCB]
ETPS[SOCBPRD]
A
302
ETFRC[SOCB]
000
001
010
011
100
101
110
111
DCBEVT1.soc [A]
CTR=Zero
CTR=PRD
CTRU=CMPA
CTRD=CMPA
CTRU=CMPB
CTRD=CMPB
The DCBEVT1.soc signals are signals generated by the Digital compare (DC) submodule described later in
Section 3.2.9
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
3.2.9 Digital Compare (DC) Submodule
Figure 3-47 illustrates where the digital compare (DC) submodule signals interface to other submodules in
the ePWM system.
Figure 3-47. Digital-Compare Submodule High-Level Block Diagram
Digital Compare Submodule
DCAH
GPIO
COMP
MUX
COMP
TZ1
TZ2
TZ3
DCAL
COMPxOUT
Event A
Qual
DCAEVT1
DCAEVT2
D
C
T
R
I
P
S
E
L
DCAEVT1.sync
DCBEVT1.sync
DCAEVT1.force
DCAEVT2.force
Event
Filtering
Blanking
Window
DCEVTFILT
Event
Triggering
Counter
Capture
DCBH
DCBL
Event B
Qual
Time-Base
submodule
DCBEVT1.f orce
DCBEVT2.force
DCAEVT1.inter
DCAEVT2.inter
Trip-Zone
submodule
DCBEVT1.inter
DCBEVT2.inter
DCBEVT1
DCBEVT2
DCAEVT1.soc
DCBEVT1.soc
Event-Trigger
submodule
The digital compare (DC) submodule compares signals external to the ePWM module (for instance,
COMPxOUT signals from the analog comparators) to directly generate PWM events/actions which then
feed to the event-trigger, trip-zone, and time-base submodules. Additionally, blanking window functionality
is supported to filter noise or unwanted pulses from the DC event signals.
3.2.9.1
Purpose of the Digital Compare Submodule
The key functions of the digital compare submodule are:
• Analog Comparator (COMP) module outputs and TZ1, TZ2, and TZ3 inputs generate Digital Compare
A High/Low (DCAH, DCAL) and Digital Compare B High/Low (DCBH, DCBL) signals.
• DCAH/L and DCBH/L signals trigger events which can then either be filtered or fed directly to the tripzone, event-trigger, and time-base submodules to:
– generate a trip zone interrupt
– generate an ADC start of conversion
– force an event
– generate a synchronization event for synchronizing the ePWM module TBCTR.
• Event filtering (blanking window logic) can optionally blank the input signal to remove noise.
3.2.9.2
Controlling and Monitoring the Digital Compare Submodule
The digital compare submodule operation is controlled and monitored through the following registers:
Table 3-21. Digital Compare Submodule Registers
Register Name
Address offset
Shadowed
TZDCSEL (1)
(2)
0x13
No
Description
Trip Zone Digital Compare Select Register
DCTRIPSEL
(1)
0x30
No
Digital Compare Trip Select Register
DCACTL (1)
0x31
No
Digital Compare A Control Register
DCBCTL (1)
0x32
No
Digital Compare B Control Register
DCFCTL (1)
0x33
No
Digital Compare Filter Control Register
0x34
No
Digital Compare Capture Control Register
DCCAPCTL
(1)
(2)
(1)
These registers are EALLOW protected and can be modified only after executing the EALLOW instruction. For more information,
see the device-specific version of the System Control and Interrupts Reference Guide.
The TZDCSEL register is part of the trip-zone submodule but is mentioned again here because of its functional significance to
the digital compare submodule.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 303
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Table 3-21. Digital Compare Submodule Registers (continued)
Register Name
3.2.9.3
Address offset
Shadowed
DCFOFFSET
0x35
Writes
Description
DCFOFFSETCNT
0x36
No
Digital Compare Filter Offset Counter Register
DCFWINDOW
0x37
No
Digital Compare Filter Window Register
DCFWINDOWCNT
0x38
No
Digital Compare Filter Window Counter Register
DCCAP
0x39
Yes
Digital Compare Counter Capture Register
Digital Compare Filter Offset Register
Operation Highlights of the Digital Compare Submodule
The following sections describe the operational highlights and configuration options for the digital compare
submodule.
3.2.9.3.1 Digital Compare Events
As illustrated in Figure 3-47 earlier in this section, trip zone inputs (TZ1, TZ2, and TZ3) and COMPxOUT
signals from the analog comparator (COMP) module can be selected via the DCTRIPSEL bits to generate
the Digital Compare A High and Low (DCAH/L) and Digital Compare B High and Low (DCBH/L) signals.
Then, the configuration of the TZDCSEL register qualifies the actions on the selected DCAH/L and
DCBH/L signals, which generate the DCAEVT1/2 and DCBEVT1/2 events (Event Qualification A and B).
NOTE: The TZn signals, when used as a DCEVT tripping functions, are treated as a normal input
signal and can be defined to be active high or active low inputs. EPWM outputs are
asynchronously tripped when either the TZn, DCAEVTx.force, or DCBEVTx.force signals are
active. For the condition to remain latched, a minimum of 3*TBCLK sync pulse width is
required. If pulse width is < 3*TBCLK sync pulse width, the trip condition may or may not get
latched by CBC or OST latches.
The DCAEVT1/2 and DCBEVT1/2 events can then be filtered to provide a filtered version of the event
signals (DCEVTFILT) or the filtering can be bypassed. Filtering is discussed further in Section 3.2.9.3.2.
Either the DCAEVT1/2 and DCBEVT1/2 event signals or the filtered DCEVTFILT event signals can
generate a force to the trip zone module, a TZ interrupt, an ADC SOC, or a PWM sync signal.
• force signal:
DCAEVT1/2.force signals force trip zone conditions which either directly influence the output on the
EPWMxA pin (via TZCTL[DCAEVT1 or DCAEVT2] configurations) or, if the DCAEVT1/2 signals are
selected as one-shot or cycle-by-cycle trip sources (via the TZSEL register), the DCAEVT1/2.force
signals can effect the trip action via the TZCTL[TZA] configuration. The DCBEVT1/2.force signals
behaves similarly, but affect the EPWMxB output pin instead of the EPWMxA output pin.
The priority of conflicting actions on the TZCTL register is as follows (highest priority overrides lower
priority):
Output EPWMxA: TZA (highest) -> DCAEVT1 -> DCAEVT2 (lowest)
Output EPWMxB: TZB (highest) -> DCBEVT1 -> DCBEVT2 (lowest)
• interrupt signal:
DCAEVT1/2.interrupt signals generate trip zone interrupts to the PIE. To enable the interrupt, the user
must set the DCAEVT1, DCAEVT2, DCBEVT1, or DCBEVT2 bits in the TZEINT register. Once one of
these events occurs, an EPWMxTZINT interrupt is triggered, and the corresponding bit in the TZCLR
register must be set in order to clear the interrupt.
• soc signal:
The DCAEVT1.soc signal interfaces with the event-trigger submodule and can be selected as an event
which generates an ADC start-of-conversion-A (SOCA) pulse via the ETSEL[SOCASEL] bit. Likewise,
the DCBEVT1.soc signal can be selected as an event which generates an ADC start-of-conversion-B
(SOCB) pulse via the ETSEL[SOCBSEL] bit.
• sync signal:
304
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
The DCAEVT1.sync and DCBEVT1.sync events are ORed with the EPWMxSYNCI input signal and the
TBCTL[SWFSYNC] signal to generate a synchronization pulse to the time-base counter.
The diagrams below show how the DCAEVT1, DCAEVT2 or DCEVTFLT signals are processed to
generate the digital compare A event force, interrupt, soc and sync signals.
Figure 3-48. DCAEVT1 Event Triggering
DCACTL[EVT1SRCSEL]
DCACTL[EVT1FRCSYNCSEL]
DCEVTFILT
1
DCAEVT1
0
Async
1
Sync
DCAEVT1.force
0
TZEINT[DCAEVT1]
TBCLK
Set
Latch
Clear
DCAEVT1.inter
TZFLG[DCAEVT1]
TZCLR[DCAEVT1]
DCAEVT1.soc
DCACTL[EVT1SOCE]
DCAEVT1.sync
TZFRC[DCAEVT1]
DCACTL[EVT1SYNCE]
Figure 3-49. DCAEVT2 Event Triggering
DCACTL[EVT2SRCSEL]
DCACTL[EVT2FRCSYNCSEL]
DCEVTFILT
1
DCAEVT2
0
Async
1
Sync
DCAEVT2.force
0
TZEINT[DCAEVT2]
TBCLK
Set
Latch
Clear
TZFRC[DCAEVT2]
TZCLR[DCAEVT2]
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
DCAEVT2.inter
TZFLG[DCAEVT2]
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
305
ePWM Submodules
www.ti.com
The diagrams below show how the DCBEVT1, DCBEVT2 or DCEVTFLT signals are processed to
generate the digital compare B event force, interrupt, soc and sync signals.
Figure 3-50. DCBEVT1 Event Triggering
DCBCTL[EVT1SRCSEL]
DCEVTFILT
1
DCBEVT1
0
DCBCTL[EVT1FRCSYNCSEL]
async
Sync
1
DCBEVT1.force
0
TBCLK
TZEINT[DCBEVT1]
set
Latch
clear
TZCLR[DCBEVT1]
DCBEVT1.inter
TZFLG[DCBEVT1]
DCBEVT1.soc
DCBCTL[EVT1SOCE]
DCBEVT1.sync
TZFRC[DCBEVT1]
DCBCTL[EVT1SYNCE]
Figure 3-51. DCBEVT2 Event Triggering
DCBCTL[EVT2SRCSEL]
DCEVTFILT
1
DCBEVT2
0
async
Sync
DCBCTL[EVT2FRCSYNCSEL]
1
DCBEVT2.force
0
TBCLK
TZEINT[DCBEVT2]
set
Latch
clear
TZCLR[DCBEVT2]
DCBEVT2.inter
TZFLG[DCBEVT2]
TZFRC[DCBEVT2]
3.2.9.3.2 Event Filtering
The DCAEVT1/2 and DCBEVT1/2 events can be filtered via event filtering logic to remove noise by
optionally blanking events for a certain period of time. This is useful for cases where the analog
comparator outputs may be selected to trigger DCAEVT1/2 and DCBEVT1/2 events, and the blanking
logic is used to filter out potential noise on the signal prior to tripping the PWM outputs or generating an
interrupt or ADC start-of-conversion. The event filtering can also capture the TBCTR value of the trip
event. The diagram below shows the details of the event filtering logic.
306
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ePWM Submodules
www.ti.com
Figure 3-52. Event Filtering
DCCAP[15:0] Reg
DCFCTL[BLANKE, PULSESEL]
DCFOFFSET[OFFSET]
Blank
Control
Logic
CTR=PRD
CTR=Zero
TBCLK
TBCTR(16)
DCFWINDOW[WINDOW]
CTR = PRD
CTR = 0
TBCLK
BLANKWDW
DCFCTL[INVERT]
Capture
Control
Logic
DCCAPCTL[CAPE, SHDWMODE]
DCFCTL[PULSESEL]
Sync
1
0
TBCLK
DCAEVT1
00
DCAEVT2
01
DCBEVT1
10
DCBEVT2
11
async
DCEVTFILT
DCFCTL[SRCSEL]
If the blanking logic is enabled, one of the digital compare events – DCAEVT1, DCAEVT2, DCBEVT1,
DCBEVT2 – is selected for filtering. The blanking window, which filters out all event occurrences on the
signal while it is active, will be aligned to either a CTR = PRD pulse or a CTR = 0 pulse (configured by the
DCFCTL[PULSESEL] bits). An offset value in TBCLK counts is programmed into the DCFOFFSET
register, which determines at what point after the CTR = PRD or CTR = 0 pulse the blanking window
starts. The duration of the blanking window, in number of TBCLK counts after the offset counter expires, is
written to the DCFWINDOW register by the application. During the blanking window, all events are
ignored. Before and after the blanking window ends, events can generate soc, sync, interrupt, and force
signals as before.
Figure 3-53 illustrates several timing conditions for the offset and blanking window within an ePWM
period. Notice that if the blanking window crosses the CTR = 0 or CTR = PRD boundary, the next window
still starts at the same offset value after the CTR = 0 or CTR = PRD pulse.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
307
ePWM Submodules
www.ti.com
Figure 3-53. Blanking Window Timing Diagram
Period
TBCLK
CTR = PRD
or CTR = 0
Offset(n)
BLANKWDW
Offset(n+1)
Window(n)
Window(n+1)
Offset(n)
BLANKWDW
Offset(n+1)
Window(n)
Offset(n)
Window(n+1)
Offset(n+1)
BLANKWDW
Window(n+1)
Window(n)
308
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
3.3
Applications to Power Topologies
An ePWM module has all the local resources necessary to operate completely as a standalone module or
to operate in synchronization with other identical ePWM modules.
3.3.1 Overview of Multiple Modules
Previously in this user's guide, all discussions have described the operation of a single module. To
facilitate the understanding of multiple modules working together in a system, the ePWM module
described in reference is represented by the more simplified block diagram shown in Figure 3-54. This
simplified ePWM block shows only the key resources needed to explain how a multiswitch power topology
is controlled with multiple ePWM modules working together.
Figure 3-54. Simplified ePWM Module
SyncIn
Phase reg
EN
Φ=0°
EPWMxA
EPWMxB
CTR = 0
CTR=CMPB
X
SyncOut
3.3.2 Key Configuration Capabilities
The key configuration choices available to each module are as follows:
• Options for SyncIn
• Load own counter with phase register on an incoming sync strobe—enable (EN) switch closed
• Do nothing or ignore incoming sync strobe—enable switch open
• Sync flow-through - SyncOut connected to SyncIn
• Master mode, provides a sync at PWM boundaries—SyncOut connected to CTR = PRD
• Master mode, provides a sync at any programmable point in time—SyncOut connected to CTR =
CMPB
• Module is in standalone mode and provides No sync to other modules—SyncOut connected to X
(disabled)
• Options for SyncOut
– Sync flow-through - SyncOut connected to SyncIn
– Master mode, provides a sync at PWM boundaries—SyncOut connected to CTR = PRD
– Master mode, provides a sync at any programmable point in time—SyncOut connected to CTR =
CMPB
– Module is in standalone mode and provides No sync to other modules—SyncOut connected to X
(disabled)
For each choice of SyncOut, a module may also choose to load its own counter with a new phase value
on a SyncIn strobe input or choose to ignore it, i.e., via the enable switch. Although various combinations
are possible, the two most common—master module and slave module modes—are shown in Figure 3-55.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
309
Applications to Power Topologies
www.ti.com
Figure 3-55. EPWM1 Configured as a Typical Master, EPWM2 Configured as a Slave
Ext SyncIn
(optional)
Master
Slave
Phase reg
SyncIn
Phase reg EN
Φ=0°
EN
Φ=0°
EPWM1A
EPWM1B
CTR=0
CTR=CMPB
X
1
SyncIn
EPWM2A
2
SyncOut
EPWM2B
CTR=0
CTR=CMPB
X
SyncOut
3.3.3 Controlling Multiple Buck Converters With Independent Frequencies
One of the simplest power converter topologies is the buck. A single ePWM module configured as a
master can control two buck stages with the same PWM frequency. If independent frequency control is
required for each buck converter, then one ePWM module must be allocated for each converter stage.
Figure 3-56 shows four buck stages, each running at independent frequencies. In this case, all four ePWM
modules are configured as masters and no synchronization is used. Figure 3-57 shows the waveforms
generated by the setup shown in Figure 3-56; note that only three waveforms are shown, although there
are four stages.
310
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Figure 3-56. Control of Four Buck Stages. Here FPWM1≠ FPWM2≠ FPWM3≠ FPWM4
Ext SyncIn
(optional)
Master1
Phase reg
Φ=X
SyncIn
En
Vin1
EPWM1B
CTR=zero
CTR=CMPB
X
1
Buck #1
EPWM1A
SyncOut
Master2
Phase reg
Φ=X
SyncIn
Vin2
Vout2
En
EPWM2A
2
Buck #2
EPWM2B
CTR=zero
CTR=CMPB
X
EPWM2A
SyncOut
Master3
Phase reg
Φ=X
SyncIn
Vin3
En
Vout3
EPWM3A
3
Buck #3
EPWM3B
CTR=zero
CTR=CMPB
X
EPWM3A
SyncOut
Master4
Phase reg
Φ=X
Vin4
SyncIn
Vout4
En
EPWM4A
Buck #4
EPWM4B
CTR=zero
CTR=CMPB
X
3
Vout1
EPWM1A
EPWM4A
SyncOut
NOTE: Θ = X indicates value in phase register is a "don't care"
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
311
Applications to Power Topologies
www.ti.com
Figure 3-57. Buck Waveforms for Figure 3-56 (Note: Only three bucks shown here)
P
I
P
I
P
I
P
700
950
CA
CB
A
1200
P
CA
P
EPWM1A
Pulse center
P
700
1150
CA
CB
A
1400
P
CA
EPWM2A
650
500
CA
P
800
CA
P
CA
P
CB
A
EPWM3A
P
I
312
Indicates this event triggers an interrupt
Enhanced Pulse Width Modulator (ePWM) Module
CB
A
Indicates this event triggers an ADC start
of conversion
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-8. Configuration for Example in Figure 3-57
//=====================================================================
// (Note: code for only 3 modules shown)
// Initialization Time
//========================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 1200;
// Period = 1201 TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Asymmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
// EPWM Module 2 config
EPwm2Regs.TBPRD = 1400;
// Period = 1401 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Asymmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
// EPWM Module 3 config
EPwm3Regs.TBPRD = 800;
// Period = 801 TBCLK counts
EPwm3Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;
//
// Run Time (Note: Example execution of one run-time instant)
//=========================================================
EPwm1Regs.CMPA.half.CMPA = 700;
// adjust duty for output EPWM1A
EPwm2Regs.CMPA.half.CMPA = 700;
// adjust duty for output EPWM2A
EPwm3Regs.CMPA.half.CMPA = 500;
// adjust duty for output EPWM3A
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
313
Applications to Power Topologies
www.ti.com
3.3.4 Controlling Multiple Buck Converters With Same Frequencies
If synchronization is a requirement, ePWM module 2 can be configured as a slave and can operate at
integer multiple (N) frequencies of module 1. The sync signal from master to slave ensures these modules
remain locked. Figure 3-58 shows such a configuration; Figure 3-59 shows the waveforms generated by
the configuration.
Figure 3-58. Control of Four Buck Stages. (Note: FPWM2 = N x FPWM1)
Vin1
Buck #1
Ext SyncIn
(optional)
Master
Phase reg
Φ=0°
Vout1
EPWM1A
SyncIn
En
EPWM1A
Vin2
Vout2
EPWM1B
CTR=zero
CTR=CMPB
Buck #2
EPWM1B
X
SyncOut
Vin3
Buck #3
Slave
Phase reg
Φ=X
EPWM2A
SyncIn
En
EPWM2A
EPWM2B
CTR=zero
CTR=CMPB
X
Vin4
Vout4
Buck #4
SyncOut
314
Vout3
EPWM2B
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Figure 3-59. Buck Waveforms for Figure 3-58 (Note: FPWM2 = FPWM1))
600
Z
I
400
Z
I
Z
I
400
200
200
CA
P
A
CA
CA
P
A
CA
EPWM1A
CB
CB
CB
CB
EPWM1B
500
500
300
300
CA
CA
CA
CA
EPWM2A
CB
CB
CB
CB
EPWM2B
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
315
Applications to Power Topologies
www.ti.com
Example 3-9. Code Snippet for Configuration in Figure 3-58
//========================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 600;
// Period = 1200 TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
// Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
// set actions for EPWM1B
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
// EPWM Module 2 config
EPwm2Regs.TBPRD = 600;
// Period = 1200 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
// Slave module
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM2A
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;
// set actions for EPWM2B
EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR;
//
// Run Time (Note: Example execution of one run-time instance)
//===========================================================
EPwm1Regs.CMPA.half.CMPA = 400;
// adjust duty for output EPWM1A
EPwm1Regs.CMPB = 200;
// adjust duty for output EPWM1B
EPwm2Regs.CMPA.half.CMPA = 500;
// adjust duty for output EPWM2A
EPwm2Regs.CMPB = 300;
// adjust duty for output EPWM2B
316
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
3.3.5 Controlling Multiple Half H-Bridge (HHB) Converters
Topologies that require control of multiple switching elements can also be addressed with these same
ePWM modules. It is possible to control a Half-H bridge stage with a single ePWM module. This control
can be extended to multiple stages. Figure 3-60 shows control of two synchronized Half-H bridge stages
where stage 2 can operate at integer multiple (N) frequencies of stage 1. Figure 3-61 shows the
waveforms generated by the configuration shown in Figure 3-60.
Module 2 (slave) is configured for Sync flow-through; if required, this configuration allows for a third Half-H
bridge to be controlled by PWM module 3 and also, most importantly, to remain in synchronization with
master module 1.
Figure 3-60. Control of Two Half-H Bridge Stages (FPWM2 = N x FPWM1)
VDC_bus
Ext SyncIn
(optional)
Master
Phase reg
En
Φ=0°
SyncIn
EPWM1A
EPWM1A
EPWM1B
CTR=zero
CTR=CMPB
X
EPWM1B
SyncOut
Slave
Phase reg
En
Φ=0°
Vout1
SyncIn
VDC_bus
Vout2
EPWM2A
EPWM2B
CTR=zero
CTR=CMPB
X
EPWM2A
SyncOut
EPWM2B
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
317
Applications to Power Topologies
www.ti.com
Figure 3-61. Half-H Bridge Waveforms for Figure 3-60 (Note: Here FPWM2 = FPWM1 )
Z
I
Z
I
600
400
400
200
200
Z
CB
A
Z
I
Z
CA
CB
A
CA
EPWM1A
CA
CB
A
Z
CA
CB
A
Z
CA
CB
A
Z
EPWM1B
Pulse Center
500
500
250
Z
CB
A
250
CA
Z
CB
A
CA
EPWM2A
CA
CB
A
Z
EPWM2B
Pulse Center
318
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-10. Code Snippet for Configuration in Figure 3-60
//=====================================================================
// Config
//=====================================================================
// Initialization Time
//========================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 600;
// Period = 1200 TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
// Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
// set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
// set actions for EPWM1B
EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;
// EPWM Module 2 config
EPwm2Regs.TBPRD = 600;
// Period = 1200 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
// Slave module
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
// set actions for EPWM1A
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
// set actions for EPWM1B
EPwm2Regs.AQCTLB.bit.CAD = AQ_SET;
//============================================================
EPwm1Regs.CMPA.half.CMPA = 400;
// adjust duty for output EPWM1A &
EPwm1Regs.CMPB = 200;
// adjust point-in-time for ADCSOC
EPwm2Regs.CMPA.half.CMPA = 500;
// adjust duty for output EPWM2A &
EPwm2Regs.CMPB = 250;
// adjust point-in-time for ADCSOC
EPWM1B
trigger
EPWM2B
trigger
3.3.6 Controlling Dual 3-Phase Inverters for Motors (ACI and PMSM)
The idea of multiple modules controlling a single power stage can be extended to the 3-phase Inverter
case. In such a case, six switching elements can be controlled using three PWM modules, one for each
leg of the inverter. Each leg must switch at the same frequency and all legs must be synchronized. A
master + two slaves configuration can easily address this requirement. Figure 3-62 shows how six PWM
modules can control two independent 3-phase Inverters; each running a motor.
As in the cases shown in the previous sections, we have a choice of running each inverter at a different
frequency (module 1 and module 4 are masters as in Figure 3-62), or both inverters can be synchronized
by using one master (module 1) and five slaves. In this case, the frequency of modules 4, 5, and 6 (all
equal) can be integer multiples of the frequency for modules 1, 2, 3 (also all equal).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
319
Applications to Power Topologies
www.ti.com
Figure 3-62. Control of Dual 3-Phase Inverter Stages as Is Commonly Used in Motor Control
Ext SyncIn
(optional)
Master
Phase reg
En
SyncIn
Φ=0°
EPWM1A
CTR=zero
CTR=CMPB
X
1
SyncOut
Slave
Phase reg
En
EPWM2A
CTR=zero
CTR=CMPB
X
2
SyncOut
EPWM2A
EPWM1A
SyncIn
Φ=0°
Slave
Phase reg
En
EPWM1B
EPWM3A
VAB
VCD
EPWM2B
VEF
EPWM1B
EPWM2B
EPWM3B
3 phase motor
SyncIn
Φ=0°
EPWM3A
CTR=zero
CTR=CMPB
X
3
SyncOut
3 phase inverter #1
EPWM3B
Slave
Phase reg
SyncIn
En
Φ=0°
EPWM4A
CTR=zero
CTR=CMPB
X
4
SyncOut
Slave
Phase reg
En
EPWM4A
SyncIn
Φ=0°
EPWM6A
VCD
VEF
EPWM5B
EPWM4B
EPWM5B
EPWM6B
3 phase motor
SyncIn
Φ=0°
CTR=zero
CTR=CMPB
X
6
SyncOut
320
EPWM5A
VAB
EPWM5A
CTR=zero
CTR=CMPB
X
5
SyncOut
Slave
Phase reg
En
EPWM4B
EPWM6A
3 phase inverter #2
EPWM6B
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Figure 3-63. 3-Phase Inverter Waveforms for Figure 3-62 (Only One Inverter Shown)
Z
I
Z
I
800
500
500
CA
CA
P
A
EPWM1A
CA
CA
P
A
RED
RED
EPWM1B
FED
FED
Φ2=0
600
600
CA
CA
CA
CA
EPWM2A
RED
EPWM2B
FED
700
Φ3=0
CA
EPWM3A
700
CA
CA
CA
RED
EPWM3B
FED
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
321
Applications to Power Topologies
www.ti.com
Example 3-11. Code Snippet for Configuration in Figure 3-62
//=====================================================================
// Configuration
//=====================================================================
// Initialization Time
//========================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 800;
// Period = 1600 TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
// Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
// Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm1Regs.DBFED = 50;
// FED = 50 TBCLKs
EPwm1Regs.DBRED = 50;
// RED = 50 TBCLKs
// EPWM Module 2 config
EPwm2Regs.TBPRD = 800;
// Period = 1600 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
// Symmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
// Slave module
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM2A
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm2Regs.DBFED = 50;
// FED = 50 TBCLKs
EPwm2Regs.DBRED = 50;
// RED = 50 TBCLKs
// EPWM Module 3 config
EPwm3Regs.TBPRD = 800;
// Period = 1600 TBCLK counts
EPwm3Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
// Symmetrical mode
EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;
// Slave module
EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM3A
EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm3Regs.DBCTL.bitMODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm3Regs.DBFED = 50;
// FED = 50 TBCLKs
EPwm3Regs.DBRED = 50;
// RED = 50 TBCLKs
// Run Time (Note: Example execution of one run-time instant)
//=========================================================
EPwm1Regs.CMPA.half.CMPA = 500;
// adjust duty for output EPWM1A
EPwm2Regs.CMPA.half.CMPA = 600;
// adjust duty for output EPWM2A
EPwm3Regs.CMPA.half.CMPA = 700;
// adjust duty for output EPWM3A
322
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
3.3.7 Practical Applications Using Phase Control Between PWM Modules
So far, none of the examples have made use of the phase register (TBPHS). It has either been set to zero
or its value has been a don't care. However, by programming appropriate values into TBPHS, multiple
PWM modules can address another class of power topologies that rely on phase relationship between
legs (or stages) for correct operation. As described in the TB module section, a PWM module can be
configured to allow a SyncIn pulse to cause the TBPHS register to be loaded into the TBCTR register. To
illustrate this concept, Figure 3-64 shows a master and slave module with a phase relationship of 120°,
i.e., the slave leads the master.
Figure 3-64. Configuring Two PWM Modules for Phase Control
Ext SyncIn
(optional)
Master
Phase reg
SyncIn
En
Φ=0°
EPWM1A
EPWM1B
CTR=zero
CTR=CMPB
X
1
SyncOut
Slave
Phase reg
SyncIn
En
Φ=120°
EPWM2A
EPWM2B
CTR=zero
CTR=CMPB
X
2
SyncOut
Figure 3-65 shows the associated timing waveforms for this configuration. Here, TBPRD = 600 for both
master and slave. For the slave, TBPHS = 200 (200/600 X 360° = 120°). Whenever the master generates
a SyncIn pulse (CTR = PRD), the value of TBPHS = 200 is loaded into the slave TBCTR register so the
slave time-base is always leading the master's time-base by 120°.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
323
Applications to Power Topologies
www.ti.com
Figure 3-65. Timing Waveforms Associated With Phase Control Between 2 Modules
FFFFh
TBCTR[0-15]
Master Module
600
600
TBPRD
0000
CTR = PRD
(SycnOut)
FFFFh
time
TBCTR[0-15]
Φ2
Phase = 120°
Slave Module
TBPRD
600
600
200
200
TBPHS
0000
SyncIn
time
3.3.8 Controlling a 3-Phase Interleaved DC/DC Converter
A popular power topology that makes use of phase-offset between modules is shown in Figure 3-66. This
system uses three PWM modules, with module 1 configured as the master. To work, the phase
relationship between adjacent modules must be F = 120°. This is achieved by setting the slave TBPHS
registers 2 and 3 with values of 1/3 and 2/3 of the period value, respectively. For example, if the period
register is loaded with a value of 600 counts, then TBPHS (slave 2) = 200 and TBPHS (slave 3) = 400.
Both slave modules are synchronized to the master 1 module.
This concept can be extended to four or more phases, by setting the TBPHS values appropriately. The
following formula gives the TBPHS values for N phases:
TBPHS(N,M) = (TBPRD/N) x (—1)
Where:
N = number of phases
M = PWM module number
For example, for the 3-phase case (N=3), TBPRD = 600,
TBPHS(3,2) = (600/3) x (2-1) = 200 (that is, Phase value for Slave module 2)
TBPHS(3,3) = 400 (Phase value for Slave module 3)
324
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Figure 3-67 shows the waveforms for the configuration in Figure 3-66.
Figure 3-66. Control of a 3-Phase Interleaved DC/DC Converter
Ext SyncIn
(optional)
Master
Phase reg
Φ=0°
SyncIn
VIN
En
EPWM1A
EPWM1B
CTR=zero
CTR=CMPB
X
1
EPWM1A
EPWM2A
EPWM3A
EPWM1B
EPWM2B
EPWM3B
SyncOut
Slave
Phase reg
Φ=120°
SyncIn
VOUT
En
EPWM2A
EPWM2B
CTR=zero
CTR=CMPB
X
2
SyncOut
Slave
Phase reg
SyncIn
En
Φ=240°
EPWM3A
EPWM3B
CTR=zero
CTR=CMPB
X
3
SyncOut
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
325
Applications to Power Topologies
www.ti.com
Figure 3-67. 3-Phase Interleaved DC/DC Converter Waveforms for Figure 3-66
Z
I
285
CA
EPWM1A
285
P
A
CA
CA
RED
P
A
FED
Z
I
CA
CA
RED
EPWM1B
300
Z
I
Z
I
450
P
A
CA
RED
FED
FED
Φ2=120°
TBPHS
(=300)
EPWM2A
EPWM2B
300
Φ2=120°
TBPHS
(=300)
EPWM3A
EPWM3B
326
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-12. Code Snippet for Configuration in Figure 3-66
//=====================================================================
// Config
// Initialization Time
//===========================================================================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 450;
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm1Regs.DBFED = 20;
EPwm1Regs.DBRED = 20;
EPwm2Regs.TBPRD = 450;
EPwm2Regs.TBPHS.half.TBPHS = 300;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.bit.PHSDIR = TB_DOWN;
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm2Regs.DBFED = 20;
EPwm2Regs.DBRED = 20;
//
//
//
//
Period = 900 TBCLK counts
Set Phase register to zero
Symmetrical mode
Master module
// Sync down-stream module
// load on CTR=Zero
// load on CTR=Zero
// set actions for EPWM1A
//
//
//
//
//
//
//
//
//
//
enable Dead-band module
Active Hi complementary
FED = 20 TBCLKs
RED = 20 TBCLKs
EPWM Module 2 config
Period = 900 TBCLK counts
Phase = 300/900 * 360 = 120 deg
Symmetrical mode
Slave module
Count DOWN on sync (=120 deg)
// sync flow-through
// load on CTR=Zero
// load on CTR=Zero
// set actions for EPWM2A
//
//
//
//
//
//
//
//
//
//
enable dead-band module
Active Hi Complementary
FED = 20 TBCLKs
RED = 20 TBCLKs
EPWM Module 3 config
Period = 900 TBCLK counts
Phase = 300/900 * 360 = 120 deg
Symmetrical mode
Slave module
Count UP on sync (=240 deg)
EPwm3Regs.TBPRD = 450;
EPwm3Regs.TBPHS.half.TBPHS = 300;
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;
EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;
// set actions for EPWM3Ai
EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm3Regs.DBFED = 20;
// FED = 20 TBCLKs
EPwm3Regs.DBRED = 20;
// RED = 20 TBCLKs
// Run Time (Note: Example execution of one run-time instant)
//===========================================================
EPwm1Regs.CMPA.half.CMPA = 285;
// adjust duty for output EPWM1A
EPwm2Regs.CMPA.half.CMPA = 285;
// adjust duty for output EPWM2A
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
327
Applications to Power Topologies
www.ti.com
Example 3-12. Code Snippet for Configuration in Figure 3-66 (continued)
EPwm3Regs.CMPA.half.CMPA = 285;
328
// adjust duty for output EPWM3A
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
3.3.9 Controlling Zero Voltage Switched Full Bridge (ZVSFB) Converter
The example given in Figure 3-68 assumes a static or constant phase relationship between legs
(modules). In such a case, control is achieved by modulating the duty cycle. It is also possible to
dynamically change the phase value on a cycle-by-cycle basis. This feature lends itself to controlling a
class of power topologies known as phase-shifted full bridge, or zero voltage switched full bridge. Here the
controlled parameter is not duty cycle (this is kept constant at approximately 50 percent); instead it is the
phase relationship between legs. Such a system can be implemented by allocating the resources of two
PWM modules to control a single power stage, which in turn requires control of four switching elements.
Figure 3-69 shows a master/slave module combination synchronized together to control a full H-bridge. In
this case, both master and slave modules are required to switch at the same PWM frequency. The phase
is controlled by using the slave's phase register (TBPHS). The master's phase register is not used and
therefore can be initialized to zero.
Figure 3-68. Controlling a Full-H Bridge Stage (FPWM2 = FPWM1)
Ext SyncIn
(optional)
Master
Phase reg
Φ=0°
SyncIn
En
EPWM1A
CTR=zero
CTR=CMPB
X
Slave
Phase reg
Φ=Var°
Vout
VDC_bus
EPWM1B
SyncOut
EPWM1A
EPWM2A
EPWM1B
EPWM2B
SyncIn
En
CTR=zero
CTR=CMPB
X
EPWM2A
EPWM2B
SyncOut
Var = Variable
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
329
Applications to Power Topologies
www.ti.com
Figure 3-69. ZVS Full-H Bridge Waveforms
Z
I
Z
I
Z
I
1200
600
200
Z
CB
A
CA
Z
CB
A
CA
Z
RED
ZVS transition
EPWM1A
Power phase
FED
ZVS transition
EPWM1B
300
TBPHS
=(1200−Φ2)
Φ2=variable
CB
A
Z
CA
CB
A
Z
Z
CA
RED
EPWM2A
EPWM2B
FED
Power phase
330
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-13. Code Snippet for Configuration in Figure 3-68
//=====================================================================
// Config
//=====================================================================
// Initialization Time
//========================
// EPWM Module 1 config
EPwm1Regs.TBPRD = 1200;
// Period = 1201 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 600;
// Set 50% fixed duty for EPWM1A
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Asymmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
// Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
// set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm1Regs.DBFED = 50;
// FED = 50 TBCLKs initially
EPwm1Regs.DBRED = 70;
// RED = 70 TBCLKs initially
// EPWM Module 2 config
EPwm2Regs.TBPRD = 1200;
// Period = 1201 TBCLK counts
EPwm2Regs.CMPA.half.CMPA = 600;
// Set 50% fixed duty EPWM2A
EPwm2Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero initially
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Asymmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
// Slave module
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
// sync flow-through
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// load on CTR=Zero
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
// set actions for EPWM2A
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// enable Dead-band module
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active Hi complementary
EPwm2Regs.DBFED = 30;
// FED = 30 TBCLKs initially
EPwm2Regs.DBRED = 40;
// RED = 40 TBCLKs initially
// Run Time (Note: Example execution of one run-time instant)
//============================================================
EPwm2Regs.TBPHS = 1200-300;
// Set Phase reg to
// 300/1200 * 360 = 90 deg
EPwm1Regs.DBFED = FED1_NewValue;
// Update ZVS transition interval
EPwm1Regs.DBRED = RED1_NewValue;
// Update ZVS transition interval
EPwm2Regs.DBFED = FED2_NewValue;
// Update ZVS transition interval
EPwm2Regs.DBRED = RED2_NewValue;
// Update ZVS transition interval
EPwm1Regs.CMPB = 200;
// Adjust point-in-time for ADCSOC trigger
3.3.10 Controlling a Peak Current Mode Controlled Buck Module
Peak current control techniques offer a number of benefits like automatic over current limiting, fast
correction for input voltage variations, and reducing magnetic saturation. Figure 3-70 shows the use of
ePWM1A along with the on-chip analog comparator for buck converter topology. The output current is
sensed through a current sense resistor and fed to the positive terminal of the on-chip comparator. The
internal programmable 10-bit DAC can be used to provide a reference peak current at the negative
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
331
Applications to Power Topologies
www.ti.com
terminal of the comparator. Alternatively, an external reference could be connected at this input. The
comparator output is an input to the digital compare submodule. The ePWM module is configured in such
a way so as to trip the ePWM1A output as soon as the sensed current reaches the peak reference value.
A cycle-by-cycle trip mechanism is used. Figure 3-71 shows the waveforms generated by the
configuration.
Figure 3-70. Peak Current Mode Control of a Buck Converter
Vin
Phase Reg
"#$#%
En
Vout
SyncIn
!
EPWM1A
EPWM1A
CNT=Zero
CNT=CMPB
EPWM1B
X
SyncOut
COMP1+/
ADCA2
Isense
Difference
Amplifier
Figure 3-71. Peak Current Mode Control Waveforms for Figure 3-70
C
TB
ePWM1
Time base
=
TR
o3
0t
00
TBPRD
= 300
DAC OUT/
COMP1-
Increased
Load
Isense
DCAEVT2.force
ePWM1A
332
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-14. Code Snippet for Configuration in Figure 3-70
//===========================================================================
// Config
// Initialization Time
//===========================================================================
EPwm1Regs.TBPRD = 300;
// Period = 300 TBCLK counts
// (200 KHz @ 60MHz clock)
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Asymmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
Pwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
// Set PWM1A on Zero
// Define an event (DCAEVT2) based on
// Comparator 1 Output
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT; // DCAH = Comparator 1 output
EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;
// DCAEVT2 = DCAH high(will become active
// as Comparator output goes high)
EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;
// DCAEVT2 = DCAEVT2 (not filtered)
EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC; // Take async path // Enable DCAEVT2 as a
// one-shot trip source
// Note: DCxEVT1 events can be defined as
// one-shot.
// DCxEVT2 events can be defined as
// cycle-by-cycle.
EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;
// What do we want the DCAEVT1 and DCBEVT1
// events to do?
// DCAEVTx events can force EPWMxA
// DCBEVTx events can force EPWMxB
EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
// EPWM1A will go low
//===========================================================================
// Run Time
//===========================================================================
// Adjust reference peak current to Comparator 1 negative input
3.3.11 Controlling H-Bridge LLC Resonant Converter
For many years, various topologies of resonant converters have been well-known in the field of power
electronics. In addition to these, H-bridge LLC resonant converter topology has recently gained popularity
in many consumer electronics applications where high efficiency and power density are required. In this
example, the single channel configuration of ePWM1 is detailed, yet the configuration can easily be
extended to multichannel. Here, the controlled parameter is not duty cycle (this is kept constant at
approximately 50 percent); instead it is frequency. Although the deadband is not controlled and kept
constant as 300ns (that is, 30 @100MHz TBCLK), it is up to the user to update it in real time to enhance
the efficiency by adjusting enough time delay for soft switching.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
333
Applications to Power Topologies
www.ti.com
Figure 3-72. Control of Two Resonant Converter Stages
Ext Sync In
(optional)
Master
Phase Reg
En
EPWM1A
EPWM1A
CNT=Zero
CNT=CMPB
1
LLC Resonant
Transformer
SyncIn
!"#" X
V OUT
Integrated
Magnetcis
V DC_bus
X
EPWM1B
SyncOut
EPWM1B
Cr
NOTE: Θ = X indicates value in phase register is a"don't care"
Figure 3-73. H-Bridge LLC Resonant Converter PWM Waveforms
P
P
P
I
I
I
period
period/2
period/4
P
CB
CA
P
CB
A
CA
P
A
EPWMxA
RED
ZVS
transition
EPWMxB
FED
ZVS
transition
P
I
334
Indicates this event triggers an interrupt
Enhanced Pulse Width Modulator (ePWM) Module
CB
A
Indicates this event triggers an ADC
start of conversion
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Applications to Power Topologies
www.ti.com
Example 3-15. Code Snippet for Configuration in Figure 3-72
//=====================================================================
// Config
//===================================================================== //
Initialization Time
//======================== //
EPWMxA & EPWMxB config
EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;
// Set immediate load
EPwm1Regs.TBPRD = period;
// PWM frequency = 1 / period
EPwm1Regs.CMPA.half.CMPA = period/2;
// Set duty as 50%
EPwm1Regs.CMPB = period/4;
// Set duty as 25%
EPwm1Regs.TBPHS.half.TBPHS = 0;
// Set as master, phase =0
EPwm1Regs.TBCTR = 0;
// Time base counter =0
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
// Count-up mode: used for asymmetric PWM
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Disable phase loading
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
// Used to sync EPWM(n+1)"down-stream"
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// Set the clock rate
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Set the clock rate
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;
// Load on CTR=PRD
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD;
// Load on CTR=PRD
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
// Shadow mode. Operates as a double buffer.
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
// Shadow mode. Operates as a double buffer.
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
// Set PWM1A on Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
// Clear PWM1A on event A, up count
EPwm1Regs.AQCTLB.bit.CAU = AQ_SET;
// Set PWM1B on event A, up count
EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR;
// Clear PWM1B on PRD
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;
// EPWMxA is the source for both delays
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// Enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
// Active High Complementary (AHC)
EPwm1Regs.DBRED = 30;
// RED = 30 TBCLKs initially
EPwm1Regs.DBFED = 30;
// FED = 30 TBCLKs initially
// Configure TZ1 for short cct
// protection EALLOW;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;
// oneshot source EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
// set EPWM1A to low at fault
EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
// set EPWM1B to low at fault instant
EPwm1Regs.TZEINT.bit.OST = 1;
// Enable TZ interrupt EDIS;
// Enable HiRes option EALLOW;
EPwm1Regs.HRCNFG.all = 0x0;
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP;
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_PRD;
EDIS;
// Run Time (Note: Example execution of
// one run-time instant)
//============================================================
EPwm1Regs.TBPRD = period_new value;
// Update new period
// EPwm1Regs.CMPA.half.CMPA= period_new
// value/2;
// Update new CMPA EPwm1Regs.CMPB= period_new
// value/4;
// Update new CMPB
// Update new CMPB
// Update new CMPB
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
335
Registers
3.4
www.ti.com
Registers
This chapter includes the register layouts and bit description for the submodules.
3.4.1 Time-Base Submodule Registers
Figure 3-74 through Figure 3-82 and Table 3-22 through Table 3-30 provide the time-base register
definitions.
Figure 3-74. Time-Base Period Register (TBPRD)
15
0
TBPRD
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-22. Time-Base Period Register (TBPRD) Field Descriptions
Bit
15-0
Field
Value
Description
TBPRD
0000FFFFh
These bits determine the period of the time-base counter. This sets the PWM frequency.
Shadowing of this register is enabled and disabled by the TBCTL[PRDLD] bit. By default this
register is shadowed.
• If TBCTL[PRDLD] = 0, then the shadow is enabled and any write or read will automatically go to
the shadow register. In this case, the active register will be loaded from the shadow register
when the time-base counter equals zero.
• If TBCTL[PRDLD] = 1, then the shadow is disabled and any write or read will go directly to the
active register, that is the register actively controlling the hardware.
• The active and shadow registers share the same memory map address.
Figure 3-75. Time Base Period High Resolution Register (TBPRDHR)
15
8
TBPRDHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-23. Time Base Period High Resolution Register (TBPRDHR) Field Descriptions
Bit
15-8
Field
Value
TBPRDHR
00-FFh Period High Resolution Bits
Description
These 8-bits contain the high-resolution portion of the period value.
The TBPRDHR register is not affected by the TBCTL[PRDLD] bit. Reads from this register always
reflect the shadow register. Likewise writes are also to the shadow register. The TBPRDHR register
is only used when the high resolution period feature is enabled.
This register is only available with ePWM modules which support high-resolution period control.
7-0
Reserved
0
Reserved
Figure 3-76. Time Base Period Mirror Register (TBPRDM)
15
0
TBPRD
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
336
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-24. Time Base Period Mirror Register (TBPRDM) Field Descriptions
Bit
Field
15-0
Value
TBPRD
Description
0000-FFFFh
TBPRDM and TBPRD can both be used to access the time-base period.
TBPRD provides backwards compatibility with earlier ePWM modules. The mirror registers
(TBPRDM and TBPRDHRM) allow for 32-bit writes to TBPRDHR in one access. Due to the odd
address memory location of the TBPRD legacy register, a 32-bit write is not possible.
By default writes to this register are shadowed. Unlike the TBPRD register, reads of TBPRDM
always return the active register value. Shadowing is enabled and disabled by the
TBCTL[PRDLD] bit.
• If TBCTL[PRDLD] = 0, then the shadow is enabled and any write will automatically go to the
shadow register. In this case the active register will be loaded from the shadow register when
the time-base counter equals zero. Reads return the active value.
• If TBCTL[PRDLD] = 1, then the shadow is disabled and any write to this register will go
directly to the active register controlling the hardware. Likewise reads return the active value.
Figure 3-77. Time-Base Period High Resolution Mirror Register (TBPRDHRM)
15
8
TBPRDHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-25. Time-Base Period High Resolution Mirror Register (TBPRDHRM) Field Descriptions
Bit
15-8
Field
Value
TBPRDHR
00-FFh Period High Resolution Bits
Description
These 8-bits contain the high-resolution portion of the period value
TBPRD provides backwards compatibility with earlier ePWM modules. The mirror registers
(TBPRDM and TBPRDHRM) allow for 32-bit writes to TBPRDHR in one access. Due to the oddnumbered memory address location of the TBPRD legacy register, a 32-bit write is not possible
with TBPRD and TBPRDHR.
The TBPRDHRM register is not affected by the TBCTL[PRDLD] bit
Writes to both the TBPRDHR and TBPRDM locations access the high-resolution (least significant 8bit) portion of the Time Base Period value. The only difference is that unlike TBPRDHR, reads from
the mirror register TBPRDHRM, are indeterminate (reserved for TI Test).
The TBPRDHRM register is available with ePWM modules which support high-resolution period
control and is used only when the high resolution period feature is enabled.
7-0
Reserved
00-FFh Reserved for TI Test
Figure 3-78. Time-Base Phase Register (TBPHS)
15
0
TBPHS
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-26. Time-Base Phase Register (TBPHS) Field Descriptions
Bits
Name
15-0
TBPHS
Value
Description
0000-FFFF These bits set time-base counter phase of the selected ePWM relative to the time-base that is
supplying the synchronization input signal.
• If TBCTL[PHSEN] = 0, then the synchronization event is ignored and the time-base counter is
not loaded with the phase.
• If TBCTL[PHSEN] = 1, then the time-base counter (TBCTR) will be loaded with the phase
(TBPHS) when a synchronization event occurs. The synchronization event can be initiated by
the input synchronization signal (EPWMxSYNCI) or by a software forced synchronization.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 337
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-79. Time-Base Phase High Resolution Register (TBPHSHR)
15
8
TBPHSHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-27. Time-Base Phase High Resolution Register (TBPHSHR) Field Descriptions
Field
Value
15-8
Bit
TBPHSHR
00-FFh Time base phase high-resolution bits
Description
7-0
Reserved
Reserved
Figure 3-80. Time-Base Counter Register (TBCTR)
15
0
TBCTR
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-28. Time-Base Counter Register (TBCTR) Field Descriptions
Bits
Name
Value
Description
15-0
TBCTR
0000FFFF
Reading these bits gives the current time-base counter value.
Writing to these bits sets the current time-base counter value. The update happens as soon as the
write occurs; the write is NOT synchronized to the time-base clock (TBCLK) and the register is not
shadowed.
Figure 3-81. Time-Base Control Register (TBCTL)
15
14
13
12
10
9
8
FREE, SOFT
PHSDIR
CLKDIV
HSPCLKDIV
R/W-0
R/W-0
R/W-0
R/W-0,0,1
7
6
3
2
HSPCLKDIV
SWFSYNC
5
SYNCOSEL
4
PRDLD
PHSEN
1
CTRMODE
0
R/W-0,0,1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-11
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-29. Time-Base Control Register (TBCTL) Field Descriptions
Bit
15:14
Field
Value
FREE, SOFT
Description
Emulation Mode Bits. These bits select the behavior of the ePWM time-base counter during
emulation events:
00
Stop after the next time-base counter increment or decrement
01
Stop when counter completes a whole cycle:
• Up-count mode: stop when the time-base counter = period (TBCTR = TBPRD)
• Down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
• Up-down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
1X
338
Free run
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-29. Time-Base Control Register (TBCTL) Field Descriptions (continued)
Bit
Field
13
PHSDIR
Value
Description
Phase Direction Bit.
This bit is only used when the time-base counter is configured in the up-down-count mode. The
PHSDIR bit indicates the direction the time-base counter (TBCTR) will count after a synchronization
event occurs and a new phase value is loaded from the phase (TBPHS) register. This is
irrespective of the direction of the counter before the synchronization event..
In the up-count and down-count modes this bit is ignored.
12:10
0
Count down after the synchronization event.
1
Count up after the synchronization event.
CLKDIV
Time-base Clock Prescale Bits
These bits determine part of the time-base clock prescale value.
TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
9:7
000
/1 (default on reset)
001
/2
010
/4
011
/8
100
/16
101
/32
110
/64
111
/128
HSPCLKDIV
High Speed Time-base Clock Prescale Bits
These bits determine part of the time-base clock prescale value.
TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
This divisor emulates the HSPCLK in the TMS320x281x system as used on the Event Manager
(EV) peripheral.
6
000
/1
001
/2 (default on reset)
010
/4
011
/6
100
/8
101
/10
110
/12
111
/14
SWFSYNC
Software Forced Synchronization Pulse
0
Writing a 0 has no effect and reads always return a 0.
1
Writing a 1 forces a one-time synchronization pulse to be generated.
This event is ORed with the EPWMxSYNCI input of the ePWM module.
SWFSYNC is valid (operates) only when EPWMxSYNCI is selected by SYNCOSEL = 00.
5:4
3
SYNCOSEL
Synchronization Output Select. These bits select the source of the EPWMxSYNCO signal.
00
EPWMxSYNC:
01
CTR = zero: Time-base counter equal to zero (TBCTR = 0x0000)
10
CTR = CMPB : Time-base counter equal to counter-compare B (TBCTR = CMPB)
11
Disable EPWMxSYNCO signal
PRDLD
Active Period Register Load From Shadow Register Select
0
The period register (TBPRD) is loaded from its shadow register when the time-base counter,
TBCTR, is equal to zero.
A write or read to the TBPRD register accesses the shadow register.
1
Load the TBPRD register immediately without using a shadow register.
A write or read to the TBPRD register directly accesses the active register.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
339
Registers
www.ti.com
Table 3-29. Time-Base Control Register (TBCTL) Field Descriptions (continued)
Bit
2
1:0
Field
Value
PHSEN
Description
Counter Register Load From Phase Register Enable
0
Do not load the time-base counter (TBCTR) from the time-base phase register (TBPHS)
1
Load the time-base counter with the phase register when an EPWMxSYNCI input signal occurs or
when a software synchronization is forced by the SWFSYNC bit, or when a digital compare sync
event occurs.
CTRMODE
Counter Mode
The time-base counter mode is normally configured once and not changed during normal operation.
If you change the mode of the counter, the change will take effect at the next TBCLK edge and the
current counter value shall increment or decrement from the value before the mode change.
These bits set the time-base counter mode of operation as follows:
340
00
Up-count mode
01
Down-count mode
10
Up-down-count mode
11
Stop-freeze counter operation (default on reset)
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-82. Time-Base Status Register (TBSTS)
15
8
Reserved
R-0
7
2
1
0
Reserved
3
CTRMAX
SYNCI
CTRDIR
R-0
R/W1C-0
R/W1C-0
R-1
LEGEND: R/W = Read/Write; R = Read only; R/W1C = Read/Write 1 to clear; -n = value after reset
Table 3-30. Time-Base Status Register (TBSTS) Field Descriptions
Bit
Field
Value
Description
15:3
Reserved
Reserved
2
CTRMAX
Time-Base Counter Max Latched Status Bit
1
0
0
Reading a 0 indicates the time-base counter never reached its maximum value. Writing a 0 will
have no effect.
1
Reading a 1 on this bit indicates that the time-base counter reached the max value 0xFFFF. Writing
a 1 to this bit will clear the latched event.
SYNCI
Input Synchronization Latched Status Bit
0
Writing a 0 will have no effect. Reading a 0 indicates no external synchronization event has
occurred.
1
Reading a 1 on this bit indicates that an external synchronization event has occurred
(EPWMxSYNCI). Writing a 1 to this bit will clear the latched event.
CTRDIR
Time-Base Counter Direction Status Bit. At reset, the counter is frozen; therefore, this bit has no
meaning. To make this bit meaningful, you must first set the appropriate mode via
TBCTL[CTRMODE].
0
Time-Base Counter is currently counting down.
1
Time-Base Counter is currently counting up.
Figure 3-83. EPWM DMA/CLA Configuration (EPWMCFG) Register
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
S“pares
CONFI
G
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-31. EPWM DMA/CLA Configuration (EPWMCFG) Register Field Descriptions
Bit
15-1
0
Field
Value
Description
Spares
CONFIG
EPWM DMA Enable bit
0
The EPWM blocks are not connected to the DMA bus.
The EPWM blocks are connected to the CLA bus
1
The EPWM blocks are connected to the DMA bus
The EPWM blocks are not connected to the CLA bus
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
341
Registers
www.ti.com
Figure 3-84. High Resolution Period Control Register (HRPCTL)
15
8
Reserved
R-0
7
2
1
0
Reserved
3
TBPHSHR
LOADE
Reserved
HRPE
R-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-32. High Resolution Period Control Register (HRPCTL) Field Descriptions
Bit
15-3
2
Field
Value Description (1)
(2)
Reserved
Reserved
TBPHSHRLOADE
TBPHSHR Load Enable
This bit allows you to synchronize ePWM modules with a high-resolution phase on a SYNCIN,
TBCTL[SWFSYNC], or digital compare event. This allows for multiple ePWM modules operating
at the same frequency to be phase aligned with high-resolution.
0
Disables synchronization of high-resolution phase on a SYNCIN, TBCTL[SWFSYNC] or digital
compare event.
1
Synchronize the high-resolution phase on a SYNCIN, TBCTL[SWFSYNC] or digital comparator
synchronization event. The phase is synchronized using the contents of the high-resolution phase
TBPHSHR register.
The TBCTL[PHSEN] bit which enables the loading of the TBCTR register with TBPHS register
value on a SYNCIN, or TBCTL[SWFSYNC] event works independently. However, users need to
enable this bit also if they want to control phase in conjunction with the high-resolution period
feature.
Note: This bit and the TBCTL[PHSEN] bit must be set to 1 when high resolution period control is
enabled for up-down count mode even if TBPHSHR = 0x0000.
1
Reserved
0
HRPE
Reserved
High Resolution Period Enable Bit
0
High resolution period feature disabled. In this mode the ePWM behaves as a Type 0 ePWM.
1
High resolution period enabled. In this mode the HRPWM module can control high-resolution of
both the duty and frequency.
When high-resolution period is enabled, TBCTL[CTRMODE] = 0,1 (down-count mode) is not
supported.
(1)
(2)
342
This register is EALLOW protected.
This register is used with Type 1 ePWM modules (support high-resolution period) only.
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
3.4.2 Counter-Compare Submodule Registers
Figure 3-85 through Figure 3-87 and Table 3-33 through Table 3-35 illustrate the counter-compare
submodule control and status registers.
Figure 3-85. Counter-Compare A Register (CMPA)
15
0
CMPA
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-33. Counter-Compare A Register (CMPA) Field Descriptions
Bits
Name
Description
15-0
CMPA
The value in the active CMPA register is continuously compared to the time-base counter (TBCTR). When
the values are equal, the counter-compare module generates a "time-base counter equal to counter
compare A" event. This event is sent to the action-qualifier where it is qualified and converted it into one
or more actions. These actions can be applied to either the EPWMxA or the EPWMxB output depending
on the configuration of the AQCTLA and AQCTLB registers. The actions that can be defined in the
AQCTLA and AQCTLB registers include:
• Do nothing; the event is ignored.
• Clear: Pull the EPWMxA and/or EPWMxB signal low
• Set: Pull the EPWMxA and/or EPWMxB signal high
• Toggle the EPWMxA and/or EPWMxB signal
Shadowing of this register is enabled and disabled by the CMPCTL[SHDWAMODE] bit. By default this
register is shadowed.
• If CMPCTL[SHDWAMODE] = 0, then the shadow is enabled and any write or read will automatically
go to the shadow register. In this case, the CMPCTL[LOADAMODE] bit field determines which event
will load the active register from the shadow register.
• Before a write, the CMPCTL[SHDWAFULL] bit can be read to determine if the shadow register is
currently full.
• If CMPCTL[SHDWAMODE] = 1, then the shadow register is disabled and any write or read will go
directly to the active register, that is the register actively controlling the hardware.
• In either mode, the active and shadow registers share the same memory map address.
Figure 3-86. Counter-Compare B Register (CMPB)
15
0
CMPB
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
343
Registers
www.ti.com
Table 3-34. Counter-Compare B Register (CMPB) Field Descriptions
Bits
Name
Description
15-0
CMPB
The value in the active CMPB register is continuously compared to the time-base counter (TBCTR). When
the values are equal, the counter-compare module generates a "time-base counter equal to counter
compare B" event. This event is sent to the action-qualifier where it is qualified and converted it into one
or more actions. These actions can be applied to either the EPWMxA or the EPWMxB output depending
on the configuration of the AQCTLA and AQCTLB registers. The actions that can be defined in the
AQCTLA and AQCTLB registers include:
• Do nothing. event is ignored.
• Clear: Pull the EPWMxA and/or EPWMxB signal low
• Set: Pull the EPWMxA and/or EPWMxB signal high
• Toggle the EPWMxA and/or EPWMxB signal
Shadowing of this register is enabled and disabled by the CMPCTL[SHDWBMODE] bit. By default this
register is shadowed.
• If CMPCTL[SHDWBMODE] = 0, then the shadow is enabled and any write or read will automatically
go to the shadow register. In this case, the CMPCTL[LOADBMODE] bit field determines which event
will load the active register from the shadow register:
• Before a write, the CMPCTL[SHDWBFULL] bit can be read to determine if the shadow register is
currently full.
• If CMPCTL[SHDWBMODE] = 1, then the shadow register is disabled and any write or read will go
directly to the active register, that is the register actively controlling the hardware.
• In either mode, the active and shadow registers share the same memory map address.
344
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-87. Counter-Compare Control Register (CMPCTL)
15
10
9
8
Reserved
SHDWBFULL
SHDWAFULL
R-0
R-0
R-0
1
0
7
6
5
4
3
2
Reserved
SHDWBMODE
Reserved
SHDWAMODE
LOADBMODE
LOADAMODE
R-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-35. Counter-Compare Control Register (CMPCTL) Field Descriptions
Bits
15-10
9
Name
Value
Description
Reserved
Reserved
SHDWBFULL
Counter-compare B (CMPB) Shadow Register Full Status Flag
This bit self clears once a load-strobe occurs.
8
0
CMPB shadow FIFO not full yet
1
Indicates the CMPB shadow FIFO is full; a CPU write will overwrite current shadow value.
SHDWAFULL
Counter-compare A (CMPA) Shadow Register Full Status Flag
The flag bit is set when a 32-bit write to CMPA:CMPAHR register or a 16-bit write to CMPA
register is made. A 16-bit write to CMPAHR register will not affect the flag.
This bit self clears once a load-strobe occurs.
7
Reserved
6
SHDWBMODE
5
Reserved
4
SHDWAMODE
3-2
1-0
0
CMPA shadow FIFO not full yet
1
Indicates the CMPA shadow FIFO is full, a CPU write will overwrite the current shadow
value.
Reserved
Counter-compare B (CMPB) Register Operating Mode
0
Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow
register.
1
Immediate mode. Only the active compare B register is used. All writes and reads directly
access the active register for immediate compare action.
Reserved
Counter-compare A (CMPA) Register Operating Mode
0
Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow
register.
1
Immediate mode. Only the active compare register is used. All writes and reads directly
access the active register for immediate compare action
LOADBMODE
Active Counter-Compare B (CMPB) Load From Shadow Select Mode
This bit has no effect in immediate mode (CMPCTL[SHDWBMODE] = 1).
00
Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
01
Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
10
Load on either CTR = Zero or CTR = PRD
11
Freeze (no loads possible)
LOADAMODE
Active Counter-Compare A (CMPA) Load From Shadow Select Mode.
This bit has no effect in immediate mode (CMPCTL[SHDWAMODE] = 1).
00
Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
01
Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
10
Load on either CTR = Zero or CTR = PRD
11
Freeze (no loads possible)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
345
Registers
www.ti.com
Figure 3-88. Compare A High Resolution Register (CMPAHR)
15
8
CMPAHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-36. Compare A High Resolution Register (CMPAHR) Field Descriptions
Bit
15-8
Field
Value
CMPAHR
00-FFh These 8-bits contain the high-resolution portion (least significant 8-bits) of the counter-compare A
value. CMPA:CMPAHR can be accessed in a single 32-bit read/write.
Description
Shadowing is enabled and disabled by the CMPCTL[SHDWAMODE] bit as described for the CMPA
register.
7-0
Reserved
Reserved for TI Test
Figure 3-89. Counter-Compare A Mirror Register (CMPAM)
15
0
CMPA
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-37. Counter-Compare A Mirror Register (CMPAM) Field Descriptions
Bit
Field
Value
Description
15-0
CMPA
0000-FFFFh
CMPA and CMPAM can both be used to access the counter-compare A value. The only difference
is that the mirror register always reads back the active value.
By default writes to this register are shadowed. Unlike the CMPA register, reads of CMPAM always
return the active register value. Shadowing is enabled and disabled by the
CMPCTL[SHDWAMODE] bit.
• If CMPCTL[SHDWAMODE] = 0, then the shadow is enabled and any write will automatically go
to the shadow register. All reads will reflect the active register value. In this case, the
CMPCTL[LOADAMODE] bit field determines which event will load the active register from the
shadow register.
• Before a write, the CMPCTL[SHDWAFULL] bit can be read to determine if the shadow register
is currently full.
• If CMPCTL[SHDWAMODE] = 1, then the shadow register is disabled and any write will go
directly to the active register, that is the register actively controlling the hardware.
Figure 3-90. Compare A High Resolution Mirror Register
15
8
CMPAHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
346
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-38. Compare A High-Resolution Mirror Register (CMPAHRM) Field Descriptions
Bit
15-8
Field
Value
CMPAHR
00-FFh Compare A High Resolution Bits
Description
Writes to both the CMPAHR and CMPAHRM locations access the high-resolution (least significant
8-bit) portion of the Counter Compare A value. The only difference is that unlike CMPAHR, reads
from the mirror register, CMPAHRM, are indeterminate (reserved for TI Test).
By default writes to this register are shadowed. Shadowing is enabled and disabled by the
CMPCTL[SHDWAMODE] bit as described for the CMPAM register.
7-0
Reserved
Reserved for TI Test
3.4.3 Action-Qualifier Submodule Registers
Figure 3-91 through Figure 3-94 and Table 3-39 through Table 3-42 provide the action-qualifier submodule
register definitions.
Figure 3-91. Action-Qualifier Output A Control Register (AQCTLA)
15
12
7
11
10
9
8
Reserved
CBD
CBU
R-0
R/W-0
R/W-0
6
5
4
3
2
1
0
CAD
CAU
PRD
ZRO
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-39. Action-Qualifier Output A Control Register (AQCTLA) Field Descriptions
Bits
Name
Value Description
15-12
Reserved
Reserved
11-10
CBD
Action when the time-base counter equals the active CMPB register and the counter is
decrementing.
9-8
7-6
5-4
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
CBU
Action when the counter equals the active CMPB register and the counter is incrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
CAD
Action when the counter equals the active CMPA register and the counter is decrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
CAU
Action when the counter equals the active CMPA register and the counter is incrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 347
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-39. Action-Qualifier Output A Control Register (AQCTLA) Field Descriptions (continued)
Bits
Name
3-2
PRD
Value Description
Action when the counter equals the period.
Note: By definition, in count up-down mode when the counter equals period the direction is defined
as 0 or counting down.
1-0
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
ZRO
Action when counter equals zero.
Note: By definition, in count up-down mode when the counter equals 0 the direction is defined as 1
or counting up.
00
Do nothing (action disabled)
01
Clear: force EPWMxA output low.
10
Set: force EPWMxA output high.
11
Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
Figure 3-92. Action-Qualifier Output B Control Register (AQCTLB)
15
12
7
11
10
9
8
Reserved
CBD
CBU
R-0
R/W-0
R/W-0
6
5
4
3
2
1
0
CAD
CAU
PRD
ZRO
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-40. Action-Qualifier Output B Control Register (AQCTLB) Field Descriptions
Bits
Name
15-12
Reserved
11-10
CBD
9-8
7-6
5-4
Value Description
Action when the counter equals the active CMPB register and the counter is decrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
CBU
Action when the counter equals the active CMPB register and the counter is incrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
CAD
Action when the counter equals the active CMPA register and the counter is decrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
CAU
Action when the counter equals the active CMPA register and the counter is incrementing.
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
348 Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-40. Action-Qualifier Output B Control Register (AQCTLB) Field Descriptions (continued)
Bits
Name
3-2
PRD
Value Description
Action when the counter equals the period.
Note: By definition, in count up-down mode when the counter equals period the direction is defined
as 0 or counting down.
1-0
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
ZRO
Action when counter equals zero.
Note: By definition, in count up-down mode when the counter equals 0 the direction is defined as 1
or counting up.
00
Do nothing (action disabled)
01
Clear: force EPWMxB output low.
10
Set: force EPWMxB output high.
11
Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
Figure 3-93. Action-Qualifier Software Force Register (AQSFRC)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
RLDCSF
OTSFB
ACTSFB
OTSFA
ACTSFA
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-41. Action-Qualifier Software Force Register (AQSFRC) Field Descriptions
Bit
Field
15:8
Reserved
7:6
RLDCSF
5
Value
Description
AQCSFRC Active Register Reload From Shadow Options
00
Load on event counter equals zero
01
Load on event counter equals period
10
Load on event counter equals zero or counter equals period
11
Load immediately (the active register is directly accessed by the CPU and is not loaded from the
shadow register).
OTSFB
One-Time Software Forced Event on Output B
0
Writing a 0 (zero) has no effect. Always reads back a 0
This bit is auto cleared once a write to this register is complete, i.e., a forced event is initiated.)
This is a one-shot forced event. It can be overridden by another subsequent event on output B.
1
4:3
ACTSFB
Initiates a single s/w forced event
Action when One-Time Software Force B Is invoked
00
Does nothing (action disabled)
01
Clear (low)
10
Set (high)
11
Toggle (Low -> High, High -> Low)
Note: This action is not qualified by counter direction (CNT_dir)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
349
Registers
www.ti.com
Table 3-41. Action-Qualifier Software Force Register (AQSFRC) Field Descriptions (continued)
Bit
Field
2
Value
OTSFA
Description
One-Time Software Forced Event on Output A
0
Writing a 0 (zero) has no effect. Always reads back a 0.
This bit is auto cleared once a write to this register is complete ( i.e., a forced event is initiated).
1
1:0
ACTSFA
Initiates a single software forced event
Action When One-Time Software Force A Is Invoked
00
Does nothing (action disabled)
01
Clear (low)
10
Set (high)
11
Toggle (Low → High, High → Low)
Note: This action is not qualified by counter direction (CNT_dir)
Figure 3-94. Action-Qualifier Continuous Software Force Register (AQCSFRC)
15
8
Reserved
R-0
7
4
3
2
1
0
Reserved
CSFB
CSFA
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-42. Action-qualifier Continuous Software Force Register (AQCSFRC) Field Descriptions
Bits
Name
15-4
Reserved
Value
Description
Reserved
3-2
CSFB
Continuous Software Force on Output B
In immediate mode, a continuous force takes effect on the next TBCLK edge.
In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
the active register. To configure shadow mode, use AQSFRC[RLDCSF].
1-0
00
Forcing disabled, i.e., has no effect
01
Forces a continuous low on output B
10
Forces a continuous high on output B
11
Software forcing is disabled and has no effect
CSFA
Continuous Software Force on Output A
In immediate mode, a continuous force takes effect on the next TBCLK edge.
In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
the active register.
00
Forcing disabled, i.e., has no effect
01
Forces a continuous low on output A
10
Forces a continuous high on output A
11
Software forcing is disabled and has no effect
3.4.4 Dead-Band Submodule Registers
Figure 3-95 through Table 3-45 provide the register definitions.
350
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-95. Dead-Band Generator Control Register (DBCTL)
15
14
8
HALFCYCLE
Reserved
R/W-0
R-0
7
6
5
4
3
2
1
0
Reserved
IN_MODE
POLSEL
OUT_MODE
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-43. Dead-Band Generator Control Register (DBCTL) Field Descriptions
Bits
15
Name
Value
HALFCYCLE
Description
Half Cycle Clocking Enable Bit:
0
Full cycle clocking enabled. The dead-band counters are clocked at the TBCLK rate.
1
Half cycle clocking enabled. The dead-band counters are clocked at TBCLK*2.
14-6
Reserved
Reserved
5-4
IN_MODE
Dead Band Input Mode Control
Bit 5 controls the S5 switch and bit 4 controls the S4 switch shown in Figure 3-31.
This allows you to select the input source to the falling-edge and rising-edge delay.
To produce classical dead-band waveforms the default is EPWMxA In is the source for both
falling and rising-edge delays.
00
EPWMxA In (from the action-qualifier) is the source for both falling-edge and rising-edge
delay.
01
EPWMxB In (from the action-qualifier) is the source for rising-edge delayed signal.
EPWMxA In (from the action-qualifier) is the source for falling-edge delayed signal.
10
EPWMxA In (from the action-qualifier) is the source for rising-edge delayed signal.
EPWMxB In (from the action-qualifier) is the source for falling-edge delayed signal.
11
3-2
POLSEL
EPWMxB In (from the action-qualifier) is the source for both rising-edge delay and fallingedge delayed signal.
Polarity Select Control
Bit 3 controls the S3 switch and bit 2 controls the S2 switch shown in Figure 3-31.
This allows you to selectively invert one of the delayed signals before it is sent out of the
dead-band submodule.
The following descriptions correspond to classical upper/lower switch control as found in one
leg of a digital motor control inverter.
These assume that DBCTL[OUT_MODE] = 1,1 and DBCTL[IN_MODE] = 0,0. Other
enhanced modes are also possible, but not regarded as typical usage modes.
00
Active high (AH) mode. Neither EPWMxA nor EPWMxB is inverted (default).
01
Active low complementary (ALC) mode. EPWMxA is inverted.
10
Active high complementary (AHC). EPWMxB is inverted.
11
Active low (AL) mode. Both EPWMxA and EPWMxB are inverted.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 351
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-43. Dead-Band Generator Control Register (DBCTL) Field Descriptions (continued)
Bits
Name
1-0
OUT_MODE
Value
Description
Dead-band Output Mode Control
Bit 1 controls the S1 switch and bit 0 controls the S0 switch shown in Figure 3-31.
This allows you to selectively enable or bypass the dead-band generation for the falling-edge
and rising-edge delay.
00
Dead-band generation is bypassed for both output signals. In this mode, both the EPWMxA
and EPWMxB output signals from the action-qualifier are passed directly to the PWM-chopper
submodule.
In this mode, the POLSEL and IN_MODE bits have no effect.
01
Disable rising-edge delay. The EPWMxA signal from the action-qualifier is passed straight
through to the EPWMxA input of the PWM-chopper submodule.
The falling-edge delayed signal is seen on output EPWMxB. The input signal for the delay is
determined by DBCTL[IN_MODE].
10
The rising-edge delayed signal is seen on output EPWMxA. The input signal for the delay is
determined by DBCTL[IN_MODE].
Disable falling-edge delay. The EPWMxB signal from the action-qualifier is passed straight
through to the EPWMxB input of the PWM-chopper submodule.
11
Dead-band is fully enabled for both rising-edge delay on output EPWMxA and falling-edge
delay on output EPWMxB. The input signal for the delay is determined by DBCTL[IN_MODE].
Figure 3-96. Dead-Band Generator Rising Edge Delay Register (DBRED)
15
10
9
8
Reserved
DEL
R-0
R/W-0
7
0
DEL
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-44. Dead-Band Generator Rising Edge Delay Register (DBRED) Field Descriptions
Bits
15-10
9-0
Name
Value Description
Reserved
Reserved
DEL
Rising Edge Delay Count. 10-bit counter.
Figure 3-97. Dead-Band Generator Falling Edge Delay Register (DBFED)
15
10
9
8
Reserved
DEL
R-0
R/W-0
7
0
DEL
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-45. Dead-Band Generator Falling Edge Delay Register (DBFED) Field Descriptions
Bits
15-10
9-0
352
Name
Description
Reserved
Reserved
DEL
Falling Edge Delay Count. 10-bit counter
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
3.4.5 PWM-Chopper Submodule Control Register
Figure 3-98 and Table 3-46 provide the definitions for the PWM-chopper submodule control register.
Figure 3-98. PWM-Chopper Control Register (PCCTL)
15
11
10
8
Reserved
CHPDUTY
R-0
R/W-0
7
5
4
1
0
CHPFREQ
OSHTWTH
CHPEN
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-46. PWM-Chopper Control Register (PCCTL) Bit Descriptions
Bits
Name
Value
Description
15-11
Reserved
Reserved
10-8
CHPDUTY
Chopping Clock Duty Cycle
7:5
4:1
000
Duty = 1/8 (12.5%)
001
Duty = 2/8 (25.0%)
010
Duty = 3/8 (37.5%)
011
Duty = 4/8 (50.0%)
100
Duty = 5/8 (62.5%)
101
Duty = 6/8 (75.0%)
110
Duty = 7/8 (87.5%)
111
Reserved
CHPFREQ
Chopping Clock Frequency
000
Divide by 1 (no prescale, = 11.25 MHz at 90 MHz SYSCLKOUT)
001
Divide by 2 (5.63 MHz at 90 MHz SYSCLKOUT)
010
Divide by 3 (3.75 MHz at 90 MHz SYSCLKOUT)
011
Divide by 4 (2.81 MHz at 90 MHz SYSCLKOUT)
100
Divide by 5 (2.25 MHz at 90 MHz SYSCLKOUT)
101
Divide by 6 (1.88 MHz at 90 MHz SYSCLKOUT)
110
Divide by 7 (1.61 MHz at 90 MHz SYSCLKOUT)
111
Divide by 8 (1.41 MHz at 90 MHz SYSCLKOUT)
OSHTWTH
One-Shot Pulse Width
0000
1 x SYSCLKOUT / 8 wide ( = 80 nS at 100 MHz SYSCLKOUT)
0001
2 x SYSCLKOUT / 8 wide ( = 160 nS at 100 MHz SYSCLKOUT)
0010
3 x SYSCLKOUT / 8 wide ( = 240 nS at 100 MHz SYSCLKOUT)
0011
4 x SYSCLKOUT / 8 wide ( = 320 nS at 100 MHz SYSCLKOUT)
0100
5 x SYSCLKOUT / 8 wide ( = 400 nS at 100 MHz SYSCLKOUT)
0101
6 x SYSCLKOUT / 8 wide ( = 480 nS at 100 MHz SYSCLKOUT)
0110
7 x SYSCLKOUT / 8 wide ( = 560 nS at 100 MHz SYSCLKOUT)
0111
8 x SYSCLKOUT / 8 wide ( = 640 nS at 100 MHz SYSCLKOUT)
1000
9 x SYSCLKOUT / 8 wide ( = 720 nS at 100 MHz SYSCLKOUT)
1001
10 x SYSCLKOUT / 8 wide ( = 800 nS at 100 MHz SYSCLKOUT)
1010
11 x SYSCLKOUT / 8 wide ( = 880 nS at 100 MHz SYSCLKOUT)
1011
12 x SYSCLKOUT / 8 wide ( = 960 nS at 100 MHz SYSCLKOUT)
1100
13 x SYSCLKOUT / 8 wide ( = 1040 nS at 100 MHz SYSCLKOUT)
1101
14 x SYSCLKOUT / 8 wide ( = 1120 nS at 100 MHz SYSCLKOUT)
1110
15 x SYSCLKOUT / 8 wide ( = 1200 nS at 100 MHz SYSCLKOUT)
1111
16 x SYSCLKOUT / 8 wide ( = 1280 nS at 100 MHz SYSCLKOUT)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 353
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-46. PWM-Chopper Control Register (PCCTL) Bit Descriptions (continued)
Bits
0
354
Name
Value
CHPEN
Description
PWM-chopping Enable
0
Disable (bypass) PWM chopping function
1
Enable chopping function
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
3.4.6 Trip-Zone Submodule Control and Status Registers
Figure 3-99. Trip-Zone Select Register (TZSEL)
15
14
13
12
11
10
9
8
DCBEVT1
DCAEVT1
OSHT6
OSHT5
OSHT4
OSHT3
OSHT2
OSHT1
R-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
DCBEVT2
DCAEVT2
R-0
CBC6
CBC5
CBC4
CBC3
CBC2
CBC1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-47. Trip-Zone Submodule Select Register (TZSEL) Field Descriptions
Bits
Name
Value
Description
One-Shot (OSHT) Trip-zone enable/disable. When any of the enabled pins go low, a one-shot trip event occurs for this
ePWM module. When the event occurs, the action defined in the TZCTL register (Figure 3-100) is taken on the EPWMxA
and EPWMxB outputs. The one-shot trip condition remains latched until the user clears the condition via the TZCLR
register (Figure 3-103).
15
14
13
12
11
10
9
8
DCBEVT1
Digital Compare Output B Event 1 Select
0
Disable DCBEVT1 as one-shot-trip source for this ePWM module.
1
Enable DCBEVT1 as one-shot-trip source for this ePWM module.
DCAEVT1
Digital Compare Output A Event 1 Select
0
Disable DCAEVT1 as one-shot-trip source for this ePWM module.
1
Enable DCAEVT1 as one-shot-trip source for this ePWM module.
OSHT6
Trip-zone 6 (TZ6) Select
0
Disable TZ6 as a one-shot trip source for this ePWM module.
1
Enable TZ6 as a one-shot trip source for this ePWM module.
OSHT5
Trip-zone 5 (TZ5) Select
0
Disable TZ5 as a one-shot trip source for this ePWM module
1
Enable TZ5 as a one-shot trip source for this ePWM module
OSHT4
Trip-zone 4 (TZ4) Select
0
Disable TZ4 as a one-shot trip source for this ePWM module
1
Enable TZ4 as a one-shot trip source for this ePWM module
OSHT3
Trip-zone 3 (TZ3) Select
0
Disable TZ3 as a one-shot trip source for this ePWM module
1
Enable TZ3 as a one-shot trip source for this ePWM module
OSHT2
Trip-zone 2 (TZ2) Select
0
Disable TZ2 as a one-shot trip source for this ePWM module
1
Enable TZ2 as a one-shot trip source for this ePWM module
OSHT1
Trip-zone 1 (TZ1) Select
0
Disable TZ1 as a one-shot trip source for this ePWM module
1
Enable TZ1 as a one-shot trip source for this ePWM module
Cycle-by-Cycle (CBC) Trip-zone enable/disable. When any of the enabled pins go low, a cycle-by-cycle trip event occurs
for this ePWM module. When the event occurs, the action defined in the TZCTL register (Figure 3-100) is taken on the
EPWMxA and EPWMxB outputs. A cycle-by-cycle trip condition is automatically cleared when the time-base counter
reaches zero.
7
6
DCBEVT2
Digital Compare Output B Event 2 Select
0
Disable DCBEVT2 as a CBC trip source for this ePWM module
1
Enable DCBEVT2 as a CBC trip source for this ePWM module
DCAEVT2
Digital Compare Output A Event 2 Select
0
Disable DCAEVT2 as a CBC trip source for this ePWM module
1
Enable DCAEVT2 as a CBC trip source for this ePWM module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 355
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-47. Trip-Zone Submodule Select Register (TZSEL) Field Descriptions (continued)
Bits
Name
5
CBC6
4
Value
Description
Trip-zone 6 (TZ6) Select
0
Disable TZ6 as a CBC trip source for this ePWM module
1
Enable TZ6 as a CBC trip source for this ePWM module
CBC5
3
Trip-zone 5 (TZ5) Select
0
Disable TZ5 as a CBC trip source for this ePWM module
1
Enable TZ5 as a CBC trip source for this ePWM module
CBC4
2
Trip-zone 4 (TZ4) Select
0
Disable TZ4 as a CBC trip source for this ePWM module
1
Enable TZ4 as a CBC trip source for this ePWM module
CBC3
1
Trip-zone 3 (TZ3) Select
0
Disable TZ3 as a CBC trip source for this ePWM module
1
Enable TZ3 as a CBC trip source for this ePWM module
CBC2
0
Trip-zone 2 (TZ2) Select
0
Disable TZ2 as a CBC trip source for this ePWM module
1
Enable TZ2 as a CBC trip source for this ePWM module
CBC1
Trip-zone 1 (TZ1) Select
0
Disable TZ1 as a CBC trip source for this ePWM module
1
Enable TZ1 as a CBC trip source for this ePWM module
Figure 3-100. Trip-Zone Control Register (TZCTL)
15
12
7
11
10
Reserved
DCBEVT2
R-0
R/W-0
6
5
4
9
8
DCBEVT1
R/W-0
3
2
1
0
DCAEVT2
DCAEVT1
TZB
TZA
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-48. Trip-Zone Control Register Field Descriptions
Bit
Field
15-12
Reserved
11-10
DCBEVT2
9-8
7-6
356
Value
Description
Reserved
Digital Compare Output B Event 2 Action On EPWMxB:
00
High-impedance (EPWMxB = High-impedance state)
01
Force EPWMxB to a high state.
10
Force EPWMxB to a low state.
11
Do Nothing, trip action is disabled
DCBEVT1
Digital Compare Output B Event 1 Action On EPWMxB:
00
High-impedance (EPWMxB = High-impedance state)
01
Force EPWMxB to a high state.
10
Force EPWMxB to a low state.
11
Do Nothing, trip action is disabled
DCAEVT2
Digital Compare Output A Event 2 Action On EPWMxA:
00
High-impedance (EPWMxA = High-impedance state)
01
Force EPWMxA to a high state.
10
Force EPWMxA to a low state.
11
Do Nothing, trip action is disabled
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-48. Trip-Zone Control Register Field Descriptions (continued)
Bit
Field
5-4
DCAEVT1
3-2
Value
Description
Digital Compare Output A Event 1 Action On EPWMxA:
00
High-impedance (EPWMxA = High-impedance state)
01
Force EPWMxA to a high state.
10
Force EPWMxA to a low state.
11
Do Nothing, trip action is disabled
TZB
1-0
When a trip event occurs the following action is taken on output EPWMxB. Which trip-zone pins can
cause an event is defined in the TZSEL register.
00
High-impedance (EPWMxB = High-impedance state)
01
Force EPWMxB to a high state
10
Force EPWMxB to a low state
11
Do nothing, no action is taken on EPWMxB.
TZA
When a trip event occurs the following action is taken on output EPWMxA. Which trip-zone pins can
cause an event is defined in the TZSEL register.
00
High-impedance (EPWMxA = High-impedance state)
01
Force EPWMxA to a high state
10
Force EPWMxA to a low state
11
Do nothing, no action is taken on EPWMxA.
Figure 3-101. Trip-Zone Enable Interrupt Register (TZEINT)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
Reserved
DCBEVT2
DCBEVT1
DCAEVT2
DCAEVT1
OST
CBC
Reserved
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-49. Trip-Zone Enable Interrupt Register (TZEINT) Field Descriptions
Bits
Name
15-3
Reserved
Reserved
6
DCBEVT2
Digital Comparator Output B Event 2 Interrupt Enable
5
4
3
2
1
Value
Description
0
Disabled
1
Enabled
DCBEVT1
Digital Comparator Output B Event 1 Interrupt Enable
0
Disabled
1
Enabled
DCAEVT2
Digital Comparator Output A Event 2 Interrupt Enable
0
Disabled
1
Enabled
DCAEVT1
Digital Comparator Output A Event 1 Interrupt Enable
0
Disabled
1
Enabled
OST
Trip-zone One-Shot Interrupt Enable
0
Disable one-shot interrupt generation
1
Enable Interrupt generation; a one-shot trip event will cause a EPWMx_TZINT PIE interrupt.
CBC
Trip-zone Cycle-by-Cycle Interrupt Enable
0
Disable cycle-by-cycle interrupt generation.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module 357
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-49. Trip-Zone Enable Interrupt Register (TZEINT) Field Descriptions (continued)
Bits
Name
Value
1
0
Reserved
Description
Enable interrupt generation; a cycle-by-cycle trip event will cause an EPWMx_TZINT PIE
interrupt.
Reserved
Figure 3-102. Trip-Zone Flag Register (TZFLG)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
Reserved
DCBEVT2
DCBEVT1
DCAEVT2
DCAEVT1
OST
CBC
INT
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-50. Trip-Zone Flag Register Field Descriptions
Bit
Field
15:7
Reserved
6
DCBEVT2
5
4
3
2
Value
Description
Reserved
Latched Status Flag for Digital Compare Output B Event 2
0
Indicates no trip event has occurred on DCBEVT2
1
Indicates a trip event has occurred for the event defined for DCBEVT2
DCBEVT1
Latched Status Flag for Digital Compare Output B Event 1
0
Indicates no trip event has occurred on DCBEVT1
1
Indicates a trip event has occurred for the event defined for DCBEVT1
DCAEVT2
Latched Status Flag for Digital Compare Output A Event 2
0
Indicates no trip event has occurred on DCAEVT2
1
Indicates a trip event has occurred for the event defined for DCAEVT2
DCAEVT1
Latched Status Flag for Digital Compare Output A Event 1
0
Indicates no trip event has occurred on DCAEVT1
1
Indicates a trip event has occurred for the event defined for DCAEVT1
OST
Latched Status Flag for A One-Shot Trip Event
0
No one-shot trip event has occurred.
1
Indicates a trip event has occurred on a pin selected as a one-shot trip source.
This bit is cleared by writing the appropriate value to the TZCLR register .
1
CBC
Latched Status Flag for Cycle-By-Cycle Trip Event
0
No cycle-by-cycle trip event has occurred.
1
Indicates a trip event has occurred on a signal selected as a cycle-by-cycle trip source. The
TZFLG[CBC] bit will remain set until it is manually cleared by the user. If the cycle-by-cycle trip
event is still present when the CBC bit is cleared, then CBC will be immediately set again. The
specified condition on the signal is automatically cleared when the ePWM time-base counter
reaches zero (TBCTR = 0x0000) if the trip condition is no longer present. The condition on the
signal is only cleared when the TBCTR = 0x0000 no matter where in the cycle the CBC flag is
cleared.
This bit is cleared by writing the appropriate value to the TZCLR register .
0
INT
Latched Trip Interrupt Status Flag
0
Indicates no interrupt has been generated.
1
Indicates an EPWMx_TZINT PIE interrupt was generated because of a trip condition.
No further EPWMx_TZINT PIE interrupts will be generated until this flag is cleared. If the interrupt
flag is cleared when either CBC or OST is set, then another interrupt pulse will be generated.
Clearing all flag bits will prevent further interrupts.
This bit is cleared by writing the appropriate value to the TZCLR register .
358
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-103. Trip-Zone Clear Register (TZCLR)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
Reserved
DCBEVT2
DCBEVT1
DCAEVT2
DCAEVT1
OST
CBC
INT
R-0
R/W1C-0
R/W1C-0
R/W1C-0
R/W1C-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; nC - write n to clear; R = Read only; -n = value after reset
Figure 3-104. Trip-Zone Force Register (TZFRC)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
Reserved
DCBEVT2
DCBEVT1
DCAEVT2
DCAEVT1
OST
CBC
Reserved
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R- 0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-51. Trip-Zone Force Register (TZFRC) Field Descriptions
Bits
Name
15- 7
Reserved
6
DCBEVT2
5
4
3
2
1
0
Value
Description
Reserved
Force Flag for Digital Compare Output B Event 2
0
Writing 0 has no effect. This bit always reads back 0.
1
Writing 1 forces the DCBEVT2 event trip condition and sets the TZFLG[DCBEVT2] bit.
DCBEVT1
Force Flag for Digital Compare Output B Event 1
0
Writing 0 has no effect. This bit always reads back 0.
1
Writing 1 forces the DCBEVT1 event trip condition and sets the TZFLG[DCBEVT1] bit.
DCAEVT2
Force Flag for Digital Compare Output A Event 2
0
Writing 0 has no effect. This bit always reads back 0.
1
Writing 1 forces the DCAEVT2 event trip condition and sets the TZFLG[DCAEVT2] bit.
DCAEVT1
Force Flag for Digital Compare Output A Event 1
0
Writing 0 has no effect. This bit always reads back 0
1
Writing 1 forces the DCAEVT1 event trip condition and sets the TZFLG[DCAEVT1] bit.
OST
Force a One-Shot Trip Event via Software
0
Writing of 0 is ignored. Always reads back a 0.
1
Forces a one-shot trip event and sets the TZFLG[OST] bit.
CBC
Force a Cycle-by-Cycle Trip Event via Software
Reserved
0
Writing of 0 is ignored. Always reads back a 0.
1
Forces a cycle-by-cycle trip event and sets the TZFLG[CBC] bit.
Reserved
Figure 3-105. Trip Zone Digital Compare Event Select Register (TZDCSEL)
15
12
11
9
8
6
5
3
2
0
Reserved
DCBEVT2
DCBEVT1
DCAEVT2
DCAEVT1
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
359
Registers
www.ti.com
Table 3-52. Trip Zone Digital Compare Event Select Register (TZDCSEL) Field Descriptions
Bit
Field
Value
Description
15-12
Reserved
Reserved
11-9
DCBEVT2
Digital Compare Output B Event 2 Selection
8-6
5-3
2-0
360
000
Event disabled
001
DCBH = low, DCBL = don't care
010
DCBH = high, DCBL = don't care
011
DCBL = low, DCBH = don't care
100
DCBL = high, DCBH = don't care
101
DCBL = high, DCBH = low
110
reserved
111
reserved
DCBEVT1
Digital Compare Output B Event 1 Selection
000
Event disabled
001
DCBH = low, DCBL = don't care
010
DCBH = high, DCBL = don't care
011
DCBL = low, DCBH = don't care
100
DCBL = high, DCBH = don't care
101
DCBL = high, DCBH = low
110
reserved
111
reserved
DCAEVT2
Digital Compare Output A Event 2 Selection
000
Event disabled
001
DCAH = low, DCAL = don't care
010
DCAH = high, DCAL = don't care
011
DCAL = low, DCAH = don't care
100
DCAL = high, DCAH = don't care
101
DCAL = high, DCAH = low
110
reserved
111
reserved
DCAEVT1
Digital Compare Output A Event 1 Selection
000
Event disabled
001
DCAH = low, DCAL = don't care
010
DCAH = high, DCAL = don't care
011
DCAL = low, DCAH = don't care
100
DCAL = high, DCAH = don't care
101
DCAL = high, DCAH = low
110
reserved
111
reserved
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
3.4.7 Digital Compare Submodule Registers
Figure 3-106. Digital Compare Trip Select (DCTRIPSEL)
15
12
11
8
DCBLCOMPSEL
DCBHCOMPSEL
R/W-0
R/W-0
7
4
3
0
DCALCOMPSEL
DCAHCOMPSEL
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-53. Digital Compare Trip Select (DCTRIPSEL) Field Descriptions
Bit
15-12
Field
Value Description
DCBLCOMPSEL
Digital Compare B Low Input Select
Defines the source for the DCBL input. The TZ signals, when used as trip signals, are treated as
normal inputs and can be defined as active high or active low.
0000
TZ1 input
0001
TZ2 input
0010
TZ3 input
1000
COMP1OUT input
1001
COMP2OUT input
1010
COMP3OUT input
Values not shown are reserved. If a device does not have a particular comparator, then that option
is reserved.
11-8
DCBHCOMPSEL
Digital Compare B High Input Select
Defines the source for the DCBH input. The TZ signals, when used as trip signals, are treated as
normal inputs and can be defined as active high or active low.
0000
TZ1 input
0001
TZ2 input
0010
TZ3 input
1000
COMP1OUT input
1001
COMP2OUT input
1010
COMP3OUT input
Values not shown are reserved. If a device does not have a particular comparator, then that option
is reserved.
7-4
DCALCOMPSEL
Digital Compare A Low Input Select
Defines the source for the DCAL input. The TZ signals, when used as trip signals, are treated as
normal inputs and can be defined as active high or active low.
0000
TZ1 input
0001
TZ2 input
0010
TZ3 input
1000
COMP1OUT input
1001
COMP2OUT input
1010
COMP3OUT input
Values not shown are reserved. If a device does not have a particular comparator, then that option
is reserved.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
361
Registers
www.ti.com
Table 3-53. Digital Compare Trip Select (DCTRIPSEL) Field Descriptions (continued)
Bit
Field
3-0
DCAHCOMPSEL
Value Description
Digital Compare A High Input Select
Defines the source for the DCAH input. The TZ signals, when used as trip signals, are treated as
normal inputs and can be defined as active high or active low.
0000
TZ1 input
0001
TZ2 input
0010
TZ3 input
1000
COMP1OUT input
1001
COMP2OUT input
1010
COMP3OUT input
Values not shown are reserved. If a device does not have a particular comparator, then that option
is reserved.
Figure 3-107. Digital Compare A Control Register (DCACTL)
15
9
8
Reserved
10
EVT2FRC
SYNCSEL
EVT2SRCSEL
R-0
R/W-0
R/W-0
7
3
2
1
0
Reserved
4
EVT1SYNCE
EVT1SOCE
EVT1FRC
SYNCSEL
EVT1SRCSEL
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-54. Digital Compare A Control Register (DCACTL) Field Descriptions
Bit
Field
15-10
Reserved
9
EVT2FRC
SYNCSEL
8
7-4
3
2
1
0
362
Value
Reserved
DCAEVT2 Force Synchronization Signal Select
0
Source Is Synchronous Signal
1
Source Is Asynchronous Signal
EVT2SRCSEL
DCAEVT2 Source Signal Select
0
Source Is DCAEVT2 Signal
1
Source Is DCEVTFILT Signal
Reserved
Reserved
EVT1SYNCE
DCAEVT1 SYNC, Enable/Disable
0
SYNC Generation Disabled
1
SYNC Generation Enabled
EVT1SOCE
EVT1FRC
SYNCSEL
Description
DCAEVT1 SOC, Enable/Disable
0
SOC Generation Disabled
1
SOC Generation Enabled
DCAEVT1 Force Synchronization Signal Select
0
Source Is Synchronous Signal
1
Source Is Asynchronous Signal
EVT1SRCSEL
DCAEVT1 Source Signal Select
0
Source Is DCAEVT1 Signal
1
Source Is DCEVTFILT Signal
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Figure 3-108. Digital Compare B Control Register (DCBCTL)
15
10
9
8
Reserved
EVT2FRC
SYNCSEL
EVT2SRCSEL
R-0
R/W-0
R/W-0
7
3
2
1
0
Reserved
4
EVT1SYNCE
EVT1SOCE
EVT1FRC
SYNCSEL
EVT1SRCSEL
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-55. Digital Compare B Control Register (DCBCTL) Field Descriptions
Bit
Field
15-10
Reserved
9
EVT2FRC
SYNCSEL
8
Value
Reserved
DCBEVT2 Force Synchronization Signal Select
0
Source Is Synchronous Signal
1
Source Is Asynchronous Signal
EVT2SRCSEL
7-4
DCBEVT2 Source Signal Select
0
Source Is DCBEVT2 Signal
1
Source Is DCEVTFILT Signal
Reserved
3
Reserved
EVT1SYNCE
2
DCBEVT1 SYNC, Enable/Disable
0
SYNC Generation Disabled
1
SYNC Generation Enabled
EVT1SOCE
1
DCBEVT1 SOC, Enable/Disable
EVT1FRC
SYNCSEL
0
Description
0
SOC Generation Disabled
1
SOC Generation Enabled
DCBEVT1 Force Synchronization Signal Select
0
Source Is Synchronous Signal
1
Source Is Asynchronous Signal
EVT1SRCSEL
DCBEVT1 Source Signal Select
0
Source Is DCBEVT1 Signal
1
Source Is DCEVTFILT Signal
Figure 3-109. Digital Compare Filter Control Register (DCFCTL)
15
13
12
8
Reserved
Reserved
R-0
R-0
7
6
3
2
Reserved
Reserved
5
PULSESEL
4
BLANKINV
BLANKE
1
SRCSEL
0
R-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-56. Digital Compare Filter Control Register (DCFCTL) Field Descriptions
Bit
Field
Value
Description
15-13
Reserved
Reserved
12-8
Reserved
Reserved for TI Test
7
Reserved
Reserved
6
Reserved
Reserved for TI Test
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
363
Registers
www.ti.com
Table 3-56. Digital Compare Filter Control Register (DCFCTL) Field Descriptions (continued)
Bit
Field
5-4
PULSESEL
3
Value
Pulse Select For Blanking & Capture Alignment
00
Time-base counter equal to period (TBCTR = TBPRD)
01
Time-base counter equal to zero (TBCTR = 0x0000)
10
Reserved
11
Reserved
BLANKINV
2
Blanking Window Inversion
0
Blanking window not inverted
1
Blanking window inverted
BLANKE
1-0
Description
Blanking Window Enable/Disable
0
Blanking window is disabled
1
Blanking window is enabled
SRCSEL
Filter Block Signal Source Select
00
Source Is DCAEVT1 Signal
01
Source Is DCAEVT2 Signal
10
Source Is DCBEVT1 Signal
11
Source Is DCBEVT2 Signal
Figure 3-110. Digital Compare Capture Control Register (DCCAPCTL)
15
8
Reserved
R-0
7
1
0
Reserved
2
SHDWMODE
CAPE
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-57. Digital Compare Capture Control Register (DCCAPCTL) Field Descriptions
Bit
15-2
1
0
Field
Value
Reserved
Description
Reserved
SHDWMODE
TBCTR Counter Capture Shadow Select Mode
0
Enable shadow mode. The DCCAP active register is copied to shadow register on a TBCTR =
TBPRD or TBCTR = zero event as defined by the DCFCTL[PULSESEL] bit. CPU reads of the
DCCAP register will return the shadow register contents.
1
Active Mode. In this mode the shadow register is disabled. CPU reads from the DCCAP register will
always return the active register contents.
CAPE
TBCTR Counter Capture Enable/Disable
0
Disable the time-base counter capture.
1
Enable the time-base counter capture.
Figure 3-111. Digital Compare Counter Capture Register (DCCAP)
15
0
DCCAP
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
364
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-58. Digital Compare Counter Capture Register (DCCAP) Field Descriptions
Bit
15-0
Field
Value
DCCAP
0000-FFFFh
Description
Digital Compare Time-Base Counter Capture
To enable time-base counter capture, set the DCCAPCLT[CAPE] bit to 1.
If enabled, reflects the value of the time-base counter (TBCTR) on the low to high edge transition
of a filtered (DCEVTFLT) event. Further capture events are ignored until the next period or zero
as selected by the DCFCTL[PULSESEL] bit.
Shadowing of DCCAP is enabled and disabled by the DCCAPCTL[SHDWMODE] bit. By default
this register is shadowed.
• If DCCAPCTL[SHDWMODE] = 0, then the shadow is enabled. In this mode, the active register
is copied to the shadow register on the TBCTR = TBPRD or TBCTR = zero as defined by the
DCFCTL[PULSESEL] bit. CPU reads of this register will return the shadow register value.
• If DCCAPCTL[SHDWMODE] = 1, then the shadow register is disabled. In this mode, CPU
reads will return the active register value.
The active and shadow registers share the same memory map address.
Figure 3-112. Digital Compare Filter Offset Register (DCFOFFSET)
15
0
DCOFFSET
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-59. Digital Compare Filter Offset Register (DCFOFFSET) Field Descriptions
Bit
15-0
Field
Value
OFFSET
0000- FFFFh
Description
Blanking Window Offset
These 16-bits specify the number of TBCLK cycles from the blanking window reference to the
point when the blanking window is applied. The blanking window reference is either period or
zero as defined by the DCFCTL[PULSESEL] bit.
This offset register is shadowed and the active register is loaded at the reference point defined
by DCFCTL[PULSESEL]. The offset counter is also initialized and begins to count down when
the active register is loaded. When the counter expires, the blanking window is applied. If the
blanking window is currently active, then the blanking window counter is restarted.
Figure 3-113. Digital Compare Filter Offset Counter Register (DCFOFFSETCNT)
15
0
OFFSETCNT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-60. Digital Compare Filter Offset Counter Register (DCFOFFSETCNT) Field Descriptions
Bit
15-0
Field
OFFSETCNT
Value
0000- FFFFh
Description
Blanking Offset Counter
These 16-bits are read only and indicate the current value of the offset counter. The counter
counts down to zero and then stops until it is re-loaded on the next period or zero event as
defined by the DCFCTL[PULSESEL] bit.
The offset counter is not affected by the free/soft emulation bits. That is, it will always
continue to count down if the device is halted by a emulation stop.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
365
Registers
www.ti.com
Figure 3-114. Digital Compare Filter Window Register (DCFWINDOW)
15
8
Reserved
R-0
7
0
WINDOW
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-61. Digital Compare Filter Window Register (DCFWINDOW) Field Descriptions
Bit
Field
Value
Description
15-8
Reserved
Reserved
7-0
WINDOW
Blanking Window Width
00h
No blanking window is generated.
01-FFh
Specifies the width of the blanking window in TBCLK cycles. The blanking window begins
when the offset counter expires. When this occurs, the window counter is loaded and begins
to count down. If the blanking window is currently active and the offset counter expires, the
blanking window counter is restarted.
The blanking window can cross a PWM period boundary.
Figure 3-115. Digital Compare Filter Window Counter Register (DCFWINDOWCNT)
15
8
Reserved
R-0
7
0
WINDOWCNT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-62. Digital Compare Filter Window Counter Register (DCFWINDOWCNT) Field Descriptions
Bit
Field
15-8
Reserved
7-0
WINDOWCNT
Value
Description
Any writes to these bit(s) must always have a value of 0.
00-FF
Blanking Window Counter
These 8 bits are read only and indicate the current value of the window counter. The counter
counts down to zero and then stops until it is re-loaded when the offset counter reaches zero
again.
3.4.8 Event-Trigger Submodule Registers
Figure 3-116 through Figure 3-120 and Table 3-63 through Table 3-67 describe the registers for the eventtrigger submodule.
Figure 3-116. Event-Trigger Selection Register (ETSEL)
15
14
12
11
10
8
SOCBEN
SOCBSEL
SOCAEN
SOCASEL
R/W-0
R/W-0
R/W-0
R/W-0
7
4
3
2
0
Reserved
INTEN
INTSEL
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
366
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-63. Event-Trigger Selection Register (ETSEL) Field Descriptions
Bits
15
14-12
Name
Value
SOCBEN
Description
Enable the ADC Start of Conversion B (EPWMxSOCB) Pulse
0
Disable EPWMxSOCB.
1
Enable EPWMxSOCB pulse.
SOCBSEL
EPWMxSOCB Selection Options
These bits determine when a EPWMxSOCB pulse will be generated.
11
10-8
000
Enable DCBEVT1.soc event
001
Enable event time-base counter equal to zero. (TBCTR = 0x0000)
010
Enable event time-base counter equal to period (TBCTR = TBPRD)
011
Enable event time-base counter equal to zero or period (TBCTR = 0x0000 or TBCTR =
TBPRD). This mode is useful in up-down count mode.
100
Enable event time-base counter equal to CMPA when the timer is incrementing.
101
Enable event time-base counter equal to CMPA when the timer is decrementing.
110
Enable event: time-base counter equal to CMPB when the timer is incrementing.
111
Enable event: time-base counter equal to CMPB when the timer is decrementing.
SOCAEN
Enable the ADC Start of Conversion A (EPWMxSOCA) Pulse
0
Disable EPWMxSOCA.
1
Enable EPWMxSOCA pulse.
SOCASEL
EPWMxSOCA Selection Options
These bits determine when a EPWMxSOCA pulse will be generated.
7-4
3
2-0
000
Enable DCAEVT1.soc event
001
Enable event time-base counter equal to zero. (TBCTR = 0x0000)
010
Enable event time-base counter equal to period (TBCTR = TBPRD)
011
Enable event time-base counter equal to zero or period (TBCTR = 0x0000 or TBCTR =
TBPRD). This mode is useful in up-down count mode.
100
Enable event time-base counter equal to CMPA when the timer is incrementing.
101
Enable event time-base counter equal to CMPA when the timer is decrementing.
110
Enable event: time-base counter equal to CMPB when the timer is incrementing.
111
Enable event: time-base counter equal to CMPB when the timer is decrementing.
Reserved
Reserved
INTEN
Enable ePWM Interrupt (EPWMx_INT) Generation
0
Disable EPWMx_INT generation
1
Enable EPWMx_INT generation
INTSEL
ePWM Interrupt (EPWMx_INT) Selection Options
000
Reserved
001
Enable event time-base counter equal to zero. (TBCTR = 0x0000)
010
Enable event time-base counter equal to period (TBCTR = TBPRD)
011
Enable event time-base counter equal to zero or period (TBCTR = 0x0000 or TBCTR =
TBPRD). This mode is useful in up-down count mode.
100
Enable event time-base counter equal to CMPA when the timer is incrementing.
101
Enable event time-base counter equal to CMPA when the timer is decrementing.
110
Enable event: time-base counter equal to CMPB when the timer is incrementing.
111
Enable event: time-base counter equal to CMPB when the timer is decrementing.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
367
Registers
www.ti.com
Figure 3-117. Event-Trigger Prescale Register (ETPS)
15
14
13
12
11
10
9
8
SOCBCNT
SOCBPRD
SOCACNT
SOCAPRD
R-0
R/W-0
R-0
R/W-0
7
4
3
2
1
0
Reserved
INTCNT
INTPRD
R-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-64. Event-Trigger Prescale Register (ETPS) Field Descriptions
Bits
15-14
Name
Description
SOCBCNT
ePWM ADC Start-of-Conversion B Event (EPWMxSOCB) Counter Register
These bits indicate how many selected ETSEL[SOCBSEL] events have occurred:
13-12
00
No events have occurred.
01
1 event has occurred.
10
2 events have occurred.
11
3 events have occurred.
SOCBPRD
ePWM ADC Start-of-Conversion B Event (EPWMxSOCB) Period Select
These bits determine how many selected ETSEL[SOCBSEL] events need to occur before an
EPWMxSOCB pulse is generated. To be generated, the pulse must be enabled
(ETSEL[SOCBEN] = 1). The SOCB pulse will be generated even if the status flag is set from
a previous start of conversion (ETFLG[SOCB] = 1). Once the SOCB pulse is generated, the
ETPS[SOCBCNT] bits will automatically be cleared.
11-10
00
Disable the SOCB event counter. No EPWMxSOCB pulse will be generated
01
Generate the EPWMxSOCB pulse on the first event: ETPS[SOCBCNT] = 0,1
10
Generate the EPWMxSOCB pulse on the second event: ETPS[SOCBCNT] = 1,0
11
Generate the EPWMxSOCB pulse on the third event: ETPS[SOCBCNT] = 1,1
SOCACNT
ePWM ADC Start-of-Conversion A Event (EPWMxSOCA) Counter Register
These bits indicate how many selected ETSEL[SOCASEL] events have occurred:
9-8
00
No events have occurred.
01
1 event has occurred.
10
2 events have occurred.
11
3 events have occurred.
SOCAPRD
ePWM ADC Start-of-Conversion A Event (EPWMxSOCA) Period Select
These bits determine how many selected ETSEL[SOCASEL] events need to occur before an
EPWMxSOCA pulse is generated. To be generated, the pulse must be enabled
(ETSEL[SOCAEN] = 1). The SOCA pulse will be generated even if the status flag is set from
a previous start of conversion (ETFLG[SOCA] = 1). Once the SOCA pulse is generated, the
ETPS[SOCACNT] bits will automatically be cleared.
00
Disable the SOCA event counter. No EPWMxSOCA pulse will be generated
01
Generate the EPWMxSOCA pulse on the first event: ETPS[SOCACNT] = 0,1
10
Generate the EPWMxSOCA pulse on the second event: ETPS[SOCACNT] = 1,0
11
Generate the EPWMxSOCA pulse on the third event: ETPS[SOCACNT] = 1,1
7-4
Reserved
Reserved
3-2
INTCNT
ePWM Interrupt Event (EPWMx_INT) Counter Register
These bits indicate how many selected ETSEL[INTSEL] events have occurred. These bits are
automatically cleared when an interrupt pulse is generated. If interrupts are disabled,
ETSEL[INT] = 0 or the interrupt flag is set, ETFLG[INT] = 1, the counter will stop counting
events when it reaches the period value ETPS[INTCNT] = ETPS[INTPRD].
00
No events have occurred.
01
1 event has occurred.
10
2 events have occurred.
11
3 events have occurred.
368 Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
Table 3-64. Event-Trigger Prescale Register (ETPS) Field Descriptions (continued)
Bits
Name
Description
1-0
INTPRD
ePWM Interrupt (EPWMx_INT) Period Select
These bits determine how many selected ETSEL[INTSEL] events need to occur before an
interrupt is generated. To be generated, the interrupt must be enabled (ETSEL[INT] = 1). If
the interrupt status flag is set from a previous interrupt (ETFLG[INT] = 1) then no interrupt will
be generated until the flag is cleared via the ETCLR[INT] bit. This allows for one interrupt to
be pending while another is still being serviced. Once the interrupt is generated, the
ETPS[INTCNT] bits will automatically be cleared.
Writing a INTPRD value that is the same as the current counter value will trigger an interrupt
if it is enabled and the status flag is clear.
Writing a INTPRD value that is less than the current counter value will result in an undefined
state.
If a counter event occurs at the same instant as a new zero or non-zero INTPRD value is
written, the counter is incremented.
00
Disable the interrupt event counter. No interrupt will be generated and ETFRC[INT] is
ignored.
01
Generate an interrupt on the first event INTCNT = 01 (first event)
10
Generate interrupt on ETPS[INTCNT] = 1,0 (second event)
11
Generate interrupt on ETPS[INTCNT] = 1,1 (third event)
Figure 3-118. Event-Trigger Flag Register (ETFLG)
15
8
Reserved
R-0
7
3
2
1
0
Reserved
4
SOCB
SOCA
Reserved
INT
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-65. Event-Trigger Flag Register (ETFLG) Field Descriptions
Bits
Name
15-4
Reserved
3
2
Value
Description
Reserved
SOCB
Latched ePWM ADC Start-of-Conversion B (EPWMxSOCB) Status Flag
0
Indicates no EPWMxSOCB event occurred
1
Indicates that a start of conversion pulse was generated on EPWMxSOCB. The
EPWMxSOCB output will continue to be generated even if the flag bit is set.
SOCA
Latched ePWM ADC Start-of-Conversion A (EPWMxSOCA) Status Flag
Unlike the ETFLG[INT] flag, the EPWMxSOCA output will continue to pulse even if the flag bit
is set.
1
Reserved
0
INT
0
Indicates no event occurred
1
Indicates that a start of conversion pulse was generated on EPWMxSOCA. The
EPWMxSOCA output will continue to be generated even if the flag bit is set.
Reserved
Latched ePWM Interrupt (EPWMx_INT) Status Flag
0
Indicates no event occurred
1
Indicates that an ePWMx interrupt (EWPMx_INT) was generated. No further interrupts will be
generated until the flag bit is cleared. Up to one interrupt can be pending while the
ETFLG[INT] bit is still set. If an interrupt is pending, it will not be generated until after the
ETFLG[INT] bit is cleared. Refer to Figure 3-44.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
369
Registers
www.ti.com
Figure 3-119. Event-Trigger Clear Register (ETCLR)
15
8
Reserved
R-0
7
3
2
1
0
Reserved
4
SOCB
SOCA
Reserved
INT
R-0
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-66. Event-Trigger Clear Register (ETCLR) Field Descriptions
Bits
Name
15-4
Reserved
Reserved
SOCB
ePWM ADC Start-of-Conversion B (EPWMxSOCB) Flag Clear Bit
3
2
Value
Description
0
Writing a 0 has no effect. Always reads back a 0
1
Clears the ETFLG[SOCB] flag bit
SOCA
ePWM ADC Start-of-Conversion A (EPWMxSOCA) Flag Clear Bit
0
Writing a 0 has no effect. Always reads back a 0
1
Clears the ETFLG[SOCA] flag bit
1
Reserved
Reserved
0
INT
ePWM Interrupt (EPWMx_INT) Flag Clear Bit
0
Writing a 0 has no effect. Always reads back a 0
1
Clears the ETFLG[INT] flag bit and enable further interrupts pulses to be generated
Figure 3-120. Event-Trigger Force Register (ETFRC)
15
8
Reserved
R-0
7
3
2
1
0
Reserved
4
SOCB
SOCA
Reserved
INT
R-0
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 3-67. Event-Trigger Force Register (ETFRC) Field Descriptions
Bits
Name
15-4
Reserved
Reserved
SOCB
SOCB Force Bit. The SOCB pulse will only be generated if the event is enabled in the
ETSEL register. The ETFLG[SOCB] flag bit will be set regardless.
3
2
Value
0
Has no effect. Always reads back a 0.
1
Generates a pulse on EPWMxSOCB and sets the SOCBFLG bit. This bit is used for test
purposes.
SOCA
1
Reserved
0
INT
Description
SOCA Force Bit. The SOCA pulse will only be generated if the event is enabled in the
ETSEL register. The ETFLG[SOCA] flag bit will be set regardless.
0
Writing 0 to this bit will be ignored. Always reads back a 0.
1
Generates a pulse on EPWMxSOCA and set the SOCAFLG bit. This bit is used for test
purposes.
0
Reserved
INT Force Bit. The interrupt will only be generated if the event is enabled in the ETSEL
register. The INT flag bit will be set regardless.
0
Writing 0 to this bit will be ignored. Always reads back a 0.
1
Generates an interrupt on EPWMxINT and set the INT flag bit. This bit is used for test
purposes.
370 Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Registers
www.ti.com
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Pulse Width Modulator (ePWM) Module
Copyright © 2011–2017, Texas Instruments Incorporated
371
Registers
www.ti.com
3.4.9 Proper Interrupt Initialization Procedure
When the ePWM peripheral clock is enabled it may be possible that interrupt flags may be set due to
spurious events due to the ePWM registers not being properly initialized. The proper procedure for
initializing the ePWM peripheral is as follows:
1. Disable global interrupts (CPU INTM flag)
2. Disable ePWM interrupts
3. Set TBCLKSYNC=0
4. Initialize peripheral registers
5. Set TBCLKSYNC=1
6. Clear any spurious ePWM flags (including PIEIFR)
7. Enable ePWM interrupts
8. Enable global interrupts
372
Enhanced Pulse Width Modulator (ePWM) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 4
SPRUH18G – January 2011 – Revised April 2017
High-Resolution Pulse Width Modulator (HRPWM)
This document is used in conjunction with the device-specific Enhanced Pulse Width Modulator (ePWM)
Module Reference Guide. The HRPWM module described in this reference guide is a Type 1 HRPWM.
See the TMS320x28xx, 28xxx DSP Peripheral Reference Guide (SPRU566) for a list of all devices with an
HRPWM module of the same type, to determine the differences between types, and for a list of devicespecific differences within a type.
The HRPWM module extends the time resolution capabilities of the conventionally derived digital pulse
width modulator (PWM). HRPWM is typically used when PWM resolution falls below ~ 9-10 bits. The key
features of HRPWM are:
• Extended time resolution capability
• Used in both duty cycle and phase-shift control methods
• Finer time granularity control or edge positioning using extensions to the Compare A and Phase
registers
• Implemented using the A signal path of PWM, i.e., on the EPWMxA output.
• Self-check diagnostics software mode to check if the micro edge positioner (MEP) logic is running
optimally
• Enables high resolution output on B signal path of PWM via PWM A and B channel path swapping
• Enables high-resolution output on B signal output via inversion of A signal output
• Enables high-resolution period control on the ePWMxA output on devices with a type 1 ePWM module.
See the device-specific data manual to determine if your device has a type 1 ePWM module for highresolution period support. The ePWMxB output will have +/- 1-2 cycle jitter in this mode.
Topic
...........................................................................................................................
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Introduction .....................................................................................................
Operational Description of HRPWM ....................................................................
HRPWM Register Descriptions ...........................................................................
Appendix A: SFO Library Software - SFO_TI_Build_V6.lib .....................................
Scale Factor Optimizer Function - int SFO() .........................................................
Software Usage ................................................................................................
SFO Library Version Software Differences ...........................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
Page
374
376
396
401
401
402
403
373
Introduction
4.1
www.ti.com
Introduction
The ePWM peripheral is used to perform a function that is mathematically equivalent to a digital-to-analog
converter (DAC). As shown in Figure 4-1, the effective resolution for conventionally generated PWM is a
function of PWM frequency (or period) and system clock frequency.
Figure 4-1. Resolution Calculations for Conventionally Generated PWM
TPWM
PWM resolution (%) = FPWM/FSYSCLKOUT x 100%
PWM resolution (bits) = Log2 (TPWM/TSYSCLKOUT)
PWM
t
TSYSCLK
If the required PWM operating frequency does not offer sufficient resolution in PWM mode, you may want
to consider HRPWM. As an example of improved performance offered by HRPWM, Table 4-1 shows
resolution in bits for various PWM frequencies. These values assume a MEP step size of 180 ps. See the
device-specific datasheet for typical and maximum performance specifications for the MEP.
374 High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
Table 4-1. Resolution for PWM and HRPWM
PWM Freq
Regular Resolution (PWM)
High Resolution (HRPWM)
90 MHz SYSCLKOUT
(kHz)
Bits
%
Bits
%
20
12.1
0.0
18.1
0.000
50
10.8
0.1
16.8
0.001
100
9.8
0.1
15.8
0.002
150
9.2
0.2
15.2
0.003
200
8.8
0.2
14.8
0.004
250
8.5
0.3
14.4
0.005
500
7.5
0.6
13.4
0.009
1000
6.5
1.1
12.4
0.018
1500
5.9
1.7
11.9
0.027
2000
5.5
2.2
11.4
0.036
Although each application may differ, typical low frequency PWM operation (below 250 kHz) may not
require HRPWM. HRPWM capability is most useful for high frequency PWM requirements of power
conversion topologies such as:
• Single-phase buck, boost, and flyback
• Multi-phase buck, boost, and flyback
• Phase-shifted full bridge
• Direct modulation of D-Class power amplifiers
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
375
Operational Description of HRPWM
4.2
www.ti.com
Operational Description of HRPWM
The HRPWM is based on micro edge positioner (MEP) technology. MEP logic is capable of positioning an
edge very finely by sub-dividing one coarse system clock of a conventional PWM generator. The time step
accuracy is on the order of 150 ps. See the device-specific data sheet for the typical MEP step size on a
particular device. The HRPWM also has a self-check software diagnostics mode to check if the MEP logic
is running optimally, under all operating conditions. Details on software diagnostics and functions are in
Section 4.2.4.
Figure 4-2 shows the relationship between one coarse system clock and edge position in terms of MEP
steps, which are controlled via an 8-bit field in the Compare A extension register (CMPAHR).
Figure 4-2. Operating Logic Using MEP
(1 SYSCLK cycle)
+ 0.5 (rounding)
(upper 8 bits)
(0x0080 in Q8 format)
To generate an HRPWM waveform, configure the TBM, CCM, and AQM registers as you would to
generate a conventional PWM of a given frequency and polarity. The HRPWM works together with the
TBM, CCM, and AQM registers to extend edge resolution, and should be configured accordingly. Although
many programming combinations are possible, only a few are needed and practical. These methods are
described in Section 4.2.5.
Registers discussed but not found in this document can be seen in the device-specific Enhanced Pulse
Width Modulator (ePWM) Module Reference Guide.
The HRPWM operation is controlled and monitored using the following registers:
Table 4-2. HRPWM Registers
376
mnemonic
Address Offset
Shadowed
Description
TBPHSHR
0x0002
No
Extension Register for HRPWM Phase (8 bits)
TBPRDHR
0x0006
Yes
Extension Register for HRPWM Period (8 bits)
CMPAHR
0x0008
Yes
Extension Register for HRPWM Duty (8 bits)
HRCNFG
0x0020
No
HRPWM Configuration Register
HRMSTEP
0x0026
No
HRPWM MEP Step Register
TBPRDHRM
0x002A
Yes
Extension Mirror Register for HRPWM Period (8 bits)
CMPAHRM
0x002C
Yes
Extension Mirror Register for HRPWM Duty (8 bits)
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
4.2.1 Controlling the HRPWM Capabilities
The MEP of the HRPWM is controlled by three extension registers, each 8-bits wide. These HRPWM
registers are concatenated with the 16-bit TBPHS, TBPRD, and CMPA registers used to control PWM
operation.
• TBPHSHR - Time Base Phase High Resolution Register
• CMPAHR - Counter Compare A High Resolution Register
• TBPRDHR - Time Base Period High Resolution Register. (available on some devices)
Figure 4-3. HRPWM Extension Registers and Memory Configuration
TBPHSHR (8) Reserved (8)
31
16 15
TBPHS (16)
8 7
0
TBPHSHR (8) Reserved (8)
TBPHS (16)
Single 32 bit write
A
CMPAHR (8) Reserved (8)
31
16 15
8 7
A
A
CMPA (16)
CMPAHR (8)
0
Reserved (8)
A
CMPA (16)
Single 32 bit write
A
TBPRDHR (8) Reserved (8)
31
16 15
A
TBPRDM (16)
8 7
0
A
TBPRDHRM (8) Reserved (8)
A
TBPRD (16)
Single 32 bit write
B
A
These registers are mirrored and can be written to at two different memory locations (mirrored registers have an "M"
suffix ( i.e. CMPA mirror = CMPAM). Reads of the high-resolution mirror registers will result in indeterminate values.
B
TBPRDHR and TBPRD may be written to as a 32-bit value only at the mirrored address
Not all devices may have TBPRD and TBPRDHR registers. See device-specific data sheet for more information
HRPWM capabilities are controlled using the Channel A PWM signal path. HRPWM support on the
channel B signal path is available by properly configuring the HRCNFG register. Figure 4-4 shows how the
HRPWM interfaces with the 8-bit extension registers.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
377
Operational Description of HRPWM
www.ti.com
Figure 4-4. HRPWM System Interface
Time-Base (TB)
CTR=ZERO
TBPRD Shadow (24)
Sync
In/Out
Select
Mux
CTR=CMPB
TBPRDHR (8)
TBPRD Active (24)
Disabled
EPWMxSYNCO
8
CTR=PRD
TBCTL[SYNCOSEL]
TBCTL[PHSEN]
Counter
Up/Down
(16 Bit)
TBCTL[SWFSYNC]
(Software Forced
Sync)
CTR=ZERO
TBCTR
Active (16)
CTR=PRD
CTR_Dir
CTR=ZERO
TBPHSHR (8)
16
CTR=CMPA
Phase
Control
CTR=CMPB
CTR=CMPC
CTR=CMPD
Event
Trigger
and
Interrupt
(ET)
CTR_Dir
Counter Compare (CC)
CTR=CMPA
EPWMxINT
CTR=PRD or ZERO
8
TBPHS Active (24)
EPWMxSYNCI
DCAEVT1.sync
DCBEVT1.sync
Action
Qualifier
(AQ)
DCAEVT1.soc
DCBEVT1.soc
EPWMxSOCA
EPWMxSOCB
EPWMxSOCA
ADC
EPWMxSOCB
(A)
(A)
CMPAHR (8)
16
CMPA Active (24)
CMPA Shadow (24)
EPWMA
ePWMxA
Dead
Band
(DB)
CTR=CMPB
CMPBHR (8)
16
HiRes PWM (HRPWM)
CMPAHR (8)
PWM
Chopper
(PC)
Trip
Zone
(TZ)
ePWMxB
EPWMB
CMPB Active (24)
CMPB Shadow (24)
CMPBHR (8)
EPWMxTZINT
TZ1 to TZ3
TBCNT(16)
CTR=CMPC
CMPC[15-0]
16
CMPC Active (16)
EMUSTOP
CTR=ZERO
DCAEVT1.inter
DCBEVT1.inter
DCAEVT2.inter
DCBEVT2.inter
CLOCKFAIL
(B)
EQEPxERR
DCAEVT1.force
DCAEVT2.force
DCBEVT1.force
CMPC Shadow (16)
DCBEVT2.force
(A)
(A)
(A)
(A)
TBCNT(16)
CTR=CMPD
CMPD[15-0]
16
CMPD Active (16)
CMPD Shadow (16)
A
378
These events are generated by the type 1 ePWM digital compare (DC) submodule based on the levels of the
COMPxOUT and TZ signals.
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Figure 4-5. HRPWM Block Diagram
1
TBPHSHR(8)
CMPAHR(8)2
TBPRDHR(8)1
HRPWM
Micro-edge Positioner
(MEP) Calibration Module
HRCNFG
HRMSTEP
Action
Qualifier
(AQ)
High-Resolution PWM (HRPWM)
EPWMA
EPWMxAO
Dead
band
(DB)
PWM
chopper
(PC)
Trip
zone
(TZ)
EPWMB
EPWMxBO
(1)
From ePWM Time-base (TB) submodule
(2)
From ePWM counter-compare (CC) submodule
4.2.2 Configuring the HRPWM
Once the ePWM has been configured to provide conventional PWM of a given frequency and polarity, the
HRPWM is configured by programming the HRCNFG register located at offset address 20h. This register
provides the following configuration options:
Edge Mode — The MEP can be programmed to provide precise position control on the rising edge (RE),
falling edge (FE) or both edges (BE) at the same time. FE and RE are used for power topologies
requiring duty cycle control(CMPA high-resolution control), while BE is used for topologies requiring
phase shifting, e.g., phase shifted full bridge (TBPHS or TBPRD high-resolution control).
Control Mode — The MEP is programmed to be controlled either from the CMPAHR register (duty cycle
control) or the TBPHSHR register (phase control). RE or FE control mode should be used with
CMPAHR register. BE control mode should be used with TBPHSHR register. When the MEP is
controlled from the TBPRDHR register (period control) the duty cycle and phase can also be
controlled via their respective high-resolution registers.
Shadow Mode — This mode provides the same shadowing (double buffering) option as in regular PWM
mode. This option is valid only when operating from the CMPAHR and TBPRDHR registers and
should be chosen to be the same as the regular load option for the CMPA register. If TBPHSHR is
used, then this option has no effect.
High-Resolution B Signal Control — The B signal path of an ePWM channel can generate a highresolution output by either swapping the A and B outputs (the high- resolution signal will appear on
ePWMxB instead of ePWMxA) or by outputting an inverted version of the high-resolution ePWMxA
signal on the ePWMxB pin.
Auto-conversion Mode — This mode is used in conjunction with the scale factor optimization software
only. For a type 1 HRPWM module, if auto-conversion is enabled, CMPAHR =
fraction(PWMduty*PWMperiod)<<8. The scale factor optimization software will calculate the MEP
scale factor in background code and automatically update the HRMSTEP register with the
calculated number of MEP steps per coarse step. The MEP Calibration Module will then use the
values in the HRMSTEP and CMPAHR register to automatically calculate the appropriate number
of MEP steps represented by the fractional duty cycle and move the high-resolution ePWM signal
edge accordingly. If auto-conversion is disabled, the CMPAHR register behaves like a type 0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
379
Operational Description of HRPWM
www.ti.com
HRPWM module and CMPAHR = (fraction(PWMduty * PWMperiod) * MEP Scale Factor +
0.5)<<8). All of these calculations will need to be performed by user code in this mode, and the
HRMSTEP register is ignored. Auto-conversion for high-resolution period has the same behavior as
auto-conversion for high-resolution duty cycle. Auto-conversion must always be enabled for highresolution period mode.
4.2.3 Principle of Operation
The MEP logic is capable of placing an edge in one of 255 (8 bits) discrete time steps (see device-specific
data sheet for typical MEP step size). The MEP works with the TBM and CCM registers to be certain that
time steps are optimally applied and that edge placement accuracy is maintained over a wide range of
PWM frequencies, system clock frequencies and other operating conditions. Table 4-3 shows the typical
range of operating frequencies supported by the HRPWM.
Table 4-3. Relationship Between MEP Steps, PWM Frequency and Resolution
(1)
(2)
(3)
(4)
(5)
380
System
(MHz)
MEP Steps Per
SYSCLKOUT (1) (2) (3)
PWM MIN
(Hz) (4)
PWM MAX
(MHz)
Res. @ MAX
(Bits) (5)
60.0
93
916
3.00
10.9
70.0
79
1068
3.50
10.6
80.0
69
1221
4.00
10.4
90.0
62
1373
4.50
10.3
100.0
56
1526
5.00
10.1
System frequency = SYSCLKOUT, i.e., CPU clock. TBCLK = SYSCLKOUT.
Table data based on a MEP time resolution of 180 ps (this is an example value. See the device-specific data sheet for MEP
limits)
MEP steps applied = TSYSCLKOUT/180 ps in this example.
PWM minimum frequency is based on a maximum period value, i.e., TBPRD = 65535. PWM mode is asymmetrical up-count.
Resoluton in bits is given for the maximum PWM frequency stated.
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
4.2.3.1
Edge Positioning
In a typical power control loop (for example, switch modes, digital motor control [DMC], uninterruptible
power supply [UPS]), a digital controller (PID, 2pole/2zero, lag/lead, and so on) issues a duty command,
usually expressed in a per unit or percentage terms. Assume that for a particular operating point, the
demanded duty cycle is 0.300 or 30.0% on time and the required converter PWM frequency is 1.25 MHz.
In conventional PWM generation with a system clock of 90 MHz, the duty cycle choices are in the vicinity
of 30.0%. In Figure 4-6, a compare value of 22 counts (that is, duty = 30.6%) is the closest to 30.0% that
you can attain. This is equivalent to an edge position of 244.4 ns instead of the desired 240.0 ns. This
data is shown in Table 4-4.
By utilizing the MEP, you can achieve an edge position much closer to the desired point of 240 ns.
Table 4-4 shows that in addition to the CMPA value of 21 (that is, duty = 29.2% and edge positioning at
233.3 ns), 37 steps of the MEP (CMPAHR register) will position the edge at 239.96 ns, resulting in almost
zero error. In this example, it is assumed that the MEP has a step resolution of 180 ps.
Figure 4-6. Required PWM Waveform for a Requested Duty = 30.0%
Tpwm = 800 ns
240 ns
Demanded
duty (30.0%)
13.8 ns steps
19 20 21 22 23
0
72
EPWM1A
26.3% 29.2%
27.8%
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
31.9%
30.6%
High-Resolution Pulse Width Modulator (HRPWM) 381
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Table 4-4. CMPA vs Duty (left), and [CMPA:CMPAHR] vs Duty (right)
CMPA (count) (1)
Duty %
High Time (ns)
CMPA (count)
CMPAHR (count)
Duty (%)
High Time (ns)
23.61%
188.9
21
31
29.86%
238.88
18
25.0%
200.0
21
32
29.88%
239.06
19
26.39%
211.1
21
33
29.91%
239.24
20
27.78%
222.2
21
34
29.93%
239.42
21
29.17%
233.4
21
35
29.95%
239.60
22
30.56%
244.5
21
36
29.97%
239.78
23
31.94%
255.5
21
37
30.00%
239.96
24
33.33%
266.6
21
38
30.02%
240.14
25
34.72%
277.8
21
39
30.04%
240.32
21
40
30.06%
240.50
21
41
30.09%
240.68
(2) (3)
17
Required
21.6
(1)
(2)
(3)
30.0%
240.0
System clock, SYSCLKOUT and TBCLK = 90 MHz, 11.1 ns
For a PWM Period register value of 72 counts, PWM Period =72 x 11.1 ns = 800 ns , PWM frequency = 1/800 ns = 1.25 MHz
Assumed MEP step size for the above example = 180 ps
See the device-specific data manual for typical and maximum MEP values.
4.2.3.2
Scaling Considerations
The mechanics of how to position an edge precisely in time has been demonstrated using the resources
of the standard CMPA and MEP (CMPAHR) registers. In a practical application, however, it is necessary
to seamlessly provide the CPU a mapping function from a per-unit (fractional) duty cycle to a final integer
(non-fractional) representation that is written to the [CMPA:CMPAHR] register combination. This section
describes the mapping from a per-unit duty cycle only. The method for mapping from a per-unit period is
described in Section 4.2.3.4.
To do this, first examine the scaling or mapping steps involved. It is common in control software to
express duty cycle in a per-unit or percentage basis. This has the advantage of performing all needed
math calculations without concern for the final absolute duty cycle, expressed in clock counts or high time
in ns. Furthermore, it makes the code more transportable across multiple converter types running different
PWM frequencies.
To implement the mapping scheme, a two-step scaling procedure is required.
382
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Assumptions for this example:
System clock , SYSCLKOUT
PWM frequency
Required PWM duty cycle, PWMDuty
PWM period in terms of coarse steps,
PWMperiod (800 ns/ 11.1 ns)
Number of MEP steps per coarse step at
180 ps ( 11.1 ns/ 180 ps), MEP_ScaleFactor
Value to keep CMPAHR within the range of
1-255 and fractional rounding constant
(default value). In the event that
frac(PWMDuty * PWMperiod) *
MEP_ScaleFactor results in a value with a
decimal portion ≥ 0.5, this rounding constant
will round the CMPAHR value up 1 MEP
step.
=
=
=
=
11.1 ns (90 MHz)
1.25 MHz (1/800 ns)
0.300 (30.0%)
72
= 61
= 0.5 (0 080h in Q8 format)
Step 1: Percentage Integer Duty value conversion for CMPA register
CMPA register value
= int(PWMDuty*PWMperiod); int means integer part
= int(0.300* 72)
= 21 (15h)
CMPA register value
Step 2: Fractional value conversion for CMPAHR register
CMPAHR register value
= (frac(PWMDuty*PWMperiod)*MEP_ScaleFactor+0.5
) << 8; frac means fractional part
= (frac( 21.6)* 72+ 0.5) <<8; Shift is to move the value
as CMPAHR high byte
= (( 0.6 * 61 + 0.5) << 8)
= (( 37.1 + 0.5) <<8)
= (37.6 * 256 ; Shifting left by 8 is the same as
multiplying by 256.
= 9,625
= CMPAHR value = 2559h; lower 8 bits will be ignored
by hardware.
CMPAHR value
NOTE: If the AUTOCONV bit (HRCNFG.6) is set and the MEP_ScaleFactor is in the HRMSTEP
register, then CMPAHR register value = frac (PWMDuty*PWMperiod<<8). The rest of the
conversion calculations are performed automatically in hardware, and the correct MEPscaled signal edge appears on the ePWM channel output. If AUTOCONV is not set, the
above calculations must be performed by software.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
383
Operational Description of HRPWM
www.ti.com
NOTE: The MEP scale factor (MEP_ScaleFactor) varies with the system clock and DSP operating
conditions. TI provides an MEP scale factor optimizing (SFO) software C function, which
uses the built in diagnostics in each HRPWM and returns the best scale factor for a given
operating point.
The scale factor varies slowly over a limited range so the optimizing C function can be run
very slowly in a background loop.
The CMPA and CMPAHR registers are configured in memory so that the 32-bit data
capability of the 28x CPU can write this as a single concatenated value, i.e.,
[CMPA:CMPAHR]. The TBPRDM and TBPRDHRM (mirror) registers are similarly configured
in memory.
The mapping scheme has been implemented in both C and assembly, as shown in
Section 4.2.5. The actual implementation takes advantage of the 32-bit CPU architecture of
the 28xx, and is somewhat different from the steps shown in Section 4.2.3.2.
For time critical control loops where every cycle counts, the assembly version is
recommended. This is a cycle optimized function (11 SYSCLKOUT cycles ) that takes a Q15
duty value as input and writes a single [CMPA:CMPAHR] value.
4.2.3.3
Duty Cycle Range Limitation
In high resolution mode, the MEP is not active for 100% of the PWM period. It becomes operational:
• 3 SYSCLK cycles after the period starts when high-resolution period (TBPRDHR) control is not
enabled.
• When high resolution period (TBPRDHR) control is enabled via the HRPCTL register:
– In up-count mode: 3 SYSCLK cycles after the period starts until 3 SYSCLK cycles before the period
ends.
– In up-down count mode: when counting up, 3 cycles after CTR = 0 until 3 cycles before CTR =
PRD, and when counting down, 3 cycles after CTR = PRD until 3 cycles before CTR = 0.
Duty cycle range limitations are illustrated in Figure 4-7 to Figure 4-10 . This limitation imposes a duty
cycle limit on the MEP. For example, precision edge control is not available all the way down to 0% duty
cycle. When high-resolution period control is disabled, although for the first three cycles, the HRPWM
capabilities are not available, regular PWM duty control is still fully operational down to 0% duty. In most
applications this should not be an issue as the controller regulation point is usually not designed to be
close to 0% duty cycle. To better understand the useable duty cycle range, see Table 4-5. When highresolution period control is enabled (HRPCTL[HRPE]=1), the duty cycle must not fall within the restricted
range. Otherwise, there may be undefined behavior on the ePWMxA output.
Figure 4-7. Low % Duty Cycle Range Limitation Example (HRPCTL[HRPE] = 0)
TPWM
0
SYSCLKOUT =
TBCLK
3
TBPRD
EPWM1A
384
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Table 4-5. Duty Cycle Range Limitation for 3 SYSCLK/TBCLK Cycles
PWM Frequency
(kHz)
(1)
(2)
(1)
3 Cycles
Minimum Duty
3 Cycles
Maximum Duty (2)
200
0.67%
99.33%
400
1.33%
98.67%
600
2.00%
98.00%
800
2.67%
97.33%
1000
3.33%
97.67%
1200
4.00%
96.00%
1400
4.67%
95.33%
1600
5.33%
95.67%
1800
6.00%
94.00%
2000
6.67%
93.33%
System clock - TSYSCLKOUT = 11.1 ns System clock = TBCLK = 90 MHz
This limitation applies only if high-resolution period (TBPRDHR) control is enabled.
If the application demands HRPWM operation in the low percent duty cycle region, then the HRPWM can
be configured to operate in count-down mode with the rising edge position (REP) controlled by the MEP
when high-resolution period is disabled (HRPCTL[HRPE] = 0). This is illustrated in Figure 4-8. In this case,
low percent duty limitation is no longer an issue. However, there will be a maximum duty limitation with
same percent numbers as given in Table 4-5.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
385
Operational Description of HRPWM
www.ti.com
Figure 4-8. High % Duty Cycle Range Limitation Example (HRPCTL[HRPE] = 0)
Tpwm
SYSCLKOUT
0
3
TBPRD
EPWM1A
Figure 4-9. Up-Count Duty Cycle Range Limitation Example (HRPCTL[HRPE]=1)
Tpwm
0
SYSCLKOUT=
TBCLK
TBPRD - 3
3
TBPRD
EPWM1A
386
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Figure 4-10. Up-Down Count Duty Cycle Range Limitation Example (HRPCTL[HRPE]=1)
Tpwm
TBPRD
0
3
TBPRD-3
TBPRD-3
3
0
NOTE: If the application has enabled high-resolution period control (HRPCTL[HRPE]=1), the duty
cycle must not fall within the restricted range. Otherwise, there will be undefined behavior on
the ePWM output.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
387
Operational Description of HRPWM
4.2.3.4
www.ti.com
High Resolution Period
High resolution period control using the MEP logic is supported on devices with a Type 1 ePWM module
via the TBPRDHR(M) register.
NOTE: When high-resolution period control is enabled, the ePWMxB output will have +/- 1 TBCLK
cycle jitter in up-count mode and +/- 2 TBCLK cycle jitter in up-down count mode.
The scaling procedure described for duty cycle in Section 4.2.3.2 applies for high-resolution period as
well:
Assumptions for this example:
System clock , SYSCLKOUT
Required PWM frequency
= 11.1 ns (90 MHz)
= 175 kHz (TBPRD value of 514.286)
Number of MEP steps per coarse step at 180 ps
= 61 (11.1 ns/180 ps)
(MEP_ScaleFactor)
Value to keep TBPRDHR within range of 1-255 and = 0.5 (0080h in Q8 format)
fractional rounding constant (default value)
Problem:
In up-count mode:
If TBPRD = 514, then PWM frequency = 174.75 kHz (period = (514+1)* TTBCLK).
TBPRD = 513, then PWM frequency = 175.10 kHz (period = (513+1)* TTBCLK).
In up-down count mode:
If TBPRD = 258, then PWM frequency = 174.42 kHz (period = (258*2)* TTBCLK).
If TBPRD = 257, then PWM frequency = 175.10 kHz (period = (257*2)* TTBCLK).
Solution:
With 61 MEP steps per coarse step at 180 ps each:
Step 1: Percentage Integer Period value conversion for TBPRD register
Integer period value
= 514 * TTBCLK
= int (514.286) * TTBCLK
= int (PWMperiod) * TTBCLK
In up-count mode:
TBPRD register value
=
=
=
=
In up-down count mode:
TBPRD register value
513 (TBPRD = period value - 1)
0201h
257 (TBPRD = period value / 2)
0101h
Step 2: Fractional value conversion for TBPRDHR register
TBPRDHR register value
= (frac(PWMperiod) * MEP_ScaleFactor + 0.5)
(shift is to move the value as TBPRDHR high byte)
If auto-conversion enabled and HRMSTEP =
MEP_ScaleFactor value (61):
TBPRDHR register value
388
High-Resolution Pulse Width Modulator (HRPWM)
=frac (PWMperiod)<<8
=frac (514.286)<<8
=0.286 × 256
=0049h
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
The autoconversion will then automatically perform
the calculation such that TBPRDHR MEP delay is
scaled by hardware to:
=((TBPRDHR(15:0) >> 8) × HRMSTEP + 80h)>>8
= (0049h × 61 + 80h) >> 8
=(11E5h) >> 8
=0011h MEP Steps
Period MEP delay
4.2.3.4.1 High-Resolution Period Configuration
To use High Resolution Period, the ePWMx module must be initialized, following the steps in this exact
order:
1. Enable ePWMx clock
2. Disable TBCLKSYNC
3. Configure ePWMx registers - AQ, TBPRD, CC, etc.
• ePWMx may only be configured for up-count or up-down count modes. High-resolution period is
not compatible with down-count mode.
• TBCLK must equal SYSCLKOUT
• TBPRD and CC registers must be configured for shadow loads.
• CMPCTL[LOADAMODE]
– In up-count mode:CMPCTL[LOADAMODE] = 1 (load on CTR = PRD)
– In up-down count mode: CMPCTL[LOADAMODE] = 2 (load on CTR=0 or CTR=PRD)
4. Configure HRPWM register such that:
• HRCNFG[HRLOAD] = 2 (load on either CTR = 0 or CTR = PRD)
• HRCNFG[AUTOCONV] = 1 (Enable auto-conversion)
• HRCNFG[EDGMODE] = 3 (MEP control on both edges)
5. For TBPHS: TBPHSHR synchronization with high-resolution period, set both
HRPCTL[TBPSHRLOADE] = 1 and TBCTL[PHSEN] = 1. In up-down count mode these bits must be
set to 1 regardless of the contents of TBPHSHR.
6. Enable high-resolution period control (HRPCTL[HRPE] = 1)
7. Enable TBCLKSYNC
8. TBCTL[SWFSYNC] = 1
9. HRMSTEP must contain an accurate MEP scale factor (# of MEP steps per SYSCLKOUT coarse step)
because auto-conversion is enabled. The MEP scale factor can be acquired via the SFO() function
described in Section 4.4.
10. To control high-resolution period, write to the TBPRDHR(M) registers.
NOTE: When high-resolution period mode is enabled, an EPWMxSYNC pulse will introduce +/- 1 - 2
cycle jitter to the PWM (+/- 1 cycle in up-count mode and +/- 2 cycle in up-down count
mode). For this reason, TBCTL[SYNCOSEL] should not be set to 1 (CTR = 0 is
EPWMxSYNCO source) or 2 (CTR = CMPB is EPWMxSYNCO source). Otherwise, the jitter
will occur on every PWM cycle with the synchronization pulse.
When TBCTL[SYNCOSEL] = 0 (EPWMxSYNCI is EPWMxSYNCO source), a software
synchronization pulse should be issued only once during high-resolution period initialization.
If a software sync pulse is applied while the PWM is running, the jitter will appear on the
PWM output at the time of the sync pulse.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
389
Operational Description of HRPWM
www.ti.com
4.2.4 Scale Factor Optimizing Software (SFO)
The micro edge positioner (MEP) logic is capable of placing an edge in one of 255 discrete time steps. As
previously mentioned, the size of these steps is on the order of 150 ps (see device-specific data sheet for
typical MEP step size on your device). The MEP step size varies based on worst-case process
parameters, operating temperature, and voltage. MEP step size increases with decreasing voltage and
increasing temperature and decreases with increasing voltage and decreasing temperature. Applications
that use the HRPWM feature should use the TI-supplied MEP scale factor optimizer (SFO) software
function. The SFO function helps to dynamically determine the number of MEP steps per SYSCLKOUT
period while the HRPWM is in operation.
To utilize the MEP capabilities effectively during the Q15 duty (or period) to [CMPA:CMPAHR] or
[TBPRD(M):TBPRDHR(M)] mapping function (see Section 4.2.3.2), the correct value for the MEP scaling
factor (MEP_ScaleFactor) needs to be known by the software. To accomplish this, the HRPWM module
has built in self-check and diagnostics capabilities that can be used to determine the optimum
MEP_ScaleFactor value for any operating condition. TI provides a C-callable library containing one SFO
function that utilizes this hardware and determines the optimum MEP_ScaleFactor. As such, MEP Control
and Diagnostics registers are reserved for TI use.
A detailed description of the SFO library - SFO_TI_Build_V6.lib software can be found in Section 4.4.
4.2.5 HRPWM Examples Using Optimized Assembly Code.
The best way to understand how to use the HRPWM capabilities is through 2 real examples:
1. Simple buck converter using asymmetrical PWM (i.e. count-up) with active high polarity.
2. DAC function using simple R+C reconstruction filter.
The following examples all have Initialization/configuration code written in C. To make these easier to
understand, the #defines shown below are used. Note, #defines introduced in the device-specific Pulse
Width Modulator (ePWM) Module Reference Guide are also used.
Example 4-1 This example assumes MEP step size of 150 ps and does not use the SFO library.
390
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Example 4-1. #Defines for HRPWM Header Files
// HRPWM (High Resolution PWM) //
================================
// HRCNFG
#define HR_Disable 0x0
#define HR_REP 0x1
// Rising Edge position
#define HR_FEP 0x2
// Falling Edge position
#define HR_BEP 0x3
// Both Edge position #define HR_CMP 0x0 // CMPAHR controlled
#define HR_PHS 0x1
// TBPHSHR controlled #define HR_CTR_ZERO 0x0 // CTR = Zero event
#define HR_CTR_PRD 0x1
// CTR = Period event
#define HR_CTR_ZERO_PRD 0x2 // CTR = ZERO or Period event
#define HR_NORM_B 0x0
// Normal ePWMxB output
#define HR_INVERT_B 0x1
// ePWMxB is inverted ePWMxA output
4.2.5.1
In
•
•
•
Implementing a Simple Buck Converter
this example, the PWM requirements for SYSCLKOUT = 80 MHz are:
PWM frequency = 800 kHz (i.e., TBPRD = 100 )
PWM mode = asymmetrical, up-count
Resolution = 12.7 bits (with a MEP step size of 150 ps)
Figure 4-11 and Figure 4-12 show the required PWM waveform. As explained previously, configuration for
the ePWM1 module is almost identical to the normal case except that the appropriate MEP options need
to be enabled/selected.
Figure 4-11. Simple Buck Controlled Converter Using a Single PWM
Vin1
Vout1
Buck
EPWM1A
Figure 4-12. PWM Waveform Generated for Simple Buck Controlled Converter
Tpwrr
Z
CA
Z
CA
Z
EPWM1A
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
391
Operational Description of HRPWM
www.ti.com
The example code shown consists of two main parts:
• Initialization code (executed once)
• Run time code (typically executed within an ISR)
Example 4-2 shows the Initialization code. The first part is configured for conventional PWM. The second
part sets up the HRPWM resources.
This example assumes MEP step size of 150 ps and does not use the SFO library.
Example 4-2. HRPWM Buck Converter Initialization Code
void HrBuckDrvCnf(void)
{
// Config for conventional PWM first
EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;
//
EPwm1Regs.TBPRD = 100;
//
hrbuck_period = 200;
//
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
//
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Note: ChB is initialized here only for comparison
EPwm1Regs.CMPCTL.bit.LOADAMODE
EPwm1Regs.CMPCTL.bit.SHDWAMODE
EPwm1Regs.CMPCTL.bit.LOADBMODE
EPwm1Regs.CMPCTL.bit.SHDWBMODE
EPwm1Regs.AQCTLA.bit.ZRO =
EPwm1Regs.AQCTLA.bit.CAU =
EPwm1Regs.AQCTLB.bit.ZRO =
EPwm1Regs.AQCTLB.bit.CBU =
// Now configure the HRPWM
EALLOW;
=
=
=
=
CC_CTR_ZERO;
CC_SHADOW;
CC_CTR_ZERO;
CC_SHADOW;
AQ_SET;
AQ_CLEAR;
AQ_SET;
AQ_CLEAR;
resources
EPwm1Regs.HRCNFG.all = 0x0;
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP;
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
EDIS;
MEP_ScaleFactor = 83*256;
set Immediate load
Period set for 800 kHz PWM
Used for Q15 to Q0 scaling
EPWM1 is the Master
purposes, it is not required
// optional
// optional
// optional
// optional
//
//
//
//
//
//
Note these registers are protected
and act only on ChA
clear all bits first
Control Falling Edge Position
CMPAHR controls the MEP
Shadow load on CTR=Zero
// Start with typical Scale Factor
// value for 80 MHz
// Note: Use SFO functions to update
MEP_ScaleFactor dynamically
}
Example 4-3 shows an assembly example of run-time code for the HRPWM buck converter.
392
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Example 4-3. HRPWM Buck Converter Run-Time Code
EPWM1_BASE .set 0x6800
CMPAHR1 .set EPWM1_BASE+0x8
;===============================================
HRBUCK_DRV; (can execute within an ISR or loop)
;===============================================
MOVW DP, #_HRBUCK_In
MOVL XAR2,@_HRBUCK_In
; Pointer to Input Q15 Duty (XAR2)
MOVL XAR3,#CMPAHR1
; Pointer to HRPWM CMPA reg (XAR3)
; Output for EPWM1A (HRPWM)
MOV T,*XAR2 ; T <= Duty
MPYU ACC,T,@_hrbuck_period ; Q15 to Q0 scaling based on Period
MOV T,@_MEP_ScaleFactor
; MEP scale factor (from optimizer s/w)
MPYU P,T,@AL
; P <= T * AL, Optimizer scaling
MOVH @AL,P
; AL <= P, move result back to ACC
ADD ACC, #0x080
; MEP range and rounding adjustment
MOVL *XAR3,ACC
; CMPA:CMPAHR(31:8) <= ACC
; Output for EPWM1B (Regular Res) Optional - for comparison purpose only
MOV *+XAR3[2],AH
; Store ACCH to regular CMPB
4.2.5.2
In
•
•
•
Implementing a DAC function Using an R+C Reconstruction Filter
this example, the PWM requirements are:
PWM frequency = 533 kHz (i.e. TBPRD = 150)
PWM mode = Asymmetrical, Up-count
Resolution = 14 bits ( MEP step size = 150 ps)
Figure 4-13 and Figure 4-14 show the DAC function and the required PWM waveform. As explained
previously, configuration for the ePWM1 module is almost identical to the normal case except that the
appropriate MEP options need to be enabled/selected.
Figure 4-13. Simple Reconstruction Filter for a PWM Based DAC
EPWM1A
VOUT1
LPF
Figure 4-14. PWM Waveform Generated for the PWM DAC Function
TPWM = 2.5 µs
CA
Z
Z
CA
Z
EPWM1A
The example code shown consists of two main parts:
• Initialization code (executed once)
• Run time code (typically executed within an ISR)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
393
Operational Description of HRPWM
www.ti.com
This example assumes a typical MEP_SP and does not use the SFO library.
Example 4-4 shows the Initialization code. The first part is configured for conventional PWM. The second
part sets up the HRPWM resources.
Example 4-4. PWM DAC Function Initialization Code
void HrPwmDacDrvCnf(void)
{
// Config for conventional PWM first
EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;
// Set Immediate load
EPwm1Regs.TBPRD = 150;
// Period set for 533 kHz PWM
hrDAC_period = 150;
// Used for Q15 to Q0 scaling
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// EPWM1 is the Master
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Note: ChB is initialized here only for comparison purposes, it is not required
EPwm1Regs.CMPCTL.bit.LOADAMODE
EPwm1Regs.CMPCTL.bit.SHDWAMODE
EPwm1Regs.CMPCTL.bit.LOADBMODE
EPwm1Regs.CMPCTL.bit.SHDWBMODE
EPwm1Regs.AQCTLA.bit.ZRO =
EPwm1Regs.AQCTLA.bit.CAU =
EPwm1Regs.AQCTLB.bit.ZRO =
EPwm1Regs.AQCTLB.bit.CBU =
// Now configure the HRPWM
EALLOW;
=
=
=
=
CC_CTR_ZERO;
CC_SHADOW;
CC_CTR_ZERO;
CC_SHADOW;
AQ_SET;
AQ_CLEAR;
AQ_SET;
AQ_CLEAR;
resources
// optional
// optional
// optional
// optional
// Note these registers are protected
// and act only on ChA.
EPwm1Regs.HRCNFG.all = 0x0; // Clear all bits first
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP;
// Control falling edge position
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
// CMPAHR controls the MEP.
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
// Shadow load on CTR=Zero.
EDIS;
MEP_ScaleFactor = 83*256;
// Start with typical Scale Factor
// value for 80 MHz.
// Use SFO functions to update MEP_ScaleFactor
// dynamically.
}
Example 4-5 shows an assembly example of run-time code that can execute in a high-speed ISR loop.
394
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Description of HRPWM
www.ti.com
Example 4-5. PWM DAC Function Run-Time Code
EPWM1_BASE .set 0x6800
CMPAHR1 .set EPWM1_BASE+0x8
;=================================================
HRPWM_DAC_DRV; (can execute within an ISR or loop)
;=================================================
MOVW DP, #_HRDAC_In
MOVL XAR2,@_HRDAC_In
; Pointer to input Q15 duty (XAR2)
MOVL XAR3,#CMPAHR1
; Pointer to HRPWM CMPA reg (XAR3)
; Output for EPWM1A (HRPWM
MOV T,*XAR2
MPY ACC,T,@_hrDAC_period
ADD ACC,@_HrDAC_period<<15
MOV T,@_MEP_ScaleFactor
MPYU P,T,@AL
MOVH @AL,P
ADD ACC, #0x080
MOVL *XAR3,ACC
;
;
;
;
;
;
;
;
T <= duty
Q15 to Q0 scaling based on period
Offset for bipolar operation
MEP scale factor (from optimizer s/w)
P <= T * AL, optimizer scaling
AL <= P, move result back to ACC
MEP range and rounding adjustment
CMPA:CMPAHR(31:8) <= ACC
; Output for EPWM1B (Regular Res) Optional - for comparison purpose only
MOV *+XAR3[2],AH
; Store ACCH to regular CMPB
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
395
HRPWM Register Descriptions
4.3
www.ti.com
HRPWM Register Descriptions
This section describes the applicable HRPWM registers.
4.3.1 Register Summary
A summary of the registers required for the HRPWM is shown in the table below.
Table 4-6. Register Descriptions
Name
Offset
Size(x16)/Shadow
Description
TBCTL
0x0000
1/0
Time Base Control Register
TBSTS
0x0001
1/0
Time Base Status Register
TBPHSHR
0x0002
1/0
Time Base Phase High
Resolution Register
TBPHS
0x0003
1/0
Time Base Phase Register
TBCNT
0x0004
1/0
Time Base Counter Register
TBPRD
0x0005
1/1
Time Base Period Register Set
TBPRDHR
0x0006
1/1
Time Base Period High
Resolution Register Set
CMPCTL
0x0007
1/0
Counter Compare Control
Register
CMPAHR
0x0008
1/1
Counter Compare A High
Resolution Register Set
CMPA
0x0009
1/1
Counter Compare A Register
Set
CMPB
0x000A
1/1
Counter Compare B Register
Set
HRCNFG
0x0020
1/0
HRPWM Configuration
Register
HRMSTEP
0x0026
1/0
HRPWM MEP Step Register
HRPCTL
0x0028
1/0
High Resolution Period Control
Register
TBPRDHRM
0x002A
1/1
Time Base Period High
Resolution Mirror Register Set
TBPRDM
0x002B
1/1
Time Base Period Mirror
Register Set
CMPAHRM
0x002C
1/1
Counter Compare A High
Resolution Mirror Register Set
CMPAM
0x002D
1/1
Counter Compare A Mirror
Register Set
Time Base Registers
Compare Registers
HRPWM Registers
High Resolution Period &
Mirror Registers
396
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
HRPWM Register Descriptions
www.ti.com
4.3.2 Registers and Field Descriptions
Figure 4-15. HRPWM Configuration Register (HRCNFG)
15
8
Reserved
R-0
7
6
5
SWAPAB
AUTOCONV
SELOUTB
4
HRLOAD
3
CTLMODE
2
1
EDGMODE
0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-7. HRPWM Configuration Register (HRCNFG) Field Descriptions
Bit
Field
Value Description (1)
15-8
Reserved
Reserved
7
SWAPAB
Swap ePWM A & B Output Signals
This bit enables the swapping of the A & B signal outputs. The selection is as follows:
6
0
ePWMxA and ePWMxB outputs are unchanged.
1
ePWMxA signal appears on ePWMxB output and ePWMxB signal appears on ePWMxA output.
AUTOCONV
Auto Convert Delay Line Value
Selects whether the fractional duty cycle/period/phase in the CMPAHR/TBPRDHR/TBPHSHR register is
automatically scaled by the MEP scale factor in the HRMSTEP register or manually scaled by
calculations in application software. The SFO library function automatically updates the HRMSTEP
register with the appropriate MEP scale factor.
0
Automatic HRMSTEP scaling is disabled.
1
Automatic HRMSTEP scaling is enabled.
If application software is manually scaling the fractional duty cycle, or phase (i.e. software sets
CMPAHR = (fraction(PWMduty * PWMperiod) * MEP Scale Factor)<<8 + 0x080 for duty cycle), then this
mode must be disabled.
5
SELOUTB
EPWMxB Output Select Bit
This bit selects which signal is output on the ePWMxB channel output.
4-3
0
ePWMxB output is normal.
1
ePWMxB output is inverted version of ePWMxA signal.
HRLOAD
Shadow Mode Bit
Selects the time event that loads the CMPAHR shadow value into the active register.
2
00
Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
01
Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
10
Load on either CTR = Zero or CTR = PRD
11
Reserved
CTLMODE
Control Mode Bits
Selects the register (CMP/TBPRD or TBPHS) that controls the MEP:
1-0
0
CMPAHR(8) or TBPRDHR(8) Register controls the edge position (i.e., this is duty or period control
mode). (Default on Reset)
1
TBPHSHR(8) Register controls the edge position (i.e., this is phase control mode).
EDGMODE
Edge Mode Bits
Selects the edge of the PWM that is controlled by the micro-edge position (MEP) logic:
(1)
00
HRPWM capability is disabled (default on reset)
01
MEP control of rising edge (CMPAHR)
10
MEP control of falling edge (CMPAHR)
11
MEP control of both edges (TBPHSHR or TBPRDHR)
This register is EALLOW protected.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
397
HRPWM Register Descriptions
www.ti.com
Figure 4-16. Counter Compare A High Resolution Register (CMPAHR)
15
8
7
0
CMPAHR
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-8. Counter Compare A High Resolution Register (CMPAHR) Field Descriptions
Bit
Field
Value Description
15-8
CMPAHR
00FEh
Compare A High Resolution register bits for MEP step control. These 8-bits contain the high-resolution
portion (least significant 8-bits) of the counter-compare A value. CMPA:CMPAHR can be accessed in a
single 32-bit read/write. Shadowing is enabled and disabled by the CMPCTL[SHDWAMODE] bit.
7-0
Reserved
00FFh
Any writes to these bit(s) must always have a value of 0.
Figure 4-17. TB Phase High Resolution Register (TBPHSHR)
15
8
7
0
TBPHSH
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-9. TB Phase High Resolution Register (TBPHSHR) Field Descriptions
Field
Value
15-8
Bit
TBPHSH
00-FEh Time base phase high resolution bits
Description
7-0
Reserved
00-FFh Any writes to these bit(s) must always have a value of 0.
Figure 4-18. Time Base Period High Resolution Register
15
8
TBPRDHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-10. Time Base Period High-Resolution Register (TBPRDHR) Field Descriptions
Bit
15-8
Field
Value
Description
PRDHR
00-FFh Period High Resolution Bits
These 8-bits contain the high-resolution portion of the period value.
The TBPRDHR register is not affected by the TBCTL[PRDLD] bit. Reads from this register always
reflect the shadow register. Likewise writes are also to the shadow register. The TBPRDHR register
is only used when the high resolution period feature is enabled.
This register is only available with ePWM modules which support high-resolution period control.
7-0
398
Reserved
Reserved for TI Test
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
HRPWM Register Descriptions
www.ti.com
Figure 4-19. Compare A High Resolution Mirror Register
15
8
CMPAHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-11. Compare A High-Resolution Mirror Register (CMPAHRM) Field Descriptions
Bit
15-8
Field
Value
Description
CMPAHR
00-FFh
Compare A High Resolution Bits
Writes to both the CMPAHR and CMPAHRM locations access the high-resolution (least
significant 8-bit) portion of the Counter Compare A value. The only difference is that unlike
CMPAHR, reads from the mirror register, CMPAHRM, are indeterminate (reserved for TI Test).
By default writes to this register are shadowed. Shadowing is enabled and disabled by the
CMPCTL[SHDWAMODE] bit as described for the CMPAM register.
7-0
Reserved
00-FFh
Reserved for TI Test
Figure 4-20. Time-Base Period High Resolution Mirror Register
15
8
TBPRDHR
R/W-0
7
0
Reserved
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-12. Time-Base Period High-Resolution Mirror Register (TBPRDHRM) Field Descriptions
Bit
15-8
Field
Value
Description
TBPRDHR
00-FFh Period High Resolution Bits
These 8-bits contain the high-resolution portion of the period value.
TBPRD provides backwards compatibility with earlier ePWM modules. The mirror registers
(TBPRDM and TBPRDHRM) allow for 32-bit writes to TBPRDHR in one access. Due to the oddnumbered memory address location of the TBPRD legacy register, a 32-bit write is not possible
with TBPRD and TBPRDHR.
The TBPRDHRM register is not affected by the TBCTL[PRDLD] bit
Writes to both the TBPRDHR and TBPRDM locations access the high-resolution (least significant 8bit) portion of the Time Base Period value. The only difference is that unlike TBPRDHR, reads from
the mirror registerTBPRDHRM, are indeterminate (reserved for TI Test).
The TBPRDHRM register is available with ePWM modules which support high-respolution period
control and is used only when the high resolution period feature is enabled.
7-0
Reserved
Reserved
Figure 4-21. High Resolution Period Control Register (HRPCTL)
15
8
Reserved
R-0
7
2
1
0
Reserved
3
TBPHSHR
LOADE
Reserved
HRPE
R-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
399
HRPWM Register Descriptions
www.ti.com
Table 4-13. High Resolution Period Control Register (HRPCTL) Field Descriptions
Bit
15-3
2
Value Description (1)
Field
(2)
Reserved
Reserved
TBPHSHRLOADE
TBPHSHR Load Enable
This bit allows you to synchronize ePWM modules with a high-resolution phase on a SYNCIN,
TBCTL[SWFSYNC] or digital compare event. This allows for multiple ePWM modules operating at
the same frequency to be phase aligned with high-resolution.
0
Disables synchronization of high-resolution phase on a SYNCIN, TBCTL[SWFSYNC] or digital
compare event:
1
Synchronize the high-resolution phase on a SYNCIN, TBCTL[SWFSYNC] or digital comparator
synchronization event. The phase is synchronized using the contents of the high-resolution phase
TBPHSHR register.
The TBCTL[PHSEN] bit which enables the loading of the TBCTR register with TBPHS register
value on a SYNCIN or TBCTL[SWFSYNC] event works independently. However, users need to
enable this bit also if they want to control phase in conjunction with the high-resolution period
feature.
This bit and the TBCTL[PHSEN] bit must be set to 1 when high-resolution period is enabled for
up-down count mode even if TBPHSHR = 0x0000. This bit does not need to be set when only
high-resolution duty is enabled.
1
Reserved
0
HRPE
Reserved
High Resolution Period Enable Bit
0
High resolution period feature disabled. In this mode the ePWM behaves as a Type 0 ePWM.
1
High resolution period enabled. In this mode the HRPWM module can control high-resolution of
both the duty and frequency.
When high-resolution period is enabled, TBCTL[CTRMODE] = 0,1 (down-count mode) is not
supported.
(1)
This register is EALLOW protected.
This register is used with Type 1 ePWM modules (support high-resolution period) only.
(2)
Figure 4-22. High Resolution Micro Step Register (HRMSTEP) (EALLOW protected):
15
8
7
0
Reserved
HRMSTEP
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 4-14. High Resolution Micro Step Register (HRMSTEP) Field Descriptions
Bit
Field
15:8
Reserved
7:0
HRMSTEP
Value
Description
Reserved
00-FFh
High Resolution MEP Step
When auto-conversion is enabled (HRCNFG[AUTOCONV] = 1), This 8-bit field contains the
MEP_ScaleFactor (number of MEP steps per coarse steps) used by the hardware to
automatically convert the value in the CMPAHR, TBPHSHR, or TBPRDHR register to a scaled
micro-edge delay on the high-resolution ePWM output.
The value in this register is written by the SFO calibration software at the end of each calibration
run.
400
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Appendix A: SFO Library Software - SFO_TI_Build_V6.lib
www.ti.com
4.4
Appendix A: SFO Library Software - SFO_TI_Build_V6.lib
The following table lists several features of the SFO_TI_Build_V6.lib library.
Table 4-15. SFO Library Features
SYSCLK Freq
SFO_TI_Build_V6.lib
Unit
Max. HRPWM channels supported
-
8
channels
Total static variable memory size
-
11
words
Completion-checking?
-
Yes
-
Typical time required for SFO() to update
MEP_ScaleFactor if called repetitively
without interrupts
80 MHz
1.3
milliseconds
60 MHz
2.23
milliseconds
A functional description of the SFO library routine, SFO(), is found below.
4.5
Scale Factor Optimizer Function - int SFO()
This routine drives the micro-edge positioner (MEP) calibration module to run SFO diagnostics and
determine the appropriate MEP scale factor (number of MEP steps per coarse SYSCLKOUT step) for a
device at any given time.
If SYSCLKOUT = TBCLK = 80 MHz and assuming the MEP step size is 150 ps, the typical scale factor
value at 80 MHz = 83 MEP steps per TBCLK unit (12.5 ns)
The function returns a MEP scale factor value:
MEP_ScaleFactor = Number of MEP steps/SYSCLKOUT.
Constraints when using this function:
• SFO() can be used with a minimum SYSCLKOUT = TBCLK = 50 MHz. MEP diagnostics logic uses
SYSCLKOUT and not TBCLK, so the SYSCLKOUT restriction is an important constraint. Below 50
MHz, with device process variation, the MEP step size may decrease under cold temperature and high
core voltage conditions to such a point, that 255 MEP steps will not span an entire SYSCLKOUT cycle.
• At any time, SFO() can be called to run SFO diagnostics on the MEP calibration module
Usage:
• SFO() can be called at any time in the background while the ePWM channels are running in HRPWM
mode. The scale factor result obtained in MEP_ScaleFactor can be applied to all ePWM channels
running in HRPWM mode because the function makes use of the diagnostics logic in the MEP
calibration module (which runs independently of ePWM channels).
• This routine returns a 1 when calibration is finished, and a new scale factor has been calculated or a 0
if calibration is still running. The routine returns a 2 if there is an error, and the MEP_ScaleFactor is
greater than the maximum 255 fine steps per coarse SYSCLKOUT cycle. In this case, the HRMSTEP
register will maintain the last MEP scale factor value less than 256 for auto conversion.
• All ePWM modules operating in HRPWM incur only a 3-SYSCLKOUT cycle minimum duty cycle
limitation when high-resolution period control is not used. If high-resolution period control is enabled,
there is an additional duty cycle limitation 3-SYSCLKOUT cycles before the end of the PWM period
(see Section 4.2.3.3).
• In SFO_TI_Build_V6b.lib, the SFO() function also updates the HRMSTEP register with the scale factor
result. If the HRCNFG[AUTOCONV] bit is set, the application software is responsible only for setting
CMPAHR = fraction(PWMduty*PWMperiod)<<8 or TBPRDHR = fraction (PWMperiod) while running
SFO() in the background. The MEP Calibration Module will then use the values in the HRMSTEP and
CMPAHR/TBPRDHR register to automatically calculate the appropriate number of MEP steps
represented by the fractional duty cycle or period and move the high-resolution ePWM signal edge
accordingly. In SFO_TI_Build_V6.lib, the SFO() function does not automatically update the HRMSTEP
register. Therefore, after the SFO function completes, the application software must write
MEP_ScaleFactor to the HRMSTEP register (EALLOW-protected).
• If the HRCNFG[AUTOCONV] bit is clear, the HRMSTEP register is ignored. The application software
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
401
Software Usage
www.ti.com
will need to perform the necessary calculations manually so that:
– CMPAHR = (fraction(PWMduty * PWMperiod) * MEP Scale Factor)<<8 + 0x080.
– Similar behavior applies for TBPHSHR. Auto-conversion must be enabled when using TBPRDHR.
The routine can be run as a background tasks in a slow loop requiring negligible CPU cycles. The
repetition rate at which an SFO function needs to be executed depends on the application's operating
environment. As with all digital CMOS devices temperature and supply voltage variations have an effect
on MEP operation. However, in most applications these parameters vary slowly and therefore it is often
sufficient to execute the SFO function once every 5 to 10 seconds or so. If more rapid variations are
expected, then execution may have to be performed more frequently to match the application. Note, there
is no high limit restriction on the SFO function repetition rate, hence it can execute as quickly as the
background loop is capable.
While using the HRPWM feature, HRPWM logic will not be active for the first 3 SYSCLKOUT cycles of the
PWM period (and the last 3 SYSCLKOUT cycles of the PWM period if TBPRDHR is used). While running
the application in this configuration, if high-resolution period control is disabled (HRPCTL[HRPE=0]) and
the CMPA register value is less than 3 cycles, then its CMPAHR register must be cleared to zero. If highresolution period control is enabled (HRPCTL[HRPE=1]), the CMPA register value must not fall below 3 or
above TBPRD-3.This would avoid any unexpected transitions on the PWM signal.
4.6
Software Usage
The software library function SFO(), calculates the MEP scale factor for the HRPWM-supported ePWM
modules. The scale factor is an integer value in the range 1-255, and represents the number of micro step
edge positions available for a system clock period. The scale factor value is returned in an integer variable
called MEP_ScaleFactor. For example, see Table 4-16.
Table 4-16. Factor Values
Software Function call
Functional Description
Updated Variables
SFO()
Returns MEP scale factor in MEP_ScaleFactor
MEP_ScaleFactor & HRMSTEP register.
Returns MEP scale factor in the HRMSTEP register
in SFO_TI_Build_V6b.lib
To use the HRPWM feature of the ePWMs it is recommended that the SFO function be used as described
here.
Step 1. Add "Include" Files
The SFO_V6.h file needs to be included as follows. This include file is mandatory while using the SFO
library function. For the TMS320F2806x devices, the F2806x C/C++ Header Files and Peripheral
Examples in controlSUITE F2806x_Device.h and F2806x_Epwm_defines.h are necessary. For other
device families, the device-specific equivalent files in the header files and peripheral examples software
packages for those devices should be used. These include files are optional if customized header files are
used in the end applications.
Example 4‑6. A Sample of How to Add "Include" Files
#include "F2806x_Device.h"
// F2806x Headerfile
#include "F2806x_EPwm_defines.h" // init defines
#include "SFO_V6.h"
// SFO lib functions (needed for HRPWM)
Step 2. Element Declaration
Declare an integer variable for the scale factor value as shown below.
Example 4‑7. Declaring an Element
int MEP_ScaleFactor = 0;
//scale factor value
volatile struct EPWM_REGS *ePWM[] = {0, &EPwm1Regs, &EPwm2Regs, &EPwm3Regs,
402
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Software Usage
www.ti.com
Example 4‑7. Declaring an Element (continued)
&EPwm4Regs};
Step 3. MEP_ScaleFactor Initialization
The SFO() function does not require a starting scale factor value in MEP_ScaleFactor. Prior to using the
MEP_ScaleFactor variable in application code, SFO() should be called to drive the MEP calibration
module to calculate an MEP_ScaleFactor value.
As part of the one-time initialization code prior to using MEP_ScaleFactor, include the following:
Example 4‑8. Initializing With a Scale Factor Value
MEP_ScaleFactor initialized using function SFO ()
while (SFO() == 0) {} // MEP_ScaleFactor calculated by MEP Cal Module
Step 4. Application Code
While the application is running, fluctuations in both device temperature and supply voltage may be
expected. To be sure that optimal Scale Factors are used for each ePWM module, the SFO function
should be re-run periodically as part of a slower back-ground loop. Some examples of this are shown
here.
NOTE: See the HRPWM_SFO example in the device-specific C/C++ header files and peripheral
examples available from the TI website.
Example 4‑9. SFO Function Calls
main ()
{
int status;
// User code
// ePWM1, 2, 3, 4 are running in HRPWM mode
// The status variable returns 1 once a new MEP_ScaleFactor has been
// calculated by the MEP Calibration Module running SFO
// diagnostics.
status = SFO();
if(status==2) {ESTOP0;}
// The function returns a 2 if MEP_ScaleFactor is greater
// than the maximum 255 allowed (error condition)
}
4.7
SFO Library Version Software Differences
There are two different versions of the SFO library - SFO_TI_Build_V6.lib, and SFO_TI_Build_V6b.lib.
SFO_TI_Build_V6.lib does not update the HRMSTEP register with the value in MEP_ScaleFactor, while
SFO_TI_Build_V6b.lib updates the register. Therefore, if using SFO_TI_Build_V6.lib and auto-conversion
is enabled, the application should write MEP_Scalefactor in the HRMSTEP register as shown below.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
High-Resolution Pulse Width Modulator (HRPWM)
Copyright © 2011–2017, Texas Instruments Incorporated
403
SFO Library Version Software Differences
www.ti.com
Example 4‑10. Manually Updating the HRMSTEP Register if using SFO_TI_Build_V6b.lib
main ()
{
int status;
status = SFO_INCOMPLETE;
while (status==SFO_INCOMPLETE) {
status = SFO();
}
if(status!=SFO_ERROR) { // IF SFO() is complete with no errors
EALLOW;
EPwm1Regs.HRMSTEP=MEP_ScaleFactor;
EDIS;
}
404
High-Resolution Pulse Width Modulator (HRPWM)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 5
SPRUH18G – January 2011 – Revised April 2017
High Resolution Capture (HRCAP)
This chapter describes the operation of the high-resolution capture (HRCAP) module on the
TMS320xF2806x Piccolo™ devices. The HRCAP module described here is a Type 0 HRCAP. HRCAP
measures the width of external pulses with a typical resolution within hundreds of picoseconds. See the
TMS320x28xx, 28xxx DSP Peripheral Reference Guide (SPRU566) for a list of all devices with an HRCAP
module of the same type, to determine the differences between types, and for a list of device-specific
differences within a type.
Topic
...........................................................................................................................
5.1
5.2
5.3
5.4
5.5
Introduction .....................................................................................................
Description ......................................................................................................
Operational Details ...........................................................................................
Register Descriptions........................................................................................
HRCAP Calibration Library ...............................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
Page
406
406
407
412
417
405
Introduction
5.1
www.ti.com
Introduction
Uses for the HRCAP include:
• Capactive touch applications
• High-resolution period and duty cycle measurements of pulse-train cycles
• Instantaneous speed measurements
• Instantaneous frequency measurements
• Voltage measurements across an isolation boundary
• Distance/sonar measurement and scanning
The HRCAP module includes the following features:
• Pulse-width capture in either non-high-resolution or high-resolution modes
• Difference (Delta) mode pulse-width capture
• Typical high-resolution capture on the order of 300 ps resolution on each edge
• Interrupt on either falling or rising edge
• Continuous mode capture of pulse widths in 2-deep buffer
• Calibration logic for precision high-resolution capture
• All of the above resources are dedicated to a single input pin.
5.2
Description
The HRCAP module includes one capture channel in addition to a high-resolution calibration block, which
connects internally to an HRPWM channel during calibration. See the device-specific data manual to
determine which HRPWM channel output the HRCAP module is internally tied to during calibration.
Each HRCAP channel has the following independent key resources:
• Dedicated input capture pin
• 16-bit HRCAP clock (HCCAPCLK) which is either equal to the PLL2 output frequency (asynchronous
to SYSCLK2) or equal to the SYSCLKOUT frequency.
• High-resolution pulse width capture in a two-deep buffer
• High-resolution calibration logic utilizing an internal connection to an HRPWM output
Figure 5-1. HRCAP Module System Block Diagram
HRCAP Calibration Logic
EPWMx
HRCAPxENCLK
SYSCLKOUT
PLL2CK
PIE
A
406
HRCAPxINTn
(A)
HRPWM
EPWMxA
HRCAP Calibration signal (internal)
HRCAPx
Module
GPIO
Mux
HRCAPx
In general, the largest numerical instance of an HRPWM module channel A output is the internal HRCAP calibration
signal input. For instance, on devices where there are eight HRPWM instances, ePWM8A HRPWM output is the
internal HRCAP calibration signal input.
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Details
www.ti.com
5.3
Operational Details
Figure 5-2 shows the various components that implement the high-resolution, pulse-width capture
functionality of the module.
Figure 5-2. HRCAP Block Diagram
HCCTL[HCCAPCLKSEL]
PLL2CLK
HCCAPCLK(A)
1
0
HCCOUNTER
16
SYSCLKOUT
PIE
HRCAPxINTn
HRCAPx
G
P
I
O
HRCAP_cal
HRCAP
Edge
Detect
Logic
HRCAP
Counter
Capture Logic
16
HCCAPCNTRISE0
16
HCCAPCNTRISE1
16
HCCAPCNTFALL0
16
HCCAPCNTFALL1
HRCAP
Calibration
Logic
0
1
HCCAL[HRPWMSEL]
M
U
X
HRPWM
EPWMxA
EPWMxB EPWMx
A
If PLLCLK is selected as the source for HCCAPCLK, HCCAPCLK is asynchronous to SYSCLK.
5.3.1 HRCAP Clocking
Although the HRCAP module is clocked by the system clock, the 16-bit counter (HCCOUNTER) and edge
detection logic used for capturing high-resolution pulses is clocked by HCCAPCLK. HCCAPCLK must fall
within the frequency range specified in the Electricals section of the device-specific data manual.
HCCAPCLK can either be clocked by the system clock (SYSCLK), or the output of the PLL2 (PLL2CLK)
before the divider is applied. If HCCAPCLK is fed from the PLL2CLK (HCCTL[HCCAPCLKSEL] = 1), then
HCCAPCLK will be asynchronous to SYSCLK2. On this device, HCCAPCLK is clocked by SYSCLKOUT
or PLL2.
Figure 5-3 shows how the HCCAPCLK that clocks the HCCOUNTER and edge detection logic is
generated.
Figure 5-3. HCCAPCLK Generation
HCCTL[HCCAPCLKSEL]
1
PLL2CLK
SYSCLKOUT
HCCAPCLK(A)
0
Divider(A)
PLL2
SYSCLK2
A
On this device, the clock divider is a default value of /2 when DEVICECNF[SYSCLK2DIV2DIS] =0.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
407
Operational Details
www.ti.com
5.3.2 HRCAP Modes of Operation
The HRCAP module has two modes of operation:
• Normal capture mode: The HRCAP module captures pulse widths in normal resolution within +/- 1
SYSCLK (where SYSCLK is sourced from the same PLL output clock that sources HCCAPCLK — on
this device, this is SYSCLK2). This mode requires less software overhead than high-resolution capture
mode.
• High-resolution capture mode: The HRCAP module captures pulse widths with the resolution of
each edge captured within +/- 300 ps typical and requires the usage of the HCCal calibration library
provided by Texas Instruments. In this mode, one HRCAP channel and the ePWM module connected
to the HRCAP calibration input must be dedicated to HRCAP calibration and are not functionally
available to the application during calibration.
5.3.2.1
HRCAP Counter
Both modes of operation utilize HCCOUNTER, which resets to 0 and starts counting HCCAPCLK cycles
again under the following conditions:
• SOFTRESET
• Detection of rising edge
• Detection of falling edge
• Device reset and reenable of HRCAP clock
When a rising edge is detected, the value in HCCOUNTER is captured into the 16-bit HCCAPCNTRISE0
register before the counter resets to 0. When a falling edge is detected, the value in HCCOUNTER is
captured into the 16-bit HCCAPCNTFALL0 register before the counter resets to 0. Because the
HCCOUNTER starts counting at 0 after an edge is detected, the actual low and high pulse widths (nonhigh-resolution) are HCCAPCNTFALL0 + 1 and HCCAPCNTRISE0 + 1, respectively, where the “+1” is
added to account for the “0” HCCAPCLK cycle. This behavior is illustrated for high pulse width capture in
Figure 5-4.
Figure 5-4. HCCOUNTER Behavior During High Pulse Width Capture
HCCAPCLK
HRCAPx
HCCOUNTER
m-1
m
0x0000
0x0001
0x0002
0x0003
0x0004
...
n-2
n-1
n
0x0000
HCCAPCNTFALL0 + 1
Because the HCCOUNTER starts counting immediately after SOFTRESET, the first capture result into the
capture “0” registers should be discarded. The value captured will be the number of HCCAPCLK cycles
since the last SOFTRESET or the HRCAPCLKEN bit was set rather than an actual pulse width
measurement.
5.3.2.2
HCCAP0 - HCCAP1 Registers
The HRCAP capture registers include a 2-deep FIFO buffer to store two pulse widths’ worth of data.
When a rising edge event occurs, HCCAPCNTRISE0 is loaded with the pulse width data from the last
falling edge to the current rising edge (low pulse width). At the next rising edge event, the value in the
HCCAPCNTRISE0 register is loaded into HCCAPCNTRISE1.
When a falling edge event occurs, HCCAPCNTFALL0 is loaded with the pulse width data from the last
rising edge to the current falling edge (high pulse width). For falling edge events, the HRCAP logic
operates such that the HCCAPCNTFALL0 register value is then loaded into the HCCAPCNTFALL1
register at the next rising edge event rather than waiting until the next falling edge event.
408
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Details
www.ti.com
5.3.2.3
RISE vs FALL Capture Events
HRCAP capture registers can be read either during rising edge capture events or during falling edge
capture events. They should not be read during both events.
There are a number of differences with regard to using RISE events to read captured registers vs. using
FALL events to read captured registers as shown below in Figure 5-5.
Figure 5-5. Rise vs. Fall Capture Events
Previous RISE interrupt
Service RISE interrupt
HCCAPCNTFALL1
HCCAPCNTRISE1
HCCAPCNTRISE0
Previous FALL interrupt
HCCAPCNTFALL1
HCCAPCNTRISE1
Service FALL interrupt
HCCAPCNTFALL0
HCCAPCNTRISE0
5.3.2.3.1 RISE Capture Events
When a RISE event occurs, the application code has access to full valid capture data for two pulse widths
(1 period) in high-resolution capture mode and three pulse widths (1.5 periods) in normal capture mode.
HCCAPCNTFALL0 does not have valid data available on RISE events, as this values are not captured
until the falling edge event after the current rising edge event (event has not yet occurred).
The application code has until the next RISE event to read all relevant capture data and clear the RISE
event. Otherwise, the data will be overwritten and invalid. Therefore RISE events are generally used to
capture data for period signals where duty cycle may vary significantly.
NOTE: Because HCCOUNTER starts counting immediately after SOFTRESET, the first RISE
capture result into HCCAPCNTRISE0 does not include valid pulse width data and should be
discarded. When the second RISE capture event occurs, this invalid data is transferred to
HCCAPCNTRISE1, and therefore the data in this register should also be discarded. After the
second rise interrupt, all capture data is valid and can be used normally.
5.3.2.3.2 FALL Capture Events
When a FALL event occurs, the application code has access to full valid capture data for three pulse
widths (1.5 periods) in high-resolution capture mode and four pulse widths (2 full periods) in normal
capture mode.
The application code has only until the next RISE event to read all relevant registers and clear the FALL
event. Otherwise, the data will be overwritten and invalid. Therefore FALL events are generally used to
capture short pulse widths spaced far enough apart to read the registers safetly.
NOTE: Because HCCOUNTER starts counting immediately after SOFTRESET, the first FALL
capture result into HCCAPCNTFALL0 does not include valid pulse width data and should be
discarded. By the next FALL capture event, the invalid data in the “0” register has been
transferred into HCCAPCNTFALL1. Therefore the data in this register should also be
discarded. After the second FALL interrupt, all capture data is valid and can be used
normally.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
409
Operational Details
5.3.2.4
www.ti.com
Normal Capture Mode
In normal capture mode, when a rise event (HCIFR[RISE]=1) or a fall event (HCIFR[FALL]=1) occurs, the
application code reads the HCCAPCNTRISE0/1 and HCCAPCNTFALL0/1 registers and does not require
the HCCal HRCAP calibration library. The resolution of the captured result will be accurate within +/- 1
SYSCLK cycles (where SYSCLK is sourced by the same PLLCLK that generates HCCAPCLK – on this
device, it is within +/- 1 SYSCLK2 cycles).
High pulse widths are measured in number of HCCAPCLK cycles equal to 1 + HCCAPCNTFALL0 or 1 +
HCCAPCNTFALL1 as shown in Figure 5-6.
Figure 5-6. High Pulse Width Normal Mode Capture
HCCAPCLK
HRCAPx
HCCOUNTER
m-1
m
0x0000
0x0001
0x0002
0x0003
0x0004
...
n-2
n-1
n
0x0000
HCCAPCNTFALL0/1 + 1
Low pulse widths are measured in number of HCCAPCLK cycles equal to 1 + HCCAPCNTRISE0 or 1 +
HCCAPCNTRISE1 as shown in Figure 5-7.
Figure 5-7. Low Pulse Width Normal Mode Capture
HCCAPCLK
HRCAPx
HCCOUNTER
m-1
m
0x0000
0x0001
0x0002
0x0003
0x0004
...
n-2
n-1
n
0x0000
HCCAPCNTRISE0/1 + 1
In both cases, 1 is added to the value in the HCCAPCNT registers to account for the HCCAPCLK cycle in
which HCCOUNTER = 0.
5.3.2.5
High Resolution Capture Mode
In high-resolution capture mode, the application code utilizes the HCCal HRCAP calibration library
functions to capture the high-resolution pulse width with each edge captured at a typical resolution of +/300 ps (with two edges, the resolution of the measured pulse width could vary by +/- 600 ps). Note that
although the HRCAP logic itself can be calibrated to capture high-resolution pulse widths, if the jitter on
the input signal is greater than +/- 300 ps, the captured value will also vary according to the jitter on the
input signal.
In order to use high-resolution capture mode, the high-resolution capture logic must be calibrated to scale
the HRCAP step size to a Q16 fraction of the HCCAPCLK. One HRCAP module and the ePWM module
internally connected to the HRCAP calibration input must be dedicated only to calibration and cannot be
used functionally in the application during calibration.
Texas Instruments provides a calibration function in the HCCal HRCAP calibration library to perform this
calibration once prior to using the HRCAP in high-resolution capture mode and periodically in a slow loop
to account for changes in the HRCAP step size due to voltage and temperature changes while the
application is running.
410
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Operational Details
www.ti.com
The library also provides functions to measure the high resolution high pulse width, low pulse width, and
period. The pulse and period width measurement results are returned in Q16 fixed-point format with the
fractional portion of the result representing a fraction of an HCCAPCLK cycle. (For instance a pulse width
may appear in the form of 500.25 HCCAPCLK cycles). Figure 5-8 shows how the high-resolution pulse
width is a function of the calibration of the HRCAP step size and the values in the HCCAPCNT registers.
Figure 5-8. HRCAP High-Resolution Mode Operating Logic
Fn(HCCAPCNT registers, HCCal calibration)
0.0 – 0.9 in Q16 format
0.0 – 0.9 in Q16 format
HRCAPx
HCCAPCLK cycle
8.33 ns at 120 MHz
HRCAP step
~ 300 ps
For details on using the HCCal HRCAP calibration library in high-resolution capture mode, see
Section 5.5.
5.3.3 HRCAP Interrupts
Rising edge capture (RISE), falling edge capture (FALL), and HCCOUNTER overflow (OVF) events can
generate interrupts to the PIE from the HRCAP module. Additionally, if the rising edge capture flag is set
(HCIFR[RISE]) when another rising edge capture event occurs, a rising edge overflow (RISEOVF)
interrupt can also generate an interrupt to the PIE. The HRCAP interrupt logic is shown below in Figure 59.
Figure 5-9. Interrupts in HRCAP Module
HCIFR[RISE]
Set RISOVF Flag To "1"
If RISE Flag Is "1" On
A New RISE Event
HCIFR[INT]
HCICLR[INT]
clear
Latch
set
HCCTL[RISEINTE]
HRCAPxINTn
Generate
Interrupt
Pulse
When
Input = 1
HCIFR[RISEOVF]
clear
Latch
set
HCICLR[RISEOVF]
HCICLR[RISE]
HCIFRC[RISE]
RISE Capture
Interrupt Event
HCIFR[FALL]
1
0
clear
Latch
set
0
HCICLR[FALL]
HCIFRC[FALL]
FALL Capture
Interrupt Event
HCCTL[FALLINTE]
HCIFR[OVF]
clear
Latch
set
HCICLR[OVF]
HCCTL[OVFINTE]
HCIFRC[OVF]
Counter Overflow
Event
RISE/RISEOVF, FALL, and OVF events will only generate an interrupt if the corresponding interrupt
enable bits in the HCCTL register are set to 1. Interrupt events can be cleared by writing a 1 to the
corresponding bits in the HCICLR register. For testing purposes, interrupt events can be forced by writing
a 1 to the corresponding bits in the HCIFRC register.
For proper operation, RISE and FALL interrupts should not be enabled at the same time. Capture
registers should be read during rising edge interrupt events only, or during falling edge interrupt events
only, and not during both interrupt events simultaneously. If RISEOVF interrupts are enabled, the RISE
flag must always be acknowledged after a RISE event, otherwise a rise overflow condition will occur.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
411
Register Descriptions
5.4
www.ti.com
Register Descriptions
The complete HRCAP register set is shown in Table 5-1.
Table 5-1. HRCAP Register Summary
Name
Address
Description
Offset
HCCTL
0x00
HRCAP Control Register
HCIFR
0x01
HRCAP Interrupt Flag Register
HCICLR
0x02
HRCAP Interrupt Clear Register
HCIFRC
0x03
HRCAP Interrupt Force Register
HCCOUNTER
0x04
HRCAP 16-bit Counter Register
HCCAPCNTRISE0
0x10
HRCAP Capture Counter On Rising Edge 0 Register
HCCAPCNTFALL0
0x12
HRCAP Capture Counter On Falling Edge 0 Register
HCCAPCNTRISE1
0x18
HRCAP Capture Counter On Rising Edge 1 Register
HCCAPCNTFALL1
0x1A
HRCAP Capture Counter On Falling Edge 1 Register
5.4.1 HRCAP Control Register (HCCTL) – EALLOW protected
The HRCAP control register (HCCTL) is shown and described in the figure and table below.
Figure 5-10. HRCAP Control Register (HCCTL)
15
9
Reserved
8
HCCAPCLKSEL
R-0
7
R/W-0
3
2
1
0
Reserved
4
OVFINTE
FALLINTE
RISEINTE
SOFTRESET
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-2. HRCAP Control Register (HCCTL) Field Descriptions
Bit
15-9
8
Field
Value
Description
Reserved
Reserved
HCCAPCLKSEL
Capture clock select bit. This bit is used to select the clock source for HCCAPCLK. This bit should
be set such that HCCAPCLK falls between the frequency range limits specified in the HRCAP
Electricals section of the device-specific data manual.
0
HCCAPCLK = SYSCLKOUT
1
HCCAPCLK = PLL2CLK
7-4
Reserved
Reserved
3
OVFINTE
Counter overflow interrupt enable bit
2
1
0
412
0
Disable counter overflow interrupt
1
Enable counter overflow interrupt
FALLINTE
Falling edge capture interrupt enable bit
0
Disable falling edge capture interrupt
1
Enable rising edge capture interrupt
RISEINTE
Rising edge capture interrupt enable bit
0
Disable rising edge capture interrupt
1
Enable rising edge capture interrupt
SOFTRESET
Soft reset
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear HCCOUNTER, all capture registers, and the IFR register bits.
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
5.4.2 HRCAP Interrupt Flag Register (HCIFR)
The HRCAP interrupt flag register (HCIFR) is shown and described in the figure and table below.
Figure 5-11. HRCAP Interrupt Flag Register (HCIFR)
15
8
Reserved
R-0
7
4
3
2
1
0
Reserved
5
RISEOVF
COUNTEROVF
FALL
RISE
INT
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-3. HRCAP Interrupt Flag Register (HCIFR) Field Descriptions
Bit
Field
Value
Description
15-5
Reserved
Reserved
4
RISEOVF
Rising edge interrupt overflow event flag
3
2
1
0
0
No rising edge interrupt overflow event has occurred. This bit is cleared to 0 by writing to the
corresponding bit in the HCICLR register. This bit is also cleared by HCCTL[SOFTRESET].
1
This bit is set to "1" if the RISE flag is "1" when a new RISE event occurs.
COUNTEROVF
Counter overflow interrupt flag
0
The HCCOUNTER has not overflowed. This bit is cleared to 0 by writing to the corresponding bit in
the HCICLR register. This bit is also cleared by HCCTL[SOFTRESET].
1
This bit is set to 1 when the 16-bit HCCOUNTER overflows (from 0xFFFF to 0x0000). This bit can
also be set to 1 by writing to the corresponding bit in the HCIFRC register.
FALL
Falling edge capture interrupt flag:
0
No falling edge interrupt has occurred. This bit is cleared to 0 by writing to the corresponding bit in
the HCICLR register. This bit is also cleared by HCCTL[SOFTRESET].
1
A falling edge input capture event has occurred. This bit can also be set to 1 by writing to the
corresponding bit in the HCIFRC register.
RISE
Rising edge capture interrupt flag
0
No rising edge interrupt has occurred. This bit is cleared to 0 by writing to the corresponding bit in
the HCICLR register. This bit is also cleared by HCCTL[SOFTRESET].
1
A rising edge input capture event has occurred. This bit can also be set to 1 by writing to the
corresponding bit in the HCIFRC register.
INT
Global interrupt flag
0
No HRCAP interrupt has occurred. This bit is cleared to 0 by writing to the corresponding bit in the
HCICLR register. This bit is also cleared by HCCTL[SOFTRESET].
1
An enabled RISE, FALL or COUNTEROVF interrupt has been generated. No further interrupts are
generated until this bit is cleared.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
413
Register Descriptions
www.ti.com
5.4.3 HRCAP Interrupt Clear Register (HCICLR)
The HRCAP interrupt clear register (HCICLR) is shown and described in the figure and table below.
Figure 5-12. HRCAP Interrupt Clear Register (HCICLR)
15
8
Reserved
R-0
7
4
3
2
1
0
Reserved
5
RISEOVF
COUNTEROVF
FALL
RISE
INT
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-4. HRCAP Interrupt Clear Register (HCICLR) Field Descriptions
Bit
Field
Value
Description
15-5
Reserved
Reserved
4
RISEOVF
Rising edge interrupt overflow clear bit
3
2
1
0
414
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear the corresponding RISEOVF flag bit in the HCIFR register to "0".
The hardware setting of HCIFR[RISEOVF] flag bit has priority over the software clear if both
happen on the same cycle.
COUNTEROVF
Counter overflow interrupt clear bit
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear the corresponding COUNTEROVF flag bit in the HCIFR register to
"0". The hardware setting of HCIFR[COUNTEROVF] flag bit has priority over the software clear if
both happen on the same cycle.
FALL
Falling edge capture interrupt clear bit:
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear the corresponding FALL flag bit in the HCIFR register to "0". The
hardware setting of HCIFR[FALL] flag bit has priority over the software clear if both happen on the
same cycle.
RISE
Rising edge capture interrupt clear bit
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear the corresponding RISE flag bit in the HCIFR register to "0". The
hardware setting of HCIFR[RISE] flag bit has priority over the software clear if both happen on the
same cycle.
INT
Global interrupt clear bit
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will clear the corresponding INT flag bit in the HCIFR register to "0". The
hardware setting of HCIFR[INT] flag bit has priority over the software clear if both happen on the
same cycle.
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
5.4.4 HRCAP Interrupt Force Register (HCIFRC)
The HRCAP interrupt force register (HCIFRC) is shown and described in the figure and table below.
Figure 5-13. HRCAP Interrupt Force Register (HCIFRC)
15
8
Reserved
R-0
7
3
2
1
0
Reserved
4
COUNTEROVF
FALL
RISE
Reserved
R-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-5. HRCAP Interrupt Force Register (HCIFRC) Field Descriptions
Bit
15-4
3
2
1
0
Field
Value
Description
Reserved
Reserved
COUNTEROVF
Counter overflow interrupt force bits
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will force the corresponding COUNTEROVF flag bit in HCIFR register to "1".
The software HCCTL[SOFTRESET] clearing of the HCIFR[COUNTEROVF] bit has priority over the
hardware trying to set the bit in the same cycle.
FALL
Falling edge interrupt force bits
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will force the corresponding FALL flag bit in HCIFR register to "1". The
software HCCTL[SOFTRESET] clearing of the HCIFR[FALL] bit has priority over the hardware
trying to set the bit in the same cycle.
RISE
Rising edge interrupt force bits
0
Writes of "0" are ignored. This bit always reads "0".
1
Writes of "1" to this bit will force the corresponding RISE flag bit in HCIFR register to "1". The
software HCCTL[SOFTRESET] clearing of the HCIFR[RISE] bit has priority over the hardware
trying to set the bit in the same cycle.
Reserved
Reserved
5.4.5 HRCAP Counter Register (HCCOUNTER)
The HRCAP counter register (HCCOUNTER) is shown and described in the figure and table below.
Figure 5-14. HRCAP Counter Register (HCCOUNTER)
15
0
COUNTER
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-6. HRCAP Counter Register (HCCOUNTER) Field Descriptions
Bit
15-0
Field
COUNTER
Value
0
Description
16-bit capture counter
This free running counter is used to capture rising and falling edge events. The HCCOUNTER is
incremented on every HCCAPCLK cycle. When the counter reaches 0xFFFF, it will overflow to
0x0000 on the next cycle and generate a COUNTEROVF interrupt event.
The counter is reset to 0x0000 on every rising and falling edge event.
The counter can also be reset to 0x0000 by a system reset or by setting the HCCTL[SOFTRESET]
bit.
NOTE: Because the counter is clocked from HCCAPCLK, which can be asynchronous to SYSCLK,
CPU reads to this register should not be performed unless the clocks to the HRCAP module are
disabled (HRCAPxENCLK = 0).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
415
Register Descriptions
www.ti.com
5.4.6 HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0)
The HRCAP capture counter on rising edge 0 register (HCCAPCNTRISE0) is shown and described in the
figure and table below.
Figure 5-15. HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0)
15
0
HCCAPCNTRISE0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-7. HRCAP Capture Counter On Rising Edge 0 Register (HCCAPCNTRISE0) Field
Descriptions
Bit
15-0
Field
Value
HCCAPCNTRISE0
0
Description
HRCAP capture counter on rising edge 0 register
This register captures the16-bit HCCOUNTER value when a rising edge event is detected.
5.4.7 HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1)
The HRCAP capture counter on rising edge 0 register (HCCAPCNTRISE1) is shown and described in the
figure and table below.
Figure 5-16. HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1)
15
0
HCCAPCNTRISE1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-8. HRCAP Capture Counter On Rising Edge 1 Register (HCCAPCNTRISE1) Field
Descriptions
Bit
15-0
Field
Value
HCCAPCNTRISE1
Description
0
HRCAP capture counter on rising edge 1 register
On an input rising edge event, the value in the HCCAPCNTRISE0 register is copied into the
HCCAPCNTRISE1 register before the HCCOUNTER value is captured into the
HCCAPCNTRISE0 register.
5.4.8 HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0)
The HRCAP capture counter on falling edge 0 register (HCCAPCNTFALL0) is shown and described in the
figure and table below.
Figure 5-17. HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0)
15
0
HCCAPCNTFALL0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-9. HRCAP Capture Counter On Falling Edge 0 Register (HCCAPCNTFALL0) Field
Descriptions
Bit
15-0
Field
HCCAPCNTFALL0
Value
0
Description
HRCAP capture counter on falling edge 0 register
This register captures the16-bit HCCOUNTER value when a Falling edge event is detected.
416
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
5.4.9 HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1)
The HRCAP capture counter on falling edge 1 register (HCCAPCNTFALL1) is shown and described in the
figure and table below.
Figure 5-18. HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1)
15
0
HCCAPCNTFALL1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 5-10. HRCAP Capture Counter On Falling Edge 1 Register (HCCAPCNTFALL1) Field
Descriptions
Bit
15-0
Field
HCCAPCNTFALL1
Value
0
Description
HRCAP capture counter on falling edge 1 register
On an input falling edge event, the value in the HCCAPCNTFALL0 register is copied into the
HCCAPCNTFALL1 register before the HCCOUNTER value is captured into the
HCCAPCNTFALL0 register.
5.5
HRCAP Calibration Library
The HRCAP calibration (HCCal) logic is capable of capturing an edge in discrete time steps which
subdivide an HCCAPCLK cycle. As previously mentioned, the size of each step is on the order of 300 ps
(see device-specific data sheet for typical HRCAP step size on your device). The HRCAP_Cal() function in
the HRCAP calibration library must be run periodically to be certain that time steps are optimally applied
and that the edge capture accuracy is maintained over a wide range of PWM frequencies, system clock
frequencies, voltages, and temperatures. The HRCAP step size varies based on worst-case process
parameters, operating temperature, and voltage. HRCAP step size increases with decreasing voltage and
increasing temperature and decreases with increasing voltage and decreasing temperature.
Applications that use the HRCAP in high-resolution capture mode should use the TI-supplied HRCAP
calibration (HCCal) software HRCAP_Cal() function. The HRCAP_Cal function helps to dynamically scale
the HRCAP step size to a fraction of the HCCAPCLK cycle while the HRCAP is in high-resolution mode.
To utilize the HCCal capabilities effectively during HRCAP operation, the HRCAP calibration logic uses
built-in self-check and diagnostics capabilities to scale the HRCAP step size appropriately for any
operating condition.
TI provides a C-callable library containing one HRCAP calibration function that utilizes this hardware and
properly calibrates the internal HRCAP step logic as a fraction of a HCCAPCLK cycle. The library supplies
additional high-resolution capture functions to calculate pulse widths captured in Q16 integer + fractional
HCCAPCLK cycles based on the values in the HCCAPCNT registers and the calibration results.
The contents of these functions are proprietary to Texas Instruments and will not be published.
Currently, there is 1 released version of the HCCal Type 0 library, HCCal_Type0_V1.lib, which is located
in the controlSUITE software package under the /libs/utilities/hrcap_hccal/ directory.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
417
HRCAP Calibration Library
www.ti.com
5.5.1 HRCAP Calibration Library Functions
5.5.1.1
HRCAP_Cal
The HRCAP_Cal() function runs calibration and self-check diagnostics logic on a given HRCAP module to
internally scale the HCCal step logic as a fraction of a HCCAPCLK cycle.
Prototype:
Uint16 HRCAP_Cal(Uint16 HRCAPModule, Uint16 PLLClk, volatile struct EPWM_REGS *ePWMModule);
Parameters:
HRCAPModule
PLLClk
ePWMModule
The HRCAP module number as an integer value (i.e., “1” for
HRCAP1, and “2” for HRCAP2). This HRCAP module will be
dedicated to calibration only and cannot be used functionally to
capture pulse widths.
If 0, then HCCAPCLK is clocked by SYSCLK, where SYSCLK is the
system clock that clocks the HRCAP module. If 1, then HCCAPCLK is
clocked by PLLCLK, where the PLLCLK frequency is a multiple of the
system clock that clocks the HRCAP module.
A pointer to the address of the EPWM_REGS structure for the
HRPWM module used to calibrate the HRCAP (i.e., if HRPWM7A
output is connected to the HRCAP’s internal calibration logic, then
&EPwm7Regs is passed into this parameter, and if HRPWM8A output
is connected to the HRCAP’s internal calibration logic, then
&EPwm8Regs is passed into this parameter). The single ePWM
module used for HRCAP calibration is device-dependent.
Returns:
0
1
2
If HCCal calibration is in progress without encountering errors.
If HCCal has exited with errors. User should check that PLL is
configured such that the HCCAPCLK frequency falls within the
frequency limits designated by the HRCAP Electricals section of the
data manual.
If HCCal calibration has completed without errors.
Description:
This function drives the HRCAP calibration module logic to subdivide an HCCAPCLK cycle into HRCAP
time steps equivalent to a fraction of an HCCAPCLK cycle at any given time.
HRCAP_Cal() can only be used with HCCAPCLK between 98 Mhz and 120 MHz (See your devicespecific data manual’s HRCAP Electricals section for the device-specific HCCAPCLK frequency limits).
The function can be called at any time on a single HRCAP module which is dedicated to calibration only.
The calibration HRCAP module cannot be used functionally to capture pulse widths. The calibration logic
driven by this function uses a single ePWMxA HRPWM channel output connected internally to the HRCAP
input to run diagnostics. During calibration, that ePWM module cannot be used for normal ePWM
functions in the application. For instance, on this device, while the HRCAP is in use in high-resolution
capture mode, ePWM8 cannot be used functionally by the application during calibration.
418
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
HRCAP Calibration Library
www.ti.com
5.5.1.2
LowPulseWidth0
The LowPulseWidth0() function captures the high-resolution low pulse width around HCCAPCNTRISE0 in
HCCAPCLK cycles.
Prototype:
Uint32 LowPulseWidth0 (Uint16 * ptrHRCAPmodule);
Parameters:
ptrHRCAPmodule
A 16-bit pointer to the first address of the HRCAP register block of the
HRCAP module used to capture pulses.
Returns:
32-bit high-resolution low pulse width around HCCAPCNTRISE0 as Q16 fixed-point value in number of
HCCAPCLK cycles.
Description:
This function can be called for any of the HRCAP modules not used for calibration to convert the
HCCAPCNTRISE0 and HRCAP calibration results into a fixed-point Q16 integer + fractional highresolution low-pulse width in HCCAPCLK cycles. Figure 5-19 shows which low pulse widths can be
captured on a RISE and FALL event.
Figure 5-19. LowPulseWidth0 Capture on RISE and FALL Events
Service RISE interrupt
LowPulseWidth0
HCCAPCNTRISE1
HCCAPCNTFALL1
HCCAPCNTRISE0
Service FALL interrupt
LowPulseWidth0
HCCAPCNTFALL1
HCCAPCNTRISE0 HCCAPCNTFALL0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
419
HRCAP Calibration Library
5.5.1.3
www.ti.com
HighPulseWidth0 and HighPulseWidth1
The HighPulseWidth0()function captures the high-resolution high pulse width around HCCAPCNTFALL0 in
HCCAPCLK cycles. The HighPulseWidth1()function captures the high-resolution high pulse width around
HCCAPCNTFALL1 in HCCAPCLK cycles.
Prototypes:
Uint32 HighPulseWidth0 (Uint16 * ptrHRCAPmodule);
Uint32 HighPulseWidth1 (Uint16 * ptrHRCAPmodule);
Parameters:
ptrHRCAPmodule
A 16-bit pointer to the first address of the HRCAP register block of the
HRCAP module used to capture pulses.
Returns:
32-bit high-resolution high pulse width around HCCAPCNTFALL0/1 as Q16 fixed-point value in number of
HCCAPCLK cycles.
Description:
These functions can be called for any of the HRCAP modules not used for calibration. They use the
calibration logic to convert the HCCAPCNTFALL0/1 register value and HCCal calibration results into a
fixed-point Q16 integer + fractional high-resolution high-pulse width in HCCAPCLK cycles. Figure 5-20
shows which high pulse widths can be captured on a RISE and FALL event.
Figure 5-20. HighPulseWidth0/1 Capture on RISE and FALL Events
Service RISE interrupt
HCCAPCNTRISE1
HCCAPCNTFALL1
HCCAPCNTRISE0
HighPulseWidth1
HCCAPCNTFALL1 HCCAPCNTRISE0
HighPulseWidth1
5.5.1.4
HCCAPCNTFALL0
HighPulseWidth0
PeriodWidthRise0
The PeriodWidthRise0() function captures the rising edge to rising edge high-resolution period width
around HCCAPCNTRISE0 and HCCAPCNTFALL1 in HCCAPCLK cycles.
Prototype:
Uint32 PeriodWidthRise0 (Uint16 * ptrHRCAPmodule)
Parameters:
ptrHRCAPmodule
A 16-bit pointer to the first address of the HRCAP register block of the
HRCAP module used to capture pulses.
Returns:
32-bit high-resolution rising edge to rising edge period width around
HCCAPCNTRISE0+HCCAPCNTFALL1 as Q16 fixed-point value in number of HCCAPCLK cycles.
420
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
HRCAP Calibration Library
www.ti.com
Description:
This function can be called for any of the HRCAP modules not used for calibration. It uses the calibration
logic to convert the HCCAPCNTRISE0 and HCCAPCNTFALL1 register values and HCCal calibration
results into the function into a fixed-point Q16 integer + fractional high-resolution period width in
HCCAPCLK cycles. Figure 5-21 shows which period widths can be captured on a RISE and FALL event.
5.5.1.5
PeriodWidthFall0
The PeriodWidthFall0()function captures the falling edge to falling edge high-resolution period width
around HCCAPCNTFALL0 and HCCAPCNTRISE0 in HCCAPCLK cycles.
Prototype:
Uint32 PeriodWidthFall0 (Uint16 * ptrHRCAPmodule);
Parameters:
ptrHRCAPmodule
A 16-bit pointer to the first address of the HRCAP register block of the
HRCAP module used to capture pulses.
Returns:
32-bit high-resolution falling edge to falling edge period width around
HCCAPCNTFALL0+HCCAPCNTRISE0 as Q16 fixed-point value in number of HCCAPCLK cycles.
Description:
This function can be called for any of the HRCAP modules not used for calibration. It uses the calibration
logic to convert the HCCAPCNTFALL0 and HCCAPCNTRISE0 register values and HCCal calibration
results into a fixed-point Q16 integer + fractional high-resolution period width in HCCAPCLK cycles.
Figure 5-21 shows which period widths can be captured on a RISE and FALL event.
Figure 5-21. PeriodWidthRise0 and PeriodWidthFall0 Capture on RISE and FALL Events
Service RISE interrupt
HCCAPCNTRISE1
HCCAPCNTFALL1
HCCAPCNTRISE0
PeriodWidthRise0
Service FALL interrupt
HCCAPCNTRISE1
HCCAPCNTFALL1
PeriodWidthRise0
HCCAPCNTRISE0
HCCAPCNTFALL0
PeriodWidthFall0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
421
HRCAP Calibration Library
www.ti.com
5.5.2 HRCAP Calibration Library Software Usage
To use the HRCAP in high-resolution mode, it is recommended that the HRCAP calibration functions be
used as described here.
Step 1: Add "Include" Files
The HCCal_Type0_V1.h file needs to be included as follows. This include file is mandatory while using the
HRCAP calibration library functions. For these devices, the F2806x_Device.h and F2806x_Examples.h
files in the F2806x C/C++ Header Files and Peripheral Examples package in controlSUITE are necessary.
For other device families, the device-specific equivalent files in the header files and peripheral examples
software packages for those devices should be used. These include files are optional if customized
header files are used in the end applications.
Example 1: A Sample of How to Add "Include" Files
#include "F2806x_Device.h"
#include "F2806x_Examples.h"
#include "HCCal_Type0_V1.h"
// F2806x Headerfile
// F2806x Examples Headerfile
Step 2: HRCAP Register Array Declaration
Declare an array of pointers to HRCAP_REGS structures which includes all available HRCAP modules on
the device. Position 0 includes a 0 value which is not used by the HRCAP_Cal function.
Example 2: A Sample of How to Declare an HRCAP Register Array
#define NUM_HRCAP 5
// # of HRCAP modules on 2806x + 1
volatile struct HRCAP_REGS *HRCAP[NUM_HRCAP] = {0, &HRCap1Regs,
&HRCap2Regs, &HRCap3Regs, &HRCap4Regs};
Step 3: HRCAP Pre-Calibration
Prior to using the HRCAP in high-resolution mode in application code, HRCAP_Cal() should be called to
calibrate the HRCAP step size subdivision into HCCAPCLK.
As part of the one-time pre-calibration prior to using the HRCAP in high-resolution mode, include the
following:
Example 3: A Sample of HRCAP Pre-Calibration
while (status!= HCCAL_COMPLETE)
{
// While calibration is incomplete
// Use HRCAP2 to calibrate with:
// HCCAPCLK = PLL2CLK
// ePWM8A = HRCAP calibration input
status = HRCAP_Cal(2,HCCAPCLK_PLLCLK, &EPwm8Regs);
if (status == HCCAL_ERROR)
{
ESTOP0;
// Error, stop and check HCCAPCLK frequency
}
}
422
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
HRCAP Calibration Library
www.ti.com
Step 4: Application Code Calibration
While the application is running, fluctuations in both device temperature and supply voltage may be
expected. To be sure that optimal HRCAP step size is used for each HRCAP module, the HRCAP_Cal
function should be re-run periodically as part of a slower back-ground loop. Some examples of this are
shown here.
NOTE: See the hrcap_capture_hrpwm example in the device-specific C/C++ header files and peripheral
examples available in controlSUITE from the TI website
Example 4: HRCAP_Cal Function Calls
main ()
{
int status;
//
//
//
//
//
User code
HRCAP 1, 3, and 4 are running in high-resolution mode
The status variable returns 2 once calibration has been
completed by the HCCal Calibration Module running
diagnostics.
status = HRCAP_Cal(2,HCCAPCLK_PLLCLK, &EPwm8Regs);
// The function returns a 2 if HCCAPCLK is not within the
// appropriate frequency range.
if(status==HCCAL_ERROR) {ESTOP0;}
}
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
High Resolution Capture (HRCAP)
423
HRCAP Calibration Library
www.ti.com
Step 5: Application Code Pulse Width Measurement
While the application is running, when a RISE or FALL event occurs, pulse and period widths can be
measured using the high resolution pulse width functions as shown below.
Example 5: LowPulseWidth, HighPulseWidth, and PeriodWidth Function Calls
interrupt void HRCAP1_Isr (void)
{
EALLOW;
if (HRCap1Regs.HCIFR.bit.RISEOVF == 1) {
ESTOP0;
// Another rising edge detected
}
if (first < 1) {
first++;
// Discard first data (because first interrupt
// after reset/clk enable measures time from
// clock start to edge - invalid pulse width)
} else {
periodwidth =
PeriodWidthRise0((Uint16 *)&HRCap1Regs);
pulsewidthlow = LowPulseWidth0((Uint16 *)&HRCap1Regs);
pulsewidthhigh = HighPulseWidth0((Uint16 *)&HRCap1Regs);
}
HRCap1Regs.HCICLR.bit.RISE=1;
HRCap1Regs.HCICLR.bit.INT=1;
PieCtrlRegs.PIEACK.bit.ACK4=1;
EDIS;
}
424
High Resolution Capture (HRCAP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 6
SPRUH18G – January 2011 – Revised April 2017
Enhanced Capture (eCAP) Module
The enhanced capture (eCAP) module is used in systems where accurate timing of external events is
important. This guide describes the TMS320x280x Piccolo™ Enhanced Capture (eCAP) Module and how
to use it.
The eCAP module described in this reference guide is a Type 0 eCAP. See the TMS320C28xx, 28xxx
DSP Peripheral Reference Guide (SPRU566) for a list of all devices with a eCAP module of the same
type, to determine the differences between the types, and for a list of device-specific differences within a
type.
Topic
...........................................................................................................................
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
Introduction .....................................................................................................
Description ......................................................................................................
Capture and APWM Operating Mode ...................................................................
Capture Mode Description .................................................................................
Capture Module - Control and Status Registers....................................................
Register Mapping .............................................................................................
Application of the ECAP Module ........................................................................
Application of the APWM Mode ..........................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
Page
426
426
427
427
434
442
442
452
425
Introduction
6.1
www.ti.com
Introduction
Uses for eCAP include:
• Speed measurements of rotating machinery (for example, toothed sprockets sensed via Hall sensors)
• Elapsed time measurements between position sensor pulses
• Period and duty cycle measurements of pulse train signals
• Decoding current or voltage amplitude derived from duty cycle encoded current/voltage sensors
The eCAP module described in this guide includes the following features:
• 4-event time-stamp registers (each 32 bits)
• Edge polarity selection for up to four sequenced time-stamp capture events
• Interrupt on either of the four events
• Single shot capture of up to four event time-stamps
• Continuous mode capture of time-stamps in a four-deep circular buffer
• Absolute time-stamp capture
• Difference (Delta) mode time-stamp capture
• All above resources dedicated to a single input pin
• When not used in capture mode, the ECAP module can be configured as a single channel PWM output
6.2
Description
The eCAP module represents one complete capture channel that can be instantiated multiple times
depending on the target device. In the context of this guide, one eCAP channel has the following
independent key resources:
• Dedicated input capture pin
• 32-bit time base (counter)
• 4 x 32-bit time-stamp capture registers (CAP1-CAP4)
• 4-stage sequencer (Modulo4 counter) that is synchronized to external events, ECAP pin rising/falling
edges.
• Independent edge polarity (rising/falling edge) selection for all 4 events
• Input capture signal prescaling (from 2-62)
• One-shot compare register (2 bits) to freeze captures after 1 to 4 time-stamp events
• Control for continuous time-stamp captures using a 4-deep circular buffer (CAP1-CAP4) scheme
• Interrupt capabilities on any of the 4 capture events
426
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture and APWM Operating Mode
www.ti.com
6.3
Capture and APWM Operating Mode
You can use the eCAP module resources to implement a single-channel PWM generator (with 32 bit
capabilities) when it is not being used for input captures. The counter operates in count-up mode,
providing a time-base for asymmetrical pulse width modulation (PWM) waveforms. The CAP1 and CAP2
registers become the active period and compare registers, respectively, while CAP3 and CAP4 registers
become the period and capture shadow registers, respectively. Figure 6-1 is a high-level view of both the
capture and auxiliary pulse-width modulator (APWM) modes of operation.
Figure 6-1. Capture and APWM Modes of Operation
SyncIn
Counter (”timer”)
Capture
mode
32
Note:
Same pin
depends on
operating
mode
CAP1 reg
CAP2 reg
CAP3 reg
ECAPx
pin
Sequencing
Edge detection
Edge polarity
Prescale
CAP4 reg
ECAPxINT
Interrupt I/F
Or
SyncIn
Counter (”timer”)
APWM
mode
32
Period reg
(active) (”CAP1”)
Syncout
Compare reg
(active) (”CAP2”)
Period reg
(shadow) (”CAP3”)
APWMx
pin
PWM
Compare logic
Compare reg
(shadow) (”CAP4”)
ECAPxINT
6.4
Interrupt I/F
A
A single pin is shared between CAP and APWM functions. In capture mode, it is an input; in APWM mode, it is an
output.
B
In APWM mode, writing any value to CAP1/CAP2 active registers also writes the same value to the corresponding
shadow registers CAP3/CAP4. This emulates immediate mode. Writing to the shadow registers CAP3/CAP4 invokes
the shadow mode.
Capture Mode Description
Figure 6-2 shows the various components that implement the capture function.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
427
Capture Mode Description
www.ti.com
Figure 6-2. Capture Function Diagram
ECCTL2 [ SYNCI_EN, SYNCOSEL, SWSYNC]
ECCTL2[CAP/APWM]
SYNC
CTRPHS
(phase register−32 bit)
SYNCIn
APWM mode
CTR_OVF
OVF
TSCTR
(counter−32 bit)
SYNCOut
RST
CTR [0−31]
Delta−mode
PWM
compare
logic
PRD [0−31]
CMP [0−31]
32
CTR=PRD
CTR [0−31]
CTR=CMP
32
PRD [0−31]
ECCTL1 [ CAPLDEN, CTRRSTx]
LD1
CAP1
(APRD active)
APRD
shadow
MODE SELECT
ECAPx
32
Polarity
select
LD
32
CMP [0−31]
32
32
CAP2
(ACMP active)
LD
32
32
32
LD2
Polarity
select
Event
qualifier
ACMP
shadow
CAP3
(APRD shadow)
LD
CAP4
(ACMP shadow)
LD
Event
Prescale
ECCTL1[EVTPS]
Polarity
select
LD3
LD4
Polarity
select
4
Capture events
Edge Polarity Select
ECCTL1[CAPxPOL]
4
CEVT[1:4]
to PIE
Interrupt
Trigger
and
Flag
control
CTR_OVF
Continuous /
Oneshot
Capture Control
CTR=PRD
CTR=CMP
ECCTL2 [ RE−ARM, CONT/ONESHT, STOP_WRAP]
Registers: ECEINT, ECFLG, ECCLR, ECFRC
6.4.1 Event Prescaler
•
428
An input capture signal (pulse train) can be prescaled by N = 2-62 (in multiples of 2) or can bypass the
prescaler.
This is useful when very high frequency signals are used as inputs. Figure 6-3 shows a functional
diagram and Figure 6-4 shows the operation of the prescale function.
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Mode Description
www.ti.com
Figure 6-3. Event Prescale Control
Event prescaler
0
PSout
1
By−pass
ECAPx pin
(from GPIO)
/n
5
ECCTL1[EVTPS]
prescaler [5 bits]
(counter)
A
When a prescale value of 1 is chosen (i.e. ECCTL1[13:9] = 0,0,0,0,0 ) the input capture signal by-passes the prescale
logic completely.
Figure 6-4. Prescale Function Waveforms
ECAPx
PSout
div 2
PSout
div 4
PSout
div 6
PSout
div 8
PSout
div 10
6.4.2 Edge Polarity Select and Qualifier
•
•
•
Four independent edge polarity (rising edge/falling edge) selection MUXes are used, one for each
capture event.
Each edge (up to 4) is event qualified by the Modulo4 sequencer.
The edge event is gated to its respective CAPx register by the Mod4 counter. The CAPx register is
loaded on the falling edge.
6.4.3 Continuous/One-Shot Control
•
•
•
The Mod4 (2 bit) counter is incremented via edge qualified events (CEVT1-CEVT4).
The Mod4 counter continues counting (0->1->2->3->0) and wraps around unless stopped.
A 2-bit stop register is used to compare the Mod4 counter output, and when equal stops the Mod4
counter and inhibits further loads of the CAP1-CAP4 registers. This occurs during one-shot operation.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
429
Capture Mode Description
www.ti.com
The continuous/one-shot block controls the start/stop and reset (zero) functions of the Mod4 counter via a
mono-shot type of action that can be triggered by the stop-value comparator and re-armed via software
control.
Once armed, the eCAP module waits for 1-4 (defined by stop-value) capture events before freezing both
the Mod4 counter and contents of CAP1-4 registers (that is, time-stamps).
Re-arming prepares the eCAP module for another capture sequence. Also re-arming clears (to zero) the
Mod4 counter and permits loading of CAP1-4 registers again, providing the CAPLDEN bit is set.
In continuous mode, the Mod4 counter continues to run (0->1->2->3->0, the one-shot action is ignored,
and capture values continue to be written to CAP1-4 in a circular buffer sequence.
Figure 6-5. Details of the Continuous/One-shot Block
0 1 2 3
2:4 MUX
2
CEVT1
CEVT2
CEVT3
CEVT4
CLK
Modulo 4
counter Stop
RST
Mod_eq
One−shot
control logic
Stop value (2b)
ECCTL2[STOP_WRAP]
ECCTL2[RE−ARM]
ECCTL2[CONT/ONESHT]
6.4.4 32-Bit Counter and Phase Control
This counter provides the time-base for event captures, and is clocked via the system clock.
A phase register is provided to achieve synchronization with other counters, via a hardware and software
forced sync. This is useful in APWM mode when a phase offset between modules is needed.
On any of the four event loads, an option to reset the 32-bit counter is given. This is useful for time
difference capture. The 32-bit counter value is captured first, then it is reset to 0 by any of the LD1-LD4
signals.
430
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Mode Description
www.ti.com
Figure 6-6. Details of the Counter and Synchronization Block
SYNC
ECCTL2[SWSYNC]
ECCTL2[SYNCOSEL]
SYNCI
CTR=PRD
Disable
Disable
ECCTL2[SYNCI_EN]
SYNCO
Sync out
select
CTRPHS
LD_CTRPHS
RST
Delta−mode
TSCTR
(counter 32b)
SYSCLK
CLK
OVF
CTR−OVF
CTR[31−0]
6.4.5 CAP1-CAP4 Registers
These 32-bit registers are fed by the 32-bit counter timer bus, CTR[0-31] and are loaded (i.e., capture a
time-stamp) when their respective LD inputs are strobed.
Loading of the capture registers can be inhibited via control bit CAPLDEN. During one-shot operation, this
bit is cleared (loading is inhibited) automatically when a stop condition occurs, i.e. StopValue = Mod4.
CAP1 and CAP2 registers become the active period and compare registers, respectively, in APWM mode.
CAP3 and CAP4 registers become the respective shadow registers (APRD and ACMP) for CAP1 and
CAP2 during APWM operation.
6.4.6 Interrupt Control
An Interrupt can be generated on capture events (CEVT1-CEVT4, CTROVF) or APWM events (CTR =
PRD, CTR = CMP).
A counter overflow event (FFFFFFFF->00000000) is also provided as an interrupt source (CTROVF).
The capture events are edge and sequencer qualified (i.e., ordered in time) by the polarity select and
Mod4 gating, respectively.
One of these events can be selected as the interrupt source (from the eCAPx module) going to the PIE.
Seven interrupt events (CEVT1, CEVT2, CEVT3, CEVT4, CNTOVF, CTR=PRD, CTR=CMP) can be
generated. The interrupt enable register (ECEINT) is used to enable/disable individual interrupt event
sources. The interrupt flag register (ECFLG) indicates if any interrupt event has been latched and contains
the global interrupt flag bit (INT). An interrupt pulse is generated to the PIE only if any of the interrupt
events are enabled, the flag bit is 1, and the INT flag bit is 0. The interrupt service routine must clear the
global interrupt flag bit and the serviced event via the interrupt clear register (ECCLR) before any other
interrupt pulses are generated. You can force an interrupt event via the interrupt force register (ECFRC).
This is useful for test purposes.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
431
Capture Mode Description
www.ti.com
Note: The CEVT1, CEVT2, CEVT3, CEVT4 flags are only active in capture mode (ECCTL2[CAP/APWM
== 0]). The CTR=PRD, CTR=CMP flags are only valid in APWM mode (ECCTL2[CAP/APWM == 1]).
CNTOVF flag is valid in both modes.
Figure 6-7. Interrupts in eCAP Module
ECFLG
Clear
ECCLR
ECFRC
Latch
ECEINT
Set
CEVT1
ECFLG
Clear
ECCLR
ECFRC
Latch
ECFLG
ECEINT
ECCLR
Set
ECFLG
Clear
Clear
Latch
ECEINT
Generate
interrupt
pulse when
input=1
ECCLR
ECFRC
Latch
Set
ECAPxINT
CEVT2
1
Set
CEVT3
ECFLG
0
Clear
0
ECCLR
ECFRC
Latch
ECEINT
Set
CEVT4
ECFLG
Clear
ECCLR
ECFRC
Latch
CTROVF
Set
ECEINT
ECFLG
Clear
ECCLR
ECFRC
Latch
ECEINT
PRDEQ
Set
ECFLG
Clear
Latch
ECEINT
Set
ECCLR
ECFRC
CMPEQ
6.4.7 Shadow Load and Lockout Control
In capture mode, this logic inhibits (locks out) any shadow loading of CAP1 or CAP2 from APRD and
ACMP registers, respectively.
In APWM mode, shadow loading is active and two choices are permitted:
• Immediate - APRD or ACMP are transferred to CAP1 or CAP2 immediately upon writing a new value.
• On period equal, i.e., CTR[31:0] = PRD[31:0]
432
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Mode Description
www.ti.com
6.4.8 APWM Mode Operation
Main operating highlights of the APWM section:
• The time-stamp counter bus is made available for comparison via 2 digital (32-bit) comparators.
• When CAP1/2 registers are not used in capture mode, their contents can be used as Period and
Compare values in APWM mode.
• Double buffering is achieved via shadow registers APRD and ACMP (CAP3/4). The shadow register
contents are transferred over to CAP1/2 registers either immediately upon a write, or on a CTR = PRD
trigger.
• In APWM mode, writing to CAP1/CAP2 active registers will also write the same value to the
corresponding shadow registers CAP3/CAP4. This emulates immediate mode. Writing to the shadow
registers CAP3/CAP4 will invoke the shadow mode.
• During initialization, you must write to the active registers for both period and compare. This
automatically copies the initial values into the shadow values. For subsequent compare updates, i.e.,
during run-time, you only need to use the shadow registers.
Figure 6-8. PWM Waveform Details Of APWM Mode Operation
TSCTR
FFFFFFFF
APRD
1000h
500h
ACMP
300h
0000000C
APWMx
(o/p pin)
Off−time
On
time
Period
The behavior of APWM active high mode (APWMPOL == 0) is as follows:
CMP = 0x00000000, output low for duration of period (0% duty)
CMP = 0x00000001, output high 1 cycle
CMP = 0x00000002, output high 2 cycles
CMP = PERIOD, output high except for 1 cycle (<100% duty)
CMP = PERIOD+1, output high for complete period (100% duty)
CMP > PERIOD+1, output high for complete period
The behavior of APWM active low mode (APWMPOL == 1) is as follows:
CMP = 0x00000000, output high for duration of period (0% duty)
CMP = 0x00000001, output low 1 cycle
CMP = 0x00000002, output low 2 cycles
CMP = PERIOD, output low except for 1 cycle (<100% duty)
CMP = PERIOD+1, output low for complete period (100% duty)
CMP > PERIOD+1, output low for complete period
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
433
Capture Module - Control and Status Registers
6.5
www.ti.com
Capture Module - Control and Status Registers
Figure 6-9. Time-Stamp Counter Register (TSCTR)
31
0
TSCTR
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-1. Time-Stamp Counter Register (TSCTR) Field Descriptions
Bit(s)
Field
Description
31:0
TSCTR
Active 32-bit counter register that is used as the capture time-base
Figure 6-10. Counter Phase Control Register (CTRPHS)
31
0
CTRPHS
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-2. Counter Phase Control Register (CTRPHS) Field Descriptions
Bit(s)
Field
Description
31:0
CTRPHS
Counter phase value register that can be programmed for phase lag/lead. This register shadows
TSCTR and is loaded into TSCTR upon either a SYNCI event or S/W force via a control bit. Used
to achieve phase control synchronization with respect to other eCAP and EPWM time-bases.
Figure 6-11. Capture-1 Register (CAP1)
31
0
CAP1
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-3. Capture-1 Register (CAP1) Field Descriptions
Bit(s)
Field
Description
31:0
CAP1
This register can be loaded (written) by :) Time-Stamp (i.e., counter value TSCTR) during a capture
event) Software - may be useful for test purposes / initialization) APRD shadow register (i.e.,
CAP3) when used in APWM mode
Figure 6-12. Capture-2 Register (CAP2)
31
0
CAP2
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-4. Capture-2 Register (CAP2) Field Descriptions
434
Bit(s)
Field
Description
31:0
CAP2
This register can be loaded (written) by:
• Time-Stamp (i.e., counter value) during a capture event
• Software - may be useful for test purposes
• APRD shadow register (i.e., CAP4) when used in APWM mode
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Module - Control and Status Registers
www.ti.com
NOTE:
In APWM mode, writing to CAP1/CAP2 active registers also writes the same value to the
corresponding shadow registers CAP3/CAP4. This emulates immediate mode. Writing to the
shadow registers CAP3/CAP4 invokes the shadow mode.
Figure 6-13. Capture-3 Register (CAP3)
31
0
CAP3
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-5. Capture-3 Register (CAP3) Field Descriptions
Bit(s)
Field
Description
31:0
CAP3
In CMP mode, this is a time-stamp capture register. In APWM mode, this is the period shadow
(APRD) register. You update the PWM period value through this register. In this mode, CAP3
(APRD) shadows CAP1.
Figure 6-14. Capture-4 Register (CAP4)
31
0
CAP4
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-6. Capture-4 Register (CAP4) Field Descriptions
Bit(s)
Field
Description
31:0
CAP4
In CMP mode, this is a time-stamp capture register. In APWM mode, this is the compare shadow
(ACMP) register. You update the PWM compare value via this register. In this mode, CAP4
(ACMP) shadows CAP2.
Figure 6-15. ECAP Control Register 1 (ECCTL1)
15
14
13
9
8
FREE/SOFT
PRESCALE
CAPLDEN
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
CTRRST4
CAP4POL
CTRRST3
CAP3POL
CTRRST2
CAP2POL
CTRRST1
CAP1POL
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-7. ECAP Control Register 1 (ECCTL1) Field Descriptions
Bit(s)
Field
15:14
FREE/SOFT
13:9
Value
Description
Emulation Control
00
TSCTR counter stops immediately on emulation suspend
01
TSCTR counter runs until = 0
1x
TSCTR counter is unaffected by emulation suspend (Run Free)
PRESCALE
Event Filter prescale select
00000
Divide by 1 (ino prescale, by-pass the prescaler)
00001
Divide by 2
00010
Divide by 4
00011
Divide by 6
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module 435
Capture Module - Control and Status Registers
www.ti.com
Table 6-7. ECAP Control Register 1 (ECCTL1) Field Descriptions (continued)
Bit(s)
Field
Value
Description
00100
Divide by 8
00101
Divide by 10
...
8
7
6
5
4
3
2
1
0
11110
Divide by 60
11111
Divide by 62
CAPLDEN
Enable Loading of CAP1-4 registers on a capture event. Note that this bit does not
disable CEVTn events from being generated.
0
Disable CAP1-4 register loads at capture event time.
1
Enable CAP1-4 register loads at capture event time.
CTRRST4
Counter Reset on Capture Event 4
0
Do not reset counter on Capture Event 4 (absolute time stamp operation)
1
Reset counter after Capture Event 4 time-stamp has been captured
(used in difference mode operation)
CAP4POL
Capture Event 4 Polarity select
0
Capture Event 4 triggered on a rising edge (RE)
1
Capture Event 4 triggered on a falling edge (FE)
CTRRST3
Counter Reset on Capture Event 3
0
Do not reset counter on Capture Event 3 (absolute time stamp)
1
Reset counter after Event 3 time-stamp has been captured
(used in difference mode operation)
CAP3POL
Capture Event 3 Polarity select
0
Capture Event 3 triggered on a rising edge (RE)
1
Capture Event 3 triggered on a falling edge (FE)
CTRRST2
Counter Reset on Capture Event 2
0
Do not reset counter on Capture Event 2 (absolute time stamp)
1
Reset counter after Event 2 time-stamp has been captured
(used in difference mode operation)
CAP2POL
Capture Event 2 Polarity select
0
Capture Event 2 triggered on a rising edge (RE)
1
Capture Event 2 triggered on a falling edge (FE)
CTRRST1
Counter Reset on Capture Event 1
0
Do not reset counter on Capture Event 1 (absolute time stamp)
1
Reset counter after Event 1 time-stamp has been captured (used in difference mode
operation)
CAP1POL
Capture Event 1 Polarity select
0
Capture Event 1 triggered on a rising edge (RE)
1
Capture Event 1 triggered on a falling edge (FE)
Figure 6-16. ECAP Control Register 2 (ECCTL2)
15
11
7
10
9
8
Reserved
APWMPOL
CAP/APWM
SWSYNC
R-0
R/W-0
R/W-0
R/W-0
2
1
5
4
3
SYNCO_SEL
6
SYNCI_EN
TSCTRSTOP
REARM
R/W-0
R/W-0
R/W-0
R/W-0
STOP_WRAP
R/W-1
R/W-1
0
CONT/ONESH
T
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
436
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Module - Control and Status Registers
www.ti.com
Table 6-8. ECAP Control Register 2 (ECCTL2) Field Descriptions
Bit(s)
Field
Description
15:11
Reserved
Reserved
APWMPOL
APWM output polarity select. This is applicable only in APWM operating mode
10
9
8
0
Output is active high (i.e., Compare value defines high time)
1
Output is active low (i.e., Compare value defines low time)
CAP/APWM
CAP/APWM operating mode select
0
ECAP module operates in capture mode. This mode forces the following
configuration:
• Inhibits TSCTR resets via CTR = PRD event
• Inhibits shadow loads on CAP1 and 2 registers
• Permits user to enable CAP1-4 register load
• CAPx/APWMx pin operates as a capture input
1
ECAP module operates in APWM mode. This mode forces the following
configuration:
• Resets TSCTR on CTR = PRD event (period boundary
• Permits shadow loading on CAP1 and 2 registers
• Disables loading of time-stamps into CAP1-4 registers
• CAPx/APWMx pin operates as a APWM output
SWSYNC
Software-forced Counter (TSCTR) Synchronizing. This provides a convenient
software method to synchronize some or all ECAP time bases. In APWM mode,
the synchronizing can also be done via the CTR = PRD event.
0
Writing a zero has no effect. Reading always returns a zero
1
Writing a one forces a TSCTR shadow load of current ECAP module and any
ECAP modules down-stream providing the SYNCO_SEL bits are 0,0. After writing
a 1, this bit returns to a zero.
Note: Selection CTR = PRD is meaningful only in APWM mode; however, you can
choose it in CAP mode if you find doing so useful.
7:6
5
4
3
2:1
SYNCO_SEL
Sync-Out Select
00
Select sync-in event to be the sync-out signal (pass through)
01
Select CTR = PRD event to be the sync-out signal
10
Disable sync out signal
11
Disable sync out signal
SYNCI_EN
Counter (TSCTR) Sync-In select mode
0
Disable sync-in option
1
Enable counter (TSCTR) to be loaded from CTRPHS register upon either a SYNCI
signal or a S/W force event.
TSCTRSTOP
Time Stamp (TSCTR) Counter Stop (freeze) Control
0
TSCTR stopped
1
TSCTR free-running
RE-ARM
Re-Arming Control. Note: The re-arm function is valid in one shot or continuous
mode.
0
Has no effect (reading always returns a 0)
1
Arms the sequence as follows:
1) Resets the Mod4 counter to zero
2) Unfreezes the Mod4 counter
3) Enables capture register loads
STOP_WRAP
Stop value for one-shot mode. This is the number (between 1-4) of captures
allowed to occur before the CAP(1-4) registers are frozen, i.e., capture sequence is
stopped.
Wrap value for continuous mode. This is the number (between 1-4) of the capture
register in which the circular buffer wraps around and starts again.
00
Stop after Capture Event 1 in one-shot mode
Wrap after Capture Event 1 in continuous mode.
01
Stop after Capture Event 2 in one-shot mode
Wrap after Capture Event 2 in continuous mode.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module 437
Capture Module - Control and Status Registers
www.ti.com
Table 6-8. ECAP Control Register 2 (ECCTL2) Field Descriptions (continued)
Bit(s)
Field
Description
10
Stop after Capture Event 3 in one-shot mode
Wrap after Capture Event 3 in continuous mode.
11
Stop after Capture Event 4 in one-shot mode
Wrap after Capture Event 4 in continuous mode.
Notes: STOP_WRAP is compared to Mod4 counter and, when equal, 2 actions
occur:
• Mod4 counter is stopped (frozen)
• Capture register loads are inhibited
In one-shot mode, further interrupt events are blocked until re-armed.
0
438
CONT/ONESHT
Enhanced Capture (eCAP) Module
Continuous or one-shot mode control (applicable only in capture mode)
0
Operate in continuous mode
1
Operate in one-Shot mode
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Module - Control and Status Registers
www.ti.com
Figure 6-17. ECAP Interrupt Enable Register (ECEINT)
15
8
Reserved
7
6
5
4
3
2
1
0
CTR=CMP
CTR=PRD
CTROVF
CEVT4
CEVT3
CEVT2
CETV1
Reserved
R/W
R/W
R/W
R/W
R/W
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-9. ECAP Interrupt Enable Register (ECEINT) Field Descriptions
Bits
Field
15:8
Reserved
7
CTR=CMP
6
5
4
3
2
1
0
Value
Description
Counter Equal Compare Interrupt Enable
0
Disable Compare Equal as an Interrupt source
1
Enable Compare Equal as an Interrupt source
CTR=PRD
Counter Equal Period Interrupt Enable
0
Disable Period Equal as an Interrupt source
1
Enable Period Equal as an Interrupt source
CTROVF
Counter Overflow Interrupt Enable
0
Disabled counter Overflow as an Interrupt source
1
Enable counter Overflow as an Interrupt source
CEVT4
Capture Event 4 Interrupt Enable
0
Disable Capture Event 4 as an Interrupt source
1
Capture Event 4 Interrupt Enable
CEVT3
Capture Event 3 Interrupt Enable
0
Disable Capture Event 3 as an Interrupt source
1
Enable Capture Event 3 as an Interrupt source
CEVT2
Capture Event 2 Interrupt Enable
0
Disable Capture Event 2 as an Interrupt source
1
Enable Capture Event 2 as an Interrupt source
CEVT1
Capture Event 1 Interrupt Enable
0
Disable Capture Event 1 as an Interrupt source
1
Enable Capture Event 1 as an Interrupt source
Reserved
The interrupt enable bits (CEVT1, ...) block any of the selected events from generating an interrupt.
Events will still be latched into the flag bit (ECFLG register) and can be forced/cleared via the
ECFRC/ECCLR registers.
The proper procedure for configuring peripheral modes and interrupts is as follows:
• Disable global interrupts
• Stop eCAP counter
• Disable eCAP interrupts
• Configure peripheral registers
• Clear spurious eCAP interrupt flags
• Enable eCAP interrupts
• Start eCAP counter
• Enable global interrupts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
439
Capture Module - Control and Status Registers
www.ti.com
Figure 6-18. ECAP Interrupt Flag Register (ECFLG)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
CTR=CMP
CTR=PRD
CTROVF
CEVT4
CETV3
CEVT2
CETV1
INT
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-10. ECAP Interrupt Flag Register (ECFLG) Field Descriptions
Bits
Field
15:8
Reserved
7
CTR=CMP
6
5
4
3
2
1
0
Value
Description
Compare Equal Compare Status Flag. This flag is active only in APWM mode.
0
Indicates no event occurred
1
Indicates the counter (TSCTR) reached the compare register value (ACMP)
CTR=PRD
Counter Equal Period Status Flag. This flag is only active in APWM mode.
0
Indicates no event occurred
1
Indicates the counter (TSCTR) reached the period register value (APRD) and was reset.
CTROVF
Counter Overflow Status Flag. This flag is active in CAP and APWM mode.
0
Indicates no event occurred.
1
Indicates the counter (TSCTR) has made the transition from FFFFFFFF " 00000000
CEVT4
Capture Event 4 Status Flag This flag is only active in CAP mode.
0
Indicates no event occurred
1
Indicates the fourth event occurred at ECAPx pin
CEVT3
Capture Event 3 Status Flag. This flag is active only in CAP mode.
0
Indicates no event occurred.
1
Indicates the third event occurred at ECAPx pin.
CEVT2
Capture Event 2 Status Flag. This flag is only active in CAP mode.
0
Indicates no event occurred.
1
Indicates the second event occurred at ECAPx pin.
CEVT1
Capture Event 1 Status Flag. This flag is only active in CAP mode.
0
Indicates no event occurred.
1
Indicates the first event occurred at ECAPx pin.
INT
Global Interrupt Status Flag
0
Indicates no interrupt generated.
1
Indicates that an interrupt was generated.
Figure 6-19. ECAP Interrupt Clear Register (ECCLR)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
CTR=CMP
CTR=PRD
CTROVF
CEVT4
CETV3
CETV2
CETV1
INT
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
440
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Capture Module - Control and Status Registers
www.ti.com
Table 6-11. ECAP Interrupt Clear Register (ECCLR) Field Descriptions
Bits
Field
Description
15:8
Reserved
Any writes to these bit(s) must always have a value of 0.
7
CTR=CMP
Counter Equal Compare Status Flag
6
5
4
3
2
1
0
0
Writing a 0 has no effect. Always reads back a 0
1
Writing a 1 clears the CTR=CMP flag condition
CTR=PRD
Counter Equal Period Status Flag
0
Writing a 0 has no effect. Always reads back a 0
1
Writing a 1 clears the CTR=PRD flag condition
CTROVF
Counter Overflow Status Flag
0
Writing a 0 has no effect. Always reads back a 0
1
Writing a 1 clears the CTROVF flag condition
CEVT4
Capture Event 4 Status Flag
0
Writing a 0 has no effect. Always reads back a 0.
1
Writing a 1 clears the CEVT4 flag condition.
CEVT3
Capture Event 3 Status Flag
0
Writing a 0 has no effect. Always reads back a 0.
1
Writing a 1 clears the CEVT3 flag condition.
CEVT2
Capture Event 2 Status Flag
1
Writing a 0 has no effect. Always reads back a 0.
0
Writing a 1 clears the CEVT2 flag condition.
CEVT1
Capture Event 1 Status Flag
0
Writing a 0 has no effect. Always reads back a 0.
1
Writing a 1 clears the CEVT1 flag condition.
INT
Global Interrupt Clear Flag
0
Writing a 0 has no effect. Always reads back a 0.
1
Writing a 1 clears the INT flag and enable further interrupts to be generated if any
of the event flags are set to 1.
Figure 6-20. ECAP Interrupt Forcing Register (ECFRC)
15
14
13
12
11
10
9
8
Reserved
R-0
7
6
5
4
3
2
1
0
CTR=CMP
CTR=PRD
CTROVF
CEVT4
CETV3
CETV2
CETV1
reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 6-12. ECAP Interrupt Forcing Register (ECFRC) Field Descriptions
Bits
Field
15:8
Reserved
7
CTR=CMP
6
Value
0
Description
Any writes to these bit(s) must always have a value of 0.
Force Counter Equal Compare Interrupt
0
No effect. Always reads back a 0.
1
Writing a 1 sets the CTR=CMP flag bit.
CTR=PRD
Force Counter Equal Period Interrupt
0
No effect. Always reads back a 0.
1
Writing a 1 sets the CTR=PRD flag bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module 441
Register Mapping
www.ti.com
Table 6-12. ECAP Interrupt Forcing Register (ECFRC) Field Descriptions (continued)
Bits
5
4
3
2
1
0
6.6
Field
Value
CTROVF
Description
Force Counter Overflow
0
No effect. Always reads back a 0.
1
Writing a 1 to this bit sets the CTROVF flag bit.
CEVT4
Force Capture Event 4
0
No effect. Always reads back a 0.
1
Writing a 1 sets the CEVT4 flag bit
CEVT3
Force Capture Event 3
0
No effect. Always reads back a 0.
1
Writing a 1 sets the CEVT3 flag bit
CEVT2
Force Capture Event 2
0
No effect. Always reads back a 0.
1
Writing a 1 sets the CEVT2 flag bit.
CEVT1
Force Capture Event 1
Reserved
1
No effect. Always reads back a 0.
0
Sets the CEVT1 flag bit.
0
Any writes to these bit(s) must always have a value of 0.
Register Mapping
Table 6-13 shows the eCAP module control and status register set.
Table 6-13. Control and Status Register Set
Name
Offset
Size (x16)
Description
Time Base Module Registers
6.7
TSCTR
0x0000
2
Time-Stamp Counter
CTRPHS
0x0002
2
Counter Phase Offset Value Register
CAP1
0x0004
2
Capture 1 Register
CAP2
0x0006
2
Capture 2 Register
CAP3
0x0008
2
Capture 3 Register
CAP4
0x000A
2
Capture 4 Register
reserved
0x000C - 0x0013
8
ECCTL1
0x0014
1
Capture Control Register 1
ECCTL2
0x0015
1
Capture Control Register 2
ECEINT
0x0016
1
Capture Interrupt Enable Register
ECFLG
0x0017
1
Capture Interrupt Flag Register
ECCLR
0x0018
1
Capture Interrupt Clear Register
ECFRC
0x0019
1
Capture Interrupt Force Register
Reserved
0x001A - 0x001F
6
Application of the ECAP Module
The following sections will provide Applications examples and code snippets to show how to configure and
operate the eCAP module. For clarity and ease of use, the examples use the eCAP “C” header files.
Below are useful #defines which will help in the understanding of the examples.
// ECCTL1 ( ECAP Control Reg 1)
//==========================
// CAPxPOL bits
// CTRRSTx bits
442
#define EC_RISING 0x0
#define EC_FALLING 0x1
#define EC_ABS_MODE 0x0 #define EC_DELTA_MODE 0x1
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the ECAP Module
www.ti.com
// PRESCALE bits
#define EC_BYPASS 0x0
// ECCTL2 ( ECAP Control Reg 2)
//==========================
// CONT/ONESHOT bit
// STOPVALUE bit
#define EC_EVENT1 0x0
// RE-ARM bit
// TSCTRSTOP bit
// SYNCO_SEL bit
#define EC_ARM 0x1
#define EC_FREEZE 0x0
#define EC_SYNCIN 0x0
#define
#define
#define
#define
#define
#define
EC_DIV1 0x0
EC_DIV2 0x1
EC_DIV4 0x2
EC_DIV6 0x3
EC_DIV8 0x4
EC_DIV10 0x5
#define
#define
#define
#define
EC_CONTINUOUS 0x0
EC_ONESHOT 0x1
EC_EVENT2 0x1 #define EC_EVENT3 0x2
EC_EVENT4 0x3
#define
#define
#define
// CAP/APWM mode bit #define EC_CAP_MODE 0x0 #define
// APWMPOL bit
#define EC_ACTV_HI 0x0 #define
// Generic
#define EC_DISABLE 0x0 #define
EC_RUN 0x1
EC_CTR_PRD 0x1
EC_SYNCO_DIS 0x2
EC_APWM_MODE 0x1
EC_ACTV_LO 0x1
EC_ENABLE 0x1 #define EC_FORCE 0x1
6.7.1 Example 1 - Absolute Time-Stamp Operation Rising Edge Trigger
Figure 6-21 shows an example of continuous capture operation (Mod4 counter wraps around). In this
figure, TSCTR counts-up without resetting and capture events are qualified on the rising edge only, this
gives period (and frequency) information.
On an event, the TSCTR contents (i.e., time-stamp) is first captured, then Mod4 counter is incremented to
the next state. When the TSCTR reaches FFFFFFFF (i.e. maximum value), it wraps around to 00000000
(not shown in Figure 6-21), if this occurs, the CTROVF (counter overflow) flag is set, and an interrupt (if
enabled) occurs, CTROVF (counter overflow) Flag is set, and an Interrupt (if enabled) occurs. Captured
Time-stamps are valid at the point indicated by the diagram, i.e. after the 4th event, hence event CEVT4
can conveniently be used to trigger an interrupt and the CPU can read data from the CAPx registers.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
443
Application of the ECAP Module
www.ti.com
Figure 6-21. Capture Sequence for Absolute Time-stamp and Rising Edge Detect
CEVT1
CEVT2
CEVT3
CEVT4
CEVT1
CAPx pin
t5
t4
FFFFFFFF
t3
t2
t1
CTR[0−31]
00000000
MOD4
CTR
CAP1
CAP2
0
1
2
XX
3
0
1
t5
t1
XX
t2
XX
CAP3
t3
XX
CAP4
t4
t
Polarity selection
Capture registers [1−4]
444
Enhanced Capture (eCAP) Module
All capture values valid
(can be read) at this time
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the ECAP Module
www.ti.com
6.7.1.1
Code snippet for CAP mode Absolute Time, Rising Edge Trigger
// Code snippet for CAP mode Absolute Time, Rising edge trigger
// Initialization Time
//=======================
// ECAP module 1 config ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
// Allow TSCTR to run
// Run Time (CEVT4 triggered ISR call)
//==========================================
TSt1 = ECap1Regs.CAP1;
// Fetch Time-Stamp captured at
// Fetch Time-Stamp captured at
// Fetch Time-Stamp captured at
// Fetch Time-Stamp captured at
// Calculate 1st period Period2
// Calculate 2nd period Period3
// Calculate 3rd period
t1 TSt2 = ECap1Regs.CAP2;
t2 TSt3 = ECap1Regs.CAP3;
t3 TSt4 = ECap1Regs.CAP4;
t4 Period1 = TSt2-TSt1;
= TSt3-TSt2;
= TSt4-TSt3;
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
445
Application of the ECAP Module
www.ti.com
6.7.2 Example 2 - Absolute Time-Stamp Operation Rising and Falling Edge Trigger
In Figure 6-22 the eCAP operating mode is almost the same as in the previous section except capture
events are qualified as either rising or falling edge, this now gives both period and duty cycle information,
i.e: Period1 = t3 – t1, Period2 = t5 – t3, …etc. Duty Cycle1 (on-time %) = (t2 – t1) / Period1 x 100%, etc. Duty
Cycle1 (off-time %) = (t3 – t2) / Period1 x 100%, etc.
Figure 6-22. Capture Sequence for Absolute Time-stamp With Rising and Falling Edge Detect
CEVT2
CEVT4
CEVT1
CEVT2
CEVT3
CEVT1
CEVT4
CEVT1
CEVT3
CAPx pin
FFFFFFFF
t6
t5
CTR[0−31]
t3
t9
t8
t7
t4
t2
t1
00000000
MOD4
CTR
CAP1
CAP2
CAP3
0
1
2
XX
3
0
1
t1
XX
0
t6
t3
XX
CAP4
3
t5
t2
XX
2
t7
t4
t8
tt
Polarity selection
Capture registers [1−4]
446
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the ECAP Module
www.ti.com
6.7.2.1
Code snippet for CAP mode Absolute Time, Rising & Falling Edge Triggers
// Code snippet for CAP mode Absolute Time, Rising and Falling
// edge triggers // Initialization Time
//=======================
// ECAP module 1 config ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
// Allow TSCTR to run
// Run Time (CEVT4 triggered ISR call)
//==========================================
TSt1 = ECap1Regs.CAP1;
// Fetch Time-Stamp captured at t1 TSt2 = ECap1Regs.CAP2;
// Fetch Time-Stamp captured at t2 TSt3 = ECap1Regs.CAP3;
// Fetch Time-Stamp captured at t3 TSt4 = ECap1Regs.CAP4;
// Fetch Time-Stamp captured at t4 Period1 = TSt3-TSt1;
// Calculate 1st period DutyOnTime1 = TSt2-TSt1;
// Calculate On time DutyOffTime1 = TSt3-TSt2;
// Calculate Off time
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
447
Application of the ECAP Module
www.ti.com
6.7.3 Example 3 - Time Difference (Delta) Operation Rising Edge Trigger
This example Figure 6-23 shows how the eCAP module can be used to collect Delta timing data from
pulse train waveforms. Here Continuous Capture mode (TSCTR counts-up without resetting, and Mod4
counter wraps around) is used. In Delta-time mode, TSCTR is Reset back to Zero on every valid event.
Here Capture events are qualified as Rising edge only. On an event, TSCTR contents (that is, TimeStamp) is captured first, and then TSCTR is reset to Zero. The Mod4 counter then increments to the next
state. If TSCTR reaches FFFFFFFF (i.e. Max value), before the next event, it wraps around to 00000000
and continues, a CNTOVF (counter overflow) Flag is set, and an Interrupt (if enabled) occurs. The
advantage of Delta-time Mode is that the CAPx contents directly give timing data without the need for
CPU calculations, i.e. Period1 = T1, Period2 = T2,…etc. As shown in the diagram, the CEVT1 event is a
good trigger point to read the timing data, T1, T2, T3, T4 are all valid here.
Figure 6-23. Capture Sequence for Delta Mode Time-stamp and Rising Edge Detect
CEVT1
CEVT3
CEVT2
CEVT4
CEVT1
CAPx pin
T1
FFFFFFFF
T3
T2
T4
CTR[0−31]
00000000
MOD4
CTR
CAP1
CAP2
0
1
2
XX
3
0
1
CTR value at CEVT1
t4
XX
t1
XX
CAP3
t2
XX
CAP4
t3
t
Polarity selection
Capture registers [1−4]
448
Enhanced Capture (eCAP) Module
All capture values valid
(can be read) at this time
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the ECAP Module
www.ti.com
6.7.3.1
Code Snippet for CAP mode Delta Time, Rising Edge Trigger
// Code snippet for CAP mode Delta Time, Rising edge trigger
// Initialization Time
//=======================
// ECAP module 1 config ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CTRRST1 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST2 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST3 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST4 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
// Allow TSCTR to run
// Run Time (CEVT1 triggered ISR call)
//==========================================
// Note: here Time-stamp directly represents
// Fetch Time-Stamp captured at T1 Period1 =
// Fetch Time-Stamp captured at T2 Period2 =
// Fetch Time-Stamp captured at T3 Period3 =
// Fetch Time-Stamp captured at T4
the Period value. Period4 = ECap1Regs.CAP1;
ECap1Regs.CAP2;
ECap1Regs.CAP3;
ECap1Regs.CAP4;
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
449
Application of the ECAP Module
www.ti.com
6.7.4 Example 4 - Time Difference (Delta) Operation Rising and Falling Edge Trigger
In Figure 6-24 the eCAP operating mode is almost the same as in previous section except Capture events
are qualified as either Rising or Falling edge, this now gives both Period and Duty cycle information, i.e:
Period1 = T1+T2, Period2 = T3+T4, …etc Duty Cycle1 (on-time %) = T1 / Period1 x 100%, etc Duty Cycle1
(off-time %) = T2 / Period1 x 100%, etc
Figure 6-24. Capture Sequence for Delta Mode Time-stamp With Rising and Falling Edge Detect
CEVT4
CEVT2
CEVT2
CEVT3
CEVT1
CEVT4
CEVT5
CEVT3
CEVT1
CAPx pin
T1
FFFFFFFF
T3
T5
T8
T2
T6
T4
T7
CTR[0−31]
00000000
MOD4
CTR
CAP1
CAP2
CAP3
0
1
XX
2
3
0
1
2
t5
t1
XX
CAP4
t2
XX
0
t4
CTR value at CEVT1
XX
3
t6
t3
t7
t
Polarity selection
Capture registers [1−4]
During initialization, you must write to the active registers for both period and compare. This will then
automatically copy the init values into the shadow values. For subsequent compare updates, i.e. during
run-time, only the shadow registers must be used.
450
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the ECAP Module
www.ti.com
6.7.4.1
Code snippet for CAP mode Delta Time, Rising and Falling Edge Triggers
// Code snippet for CAP mode Delta Time, Rising and Falling
// edge triggers
// Initialization Time
//=======================
// ECAP module 1 config ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CTRRST1 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST2 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST3 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CTRRST4 = EC_DELTA_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
// Allow TSCTR to run
// Run Time (CEVT1 triggered ISR call)
//==========================================
//
Note: here Time-stamp directly represents the Duty cycle values. DutyOnTime1 = ECap1Regs.CAP2;
// Fetch Time-Stamp captured at T2 DutyOffTime1 = ECap1Regs.CAP3;
// Fetch Time-Stamp captured at T3 DutyOnTime2 = ECap1Regs.CAP4;
// Fetch Time-Stamp captured at T4 DutyOffTime2 = ECap1Regs.CAP1;
// Fetch TimeStamp captured at T1 Period1 = DutyOnTime1 + DutyOffTime1; Period2 = DutyOnTime2 + DutyOffTime2;
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
451
Application of the APWM Mode
6.8
www.ti.com
Application of the APWM Mode
In this example, the eCAP module is configured to operate as a PWM generator. Here a very simple
single channel PWM waveform is generated from output pin APWMx. The PWM polarity is active high,
which means that the compare value (CAP2 reg is now a compare register) represents the on-time (high
level) of the period. Alternatively, if the APWMPOL bit is configured for active low, then the compare value
represents the off-time. Note here values are in hexadecimal (“h”) notation.
6.8.1 Example 1 - Simple PWM Generation (Independent Channel/s)
Figure 6-25. PWM Waveform Details of APWM Mode Operation
TSCTR
FFFFFFFF
APRD
1000h
500h
ACMP
300h
0000000C
APWMx
(o/p pin)
Off−time
On
time
Period
Example 6-1. COh,ode Snippet for APWM Mode
// Code snippet for APWM mode Example 1
// Initialization Time
//=======================
// ECAP module 1 config ECap1Regs.CAP1 = 0x1000;
// Set period value ECap1Regs.CTRPHS = 0x0;
// make phase zero ECap1Regs.ECCTL2.bit.CAP_APWM = EC_APWM_MODE;
// Active high ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
// Synch not used ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
// Synch not used ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
// Allow TSCTR to run
// Run Time (Instant 1, e.g. ISR call)
//======================
ECap1Regs.CAP2 = 0x300;
// Set Duty cycle i.e. compare value
452
Enhanced Capture (eCAP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Application of the APWM Mode
www.ti.com
Example 6-1. COh,ode Snippet for APWM Mode (continued)
// Run Time (Instant 2, e.g. another ISR call)
//======================
ECap1Regs.CAP2 = 0x500;
// Set Duty cycle i.e. compare value
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced Capture (eCAP) Module
453
Chapter 7
SPRUH18G – January 2011 – Revised April 2017
Enhanced QEP (eQEP) Module
The eQEP module described here is a Type 0 eQEP. See the TMS320x28xx, 28xxx DSP Peripheral
Reference Guide (SPRU566) for a list of all devices with a module of the same type to determine the
differences between types and for a list of device-specific differences within a type.
The enhanced quadrature encoder pulse (eQEP) module is used for direct interface with a linear or rotary
incremental encoder to get position, direction, and speed information from a rotating machine for use in a
high-performance motion and position-control system.
454
Topic
...........................................................................................................................
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
Introduction .....................................................................................................
Description ......................................................................................................
Quadrature Decoder Unit (QDU) .........................................................................
Position Counter and Control Unit (PCCU) ..........................................................
eQEP Edge Capture Unit ...................................................................................
eQEP Watchdog ...............................................................................................
Unit Timer Base................................................................................................
eQEP Interrupt Structure ...................................................................................
eQEP Registers ................................................................................................
Enhanced QEP (eQEP) Module
Page
455
457
460
463
469
473
473
474
474
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
7.1
Introduction
A single track of slots patterns the periphery of an incremental encoder disk, as shown in Figure 7-1.
These slots create an alternating pattern of dark and light lines. The disk count is defined as the number
of dark/light line pairs that occur per revolution (lines per revolution). As a rule, a second track is added to
generate a signal that occurs once per revolution (index signal: QEPI), which can be used to indicate an
absolute position. Encoder manufacturers identify the index pulse using different terms such as index,
marker, home position, and zero reference
Figure 7-1. Optical Encoder Disk
QEPA
QEPB
QEPI
To derive direction information, the lines on the disk are read out by two different photo-elements that
"look" at the disk pattern with a mechanical shift of 1/4 the pitch of a line pair between them. This shift is
realized with a reticle or mask that restricts the view of the photo-element to the desired part of the disk
lines. As the disk rotates, the two photo-elements generate signals that are shifted 90° out of phase from
each other. These are commonly called the quadrature QEPA and QEPB signals. The clockwise direction
for most encoders is defined as the QEPA channel going positive before the QEPB channel and vise
versa as shown in Figure 7-2.
Figure 7-2. QEP Encoder Output Signal for Forward/Reverse Movement
T0
Clockwise shaft rotation/forward movement
0
1
2
3
4
5
6
7
N−6 N−5 N−4 N−3 N−2 N−1
0
QEPA
QEPB
QEPI
T0
Anti-clockwise shaft rotation/reverse movement
0
N−1 N−2 N−3 N−4 N−5 N−6 N−7
6
5
4
3
2
1
0
N−1 N−2
QEPA
QEPB
QEPI
Legend: N = lines per revolution
The encoder wheel typically makes one revolution for every revolution of the motor or the wheel may be at
a geared rotation ratio with respect to the motor. Therefore, the frequency of the digital signal coming from
the QEPA and QEPB outputs varies proportionally with the velocity of the motor. For example, a 2000-line
encoder directly coupled to a motor running at 5000 revolutions per minute (rpm) results in a frequency of
166.6 KHz, so by measuring the frequency of either the QEPA or QEPB output, the processor can
determine the velocity of the motor.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
455
Introduction
www.ti.com
Quadrature encoders from different manufacturers come with two forms of index pulse (gated index pulse
or ungated index pulse) as shown in Figure 7-3. A nonstandard form of index pulse is ungated. In the
ungated configuration, the index edges are not necessarily coincident with A and B signals. The gated
index pulse is aligned to any of the four quadrature edges and width of the index pulse and can be equal
to a quarter, half, or full period of the quadrature signal.
Figure 7-3. Index Pulse Example
T0
QEPA
QEPB
0.25T0 ±0.1T0
QEPI
(gated to
A and B)
0.5T0 ±0.1T0
QEPI
(gated to A)
T0 ±0.5T0
QEPI
(ungated)
Some typical applications of shaft encoders include robotics and even computer input in the form of a
mouse. Inside your mouse you can see where the mouse ball spins a pair of axles (a left/right, and an
up/down axle). These axles are connected to optical shaft encoders that effectively tell the computer how
fast and in what direction the mouse is moving.
General Issues: Estimating velocity from a digital position sensor is a cost-effective strategy in motor
control. Two different first order approximations for velocity may be written as:
x(k) * x(k * 1)
v(k) [
+ DX
T
T
X
X
v(k) [
+
t(k) * t(k * 1)
DT
(1)
(2)
where
v(k): Velocity at time instant k
x(k): Position at time instant k
x(k-1): Position at time instant k-1
T: Fixed unit time or inverse of velocity calculation rate
ΔX: Incremental position movement in unit time
t(k): Time instant "k"
t(k-1): Time instant "k-1"
X: Fixed unit position
ΔT: Incremental time elapsed for unit position movement.
Equation 1 is the conventional approach to velocity estimation and it requires a time base to provide unit
time event for velocity calculation. Unit time is basically the inverse of the velocity calculation rate.
456
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Description
www.ti.com
The encoder count (position) is read once during each unit time event. The quantity [x(k) - x(k-1)] is
formed by subtracting the previous reading from the current reading. Then the velocity estimate is
computed by multiplying by the known constant 1/T (where T is the constant time between unit time
events and is known in advance).
Estimation based on Equation 1 has an inherent accuracy limit directly related to the resolution of the
position sensor and the unit time period T. For example, consider a 500-line per revolution quadrature
encoder with a velocity calculation rate of 400 Hz. When used for position the quadrature encoder gives a
four-fold increase in resolution, in this case, 2000 counts per revolution. The minimum rotation that can be
detected is therefore 0.0005 revolutions, which gives a velocity resolution of 12 rpm when sampled at 400
Hz. While this resolution may be satisfactory at moderate or high speeds, e.g. 1% error at 1200 rpm, it
would clearly prove inadequate at low speeds. In fact, at speeds below 12 rpm, the speed estimate would
erroneously be zero much of the time.
At low speed, Equation 2 provides a more accurate approach. It requires a position sensor that outputs a
fixed interval pulse train, such as the aforementioned quadrature encoder. The width of each pulse is
defined by motor speed for a given sensor resolution. Equation 2 can be used to calculate motor speed by
measuring the elapsed time between successive quadrature pulse edges. However, this method suffers
from the opposite limitation, as does Equation 1. A combination of relatively large motor speeds and high
sensor resolution makes the time interval ΔT small, and thus more greatly influenced by the timer
resolution. This can introduce considerable error into high-speed estimates.
For systems with a large speed range (that is, speed estimation is needed at both low and high speeds),
one approach is to use Equation 2 at low speed and have the DSP software switch over to Equation 1
when the motor speed rises above some specified threshold.
7.2
Description
This section provides the eQEP inputs, memory map, and functional description.
7.2.1 EQEP Inputs
The eQEP inputs include two pins for quadrature-clock mode or direction-count mode, an index (or 0
marker), and a strobe input. The eQEP module requires that the QEPA, QEPB, and QEPI inputs are
synchronized to SYSCLK prior to entering the module. The application code should enable the
synchronous GPIO input feature on any eQEP-enabled GPIO pins (See the System Control and Interrupts
user guide for your device for more details).
• QEPA/XCLK and QEPB/XDIR
These two pins can be used in quadrature-clock mode or direction-count mode.
– Quadrature-clock Mode
The eQEP encoders provide two square wave signals (A and B) 90 electrical degrees out of phase
whose phase relationship is used to determine the direction of rotation of the input shaft and
number of eQEP pulses from the index position to derive the relative position information. For
forward or clockwise rotation, QEPA signal leads QEPB signal and vice versa. The quadrature
decoder uses these two inputs to generate quadrature-clock and direction signals.
– Direction-count Mode
In direction-count mode, direction and clock signals are provided directly from the external source.
Some position encoders have this type of output instead of quadrature output. The QEPA pin
provides the clock input and the QEPB pin provides the direction input.
• eQEPI: Index or Zero Marker
The eQEP encoder uses an index signal to assign an absolute start position from which position
information is incrementally encoded using quadrature pulses. This pin is connected to the index
output of the eQEP encoder to optionally reset the position counter for each revolution. This signal can
be used to initialize or latch the position counter on the occurrence of a desired event on the index pin.
• QEPS: Strobe Input
This general-purpose strobe signal can initialize or latch the position counter on the occurrence of a
desired event on the strobe pin. This signal is typically connected to a sensor or limit switch to notify
that the motor has reached a defined position.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
457
Description
www.ti.com
7.2.2 Functional Description
The eQEP peripheral contains the following major functional units (as shown in Figure 7-4):
• Programmable input qualification for each pin (part of the GPIO MUX)
• Quadrature decoder unit (QDU)
• Position counter and control unit for position measurement (PCCU)
• Quadrature edge-capture unit for low-speed measurement (QCAP)
• Unit time base for speed/frequency measurement (UTIME)
• Watchdog timer for detecting stalls (QWDOG)
Figure 7-4. Functional Block Diagram of the eQEP Peripheral
System
control registers
To CPU
EQEPxENCLK
Data bus
SYSCLKOUT
QCPRD
QCTMR
QCAPCTL
16
16
16
Quadrature
capture unit
(QCAP)
QCTMRLAT
QCPRDLAT
QWDTMR
QWDPRD
QUTMR
QUPRD
Registers
used by
multiple units
32
QEPCTL
QEPSTS
QFLG
UTIME
16
UTOUT
QWDOG
QDECCTL
16
WDTOUT
PIE
QCLK
QDIR
QI
QS
PHE
EQEPxINT
32
Position counter/
control unit
(PCCU)
QPOSLAT
QPOSSLAT
QPOSILAT
Quadrature
decoder
(QDU)
PCSOUT
32
QPOSCNT
QPOSINIT
QPOSMAX
32
EQEPxAIN
EQEPxBIN
EQEPxIIN
EQEPxIOUT
EQEPxIOE
EQEPxSIN
EQEPxSOUT
EQEPxSOE
EQEPxA/XCLK
EQEPxB/XDIR
GPIO
MUX
EQEPxI
EQEPxS
16
QPOSCMP
QEINT
QFRC
QCLR
QPOSCTL
Enhanced QEP (eQEP) peripheral
7.2.3 eQEP Memory Map
Table 7-1 lists the registers with their memory locations, sizes, and reset values.
Table 7-1. EQEP Memory Map
Offset
Size(x16)/
#shadow
Reset
Register Description
QPOSCNT
0x00
2/0
0x00000000
eQEP Position Counter
QPOSINIT
0x02
2/0
0x00000000
eQEP Initialization Position Count
QPOSMAX
0x04
2/0
0x00000000
eQEP Maximum Position Count
QPOSCMP
0x06
2/1
0x00000000
eQEP Position-compare
QPOSILAT
0x08
2/0
0x00000000
eQEP Index Position Latch
Name
458 Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Description
www.ti.com
Table 7-1. EQEP Memory Map (continued)
Offset
Size(x16)/
#shadow
Reset
QPOSSLAT
0x0A
2/0
0x00000000
eQEP Strobe Position Latch
QPOSLAT
0x0C
2/0
0x00000000
eQEP Position Latch
QUTMR
0x0E
2/0
0x00000000
QEP Unit Timer
QUPRD
0x10
2/0
0x00000000
eQEP Unit Period Register
QWDTMR
0x12
1/0
0x0000
eQEP Watchdog Timer
QWDPRD
0x13
1/0
0x0000
eQEP Watchdog Period Register
QDECCTL
0x14
1/0
0x0000
eQEP Decoder Control Register
QEPCTL
0x15
1/0
0x0000
eQEP Control Register
QCAPCTL
0x16
1/0
0x0000
eQEP Capture Control Register
QPOSCTL
0x17
1/0
0x00000
eQEP Position-compare Control Register
QEINT
0x18
1/0
0x0000
eQEP Interrupt Enable Register
QFLG
0x19
1/0
0x0000
eQEP Interrupt Flag Register
QCLR
0x1A
1/0
0x0000
eQEP Interrupt Clear Register
QFRC
0x1B
1/0
0x0000
eQEP Interrupt Force Register
QEPSTS
0x1C
1/0
0x0000
eQEP Status Register
QCTMR
0x1D
1/0
0x0000
eQEP Capture Timer
QCPRD
0x1E
1/0
0x0000
eQEP Capture Period Register
QCTMRLAT
0x1F
1/0
0x0000
eQEP Capture Timer Latch
QCPRDLAT
0x20
1/0
0x0000
eQEP Capture Period Latch
reserved
0x21
to
0x3F
31/0
Name
Register Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
459
Quadrature Decoder Unit (QDU)
7.3
www.ti.com
Quadrature Decoder Unit (QDU)
Figure 7-5 shows a functional block diagram of the QDU.
Figure 7-5. Functional Block Diagram of Decoder Unit
QFLG:PHE
QEPSTS:QDF
QDECCTL:SWAP
QDECCTL:QAP
PHE
00
01
QCLK
10
11
iCLK
xCLK
xCLK
xCLK
QA
QDIR
10
11
EQEPxAIN
0
1
1
Quadrature
decoder
EQEPB
QB
00
01
0
EQEPA
EQEPxBIN
0
0
1
iDIR
xDIR
1
QDECCTL:QBP
1
0
x1
x2
x1, x2
2
QDECCTL:XCR
QDECCTL:QSRC
QDECCTL:QIP
EQEPxIIN
0
0
QI
1
1
QDECCTL:IGATE
EQEPxSIN
0
QS
1
QDECCTL:QSP
QDECCTL:SPSEL
EQEPxIOUT
0
PCSOUT
EQEPxSOUT
1
QDECCTL:SPSEL
EQEPxIOE
0
QDECCTL:SOEN
EQEPxSOE
1
7.3.1 Position Counter Input Modes
Clock and direction input to position counter is selected using QDECCTL[QSRC] bits, based on interface
input requirement as follows:
• Quadrature-count mode
• Direction-count mode
• UP-count mode
• DOWN-count mode
460
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Quadrature Decoder Unit (QDU)
www.ti.com
7.3.1.1
Quadrature Count Mode
The quadrature decoder generates the direction and clock to the position counter in quadrature count
mode.
Direction Decoding— The direction decoding logic of the eQEP circuit determines which one of the
sequences (QEPA, QEPB) is the leading sequence and accordingly updates the direction
information in QEPSTS[QDF] bit. Table 7-2 and Figure 7-6 show the direction decoding logic in
truth table and state machine form. Both edges of the QEPA and QEPB signals are sensed to
generate count pulses for the position counter. Therefore, the frequency of the clock generated by
the eQEP logic is four times that of each input sequence. Figure 7-7 shows the direction decoding
and clock generation from the eQEP input signals.
Table 7-2. Quadrature Decoder Truth Table
.
Previous Edge
Present Edge
QDIR
QPOSCNT
QA↑
QB↑
UP
Increment
QB↓
DOWN
Decrement
QA↓
TOGGLE
QB↓
UP
Increment
QB↑
DOWN
Decrement
QA↑
TOGGLE
QA↑
DOWN
Increment
QA↓
UP
Decrement
QB↓
TOGGLE
QA↓
DOWN
Increment
QA↑
UP
Decrement
QB↑
TOGGLE
QA↓
QB↑
QB↓
Increment or Decrement
Increment or Decrement
Increment or Decrement
Increment or Decrement
Figure 7-6. Quadrature Decoder State Machine
(A,B)=
(00)
Increment
counter
(11)
(10)
Increment
counter
10
(01)
Decrement
counter
QEPA
Decrement
counter
00
QEPB
11
Decrement
counter
Decrement
counter
01
eQEP signals
Increment
counter
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Increment
counter
Enhanced QEP (eQEP) Module
461
Quadrature Decoder Unit (QDU)
www.ti.com
Figure 7-7. Quadrature-clock and Direction Decoding
QA
QB
QCLK
QDIR
QPOSCNT
+1 +1 +1 +1 +1 +1
+1
−1 −1 −1 −1 −1 −1 −1 −1 −1 −1
−1
+1 +1 +1
−1 −1 −1 −1 −1 −1
−1
+1 +1 +1 +1 +1 +1 +1 +1 +1 +1
+1
−1 −1 −1
QA
QB
QCLK
QDIR
QPOSCNT
Phase Error Flag— In normal operating conditions, quadrature inputs QEPA and QEPB will be 90
degrees out of phase. The phase error flag (PHE) is set in the QFLG register when edge transition
is detected simultaneously on the QEPA and QEPB signals to optionally generate interrupts. State
transitions marked by dashed lines in Figure 7-6 are invalid transitions that generate a phase error.
Count Multiplication— The eQEP position counter provides 4x times the resolution of an input clock by
generating a quadrature-clock (QCLK) on the rising/falling edges of both eQEP input clocks (QEPA
and QEPB) as shown in Figure 7-7¤.
Reverse Count— In normal quadrature count operation, QEPA input is fed to the QA input of the
quadrature decoder and the QEPB input is fed to the QB input of the quadrature decoder. Reverse
counting is enabled by setting the SWAP bit in the QDECCTL register. This will swap the input to
the quadrature decoder thereby reversing the counting direction.
7.3.1.2
Direction-count Mode
Some position encoders provide direction and clock outputs, instead of quadrature outputs. In such cases,
direction-count mode can be used. QEPA input will provide the clock for position counter and the QEPB
input will have the direction information. The position counter is incremented on every rising edge of a
QEPA input when the direction input is high and decremented when the direction input is low.
7.3.1.3
Up-Count Mode
The counter direction signal is hard-wired for up count and the position counter is used to measure the
frequency of the QEPA input. Clearing of the QDECCTL[XCR] bit enables clock generation to the position
counter on both edges of the QEPA input, thereby increasing the measurement resolution by 2x factor.
462
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Quadrature Decoder Unit (QDU)
www.ti.com
7.3.1.4
Down-Count Mode
The counter direction signal is hardwired for a down count and the position counter is used to measure the
frequency of the QEPA input. Clearing of the QDECCTL[XCR] bit enables clock generation to the position
counter on both edges of a QEPA input, thereby increasing the measurement resolution by 2x factor.
7.3.2 eQEP Input Polarity Selection
Each eQEP input can be inverted using QDECCTL[8:5] control bits. As an example, setting of
QDECCTL[QIP] bit will invert the index input.
7.3.3 Position-Compare Sync Output
The enhanced eQEP peripheral includes a position-compare unit that is used to generate the positioncompare sync signal on compare match between the position counter register (QPOSCNT) and the
position-compare register (QPOSCMP). This sync signal can be output using an index pin or strobe pin of
the EQEP peripheral.
Setting the QDECCTL[SOEN] bit enables the position-compare sync output and the QDECCTL[SPSEL] bit
selects either an eQEP index pin or an eQEP strobe pin.
7.4
Position Counter and Control Unit (PCCU)
The position counter and control unit provides two configuration registers (QEPCTL and QPOSCTL) for
setting up position counter operational modes, position counter initialization/latch modes and positioncompare logic for sync signal generation.
7.4.1 Position Counter Operating Modes
Position counter data may be captured in different manners. In some systems, the position counter is
accumulated continuously for multiple revolutions and the position counter value provides the position
information with respect to the known reference. An example of this is the quadrature encoder mounted on
the motor controlling the print head in the printer. Here the position counter is reset by moving the print
head to the home position and then position counter provides absolute position information with respect to
home position.
In other systems, the position counter is reset on every revolution using index pulse and position counter
provides rotor angle with respect to index pulse position.
Position counter can be configured to operate in following four modes
• Position Counter Reset on Index Event
• Position Counter Reset on Maximum Position
• Position Counter Reset on the first Index Event
• Position Counter Reset on Unit Time Out Event (Frequency Measurement)
In all the above operating modes, position counter is reset to 0 on overflow and to QPOSMAX register
value on underflow. Overflow occurs when the position counter counts up after QPOSMAX value.
Underflow occurs when position counter counts down after "0". Interrupt flag is set to indicate
overflow/underflow in QFLG register.
7.4.1.1
Position Counter Reset on Index Event (QEPCTL[PCRM]=00)
If the index event occurs during the forward movement, then position counter is reset to 0 on the next
eQEP clock. If the index event occurs during the reverse movement, then the position counter is reset to
the value in the QPOSMAX register on the next eQEP clock.
First index marker is defined as the quadrature edge following the first index edge. The eQEP peripheral
records the occurrence of the first index marker (QEPSTS[FIMF]) and direction on the first index event
marker (QEPSTS[FIDF]) in QEPSTS registers, it also remembers the quadrature edge on the first index
marker so that same relative quadrature transition is used for index event reset operation.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
463
Position Counter and Control Unit (PCCU)
www.ti.com
For example, if the first reset operation occurs on the falling edge of QEPB during the forward direction,
then all the subsequent reset must be aligned with the falling edge of QEPB for the forward rotation and
on the rising edge of QEPB for the reverse rotation as shown in Figure 7-8.
The position-counter value is latched to the QPOSILAT register and direction information is recorded in
the QEPSTS[QDLF] bit on every index event marker. The position-counter error flag (QEPSTS[PCEF])
and error interrupt flag (QFLG[PCE]) are set if the latched value is not equal to 0 or QPOSMAX. The
position-counter error flag (QEPSTS[PCEF]) is updated on every index event marker and an interrupt flag
(QFLG[PCE]) will be set on error that can be cleared only through software.
The index event latch configuration QEPCTL[IEL] bits are ignored in this mode and position counter error
flag/interrupt flag are generated only in index event reset mode.
Figure 7-8. Position Counter Reset by Index Pulse for 1000 Line Encoder (QPOSMAX = 3999 or 0xF9F)
QA
QB
QI
QCLK
QEPSTS:QDF
F9F
F9D
QPOSCNT F9C
Index interrupt/
index event
marker
F9F
0
1
2
3
4
5
4
3
2
1
F9E
F9E
QPOSILAT
F9D
F9B
F99
F97
0
F9F
F9C
F9A
F98
0
QEPSTS:QDLF
7.4.1.2
Position Counter Reset on Maximum Position (QEPCTL[PCRM]=01)
If the position counter is equal to QPOSMAX, then the position counter is reset to 0 on the next eQEP
clock for forward movement and position counter overflow flag is set. If the position counter is equal to
ZERO, then the position counter is reset to QPOSMAX on the next QEP clock for reverse movement and
position counter underflow flag is set. Figure 7-9 shows the position counter reset operation in this mode.
First index marker is defined as the quadrature edge following the first index edge. The eQEP peripheral
records the occurrence of the first index marker (QEPSTS[FIMF]) and direction on the first index event
marker (QEPSTS[FIDF]) in the QEPSTS registers; it also remembers the quadrature edge on the first
index marker so that the same relative quadrature transition is used for the software index marker
(QEPCTL[IEL]=11).
464
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Position Counter and Control Unit (PCCU)
www.ti.com
Figure 7-9. Position Counter Underflow/Overflow (QPOSMAX = 4)
QA
QB
QCLK
QDIR
QPOSCNT
1
2
3
4
0
1
2
1
0
4
3
2
1
0
4
3
2
1
2
3
4
1
0
4
3
2
1
0
1
2
3
4
0
1
2
3
4
0
1
0
4
3
0
OV/UF
QA
QB
QCLK
QDIR
QPOSCNT
OV/UF
7.4.1.3
Position Counter Reset on the First Index Event (QEPCTL[PCRM] = 10)
If the index event occurs during forward movement, then the position counter is reset to 0 on the next
eQEP clock. If the index event occurs during the reverse movement, then the position counter is reset to
the value in the QPOSMAX register on the next eQEP clock. Note that this is done only on the first
occurrence and subsequently the position counter value is not reset on an index event; rather, it is reset
based on maximum position as described in Section Section 7.4.1.2.
7.4.1.4
Position Counter Reset on Unit Time out Event (QEPCTL[PCRM] = 11)
In this mode, the QPOSCNT value is latched to the QPOSLAT register and then the QPOSCNT is reset
(to 0 or QPOSMAX, depending on the direction mode selected by QDECCTL[QSRC] bits on a unit time
event). This is useful for frequency measurement.
7.4.2 Position Counter Latch
The eQEP index and strobe input can be configured to latch the position counter (QPOSCNT) into
QPOSILAT and QPOSSLAT, respectively, on occurrence of a definite event on these pins.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
465
Position Counter and Control Unit (PCCU)
7.4.2.1
www.ti.com
Index Event Latch
In some applications, it may not be desirable to reset the position counter on every index event and
instead it may be required to operate the position counter in full 32-bit mode (QEPCTL[PCRM] = 01 and
QEPCTL[PCRM] = 10 modes).
In such cases, the eQEP position counter can be configured to latch on the following events and direction
information is recorded in the QEPSTS[QDLF] bit on every index event marker.
• Latch on Rising edge (QEPCTL[IEL]=01)
• Latch on Falling edge (QEPCTL[IEL]=10)
• Latch on Index Event Marker (QEPCTL[IEL]=11)
This is particularly useful as an error checking mechanism to check if the position counter accumulated
the correct number of counts between index events. As an example, the 1000-line encoder must count
4000 times when moving in the same direction between the index events.
The index event latch interrupt flag (QFLG[IEL]) is set when the position counter is latched to the
QPOSILAT register.
Latch on Rising Edge (QEPCTL[IEL]=01)— The position counter value (QPOSCNT) is latched to the
QPOSILAT register on every rising edge of an index input.
Latch on Falling Edge (QEPCTL[IEL] = 10)— The position counter value (QPOSCNT) is latched to the
QPOSILAT register on every falling edge of index input.
Latch on Index Event Marker/Software Index Marker (QEPCTL[IEL] = 11— The first index marker is
defined as the quadrature edge following the first index edge. The eQEP peripheral records the
occurrence of the first index marker (QEPSTS[FIMF]) and direction on the first index event marker
(QEPSTS[FIDF]) in the QEPSTS registers. It also remembers the quadrature edge on the first
index marker so that same relative quadrature transition is used for latching the position counter
(QEPCTL[IEL]=11).
Figure 7-10 shows the position counter latch using an index event marker.
Figure 7-10. Software Index Marker for 1000-line Encoder (QEPCTL[IEL] = 1)
QA
QB
QI
QCLK
QEPSTS:QDF
F9D
F9F
FA1
FA3
FA4
QPOSCNT F9C
FA2
FA0
F9E
F9C
F9A
F98
FA5
F9E
FA0
FA2
FA4
F97
FA3
FA1
F9F
F9D
F9B
F99
Index interrupt/
index event
marker
QPOSILAT
F9F
0
QEPSTS:QDLF
466
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Position Counter and Control Unit (PCCU)
www.ti.com
7.4.2.2
Strobe Event Latch
The position-counter value is latched to the QPOSSLAT register on the rising edge of the strobe input by
clearing the QEPCTL[SEL] bit.
If the QEPCTL[SEL] bit is set, then the position counter value is latched to the QPOSSLAT register on the
rising edge of the strobe input for forward direction and on the falling edge of the strobe input for reverse
direction as shown in Figure 7-11.
The strobe event latch interrupt flag (QFLG[SEL) is set when the position counter is latched to the
QPOSSLAT register.
Figure 7-11. Strobe Event Latch (QEPCTL[SEL] = 1)
QA
QB
QS
QCLK
QEPST:QDF
F9D
F9F
FA1
FA3
FA4
QPOSCNT F9C
FA2
FA0
F9E
F9C
F9A
F98
FA5
F9E
FA0
FA2
QIPOSSLAT
FA4
F97
FA3
FA1
F9F
F9F
F9D
F9B
F99
F9F
7.4.3 Position Counter Initialization
The position counter can be initialized using following events:
• Index event
• Strobe event
• Software initialization
Index Event Initialization (IEI)— The QEPI index input can be used to trigger the initialization of the
position counter at the rising or falling edge of the index input. If the QEPCTL[IEI] bits are 10, then
the position counter (QPOSCNT) is initialized with a value in the QPOSINIT register on the rising
edge of index input. Conversely, if the QEPCTL[IEI] bits are 11, initialization will be on the falling
edge of the index input.
Strobe Event Initialization (SEI)— If the QEPCTL[SEI] bits are 10, then the position counter is initialized
with a value in the QPOSINIT register on the rising edge of strobe input.
If QEPCTL[SEL] bits are 11, then the position counter is initialized with a value in the QPOSINIT
register on the rising edge of strobe input for forward direction and on the falling edge of strobe
input for reverse direction.
Software Initialization (SWI)— The position counter can be initialized in software by writing a 1 to the
QEPCTL[SWI] bit. This bit is not automatically cleared. While the bit is still set, if a 1 is written to it
again, the position counter will be re-initialized.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
467
Position Counter and Control Unit (PCCU)
www.ti.com
7.4.4 eQEP Position-compare Unit
The eQEP peripheral includes a position-compare unit that is used to generate a sync output and/or
interrupt on a position-compare match. Figure 7-12 shows a diagram. The position-compare (QPOSCMP)
register is shadowed and shadow mode can be enabled or disabled using the QPOSCTL[PSSHDW] bit. If
the shadow mode is not enabled, the CPU writes directly to the active position compare register.
Figure 7-12. eQEP Position-compare Unit
QPOSCTL:PCSHDW
QPOSCTL:PCLOAD
QFLG:PCR
QPOSCMP
QFLG:PCM
QPOSCTL:PCSPW
QPOSCTL:PCPOL
8
32
PCEVENT
Pulse
stretcher
0
32
PCSOUT
1
QPOSCNT
In shadow mode, you can configure the position-compare unit (QPOSCTL[PCLOAD]) to load the shadow
register value into the active register on the following events and to generate the position-compare ready
(QFLG[PCR]) interrupt after loading.
• Load on compare match
• Load on position-counter zero event
The position-compare match (QFLG[PCM]) is set when the position-counter value (QPOSCNT) matches
with the active position-compare register (QPOSCMP) and the position-compare sync output of the
programmable pulse width is generated on compare match to trigger an external device.
For example, if QPOSCMP = 2, the position-compare unit generates a position-compare event on 1 to 2
transitions of the eQEP position counter for forward counting direction and on 3 to 2 transitions of the
eQEP position counter for reverse counting direction (see Figure 7-13).
Figure 7-23 shows the layout of the eQEP Position-Compare Control Register (QPOSCTL) and Table 7-5
describes the QPOSCTL bit fields.
468
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Edge Capture Unit
www.ti.com
Figure 7-13. eQEP Position-compare Event Generation Points
4
3
2
eQEP counter
4
3
3
2
1
1
0
3
2
2
1
POSCMP=2
1
0
0
PCEVNT
PCSOUT (active HIGH)
PCSPW
PCSOUT (active LOW)
The pulse stretcher logic in the position-compare unit generates a programmable position-compare sync
pulse output on the position-compare match. In the event of a new position-compare match while a
previous position-compare pulse is still active, then the pulse stretcher generates a pulse of specified
duration from the new position-compare event as shown in Figure 7-14.
Figure 7-14. eQEP Position-compare Sync Output Pulse Stretcher
DIR
QPOSCMP
QPOSCNT
PCEVNT
PCSPW
PCSPW
PCSPW
PCSOUT (active HIGH)
7.5
eQEP Edge Capture Unit
The eQEP peripheral includes an integrated edge capture unit to measure the elapsed time between the
unit position events as shown in Figure 7-15. This feature is typically used for low speed measurement
using the following equation:
X
v(k) +
+ X
t(k) * t(k * 1)
DT
(3)
where,
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
469
eQEP Edge Capture Unit
•
•
•
www.ti.com
X - Unit position is defined by integer multiple of quadrature edges (see Figure 7-16)
ΔT - Elapsed time between unit position events
v(k) - Velocity at time instant "k"
The eQEP capture timer (QCTMR) runs from prescaled SYSCLKOUT and the prescaler is programmed
by the QCAPCTL[CCPS] bits. The capture timer (QCTMR) value is latched into the capture period register
(QCPRD) on every unit position event and then the capture timer is reset, a flag is set in
QEPSTS:UPEVNT to indicate that new value is latched into the QCPRD register. Software can check this
status flag before reading the period register for low speed measurement and clear the flag by writing 1.
Time measurement (ΔT) between unit position events will be correct if the following conditions are met:
• No more than 65,535 counts have occurred between unit position events.
• No direction change between unit position events.
The capture unit sets the eQEP overflow error flag (QEPSTS[COEF]) in the event of capture timer
overflow between unit position events. If a direction change occurs between the unit position events, then
an error flag is set in the status register (QEPSTS[CDEF]).
Capture Timer (QCTMR) and Capture period register (QCPRD) can be configured to latch on following
events.
• CPU read of QPOSCNT register
• Unit time-out event
If the QEPCTL[QCLM] bit is cleared, then the capture timer and capture period values are latched into the
QCTMRLAT and QCPRDLAT registers, respectively, when the CPU reads the position counter
(QPOSCNT).
If the QEPCTL[QCLM] bit is set, then the position counter, capture timer, and capture period values are
latched into the QPOSLAT, QCTMRLAT and QCPRDLAT registers, respectively, on unit time out.
Figure 7-17 shows the capture unit operation along with the position counter.
470
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Edge Capture Unit
www.ti.com
Figure 7-15. eQEP Edge Capture Unit
16
0xFFFF
QEPSTS:COEF
16
QCTMR
QCPRD
QCAPCTL:CCPS
16
3
3-bit binary
divider
x1, 1/2, 1/4...,
1/128
SYSCLKOUT
CAPCLK
16
Capture timer
control unit
(CTCU)
QCAPCTL:CEN
QCAPCTL:UPPS
QCTMRLAT
QCPRDLAT
QEPSTS:UPEVNT
UPEVNT
QEPSTS:CDEF
4
4-bit binary
divider
x1, 1/2, 1/4...,
1/2048
Rising/falling
edge detect
QCLK
QDIR
UTIME
QEPCTL:UTE
SYSCLKOUT
QFLG:UTO
QUTMR
UTOUT
QUPRD
NOTE:
The QCAPCTL[UPPS] prescaler should not be modified dynamically (such as switching the
unit event prescaler from QCLK/4 to QCLK/8). Doing so may result in undefined behavior.
The QCAPCTL[CPPS] prescaler can be modified dynamically (such as switching CAPCLK
prescaling mode from SYSCLK/4 to SYSCLK/8) only after the capture unit is disabled.
Figure 7-16. Unit Position Event for Low Speed Measurement (QCAPCTL[UPPS] = 0010)
P
QA
QB
QCLK
UPEVNT
X=N x P
A
N - Number of quadrature periods selected using QCAPCTL[UPPS] bits
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
471
eQEP Edge Capture Unit
www.ti.com
Figure 7-17. eQEP Edge Capture Unit - Timing Details
QEPA
QEPB
QCLK
QPOSCNT
x(k)
∆X
x(k−1)
UPEVNT
t(k)
∆T
QCTMR
t(k−1)
T
UTOUT
Velocity Calculation Equations:
x(k) * x(k * 1)
v(k) +
+ DX or
T
T
(4)
where
v(k): Velocity at time instant k
x(k): Position at time instant k
x(k-1): Position at time instant k-1
T: Fixed unit time or inverse of velocity calculation rate
ΔX: Incremental position movement in unit time
X: Fixed unit position
ΔT: Incremental time elapsed for unit position movement
t(k): Time instant "k"
t(k-1): Time instant "k-1"
Unit time (T) and unit period(X) are configured using the QUPRD and QCAPCTL[UPPS] registers.
Incremental position output and incremental time output is available in the QPOSLAT and QCPRDLAT
registers.
472
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Watchdog
www.ti.com
Parameter
T
ΔX
X
ΔT
7.6
Relevant Register to Configure or Read the Information
Unit Period Register (QUPRD)
Incremental Position = QPOSLAT(k) - QPOSLAT(K-1)
Fixed unit position defined by sensor resolution and ZCAPCTL[UPPS] bits
Capture Period Latch (QCPRDLAT)
eQEP Watchdog
The eQEP peripheral contains a 16-bit watchdog timer that monitors the quadrature-clock to indicate
proper operation of the motion-control system. The eQEP watchdog timer is clocked from
SYSCLKOUT/64 and the quadrate clock event (pulse) resets the watchdog timer. If no quadrature-clock
event is detected until a period match (QWDPRD = QWDTMR), then the watchdog timer will time out and
the watchdog interrupt flag will be set (QFLG[WTO]). The time-out value is programmable through the
watchdog period register (QWDPRD).
Figure 7-18. eQEP Watchdog Timer
QWDOG
QEPCTL:WDE
SYSCLKOUT
/64
SYSCLKOUT
QWDTMR
16
QCLK
RESET
WDTOUT
16
QWDPRD
7.7
QFLG:WTO
Unit Timer Base
The eQEP peripheral includes a 32-bit timer (QUTMR) that is clocked by SYSCLKOUT to generate
periodic interrupts for velocity calculations. The unit time out interrupt is set (QFLG[UTO]) when the unit
timer (QUTMR) matches the unit period register (QUPRD).
The eQEP peripheral can be configured to latch the position counter, capture timer, and capture period
values on a unit time out event so that latched values are used for velocity calculation as described in
Section Section 7.5.
Figure 7-19. eQEP Unit Time Base
UTIME
QEPCTL:UTE
SYSCLKOUT
QUTMR
32
UTOUT
32
QUPRD
QFLG:UTO
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
473
eQEP Interrupt Structure
7.8
www.ti.com
eQEP Interrupt Structure
Figure 7-20 shows how the interrupt mechanism works in the EQEP module.
Figure 7-20. EQEP Interrupt Generation
Set
Clr
QEINT:PCE
QCLR:INT
Clr
Latch
QCLR:PCE
QFLG:INT
Latch
QFRC:PCE
Set
Pulse
generator
when
input=1
EQEPxINT
0
0
PCE
QFLG:PCE
1
QEINT:UTO
clr
QCLR:UTO
Latch
QFRC:UTO
set
UTO
QFLG:UTO
Eleven interrupt events (PCE, PHE, QDC, WTO, PCU, PCO, PCR, PCM, SEL, IEL and UTO) can be
generated. The interrupt control register (QEINT) is used to enable/disable individual interrupt event
sources. The interrupt flag register (QFLG) indicates if any interrupt event has been latched and contains
the global interrupt flag bit (INT). An interrupt pulse is generated only to the PIE if any of the interrupt
events is enabled, the flag bit is 1 and the INT flag bit is 0. The interrupt service routine will need to clear
the global interrupt flag bit and the serviced event, via the interrupt clear register (QCLR), before any other
interrupt pulses are generated. You can force an interrupt event by way of the interrupt force register
(QFRC), which is useful for test purposes.
7.9
eQEP Registers
Figure 7-21. QEP Decoder Control (QDECCTL) Register
15
13
12
11
10
9
8
QSRC
14
SOEN
SPSEL
XCR
SWAP
IGATE
QAP
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
4
7
6
5
QBP
QIP
QSP
Reserved
0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-3. eQEP Decoder Control (QDECCTL) Register Field Descriptions
Bits
15-14
13
Name
Value
QSRC
00
Quadrature count mode (QCLK = iCLK, QDIR = iDIR)
01
Direction-count mode (QCLK = xCLK, QDIR = xDIR)
10
UP count mode for frequency measurement (QCLK = xCLK, QDIR = 1)
11
DOWN count mode for frequency measurement
(QCLK = xCLK, QDIR = 0)
SOEN
474 Enhanced QEP (eQEP) Module
Description
Position-counter source selection
Sync output-enable
0
Disable position-compare sync output
1
Enable position-compare sync output
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-3. eQEP Decoder Control (QDECCTL) Register Field Descriptions (continued)
Bits
12
11
10
9
8
7
6
5
4-0
Name
Value
Description
SPSEL
Sync output pin selection
0
Index pin is used for sync output
1
Strobe pin is used for sync output
XCR
External clock rate
0
2x resolution: Count the rising/falling edge
1
1x resolution: Count the rising edge only
SWAP
Swap quadrature clock inputs. This swaps the input to the quadrature decoder, reversing the
counting direction.
0
Quadrature-clock inputs are not swapped
1
Quadrature-clock inputs are swapped
IGATE
Index pulse gating option
0
Disable gating of Index pulse
1
Gate the index pin with strobe
QAP
QEPA input polarity
0
No effect
1
Negates QEPA input
QBP
QEPB input polarity
0
No effect
1
Negates QEPB input
QIP
QEPI input polarity
0
No effect
1
Negates QEPI input
QSP
QEPS input polarity
0
No effect
1
Negates QEPS input
Reserved
Always write as 0
Figure 7-22. eQEP Control (QEPCTL) Register
15
14
13
12
11
7
6
3
2
1
0
FREE, SOFT
PCRM
SEI
10
9
IEI
8
SWI
SEL
5
IEL
4
QPEN
QCLM
UTE
WDE
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
475
eQEP Registers
www.ti.com
Table 7-4. eQEP Control (QEPCTL) Register Field Descriptions
Bits
Name
15-14
FREE,
SOFT
Value
Description
Emulation Control Bits
QPOSCNT behavior
00
01
1x
Position counter stops immediately on emulation suspend
Position counter continues to count until the rollover
Position counter is unaffected by emulation suspend
QWDTMR behavior
00
01
1x
Watchdog counter stops immediately
Watchdog counter counts until WD period match roll over
Watchdog counter is unaffected by emulation suspend
QUTMR behavior
00
01
1x
Unit timer stops immediately
Unit timer counts until period rollover
Unit timer is unaffected by emulation suspend
QCTMR behavior
00
01
1x
13-12
11-10
9-8
7
6
5-4
PCRM
Position counter reset mode
00
Position counter reset on an index event
01
Position counter reset on the maximum position
10
Position counter reset on the first index event
11
Position counter reset on a unit time event
SEI
Strobe event initialization of position counter
00
Does nothing (action disabled)
01
Does nothing (action disabled)
10
Initializes the position counter on rising edge of the QEPS signal
11
Clockwise Direction:
Initializes the position counter on the rising edge of QEPS strobe
Counter Clockwise Direction:
Initializes the position counter on the falling edge of QEPS strobe
IEI
Index event initialization of position counter
00
Do nothing (action disabled)
01
Do nothing (action disabled)
10
Initializes the position counter on the rising edge of the QEPI signal (QPOSCNT =
QPOSINIT)
11
Initializes the position counter on the falling edge of QEPI signal (QPOSCNT = QPOSINIT)
SWI
Software initialization of position counter
0
Do nothing (action disabled)
1
Initialize position counter (QPOSCNT=QPOSINIT). This bit is not cleared automatically
SEL
Strobe event latch of position counter
0
The position counter is latched on the rising edge of QEPS strobe (QPOSSLAT =
POSCCNT). Latching on the falling edge can be done by inverting the strobe input using the
QSP bit in the QDECCTL register.
1
Clockwise Direction:
Position counter is latched on rising edge of QEPS strobe
Counter Clockwise Direction:
Position counter is latched on falling edge of QEPS strobe
IEL
476 Enhanced QEP (eQEP) Module
Capture Timer stops immediately
Capture Timer counts until next unit period event
Capture Timer is unaffected by emulation suspend
Index event latch of position counter (software index marker)
00
Reserved
01
Latches position counter on rising edge of the index signal
10
Latches position counter on falling edge of the index signal
11
Software index marker. Latches the position counter and quadrature direction flag on index
event marker. The position counter is latched to the QPOSILAT register and the direction flag
is latched in the QEPSTS[QDLF] bit. This mode is useful for software index marking.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-4. eQEP Control (QEPCTL) Register Field Descriptions (continued)
Bits
Name
3
QPEN
2
1
0
Value
Description
Quadrature position counter enable/software reset
0
Reset the eQEP peripheral internal operating flags/read-only registers. Control/configuration
registers are not disturbed by a software reset.
1
eQEP position counter is enabled
QCLM
eQEP capture latch mode
0
Latch on position counter read by CPU. Capture timer and capture period values are latched
into QCTMRLAT and QCPRDLAT registers when CPU reads the QPOSCNT register.
1
Latch on unit time out. Position counter, capture timer and capture period values are latched
into QPOSLAT, QCTMRLAT and QCPRDLAT registers on unit time out.
UTE
eQEP unit timer enable
0
Disable eQEP unit timer
1
Enable unit timer
WDE
eQEP watchdog enable
0
Disable the eQEP watchdog timer
1
Enable the eQEP watchdog timer
Figure 7-23. eQEP Position-compare Control (QPOSCTL) Register
15
14
13
12
11
8
PCSHDW
PCLOAD
PCPOL
PCE
PCSPW
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
0
PCSPW
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-5. eQEP Position-compare Control (QPOSCTL) Register Field Descriptions
Bit
Name
15
PCSHDW
14
13
12
11-0
Description
Position-compare shadow enable
0
Shadow disabled, load Immediate
1
Shadow enabled
PCLOAD
Position-compare shadow load mode
0
Load on QPOSCNT = 0
1
Load when QPOSCNT = QPOSCMP
PCPOL
Polarity of sync output
0
Active HIGH pulse output
1
Active LOW pulse output
PCE
Position-compare enable/disable
0
Disable position compare unit
1
Enable position compare unit
PCSPW
Select-position-compare sync output pulse width
0x000
1 * 4 * SYSCLKOUT cycles
0x001
2 * 4 * SYSCLKOUT cycles
0xFFF
4096 * 4 * SYSCLKOUT cycles
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
477
eQEP Registers
www.ti.com
Figure 7-24. eQEP Capture Control (QCAPCTL) Register
15
14
7
6
4
3
0
CEN
Reserved
CCPS
UPPS
R/W-0
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-6. eQEP Capture Control (QCAPCTL) Register Field Descriptions
Bits
15
Name
Description
CEN
Enable eQEP capture
14-7
Reserved
6-4
CCPS
0
eQEP capture unit is disabled
1
eQEP capture unit is enabled
Always write as 0
eQEP capture timer clock prescaler
000
001
010
011
100
101
110
111
3-0
UPPS
CAPCLK = SYSCLKOUT/1
CAPCLK = SYSCLKOUT/2
CAPCLK = SYSCLKOUT/4
CAPCLK = SYSCLKOUT/8
CAPCLK = SYSCLKOUT/16
CAPCLK = SYSCLKOUT/32
CAPCLK = SYSCLKOUT/64
CAPCLK = SYSCLKOUT/128
Unit position event prescaler
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
11xx
UPEVNT = QCLK/1
UPEVNT = QCLK/2
UPEVNT = QCLK/4
UPEVNT = QCLK/8
UPEVNT = QCLK/16
UPEVNT = QCLK/32
UPEVNT = QCLK/64
UPEVNT = QCLK/128
UPEVNT = QCLK/256
UPEVNT = QCLK/512
UPEVNT = QCLK/1024
UPEVNT = QCLK/2048
Reserved
Figure 7-25. eQEP Position Counter (QPOSCNT) Register
31
0
QPOSCNT
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-7. eQEP Position Counter (QPOSCNT) Register Field Descriptions
Bits
Name
Description
31-0
QPOSCNT
This 32-bit position counter register counts up/down on every eQEP pulse based on direction
input. This counter acts as a position integrator whose count value is proportional to position
from a give reference point. This register acts as a Read ONLY while counter is counting
Up/Down
Figure 7-26. eQEP Position Counter Initialization (QPOSINIT) Register
31
0
QPOSINIT
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
478
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-8. eQEP Position Counter Initialization (QPOSINIT) Register Field Descriptions
Bits
Name
Description
31-0
QPOSINIT
This register contains the position value that is used to initialize the position counter based on
external strobe or index event. The position counter can be initialized through software.
Figure 7-27. eQEP Maximum Position Count Register (QPOSMAX) Register
31
0
QPOSMAX
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-9. eQEP Maximum Position Count (QPOSMAX) Register Field Descriptions
Bits
Name
Description
31-0
QPOSMAX
This register contains the maximum position counter value.
Figure 7-28. eQEP Position-compare (QPOSCMP) Register
31
0
QPOSCMP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-10. eQEP Position-compare (QPOSCMP) Register Field Descriptions
Bits
Name
Description
31-0
QPOSCMP
The position-compare value in this register is compared with the position counter (QPOSCNT) to
generate sync output and/or interrupt on compare match.
Figure 7-29. eQEP Index Position Latch (QPOSILAT) Register
31
0
QPOSILAT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-11. eQEP Index Position Latch(QPOSILAT) Register Field Descriptions
Bits
Name
Description
31-0
QPOSILAT
The position-counter value is latched into this register on an index event as defined by the
QEPCTL[IEL] bits.
Figure 7-30. eQEP Strobe Position Latch (QPOSSLAT) Register
31
0
QPOSSLAT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
479
eQEP Registers
www.ti.com
Table 7-12. eQEP Strobe Position Latch (QPOSSLAT) Register Field Descriptions
Bits
Name
Description
31-0
QPOSSLAT
The position-counter value is latched into this register on strobe event as defined by the
QEPCTL[SEL] bits.
Figure 7-31. eQEP Position Counter Latch (QPOSLAT) Register
31
0
QPOSLAT
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-13. eQEP Position Counter Latch (QPOSLAT) Register Field Descriptions
Bits
Name
Description
31-0
QPOSLAT
The position-counter value is latched into this register on unit time out event.
Figure 7-32. eQEP Unit Timer (QUTMR) Register
31
0
QUTMR
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-14. eQEP Unit Timer (QUTMR) Register Field Descriptions
Bits
Name
Description
31-0
QUTMR
This register acts as time base for unit time event generation. When this timer value matches
with unit time period value, unit time event is generated.
Figure 7-33. eQEP Register Unit Period (QUPRD) Register
31
0
QUPRD
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-15. eQEP Unit Period (QUPRD) Register Field Descriptions
Bits
Name
Description
31-0
QUPRD
This register contains the period count for unit timer to generate periodic unit time events to latch
the eQEP position information at periodic interval and optionally to generate interrupt.
Figure 7-34. eQEP Watchdog Timer (QWDTMR) Register
15
0
QWDTMR
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
480
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-16. eQEP Watchdog Timer (QWDTMR) Register Field Descriptions
Bits
Name
Description
15-0
QWDTMR
This register acts as time base for watch dog to detect motor stalls. When this timer value
matches with watch dog period value, watch dog timeout interrupt is generated. This register is
reset upon edge transition in quadrature-clock indicating the motion.
Figure 7-35. eQEP Watchdog Period (QWDPRD) Register
15
0
QWDPRD
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-17. eQEP Watchdog Period (QWDPRD) Register Field Description
Bits
Name
Value
15-0
QWDPRD
Description
This register contains the time-out count for the eQEP peripheral watch dog timer.
When the watchdog timer value matches the watchdog period value, a watchdog
timeout interrupt is generated.
Figure 7-36. eQEP Interrupt Enable (QEINT) Register
15
11
10
9
8
Reserved
12
UTO
IEL
SEL
PCM
R-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
PCR
PCO
PCU
WTO
QDC
QPE
PCE
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-18. eQEP Interrupt Enable(QEINT) Register Field Descriptions
Bits
15-12
11
10
9
8
7
6
Name
Value
Reserved
0
UTO
Description
Always write as 0
Unit time out interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
IEL
Index event latch interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
SEL
Strobe event latch interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
PCM
Position-compare match interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
PCR
Position-compare ready interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
PCO
Position counter overflow interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module 481
eQEP Registers
www.ti.com
Table 7-18. eQEP Interrupt Enable(QEINT) Register Field Descriptions (continued)
Bits
Name
5
Value
PCU
4
Position counter underflow interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
WTO
3
Watchdog time out interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
QDC
2
Quadrature direction change interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
QPE
1
Quadrature phase error interrupt enable
0
Interrupt is disabled
1
Interrupt is enabled
PCE
0
Description
Position counter error interrupt enable
Reserved
0
Interrupt is disabled
1
Interrupt is enabled
Reserved
Figure 7-37. eQEP Interrupt Flag (QFLG) Register
15
11
10
9
8
Reserved
12
UTO
IEL
SEL
PCM
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
PCR
PCO
PCU
WTO
QDC
PHE
PCE
INT
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-19. eQEP Interrupt Flag (QFLG) Register Field Descriptions
Bits Name
1512
Reserved
11
UTO
10
9
8
7
6
Value
Description
Always write as 0
Unit time out interrupt flag
0
No interrupt generated
1
Set by eQEP unit timer period match
IEL
Index event latch interrupt flag
0
No interrupt generated
1
This bit is set after latching the QPOSCNT to QPOSILAT
SEL
Strobe event latch interrupt flag
0
No interrupt generated
1
This bit is set after latching the QPOSCNT to QPOSSLAT
PCM
eQEP compare match event interrupt flag
0
No interrupt generated
1
This bit is set on position-compare match
PCR
Position-compare ready interrupt flag
0
No interrupt generated
1
This bit is set after transferring the shadow register value to the active position compare register.
PCO
Position counter overflow interrupt flag
0
482 Enhanced QEP (eQEP) Module
No interrupt generated
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-19. eQEP Interrupt Flag (QFLG) Register Field Descriptions (continued)
Bits Name
Value
1
5
4
3
2
1
0
PCU
Description
This bit is set on position counter overflow.
Position counter underflow interrupt flag
0
No interrupt generated
1
This bit is set on position counter underflow.
WTO
Watchdog timeout interrupt flag
0
No interrupt generated
1
Set by watch dog timeout
QDC
Quadrature direction change interrupt flag
0
No interrupt generated
1
This bit is set during change of direction
PHE
Quadrature phase error interrupt flag
0
No interrupt generated
1
Set on simultaneous transition of QEPA and QEPB
PCE
Position counter error interrupt flag
0
No interrupt generated
1
Position counter error
INT
Global interrupt status flag
0
No interrupt generated
1
Interrupt was generated
Figure 7-38. eQEP Interrupt Clear (QCLR) Register
15
11
10
9
8
Reserved
12
UTO
IEL
SEL
PCM
R-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
PCR
PCO
PCU
WTO
QDC
PHE
PCE
INT
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-20. eQEP Interrupt Clear (QCLR) Register Field Descriptions
Bit
15-12
11
10
9
8
Field
Value
Description
Reserved
Always write as 0s
UTO
Clear unit time out interrupt flag
0
No effect
1
Clears the interrupt flag
IEL
Clear index event latch interrupt flag
0
No effect
1
Clears the interrupt flag
SEL
Clear strobe event latch interrupt flag
0
No effect
1
Clears the interrupt flag
PCM
Clear eQEP compare match event interrupt flag
0
No effect
1
Clears the interrupt flag
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
483
eQEP Registers
www.ti.com
Table 7-20. eQEP Interrupt Clear (QCLR) Register Field Descriptions (continued)
Bit
Field
7
PCR
6
Value
Clear position-compare ready interrupt flag
0
No effect
1
Clears the interrupt flag
PCO
5
Clear position counter overflow interrupt flag
0
No effect
1
Clears the interrupt flag
PCU
4
Clear position counter underflow interrupt flag
0
No effect
1
Clears the interrupt flag
WTO
3
Clear watchdog timeout interrupt flag
0
No effect
1
Clears the interrupt flag
QDC
2
Clear quadrature direction change interrupt flag
0
No effect
1
Clears the interrupt flag
PHE
1
Clear quadrature phase error interrupt flag
0
No effect
1
Clears the interrupt flag
PCE
0
Description
Clear position counter error interrupt flag
0
No effect
1
Clears the interrupt flag
INT
Global interrupt clear flag
0
No effect
1
Clears the interrupt flag and enables further interrupts to be generated if an event flags is set to 1.
Figure 7-39. eQEP Interrupt Force (QFRC) Register
15
11
10
9
8
Reserved
12
UTO
IEL
SEL
PCM
R-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
PCR
PCO
PCU
WTO
QDC
PHE
PCE
Reserved
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-21. eQEP Interrupt Force (QFRC) Register Field Descriptions
Bit
15-12
11
10
9
484
Field
Value
Description
Reserved
Always write as 0s
UTO
Force unit time out interrupt
0
No effect
1
Force the interrupt
IEL
Force index event latch interrupt
0
No effect
1
Force the interrupt
SEL
Force strobe event latch interrupt
0
No effect
1
Force the interrupt
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-21. eQEP Interrupt Force (QFRC) Register Field Descriptions (continued)
Bit
Field
8
PCM
7
Value
Force position-compare match interrupt
0
No effect
1
Force the interrupt
PCR
6
Force position-compare ready interrupt
0
No effect
1
Force the interrupt
PCO
5
Force position counter overflow interrupt
0
No effect
1
Force the interrupt
PCU
4
Force position counter underflow interrupt
0
No effect
1
Force the interrupt
WTO
3
Force watchdog time out interrupt
0
No effect
1
Force the interrupt
QDC
2
Force quadrature direction change interrupt
0
No effect
1
Force the interrupt
PHE
1
Force quadrature phase error interrupt
0
No effect
1
Force the interrupt
PCE
0
Description
Force position counter error interrupt
Reserved
0
No effect
1
Force the interrupt
01
Always write as 0
Figure 7-40. eQEP Status (QEPSTS) Register
15
8
Reserved
R-0
7
6
5
4
3
UPEVNT
FIDF
QDF
QDLF
COEF
R/w-1
R-0
R-0
R-0
R/W-1
2
1
0
CDEF
FIMF
PCEF
R/W-1
R/W-1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-22. eQEP Status (QEPSTS) Register Field Descriptions
Bit
Field
15-8
Reserved
7
UPEVNT
6
Value
Description
Always write as 0
Unit position event flag
0
No unit position event detected
1
Unit position event detected. Write 1 to clear.
FIDF
Direction on the first index marker
Status of the direction is latched on the first index event marker.
0
Counter-clockwise rotation (or reverse movement) on the first index event
1
Clockwise rotation (or forward movement) on the first index event
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
485
eQEP Registers
www.ti.com
Table 7-22. eQEP Status (QEPSTS) Register Field Descriptions (continued)
Bit
Field
5
QDF
4
3
2
1
0
Value
Description
Quadrature direction flag
0
Counter-clockwise rotation (or reverse movement)
1
Clockwise rotation (or forward movement)
QDLF
eQEP direction latch flag
Status of direction is latched on every index event marker.
0
Counter-clockwise rotation (or reverse movement) on index event marker
1
Clockwise rotation (or forward movement) on index event marker
COEF
Capture overflow error flag
0
Sticky bit, cleared by writing 1
1
Overflow occurred in eQEP Capture timer (QEPCTMR)
CDEF
Capture direction error flag
0
Sticky bit, cleared by writing 1
1
Direction change occurred between the capture position event.
FIMF
First index marker flag
0
Sticky bit, cleared by writing 1
1
Set by first occurrence of index pulse
PCEF
Position counter error flag. This bit is not sticky and it is updated for every index event.
0
No error occurred during the last index transition.
1
Position counter error
Figure 7-41. eQEP Capture Timer (QCTMR) Register
15
0
QCTMR
R/W
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-23. eQEP Capture Timer (QCTMR) Register Field Descriptions
Bits
Name
Description
15-0
QCTMR
This register provides time base for edge capture unit.
Figure 7-42. eQEP Capture Period (QCPRD) Register
15
0
QCPRD
R/W
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-24. eQEP Capture Period Register (QCPRD) Register Field Descriptions
Bits
Name
Description
15-0
QCPRD
This register holds the period count value between the last successive eQEP position events
Figure 7-43. eQEP Capture Timer Latch (QCTMRLAT) Register
15
0
QCTMRLAT
R
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
486
Enhanced QEP (eQEP) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eQEP Registers
www.ti.com
Table 7-25. eQEP Capture Timer Latch (QCTMRLAT) Register Field Descriptions
Bits
Name
Description
15-0
QCTMRLAT
The eQEP capture timer value can be latched into this register on two events viz., unit timeout
event, reading the eQEP position counter.
Figure 7-44. eQEP Capture Period Latch (QCPRDLAT) Register
15
0
QCPRDLAT
R/W
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 7-26. eQEP Capture Period Latch (QCPRDLAT) Register Field Descriptions
Bits
Name
Description
15-0
QCPRDLAT
eQEP capture period value can be latched into this register on two events viz., unit timeout
event, reading the eQEP position counter.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced QEP (eQEP) Module
487
Chapter 8
SPRUH18G – January 2011 – Revised April 2017
Analog-to-Digital Converter and Comparator
The ADC module described in this reference guide is a Type 3 ADC and exists on the Piccolo™ family of
devices. The Comparator function described in this reference guide is a Type 0 Comparator. See the
TMS320C28xx, 28xxx DSP Peripheral Reference Guide (SPRU566) for a list of all devices with modules
of the same type, to determine the differences between the types, and for a list of device-specific
differences within a type.
Topic
8.1
8.2
488
...........................................................................................................................
Page
Analog-to-Digital Converter (ADC) ...................................................................... 489
Comparator Block............................................................................................. 523
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
8.1
Analog-to-Digital Converter (ADC)
The ADC module described in this reference guide is a 12-bit recyclic ADC; part SAR, part pipelined. The
analog circuits of this converter, referred to as the "core" in this document, include the front-end analog
multiplexers (MUXs), sample-and-hold (S/H) circuits, the conversion core, voltage regulators, and other
analog supporting circuits. Digital circuits, referred to as the "wrapper" in this document, include
programmable conversions, result registers, interface to analog circuits, interface to device peripheral bus,
and interface to other on-chip modules.
8.1.1 Features
The core of the ADC contains a single 12-bit converter fed by two sample and hold circuits. The sample
and hold circuits can be sampled simultaneously or sequentially. These, in turn, are fed by a total of up to
16 analog input channels. See the device datasheet for the specific number of channels available. The
converter can be configured to run with an internal bandgap reference to create true-voltage based
conversions or with a pair of external voltage references (VREFHI/LO) to create ratiometric based
conversions.
Contrary to previous ADC types, this ADC is not sequencer based. It is easy for the user to create a
series of conversions from a single trigger. However, the basic principle of operation is centered around
the configurations of individual conversions, called SOC’s, or Start-Of-Conversions.
Functions of the ADC module include:
• 12-bit ADC core with built-in dual sample-and-hold (S/H)
• Simultaneous sampling or sequential sampling modes
• Full range analog input: 0 V to 3.3 V fixed, or VREFHI/VREFLO ratiometric
• Up to 16-channel, multiplexed inputs
• 16 SOC’s, configurable for trigger, sample window, and channel
• 16 result registers (individually addressable) to store conversion values
• Multiple trigger sources
– S/W - software immediate start
– ePWM 1-8
– GPIO XINT2
– CPU Timers 0/1/2
– ADCINT1/2
• 9 flexible PIE interrupts, can configure interrupt request after any conversion
8.1.2 Block Diagram
Figure 8-1 shows the block diagram of the ADC module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
489
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-1. ADC Block Diagram
Reference Voltage Generator
Bandgap
Reference
Circuit
VREFHI
Int Gain
Trim
Ext Gain
Trim
VREFLO
1
ADCCTL1.ADCREFSEL
0
Input Circuit
0
1
2
3
S/H-A
4
0
1
Converter
5
6
7
CHSEL[2:0]
0
ACQPS
1
2
3
S/H-B
SOC
Result
RESULT
Registers
SOC
CHSEL
ADC Sample
Generation
Logic
EOCx
ADC
Interrupt
Logic
ADCINT1-9
4
5
6
7
ADCCTL1.VREFLOCONV
ADCCTL1.TEMPCONV
SOC0 – SOC15
Configurations
ADCINT1
ADCINT2
SOCx Triggers
0
1
SOCx
Signals
ADCINB 0
ADCINB 1
ADCINB 2
ADCINB 3
ADCINB 4
ADCINB 5
VREFLO
ADCINB 6
ADCINB 7
CHSEL[3]
ADCINA 0
ADCINA 1
ADCINA 2
ADCINA 3
ADCINA 4
ADCINA 5
TEMP SENSOR
ADCINA 6
ADCINA 7
SW, ePWM,
Timer, GPIO
8.1.3 SOC Principle of Operation
Contrary to previous ADC types, this ADC is not sequencer based. Instead, it is SOC based. The term
SOC is configuration set defining the single conversion of a single channel. In that set there are three
configurations: the trigger source that starts the conversion, the channel to convert, and the acquisition
(sample) window size. Each SOC is independently configured and can have any combination of the
trigger, channel, and sample window size available. Multiple SOCs can be configured for the same trigger,
channel, and/or acquisition window as desired. This provides a very flexible means of configuring
conversions ranging from individual samples of different channels with different triggers, to oversampling
the same channel using a single trigger, to creating your own series of conversions of different channels
all from a single trigger.
The trigger source for SOCx is configured by a combination of the TRIGSEL field in the ADCSOCxCTL
register and the appropriate bits in the ADCINTSOCSEL1 or ADCINTSOCSEL2 register. Software can
also force an SOC event with the ADCSOCFRC1 register. The channel and sample window size for SOCx
are configured with the CHSEL and ACQPS fields of the ADCSOCxCTL register.
490
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-2. SOC Block Diagram
SOC15
ADCSOC15CTL.ACQPS
ACQPS
ADCSOC2CTL.ACQPS
ADCSOC1CTL.ACQPS
ADCSOC0CTL.ACQPS
SOC2
SOC1
SOC0
ADCSOC0CTL.ACQPS
ADCSOC15CTL.CHSEL
CHSEL
ADCSOC0CTL.TRIGSEL
ADCSOC2CTL.CHSEL
ADCSOC1CTL.CHSEL
ADCSOC0CTL.CHSEL
ADCSOC0CTL.CHSEL
0
1
2
ADCSOCFLG1.SOC15
SOCOVF
SOC
12
ADCSOCFLG1.SOC2
ADCSOCFLG1.SOC1
ADCSOCFLG1.SOC0
Clear
ADCTRIG12
ADCSOCFRC1.SOC0
Set
Latch
ADC Sample
Generation
Logic
ADCTRIG1
ADCTRIG2
0
Start of SOC0
1
ADCINT1
2
ADCINT2
3
undefined
ADCINTSOCSEL1.SOC0
For example, to configure a single conversion on channel ADCINA1 to occur when the ePWM3 timer
reaches its period match you must first setup ePWM3 to output an SOCA or SOCB signal on a period
match. See the Enhanced Pulse Width Modulator Module (ePWM) on how to do this. In this case, we will
use SOCA. Then, set up one of the SOCs using its ADCSOCxCTL register. It makes no difference which
SOC we choose, so we will use SOC0. The fastest allowable sample window for the ADC is 7 cycles.
Choosing the fastest time for the sample window, channel ADCINA1 for the channel to convert, and
ePWM3 for the SOC0 trigger, we’ll set the ACQPS field to 6, the CHSEL field to 1, and the TRIGSEL field
to 9, respectively. The resulting value written into the register will be:
ADCSOC0CTL = 4846h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
When configured as such, a single conversion of ADCINA1 will be started on an ePWM3 SOCA event with
the resulting value stored in the ADCRESULT0 register.
If instead ADCINA1 needed to be oversampled by 3X, then SOC1, SOC2, and SOC3 could all be given
the same configuration as SOC0.
ADCSOC1CTL = 4846h;
ADCSOC2CTL = 4846h;
ADCSOC3CTL = 4846h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
When configured as such, four conversions of ADCINA1 will be started in series on an ePWM3 SOCA
event with the resulting values stored in the ADCRESULT0 – ADCRESULT3 registers.
Another application may require 3 different signals to be sampled from the same trigger. This can be done
by simply changing the CHSEL field for SOC0-SOC2 while leaving the TRIGSEL field unchanged.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
491
Analog-to-Digital Converter (ADC)
www.ti.com
ADCSOC0CTL = 4846h;
ADCSOC1CTL = 4886h;
ADCSOC2CTL = 48C6h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=2, TRIGSEL=9)
// (ACQPS=6, CHSEL=3, TRIGSEL=9)
When configured this way, three conversions will be started in series on an ePWM3 SOCA event. The
result of the conversion on channel ADCINA1 will show up in ADCRESULT0. The result of the conversion
on channel ADCINA2 will show up in ADCRESULT1. The result of the conversion on channel ADCINA3
will show up in ADCRESULT2. The channel converted and the trigger have no bearing on where the result
of the conversion shows up. The RESULT register is associated with the SOC.
NOTE: These examples are incomplete. Clocks must be enabled via the PCLKCR0 register and the
ADC must be powered to work correctly. For a description of the PCLKCR0 register see the
System Control and Interrupts section in this manual. For the power-up sequence of the
ADC, see Section 8.1.8. The CLKDIV2EN bit in the ADCCTL2 register must also be set to a
proper value to obtain correct frequency of operation. For more information on the ADCCTL2
register please refer to Section 8.1.11
8.1.3.1
ADC Acquisition (Sample and Hold) Window
External drivers vary in their ability to drive an analog signal quickly and effectively. Some circuits require
longer times to properly transfer the charge into the sampling capacitor of an ADC. To address this, the
ADC supports control over the sample window length for each individual SOC configuration. Each
ADCSOCxCTL register has a 6-bit field, ACQPS, that determines the sample and hold (S/H) window size.
The value written to this field is one less than the number of cycles desired for the sampling window for
that SOC. Thus, a value of 15 in this field will give 16 clock cycles of sample time. The minimum number
of sample cycles allowed is 7 (ACQPS=6). The total sampling time is found by adding the sample window
size to the conversion time of the ADC, 13 ADC clocks. Examples of various sample times are shown
below in Table 8-1.
Table 8-1. Sample Timings with Different Values of ACQPS
SYSCLKOUT
ADC Clock
ACQPS
Sample Window
Conversion Time
(13 cycles)
Total Time to Process
Analog Voltage (1)
90Mhz
45MHz
6
155.56ns
288.89ns
444.44ns
90Mhz
45MHz
25
577.78ns
288.89ns
866.67ns
(1)
492
The total times are for a single conversion and do not include pipelining effects that increase the average speed over time.
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
As shown in Figure 8-3 , the ADCIN pins can be modeled as an RC circuit. With VREFLO connected to
ground, a voltage swing from 0 to 3.3v on ADCIN yields a typical RC time constant of 2ns.
Figure 8-3. ADCINx Input Model
Source
Signal
Ron
3.4 k Ω
ADCIN
RS
ac
Switch
Ch
1.6 pF
Cp
5 pF
28x DSP
Typical Values of the Input Circuit Components:
Switch Resistance (Ron): 3.4 k Ω
Sampling Capacitor (Ch): 1.6 pF
Parasitic Capacitance (Cp): 5 pF
Source Resistance (RS): 50 Ω
8.1.3.2
Trigger Operation
Each SOC can be configured to start on one of many input triggers. Multiple SOCs can be configured for
the same channel if desired. Following is a list of the available input triggers:
• Software
• CPU Timers 0/1/2 interrupts
• XINT2 SOC
• ePWM1-8 SOCA and SOCB
See the ADCSOCxCTL register bit definitions for the configuration details of these triggers.
Additionally ADCINT1 and ADCINT2 can be fed back to trigger another conversion. This configuration is
controlled in the ADCINTSOCSEL1/2 registers. This mode is useful if a continuous stream of conversions
is desired. See Section 8.1.7 for information on the ADC interrupt signals.
8.1.3.3
Channel Selection
Each SOC can be configured to convert any of the available ADCIN input channels. When an SOC is
configured for sequential sampling mode, the four bit CHSEL field of the ADCSOCxCTL register defines
which channel to convert. When an SOC is configured for simultaneous sampling mode, the most
significant bit of the CHSEL field is dropped and the lower three bits determine which pair of channels are
converted.
ADCINA0 is shared with VREFHI, and therefore cannot be used as a variable input source when using
external reference voltage mode. See Section 8.1.10 for details on this mode.
8.1.4 ONESHOT Single Conversion Support
This mode will allow you to perform a single conversion on the next triggered SOC in the round robin
scheme. The ONESHOT mode is only valid for channels present in the round robin wheel. Channels
which are not configured for triggered SOC in the round robin scheme will get priority based on contents
of the SOCPRIORITY field in the ADCSOCPRIORITYCTL register.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
493
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-4. ONESHOT Single Conversion
Incoming ADC Trigger
ONESHOT ! = 0
No
Process sampling
with current ADC
state machine
Yes
Beginning with current Round Robin
Pointer, only set the SOCFLG
bit for next triggered sequence
The effect of ONESHOT mode on Sequential Mode and Simultaneous Mode is explained below.
Sequential mode: Only the next active SOC in RR mode (one up from current RR pointer) will be allowed
to generate SOC; all other triggers for other SOC slots will be ignored.
Simultaneous mode: If current RR pointer has SOC with simultaneous enabled; active SOC will be
incremented by 2 from the current RR pointer. This is because simultaneous mode will create result for
SOCx and SOCx+1, and SOCx+1 will never be triggered by the user.
NOTE: ONESHOT = 1 and SOCPRIORITY = 10h is not a valid combination for above
implementation reasons. This should not be a desired mode of operation by the user in any
case. The limitation of the above is that the next SOCs must eventually be triggered, or else
the ADC will not generate new SOCs for other out-of-order triggers. Any non-orthogonal
channels should be placed in the priority mode which is unaffected by ONESHOT mode
8.1.5 ADC Conversion Priority
When multiple SOC flags are set at the same time, one of two forms of priority determines the order in
which they are converted. The default priority method is round robin. In this scheme, no SOC has an
inherent higher priority than another. Priority depends on the round robin pointer (RRPOINTER). The
RRPOINTER reflected in the ADCSOCPRIORITYCTL register points to the last SOC converted. The
highest priority SOC is given to the next value greater than the RRPOINTER value, wrapping around back
to SOC0 after SOC15. At reset the value is 16 since 0 indicates a conversion has already occurred. When
RRPOINTER equals 16, the highest priority is given to SOC0. The RRPOINTER is reset by a device
reset, when the ADCCTL1.RESET bit is set, or when the SOCPRICTL register is written.
An example of the round robin priority method is given in Figure 8-5 .
494
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-5. Round Robin Priority Example
A After reset, SOC0 is highest priority SOC ;
SOC7 receives trigger ;
SOC7 configured channel is converted
immediately .
A
SOC
15
SOC
3
SOC
12
RRPOINTER
(default = 16)
SOC
5
SOC
10
SOC
9
SOC
1
SOC
14
SOC
15
SOC
2
SOC
13
RRPOINTER
(value = 7)
SOC
4
SOC
10
D
SOC
15
SOC
10
SOC
1
SOC
6
SOC
15
RRPOINTER
(value = 12)
SOC
4
SOC
5
SOC
11
SOC
10
SOC
6
SOC
7
SOC
8
SOC
0
SOC
7
SOC
1
SOC
14
SOC
3
SOC
8
SOC
5
SOC
9
SOC
13
SOC
4
SOC
11
SOC
2
SOC
9
RRPOINTER
(value = 7)
E
SOC
0
SOC
14
SOC
12
SOC
3
SOC
7
SOC
8
SOC
1
SOC
2
SOC
12
SOC
6
SOC
9
SOC
0
SOC
7
SOC
13
SOC
5
SOC
11
SOC
8
SOC
14
SOC
3
SOC
12
SOC
6
C
SOC
0
SOC
4
SOC
11
E RRPOINTER changes to point to SOC 2;
SOC3 is now highest priority SOC .
SOC
15
SOC
2
SOC
13
D RRPOINTER changes to point to SOC 12;
SOC2 configured channel is now converted .
B
SOC
1
SOC
14
B RRPOINTER changes to point to SOC 7;
SOC8 is now highest priority SOC .
C SOC2 & SOC12 triggers rcvd . simultaneously ;
SOC12 is first on round robin wheel ;
SOC12 configured channel is converted while
SOC2 stays pending .
SOC
0
SOC
2
SOC
13
SOC
3
SOC
12
RRPOINTER
(value = 2)
SOC
4
SOC
5
SOC
11
SOC
10
SOC
6
SOC
9
SOC
8
SOC
7
The SOCPRIORITY field in the ADCSOCPRIORITYCTL register can be used to assign high priority from
a single to all of the SOC’s. When configured as high priority, an SOC will interrupt the round robin wheel
after any current conversion completes and insert itself in as the next conversion. After its conversion
completes, the round robin wheel will continue where it was interrupted. If two high priority SOC’s are
triggered at the same time, the SOC with the lower number will take precedence.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
495
Analog-to-Digital Converter (ADC)
www.ti.com
High priority mode is assigned first to SOC0, then in increasing numerical order. The value written in the
SOCPRIORITY field defines the first SOC that is not high priority. In other words, if a value of 4 is written
into SOCPRIORITY, then SOC0, SOC1, SOC2, and SOC3 are defined as high priority, with SOC0 the
highest.
An example using high priority SOC’s is given in Figure 8-6 .
Figure 8-6. High Priority Example
A
Example when SOCPRIORITY = 4
A
B
C
D
E
After reset, SOC4 is 1 st on round robin wheel ;
SOC7 receives trigger ;
SOC7 configured channel is converted immediately .
High Priority
SOC
0
RRPOINTER changes to point to SOC 7;
SOC8 is now 1 st on round robin wheel .
SOC
1
SOC2 & SOC12 triggers rcvd . simultaneously ;
SOC2 interrupts round robin wheel and SOC 2 configured
channel is converted while SOC 12 stays pending .
SOC
2
SOC
3
High Priority
SOC
0
SOC
1
SOC
2
SOC
3
SOC
13
RRPOINTER
(default = 16)
SOC
8
SOC
13
RRPOINTER
(value = 7)
SOC
15
High Priority
SOC
2
SOC
3
SOC
0
SOC
1
SOC
2
SOC
8
SOC
10
SOC
4
SOC
12
SOC
8
Analog-to-Digital Converter and Comparator
SOC
0
SOC
1
SOC
2
SOC
3
SOC
5
RRPOINTER
(value = 7)
SOC
7
SOC
12
SOC
8
SOC
15
High Priority
SOC
7
RRPOINTER
(value = 7)
SOC
10
SOC
13
E
SOC
5
SOC
4
SOC
9
SOC
6
SOC
11
SOC
6
SOC
11
SOC
3
SOC
10
SOC
14
SOC
9
SOC
14
SOC
13
SOC
15
High Priority
SOC
7
SOC
12
D
SOC
1
C
SOC
6
SOC
7
SOC
12
SOC
11
SOC
5
SOC
14
SOC
11
SOC
0
SOC
4
SOC
5
SOC
6
RRPOINTER changes to point to SOC 12;
SOC13 is now 1st on round robin wheel .
SOC
15
SOC
4
SOC
14
RRPOINTER stays pointing to 7;
SOC12 configured channel is now converted .
B
496
SOC
15
SOC
10
SOC
4
SOC
9
SOC
5
SOC
14
SOC
6
SOC
13
RRPOINTER
(value = 12)
SOC
7
SOC
12
SOC
9
SOC
8
SOC
11
SOC
10
SOC
9
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.6 Simultaneous Sampling Mode
In some applications it is important to keep the delay between the sampling of two signals minimal. The
ADC contains dual sample and hold circuits to allow two different channels to be sampled simultaneously.
Simultaneous sampling mode is configured for a pair of SOCx's with the ADCSAMPLEMODE register.
The even-numbered SOCx and the following odd-numbered SOCx (SOC0 and SOC1) are coupled
together with one enable bit (SIMULEN0, in this case). The coupling behavior is as follows:
• Either SOCx’s trigger will start a pair of conversions.
• The pair of channels converted will consist of the A-channel and the B-channel corresponding to the
value of the CHSEL field of the triggered SOCx. The valid values in this mode are 0-7.
• Both channels will be sampled simultaneously.
• The A channel will always convert first.
• The even EOCx pulse will be generated based off of the A-channel conversion, the odd EOCx pulse
will be generated off of the B-channel conversion. See Section 1.6 for an explanation of the EOCx
signals.
• The result of the A-channel conversion is placed in the even ADCRESULTx register and the result of
the B-channel conversion is written to the odd ADCRESULTx register.
For example, if the ADCSAMPLEMODE.SIMULEN0 bit is set, and SOC0 is configured as follows:
CHSEL = 2 (ADCINA2/ADCINB2 pair)
TRIGSEL = 5 (ADCTRIG5 = ePWM1.ADCSOCA)
When the ePWM1 sends out an ADCSOCA trigger, both ADCINA2 and ADCINB2 will be sampled
simultaneously (assuming priority). Immediately after, the ADCINA2 channel will be converted and its
value will be stored in the ADCRESULT0 register. Depending on the ADCCTL1.INTPULSEPOS setting,
the EOC0 pulse will either occur when the conversion of ADCINA2 begins or completes. Then the
ADCINB2 channel will be converted and its value will be stored in the ADCRESULT1 register. Depending
on the ADCCTL1.INTPULSEPOS setting, the EOC1 pulse will either occur when the conversion of
ADCINB2 begins or completes.
Typically in an application it is expected that only the even SOCx of the pair will be used. However, it is
possible to use the odd SOCx instead, or even both. In the latter case, both SOCx triggers will start a
conversion. Therefore, caution is urged as both SOCx's will store their results to the same ADCRESULTx
registers, possibly overwriting each other.
The rules of priority for the SOCx’s remain the same as in sequential sampling mode.
Section 8.1.12 shows the timing of simultaneous sampling mode.
8.1.7 EOC and Interrupt Operation
Just as there are 16 independent SOCx configuration sets, there are 16 EOCx pulses. In sequential
sampling mode, the EOCx is associated directly with the SOCx. In simultaneous sampling mode, the even
and the following odd EOCx pair are associated with the even and the following odd SOCx pair, as
described in Section 8.1.6. Depending on the ADCCTL1.INTPULSEPOS setting, the EOCx pulse will
occur either at the beginning of a conversion or the end. See section 1.11 for exact timings on the EOCx
pulses.
The ADC contains 9 interrupts that can be flagged and/or passed on to the PIE. Each of these interrupts
can be configured to accept any of the available EOCx signals as its source. The configuration of which
EOCx is the source is done in the INTSELxNy registers. Additionally, the ADCINT1 and ADCINT2 signals
can be configured to generate an SOCx trigger. This is beneficial to creating a continuous stream of
conversions.
Figure 8-7 shows a block diagram of the interrupt structure of the ADC.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
497
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-7. Interrupt Structure
INT9
INT3
INT2
INT1
INTSEL1N2.INT1SEL
INTSEL1N2.INT1E
INTSEL1N2.INT1CONT
0
1
EOC
2
EOC15:EOC0
1
1
Set
ADCINT1 to PIE
0
15
0
Latch
Clear
INTOVF
ADCINTFLGCLR.ADCINT1
ADC Sample
Generation
Logic
ADCINTFLG.ADCINT1
8.1.8 Power-Up Sequence
The ADC resets to the ADC off state. Before writing to any of the ADC registers the ADCENCLK bit in the
PCLKCR0 register must be set. For a description of the PCLKCR0 register, see the System Control and
Interrupts section in this manual. When powering up the ADC, use the following sequence:
1. If an external reference is desired, enable this mode using bit 3 (ADCREFSEL) in the ADCCTL1
register.
2. Power up the reference, bandgap, and analog circuits together by setting bits 7-5 (ADCPWDN,
ADCBGPWD, ADCREFPWD) in the ADCCTL1 register.
3. Enable the ADC by setting bit 14 (ADCENABLE) of the ADCCTL1 register.
4. Before performing the first conversion, a delay of 1 millisecond after step 2 is required.
Alternatively, steps 1 through 3 can be performed simultaneously.
When powering down the ADC, all three bits in step 2 can be cleared simultaneously. The ADC power
levels must be controlled via software and they are independent of the state of the device power modes.
NOTE: This type ADC requires a 1ms delay after all of the circuits are powered up. This differs from
the previous type ADC's.
8.1.9 ADC Calibration
Inherent in any converter is a zero offset error and a full scale gain error. The ADC is factory calibrated at
25-degrees Celsius to correct both of these while allowing the user to modify the offset correction for any
application environmental effects, such as the ambient temperature. Except under certain emulation
conditions, or unless a modification from the factory settings is desired, the user is not required to perform
any specific action. The ADC will be properly calibrated during the device boot process.
NOTE: If the system is reset or the ADC module is reset using Bit 15 (RESET) from the ADC
Control Register 1, the Device_cal() routine must be repeated.
498
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.9.1
Factory Settings and Calibration Function
During the fabrication and test process Texas Instruments calibrates several ADC settings along with a
couple of internal oscillator settings. These settings are embedded into the TI reserved OTP memory as
part of a C-callable function named Device_cal(). Called during the startup boot procedure in the Boot
ROM this function writes the factory settings into their respective active registers. Until this occurs, the
ADC and the internal oscillators will not adhere to their specified parameters. If the boot process is
skipped during emulation, the user must ensure the trim settings are written to their respective registers to
ensure the ADC and the internal oscillators meet the specifications in the datasheet. This can be done
either by calling this examples as a part of controlSUITE.unction manually or in the application itself, or by
a direct write via CCS. A gel function is provided as part of the F2806x C/.C++ Header Files and
Peripheral Examples as a part of controlSUITE.
For more information on the Device_cal() function refer to the Boot ROM section in this manual.
Texas Instruments cannot guarantee the parameters specified in the datasheet if a value other than the
factory settings contained in the TI reserved OTP memory is written into the ADC trim registers.
8.1.9.2
ADC Zero Offset Calibration
Zero offset error is defined as the resultant digital value that occurs when converting a voltage at
VREFLO. This base error affects all conversions of the ADC and together with the full scale gain and
linearity specifications, determine the DC accuracy of a converter. The zero offset error can be positive,
meaning that a positive digital value is output when VREFLO is presented, or negative, meaning that a
voltage higher than a one step above VREFLO still reads as a digital zero value. To correct this error, the
two's complement of the error is written into the ADCOFFTRIM register. The value contained in this
register will be applied before the results are available in the ADC result registers. This operation is fully
contained within the ADC core, so the timing for the results will not be affected and the full dynamic range
of the ADC will be maintained for any trim value. Calling the Device_cal() function writes the
ADCOFFTRIM register with the factory calibrated offset error correction, but the user can modify the
ADCOFFTRIM register to compensate for additional offset error induced by the application environment.
This can be done without sacrificing an ADC channel by using the VREFLOCONV bit in the ADCCTRL1
register.
Use the following procedure to re-calibrate the ADC offset:
1. Set ADCOFFTRIM to 80 (50h). This adds an artificial offset to account for negative offset that may
reside in the ADC core.
2. Set ADCCTL1.VREFLOCONV to 1. This internally connects VREFLO to input channel B5. See the
ADCCTL1 register description for more details.
3. Perform multiple conversions on B5 (sample VREFLO) and take an average to account for
board noise. See Section 8.1.3 on how to setup and initiate the ADC to sample B5.
4. Set ADCOFFTRIM to 80 (50h) minus the average obtained in step 3. This removes the artificial
offset from step 1 and creates a two's compliment of the offset error.
5. Set ADCCTL1.VREFLOCONV to 0. This connects B5 back to the external ADCINB5 input pin.
NOTE: The AdcOffsetSelfCal() function located in F2806x_Adc.c in the common header files
performs these steps.
8.1.9.3
ADC Full Scale Gain Calibration
Gain error occurs as an incremental error as the voltage input is increased. Full scale gain error occurs at
the maximum input voltage. As in offset error, gain error can be positive or negative. A positive full scale
gain error means that the full scale digital result is reached before the maximum voltage is input. A
negative full scale error implies that the full digital result will never be achieved. The calibration function
Device_cal() writes a factory trim value to correct the ADC full scale gain error into the ADCREFTRIM
register. This register should not be modified after the Device_cal() function is called.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
499
Analog-to-Digital Converter (ADC)
8.1.9.4
www.ti.com
ADC Bias Current Calibration
To further increase the accuracy of the ADC, the calibration function Device_cal() also writes a factory trim
value to an ADC register for the ADC bias currents. This register should not be modified after the
Device_cal() function is called.
8.1.10 Internal/External Reference Voltage Selection
8.1.10.1 Internal Reference Voltage
The ADC can operate in two different reference modes, selected by the ADCCTL1.ADCREFSEL bit. By
default the internal bandgap is chosen to generate the reference voltage for the ADC. This will convert the
voltage presented according to a fixed scale 0 to 3.3v range. The equation governing conversions in this
mode is:
Digital Value = 0
when Input ≤ 0v
Digital Value = 4096 [(Input – VREFLO)/3.3v]
when 0v < Input < 3.3v
Digital Value = 4095,
when Input ≥ 3.3v
*All fractional values are truncated
**VREFLO must be tied to ground in this mode. This is done internally on some devices.
8.1.10.2 External Reference Voltage
To convert the voltage presented as a ratiometric signal, the external VREFHI/VREFLO pins should be
chosen to generate the reference voltage. In contrast with the fixed 0 to 3.3v input range of the internal
bandgap mode, the ratiometric mode has an input range from VREFLO to VREFHI. Converted values will
scale to this range. For instance, if VREFLO is set to 0.5v and VREFHI is 3.0v, a voltage of 1.75v will be
converted to the digital result of 2048. See the device datasheet for the allowable ranges of VREFLO and
VREFHI. On some devices VREFLO is tied to ground internally, and hence limited to 0v. The equation
governing the conversions in this mode is:
when Input ≤ VREFLO
when VREFLO < Input < VREFHI
when Input ≥ VREFHI
Digital Value = 0
Digital Value = 4096 [(Input – VREFLO)/(VREFHI – VREFLO)]
Digital Value = 4095,
*All fractional values are truncated
500
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.11 ADC Registers
This section contains the ADC registers and bit definitions with the registers grouped by function. All of the
ADC registers are located in Peripheral Frame 2 except the ADCRESULTx registers, which are found in
Peripheral Frame 0. See the device datasheet for specific addresses.
Table 8-2. ADC Configuration and Control Registers (AdcRegs and AdcResult):
Register Name
Address Offset
Size Description
(x16)
ADCCTL1
0x00
1
Control 1 Register (1)
ADCCTL2
0x01
1
Control 2 Register (1)
ADCINTFLG
0x04
1
Interrupt Flag Register
ADCINTFLGCLR
0x05
1
Interrupt Flag Clear Register
ADCINTOVF
0x06
1
Interrupt Overflow Register
ADCINTOVFCLR
0x07
1
Interrupt Overflow Clear Register
INTSEL1N2
0x08
1
Interrupt 1 and 2 Selection Register (1)
INTSEL3N4
0x09
1
Interrupt 3 and 4 Selection Register (1)
INTSEL5N6
0x0A
1
Interrupt 5 and 6 Selection Register (1)
INTSEL7N8
0x0B
1
Interrupt 7 and 8 Selection Register (1)
INTSEL9N10
0x0C
1
Interrupt 9 Selection Register (reserved Interrupt 10 Selection) (1)
SOCPRICTL
0x10
1
SOC Priority Control Register (1)
ADCSAMPLEMODE
0x12
1
Sampling Mode Register (1)
ADCINTSOCSEL1
0x14
1
Interrupt SOC Selection 1 Register (for 8 channels) (1)
ADCINTSOCSEL2
0x15
1
Interrupt SOC Selection 2 Register (for 8 channels) (1)
ADCSOCFLG1
0x18
1
SOC Flag 1 Register (for 16 channels)
ADCSOCFRC1
0x1A
1
SOC Force 1 Register (for 16 channels)
ADCSOCOVF1
0x1C
1
SOC Overflow 1 Register (for 16 channels)
ADCSOCOVFCLR1
0x1E
1
SOC Overflow Clear 1 Register (for 16 channels)
0x20 - 0x2F
1
SOC0 Control Register to SOC15 Control Register (1)
ADCREFTRIM
0x40
1
Reference Trim Register (1)
ADCOFFTRIM
0x41
1
Offset Trim Register (1)
COMPHYSTCTL
0x4C
1
Comp Hysteresis Control Register (1)
0x4F
1
Revision Register
0x00 - 0x0F (2)
1
ADC Result 0 Register to ADC Result 15 Register
ADCSOC0CTL - ADCSOC15CTL
ADCREV – reserved
ADCRESULT0 - ADCRESULT15
(1)
This register is EALLOW protected.
The base address of the ADCRESULT registers differs from the base address of the other ADC registers. In the header files, the
ADCRESULT registers are found in the AdcResult register file, not AdcRegs.
(2)
8.1.11.1 ADC Control Register 1 (ADCCTL1)
NOTE: The following ADC Control Register is EALLOW protected.
Figure 8-8. ADC Control Register 1 (ADCCTL1) (Address Offset 00h)
15
14
13
RESET
ADCENABLE
ADCBSY
12
ADCBSYCHN
8
R-0/W-1
R-1
R-0
R-0
7
6
5
4
3
2
1
0
ADCPWN
ADCBGPWD
ADCREFPWD
Reserved
ADCREFSEL
INTPULSEPOS
VREFLO
CONV
TEMPCONV
R/W-0
R/W-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; R-0/W-1 = always read as 0, write 1 to set; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
501
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-3. ADC Control Register 1 (ADCCTL1) Field Descriptions
Bit
Field
15
RESET
Value Description
ADC module software reset. This bit causes a master reset on the entire ADC module. All register bits
and state machines are reset to the initial state as occurs when the device reset pin is pulled low (or
after a power-on reset). This is a one-time-effect bit, meaning this bit is self-cleared immediately after it
is set to 1. Read of this bit always returns a 0. Also, the reset of ADC has a latency of two clock cycles
(that is, other ADC control register bits should not be modified until two clock cycles after the instruction
that resets the ADC.
0
no effect
1
Resets entire ADC module (bit is then set back to 0 by ADC logic)
Note: The ADC module is reset during a system reset. If an ADC module reset is desired at any other
time, you can do so by writing a 1 to this bit. After two clock cycles, you can then write the appropriate
values to the ADCCTL1 register bits. Assembly code:
MOV ADCCTL1, #1xxxxxxxxxxxxxxxb ; Resets the ADC (RESET = 1)
NOP ; Delay two cycles
NOP
MOV ADCCTL1, #0xxxxxxxxxxxxxxxb ; Set to user-desired value
Note: The second MOV is not required if the default configuration is sufficient.
Note: If the system is reset or the ADC module is reset using Bit 15 (RESET) from the ADC Control
Register 1, the Device_cal() routine must be repeated .
14
13
ADCENABLE
ADC Enable
0
ADC disabled (does not power down ADC)
1
ADC Enabled. Must set before an ADC conversion (recommend that it be set directly after setting ADC
power-up bits
ADCBSY
ADC Busy
Set when ADC SOC is generated, cleared per below. Used by the ADC state machine to determine if
ADC is available to sample.
Sequential Mode: Cleared 4 ADC clocks after negative edge of S/H pulse
Simultaneous Mode: Cleared 14 ADC clocks after negative edge of S/H pulse
0
ADC is available to sample next channel
1
ADC is busy and cannot sample another channel
12-8 ADCBSYCHN
Set when ADC SOC for current SOC is generated
When ADCBSY = 0: holds the value of the last converted SOC
When ADCBSY = 1: reflects SOC currently being processed
502
00h
SOC0 is currently processing or was last SOC converted
01h
SOC1 is currently processing or was last SOC converted
02h
SOC2 is currently processing or was last SOC converted
03h
SOC3 is currently processing or was last SOC converted
04h
SOC4 is currently processing or was last SOC converted
05h
SOC5 is currently processing or was last SOC converted
06h
SOC6 is currently processing or was last SOC converted
07h
SOC7 is currently processing or was last SOC converted
08h
SOC8 is currently processing or was last SOC converted
09h
SOC9 is currently processing or was last SOC converted
0Ah
SOC10 is currently processing or was last SOC converted
0Bh
SOC11 is currently processing or was last SOC converted
0Ch
SOC12 is currently processing or was last SOC converted
0Dh
SOC13 is currently processing or was last SOC converted
0Eh
SOC14 is currently processing or was last SOC converted
0Fh
ADCINB15 is currently processing or was last SOC converted
1xh
Invalid value
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-3. ADC Control Register 1 (ADCCTL1) Field Descriptions (continued)
Bit
7
Field
Value Description
ADCPWDN
ADC power down (active low).
This bit controls the power up and power down of all the analog circuitry inside the analog core except
the bandgap and reference circuitry
6
5
The analog circuitry inside the core is powered up
Bandgap circuit power down (active low)
0
Bandgap circuitry is powered down
1
Bandgap buffer's circuitry inside core is powered up
ADCREFPWD
Reserved
3
ADCREFSEL
1
All analog circuitry inside the core except the bandgap and reference circuitry is powered down
1
ADCBGPWD
4
2
0
Reference buffers circuit power down (active low)
0
Reference buffers circuitry is powered down
1
Reference buffers circuitry inside the core is powered up
0
Reads return a zero; Writes have no effect.
Internal or external reference select
0
Internal Bandgap used for reference generation
1
External VREFHI or VREFLO pins used for reference generation. On some devices the VREFHI pin is
shared with ADCINA0. In this case ADCINA0 will not be available for conversions in this mode. On
some devices the VREFLO pin is shared with VSSA. In this case the VREFLO voltage cannot be varied.
INTPULSEPOS
INT Pulse Generation control
0
INT pulse generation occurs when ADC begins conversion (neg edge of sample pulse od the sampled
signal)
1
INT pulse generation occurs 1 cycle prior to ADC result latching into its result register
VREFLOCONV
VREFLO Convert.
When enabled, internally connects VREFLO to the ADC channel B5 and disconnects the ADCINB5 pin
from the ADC. Whether the pin ADCINB5 exists on the device does not affect this function. Any external
circuitry on the ADCINB5 pin is unaffected by this mode.
0
0
ADCINB5 is passed to the ADC module as normal, VREFLO connection to ADCINB5 is disabled
1
VREFLO internally connected to the ADC for sampling
TEMPCONV
Temperature sensor convert. When enabled internally connects the internal temperature sensor to ADC
channel A5 and disconnects the ADCINA5 pin from the ADC. Whether the pin ADCINA5 exists on the
device does not affect this function. Any external circuitry on the ADCINA5 pin is unaffected by this
mode
0
ADCINA5 is passed to the ADC module as normal, internal temperature sensor connection to ADCINA5
is disabled.
1
Temperature sensor is internally connected to the ADC for sampling
8.1.11.2 ADC Control Register 2 (ADCCTL2)
NOTE: The following ADC Control Register is EALLOW protected.
Figure 8-9. ADC Control Register 2 (ADCCTL2) (Address Offset 01h)
15
2
1
0
Reserved
3
CLKDIV4EN
ADCNONOVERLAP
CLKDIV2EN
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
503
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-4. ADC Control Register 2 (ADCCTL2) Field Descriptions
Bit
Field
15-3
Value
Reserved
2
0
Reads return a zero; writes have no effect.
CLKDIV4EN
1
ADC Clock Prescaler. Used in conjunction with CLKDIV2EN to divide ADCCLK
from SYSCLK. See usage note below for details.
0
ADCCLK = SYSCLK or SYSCLK / 2
1
ADCCLK = SYSCLK or SYSCLK / 4
ADCNONOVERLAP
0
Description
ADCNONOVERLAP control bit
0
Overlap of sample and conversion is allowed
1
Overlap of sample is not allowed
CLKDIV2EN
ADC Clock Prescaler. Used in conjunction with CLKDIV4EN to divide ADCCLK
from SYSCLK. See usage note below for details.
0
ADCCLK = SYSCLK
1
ADCCLK = SYSCLK / 2 or SYSCLK / 4
CLKDIV2EN and CLKDIV4EN usage note:
CLKDIV2EN
CLKDIV4EN
ADCCLK
0
0
SYSCLK
0
1
SYSCLK
1
0
SYSCLK / 2
1
1
SYSCLK / 4
8.1.11.3 ADC Interrupt Registers
Figure 8-10. ADC Interrupt Flag Register (ADCINTFLG) (Address Offset 04h)
15
9
8
Reserved
ADCINT9
R-0
R-0
7
6
5
4
3
2
1
0
ADCINT8
ADCINT7
ADCINT6
ADCINT5
ADCINT4
ADCINT3
ADCINT2
ADCINT1
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-5. ADC Interrupt Flag Register (ADCINTFLG) Field Descriptions
Bit
Field
15-9
Reserved
8-0
ADCINTx
(x = 9 to 1)
Value
0
Description
Reads return a zero; Writes have no effect.
ADC Interrupt Flag Bits: Reading this bit indicates if an ADCINT pulse was generated
0
No ADC interrupt pulse generated
1
ADC Interrupt pulse generated
If the ADC interrupt is placed in continuous mode (INTSELxNy register) then further interrupt pulses
are generated whenever a selected EOC event occurs even if the flag bit is set.
If the continuous mode is not enabled, then no further interrupt pulses are generated until the user
clears this flag bit using the ADCINTFLGCLR register. The ADCINTOVF flag will be set if EOC
events are generated while the ADCINTFLG flag is set. Both ADCINTFLG and ADCINTOVF flags
must be cleared before normal interrupt operation can resume.
Boundary condition for clearing or setting flag bits: If hardware is trying to set bit while
software tries to clear the bit in the same cycle, the following will take place:
1.
2.
3.
504
SW has priority, and will clear the flag
HW set will be discarded, no signal will propagate to the PIE form the latch
Overflow flag or condition will be generated
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-11. ADC Interrupt Flag Clear Register (ADCINTFLGCLR) (Address Offset 05h)
15
9
8
Reserved
ADCINT9
R-0
R/W-0
7
6
5
4
3
2
1
0
ADCINT8
ADCINT7
ADCINT6
ADCINT5
ADCINT4
ADCINT3
ADCINT2
ADCINT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-6. ADC Interrupt Flag Clear Register (ADCINTFLGCLR) Field Descriptions
Bit
Field
Value
15-9
Reserved
0
8-0
ADCINTx
(x = 9 to 1)
Description
Reads return a zero; Writes have no effect.
ADC interrupt Flag Clear Bit
0
No action.
1
Clears respective flag bit in the ADCINTFLG register. If software tries to set this bit on the same
clock cycle that hardware tries to set the flag bit in the ADCINTFLG register, then hardware has
priority and the ADCINTFLG bit will be set. In this case the overflow bit in the ADCINTOVF register
will not be affected regardless of whether the ADCINTFLG bit was previously set or not.
Figure 8-12. ADC Interrupt Overflow Register (ADCINTOVF) (Address Offset 06h)
15
9
8
Reserved
ADCINT9
R-0
R-0
7
6
5
4
3
2
1
0
ADCINT8
ADCINT7
ADCINT6
ADCINT5
ADCINT4
ADCINT3
ADCINT2
ADCINT1
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-7. ADC Interrupt Overflow Register (ADCINTOVF) Field Descriptions
Bit
Field
Value
15-9
Reserved
0
8-0
ADCINTx
(x = 9 to 1)
Description
Reserved
ADC Interrupt Overflow Bits.
Indicates if an overflow occurred when generating ADCINT pulses. If the respective ADCINTFLG bit
is set and a selected additional EOC trigger is generated, then an overflow condition occurs.
0
No ADC interrupt overflow event detected.
1
ADC Interrupt overflow event detected.
The overflow bit does not care about the continuous mode bit state. An overflow condition is
generated irrespective of this mode selection.
Figure 8-13. ADC Interrupt Overflow Clear Register (ADCINTOVFCLR) (Address Offset 07h)
15
9
8
Reserved
ADCINT9
R-0
R-0/W-1
7
6
5
4
3
2
1
0
ADCINT8
ADCINT7
ADCINT6
ADCINT5
ADCINT4
ADCINT3
ADCINT2
ADCINT1
R-0/W-1
R-0/W-1
R-0/W-1
R-0/W-1
R-0/W-1
R-0/W-1
R-0/W-1
R-0/W-1
LEGEND: R/W = Read/Write; R = Read only; R-0/W-1 =always read 0, write 1 to set; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
505
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-8. ADC Interrupt Overflow Clear Register (ADCINTOVFCLR) Field Descriptions
Bit
Field
Value
15-9
Reserved
0
8-0
ADCINTx
(x = 9 to 1)
Description
Reads return a zero; Writes have no effect.
ADC Interrupt Overflow Clear Bits.
0
No action.
1
Clears the respective overflow bit in the ADCINTOVF register. If software tries to set this bit on the
same clock cycle that hardware tries to set the overflow bit in the ADCINTOVF register, then
hardware has priority and the ADCINTOVF bit will be set.
NOTE: The following Interrupt Select Registers are EALLOW protected.
Figure 8-14. Interrupt Select 1 And 2 Register (INTSEL1N2) (Address Offset 08h)
15
14
13
Reserved
INT2CONT
INT2E
12
INT2SEL
8
R-0
R/W-0
R/W-0
R/W-0
7
6
5
Reserved
INT1CONT
INT1E
4
INT1SEL
0
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Figure 8-15. Interrupt Select 3 And 4 Register (INTSEL3N4) (Address Offset 09h)
15
14
13
Reserved
INT4CONT
INT4E
12
INT4SEL
8
R-0
R/W-0
R/W-0
R/W-0
7
6
5
Reserved
INT3CONT
INT3E
INT3SEL
R-0
R/W-0
R/W-0
R/W-0
4
0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Figure 8-16. Interrupt Select 5 And 6 Register (INTSEL5N6) (Address Offset 0Ah)
15
14
13
Reserved
INT6CONT
INT6E
12
INT6SEL
8
R-0
R/W-0
R/W-0
R/W-0
7
6
5
Reserved
INT5CONT
INT5E
4
INT5SEL
0
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Figure 8-17. Interrupt Select 7 And 8 Register (INTSEL7N8) (Address Offset 0Bh)
15
14
13
Reserved
INT8CONT
INT8E
12
INT8SEL
8
R-0
R/W-0
R/W-0
R/W-0
7
6
5
Reserved
INT7CONT
INT7E
4
INT7SEL
0
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
506
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-18. Interrupt Select 9 And 10 Register (INTSEL9N10) (Address Offset 0Ch)
15
8
Reserved
R-0
7
6
5
Reserved
INT9CONT
INT9E
4
INT9SEL
0
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-9. INTSELxNy Register Field Descriptions
Bit
Field
15
Reserved
14
INTyCONT
13
12-8
0
ADCINTy Continuous Mode Enable
0
No further ADCINTy pulses are generated until ADCINTy flag (in ADCINTFLG register)
is cleared by user.
1
ADCINTy pulses are generated whenever an EOC pulse is generated irrespective if the
flag bit is cleared or not.
ADCINTy Interrupt Enable
0
ADCINTy is disabled.
1
ADCINTy is enabled.
INTySEL
Reserved
6
INTxCONT
Description
Reserved
INTyE
7
5
Value
ADCINTy EOC Source Select
00h
EOC0 is trigger for ADCINTy
01h
EOC1 is trigger for ADCINTy
02h
EOC2 is trigger for ADCINTy
03h
EOC3 is trigger for ADCINTy
04h
EOC4 is trigger for ADCINTy
05h
EOC5 is trigger for ADCINTy
06h
EOC6 is trigger for ADCINTy
07h
EOC7 is trigger for ADCINTy
08h
EOC8 is trigger for ADCINTy
09h
EOC9 is trigger for ADCINTy
0Ah
EOC10 is trigger for ADCINTy
0Bh
EOC11 is trigger for ADCINTy
0Ch
EOC12 is trigger for ADCINTy
0Dh
EOC13 is trigger for ADCINTy
0Eh
EOC14 is trigger for ADCINTy
0Fh
EOC15 is trigger for ADCINTy
1xh
Invalid value.
0
Reads return a zero; Writes have no effect.
ADCINTx Continuous Mode Enable.
0
No further ADCINTx pulses are generated until ADCINTx flag (in ADCINTFLG register)
is cleared by user.
1
ADCINTx pulses are generated whenever an EOC pulse is generated irrespective if the
flag bit is cleared or not.
INTxE
ADCINTx Interrupt Enable
0
ADCINTx is disabled.
1
ADCINTx is enabled .
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
507
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-9. INTSELxNy Register Field Descriptions (continued)
Bit
Field
4-0
INTxSEL
Value
Description
ADCINTx EOC Source Select
00h
EOC0 is trigger for ADCINTx
01h
EOC1 is trigger for ADCINTx
02h
EOC2 is trigger for IADCNTx
03h
EOC3 is trigger for ADCINTx
04h
EOC4 is trigger for ADCINTx
05h
EOC5 is trigger for ADCINTx
06h
EOC6 is trigger for ADCINTx
07h
EOC7 is trigger for ADCINTx
08h
EOC8 is trigger for ADCINTx
09h
EOC9 is trigger for ADCINTx
0Ah
EOC10 is trigger for ADCINTx
0Bh
EOC11 is trigger for ADCINTx
0Ch
EOC12 is trigger for ADCINTx
.0Dh
EOC13 is trigger for ADCINTx
0Eh
EOC14 is trigger for ADCINTx
0Fh
EOC15 is trigger for ADCINTx
1xh
Invalid value.
8.1.11.4 ADC Priority Register
NOTE: The following SOC Priority Control Register is EALLOW protected.
Figure 8-19. ADC Start of Conversion Priority Control Register (SOCPRICTL)
15
14
11
10
5
4
0
ONESHOT
Reserved
RRPOINTER
SOCPRIORITY
R/W-0
R-0
R-20h
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-10. SOCPRICTL Register Field Descriptions
Bit
Field
15
ONESHOT
14-11
508
Reserved
Value
Description
0
One shot mode disabled
1
One shot mode enabled
Reads return a zero; Writes have no effect.
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-10. SOCPRICTL Register Field Descriptions (continued)
Bit
10-5
Field
Value
RRPOINTER
Round Robin Pointer. Holds the value of the last converted round robin SOCx to be used by the
round robin scheme to determine order of conversions.
00h
SOC0 was last round robin SOC to convert. SOC1 is highest round robin priority.
01h
SOC1 was last round robin SOC to convert. SOC2 is highest round robin priority.
02h
SOC2 was last round robin SOC to convert. SOC3 is highest round robin priority.
03h
SOC3 was last round robin SOC to convert. SOC4 is highest round robin priority.
04h
SOC4 was last round robin SOC to convert. SOC5 is highest round robin priority.
05h
SOC5 was last round robin SOC to convert. SOC6 is highest round robin priority.
06h
SOC6 was last round robin SOC to convert. SOC7 is highest round robin priority.
07h
SOC7 was last round robin SOC to convert. SOC8 is highest round robin priority.
08h
SOC8 was last round robin SOC to convert. SOC9 is highest round robin priority.
09h
SOC9 was last round robin SOC to convert. SOC10 is highest round robin priority.
0Ah
SOC10 was last round robin SOC to convert. SOC11 is highest round robin priority.
0Bh
SOC11 was last round robin SOC to convert. SOC12 is highest round robin priority.
0Ch
SOC12 was last round robin SOC to convert. SOC13 is highest round robin priority.
0Dh
SOC13 was last round robin SOC to convert. SOC14 is highest round robin priority.
0Eh
SOC14 was last round robin SOC to convert. SOC15 is highest round robin priority.
0Fh
SOC15 was last round robin SOC to convert. SOC0 is highest round robin priority.
1xh
Invalid value
20h
Reset value to indicate no SOC has been converted. SOC0 is highest round robin priority. Set to
this value when the device is reset, when the ADCCTL1.RESET bit is set, or when the SOCPRICTL
register is written. In the latter case, if a conversion is currently in progress, it will complete and
then the new priority will take effect.
Others
4-0
Description
SOCPRIORITY
Invalid selection.
SOC Priority.
Determines the cutoff point for priority mode and round robin arbitration for SOCx
00h
SOC priority is handled in round robin mode for all channels.
01h
SOC0 is high priority, rest of channels are in round robin mode.
02h
SOC0-SOC1 are high priority, SOC2-SOC15 are in round robin mode.
03h
SOC0-SOC2 are high priority, SOC3-SOC15 are in round robin mode.
04h
SOC0-SOC3 are high priority, SOC4-SOC15 are in round robin mode.
05h
SOC0-SOC4 are high priority, SOC5-SOC15 are in round robin mode.
06h
SOC0-SOC5 are high priority, SOC6-SOC15 are in round robin mode.
07h
SOC0-SOC6 are high priority, SOC7-SOC15 are in round robin mode.
08h
SOC0-SOC7 are high priority, SOC8-SOC15 are in round robin mode.
09h
SOC0-SOC8 are high priority, SOC9-SOC15 are in round robin mode.
0Ah
SOC0-SOC9 are high priority, SOC10-SOC15 are in round robin mode.
0Bh
SOC0-SOC10 are high priority, SOC11-SOC15 are in round robin mode.
0Ch
SOC0-SOC11 are high priority, SOC12-SOC15 are in round robin mode.
0Dh
SOC0-SOC12 are high priority, SOC13-SOC15 are in round robin mode.
0Eh
SOC0-SOC13 are high priority, SOC14-SOC15 are in round robin mode.
0Fh
SOC0-SOC14 are high priority, SOC15 is in round robin mode.
10h
All SOCs are in high priority mode, arbitrated by SOC number
Others
Invalid selection.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
509
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.11.5 ADC SOC Registers
NOTE: The following ADC Sample Mode Register is EALLOW protected.
Figure 8-20. ADC Sample Mode Register (ADCSAMPLEMODE) (Address Offset 12h)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
SIMULEN14
SIMULEN12
SIMULEN10
SIMULEN8
SIMULEN6
SIMULEN4
SIMULEN2
SIMULEN0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-11. ADC Sample Mode Register (ADCSAMPLEMODE) Field Descriptions
Bit
15:8
7
6
5
4
510
Field
Reserved
Value
0
SIMULEN14
Description
Reserved
Simultaneous sampling enable for SOC14/SOC15. Couples SOC14 and SOC15 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC14 or SOC15.
0
Single sample mode set for SOC14 and SOC15. All bits of CHSEL field define channel to be
converted. EOC14 associated with SOC14. EOC15 associated with SOC15. SOC14’s result placed
in ADCRESULT14 register. SOC15’s result placed in ADCRESULT15.
1
Simultaneous sample for SOC14 and SOC15. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC14 and EOC15 associated with SOC14 and SOC15 pair. SOC14’s
and SOC15’s results will be placed in ADCRESULT14 and ADCRESULT15 registers, respectively.
SIMULEN12
Simultaneous sampling enable for SOC12/SOC13. Couples SOC12 and SOC13 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC12 or SOC13.
0
Single sample mode set for SOC12 and SOC13. All bits of CHSEL field define channel to be
converted. EOC12 associated with SOC12. EOC13 associated with SOC13. SOC12’s result placed
in ADCRESULT12 register. SOC13’s result placed in ADCRESULT13.
1
Simultaneous sample for SOC12 and SOC13. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC12 and EOC13 associated with SOC12 and SOC13 pair. SOC12’s
and SOC13’s results will be placed in ADCRESULT12 and ADCRESULT13 registers, respectively.
SIMULEN10
Simultaneous sampling enable for SOC10/SOC11. Couples SOC10 and SOC11 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC10 or SOC11.
0
Single sample mode set for SOC10 and SOC11. All bits of CHSEL field define channel to be
converted. EOC10 associated with SOC10. EOC11 associated with SOC11. SOC10’s result placed
in ADCRESULT10 register. SOC11’s result placed in ADCRESULT11.
1
Simultaneous sample for SOC10 and SOC11. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC10 and EOC11 associated with SOC10 and SOC11 pair. SOC10’s
and SOC11’s results will be placed in ADCRESULT10 and ADCRESULT11 registers, respectively.
SIMULEN8
Simultaneous sampling enable for SOC8/SOC9. Couples SOC8 and SOC9 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC8 or SOC9.
0
Single sample mode set for SOC8 and SOC9. All bits of CHSEL field define channel to be
converted. EOC8 associated with SOC8. EOC9 associated with SOC9. SOC8’s result placed in
ADCRESULT8 register. SOC9’s result placed in ADCRESULT9.
1
Simultaneous sample for SOC8 and SOC9. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC8 and EOC9 associated with SOC8 and SOC9 pair. SOC8’s and
SOC9’s results will be placed in ADCRESULT8 and ADCRESULT9 registers, respectively.
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-11. ADC Sample Mode Register (ADCSAMPLEMODE) Field Descriptions (continued)
Bit
3
Field
Value
SIMULEN6
2
Simultaneous sampling enable for SOC6/SOC7. Couples SOC6 and SOC7 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC6 or SOC7.
0
Single sample mode set for SOC6 and SOC7. All bits of CHSEL field define channel to be
converted. EOC6 associated with SOC6. EOC7 associated with SOC7. SOC6’s result placed in
ADCRESULT6 register. SOC7’s result placed in ADCRESULT7.
1
Simultaneous sample for SOC6 and SOC7. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC6 and EOC7 associated with SOC6 and SOC7 pair. SOC6’s and
SOC7’s results will be placed in ADCRESULT6 and ADCRESULT7 registers, respectively.
SIMULEN4
1
Simultaneous sampling enable for SOC4/SOC5. Couples SOC4 and SOC5 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC4 or SOC5.
0
Single sample mode set for SOC4 and SOC5. All bits of CHSEL field define channel to be
converted. EOC4 associated with SOC4. EOC5 associated with SOC5. SOC4’s result placed in
ADCRESULT4 register. SOC5’s result placed in ADCRESULT5.
1
Simultaneous sample for SOC4 and SOC5. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC4 and EOC5 associated with SOC4 and SOC5 pair. SOC4’s and
SOC5’s results will be placed in ADCRESULT4 and ADCRESULT5 registers, respectively.
SIMULEN2
0
Description
Simultaneous sampling enable for SOC2/SOC3. Couples SOC2 and SOC3 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC2 or SOC3.
0
Single sample mode set for SOC2 and SOC3. All bits of CHSEL field define channel to be
converted. EOC2 associated with SOC2. EOC3 associated with SOC3. SOC2’s result placed in
ADCRESULT2 register. SOC3’s result placed in ADCRESULT3.
1
Simultaneous sample for SOC2 and SOC3. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC2 and EOC3 associated with SOC2 and SOC3 pair. SOC2’s and
SOC3’s results will be placed in ADCRESULT2 and ADCRESULT3 registers, respectively.
SIMULEN0
Simultaneous sampling enable for SOC0/SOC1. Couples SOC0 and SOC1 in simultaneous
sampling mode. See section 1.5 for details. This bit should not be set when the ADC is actively
converting SOC0 or SOC1.
0
Single sample mode set for SOC0 and SOC1. All bits of CHSEL field define channel to be
converted. EOC0 associated with SOC0. EOC1 associated with SOC1. SOC0’s result placed in
ADCRESULT0 register. SOC1’s result placed in ADCRESULT1.
1
Simultaneous sample for SOC0 and SOC1. Lowest three bits of CHSEL field define the pair of
channels to be converted. EOC0 and EOC1 associated with SOC0 and SOC1 pair. SOC0’s and
SOC1’s results will be placed in ADCRESULT0 and ADCRESULT1 registers, respectively.
NOTE: The following ADC Interrupt SOC Select Registers are EALLOW protected.
Figure 8-21. ADC Interrupt Trigger SOC Select 1 Register (ADCINTSOCSEL1) (Address Offset 14h)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
SOC7
SOC6
SOC5
SOC4
SOC3
SOC2
SOC1
SOC0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-12. ADC Interrupt Trigger SOC Select 1 Register (ADCINTSOCSEL1) Register Field
Descriptions
Bit
15--0
Field
Value
SOCx
(x = 7 to 0)
Description
SOCx ADC Interrupt Trigger Select. Select ADCINT to trigger SOCx. The ADCINT trigger is OR'ed
with the trigger selected by the TRIGSEL field in the ADCSOCxCTL register, as well as the
software force trigger signal from the ADCSOCFRC1 register.
00
No ADCINT will trigger SOCx.
01
ADCINT1 will trigger SOCx.
10
ADCINT2 will trigger SOCx.
11
Invalid selection.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
511
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-22. ADC Interrupt Trigger SOC Select 2 Register (ADCINTSOCSEL2) (Address Offset 15h)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
SOC15
SOC14
SOC13
SOC12
SOC11
SOC10
SOC9
SOC8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-13. ADC Interrupt Trigger SOC Select 2 Register (ADCINTSOCSEL2) Field Descriptions
Bit
Field
15-0
Value
SOCx
(x = 15 to 8)
Description
SOCx ADC Interrupt Trigger Select. Select ADCINT to trigger SOCx. The ADCINT trigger is OR'ed
with the trigger selected by the TRIGSEL field in the ADCSOCxCTL register, as well as the
software force trigger signal from the ADCSOCFRC1 register.
00
No ADCINT will trigger SOCx.
01
ADCINT1 will trigger SOCx.
10
ADCINT2 will trigger SOCx.
11
Invalid selection.
Figure 8-23. ADC SOC Flag 1 Register (ADCSOCFLG1) (Address Offset 18h)
15
14
13
12
11
10
9
8
SOC15
SOC14
SOC13
SOC12
SOC11
SOC10
SOC9
SOC8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
SOC7
SOC6
SOC5
SOC4
SOC3
SOC2
SOC1
SOC0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-14. ADC SOC Flag 1 Register (ADCSOCFLG1) Field Descriptions
Bit
Field
15-0
Value
SOCx
(x = 15 to 0)
Description
SOCx Start of Conversion Flag. Indicates the state of individual SOC conversions.
0
No sample pending for SOCx.
1
Trigger has been received and sample is pending for SOCx.
The bit will be automatically cleared when the respective SOCx conversion is started. If contention
exists where this bit receives both a request to set and a request to clear on the same cycle,
regardless of the source of either, this bit will be set and the request to clear will be ignored. In this
case the overflow bit in the ADCSOCOVF1 register will not be affected regardless of whether this
bit was previously set or not.
Figure 8-24. ADC SOC Force 1 Register (ADCSOCFRC1) (Address Offset 1Ah)
15
14
13
12
11
10
9
8
SOC15
SOC14
SOC13
SOC12
SOC11
SOC10
SOC9
SOC8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
SOC7
SOC6
SOC5
SOC4
SOC3
SOC2
SOC1
SOC0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
512
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-15. ADC SOC Force 1 Register (ADCSOCFRC1) Field Descriptions
Bit
Field
15-0
Value
SOCx
(x = 15 to 0)
Description
SOCx Force Start of Conversion Flag. Writing a 1 will force to 1 the respective SOCx flag bit in the
ADCSOCFLG1 register. This can be used to initiate a software initiated conversion. Writes of 0 are
ignored.
0
No action.
1
Force SOCx flag bit to 1. This will cause a conversion to start once priority is given to SOCx.
If software tries to set this bit on the same clock cycle that hardware tries to clear the SOCx bit in
the ADCSOCFLG1 register, then software has priority and the ADCSOCFLG1 bit will be set. In this
case the overflow bit in the ADCSOCOVF1 register will not be affected regardless of whether the
ADCSOCFLG1 bit was previously set or not.
Figure 8-25. ADC SOC Overflow 1 Register (ADCSOCOVF1) (Address Offset 1Ch)
15
14
13
12
11
10
9
8
SOC15
SOC14
SOC13
SOC12
SOC11
SOC10
SOC9
SOC8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
SOC7
SOC6
SOC5
SOC4
SOC3
SOC2
SOC1
SOC0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-16. ADC SOC Overflow 1 Register (ADCSOCOVF1) Field Descriptions
Bit
Field
15-0
Value
SOCx
(x = 15 to 0)
Description
SOCx Start of Conversion Overflow Flag. Indicates an SOCx event was generated while an existing
SOCx event was already pending.
0
No SOCx event overflow
1
SOCx event overflow
An overflow condition does not stop SOCx events from being processed. It simply is an indication
that a trigger was missed
Figure 8-26. ADC SOC Overflow Clear 1 Register (ADCSOCOVFCLR1) (Address Offset 1Eh)
15
14
13
12
11
10
9
8
SOC15
SOC14
SOC13
SOC12
SOC11
SOC10
SOC9
SOC8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
SOC7
SOC6
SOC5
SOC4
SOC3
SOC2
SOC1
SOC0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-17. ADC SOC Overflow Clear 1 Register (ADCSOCOVFCLR1) Field Descriptions
Bit
15-0
Field
Value
SOCx
(x = 15 to 0)
Description
SOCx Clear Start of Conversion Overflow Flag. Writing a 1 will clear the respective SOCx overflow
flag in the ADCSOCOVF1 register. Writes of 0 are ignored.
0
No action.
1
Clear SOCx overflow flag.
If software tries to set this bit on the same clock cycle that hardware tries to set the overflow bit in
the ADCSOCOVF1 register, then hardware has priority and the ADCSOCOVF1 bit will be set.
NOTE: The following ADC SOC0 - SOC15 Control Registers are EALLOW protected.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
513
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-27. ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) (Address Offset 20h - 2Fh)
15
11
10
9
6
5
0
TRIGSEL
Reserved
CHSEL
ACQPS
R/W-0
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-18. ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) Register Field Descriptions
Bit
15-11
Field
Value
TRIGSEL
Description
SOCx Trigger Source Select.
Configures which trigger will set the respective SOCx flag in the ADCSOCFLG1 register to initiate a
conversion to start once priority is given to SOCx. This setting can be overridden by the respective
SOCx field in the ADCINTSOCSEL1 or ADCINTSOCSEL2 register.
00h
ADCTRIG0 - Software only.
01h
ADCTRIG1 - CPU Timer 0, TINT0n
02h
ADCTRIG2 - CPU Timer 1, TINT1n
03h
ADCTRIG3 - CPU Timer 2, TINT2n
04h
ADCTRIG4 – XINT2, XINT2SOC
05h
ADCTRIG5 – ePWM1, ADCSOCA
06h
ADCTRIG6 – ePWM1, ADCSOCB
07h
ADCTRIG7 – ePWM2, ADCSOCA
08h
ADCTRIG8 – ePWM2, ADCSOCB
09h
ADCTRIG9 – ePWM3, ADCSOCA
0Ah
ADCTRIG10 – ePWM3, ADCSOCB
0Bh
ADCTRIG11 – ePWM4, ADCSOCA
0Ch
ADCTRIG12 – ePWM4, ADCSOCB
0Dh
ADCTRIG13 – ePWM5, ADCSOCA
0Eh
ADCTRIG14 – ePWM5, ADCSOCB
0Fh
ADCTRIG15 – ePWM6, ADCSOCA
10h
ADCTRIG16 – ePWM6, ADCSOCB
11h
ADCTRIG17 - ePWM7, ADCSOCA
12h
ADCTRIG18 - ePWM7, ADCSOCB
13h
ADCTRIG19 - ePWM8, ADCSOCA
14h
ADCTRIG20 - ePWM8, ADCSOCB
Others
10
514
Reserved
Invalid selection.
Reads return a zero; Writes have no effect.
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-18. ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) Register Field
Descriptions (continued)
Bit
Field
9-6
CHSEL
Value
Description
SOCx Channel Select. Selects the channel to be converted when SOCx is received by the ADC.
Sequential Sampling Mode (SIMULENx = 0):
0h
ADCINA0
1h
ADCINA1
2h
ADCINA2
3h
ADCINA3
4h
ADCINA4
5h
ADCINA5
6h
ADCINA6
7h
ADCINA7
8h
ADCINB0
9h
ADCINB1
Ah
ADCINB2
Bh
ADCINB3
Ch
ADCINB4
Dh
ADCINB5
Eh
ADCINB6
Fh
ADCINB7
Simultaneous Sampling Mode (SIMULENx = 1):
0h
ADCINA0/ADCINB0 pair
1h
ADCINA1/ADCINB1 pair
2h
ADCINA2/ADCINB2 pair
3h
ADCINA3/ADCINB3 pair
4h
ADCINA4/ADCINB4 pair
5h
ADCINA5/ADCINB5 pair
6h
ADCINA6/ADCINB6 pair
7h
ADCINA7/ADCINB7 pair
8h
Invalid selection.
9h
Invalid selection.
Ah
Invalid selection.
Bh
Invalid selection.
Ch
Invalid selection.
Dh
Invalid selection.
Eh
Invalid selection.
Fh
Invalid selection.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
515
Analog-to-Digital Converter (ADC)
www.ti.com
Table 8-18. ADC SOC0 - SOC15 Control Registers (ADCSOCxCTL) Register Field
Descriptions (continued)
Bit
Field
5-0
ACQPS
Value
Description
SOCx Acquisition Prescale. Controls the sample and hold window for SOCx.
00h
Invalid selection.
01h
Invalid selection.
02h
Invalid selection.
03h
Invalid selection.
04h
Invalid selection.
05h
Invalid selection.
06h
Sample window is 7 cycles long (6 + 1 clock cycles).
07h
Sample window is 8 cycles long (7 + 1 clock cycles).
08h
Sample window is 9 cycles long (8 + 1 clock cycles).
09h
Sample window is 10 cycles long (9 + 1 clock cycles).
...
...
3Fh
Sample window is 64 cycles long (63 + 1 clock cycles).
Other invalid selections: 10h, 11h, 12h, 13h, 14h, 1Dh, 1Eh, 1Fh, 20h, 21h, 2Ah, 2Bh, 2Ch, 2Dh, 2Eh, 37h, 38h, 39h, 3Ah, 3Bh
8.1.11.6 ADC Calibration Registers
NOTE: The following ADC Calibration Registers are EALLOW protected.
Figure 8-28. ADC Reference/Gain Trim Register (ADCREFTRIM) (Address Offset 40h)
15
14
13
Reserved
9
EXTREF_FINE_TRIM
R-0
8
5
BG_COARSE_TRIM
R/W-0
R/W-0
4
0
BG_FINE_TRIM
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-19. ADC Reference/Gain Trim Register (ADCREFTRIM) Field Descriptions
Bit
Field
Value
Description
15-14
Reserved
Reads return a zero; Writes have no effect.
13-9
EXTREF_FINE_TRIM
ADC External reference Fine Trim. These bits should not be modified after device boot
code loads them with the factory trim setting.
8-5
BG_COARSE_TRIM
ADC Internal Bandgap Fine Trim. These bits should not be modified after device boot code
loads them with the factory trim setting.
4-0
BG_FINE_TRIM
ADC Internal Bandgap Coarse Trim. A maximum value of 30 is supported. These bits
should not be modified after device boot code loads them with the factory trim setting.
Figure 8-29. ADC Offset Trim Register (ADCOFFTRIM) (Address Offset 41h)
15
9
8
0
Reserved
OFFTRIM
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-20. ADC Offset Trim Register (ADCOFFTRIM) Field Descriptions
Bit
Field
Value
Description
15-9
Reserved
Reads return a zero; Writes have no effect.
8-0
OFFTRIM
ADC Offset Trim. 2's complement of ADC offset. Range is -256 to +255. These bits are loaded by
device boot code with a factory trim setting. Modification of this default setting can be made to
correct any board induced offset.
516
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.11.7 Comparator Hysteresis Control Register
NOTE: The following Comparator Hysteresis Control register is EALLOW protected.
Figure 8-30. Comparator Hysteresis Control Register (COMPHYSTCTL) (Address Offset 4Ch)
15
12
11
10
7
6
5
2
1
0
Reserved
COMP3_HYST
_DISABLE
Reserved
COMP2_HYST
_DISABLE
Reserved
COMP1_HYST
_DISABLE
Reserved
R-0
R/W--0
R-0
R/W--0
R-0
R/W--0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-21. Comparator Hysteresis Control Register (COMPHYSTCTL) Field Descriptions
Bit
Field
15-12
Value
Reserved
11
COMP3_HYST_D
ISABLE
10-7
Reads return a zero; Writes have no effect.
.
0
Hysteresis enabled
1
Hysteresis disabled
Reserved
6
COMP2_HYST_D
ISABLE
Description
Reserved
0
Hysteresis enabled
1
Hysteresis disabled
0
Hysteresis enabled
1
Hysteresis disabled
5-2
1
COMP1_HYST_D
ISABLE
0
Reserved
Reserved
8.1.11.8 ADC Revision Register
Figure 8-31. ADC Revision Register (ADCREV) (Address Offset 4Fh)
15
8
REV
R-x
7
0
TYPE
R-3h
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-22. ADC Revision Register (ADCREV) Field Descriptions
Bit
Field
15-8
REV
7-0
TYPE
Value
Description
ADC Revision. To allow documentation of differences between revisions. First version is labeled as
00h.
3
ADC Type. Always set to 3 for this type ADC
8.1.11.9 ADC Result Registers
The ADC Result Registers are found in Peripheral Frame 0 (PF0). In the header files, the ADCRESULTx
registers are located in the AdcResult register file, not AdcRegs.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
517
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-32. ADC RESULT0 - RESULT15 Registers (ADCRESULTx) (PF1 Block Address Offset 00h 0Fh)
15
12
11
0
Reserved
RESULT
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-23. ADC RESULT0 - ADCRESULT15 Registers (ADCRESULTx) Field Descriptions
Bit
Field
Value
Description
15-12
Reserved
Reads return a zero; Writes have no effect.
11-0
RESULT
12-bit right-justified ADC result
Sequential Sampling Mode (SIMULENx = 0):
After the ADC completes a conversion of an SOCx, the digital result is placed in the corresponding
ADCRESULTx register. For example, if SOC4 is configured to sample ADCINA1, the completed
result of that conversion will be placed in ADCRESULT4.
Simultaneous Sampling Mode (SIMULENx = 1):
After the ADC completes a conversion of a channel pair, the digital results are found in the
corresponding ADCRESULTx and ADCRESULTx+1 registers (assuming x is even). For example,
for SOC4, the completed results of those conversions will be placed in ADCRESULT4 and
ADCRESULT5. See 1.11 for timings of when this register is written.
8.1.12 ADC Timings
Figure 8-33. Timing Example For Sequential Mode / Late Interrupt Pulse
Analog Input
SOC0 Sample
Window
0
2
SOC1 Sample
Window
9
15
SOC2 Sample
Window
22
24
37
ADCCLK
ADCCTL 1.INTPULSEPOS
ADCSOCFLG 1.SOC0
ADCSOCFLG 1.SOC1
ADCSOCFLG 1.SOC2
S/H Window Pulse to Core
SOC0
ADCRESULT 0
SOC1
SOC2
Result 0 Latched
2 ADCCLKs
ADCRESULT 1
EOC0 Pulse
EOC1 Pulse
ADCINTFLG .ADCINTx
Minimum
7 ADCCLKs
Conversion 0
13 ADC Clocks
6
ADCCLKs
518
Analog-to-Digital Converter and Comparator
1 ADCCLK
Minimum
7 ADCCLKs
Conversion 1
13 ADC Clocks
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-34. Timing Example For Sequential Mode / Early Interrupt Pulse
Analog Input
SOC0 Sample
Window
0
2
SOC1 Sample
Window
9
15
SOC2 Sample
Window
22
24
37
ADCCLK
ADCCTL1.INTPULSEPOS
ADCSOCFLG 1.SOC0
ADCSOCFLG 1.SOC1
ADCSOCFLG 1.SOC2
S/H Window Pulse to Core
SOC0
SOC1
SOC2
Result 0 Latched
ADCRESULT 0
ADCRESULT 1
EOC0 Pulse
EOC1 Pulse
EOC2 Pulse
ADCINTFLG .ADCINTx
Minimum
7 ADCCLKs
Conversion 0
13 ADC Clocks
6
ADCCLKs
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
2 ADCCLKs
Minimum
7 ADCCLKs
Conversion 1
13 ADC Clocks
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
519
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-35. Timing Example For Simultaneous Mode / Late Interrupt Pulse
Analog Input A
SOC0 Sample
A Window
SOC2 Sample
A Window
SOC0 Sample
B Window
SOC2 Sample
B Window
Analog Input B
0
2
9
22
24
37
50
ADCCLK
ADCCTL1.INTPULSEPOS
ADCSOCFLG 1.SOC0
ADCSOCFLG 1.SOC1
ADCSOCFLG 1.SOC2
S/H Window Pulse to Core
SOC0 (A/B)
ADCRESULT 0
SOC2 (A/B)
2 ADCCLKs
Result 0 (A) Latched
ADCRESULT 1
Result 0 (B) Latched
ADCRESULT 2
EOC0 Pulse
1 ADCCLK
EOC1 Pulse
EOC2 Pulse
ADCINTFLG .ADCINTx
Minimum
7 ADCCLKs
Conversion 0 (A)
13 ADC Clocks
19
ADCCLKs
520
Analog-to-Digital Converter and Comparator
Conversion 0 (B)
13 ADC Clocks
Minimum
7 ADCCLKs
2 ADCCLKs
Conversion 1 (A)
13 ADC Clocks
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Analog-to-Digital Converter (ADC)
www.ti.com
Figure 8-36. Timing Example For Simultaneous Mode / Early Interrupt Pulse
Analog Input A
SOC0 Sample
A Window
SOC2 Sample
A Window
SOC0 Sample
B Window
SOC2 Sample
B Window
Analog Input B
0
2
9
22
24
37
50
ADCCLK
ADCCTL1.INTPULSEPOS
ADCSOCFLG 1.SOC0
ADCSOCFLG 1.SOC1
ADCSOCFLG 1.SOC2
S/H Window Pulse to Core
SOC0 (A/B)
SOC2 (A/B)
2 ADCCLKs
ADCRESULT 0
Result 0 (A) Latched
ADCRESULT 1
Result 0 (B) Latched
ADCRESULT 2
EOC0 Pulse
EOC1 Pulse
EOC2 Pulse
ADCINTFLG .ADCINTx
Minimum
7 ADCCLKs
Conversion 0 (A)
13 ADC Clocks
19
ADCCLKs
Conversion 0 (B)
13 ADC Clocks
Minimum
7 ADCCLKs
2 ADCCLKs
Conversion 1 (A)
13 ADC Clocks
Figure 8-37. Timing Example for NONOVERLAP Mode
Sequential Sampling
Sample 1
Sample 2
156ns min
X ADC Clocks
Conversion 1
13 ADC Clocks
156ns min
X ADC Clocks
Wrapper responsible for
holding off new SOCs till
Conversion is complete
Conversion 2
13 ADC Clocks
Conversion 1 read by
CPU from ADC on
15th cycle post sample
NOTE: The NONOVERLAP bit in the ADCCTL2 register, when enabled, removes the overlap of
sampling and conversion stages.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
521
Analog-to-Digital Converter (ADC)
www.ti.com
8.1.13 Internal Temperature Sensor
The internal temperature sensor measures the junction temperature of the device. The sensor output can
be sampled with the ADC on channel A5 using a switch controlled by the ADCCTL1.TEMPCONV bit. The
switch allows A5 to be used both as an external ADC input pin and the temperature sensor access point.
When sampling the temperature sensor, the external circuitry on ADCINA5 has no affect on the sample.
Refer to Section 8.1.11.1 for information about switching between the external ADCINA5 input pin and the
internal temperature sensor.
8.1.13.1 Transfer Function
The temperature sensor output and the resulting ADC values increase with increasing junction
temperature. The offset is defined as the 0 ºC LSB crossing as illustrated in Figure 8-38. This information
can be used to convert the ADC sensor sample into a temperature unit.
The transfer function to determine a temperature is defined as:
Temperature = (sensor - Offset) * Slope
Temperature
Figure 8-38. Temperature Sensor Transfer Function
Slope (°C/LSB)
Offset (0°C LSB value)
LSB
Refer to the electrical characteristics section in TMS320F28069, TMS320F28068, TMS320F28067,
TMS320F28066, TMS320F28065, TMS320F28064, TMS320F28063, TMS320F28062 Piccolo
Microcontrollers Data Manual (SPRS698) for the slope and offset, or use the stored slope and offset
calibrated per device in the factory which can be extract by a function at the following locations.
For F2806x:
• 0x3D7E82 - Slope (ºC / LSB, fixed-point Q15 format)
• 0x3D7E85 - Offset (0 ºC LSB value)
The values listed are assuming a 3.3v full scale range. Using the internal reference mode automatically
achieves this fixed range, but if using the external mode, the temperature sensor values must be adjusted
accordingly to the external reference voltages.
Example
The header files include an example project to easily sample the temperature sensor and convert the
result into two different temperature units. There are threee steps to using the temperature sensor:
1. Configure the ADC to sample the temperature sensor
2. Sample the temperature sensor
522
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Comparator Block
www.ti.com
3. Convert the result into a temperature unit, such as ºC.
Here is an example of these steps:
// Configure the ADC to sample the temperature sensor
EALLOW;
AdcRegs.ADCCTL1.bit.TEMPCONV = 1;
//Connect A5 - temp sensor
AdcRegs.ADCSOC0CTL.bit.CHSEL = 5;
//Set SOC0 to sample A5
AdcRegs.ADCSOC1CTL.bit.CHSEL = 5;
//Set SOC1 to sample A5
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
//Set SOC0 ACQPS to 7 ADCCLK
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;
//Set SOC1 ACQPS to 7 ADCCLK
AdcRegs.INTSEL1N2.bit.INT1SEL = 1; //Connect ADCINT1 to EOC1
AdcRegs.INTSEL1N2.bit.INT1E = 1;
//Enable ADCINT1
EDIS;
// Sample the temperature sensor
AdcRegs.ADCSOCFRC1.all = 0x03;
//Sample temp sensor
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){} //Wait for ADCINT1
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
//Clear ADCINT1
sensorSample = AdcResult.ADCRESULT1;
//Get temp sensor sample result
//Convert raw temperature sensor output to a temperature (degC)
DegreesC = (sensorSample - TempSensorOffset) * TempSensorSlope;
For the F2806x, call the below factory stored slope and offset get functions:
//Slope of temperature sensor (deg. C / ADC code, fixed pt Q15 format)
#define getTempSlope() (*(int (*)(void))0x3D7E82)()
//ADC code corresponding to temperature sensor output at 0-degreesC
#define getTempOffset() (*(int (*)(void))0x3D7E85)()
8.2
Comparator Block
The comparator module described in this reference guide is a true analog voltage comparator in the
VDDA domain. The analog portion of the block include the comparator, its inputs and outputs, and the
internal DAC reference. The digital circuits, referred to as the wrapper in this document, include the DAC
controls, interface to other on-chip logic, output qualification block, and the control signals.
8.2.1
Features
The comparator block can accommodate two external analog inputs or one external analog input using the
internal DAC reference for the other input. The output of the comparator can be passed asynchronously or
qualified and synchronized to the system clock period. The comparator output is routed to both the ePWM
Trip Zone modules, as well as the GPIO output multiplexer.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
523
Comparator Block
www.ti.com
8.2.2 Block Diagram
Figure 8-39. Comparator Block Diagram
COMPHYSTCTL[COMPx_HYST_DISABLE]
~100 k
0
VDDA
COMPxA Pin
COMPxB Pin
DACCTL[DACSOURCE]
DACVAL[9:0]
RAMPSTS[15:6]
0
1
1
+
COMPx
1
COMPCTL[CMPINV]
0
±
VDDA
High-Z
SYSCLK
0
0
VSSA
Qualification
10-bit
DAC
EPWM
1
GPIO Mux
1
COMPCTL[QUALSEL]
VSSA
COMPCTL[SYNCSEL]
COMPCTL[COMPSOURCE]
PWMSYNC1
PWMSYNC2
...
0
1
...
PWMSYNCn
n-1
Ramp
Generator
COMPSTS
DACCTL[RAMPSOURCE]
8.2.3 Comparator Function
The comparator in each comparator block is an analog comparator module, and as such its output is
asynchronous to the system clock. The truth table for the comparator is shown in Table 8-24.
Figure 8-40. Comparator
A
Comparator
Output
B
Table 8-24. Comparator Truth Table
Voltages
Output
Voltage A > Voltage B
1
Voltage B > Voltage A
0
There is no definition for the condition Voltage A = Voltage B since there is hysteresis in the response of
the comparator output. Refer to the device datasheet for the value of this hysteresis. This also limits the
sensitivity of the comparator output to noise on the input voltages.
The output state of the comparator, after qualification, is reflected by the COMPSTS bit in the COMPSTS
register. Since this bit is part of the wrapper, clocks must be enabled to the comparator block for the
COMPSTS bit to actively show the comparator state.
524
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Comparator Block
www.ti.com
8.2.4 DAC Reference
Each comparator block contains a 10-bit voltage DAC reference that can used to supply the inverting input
(B side input) of the comparator. The voltage output of the DAC is controlled by the DACVAL bit field in
the DACVAL register. The output of the DAC is given by the equation:
V=
DACVAL * (VDDA-VSSA)
1023
Since the DAC is also in the analog domain it does not require a clock to maintain its voltage output. A
clock is required, however, to modify the digital inputs that control the DAC.
8.2.5 Ramp Generator Input
When selected, the ramp generator (see Figure 8-41) can produce a falling-ramp DAC output signal. In
this mode, the DAC uses the most significant 10-bits of the 16-bit RAMPSTS countdown register as its
input.
Figure 8-41. Ramp Generator Block Diagram
SYSCLK
SYNC_RESET
RAMPDECVALS
D Q
RAMPDECVALA
PWMSYNC
0
SYNC_RESET
RAMPMAXREFS
D Q
1
RAMPMAXREFA
COMP_RESET
SYNC_RESET
RAMPSTS (16b)
15 14 13 12 11 10 9 8 7 6
COMP_RESET
COMPSTS
PWMSYNC
DACCTL[DACSOURCE]
AND
COMP_RESET
OR
SYNC_RESET
STOP
To DAC
OR
DACCTL[DACSOURCE]
COMPCTL[CMPINV]
5 4 3 2 1 0
START
OR
The RAMPSTS register is set to the value of RAMPMAXREF_SHDW when a selected PWMSYNC signal
is received, and the value of RAMPDECVAL_ACTIVE is subtracted from RAMPSTS on every SYSCLK
cycle thereafter. When the ramp generator is first enabled by setting DACSOURCE = 1, the value of
RAMPSTS is loaded from RAMPMAXREF_SHDW, and the register remains static until the first
PWMSYNC signal is received.
If the COMPSTS bit is set by the comparator while the ramp generator is active, the RAMPSTS register
will reset to the value of RAMPMAXREF_ACTIVE and remain static until the next PWMSYNC signal is
received. If the value of RAMPSTS reaches zero, the RAMPSTS register will remain static at zero until the
next PWMSYNC signal is received.
To reduce the likelihood of race conditions when updating the ramp generator RAMPMAXREFA and
RAMPDECVALA values, only the shadow registers RAMPMAXREF_SHDW and RAMPDECVAL_SHDW
have write permissions. The values of the shadow registers are copied to the active registers on the next
PWMSYNC signal. User software should take further steps to avoid writing to the shadow registers in the
same cycle as a PWMSYNC signal or else the previous shadow register value may be lost.
The PWMSYNC signal width must be greater than SYSCLK to ensure that the ramp generator is able to
detect the PWMSYNC signal.
The ramp generator behavior is further illustrated in Figure 8-42
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
525
Comparator Block
www.ti.com
Figure 8-42. Ramp Generator Behavior
PWMSYNC
0xFFFF
RAMPMAXREF
RAMPMAXREF
RAMPSTS
RAMPMAXREF
RAMPMAXREF
0x0000
COMPSTS
8.2.6 Initialization
There are 2 steps that must be performed prior to using the comparator block:
1. Enable the Band Gap inside the ADC by writing a 1 to the ADCBGPWD bit inside ADCCTL1.
2. Enable the comparator block by writing a 1 to the COMPDACEN bit in the COMPCTL register.
8.2.7 Digital Domain Manipulation
At the output of the comparator there are two more functional blocks that can be used to influence the
behavior of the comparator output. They are:
1. Inverter circuit: Controlled by the CMPINV bit in the COMPCTL register; will apply a logical NOT to the
output of the comparator. This function is asynchronous, while its control requires a clock present in
order to change its value.
2. Qualification block: Controlled by the QUALSEL bit field in the COMPCTL register, and gated by the
SYNCSEL bit in the COMPCTL register. This block can be used as a simple filter to only pass the
output of the comparator once it is synchronized to the system clock. and qualified by the number of
system clocks defined in QUALSEL bit field.
526
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Comparator Block
www.ti.com
8.2.8 Comparator Registers
These devices have three comparators as shown ibelow and described in Table 8-25.
Name
Address Range
Size(x16)
Description
COMP1
6400h – 641Fh
1
Comparator
COMP2
6420h – 643Fh
1
Comparator
COMP3
6440h – 645Fh
1
Comparator
Table 8-25. Comparator Module Registers
Name
Address Range(base)
Size(x16)
Description
COMPCTL
0x00
1
Comparator Control (1)
Reserved
0x01
1
Reserved
COMPSTS
0x02
1
Compare Output Status
Reserved
0x03
1
Reserved
DACCTL
0x04
1
DAC Control (1)
Reserved
0x05
1
Reserved
DACVAL
0x06
1
10-bit DAC Value
Reserved
0x07
1
Reserved
RAMPMAXREF_ACTIVE
0x08
1
Ramp Generator Maximum
Reference (Active)
Reserved
0x09
1
Reserved
RAMPMAXREF_SHDW
0x0A
1
Ramp Generator Maximum
Reference (Shadow)
Reserved
0x0B
1
Reserved
RAMPDECVAL_ACTIVE
0x0C
1
Ramp Generator Decrement
Value (Active)
Reserved
0x0D
1
Reserved
RAMPDECVAL_SHDW
0x0E
1
Ramp Generator Decrement
Value (Shadow)
Reserved
0x0F
1
Reserved
RAMPSTS
0x10
1
Ramp Generator Status
Reserved
0x11
0x1F
15
Reserved
(1)
8.2.8.1
This register is EALLOW protected.
Comparator Control (COMPCTL) Register
Figure 8-43. Comparator Control (COMPCTL) Register
15
9
7
8
Reserved
SYNCSEL
R-0
R/W-0
2
1
0
QUALSEL
3
CMPINV
COMPSOURCE
COMPDACEN
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
527
Comparator Block
www.ti.com
Table 8-26. COMPCTL Register Field Descriptions
Bit
Field
Value
Description
15-9
Reserved
Reads return a 0; Writes have no effect.
8
SYNCSEL
Synchronization select for output of the comparator before being passed to EPWM/GPIO blocks
7-3
0
Asynchronous version of Comparator output is passed
1
Synchronous version of comparator output is passed
QUALSEL
Qualification Period for synchronized output of the comparator
0h
Synchronized value of comparator is passed through
1h
Input to the block must be consistent for 2 consecutive clocks before output of Qual block can
change
2h
Input to the block must be consistent for 3 consecutive clocks before output of Qual block can
change
...
...
1Fh
2
CMPINV
1
Invert select for Comparator
0
Output of comparator is passed
1
Inverted output of comparator is passed
COMPSOURCE
0
Source select for comparator inverting input
0
Inverting input of comparator connected to internal DAC
1
Inverting input connected to external pin
COMPDACEN
8.2.8.2
Input to the block must be consistent for 16 consecutive clocks before output of Qual block can
change
Comparator/DAC Enable
0
Comparator/DAC logic is powered down.
1
Comparator/DAC logic is powered up.
Compare Output Status (COMPSTS) Register
Figure 8-44. Compare Output Status (COMPSTS) Register
15
1
0
Reserved
COMPSTS
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-27. Compare Output Status (COMPSTS) Register Field Descriptions
Bit
Field
15-1
0
8.2.8.3
Value
Description
Reserved
Reads return zero and writes have no effect.
COMPSTS
Logical latched value of the comparator
DAC Control (DACCTL) Register
Figure 8-45. DAC Control (DACCTL) Register
15
14
13
8
FREE:SOFT
Reserved
R/W-0
R-0
7
5
4
1
0
Reserved
RAMPSOURCE
DACSOURCE
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
528
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Comparator Block
www.ti.com
Table 8-28. DACCTL Register Field Descriptions
Bit
15-14
Field
Value
FREE:SOFT
Emulation mode behavior. Selects ramp generator behavior during emulation suspend.
0h
Stop immediately
1h
Complete current ramp, and stop on the next PWMSYNC signal
2h-3h
13-5
Reserved
4-1
RAMPSOURCE
8.2.8.4
Run free
Reads return a 0; Writes have no effect.
Ramp generator source sync select
0h
PWMSYNC1 is the source sync
1h
PWMSYNC2 is the source sync
2h
PWMSYNC3 is the source sync
...
...
n-1
0
Description
DACSOURCE
PWMSYNCn is the source sync
DAC source control. Select DACVAL or ramp generator to control the DAC.
0
DAC controlled by DACVAL
1
DAC controlled by ramp generator
DAC Value (DACVAL) Register
Figure 8-46. DAC Value (DACVAL) Register
15
10
9
0
Reserved
DACVAL
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 8-29. DAC Value (DACVAL) Register Field Descriptions
Bit
Field
15-10
Reserved
9-0
DACVAL
8.2.8.5
Value
Description
Reads return zero and writes have no effect.
0-3FFh DAC Value bits, scales the output of the DAC from 0 – 1023.
Ramp Generator Maximum Reference Active (RAMPMAXREF_ACTIVE) Register
Figure 8-47. Ramp Generator Maximum Reference Active (RAMPMAXREF_ACTIVE) Register
15
0
RAMPMAXREFA
R-0
LEGEND: R = Read only; -n = value after reset
Table 8-30. Ramp Generator Maximum Reference Active (RAMPMAXREF_ACTIVE) Register Field
Descriptions
Bit
15-0
Field
RAMPMAXREFA
Value
0-FFFFh
Description
16-bit maximum reference active value for down ramp generator.
This value is loaded from RAMPMAXREF_SHDW when the PWMSYNC signal is received.
8.2.8.6
Ramp Generator Maximum Reference Shadow (RAMPMAXREF_SHDW) Register
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
529
Comparator Block
www.ti.com
Figure 8-48. Ramp Generator Maximum Reference Shadow (RAMPMAXREF_SHDW) Register
15
0
RAMPMAXREFS
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 8-31. Ramp Generator Maximum Reference Shadow (RAMPMAXREF_SHDW) Register Field
Descriptions
Bit
Field
15-0
RAMPMAXREFS
8.2.8.7
Value
0-FFFFh
Description
16-bit maximum reference shadow value for down ramp generator
Ramp Generator Decrement Value Active (RAMPDECVAL_ACTIVE) Register
Figure 8-49. Ramp Generator Decrement Value Active (RAMPDECVAL_ACTIVE) Register
15
0
RAMPDECVALA
R-0
LEGEND: R = Read only; -n = value after reset
Table 8-32. Ramp Generator Decrement Value Active (RAMPDECVAL_ACTIVE) Register Field
Descriptions
Bit
Field
15-0
RAMPDECVALA
Value
0-FFFFh
Description
16-bit decrement active value for down ramp generator.
This value is loaded from RAMPDECVAL_SHDW when the PWMSYNC signal is received.
8.2.8.8
Ramp Generator Decrement Value Shadow (RAMPDECVAL_SHDW) Register
Figure 8-50. Ramp Generator Decrement Value Shadow (RAMPDECVAL_SHDW) Register
15
0
RAMPDECVALS
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 8-33. Ramp Generator Decrement Value Shadow (RAMPDECVAL_SHDW) Register Field
Descriptions
Bit
Field
15-0
RAMPDECVALS
8.2.8.9
Value
0-FFFFh
Description
16-bit decrement shadow value for down ramp generator
Ramp Generator Status (RAMPSTS) Register
Figure 8-51. Ramp Generator Status (RAMPSTS) Register
15
0
RAMPVALUE
R-0
LEGEND: R = Read only; -n = value after reset
530
Analog-to-Digital Converter and Comparator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Comparator Block
www.ti.com
Table 8-34. Ramp Generator Status (RAMPSTS) Register Field Descriptions
Bit
15-0
Field
RAMPVALUE
Value
0-FFFFh
Description
16-bit value of down ramp generator
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Analog-to-Digital Converter and Comparator
Copyright © 2011–2017, Texas Instruments Incorporated
531
Chapter 9
SPRUH18G – January 2011 – Revised April 2017
Control Law Accelerator (CLA)
The control law accelerator (CLA) is an independent, fully-programmable, 32-bit floating-point math
processor that brings concurrent control-loop execution to the C28x family. The low interrupt-latency of the
CLA allows it to read ADC samples "just-in-time." This significantly reduces the ADC sample to output
delay to enable faster system response and higher MHz control loops. By using the CLA to service timecritical control loops, the main CPU is free to perform other system tasks such as communications and
diagnostics. This chapter provides an overview of the architectural structure and components of the
control law accelerator.
532
Topic
...........................................................................................................................
9.1
9.2
9.3
9.4
9.5
9.6
9.7
Control Law Accelerator (CLA) Overview.............................................................
CLA Interface ...................................................................................................
CLA Configuration and Debug ...........................................................................
Register Set .....................................................................................................
Pipeline ...........................................................................................................
Instruction Set..................................................................................................
Appendix A: CLA and CPU Arbitration ................................................................
Control Law Accelerator (CLA)
Page
533
535
538
542
561
566
679
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) Overview
www.ti.com
9.1
Control Law Accelerator (CLA) Overview
The control law accelerator extends the capabilities of the C28x CPU by adding parallel processing. Timecritical control loops serviced by the CLA can achieve low ADC sample to output delay. Thus, the CLA
enables faster system response and higher frequency control loops. Utilizing the CLA for time-critical tasks
frees up the main CPU to perform other system and communication functions concurrently. The following
is a list of major features of the CLA.
• Clocked at the same rate as the main CPU (SYSCLKOUT).
• An independent architecture allowing CLA algorithm execution independent of the main C28x CPU.
– Complete bus architecture:
• Program address bus and program data bus
• Data address bus, data read bus and data write bus
– Independent eight stage pipeline.
– 12-bit program counter (MPC)
– Four 32-bit result registers (MR0-MR3)
– Two 16-bit auxiliary registers (MAR0, MAR1)
– Status register (MSTF)
• Instruction set includes:
– IEEE single-precision (32-bit) floating point math operations
– Floating-point math with parallel load or store
– Floating-point multiply with parallel add or subtract
– 1/X and 1/sqrt(X) estimations
– Data type conversions.
– Conditional branch and call
– Data load/store operations
• The CLA program code can consist of up to eight tasks or interrupt service routines.
– The start address of each task is specified by the MVECT registers.
– No limit on task size as long as the tasks fit within the CLA program memory space.
– One task is serviced at a time through to completion. There is no nesting of tasks.
– Upon task completion a task-specific interrupt is flagged within the PIE.
– When a task finishes the next highest-priority pending task is automatically started.
• Task trigger mechanisms:
– C28x CPU via the IACK instruction
– Task1 to Task7: the corresponding ADC, ePWM, eQEP, or eCAP module interrupt. For example:
• Task1: ADCINT1 or EPWM1_INT
• Task2: ADCINT2 or EPWM2_INT
• Task 4: ADCINT4 or EPWM4_INT or EQEPx_INT or ECAPx_INT
• Task 7: ADCINT7 or EPWM7_INT or EQEPx_INT or ECAPx_INT
– Task8: ADCINT8 or CPU Timer 0 or EQEPx_INT or ECAPx_INT
• Memory and Shared Peripherals:
– Two dedicated message RAMs for communication between the CLA and the main CPU.
– The C28x CPU can map CLA program and data memory to the main CPU space or CLA space.
– The CLA has direct access to the ePWM+HRPWM, Comparator, eCAP, eQEP, and ADC result
registers.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
533
Control Law Accelerator (CLA) Overview
www.ti.com
Figure 9-1. CLA Block Diagram
Peripheral Interrupts
ADCINT1 to
ADCINT8
ECAP1_INT to
ECAP3_INT
CPU Timer 0
MIFR
MIOVF
MICLR
MICLROVF
MIFRC
MIER
MIRUN
MPISRCSEL1
CLA Program Address Bus
CLA
Program
Memory
CLA Program Data Bus
Main CPU BUS
Map to CLA or
CPU Space
SYSCLKOUT
CLAENCLK
SYSRS
INT11
INT12
PIE
MMEMCFG
Main CPU Read/Write Data Bus
CLA
Data
Memory
Map to CLA or
CPU Space
MCTL
MPC(12)
MSTF(32)
MR0(32)
MR1(32)
MR2(32)
MR3(32)
MAR0(32)
MAR1(32)
Main
28x
CPU
LVF
LUF
MVECT1
MVECT2
MVECT3
MVECT4
MVECT5
MVECT6
MVECT7
MVECT8
CLA Execution
Registers
Main CPU Read Data Bus
CLA_INT1 to CLA_INT8
CLA
Shared
Message
RAMs
MEALLOW
CLA Data Read Address Bus
CLA Data Read Data Bus
CLA Data Write Address Bus
Main CPU Bus
EPWM1_INT to
EPWM8_INT
MPERINT1
to
MPERINT8
CLA Data Bus
EQEP1_INT to
EQEP2_INT
CLA Control
Registers
ADC
Result
Registers
ePWM
and
HRPWM
Registers
CLA Data Write Data Bus
Comparator
Registers
eCAP
Registers
eQEP
Registers
534
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CLA Interface
www.ti.com
9.2
CLA Interface
This chapter describes how the C28x main CPU can interface to the CLA and vice versa.
9.2.1 CLA Memory
The CLA can access three types of memory: program, data and message RAMs. The behavior and
arbitration for each type of memory is described in detail in Section 9.7.
• CLA Program Memory
At reset memory designated for CLA program is mapped to the main CPU memory and is treated like
any other memory block. While mapped to CPU space, the main CPU can copy the CLA program code
into the memory block. During debug the block can also be loaded directly by Code Composer Studio.
Once the memory is initialized with CLA code, the main CPU maps it to the CLA program space by
writing a 1 to the MMEMCFG[PROGE] bit. When mapped to the CLA program space, the block can
only be accessed by the CLA for fetching opcodes. The main CPU can only perform debugger
accesses when the CLA is either halted or idle. If the CLA is executing code, then all debugger
accesses are blocked and the memory reads back all 0x0000.
CLA program memory is protected by the code security module. All CLA program fetches are
performed as 32-bit read operations and all opcodes must be aligned to an even address. Since all
CLA opcodes are 32-bits, this alignment naturally occurs.
• CLA Data Memory
There are three CLA data memory blocks on the device. At reset, all blocks are mapped to the main
CPU memory space and treated by the CPU like any other memory block. While mapped to CPU
space, the main CPU can initialize the memory with data tables and coefficients for the CLA to use.
Once the memory is initialized with CLA data the main CPU maps it to the CLA space. Each block can
be individually mapped via the MMEMCFG[RAM0E], MMEMCFG[RAM1E] and MMEMCFG[RAM2E]
bits. When mapped to the CLA data space, the memory can be accessed by either the CLA and/or the
CPU for read or write operations by setting the appropriate memory configuration bits,
MMEMCFG[RAMxE] and MMEMCFG[RAMxCPUE].
Each of the CLA data RAMs is protected by the code security module and emulation code security
logic.
• CLA Shared Message RAMs
There are two small memory blocks for data sharing and communication between the CLA and the
main CPU. The message RAMs are always mapped to both CPU and CLA memory spaces and are
protected by the code security module. The message RAMs allow data accesses only; no program
fetches can be performed.
– CLA to CPU Message RAM
The CLA can use this block to pass data to the main CPU. This block is both readable and writable
by the CLA. This block is also readable by the main CPU but writes by the main CPU are ignored.
– CPU to CLA Message RAM
The main CPU can use this block to pass data and messages to the CLA. This message RAM is
both readable and writable by the main CPU. The CLA can perform reads but writes by the CLA
are ignored.
9.2.2 CLA Memory Bus
The CLA has dedicated bus architecture similar to that of the C28x CPU where there is a program read,
data read and data write bus. Thus there can be simultaneous instruction fetch, data read and data write
in a single cycle. Like the C28x CPU, the CLA expects memory logic to align any 32-bit read or write to an
even address. If the address-generation logic generates an odd address, the CLA will begin reading or
writing at the previous even address. This alignment does not affect the address values generated by the
address-generation logic.
• CLA Program Bus
The CLA program bus has a access range of 2048 32-bit instructions. Since all CLA instructions are
32-bits, this bus always fetches 32-bits at a time and the opcodes must be even word aligned. The
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
535
CLA Interface
•
•
www.ti.com
amount of program space available for the CLA is device dependent as described in the devicespecific data manual.
CLA Data Read Bus
The CLA data read bus has a 64K x 16 address range. The bus can perform 16 or 32-bit reads and
will automatically stall if there are memory access conflicts. The data read bus has access to both the
message RAMs, CLA data memory and the ePWM, HRPWM, Comparator, eCAP, eQEP, and ADC
result registers.
CLA Data Write Bus
The CLA data write bus has a 64K x 16 address range. This bus can perform 16 or 32-bit writes. The
bus will automatically stall if there are memory access conflicts. The data write bus has access to the
CLA to CPU message RAM, CLA data memory and the ePWM, HRPWM, eCAP, eQEP, and
Comparator registers.
9.2.3 Shared Peripherals and EALLOW Protection
The ePWM, HRPWM, Comparator, eCAP, eQEP, and ADC result registers can be accessed by both the
CLA and the main CPU. Section 9.5 describes in detail the CLA and CPU arbitration when both access
these registers.
Several peripheral control registers are protected from spurious 28x CPU writes by the EALLOW
protection mechanism. These same registers are also protected from spurious CLA writes. The EALLOW
bit in the main CPU status register 1 (ST1) indicates the state of protection for the main CPU. Likewise the
MEALLOW bit in the CLA status register (MSTF) indicates the state of write protection for the CLA. The
MEALLOW CLA instruction enables write access by the CLA to EALLOW protected registers. Likewise the
MEDIS CLA instruction will disable write access. This way the CLA can enable/disable write access
independent of the main CPU.
The 2806x ADC offers the option to generate an early interrupt pulse when the ADC begins conversion. If
this option is used to start a ADC triggered CLA task then the 8th instruction can read the result as soon
as the conversion completes. The CLA pipeline activity for this scenario is shown in Section 9.5.
536
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CLA Interface
www.ti.com
9.2.4 CLA Tasks and Interrupt Vectors
The CLA program code is divided up into tasks or interrupt service routines. Tasks do not have a fixed
starting location or length. The CLA program memory can be divided up as desired. The CLA knows
where a task begins by the content of the associated interrupt vector (MVECT1 to MVECT8) and the end
is indicated by the MSTOP instruction.
The CLA supports 8 tasks. Task 1 has the highest priority and task 8 has the lowest priority. A task can be
requested by a peripheral interrupt or by software:
• Peripheral interrupt trigger
Each task has specific interrupt sources that can trigger it. Configure the MPISRCSEL1 register to
select from the potential sources. For example, task 1 (MVECT1) can be triggered by ADCINT1 or
EPWM1_INT as specified in MPISRCSEL1[PERINT1SEL]. You can not, however, trigger task 1
directly using EPWM2_INT. If you need to trigger a task using EPWM2_INT then the best solution is to
use task 2 (MVECT2). Another possible solution is to take EPWM2_INT with the main CPU and trigger
a task with software.
To disable the peripheral from sending an interrupt request to the CLA, set the PERINT1SEL option to
no interrupt. It should be noted that a CLA task only triggers on a level transition (that is, an edge) of
the configured interrupt source for that particular task.
• Software trigger
Tasks can also be started by the main CPU software writing to the MIFRC register or by the IACK
instruction. Using the IACK instruction is more efficient because it does not require you to issue an
EALLOW to set MIFR bits. Set the MCTL[IACKE] bit to enable the IACK feature. Each bit in the
operand of the IACK instruction corresponds to a task. For example IACK #0x0001 will set bit 0 in the
MIFR register to start task 1. Likewise IACK #0x0003 will set bits 0 and 1 in the MIFR register to start
task 1 and task 2.
The CLA has its own fetch mechanism and can run and execute a task independent of the main CPU.
Only one task is serviced at a time; there is no nesting of tasks. The task currently running is indicated in
the MIRUN register. Interrupts that have been received but not yet serviced are indicated in the flag
register (MIFR). If an interrupt request from a peripheral is received and that same task is already flagged,
then the overflow flag bit is set. Overflow flags will remain set until they are cleared by the main CPU.
If the CLA is idle (no task is currently running) then the highest priority interrupt request that is both
flagged (MIFR) and enabled (MIER) will start. The flow is as follows:
1. The associated RUN register bit is set (MIRUN) and the flag bit (MIFR) is cleared.
2. The CLA begins execution at the location indicated by the associated interrupt vector (MVECTx).
MVECT is an offset from the first program memory location.
3. The CLA executes instructions until the MSTOP instruction is found. This indicates the end of the task.
4. The MIRUN bit is cleared.
5. The task-specific interrupt to the PIE is issued. This informs the main CPU that the task has
completed.
6. The CLA returns to idle.
Once a task completes the next highest-priority pending task is automatically serviced and this sequence
repeats.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
537
CLA Configuration and Debug
9.3
www.ti.com
CLA Configuration and Debug
This section discusses the steps necessary to configure and debug the CLA.
9.3.1 Building a CLA Application
The control law accelerator is programmed in CLA assembly code using the instructions described in
Section 9.6. CLA assembly code can, and should, reside in the same project with C28x code. The only
restriction is the CLA code must be in its own assembly section. This can be easily done using the .sect
assembly directive. This does not prevent CLA and C28x code from being linked into the same memory
region in the linker command file.
System and CLA initialization are performed by the main CPU. This would typically be done in C or C++
but can also include C28x assembly code. The main CPU will also copy the CLA code to the program
memory and, if needed, initialize the CLA data RAM(s). Once system initialization is complete and the
application begins, the CLA will service its interrupts using the CLA assembly code (or tasks).
Concurrently the main CPU can perform other tasks.
The C2000 codegen tools V5.2.x and higher support CLA instructions when the following switch is set: -cla_support = cla0.
9.3.2 Typical CLA Initialization Sequence
A typical CLA initialization sequence is performed by the main CPU as described in this section.
1. Copy CLA code into the CLA program RAM
The source for the CLA code can initially reside in the flash or a data stream from a communications
peripheral or anywhere the main CPU can access it. The debugger can also be used to load code
directly to the CLA program RAM during development.
2. Initialize CLA data RAM if necessary
Populate the CLA data RAM with any required data coefficients or constants.
3. Configure the CLA registers
Configure the CLA registers, but keep interrupts disabled until later (leave MIER == 0):
• Enable the CLA clock in the PCLKCR3 register.
PCLKCR3 register is defined in the device-specific system control and interrupts reference guide.
• Populate the CLA task interrupt vectors: MVECT1 to MVECT8.
Each vector needs to be initialized with the start address of the task to be executed when the CLA
receives the associated interrupt. This address is an offset from the first address in CLA program
memory. For example, 0x0000 corresponds to the first CLA program memory address.
• Select the task interrupt sources
For each task select the interrupt source in the PERINT1SEL register. If a task is going to be
generated by software, select no interrupt.
• Enable IACK to start a task from software if desired
To enable the IACK instruction to start a task set the MCTL[IACKE] bit. Using the IACK instruction
avoids having to set and clear the EALLOW bit.
• Map CLA data RAM(s) to CLA space if necessary
Map any of the data RAMs to the CLA space by writing a 1 to the respective MMEMCFG[RAMxE]
bit. After the memory is mapped to CLA space, the main CPU has restricted access to it. Access
control to the memory is determined by the combination of the memory configuration bits,
MMEMCFG[RAMxE] and MMEMCFG[RAMxCPUE]. Allow two SYSCLKOUT cycles between
changing the map configuration of this memory and accessing it.
• Map CLA program RAM to CLA space
Map the CLA program RAM to CLA space by setting the MMEMCFG[PROGE] bit. After the
memory is remapped to CLA space the main CPU will only be able to make debug accesses to the
memory block. Access control to the memory is determined by the combination of the memory
configuration bits, MMEMCFG[RAMxE] and MMEMCFG[RAMxCPUE]. Allow two SYSCLKOUT
cycles between changing the map configuration of these memories and accessing them.
538
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CLA Configuration and Debug
www.ti.com
4. Initialize the PIE vector table and registers
When a CLA task completes the associated interrupt in the PIE will be flagged. The CLA overflow and
underflow flags also have associated interrupts within the PIE.
5. Enable CLA tasks/interrupts
Set appropriate bits in the interrupt enable register (MIER) to allow the CLA to service interrupts.
6. Initialize other peripherals
Initialize any peripherals (ePWM, ADC etc.) that will generate an interrupt to the CLA and be serviced
by a CLA task.
The CLA is now ready to service interrupts and the message RAMs can be used to pass data between
the CPU and the CLA. Typically mapping of the CLA program and data RAMs occurs only during the
initialization process. If after some time the you want to re-map these memories back to CPU space
then disable interrupts and make sure all tasks have completed by checking the MIRUN register.
Always allow two SYSCLKOUT cycles when changing the map configuration of these memories and
accessing them.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
539
CLA Configuration and Debug
www.ti.com
9.3.3 Debugging CLA Code
Debugging the CLA code is a simple process that occurs independently of the main CPU.
1. Insert a breakpoint in CLA code
Insert a CLA breakpoint (MDEBUGSTOP instruction) into the code where you want the CLA to halt,
then rebuild and reload the code. Because the CLA does not flush its pipeline when you single-step,
the MDEBUGSTOP instruction must be inserted as part of the code. The debugger cannot insert it as
needed.
If CLA breakpoints are not enabled, then the MDEBUGSTOP will be ignored and is treated as a
MNOP. The MDEBUGSTOP instruction can be placed anywhere in the CLA code as long as it is not
within three instructions of a MBCNDD, MCCNDD, or MRCNDD instruction.
2. Enable CLA breakpoints
First, enable the CLA breakpoints in the debugger. In Code Composer Studio V3.3, this is done by
connecting the CLA debug window (debug->connect). Breakpoints are disabled when this window is
disconnected.
3. Start the task
There are three ways to start the task:
• The peripheral can assert an interrupt
• The main CPU can execute an IACK instruction, or
• You can manually write to the MIFRC register in the debugger window
When the task starts, the CLA will execute instructions until the MDEBUGSTOP is in the D2 phase of
the pipeline. At this point, the CLA will halt and the pipeline will be frozen. The MPC register will reflect
the address of the MDEBUGSTOP instruction.
4. Single-step the CLA code
Once halted, you can single-step the CLA code one cycle at a time. The behavior of a CLA single-step
is different than the main C28x. When issuing a CLA single-step, the pipeline is clocked only one cycle
and then again frozen. On the 28x CPU, the pipeline is flushed for each single-step.
You can also run to the next MDEBUGSTOP or to the end of the task. If another task is pending, it will
automatically start when you run to the end of the task.
NOTE: When CLA program memory is mapped to the CLA memory space, a CLA fetch has higher
priority than CPU debug reads. For this reason, it is possible for the CLA to permanently
block CPU debug accesses if the CLA is executing in a loop. This might occur when initially
developing CLA code due to a bug that causes an infinite loop. To avoid locking up the main
CPU, the program memory will return all 0x0000 for CPU debug reads when the CLA is
running. When the CLA is halted or idle then normal CPU debug read and write access to
CLA program memory can be performed.
If the CLA gets caught in a infinite loop, you can use a soft or hard reset to exit the condition.
A debugger reset will also exit the condition.
There are special cases that can occur when single-stepping a task such that the program counter,
MPC, reaches the MSTOP instruction at the end of the task.
• MPC halts at or after the MSTOP with a task already pending
If you are single-stepping or halted in "task A" and "task B" comes in before the MPC reaches the
MSTOP, then "task B" will start if you continue to step through the MSTOP instruction. Basically if
"task B" is pending before the MPC reaches MSTOP in "task A" then there is no issue in "task B"
starting and no special action is required.
• MPC halts at or after the MSTOP with no task pending
In this case you have single-stepped or halted in "task A" and the MPC has reached the MSTOP
with no tasks pending. If "task B" comes in at this point, it will be flagged in the MIFR register but it
may or may not start if you continue to single-step through the MSTOP instruction of "task A."
It depends on exactly when the new task comes in. To reliably start "task B" perform a soft reset
and reconfigure the MIER bits. Once this is done, you can start single-stepping "task B."
540
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CLA Configuration and Debug
www.ti.com
This case can be handled slightly differently if there is control over when "task B" comes in (for
example using the IACK instruction to start the task). In this case you have single-stepped or halted
in "task A" and the MPC has reached the MSTOP with no tasks pending. Before forcing "task B,"
run free to force the CLA out of the debug state. Once this is done you can force "task B" and
continue debugging.
5. If desired, disable CLA breakpoints
In CCS V3.3 you can disable the CLA breakpoints by disconnecting the CLA debug window. Make
sure to first issue a run or reset; otherwise, the CLA will be halted and no other tasks will start.
9.3.4 CLA Illegal Opcode Behavior
If the CLA fetches an opcode that does not correspond to a legal instruction, it will behave as follows:
• The CLA will halt with the illegal opcode in the D2 phase of the pipeline as if it were a breakpoint. This
will occur whether CLA breakpoints are enabled or not.
• The CLA will issue the task-specific interrupt to the PIE.
• The MIRUN bit for the task will remain set.
Further single-stepping ignored once execution halts due to an illegal op-code. To exit this situation, issue
either a soft or hard reset of the CLA as described in Section 9.3.5.
9.3.5 Resetting the CLA
There may be times when you need to reset the CLA. For example, during code debug the CLA may enter
an infinite loop due to a code bug. The CLA has two types of resets: hard and soft. Both of these resets
can be performed by the debugger or by the main CPU.
• Hard Reset
Writing a 1 to the MCTL[HARDRESET] bit will perform a hard reset of the CLA. The behavior of a hard
reset is the same as a system reset (via XRS or the debugger). In this case all CLA configuration and
execution registers will be set to their default state and CLA execution will halt.
• Soft Reset
Writing a 1 to the MCTL[SOFTRESET] bit performs a soft reset of the CLA. If a task is executing it will
halt and the associated MIRUN bit will be cleared. All bits within the interrupt enable (MIER) register
will also be cleared so that no new tasks start.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
541
Register Set
9.4
www.ti.com
Register Set
The CLA register set is independent from that of the main CPU. This chapter describes the CLA register
set.
9.4.1 Register Memory Mapping
The table below describes the CLA module control and status register set.
Table 9-1. CLA Module Control and Status Register Set
Offset
Size
(x16)
EALLOW
CSM
Protected
MVECT1
0x0000
1
Yes
Yes
Task 1 Interrupt Vector
MVECT2
0x0001
1
Yes
Yes
Task 2 Interrupt Vector
MVECT3
0x0002
1
Yes
Yes
Task 3 Interrupt Vector
MVECT4
0x0003
1
Yes
Yes
Task 4 Interrupt Vector
MVECT5
0x0004
1
Yes
Yes
Task 5 Interrupt Vector
MVECT6
0x0005
1
Yes
Yes
Task 6 Interrupt Vector
MVECT7
0x0006
1
Yes
Yes
Task 7 Interrupt Vector
MVECT8
0x0007
1
Yes
Yes
Task 8 Interrupt Vector
MCTL
0x0010
1
Yes
Yes
Control Register
MMEMCFG
0x0011
1
Yes
Yes
Memory Configuration Register
MPISRCSEL1
0x0014
2
Yes
Yes
Peripheral Interrupt Source Select 1 Register
MIFR
0x0020
1
Yes
Yes
Interrupt Flag Register
MIOVF
0x0021
1
Yes
Yes
Interrupt Overflow Flag Register
MIFRC
0x0022
1
Yes
Yes
Interrupt Force Register
MICLR
0x0023
1
Yes
Yes
Interrupt Flag Clear Register
MICLROVF
0x0024
1
Yes
Yes
Interrupt Overflow Flag Clear Register
MIER
0x0025
1
Yes
Yes
Interrupt Enable Register
MIRUN
0x0026
1
Yes
Yes
Interrupt Run Status Register
Name
Description
Task Interrupt Vectors
Configuration Registers
Execution Registers
MPC
0x0028
1
-
Yes
CLA Program Counter
MAR0
0x0029
1
-
Yes
CLA Auxiliary Register 0
MAR1
0x002A
1
-
Yes
CLA Auxiliary Register 1
MSTF
0x002E
2
-
Yes
CLA Floating-Point Status Register
MR0
0x0030
2
-
Yes
CLA Floating-Point Result Register 0
MR1
0x0034
2
-
Yes
CLA Floating-Point Result Register 1
MR2
0x0038
2
-
Yes
CLA Floating-Point Result Register 2
MR3
0x003C
2
-
Yes
CLA Floating-Point Result Register 3
(1)
542
(1)
The main C28x CPU only has read access to the CLA execution registers for debug purposes. The main CPU cannot perform
CPU or debugger writes to these registers.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
9.4.2 Task Interrupt Vector Registers
Each CLA interrupt has its own interrupt vector (MVECT1 to MVECT8). This interrupt vector points to the
first instruction of the associated task. When a task begins, the CLA will start fetching instructions at the
location indicated by the appropriate MVECT register .
9.4.2.1
Task Interrupt Vector (MVECT1/2/3/4/5/6/7/8) Register
The task interrupt vector registers (MVECT1/2/3/4/5/6/7/8) are is shown in Section 9.4.2.1 and described
in Figure 9-2.
Figure 9-2. Task Interrupt Vector (MVECT1/2/3/4/5/6/7/8) Register
15
12
11
0
Reserved
MVECT
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-2. Task Interrupt Vector (MVECT1/2/3/4/5/6/7/8) Field Descriptions
Bits
Name
15-12
Reserved
11-0
MVECT
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
0000 0FFF
Offset of the first instruction in the associated task from the start of CLA program space. The CLA
will begin instruction fetches from this location when the specific task begins.
For example:
If CLA program memory begins at CPU address 0x009000 and the code for task 5
begins at CPU address 0x009120, then MVECT5 should be initialized with
0x0120.
There is one MVECT register per task. Interrupt 1 uses MVECT1, interrupt 2 uses MVECT2 and
so forth.
(1)
These registers are protected by EALLOW and the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
543
Register Set
www.ti.com
9.4.3 Configuration Registers
The configuration registers are described here.
9.4.3.1
Control Register (MCTL)
The configuration control register (MCTL) is shown in Figure 9-3 and described in Table 9-3.
Figure 9-3. Control Register (MCTL)
15
8
Reserved
R -0
7
2
1
0
Reserved
3
IACKE
SOFTRESET
HARDRESET
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
544 Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-3. Control Register (MCTL) Field Descriptions
Bits
Name
Value Description
15-3 Reserved
2
Any writes to these bit(s) must always have a value of 0.
IACKE
IACK enable
0
The CLA ignores the IACK instruction. (default)
1
Enable the main CPU to use the IACK #16bit instruction to set MIFR bits in the same manner as writing to
the MIFRC register. Each bit in the operand, #16bit, corresponds to a bit in the MIFRC register. Using
IACK has the advantage of not having to first set the EALLOW bit. This allows the main CPU to efficiently
trigger a CLA task through software.
Examples
1
0
(1)
(1)
SOFTRESET
IACK #0x0001
Write a 1 to MIFRC bit 0 to force task 1
IACK #0x0003
Write a 1 to MIFRC bit 0 and 1 to force task 1 and task 2
Soft Reset
0
This bit always reads back 0 and writes of 0 are ignored.
1
Writing a 1 will cause a soft reset of the CLA. This will stop the current task, clear the MIRUN flag and
clear all bits in the MIER register. After a soft reset you must wait at least 1 SYSCLKOUT cycle before
reconfiguring the MIER bits. If these two operations are done back-to-back then the MIER bits will not get
set.
HARDRESET
Hard Reset
0
This bit always reads back 0 and writes of 0 are ignored.
1
Writing a 1 will cause a hard reset of the CLA. This will set all CLA registers to their default state.
This register is protected by EALLOW and the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
545
Register Set
9.4.3.2
www.ti.com
Memory Configuration Register (MMEMCFG)
The MMEMCFG register is used to map the CLA program and data RAMs to either the CPU or the CLA
memory space. Typically, mapping of the CLA program and data RAMs occurs only during the
initialization process. If after some time the you want to re-map these memories back to CPU space,
disable interrupts using the MIER register and make sure all tasks have completed by checking the
MIRUN register. Allow two SYSCLKOUT cycles between changing the map configuration of these
memories and accessing them. Refer to Section 9.7 for CLA and CPU access arbitration details.
NOTE: CPU reads of bits 8, 9, and 10 of the MMEMCFG register will always return a zero whereas
writes to these bits work as expected. This is a silicon bug in revisions 0, A and B.
To modify the bits of this register, a single write to the entire register with the complete configuration
should be performed. Read-Modify-Write should not be used, as any Read-Modify-Write operation to the
register will read a zero for bits 8, 9, and 10 and can write back a zero to those bits, and thus modify these
bits unintentionally. An example is shown below:
#define
#define
#define
#define
#define
#define
#define
CLA_PROG_ENABLE
CLARAM0_ENABLE
CLARAM1_ENABLE
CLARAM2_ENABLE
CLA_RAM0CPUE
CLA_RAM1CPUE
CLA_RAM1CPUE
0x0001
0x0010
0x0020
0x0040
0x0100
0x0200
0x0400
Cla1Regs.MMEMCFG.all = CLA_PROG_ENABLE1|CLARAM0_ENABLE|
CLARAM1_ENABLE|CLARAM2_ENABLE|
CLA_RAM1CPUE
Figure 9-4. Memory Configuration Register (MMEMCFG)
15
10
9
8
Reserved
11
RAM2CPUE
RAM1CPUE
RAM0CPUE
R -0
R/W-0
R/W-0
R/W-0
7
6
5
4
Reserved
RAM2E
RAM1E
RAM0E
3
Reserved
1
PROGE
0
R-0
R/W-0
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-4. Memory Configuration Register (MMEMCFG) Field Descriptions
Bits
Field
15-11
Reserved
10
RAM2CPUE
Value
Description
Any writes to these bit(s) must always have a value of 0
CLA Data RAM 2 CPU Access Enable Bit:
Allows/disallows CPU data accesses to CLA-Data-RAM 2, when the RAM2E bit is set.
This bit is used to enable access of the CLA-Data-RAM to the CPU, when the CLA-DataRAM is mapped to the CLA (RAM2E =1).
When the data RAM is not mapped to the CLA (RAM2E =0), this bit has no effect. When
RAM2E =1 and RAM2CPUE=0, CPU does not have access to the CLA-Data-RAM.
When RAM2E=1 and RAM2CPUE=1, both CPU and CLA have access to the CLA data
RAM, the priority of the accesses being determined by the arbitration scheme.
Note that CPU data accesses are always allowed when RAM0E bit is cleared. Allow two
SYSCLKOUT cycles between changing this bit and accessing the memory.
0
When RAM2E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM2E=1 (RAM mapped to CLA), CLA accesses are allowed but CPU accesses
are not allowed.
1
When RAM2E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM2E=1 (RAM mapped to CLA), both CLA and CPU accesses are allowed.
546 Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-4. Memory Configuration Register (MMEMCFG) Field Descriptions (continued)
Bits
Field
9
RAM1CPUE
Value
Description
CLA Data RAM 1 CPU Access Enable Bit:
Allows/disallows CPU data accesses to CLA-Data-RAM 1, when the RAM1E bit is set.
This bit is used to enable access of the CLA-Data-RAM to the CPU, when the CLA-DataRAM is mapped to the CLA (RAM1E=1).
When the data RAM is not mapped to the CLA (RAM1E=0), this bit has no effect. When
RAM1E=1 and RAM1CPUE=0, CPU does not have access to the CLA-Data-RAM. When
RAM1E=1 and RAM1CPUE=1, both CPU and CLA have access to the CLA data RAM,
the priority of the accesses being determined by the arbitration scheme.
Note that CPU data accesses are always allowed when RAM1E bit is cleared. Allow two
SYSCLKOUT cycles between changing this bit and accessing the memory.
0
When RAM1E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM1E=1 (RAM mapped to CLA), CLA accesses are allowed but CPU accesses
are not allowed.
1
When RAM1E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM1E=1 (RAM mapped to CLA), both CLA and CPU accesses are allowed.
8
RAM0CPUE
CLA Data RAM 0 CPU Access Enable Bit:
Allows/disallows CPU data accesses to CLA-Data-RAM 0, when the RAM0E bit is set.
This bit is used to enable access of the CLA-Data-RAM to the CPU, when the CLA-DataRAM is mapped to the CLA (RAM0E=1).
When the data RAM is not mapped to the CLA (RAM0E=0), this bit has no effect. When
RAM0E=1 and RAM0CPUE=0, CPU does not have access to the CLA-Data-RAM. When
RAM0E=1 and RAM0CPUE=1, both CPU and CLA have access to the CLA data RAM,
the priority of the accesses being determined by the arbitration scheme.
Note that CPU data accesses are always allowed when RAM0E bit is cleared. Allow 2
SYSCLKOUT cycles between changing this bit and accessing the memory.
0
When RAM0E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM0E=1 (RAM mapped to CLA), CLA accesses are allowed but CPU accesses
are not allowed.
1
When RAM0E=0 (RAM not mapped to CLA), CLA accesses are not allowed. Only CPU
accesses are allowed.
When RAM0E=1 (RAM mapped to CLA), both CLA and CPU accesses are allowed.
7
Reserved
6
RAM2E
Any writes to these bit(s) must always have a value of 0
CLA Data RAM 2 Enable
Allow two SYSCLKOUT cycles between changing this bit and accessing the memory
5
0
CLA data SARAM block 2 is mapped to the main CPU program and data space. CLA
reads will return zero. (default)
1
CLA data SARAM block 2 is mapped to the CLA space. The RAM2CPUE bit determines
the CPU access to this memory
RAM1E
CLA Data RAM 1 Enable
Allow two SYSCLKOUT cycles between changing this bit and accessing the memory
4
0
CLA data SARAM block 1 is mapped to the main CPU program and data space. CLA
reads will return zero. (default)
1
CLA data SARAM block 1 is mapped to the CLA space. The RAM1CPUE bit determines
the CPU access to this memory
RAM0E
CLA Data RAM 0 Enable
Allow two SYSCLKOUT cycles between changing this bit and accessing the memory
3-1
0
CLA data SARAM block 0 is mapped to the main CPU program and data space. CLA
reads will return zero. (default)
1
CLA data SARAM block 0 is mapped to the CLA space. The RAM0CPUE bit determines
the CPU access to this memory
Reserved
Any writes to these bit(s) must always have a value of 0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) 547
Register Set
www.ti.com
Table 9-4. Memory Configuration Register (MMEMCFG) Field Descriptions (continued)
Bits
Field
0
PROGE
Value
Description
CLA Program Space Enable
Allow two SYSCLKOUT cycles between changing this bit and accessing the memory
0
CLA program SARAM is mapped to the main CPU program and data space. If the CLA
attempts a program fetch the result will be the same as an illegal opcode fetch as
described in Section 3.4.(default)
1
CLA program SARAM is mapped to the CLA program space. The main SPU can only
make debug accesses to this block
In this state the CLA has higher priority than CPU debug reads. It is, therefore, possible
for the CLA to permanently block debug accesses if the CLA is executing in a loop. This
might occur when if the CLA code has a bug. To avoid this issue, the program memory
will reutrn 0x0000 for CPU debug reads (ignore writes) when the CLA is running. When
the CLA is halted or idle then normal CPU debug read and write access can be
performed
9.4.3.3
CLA Peripheral Interrupt Source Select 1 Register (MPISRCSEL1)
Each task has specific peripherals that can start it. For example, Task2 can be started by ADCINT2 or
EPWM2_INT. To configure which of the possible peripherals will start a task configure the MPISRCSEL1
register shown in Figure 9-5. Choosing the option "no interrupt source" means that only the main CPU
software will be able to start the given task.
Figure 9-5. CLA Peripheral Interrupt Source Select 1 Register (MPISRCSEL1)
31
28
27
24
23
20
19
16
PERINT8SEL
PERINT7SEL
PERINT6SEL
PERINT5SEL
R/W-0
R/W-0
R/W-0
R/W-0
15
12
11
8
7
4
3
0
PERINT4SEL
PERINT3SEL
PERINT2SEL
PERINT1SEL
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-5. Peripheral Interrupt Source Select 1 (MPISRCSEL1) Register Field Descriptions
Bits
Field
31 - 28
PERINT8SEL
(1)
(2)
548
Value
(1)
Description
(2)
Task 8 Peripheral Interrupt Input Select
0000
ADCINT8 is the input for interrupt task 8. (default)
0010
CPU Timer 0 is the input for interrupt task 8. (TINT0)
0100
eQEP1 is the input for interrupt task 8. (EQEP1_INT)
0101
eQEP2 is the input for interrupt task 8. (EQEP2_INT)
1000
eCAP1 is the input for interrupt task 8. (ECAP1_INT)
1001
eCAP2 is the input for interrupt task 8. (ECAP2_INT)
1010
eCAP3 is the input for interrupt task 8. (ECAP3_INT)
Other
No interrupt source for task 8.
All values not shown are reserved.
This register is protected by EALLOW and the code security module.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-5. Peripheral Interrupt Source Select 1 (MPISRCSEL1) Register Field Descriptions (continued)
Bits
Field
27 - 24
PERINT7SEL
23 - 20
19 - 16
15 - 12
11 - 8
7-4
Value
(1)
Description
(2)
Task 7 Peripheral Interrupt Input Select
0000
ADCINT7 is the input for interrupt task 7. (default)
0010
ePWM7 is the input for interrupt task 7. (EPWM7_INT)
0100
eQEP1 is the input for interrupt task 7. (EQEP1_INT)
0101
eQEP2 is the input for interrupt task 7. (EQEP2_INT)
1000
eCAP1 is the input for interrupt task 7. (ECAP1_INT)
1001
eCAP2 is the input for interrupt task 7. (ECAP2_INT)
1010
eCAP3 is the input for interrupt task 7. (ECAP3_INT)
Other
No interrupt source for task 7.
PERINT6SEL
Task 6 Peripheral Interrupt Input Select
0000
ADCINT6 is the input for interrupt task 6. (default)
0010
ePWM6 is the input for interrupt task 6. (EPWM6_INT)
0100
eQEP1 is the input for interrupt task 6. (EQEP1_INT)
0101
eQEP2 is the input for interrupt task 6. (EQEP2_INT)
1000
eCAP1 is the input for interrupt task 6. (ECAP1_INT)
1001
eCAP2 is the input for interrupt task 6. (ECAP2_INT)
1010
eCAP3 is the input for interrupt task 6. (ECAP3_INT)
Other
No interrupt source for task 6.
PERINT5SEL
Task 5 Peripheral Interrupt Input Select
0000
ADCINT5 is the input for interrupt task 5. (default)
0010
ePWM5 is the input for interrupt task 5. (EPWM5_INT)
0100
eQEP1 is the input for interrupt task 5. (EQEP1_INT)
0101
eQEP2 is the input for interrupt task 5. (EQEP2_INT)
1000
eCAP1 is the input for interrupt task 5. (ECAP1_INT)
1001
eCAP2 is the input for interrupt task 5. (ECAP2_INT)
1010
eCAP3 is the input for interrupt task 5. (ECAP3_INT)
Other
No interrupt source for task 5.
PERINT4SEL
Task 4 Peripheral Interrupt Input Select
0000
ADCINT4 is the input for interrupt task 4. (default)
0010
ePWM4 is the input for interrupt task 4. (EPWM4_INT)
0100
eQEP1 is the input for interrupt task 4. (EQEP1_INT)
0101
eQEP2 is the input for interrupt task 4. (EQEP2_INT)
1000
eCAP1 is the input for interrupt task 4. (ECAP1_INT)
1001
eCAP2 is the input for interrupt task 4. (ECAP2_INT)
1010
eCAP3 is the input for interrupt task 4. (ECAP3_INT)
Other
No interrupt source for task 4.
PERINT3SEL
Task 3 Peripheral Interrupt Input Select
0000
ADCINT3 is the input for interrupt task 3. (default)
0010
ePWM3 is the input for interrupt task 3. (EPWM3_INT)
xxx1
No interrupt source for task 3.
PERINT2SEL
Task 2 Peripheral Interrupt Input Select
0000
ADCINT2 is the input for interrupt task 2. (default)
0010
ePWM2 is the input for interrupt task 2. (EPWM2_INT)
xxx1
No interrupt source for task 2.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
549
Register Set
www.ti.com
Table 9-5. Peripheral Interrupt Source Select 1 (MPISRCSEL1) Register Field Descriptions (continued)
Bits
Field
3-0
PERINT1SEL
9.4.3.4
Value
(1)
Description
(2)
Task 1Peripheral Interrupt Input Select
0000
ADCINT1 is the input for interrupt task 1. (default)
0010
ePWM1 is the input for interrupt task 1. (EPWM1_INT)
xxx1
No interrupt source
Interrupt Enable Register (MIER)
Setting the bits in the interrupt enable register (MIER) allow an incoming interrupt or main CPU software to
start the corresponding CLA task. Writing a 0 will block the task, but the interrupt request will still be
latched in the flag register (MIFLG). Setting the MIER register bit to 0 while the corresponding task is
executing will have no effect on the task. The task will continue to run until it hits the MSTOP instruction.
When a soft reset is issued, the MIER bits are cleared. There should always be at least a 1 SYSCLKOUT
delay between issuing the soft reset and reconfiguring the MIER bits.
Figure 9-6. Interrupt Enable Register (MIER)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-6. Interrupt Enable Register (MIER) Field Descriptions
Name
15-8
Reserved
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Enable
7
6
5
4
3
2
1
(1)
Value
Description
(1)
Bits
0
Task 8 interrupt is disabled. (default)
1
Task 8 interrupt is enabled.
INT7
Task 7 Interrupt Enable
0
Task 7 interrupt is disabled. (default)
1
Task 7 interrupt is enabled.
INT6
Task 6 Interrupt Enable
0
Task 6 interrupt is disabled. (default)
1
Task 6 interrupt is enabled.
INT5
Task 5 Interrupt Enable
0
Task 5 interrupt is disabled. (default)
1
Task 5 interrupt is enabled.
INT4
Task 4 Interrupt Enable
0
Task 4 interrupt is disabled. (default)
1
Task 4 interrupt is enabled.
INT3
Task 3 Interrupt Enable
0
Task 3 interrupt is disabled. (default)
1
Task 3 interrupt is enabled.
INT2
Task 2 Interrupt Enable
0
Task 2 interrupt is disabled. (default)
1
Task 2 interrupt is enabled.
This register is protected by EALLOW and the code security module.
550 Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-6. Interrupt Enable Register (MIER) Field Descriptions (continued)
Bits
Name
0
INT1
9.4.3.5
Value
Description
(1)
Task 1 Interrupt Enable
0
Task 1 interrupt is disabled. (default)
1
Task 1 interrupt is enabled.
Interrupt Flag Register (MIFR)
Each bit in the interrupt flag register corresponds to a CLA task. The corresponding bit is automatically set
when the task request is received from the peripheral interrupt. The bit can also be set by the main CPU
writing to the MIFRC register or using the IACK instruction to start the task. To use the IACK instruction to
begin a task first enable this feature in the MCTL register. If the bit is already set when a new peripheral
interrupt is received, then the corresponding overflow bit will be set in the MIOVF register.
The corresponding MIFR bit is automatically cleared when the task begins execution. This will occur if the
interrupt is enabled in the MIER register and no other higher priority task is pending. The bits can also be
cleared manually by writing to the MICLR register. Writes to the MIFR register are ignored.
Figure 9-7. Interrupt Flag Register (MIFR)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-7. Interrupt Flag Register (MIFR) Field Descriptions
Bits
Name
15-8
Reserved
7
6
5
4
3
2
(1)
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Flag
0
A task 8 interrupt is currently not flagged. (default)
1
A task 8 interrupt has been received and is pending execution.
INT7
Task 7 Interrupt Flag
0
A task 7 interrupt is currently not flagged. (default)
1
A task 7 interrupt has been received and is pending execution.
INT6
Task 6 Interrupt Flag
0
A task 6 interrupt is currently not flagged. (default)
1
A task 6 interrupt has been received and is pending execution.
INT5
Task 5 Interrupt Flag
0
A task 5 interrupt is currently not flagged. (default)
1
A task 5 interrupt has been received and is pending execution.
INT4
Task 4 Interrupt Flag
0
A task 4 interrupt is currently not flagged. (default)
1
A task 4 interrupt has been received and is pending execution.
INT3
Task 3 Interrupt Flag
0
A task 3 interrupt is currently not flagged. (default)
1
A task 3 interrupt has been received and is pending execution.
This register is protected by the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) 551
Register Set
www.ti.com
Table 9-7. Interrupt Flag Register (MIFR) Field Descriptions (continued)
Bits
Name
1
INT2
0
9.4.3.6
Value
Description
(1)
Task 2 Interrupt Flag
0
A task 2 interrupt is currently not flagged. (default)
1
A task 2 interrupt has been received and is pending execution.
INT1
Task 1 Interrupt Flag
0
A task 1 interrupt is currently not flagged. (default)
1
A task 1 interrupt has been received and is pending execution.
Interrupt Overflow Flag Register (MIOVF)
Each bit in the overflow flag register corresponds to a CLA task. The bit is set when an interrupt overflow
event has occurred for the specific task. An overflow event occurs when the MIFR register bit is already
set when a new interrupt is received from a peripheral source. The MIOVF bits are only affected by
peripheral interrupt events. They do not respond to a task request by the main CPU IACK instruction or by
directly setting MIFR bits. The overflow flag will remain latched and can only be cleared by writing to the
overflow flag clear (MICLROVF) register. Writes to the MIOVF register are ignored.
Figure 9-8. Interrupt Overflow Flag Register (MIOVF)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-8. Interrupt Overflow Flag Register (MIOVF) Field Descriptions
Bits
Name
15-8
Reserved
7
6
5
4
3
2
(1)
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Overflow Flag
0
A task 8 interrupt overflow has not occurred. (default)
1
A task 8 interrupt overflow has occurred.
INT7
Task 7 Interrupt Overflow Flag
0
A task 7 interrupt overflow has not occurred. (default)
1
A task 7 interrupt overflow has occurred.
INT6
Task 6 Interrupt Overflow Flag
0
A task 6 interrupt overflow has not occurred. (default)
1
A task 6 interrupt overflow has occurred.
INT5
Task 5 Interrupt Overflow Flag
0
A task 5 interrupt overflow has not occurred. (default)
1
A task 5 interrupt overflow has occurred.
INT4
Task 4 Interrupt Overflow Flag
0
A task 4 interrupt overflow has not occurred. (default)
1
A task 4 interrupt overflow has occurred.
INT3
Task 3 Interrupt Overflow Flag
0
A task 3 interrupt overflow has not occurred. (default)
1
A task 3 interrupt overflow has occurred.
This register is protected by the code security module.
552 Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-8. Interrupt Overflow Flag Register (MIOVF) Field Descriptions (continued)
Bits
Name
1
INT2
0
9.4.3.7
Value
Description
(1)
Task 2 Interrupt Overflow Flag
0
A task 2 interrupt overflow has not occurred. (default)
1
A task 2 interrupt overflow has occurred.
INT1
Task 1 Interrupt Overflow Flag
0
A task 1 interrupt overflow has not occurred. (default)
1
A task 1 interrupt overflow has occurred.
Interrupt Run Status Register (MIRUN)
The interrupt run status register (MIRUN) indicates which task is currently executing. Only one MIRUN bit
will ever be set to a 1 at any given time. The bit is automatically cleared when the task competes and the
respective interrupt is fed to the peripheral interrupt expansion (PIE) block of the device. This lets the main
CPU know when a task has completed. The main CPU can stop a currently running task by writing to the
MCTL[SOFTRESET] bit. This will clear the MIRUN flag and stop the task. In this case no interrupt will be
generated to the PIE.
Figure 9-9. Interrupt Run Status Register (MIRUN)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-9. Interrupt Run Status Register (MIRUN) Field Descriptions
Bits
Name
15-8
Reserved
7
6
5
4
3
2
(1)
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Run Status
0
Task 8 is not executing. (default)
1
Task 8 is executing.
INT7
Task 7 Run Status
0
Task 7 is not executing. (default)
1
Task 7 is executing.
INT6
Task 6 Run Status
0
Task 6 is not executing. (default)
1
Task 6 is executing.
INT5
Task 5 Run Status
0
Task 5 is not executing. (default)
1
Task 5 is executing.
INT4
Task 4 Run Status
0
Task 4 is not executing. (default)
1
Task 4 is executing.
INT3
Task 3 Run Status
0
Task 3 is not executing. (default)
1
Task 3 is executing.
This register is protected by the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) 553
Register Set
www.ti.com
Table 9-9. Interrupt Run Status Register (MIRUN) Field Descriptions (continued)
Bits
Name
1
INT2
0
554
Value
Description
(1)
Task 2 Run Status
0
Task 2 is not executing. (default)
1
Task 2 is executing.
INT1
Task 1 Run Status
0
Task 1 is not executing. (default)
1
Task 1 is executing.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
9.4.3.8
Interrupt Force Register (MIFRC)
The interrupt force register can be used by the main CPU to start tasks through software. Writing a 1 to a
MIFRC bit will set the corresponding bit in the MIFR register. Writes of 0 are ignored and reads always
return 0. The IACK #16bit operation can also be used to start tasks and has the same effect as the
MIFRC register. To enable IACK to set MIFR bits you must first set the MCTL[IACKE] bit. Using IACK has
the advantage of not having to first set the EALLOW bit. This allows the main CPU to efficiently trigger
CLA tasks through software.
Figure 9-10. Interrupt Force Register (MIFRC)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-10. Interrupt Force Register (MIFRC) Field Descriptions
Bits
Name
15-8
Reserved
7
6
5
4
3
2
1
0
(1)
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 8 interrupt.
INT7
Task 7 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 7 interrupt.
INT6
Task 6 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 6 interrupt.
INT5
Task 5 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 5 interrupt.
INT4
Task 4 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 4 interrupt.
INT3
Task 3 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 3 interrupt.
INT2
Task 2 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 2 interrupt.
INT1
Task 1 Interrupt Force
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to force the task 1 interrupt.
This register is protected by EALLOW and the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
555
Register Set
9.4.3.9
www.ti.com
Interrupt Flag Clear Register (MICLR)
Normally bits in the MIFR register are automatically cleared when a task begins. The interrupt flag clear
register can be used to instead manually clear bits in the interrupt flag (MIFR) register. Writing a 1 to a
MICLR bit will clear the corresponding bit in the MIFR register. Writes of 0 are ignored and reads always
return 0.
Figure 9-11. Interrupt Flag Clear Register (MICLR)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-11. Interrupt Flag Clear Register (MICLR) Field Descriptions
Name
15-8
Reserved
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Flag Clear
7
6
5
4
3
2
1
0
(1)
556
Value
Description
(1)
Bits
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 8 interrupt flag.
INT7
Task 7 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 7 interrupt flag.
INT6
Task 6 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 6 interrupt flag.
INT5
Task 5 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 5 interrupt flag.
INT4
Task 4 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 4 interrupt flag.
INT3
Task 3 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 3 interrupt flag.
INT2
Task 2 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 2 interrupt flag.
INT1
Task 1 Interrupt Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 1 interrupt flag.
This register is protected by EALLOW and the code security module.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
9.4.3.10 Interrupt Overflow Flag Clear Register (MICLROVF)
Overflow flag bits in the MIOVF register are latched until manually cleared using the MICLROVF register.
Writing a 1 to a MICLROVF bit will clear the corresponding bit in the MIOVF register. Writes of 0 are
ignored and reads always return 0.
Figure 9-12. Interrupt Overflow Flag Clear Register (MICLROVF)
15
8
Reserved
R -0
7
6
5
4
3
2
1
0
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-12. Interrupt Overflow Flag Clear Register (MICLROVF) Field Descriptions
Bits
Name
15-8
Reserved
7
6
5
4
3
2
1
0
(1)
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
INT8
Task 8 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 8 interrupt overflow flag.
INT7
Task 7 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 7 interrupt overflow flag.
INT6
Task 6 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 6 interrupt overflow flag.
INT5
Task 5 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 5 interrupt overflow flag.
INT4
Task 4 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 4 interrupt overflow flag.
INT3
Task 3 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 3 interrupt overflow flag.
INT2
Task 2 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 2 interrupt overflow flag.
INT1
Task 1 Interrupt Overflow Flag Clear
0
This bit always reads back 0 and writes of 0 have no effect.
1
Write a 1 to clear the task 1 interrupt overflow flag.
This register is protected by EALLOW and the code security module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
557
Register Set
www.ti.com
9.4.4 Execution Registers
The CLA program counter is initialized by the appropriate MVECTx register when an interrupt is received
and a task begins execution. The MPC points to the instruction in the decode 2 (D2) stage of the CLA
pipeline. After a MSTOP operation, if no other tasks are pending, the MPC will remain pointing to the
MSTOP instruction. The MPC register can be read by the main C28x CPU for debug purposes. The main
CPU cannot write to MPC.
9.4.4.1
MPC Register
The MPC register is described in Figure 9-13 and described in Table 9-13.
Figure 9-13. Program Counter (MPC)
15
12
11
0
Reserved
MPC
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9-13. Program Counter (MPC) Field Descriptions
Bits
(1)
9.4.4.2
Name
15-12
Reserved
11-0
MPC
Value
Description
(1)
Any writes to these bit(s) must always have a value of 0.
0000 0FFF
Points to the instruction currently in the decode 2 phase of the CLA pipeline. The value is the
offset from the first address in the CLA program space.
This register is protected by the code security module. The main CPU can read this register for debug purposes but it can not
write to it.
MSTF Register
The CLA status register (MSTF) reflects the results of different operations. These are the basic rules for
the flags:
• Zero and negative flags are cleared or set based on:
– floating-point moves to registers
– the result of compare, minimum, maximum, negative and absolute value operations
– the integer result of operations such as MMOV16, MAND32, MOR32, MXOR32, MCMP32,
MASR32, MLSR32
• Overflow and underflow flags are set by floating-point math instructions such as multiply, add, subtract
and 1/x. These flags may also be connected to the peripheral interrupt expansion (PIE) block on your
device. This can be useful for debugging underflow and overflow conditions within an application.
The MSTF register is shown in Figure 10-3 and described in Table 10-5.
Figure 9-14. CLA Status Register (MSTF)
31
24
23
16
Reserved
RPC
R/W-0
R/W-0
15
11
10
RPC
12
MEALLOW
Reserved
R/W-0
R/W-0
R-0
9
RND32
8
7
Reserved
R/W-0
R-0
6
3
2
1
0
TF
5
Reserved
4
ZF
NF
LUF
LVF
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
558
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 9-14. CLA Status (MSTF) Register Field Descriptions
Bits
Field
Value
31 - 24
Reserved
0
23 - 12
RPC
11
MEALLOW
Description
(1)
Reserved for future use
Return program counter.
The RPC is used to save and restore the MPC address by the MCCNDD and MRCNDD operations.
10
Reserved
9
RND32
This bit enables and disables CLA write access to EALLOW protected registers. This is independent of
the state of the EALLOW bit in the main CPU status register. This status bit can be saved and restored
by the MMOV32 STF, mem32 instruction.
0
The CLA cannot write to EALLOW protected registers. This bit is cleared by the CLA instruction,
MEDIS.
1
The CLA is allowed to write to EALLOW protected registers. This bit is set by the CLA instruction,
MEALLOW.
0
Any writes to these bit(s) must always have a value of 0.
Round 32-bit Floating-Point Mode
Use the MSETFLG and MMOV32 MSTF, mem32 instructions to change the rounding mode.
8-7
Reserved
6
TF
0
If this bit is zero, the MMPYF32, MADDF32 and MSUBF32 instructions will round to zero (truncate).
1
If this bit is one, the MMPYF32, MADDF32 and MSUBF32 instructions will round to the nearest even
value.
0
Reserved for future use
Test Flag
The MTESTTF instruction can modify this flag based on the condition tested. The MSETFLG and
MMOV32 MSTF, mem32 instructions can also be used to modify this flag.
5-4
Reserved
3
ZF
0
The condition tested with the MTESTTF instruction is false.
1
The condition tested with the MTESTTF instruction is true.
These two bits may change based on integer results. These flags are not, however, used by the CLA
and therefore marked as reserved.
Zero Flag
(2) (3)
• Instructions that modify this flag based on the floating-point value stored in the destination register:
MMOV32, MMOVD32, MABSF32, MNEGF32
• Instructions that modify this flag based on the floating-point result of the operation:
MCMPF32, MMAXF32, and MMINF32
• Instructions that modify this flag based on the integer result of the operation:
MMOV16, MAND32, MOR32, MXOR32, MCMP32, MASR32, MLSR32 and
MLSL32
The MSETFLG and MMOV32 MSTF, mem32 instructions can also be used to modify this flag
2
0
The value is not zero.
1
The value is zero.
NF
Negative Flag
(2) (3)
• Instructions that modify this flag based on the floating-point value stored in the destination register:
MMOV32, MMOVD32, MABSF32, MNEGF32
• Instructions that modify this flag based on the floating-point result of the operation:
MCMPF32, MMAXF32, and MMINF32
• Instructions that modify this flag based on the integer result of the operation:
MMOV16, MAND32, MOR32, MXOR32, MCMP32, MASR32, MLSR32 and
MLSL32
The MSETFLG and MMOV32 MSTF, mem32 instructions can also be used to modify this flag.
(1)
(2)
(3)
0
The value is not negative.
1
The value is negative.
This register is protected by the code security module. The main CPU can read this register for debug purposes but it can not write to it.
A negative zero floating-point value is treated as a positive zero value when configuring the ZF and NF flags.
A DeNorm floating-point value is treated as a positive zero value when configuring the ZF and NF flags.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
559
Register Set
www.ti.com
Table 9-14. CLA Status (MSTF) Register Field Descriptions (continued)
Bits
Field
1
LUF
Value
Description
(1)
Latched Underflow Flag
The following instructions will set this flag to 1 if an underflow occurs: MMPYF32, MADDF32,
MSUBF32, MMACF32, MEINVF32, MEISQRTF32
The MSETFLG and MMOV32 MSTF, mem32 instructions can also be used to modify this flag.
0
0
An underflow condition has not been latched.
1
An underflow condition has been latched.
LVF
Latched Overflow Flag
The following instructions will set this flag to 1 if an overflow occurs: MMPYF32, MADDF32, MSUBF32,
MMACF32, MEINVF32, MEISQRTF32
The MSETFLG and MMOV32 MSTF, mem32 instructions can also be used to modify this flag.
560
0
An overflow condition has not been latched.
1
An overflow condition has been latched.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline
www.ti.com
9.5
Pipeline
This section describes the CLA pipeline stages and presents cases where pipeline alignment must be
considered.
9.5.1 Pipeline Overview
The CLA pipeline is very similar to the C28x pipeline. The pipeline has eight stages:
• Fetch 1 (F1)
During the F1 stage the program read address is placed on the CLA program address bus.
• Fetch 2 (F2)
During the F2 stage the instruction is read using the CLA program data bus.
• Decode 1 (D1)
During D1 the instruction is decoded.
• Decode 2 (D2)
Generate the data read address. Changes to MAR0 and MAR1 due to post-increment using indirect
addressing takes place in the D2 phase. Conditional branch decisions are also made at this stage
based on the MSTF register flags.
• Read 1 (R1)
Place the data read address on the CLA data-read address bus. If a memory conflict exists, the R1
stage will be stalled.
• Read 2 (R2)
Read the data value using the CLA data read data bus.
• Execute (EXE)
Execute the operation. Changes to MAR0 and MAR1 due to loading an immediate value or value from
memory take place in this stage.
• Write (W)
Place the write address and write data on the CLA write data bus. If a memory conflict exists, the W
stage will be stalled.
9.5.2 CLA Pipeline Alignment
The majority of the CLA instructions do not require any special pipeline considerations. This section lists
the few operations that do require special consideration.
• Write Followed by Read
In both the C28x and the CLA pipeline the read operation occurs before the write. This means that if a
read operation immediately follows a write, then the read will complete first as shown in Table 9-15. In
most cases this does not cause a problem since the contents of one memory location does not depend
on the state of another. For accesses to peripherals where a write to one location can affect the value
in another location the code must wait for the write to complete before issuing the read as shown in
Table 9-16.
This behavior is different for the 28x CPU. For the 28x CPU any write followed by read to the same
location is protected by what is called write-followed-by-read protection. This protection automatically
stalls the pipeline so that the write will complete before the read. In addition some peripheral frames
are protected such that a 28x CPU write to one location within the frame will always complete before a
read to the frame. The CLA does not have this protection mechanism. Instead the code must wait to
perform the read.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) 561
Pipeline
www.ti.com
Table 9-15. Write Followed by Read - Read Occurs First
Instruction
F1
I1 MMOV16 @Reg1, MR3
I1
I2 MMOV16 MR2, @Reg2
I2
F2
D1
D2
R1
R2
E
W
I1
I2
I1
I2
I1
I2
I1
I2
I1
I2
I1
I2
I1
Table 9-16. Write Followed by Read - Write Occurs First
Instruction
F1
I1 MMOV16 @Reg1, MR3
I1
F2
D1
D2
R1
R2
E
I2
I2
I1
I3
I3
I2
I1
I4
I4
I3
I2
I1
I5 MMOV16 MR2, @Reg2
I5
I4
I3
I2
I1
I5
I4
I3
I2
I1
I5
I4
I3
I2
I1
I5
I4
I3
I2
I5
I4
I3
I5
I4
W
I1
I5
•
562
Delayed Conditional instructions: MBCNDD, MCCNDD and MRCNDD
Referring to Example 9-1, the following applies to delayed conditional instructions:
– I1
I1 is the last instruction that can effect the CNDF flags for the branch, call or return instruction. The
CNDF flags are tested in the D2 phase of the pipeline. That is, a decision is made whether to
branch or not when MBCNDD, MCCNDD or MRCNDD is in the D2 phase.
– I2, I3 and I4
The three instructions preceding MBCNDD can change MSTF flags but will have no effect on
whether the MBCNDD instruction branches or not. This is because the flag modification will occur
after the D2 phase of the branch, call or return instruction. These three instructions must not be a
MSTOP, MDEBUGSTOP, MBCNDD, MCCNDD or MRCNDD.
– I5, I6 and I7
The three instructions following a branch, call or return are always executed irrespective of whether
the condition is true or not. These instructions must not be MSTOP, MDEBUGSTOP, MBCNDD,
MCCNDD or MRCNDD.
For a more detailed description refer to the functional description for MBCNDD, MCCNDD and
MRCNDD.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline
www.ti.com
Example 9-1. Code Fragment For MBCNDD, MCCNDD or MRCNDD
; I1 Last instruction that can affect flags for
;
the branch, call or return operation
; I2 Cannot be stop, branch, call or return
; I3 Cannot be stop, branch, call or return
; I4 Cannot be stop, branch, call or return
; MBCNDD, MCCNDD or MRCNDD
; I5-I7: Three instructions after are always
; executed whether the branch/call or return is
; taken or not
; I5 Cannot be stop, branch, call or return
; I6 Cannot be stop, branch, call or return
; I7 Cannot be stop, branch, call or return
....
; I8
; I9
•
•
Stop or Halting a Task: MSTOP and MDEBUGSTOP
The MSTOP and MDEBUGSTOP instructions cannot be placed three instructions before or after a
conditional branch, call or return instruction (MBCNDD, MCCNDD or MRCNDD). Refer to Example 9-1.
To single-step through a branch/call or return, insert the MDEBUGSTOP at least four instructions back
and step from there.
Loading MAR0 or MAR1
A load of auxiliary register MAR0 or MAR1 will occur in the EXE phase of the pipeline. Any post
increment of MAR0 or MAR1 using indirect addressing will occur in the D2 phase of the pipeline.
Referring to Example 9-2, the following applies when loading the auxiliary registers:
– I1 and I2
The two instructions following the load instruction will use the value in MAR0 or MAR1 before the
update occurs.
– I3
Loading of an auxiliary register occurs in the EXE phase while updates due to post-increment
addressing occur in the D2 phase. Thus I3 cannot use the auxiliary register or there will be a
conflict. In the case of a conflict, the update due to address-mode post increment will win and the
auxiliary register will not be updated with #_X.
– I4
Starting with the 4th instruction MAR0 or MAR1 will have the new value.
Example 9-2. Code Fragment for Loading MAR0 or MAR1
; Assume MAR0 is 50 and #_X is 20
MMOVI16 MAR0, #_X
....
;
;
;
;
;
;
Load MAR0 with address of
I1 Will use the old value
I2 Will use the old value
I3 Cannot use MAR0
I4 Will use the new value
I5 Will use the new value
X (20)
of MAR0 (50)
of MAR0 (50)
of MAR0 (20)
of MAR0 (20
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
563
Pipeline
www.ti.com
9.5.2.1
ADC Early Interrupt to CLA Response
The 2806x ADC offers the option to generate an early interrupt pulse when the ADC begins conversion.
This option is selected by setting the ADCCTL1[INTPULSEPOS] bit as documented in the Analog-toDigital Converter and Comparator section in this manual. If this option is used to start a CLA task then the
CLA will be able to read the result as soon as the conversion completes and the ADC result register
updates. This just-in-time sampling along with the low interrupt response of the CLA enable faster system
response and higher frequency control loops.
The timing for the ADC conversion is shown in the ADC Reference Guide timing diagrams. From a CLA
perspective, the pipeline activity is shown in Table 9-17. The 8th instruction is in the R2 phase just in time
to read the result register. While the first seven (7) instructions in the task (I1 to I7) will enter the R2 phase
of the pipeline too soon to read the conversion, they can be efficiently used for pre-processing calculations
needed by the task.
Table 9-17. ADC to CLA Early Interrupt Response
ADC Activity
CLA Activity
F1
F2
D1
D2
R1
R2
E
W
Sample
Sample
...
Sample
Conversion (1)
Interrupt Received
Conversion (2)
Task Startup
Conversion (3)
Task Startup
Conversion (4)
I1
I1
Conversion (5)
I2
I2
I1
Conversion (6)
I3
I3
I2
I1
Conversion (7)
I4
I4
I3
I2
I1
Conversion (8)
I5
I5
I4
I3
I2
I1
Conversion (9)
I6
I6
I5
I4
I3
I2
I1
Conversion (10)
I7
I7
I6
I5
I4
I3
I2
Conversion (11)
I8 Read ADC RESULT
I8
I7
I6
I5
I4
I3
I8
I7
I6
I5
I4
I8
I7
I6
I5
I8
I7
I6
I8
I7
Conversion (12)
Conversion (13)
Conversion Complete
RESULT Latched
RESULT Available
I8
9.5.3 Parallel Instructions
Parallel instructions are single opcodes that perform two operations in parallel. The following types of
parallel instructions are available: math operation in parallel with a move operation, or two math
operations in parallel. Both operations complete in a single cycle and there are no special pipeline
alignment requirements.
Example 9-3. Math Operation with Parallel Load
;
;
;
564
MADDF32 || MMOV32 instruction: 32-bit floating-point add with parallel move
MADDF32 is a 1 cycle operation
MMOV32 is a 1 cycle operation
MADDF32
MR0, MR1, #2
; MR0 = MR1 + 2,
|| MMOV32
MR1, @Val
; MR1 gets the contents of Val
; <-- MMOV32 completes here (MR1 is valid)
; <-- DDF32 completes here (MR0 is valid)
MMPYF32 MR0, MR0, MR1
; Any instruction, can use MR1 and/or MR0
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline
www.ti.com
Example 9-4. Multiply with Parallel Add
;
;
;
MMPYF32 || MADDF32 instruction: 32-bit floating-point multiply with parallel add
MMPYF32 is a 1 cycle operation
MADDF32 is a 1 cycle operation
MMPYF32 MR0, MR1, MR3
; MR0 = MR1 * MR3
|| MADDF32 MR1, MR2, MR0
; MR1 = MR2 + MR0 (Uses value of MR0 before MMPYF32)
; <-- MMPYF32 and MADDF32 complete here (MR0 and MR1 are valid)
MMPYF32 MR1, MR1, MR0
; Any instruction, can use MR1 and/or MR0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
565
Instruction Set
9.6
www.ti.com
Instruction Set
This section describes the assembly language instructions of the control law accelerator. Also described
are parallel operations, conditional operations, resource constraints, and addressing modes. The
instructions listed here are independent from C28x and C28x+FPU instruction sets.
9.6.1 Instruction Descriptions
This section gives detailed information on the instruction set. Each instruction may present the following
information:
• Operands
• Opcode
• Description
• Exceptions
• Pipeline
• Examples
• See also
The example INSTRUCTION is shown to familiarize you with the way each instruction is described. The
example describes the kind of information you will find in each part of the individual instruction description
and where to obtain more information. CLA instructions follow the same format as the C28x; the source
operand(s) are always on the right and the destination operand(s) are on the left.
The explanations for the syntax of the operands used in the instruction descriptions for the C28x CLA are
given in Table 9-18.
Table 9-18. Operand Nomenclature
Symbol
Description
#16FHi
16-bit immediate (hex or float) value that represents the upper 16-bits of an IEEE 32-bit floating-point value.
Lower 16-bits of the mantissa are assumed to be zero.
#16FHiHex
16-bit immediate hex value that represents the upper 16-bits of an IEEE 32-bit floating-point value.
Lower 16-bits of the mantissa are assumed to be zero.
#16FLoHex
A 16-bit immediate hex value that represents the lower 16-bits of an IEEE 32-bit floating-point value
#32Fhex
32-bit immediate value that represents an IEEE 32-bit floating-point value
#32F
Immediate float value represented in floating-point representation
#0.0
Immediate zero
#SHIFT
Immediate value of 1 to 32 used for arithmetic and logical shifts.
addr
Opcode field indicating the addressing mode
CNDF
Condition to test the flags in the MSTF register
FLAG
Selected flags from MSTF register (OR) 8 bit mask indicating which floating-point status flags to change
MAR0
auxiliary register 0
MAR1
auxiliary register 1
MARx
Either MAR0 or MAR1
mem16
16-bit memory location accessed using direct or indirect addressing modes
mem32
32-bit memory location accessed using direct or indirect addressing modes
MRa
MR0 to MR3 registers
MRb
MR0 to MR3 registers
MRc
MR0 to MR3 registers
MRd
MR0 to MR3 registers
MRe
MR0 to MR3 registers
MRf
MR0 to MR3 registers
MSTF
CLA Floating-point Status Register
shift
Opcode field indicating the number of bits to shift.
VALUE
Flag value of 0 or 1 for selected flag (OR) 8 bit mask indicating the flag value; 0 or 1
566 Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Each instruction has a table that gives a list of the operands and a short description. Instructions always
have their destination operand(s) first followed by the source operand(s).
Table 9-19. INSTRUCTION dest, source1, source2 Short Description
Description
dest1
Description for the 1st operand for the instruction
source1
Description for the 2nd operand for the instruction
source2
Description for the 3rd operand for the instruction
Opcode
This section shows the opcode for the instruction
Description
Detailed description of the instruction execution is described. Any constraints on the operands imposed by
the processor or the assembler are discussed.
Restrictions
Any constraints on the operands or use of the instruction imposed by the processor are discussed.
Pipeline
This section describes the instruction in terms of pipeline cycles as described in Section 9.5
Example
Examples of instruction execution. If applicable, register and memory values are given before and after
instruction execution. Some examples are code fragments while other examples are full tasks that assume
the CLA is correctly configured and the main CPU has passed it data.
Operands
Each instruction has a table that gives a list of the operands and a short description. Instructions always
have their destination operand(s) first followed by the source operand(s).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
567
Instruction Set
www.ti.com
9.6.2 Addressing Modes and Encoding
The CLA uses the same address to access data and registers as the main CPU. For example if the main
CPU accesses an ePWM register at address 0x00 6800, then the CLA will access it using address
0x6800. Since all CLA accessible memory and registers are within the low 64k x 16 of memory, only the
low 16-bits of the address are used by the CLA.
To address the CLA data memory, message RAMs and shared peripherals, the CLA supports two
addressing modes:
• Direct addressing mode: Uses the address of the variable or register directly.
• Indirect addressing with 16-bit post increment. This mode uses either XAR0 or XAR1.
The CLA does not use a data page pointer or a stack pointer. The two addressing modes are encoded as
shown Table 9-20.
Table 9-20. Addressing Modes
Addressing Mode
'addr' Opcode
Field
Encode (1)
Description
@dir
0000
Direct Addressing Mode
Example 1: MMOV32 MR1, @_VarA
Example 2: MMOV32 MR1, @_EPwm1Regs.CMPA.all
In this case the 'mmmm mmmm mmmm mmmm' opcode field will be populated with the
16-bit address of the variable. This is the low 16-bits of the address that you would use to
access the variable using the main CPU.
For example @_VarA will populate the address of the variable VarA. and
@_EPwm1Regs.CMPA.all will populate the address of the CMPA register.
*MAR0[#imm16]++
0001
MAR0 Indirect Addressing with 16-bit Immediate Post Increment
*MAR1[#imm16]++
0010
MAR1 Indirect Addressing with 16-bit Immediate Post Increment
addr = MAR0 (or MAR1)
MAR0 (or MAR1) +=
#imm16
Access memory using the address stored in MAR0 (or MAR1).
Then post increment MAR0 (or MAR1) by #imm16.
Example 1: MMOV32 MR0, *MAR0[2]++
Example 2: MMOV32 MR1, *MAR1[-2]++
For a post increment of 0 the assembler will accept both *MAR0 and *MAR0[0]++.
The 'mmmm mmmm mmmm mmmm' opcode field will be populated with the signed 16-bit
pointer offset. For example if #imm16 is 2, then the opcode field will be 0x0002. Likewise if
#imm16 is -2, then the opcode field will be 0xFFFE.
If addition of the 16-bit immediate causes overflow, then the value will wrap around on a
16-bit boundary.
(1)
Values not shown are reserved.
Encoding for the shift fields in the MASR32, MLSR32 and MLSL32 instructions is shown in Table 9-21
Table 9-21. Shift Field Encoding
Shift Value
'shift' Opcode
Field Encode
1
0000
2
0001
3
0010
....
....
32
1111
Table 9-22 shows the condition field encoding for conditional instructions such as MNEGF, MSWAPF,
MBCNDD, MCCNDD and MRCNDD
568
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Table 9-22. Condition Field Encoding
Encode
(1)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag modification
None
(1)
(2)
(2)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to be modified when a
conditional operation is executed. All other conditions will not modify these flags.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
569
Instruction Set
www.ti.com
9.6.3 Instructions
The instructions are listed alphabetically, preceded by a summary.
Table 9-23. General Instructions
Title
......................................................................................................................................
MMABSF32 MRa, MRb — 32-Bit Floating-Point Absolute Value .................................................................
MADD32 MRa, MRb, MRc — 32-Bit Integer Add ...................................................................................
MADDF32 MRa, #16FHi, MRb — 32-Bit Floating-Point Addition ................................................................
MADDF32 MRa, MRb, #16FHi — 32-Bit Floating-Point Addition .................................................................
MADDF32 MRa, MRb, MRc — 32-Bit Floating-Point Addition ....................................................................
MADDF32 MRd, MRe, MRf||MMOV32 mem32, MRa — 32-Bit Floating-Point Addition with Parallel Move ...............
MADDF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 — 32-Bit Floating-Point Addition with Parallel Move ...............
MAND32 MRa, MRb, MRc — Bitwise AND ..........................................................................................
MASR32 MRa, #SHIFT — Arithmetic Shift Right ...................................................................................
MBCNDD 16BitDest {, CNDF} — Branch Conditional Delayed ..................................................................
MCCNDD 16BitDest {, CNDF} — Call Conditional Delayed ......................................................................
MCMP32 MRa, MRb — 32-Bit Integer Compare for Equal, Less Than or Greater Than......................................
MCMPF32 MRa, MRb — 32-Bit Floating-Point Compare for Equal, Less Than or Greater Than ............................
MCMPF32 MRa, #16FHi — 32-Bit Floating-Point Compare for Equal, Less Than or Greater Than .........................
MDEBUGSTOP — Debug Stop Task ................................................................................................
MEALLOW — Enable CLA Write Access to EALLOW Protected Registers ...................................................
MEDIS — Disable CLA Write Access to EALLOW Protected Registers .......................................................
MEINVF32 MRa, MRb — 32-Bit Floating-Point Reciprocal Approximation ......................................................
MEISQRTF32 MRa, MRb — 32-Bit Floating-Point Square-Root Reciprocal Approximation ..................................
MF32TOI16 MRa, MRb — Convert 32-Bit Floating-Point Value to 16-Bit Integer ..............................................
MF32TOI16R MRa, MRb — Convert 32-Bit Floating-Point Value to 16-Bit Integer and Round ..............................
MF32TOI32 MRa, MRb — Convert 32-Bit Floating-Point Value to 32-Bit Integer ..............................................
MF32TOUI16 MRa, MRb — Convert 32-Bit Floating-Point Value to 16-bit Unsigned Integer ...............................
MF32TOUI16R MRa, MRb — Convert 32-Bit Floating-Point Value to 16-bit Unsigned Integer and Round ................
MF32TOUI32 MRa, MRb — Convert 32-Bit Floating-Point Value to 32-Bit Unsigned Integer ...............................
MFRACF32 MRa, MRb — Fractional Portion of a 32-Bit Floating-Point Value .................................................
MI16TOF32 MRa, MRb — Convert 16-Bit Integer to 32-Bit Floating-Point Value .............................................
MI16TOF32 MRa, mem16 — Convert 16-Bit Integer to 32-Bit Floating-Point Value ..........................................
MI32TOF32 MRa, mem32 — Convert 32-Bit Integer to 32-Bit Floating-Point Value ..........................................
MI32TOF32 MRa, MRb — Convert 32-Bit Integer to 32-Bit Floating-Point Value .............................................
MLSL32 MRa, #SHIFT — Logical Shift Left .........................................................................................
MLSR32 MRa, #SHIFT — Logical Shift Right .......................................................................................
MMACF32 MR3, MR2, MRd, MRe, MRf ||MMOV32 MRa, mem32 — 32-Bit Floating-Point Multiply and Accumulate
with Parallel Move ............................................................................................................
MMAXF32 MRa, MRb — 32-Bit Floating-Point Maximum .........................................................................
MMAXF32 MRa, #16FHi — 32-Bit Floating-Point Maximum ......................................................................
MMINF32 MRa, MRb — 32-Bit Floating-Point Minimum ...........................................................................
MMINF32 MRa, #16FHi — 32-Bit Floating-Point Minimum ........................................................................
MMOV16 MARx, MRa, #16I — Load the Auxiliary Register with MRa + 16-bit Immediate Value ...........................
MMOV16 MARx, mem16 — Load MAR1 with 16-bit Value .......................................................................
MMOV16 mem16, MARx — Move 16-Bit Auxiliary Register Contents to Memory .............................................
MMOV16 mem16, MRa — Move 16-Bit Floating-Point Register Contents to Memory ........................................
MMOV32 mem32, MRa — Move 32-Bit Floating-Point Register Contents to Memory .......................................
MMOV32 mem32, MSTF — Move 32-Bit MSTF Register to Memory ...........................................................
MMOV32 MRa, mem32 {, CNDF} — Conditional 32-Bit Move ...................................................................
MMOV32 MRa, MRb {, CNDF} — Conditional 32-Bit Move .......................................................................
570
Control Law Accelerator (CLA)
Page
572
573
574
575
577
578
579
581
582
583
588
592
593
594
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
617
619
620
622
623
625
627
628
629
630
631
633
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Table 9-23. General Instructions (continued)
MMOV32 MSTF, mem32 — Move 32-Bit Value from Memory to the MSTF Register .........................................
MMOVD32 MRa, mem32 — Move 32-Bit Value from Memory with Data Copy ................................................
MMOVF32 MRa, #32F — Load the 32-Bits of a 32-Bit Floating-Point Register ................................................
MMOVI16 MARx, #16I — Load the Auxiliary Register with the 16-Bit Immediate Value ......................................
MMOVI32 MRa, #32FHex — Load the 32-Bits of a 32-Bit Floating-Point Register with the Immediate .....................
MMOVIZ MRa, #16FHi — Load the Upper 16-Bits of a 32-Bit Floating-Point Register .......................................
MMOVZ16 MRa, mem16 — Load MRx With 16-bit Value .........................................................................
MMOVXI MRa, #16FLoHex — Move Immediate to the Low 16-Bits of a Floating-Point Register ...........................
MMPYF32 MRa, MRb, MRc — 32-Bit Floating-Point Multiply.....................................................................
MMPYF32 MRa, #16FHi, MRb — 32-Bit Floating-Point Multiply .................................................................
MMPYF32 MRa, MRb, #16FHi — 32-Bit Floating-Point Multiply .................................................................
MMPYF32 MRa, MRb, MRc||MADDF32 MRd, MRe, MRf — 32-Bit Floating-Point Multiply with Parallel Add .............
MMPYF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 — 32-Bit Floating-Point Multiply with Parallel Move ...............
MMPYF32 MRd, MRe, MRf ||MMOV32 mem32, MRa — 32-Bit Floating-Point Multiply with Parallel Move ...............
MMPYF32 MRa, MRb, MRc ||MSUBF32 MRd, MRe, MRf — 32-Bit Floating-Point Multiply with Parallel Subtract .......
MNEGF32 MRa, MRb{, CNDF} — Conditional Negation ..........................................................................
MNOP — No Operation ..............................................................................................................
MOR32 MRa, MRb, MRc — Bitwise OR .............................................................................................
MRCNDD {CNDF} — Return Conditional Delayed .................................................................................
MSETFLG FLAG, VALUE — Set or Clear Selected Floating-Point Status Flags .............................................
MSTOP — Stop Task ..................................................................................................................
MSUB32 MRa, MRb, MRc — 32-Bit Integer Subtraction ..........................................................................
MSUBF32 MRa, MRb, MRc — 32-Bit Floating-Point Subtraction ...............................................................
MSUBF32 MRa, #16FHi, MRb — 32-Bit Floating-Point Subtraction .............................................................
MSUBF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 — 32-Bit Floating-Point Subtraction with Parallel Move ..........
MSUBF32 MRd, MRe, MRf ||MMOV32 mem32, MRa — 32-Bit Floating-Point Subtraction with Parallel Move ..........
MSWAPF MRa, MRb {, CNDF} — Conditional Swap .............................................................................
MMTESTTF CNDF — Test MSTF Register Flag Condition .......................................................................
MUI16TOF32 MRa, mem16 — Convert Unsigned 16-Bit Integer to 32-Bit Floating-Point Value ............................
MUI16TOF32 MRa, MRb — Convert Unsigned 16-Bit Integer to 32-Bit Floating-Point Value ................................
MUI32TOF32 MRa, mem32 — Convert Unsigned 32-Bit Integer to 32-Bit Floating-Point Value ............................
MUI32TOF32 MRa, MRb — Convert Unsigned 32-Bit Integer to 32-Bit Floating-Point Value ................................
MXOR32 MRa, MRb, MRc — Bitwise Exclusive Or ................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
635
636
637
638
639
640
641
642
643
644
646
648
650
652
653
654
656
657
658
662
663
665
666
667
668
669
670
672
674
675
676
677
678
571
Instruction Set
www.ti.com
MMABSF32 MRa, MRb 32-Bit Floating-Point Absolute Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 0010 0000
Description
The absolute value of MRb is loaded into MRa. Only the sign bit of the operand is
modified by the MMABSF32 instruction.
if (MRb < 0) {MRa = -MRb};
else {MRa = MRb};
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified as follows:
NF = 0;
ZF = 0;
if ( MRa(30:23) == 0) ZF = 1;
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ MR0, #-2.0 ; MR0 = -2.0 (0xC0000000)
MMABSF32 MR0, MR0 ; MR0 = 2.0 (0x40000000), ZF = NF = 0
MMOVIZ MR0, #5.0 ; MR0 = 5.0 (0x40A00000)
MMABSF32 MR0, MR0 ; MR0 = 5.0 (0x40A00000), ZF = NF = 0
MMOVIZ MR0, #0.0 ; MR0 = 0.0
MMABSF32 MR0, MR0 ; MR0 = 0.0 ZF = 1, NF = 0
See also
572
MNEGF32 MRa, MRb {, CNDF}
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MADD32 MRa, MRb, MRc 32-Bit Integer Add
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point destination register (MR0 to MR3)
MRc
CLA floating-point destination register (MR0 to MR3)
Opcode
LSW: 0000 0000 000cc bbaa
MSW: 0111 1110 1100 0000
Description
32-bit integer addition of MRb and MRc.
MRa(31:0) = MRb(31:0) + MRc(31:0);
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; };
Pipeline
This is a single-cycle instruction.
Example
; Given A = (int32)1
;
B = (int32)2
;
C = (int32)-7
;
; Calculate Y2 = A + B + C
;
_Cla1Task1:
MMOV32 MR0, @_A
MMOV32 MR1, @_B
MMOV32 MR2, @_C
MADD32 MR3, MR0, MR1
MADD32 MR3, MR2, MR3
MMOV32 @_y2, MR3
MSTOP
See also
;
;
;
;
;
;
;
MR0 = 1 (0x00000001)
MR1 = 2 (0x00000002)
MR2 = -7 (0xFFFFFFF9)
A + B
A + B + C = -4 (0xFFFFFFFC)
Store y2
end of task
MAND32 MRa, MRb, MRc
MASR32 MRa, #SHIFT
MLSL32 MRa, #SHIFT
MLSR32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
573
Instruction Set
www.ti.com
MADDF32 MRa, #16FHi, MRb 32-Bit Floating-Point Addition
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 0111 1100 bbaa
Description
Add MRb to the floating-point value represented by the immediate operand. Store the
result of the addition in MRa.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
MRa = MRb + #16FHi:0;
This instruction can also be written as MADDF32 MRa, MRb, #16FHi.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MADDF32 generates an underflow condition.
• LVF = 1 if MADDF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Add to MR1 the value 2.0 in 32-bit floating-point format
; Store the result in MR0
MADDF32 MR0, #2.0, MR1
; MR0 = 2.0 + MR1
; Add to MR3 the value -2.5 in 32-bit floating-point format
; Store the result in MR2
MADDF32 MR2, #-2.5, MR3
; MR2 = -2.5 + MR3
; Add to MR3 the value 0x3FC00000 (1.5)
; Store the result in MR3
MADDF32 MR3, #0x3FC0, MR3 ; MR3 = 1.5 + MR3
See also
574
MADDF32 MRa, MRb, #16FHi
MADDF32 MRa, MRb, MRc
MADDF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MADDF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MADDF32 MRa, MRb, #16FHi 32-Bit Floating-Point Addition
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 0111 1100 bbaa
Description
Add MRb to the floating-point value represented by the immediate operand. Store the
result of the addition in MRa.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
MRa = MRb + #16FHi:0;
This instruction can also be written as MADDF32 MRa, #16FHi, MRb.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MADDF32 generates an underflow condition.
• LVF = 1 if MADDF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example 1
; X is an array of 32-bit floating-point values
; Find the maximum value in an array X
; and store it in Result
;
_Cla1Task1:
MMOVI16
MAR1,#_X
; Start address
MUI16TOF32 MR0, @_len
; Length of the array
MNOP
; delay for MAR1 load
MNOP
; delay for MAR1 load
MMOV32
MR1, *MAR1[2]++ ; MR1 = X0
LOOP
MMOV32
MR2, *MAR1[2]++ ; MR2 = next element
MMAXF32
MR1, MR2
; MR1 = MAX(MR1, MR2)
MADDF32
MR0, MR0, #-1.0 ; Decrement the counter
MCMPF32
MR0 #0.0
; Set/clear flags for MBCNDD
MNOP
MNOP
MNOP
MBCNDD LOOP, NEQ
; Branch if not equal to zero
MMOV32 @_Result, MR1
; Always executed
MNOP
; Always executed
MNOP
; Always executed
MSTOP
; End of task
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
575
Instruction Set
Example 2
www.ti.com
; Show the basic operation of MADDF32
;
; Add to MR1 the value 2.0 in 32-bit floating-point format
; Store the result in MR0
MADDF32 MR0, MR1, #2.0
; MR0 = MR1 + 2.0
; Add to MR3 the value -2.5 in 32-bit floating-point format
; Store the result in MR2
MADDF32 MR2, MR3, #-2.5
; MR2 = MR3 + (-2.5)
; Add to MR0 the value 0x3FC00000 (1.5)
; Store the result in MR0
MADDF32 MR0, MR0, #0x3FC0 ; MR0 = MR0 + 1.5
See also
576
MADDF32 MRa, #16FHi, MRb
MADDF32 MRa, MRb, MRc
MADDF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MADDF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MADDF32 MRa, MRb, MRc 32-Bit Floating-Point Addition
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 000 0000 00cc bbaa
MSW: 0111 1100 0010 0000
Description
Add the contents of MRc to the contents of MRb and load the result into MRa.
MRa = MRb + MRc;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MADDF32 generates an underflow condition.
• LVF = 1 if MADDF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Given M1, X1 and B1 are 32-bit floating point numbers
; Calculate Y1 = M1*X1+B1
;
_Cla1Task1:
MMOV32 MR0,@M1
; Load MR0 with M1
MMOV32 MR1,@X1
; Load MR1 with X1
MMPYF32 MR1,MR1,MR0 ; Multiply M1*X1
|| MMOV32 MR0,@B1
; and in parallel load MR0 with B1
MADDF32 MR1,MR1,MR0 ; Add M*X1 to B1 and store in MR1
MMOV32 @Y1,MR1
; Store the result
MSTOP
; end of task
See also
MADDF32 MRa, #16FHi, MRb
MADDF32 MRa, MRb, #16FHi
MADDF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MADDF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
577
Instruction Set
www.ti.com
MADDF32 MRd, MRe, MRf||MMOV32 mem32, MRa 32-Bit Floating-Point Addition with Parallel Move
Operands
MRd
CLA floating-point destination register for the MADDF32 (MR0 to MR3)
MRe
CLA floating-point source register for the MADDF32 (MR0 to MR3)
MRf
CLA floating-point source register for the MADDF32 (MR0 to MR3)
mem32
32-bit memory location accessed using direct or indirect addressing. This will be the
destination of the MMOV32.
MRa
CLA floating-point source register for the MMOV32 (MR0 to MR3)
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0101 ffee ddaa addr
Description
Perform an MADDF32 and a MMOV32 in parallel. Add MRf to the contents of MRe and
store the result in MRd. In parallel move the contents of MRa to the 32-bit location
mem32.
MRd = MRe + MRf;
[mem32] = MRa;
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MADDF32 generates an underflow condition.
• LVF = 1 if MADDF32 generates an overflow condition.
Pipeline
Both MADDF32 and MMOV32 complete in a single cycle.
Example
; Given A, B and C are 32-bit
; Calculate Y2 = (A * B)
;
Y3 = (A * B) + C
;
_Cla1Task2:
MMOV32
MR0, @_A
;
MMOV32
MR1, @_B
;
MMPYF32 MR1, MR1, MR0
;
|| MMOV32
MR0, @_C
;
MADDF32 MR1, MR1, MR0
;
|| MMOV32
@_Y2, MR1
;
MMOV32
@_Y3, MR1
;
MSTOP
;
See also
578
floating-point numbers
Load MR0 with A
Load MR1 with B
Multiply A*B
and in parallel load MR0 with C
Add (A*B) to C
and in parallel store A*B
Store the A*B + C
end of task
MADDF32 MRa, #16FHi, MRb
MADDF32 MRa, MRb, #16FHi
MADDF32 MRa, MRb, MRc
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
MADDF32 MRd, MRe, MRf || MMOV32 MRa, mem32
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MADDF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 32-Bit Floating-Point Addition with Parallel Move
Operands
MRd
CLA floating-point destination register for the MADDF32 (MR0 to MR3).
MRd cannot be the same register as MRa.
MRe
CLA floating-point source register for the MADDF32 (MR0 to MR3)
MRf
CLA floating-point source register for the MADDF32 (MR0 to MR3)
MRa
CLA floating-point destination register for the MMOV32 (MR0 to MR3).
MRa cannot be the same register as MRd.
mem32
32-bit memory location accessed using direct or indirect addressing. This is the source
for the MMOV32.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0001 ffee ddaa addr
Description
Perform an MADDF32 and a MMOV32 operation in parallel. Add MRf to the contents of
MRe and store the result in MRd. In parallel move the contents of the 32-bit location
mem32 to MRa.
MRd = MRe + MRf;
MRa = [mem32];
Restrictions
The destination register for the MADDF32 and the MMOV32 must be unique. That is,
MRa and MRd cannot be the same register.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MADDF32 generates an underflow condition.
• LVF = 1 if MADDF32 generates an overflow condition.
The MMOV32 Instruction will set the NF and ZF flags as follows:
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; };
Pipeline
The MADDF32 and the MMOV32 both complete in a single cycle.
Example 1
; Given A, B and C are 32-bit floating-point numbers
; Calculate Y1 = A + 4B
;
Y2 = A + C
;
_Cla1Task1:
MMOV32 MR0, @A
; Load MR0 with A
MMOV32 MR1, @B
; Load MR1 with B
MMPYF32 MR1, MR1, #4.0 ; Multiply 4 * B
|| MMOV32 MR2, @C
and in parallel load C
MADDF32 MR3, MR0, MR1 ; Add A + 4B
MADDF32 MR3, MR0, MR2 ; Add A + C
|| MMOV32 @Y1, MR3
; and in parallel store A+4B
MMOV32 @Y2, MR3
; store A + C MSTOP
; end of task
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
579
Instruction Set
Example 2
See also
580
www.ti.com
; Given A, B and C are 32-bit
; Calculate Y3 = (A + B)
;
Y4 = (A + B) * C
;
_Cla1Task2:
MMOV32 MR0, @A
;
MMOV32 MR1, @B
;
MADDF32 MR1, MR1, MR0 ;
||
MMOV32 MR0, @C
;
MMPYF32 MR1, MR1, MR0 ;
||
MMOV32 @Y3, MR1
;
MMOV32 @Y4, MR1
;
MSTOP
;
floating-point numbers
Load MR0 with A
Load MR1 with B
Add A+B
and in parallel load MR0 with C
Multiply (A+B) by C
and in parallel store A+B
Store the (A+B) * C
end of task
MADDF32 MRa, #16FHi, MRb
MADDF32 MRa, MRb, #16FHi
MADDF32 MRa, MRb, MRc
MADDF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MAND32 MRa, MRb, MRc Bitwise AND
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 0110 0000
Description
Bitwise AND of MRb with MRc.
MRa(31:0) = MRb(31:0) AND MRc(31:0);
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVXI
MR0,
MR0,
#0x5555
#0xAAAA
; MR0 = 0x5555AAAA
MMOVIZ
MMOVXI
MR1,
MR1,
#0x5432
#0xFEDC
; MR1 = 0x5432FEDC
;
;
;
;
;
;
;
;
0101
0101
0101
0101
1010
1010
1010
1010
AND
AND
AND
AND
AND
AND
AND
AND
0101
0100
0011
0010
1111
1110
1101
1100
=
=
=
=
=
=
=
=
0101
0100
0001
0000
1010
1010
1000
1000
(5)
(4)
(1)
(0)
(A)
(A)
(8)
(8)
MAND32 MR2, MR1, MR0
See also
; MR3 = 0x5410AA88
MADD32 MRa, MRb, MRc
MASR32 MRa, #SHIFT
MLSL32 MRa, #SHIFT
MLSR32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
581
Instruction Set
www.ti.com
MASR32 MRa, #SHIFT Arithmetic Shift Right
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
#SHIFT
Number of bits to shift (1 to 32)
Opcode
LSW: 0000 0000 0shi ftaa
MSW: 0111 1011 0100 0000
Description
Arithmetic shift right of MRa by the number of bits indicated. The number of bits can be 1
to 32.
MARa(31:0) = Arithmetic Shift(MARa(31:0) by #SHIFT bits);
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
; Given m2 = (int32)32
;
x2 = (int32)64
;
b2 = (int32)-128
;
; Calculate
;
m2 = m2/2
;
x2 = x2/4
;
b2 = b2/8
;
_Cla1Task2:
MMOV32 MR0, @_m2 ; MR0 =
MMOV32 MR1, @_x2 ; MR1 =
MMOV32 MR2, @_b2 ; MR2 =
MASR32 MR0, #1
; MR0 =
MASR32 MR1, #2
; MR1 =
MASR32 MR2, #3
; MR2 =
MMOV32 @_m2, MR0 ; store
MMOV32 @_x2, MR1
MMOV32 @_b2, MR2
MSTOP ; end of task
See also
582
32 (0x00000020)
64 (0x00000040)
-128 (0xFFFFFF80)
16 (0x00000010)
16 (0x00000010)
-16 (0xFFFFFFF0)
results
MADD32 MRa, MRb, MRc
MAND32 MRa, MRb, MRc
MLSL32 MRa, #SHIFT
MLSR32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MBCNDD 16BitDest {, CNDF} Branch Conditional Delayed
Operands
16BitDest
16-bit destination if condition is true
CNDF
Optional condition tested
Opcode
LSW: dest dest dest dest
MSW: 0111 1001 1000 cndf
Description
If the specified condition is true, then branch by adding the signed 16BitDest value to the
MPC value. Otherwise, continue without branching. If the address overflows, it wraps
around. Therefore a value of "0xFFFE" will put the MPC back to the MBCNDD
instruction. Since the MPC is only 12-bits, unused bits the upper 4 bits of the destination
address are ignored.
Please refer to the pipeline section for important information regarding this instruction.
if (CNDF == TRUE) MPC += 16BitDest;
CNDF is one of the following conditions:
Encode
(1)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(1)
(2)
(2)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
Restrictions
The MBCNDD instruction is not allowed three instructions before or after a MBCNDD,
MCCNDD or MRCNDD instruction. Refer to the pipeline section for more information.
Flags
This instruction does not modify flags in the MSTF register.
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
The MBCNDD instruction by itself is a single-cycle instruction. As shown in Table 9-24
for each branch 6 instruction slots are executed; three before the branch instruction (I2I4) and three after the branch instruction (I5-I7). The total number of cycles for a branch
taken or not taken depends on the usage of these slots. That is, the number of cycles
depends on how many slots are filled with a MNOP as well as which slots are filled. The
effective number of cycles for a branch can, therefore, range from 1 to 7 cycles. The
number of cycles for a branch taken may not be the same as for a branch not taken.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
583
Instruction Set
www.ti.com
Referring to Table 9-24 and Table 9-25, the instructions before and after MBCNDD have
the following properties:
• I1
– I1 is the last instruction that can effect the CNDF flags for the MBCNDD
instruction. The CNDF flags are tested in the D2 phase of the pipeline. That is, a
decision is made whether to branch or not when MBCNDD is in the D2 phase.
– There are no restrictions on the type of instruction for I1.
• I2, I3 and I4
– The three instructions proceeding MBCNDD can change MSTF flags but will have
no effect on whether the MBCNDD instruction branches or not. This is because
the flag modification will occur after the D2 phase of the MBCNDD instruction.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
• I5, I6 and I7
– The three instructions following MBCNDD are always executed irrespective of
whether the branch is taken or not.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
;
;
;
;
;
MBCNDD _Skip, NEQ ;
;
;
;
;
;
;
;
....
_Skip:
;
;
;
....
....
MSTOP
....
584
Control Law Accelerator (CLA)
I1 Last instruction that can affect flags for
the MBCNDD operation
I2 Cannot be stop, branch, call or return
I3 Cannot be stop, branch, call or return
I4 Cannot be stop, branch, call or return
Branch to Skip if not eqal to zero
Three instructions after MBCNDD are always
executed whether the branch is taken or not
I5 Cannot be stop, branch, call or return
I6 Cannot be stop, branch, call or return
I7 Cannot be stop, branch, call or return
I8
I9
d1 Can be any instruction
d2
d3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Table 9-24. Pipeline Activity For MBCNDD, Branch Not Taken
Instruction
F1
I1
I1
F2
D1
D2
R1
R2
E
I2
I2
I1
I3
I3
I2
I1
I4
I4
I3
I2
I1
MBCNDD
MBCNDD
I4
I3
I2
I1
I5
I5
MBCNDD
I4
I3
I2
I1
I6
I6
I5
MBCNDD
I4
I3
I2
I1
I7
I7
I6
I5
MBCNDD
I4
I3
I2
I8
I8
I7
I6
I5
-
I4
I3
I9
I9
I8
I7
I6
I5
-
I4
I10
I10
I9
I8
I7
I6
I5
-
I10
I9
I8
I7
I6
I5
I10
I9
I8
I7
I6
I10
I9
I8
I7
I10
I9
I8
I10
I9
W
I10
Table 9-25. Pipeline Activity For MBCNDD, Branch Taken
Instruction
F1
I1
I1
F2
D1
D2
R1
R2
E
I2
I2
I1
I3
I3
I2
I1
I4
I4
I3
I2
I1
MBCNDD
MBCNDD
I4
I3
I2
I1
I5
I5
MBCNDD
I4
I3
I2
I1
I6
I6
I5
MBCNDD
I4
I3
I2
I1
I7
I7
I6
I5
MBCNDD
I4
I3
I2
d1
d1
I7
I6
I5
-
I4
I3
d2
d2
d1
I7
I6
I5
-
I4
d3
d3
d2
d1
I7
I6
I5
-
d3
d2
d1
I7
I6
I5
d3
d2
d1
I7
I6
d3
d2
d1
I7
d3
d2
d1
d3
d2
W
d3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
585
Instruction Set
Example 1
586
www.ti.com
; if (State == 0.1)
; RampState = RampState || RAMPMASK
; else if (State == 0.01)
; CoastState = CoastState || COASTMASK
; else
; SteadyState = SteadyState || STEADYMASK
;
_Cla1Task1:
MMOV32 MR0, @State
MCMPF32 MR0, #0.1
; Affects flags for 1st MBCNDD (A)
MNOP
MNOP
MNOP
MBCNDD Skip1, NEQ
; (A) If State != 0.1, go to Skip1
MNOP ; Always executed
MNOP ; Always executed
MNOP ; Always executed
MMOV32 MR1, @RampState
; Execute if (A) branch not taken
MMOVXI MR2, #RAMPMASK
; Execute if (A) branch not taken
MOR32 MR1, MR2
; Execute if (A) branch not taken
MMOV32 @RampState, MR1
; Execute if (A) branch not taken
MSTOP
; end of task if (A) branch not taken
Skip1:
MCMPF32 MR0,#0.01
; Affects flags for 2nd MBCNDD (B)
MNOP
MNOP
MNOP
MBCNDD Skip2,NEQ
; (B) If State != 0.01, go to Skip2
MNOP ; Always executed
MNOP ; Always executed
MNOP ; Always executed
MMOV32 MR1, @CoastState ; Execute if (B) branch not taken
MMOVXI MR2, #COASTMASK
; Execute if (B) branch not taken
MOR32 MR1, MR2
; Execute if (B) branch not taken
MMOV32 @CoastState, MR1 ; Execute if (B) branch not taken
MSTOP
Skip2:
MMOV32 MR3, @SteadyState ; Executed if (B) branch taken
MMOVXI MR2, #STEADYMASK ; Executed if (B) branch taken
MOR32 MR3, MR2
; Executed if (B) branch taken
MMOV32 @SteadyState, MR3 ; Executed if (B) branch taken
MSTOP
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 2
; This example is the same as Example 1, except
; the code is optimized to take advantage of delay slots
;
; if (State == 0.1)
; RampState = RampState || RAMPMASK
; else if (State == 0.01)
; CoastState = CoastState || COASTMASK
; else
; SteadyState = SteadyState || STEADYMASK
;
_Cla1Task2:
MMOV32 MR0, @State
MCMPF32 MR0, #0.1
; Affects flags for 1st MBCNDD (A)
MCMPF32 MR0, #0.01
; Check used by 2nd MBCNDD (B)
MMTESTTF EQ
; Store EQ flag in TF for 2nd MBCNDD (B)
MNOP
MBCNDD Skip1, NEQ
; (A) If State != 0.1, go to Skip1
MMOV32 MR1, @RampState
; Always executed
MMOVXI MR2, #RAMPMASK
; Always executed
MOR32 MR1, MR2
; Always executed
MMOV32 @RampState, MR1
; Execute if (A) branch not taken
MSTOP
; end of task if (A) branch not taken
Skip1:
MMOV32 MR3, @SteadyState
MMOVXI MR2, #STEADYMASK
MOR32 MR3, MR2
MBCNDD Skip2, NTF
MMOV32 MR1, @CoastState
MMOVXI MR2, #COASTMASK
MOR32 MR1, MR2
MMOV32 @CoastState, MR1
MSTOP
Skip2:
MMOV32 @SteadyState, MR3
MSTOP
See also
;
;
;
;
;
;
(B) if State != .01, go to Skip2
Always executed
Always executed
Always executed
Execute if (B) branch not taken
end of task if (B) branch not taken
; Executed if (B) branch taken
MCCNDD 16BitDest, CNDF
MRCNDD CNDF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
587
Instruction Set
www.ti.com
MCCNDD 16BitDest {, CNDF} Call Conditional Delayed
Operands
16BitDest
16-bit destination if condition is true
CNDF
Optional condition to be tested
Opcode
LSW: dest dest dest dest
MSW: 0111 1001 1001 cndf
Description
If the specified condition is true, then store the return address in the RPC field of MSTF
and make the call by adding the signed 16BitDest value to the MPC value. Otherwise,
continue code execution without making the call. If the address overflows, it wraps
around. Therefore a value of "0xFFFE" will put the MPC back to the MCCNDD
instruction. Since the MPC is only 12 bits, unused bits the upper 4 bits of the destination
address are ignored.
Please refer to the pipeline section for important information regarding this instruction.
if (CNDF == TRUE)
{
RPC = return address;
MPC += 16BitDest;
};
CNDF is one of the following conditions:
Encode
(3)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(3)
(4)
(4)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
Restrictions
The MCCNDD instruction is not allowed three instructions before or after a MBCNDD,
MCCNDD, or MRCNDD instruction. Refer to the Pipeline section for more details.
Flags
This instruction does not modify flags in the MSTF register.
588
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Pipeline
The MCCNDD instruction by itself is a single-cycle instruction. As shown in Table 9-26,
for each call 6 instruction slots are executed; three before the call instruction (I2-I4) and
three after the call instruction (I5-I7). The total number of cycles for a call taken or not
taken depends on the usage of these slots. That is, the number of cycles depends on
how many slots are filled with a MNOP as well as which slots are filled. The effective
number of cycles for a call can, therefore, range from 1 to 7 cycles. The number of
cycles for a call taken may not be the same as for a call not taken.
Referring to the following code fragment and the pipeline diagrams in Table 9-26 and
Table 9-27, the instructions before and after MCCNDD have the following properties:
• I1
– I1 is the last instruction that can effect the CNDF flags for the MCCNDD
instruction. The CNDF flags are tested in the D2 phase of the pipeline. That is, a
decision is made whether to branch or not when MCCNDD is in the D2 phase.
– There are no restrictions on the type of instruction for I1.
• I2, I3 and I4
– The three instructions proceeding MCCNDD can change MSTF flags but will have
no effect on whether the MCCNDD instruction makes the call or not. This is
because the flag modification will occur after the D2 phase of the MCCNDD
instruction.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
• I5, I6 and I7
– The three instructions following MBCNDD are always executed irrespective of
whether the branch is taken or not.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
589
Instruction Set
www.ti.com
;
;
;
;
;
I1 Last instruction that can affect flags for
the MCCNDD operation
I2 Cannot be stop, branch, call or return
I3 Cannot be stop, branch, call or return
I4 Cannot be stop, branch, call or return
MCCNDD _func, NEQ ; Call to func if not eqal to zero
; Three instructions after MCCNDD are always
; executed whether the call is taken or not
6>
7>
8>
1>
2>
3>
4>
;
;
;
;
;
;
;
;
I5
I6
I7
I8
Cannot be stop, branch, call or return
Cannot be stop, branch, call or return
Cannot be stop, branch, call or return
The address of this instruction is saved
in the RPC field of the MSTF register.
Upon return this value is loaded into MPC
and fetching continues from this point.
;
;
;
;
;
d1 Can be any instruction
d2
d3
d4 Last instruction that can affect flags for
the MRCNDD operation
I9
; d5 Cannot be stop, branch, call or return
; d6 Cannot be stop, branch, call or return
; d7 Cannot be stop, branch, call or return
MRCNDD
; Return to , unconditional
UNC
; Three instructions after MRCNDD are always
; executed whether the return is taken or not
9>
10>
11>
;
;
;
;
d8 Cannot be stop, branch, call or return
d9 Cannot be stop, branch, call or return
d10 Cannot be stop, branch, call or return
d11
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Table 9-26. Pipeline Activity For MCCNDD, Call Not Taken
Instruction
F1
I1
I1
F2
I2
I2
I1
I3
I3
I2
I1
I4
I4
I3
I2
I1
MCCNDD
MCCNDD
I4
I3
I2
I1
I5
I5
MCCNDD
I4
I3
I2
I1
I6
I6
I5
MCCNDD
I4
I3
I2
I1
I7
I7
I6
I5
MCCNDD
I4
I3
I2
I8
I8
I7
I6
I5
-
I4
I3
I9
I9
I8
I7
I6
I5
-
I4
I10
I10
I9
I8
I7
I6
I5
-
I10
I9
I8
I7
I6
I5
I10
I9
I8
I7
I6
I10
I9
I8
I7
I10
I9
I8
I10
I9
etc ....
....
D1
....
D2
....
R1
R2
E
W
I10
Table 9-27. Pipeline Activity For MCCNDD, Call Taken
Instruction
F1
I1
I1
I2
I2
I1
I3
I3
I2
I1
I4
I4
I3
I2
I1
MCCNDD
MCCNDD
I4
I3
I2
I1
I5
I5
MCCNDD
I4
I3
I2
I1
I6
I6
I5
MCCNDD
I4
I3
I2
I1
I7
I6
I5
MCCNDD
I4
I3
I2
d1
d1
I7
I6
I5
-
I4
I3
d2
d2
d1
I7
I6
I5
-
I4
d3
d3
d2
d1
I7
I6
I5
-
d3
d2
d1
I7
I6
I5
d3
d2
d1
I7
I6
d3
d2
d1
I7
d3
d2
d1
d3
d2
I7
(1)
F2
etc ....
....
....
D1
D2
....
R1
R2
E
W
d3
(1)
The RPC value in the MSTF register will point to the instruction following I7 (instruction I8).
Example
;
See also
MBCNDD #16BitDest, CNDF
MMOV32 mem32, MSTF
MMOV32 MSTF, mem32
MRCNDD CNDF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
591
Instruction Set
www.ti.com
MCMP32 MRa, MRb 32-Bit Integer Compare for Equal, Less Than or Greater Than
Operands
MRa
CLA floating-point source register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1111 0010 0000
Description
Set ZF and NF flags on the result of MRa - MRb where MRa and MRb are 32-bit
integers. For a floating point compare refer to MCMPF32.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
If(MRa ==
MRb) {ZF=1; NF=0;}
If(MRa > MRb) {ZF=0; NF=0;}
If(MRa < MRb) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example
; Behavior of ZF and NF flags for different comparisons
;
; Given A = (int32)1
;
B = (int32)2
;
C = (int32)-7
;
MMOV32 MR0, @_A ; MR0 = 1 (0x00000001)
MMOV32 MR1, @_B ; MR1 = 2 (0x00000002)
MMOV32 MR2, @_C ; MR2 = -7 (0xFFFFFFF9)
MCMP32 MR2, MR2 ; NF = 0, ZF = 1
MCMP32 MR0, MR1 ; NF = 1, ZF = 0
MCMP32 MR1, MR0 ; NF = 0, ZF = 0
See also
MADD32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
592
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MCMPF32 MRa, MRb 32-Bit Floating-Point Compare for Equal, Less Than or Greater Than
Operands
MRa
CLA floating-point source register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 0000 0000
Description
Set ZF and NF flags on the result of MRa - MRb. The MCMPF32 instruction is performed
as a logical compare operation. This is possible because of the IEEE format offsetting
the exponent. Basically the bigger the binary number, the bigger the floating-point value.
Special cases for inputs:
• Negative zero will be treated as positive zero.
• A denormalized value will be treated as positive zero.
• Not-a-Number (NaN) will be treated as infinity.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified as follows:
If(MRa == MRb)
{ZF=1; NF=0;}
If(MRa > MRb) {ZF=0; NF=0;}
If(MRa < MRb) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example
; Behavior of ZF and NF flags for different comparisons
MMOVIZ
MMOVIZ
MCMPF32
MCMPF32
MCMPF32
See also
MR1,
MR0,
MR1,
MR0,
MR0,
#-2.0
#5.0
MR0
MR1
MR0
;
;
;
;
;
MR1 = -2.0 (0xC0000000)
MR0 = 5.0 (0x40A00000)
ZF = 0, NF = 1
ZF = 0, NF = 0
ZF = 1, NF = 0
MCMPF32 MRa, #16FHi
MMAXF32 MRa, #16FHi
MMAXF32 MRa, MRb
MMINF32 MRa, #16FHi
MMINF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
593
Instruction Set
www.ti.com
MCMPF32 MRa, #16FHi 32-Bit Floating-Point Compare for Equal, Less Than or Greater Than
Operands
MRa
CLA floating-point source register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1000 1100 00aa
Description
Compare the value in MRa with the floating-point value represented by the immediate
operand. Set the ZF and NF flags on (MRa - #16FHi:0).
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. This
addressing mode is most useful for constants where the lowest 16-bits of the mantissa
are 0. Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and
-1.5 (0xBFC00000). The assembler will accept either a hex or float as the immediate
value. That is, -1.5 can be represented as #-1.5 or #0xBFC0.
The MCMPF32 instruction is performed as a logical compare operation. This is possible
because of the IEEE floating-point format offsets the exponent. Basically the bigger the
binary number, the bigger the floating-point value.
Special cases for inputs:
• Negative zero will be treated as positive zero.
• Denormalized value will be treated as positive zero.
• Not-a-Number (NaN) will be treated as infinity.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified as follows:
If(MRa == #16FHi:0)
{ZF=1, NF=0;}
If(MRa > #16FHi:0) {ZF=0, NF=0;}
If(MRa < #16FHi:0) {ZF=0, NF=1;}
Pipeline
This is a single-cycle instruction
Example 1
; Behavior of ZF and NF flags for different comparisons
MMOVIZ
MMOVIZ
MCMPF32
MCMPF32
MCMPF32
594
Control Law Accelerator (CLA)
MR1,
MR0,
MR1,
MR0,
MR0,
#-2.0
#5.0
#-2.2
#6.5
#5.0
;
;
;
;
;
MR1 = -2.0 (0xC0000000)
MR0 = 5.0 (0x40A00000)
ZF = 0, NF = 0
ZF = 0, NF = 1
ZF = 1, NF = 0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 2
; X is an array of 32-bit floating-point values
; and has len elements. Find the maximum value in
; the array and store it in Result
;
; Note: MCMPF32 and MSWAPF can be replaced with MMAXF32
;
_Cla1Task1:
MMOVI16 MAR1,#_X
; Start address
MUI16TOF32 MR0, @_len
; Length of the array
MNOP
; delay for MAR1 load
MNOP
; delay for MAR1 load
MMOV32 MR1, *MAR1[2]++ ; MR1 = X0
LOOP
MMOV32 MR2, *MAR1[2]++
MCMPF32 MR2, MR1
MSWAPF MR1, MR2, GT
MADDF32 MR0, MR0, #-1.0
MCMPF32 MR0 #0.0
MNOP
MNOP
MNOP
MBCNDD LOOP, NEQ
MMOV32 @_Result, MR1
MNOP
MNOP
MSTOP
See also
;
;
;
;
;
MR2 = next element
Compare MR2 with MR1
MR1 = MAX(MR1, MR2)
Decrememt the counter
Set/clear flags for MBCNDD
;
;
;
;
;
Branch
Always
Always
Always
End of
if not equal to zero
executed
executed
executed
task
MCMPF32 MRa, MRb
MMAXF32 MRa, #16FHi
MMAXF32 MRa, MRb
MMINF32 MRa, #16FHi
MMINF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
595
Instruction Set
MDEBUGSTOP
www.ti.com
Debug Stop Task
Operands
none
This instruction does not have any operands
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1111 0110 0000
Description
When CLA breakpoints are enabled, the MDEBUGSTOP instruction is used to halt a
task so that it can be debugged. That is, MDEBUGSTOP is the CLA breakpoint. If CLA
breakpoints are not enabled, the MDEBUGSTOP instruction behaves like a MNOP.
Unlike the MSTOP, the MIRUN flag is not cleared and an interrupt is not issued. A
single-step or run operation will continue execution of the task.
Restrictions
The MDEBUGSTOP instruction cannot be placed 3 instructions before or after a
MBCNDD, MCCNDD or MRCNDD instruction.
Flags
This instruction does not modify flags in the MSTF register.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
;
See also
MSTOP
596
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MEALLOW
Enable CLA Write Access to EALLOW Protected Registers
Operands
none
This instruction does not have any operands
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1111 1001 0000
Description
This instruction sets the MEALLOW bit in the CLA status register MSTF. When this bit is
set, the CLA is allowed write access to EALLOW protected registers. To again protect
against CLA writes to protected registers, use the MEDIS instruction.
MEALLOW and MEDIS only control CLA write access; reads are allowed even if
MEALLOW has not been executed. MEALLOW and MEDIS are also independant from
the main CPU's EALLOW/EDIS. This instruction does not modify the EALLOW bit in the
main CPU's status register. The MEALLOW bit in MSTF only controls access for the
CLA while the EALLOW bit in the ST1 register only controls access for the main CPU.
As with EALLOW, the MEALLOW bit is overridden via the JTAG port, allowing full control
of register accesses during debug from Code Composer Studio.
Flags
This instruction does not modify flags in the MSTF register.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; C header file including definition of
; the EPwm1Regs structure
;
; The ePWM TZSEL register is EALLOW protected
;
.cdecls C,LIST,"CLAShared.h"
...
_Cla1Task1:
...
MEALLOW
; Allow CLA write access
MMOV16 @_EPwm1Regs.TZSEL.all, MR3 ; Write to TZSEL
MEDIS
; Disallow CLA write access
...
...
MSTOP
See also
MEDIS
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
597
Instruction Set
MEDIS
www.ti.com
Disable CLA Write Access to EALLOW Protected Registers
Operands
none
This instruction does not have any operands
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1111 1011 0000
Description
This instruction clears the MEALLOW bit in the CLA status register MSTF. When this bit
is clear, the CLA is not allowed write access to EALLOW protected registers. To enable
CLA writes to protected registers, use the MEALLOW instruction.
MEALLOW and MEDIS only control CLA write access; reads are allowed even if
MEALLOW has not been executed. MEALLOW and MEDIS are also independant from
the main CPU's EALLOW/EDIS. This instruction does not modify the EALLOW bit in the
main CPU's status register. The MEALLOW bit in MSTF only controls access for the
CLA while the EALLOW bit in the ST1 register only controls access for the main CPU.
As with EALLOW, the MEALLOW bit is overridden via the JTAG port, allowing full control
of register accesses during debug from Code Composer Studio.
This instruction does not modify flags in the MSTF register.
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; C header file including definition of
; the EPwm1Regs structure
;
; The ePWM TZSEL register is EALLOW protected
;
.cdecls C,LIST,"CLAShared.h"
...
_Cla1Task1:
...
MEALLOW
; Allow CLA write access
MMOV16 @_EPwm1Regs.TZSEL.all, MR3 ; Write to TZSEL
MEDIS
; Disallow CLA write access
...
...
MSTOP
See also
MEALLOW
598
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MEINVF32 MRa, MRb 32-Bit Floating-Point Reciprocal Approximation
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1111 0000 0000
Description
This operation generates an estimate of 1/X in 32-bit floating-point format accurate to
approximately 8 bits. This value can be used in a Newton-Raphson algorithm to get a
more accurate answer. That is:
Ye = Estimate(1/X);
Ye = Ye*(2.0 - Ye*X);
Ye = Ye*(2.0 - Ye*X);
After two iterations of the Newton-Raphson algorithm, you will get an exact answer
accurate to the 32-bit floating-point format. On each iteration the mantissa bit accuracy
approximately doubles. The MEINVF32 operation will not generate a negative zero,
DeNorm or NaN value.
MRa = Estimate of 1/MRb;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MEINVF32 generates an underflow condition.
• LVF = 1 if MEINVF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Calculate Num/Den using a Newton-Raphson algorithum for 1/Den
; Ye = Estimate(1/X)
; Ye = Ye*(2.0 - Ye*X)
; Ye = Ye*(2.0 - Ye*X)
;
_Cla1Task1:
MMOV32 MR1, @_Den
; MR1 = Den
MEINVF32 MR2, MR1
; MR2 = Ye = Estimate(1/Den)
MMPYF32 MR3, MR2, MR1 ; MR3 = Ye*Den
MSUBF32 MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32 MR2, MR2, MR3 ; MR2 = Ye = Ye*(2.0 - Ye*Den)
MMPYF32 MR3, MR2, MR1 ; MR3 = Ye*Den
|| MMOV32 MR0, @_Num
; MR0 = Num
MSUBF32 MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32 MR2, MR2, MR3 ; MR2 = Ye = Ye*(2.0 - Ye*Den)
|| MMOV32 MR1, @_Den
; Reload Den To Set Sign
MNEGF32 MR0, MR0, EQ
; if(Den == 0.0) Change Sign Of Num
MMPYF32 MR0, MR2, MR0 ; MR0 = Y = Ye*Num
MMOV32 @_Dest, MR0
; Store result
MSTOP
; end of task
See also
MEISQRTF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
599
Instruction Set
www.ti.com
MEISQRTF32 MRa, MRb 32-Bit Floating-Point Square-Root Reciprocal Approximation
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 0100 0000
Description
This operation generates an estimate of 1/sqrt(X) in 32-bit floating-point format accurate
to approximately 8 bits. This value can be used in a Newton-Raphson algorithm to get a
more accurate answer. That is:
Ye = Estimate(1/sqrt(X));
Ye = Ye*(1.5 - Ye*Ye*X/2.0);
Ye = Ye*(1.5 - Ye*Ye*X/2.0);
After 2 iterations of the Newton-Raphson algorithm, you will get an exact answer
accurate to the 32-bit floating-point format. On each iteration the mantissa bit accuracy
approximately doubles. The MEISQRTF32 operation will not generate a negative zero,
DeNorm or NaN value.
MRa = Estimate of 1/sqrt (MRb);
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MEISQRTF32 generates an underflow condition.
• LVF = 1 if MEISQRTF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Y = sqrt(X)
; Ye = Estimate(1/sqrt(X));
; Ye = Ye*(1.5 - Ye*Ye*X*0.5)
; Ye = Ye*(1.5 - Ye*Ye*X*0.5)
; Y = X*Ye
;
_Cla1Task3:
MMOV32 MR0, @_x
;
MEISQRTF32 MR1, MR0
;
MMOV32 MR1, @_x, EQ
;
MMPYF32 MR3, MR0, #0.5
;
MMPYF32 MR2, MR1, MR3
;
MMPYF32 MR2, MR1, MR2
;
MSUBF32 MR2, #1.5, MR2
;
MMPYF32 MR1, MR1, MR2
;
MMPYF32 MR2, MR1, MR3
;
MMPYF32 MR2, MR1, MR2
;
MSUBF32 MR2, #1.5, MR2
;
MMPYF32 MR1, MR1, MR2
;
MMPYF32 MR0, MR1, MR0
;
MMOV32 @_y, MR0
;
MSTOP
;
See also
600
MR0 = X
MR1 = Ye = Estimate(1/sqrt(X))
if(X == 0.0) Ye = 0.0
MR3 = X*0.5
MR2 = Ye*X*0.5
MR2 = Ye*Ye*X*0.5
MR2 = 1.5 - Ye*Ye*X*0.5
MR1 = Ye = Ye*(1.5 - Ye*Ye*X*0.5)
MR2 = Ye*X*0.5
MR2 = Ye*Ye*X*0.5
MR2 = 1.5 - Ye*Ye*X*0.5
MR1 = Ye = Ye*(1.5 - Ye*Ye*X*0.5)
MR0 = Y = Ye*X
Store Y = sqrt(X)
end of task
MEINVF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MF32TOI16 MRa, MRb Convert 32-Bit Floating-Point Value to 16-Bit Integer
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 1110 0000
Description
Convert a 32-bit floating point value in MRb to a 16-bit integer and truncate. The result
will be stored in MRa.
MRa(15:0) = F32TOI16(MRb);
MRa(31:16) = sign extension of MRa(15);
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MF32TOI16
MR0, #5.0
MR1, MR0
MMOVIZ
MF32TOI16
MR2, #-5.0
MR3, MR2
See also
;
;
;
;
;
;
MR0
MR1(15:0)
MR1(31:16)
MR2
MR3(15:0)
MR3(31:16)
=
=
=
=
=
=
5.0 (0x40A00000)
MF32TOI16(MR0) = 0x0005
Sign extension of MR1(15) = 0x0000
-5.0 (0xC0A00000)
MF32TOI16(MR2) = -5 (0xFFFB)
Sign extension of MR3(15) = 0xFFFF
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
601
Instruction Set
www.ti.com
MF32TOI16R MRa, MRb Convert 32-Bit Floating-Point Value to 16-Bit Integer and Round
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 0110 0000
Description
Convert the 32-bit floating point value in MRb to a 16-bit integer and round to the nearest
even value. The result is stored in MRa.
MRa(15:0) = F32TOI16round(MRb);
MRa(31:16) = sign extension of MRa(15);
This instruction does not affect any flags:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ MR0, #0x3FD9
MMOVXI MR0, #0x999A
MF32TOI16R MR1, MR0
MMOVF32 MR2, #-1.7
MF32TOI16R MR3, MR2
See also
602
;
;
;
;
;
;
;
;
MR0(31:16) = 0x3FD9
MR0(15:0) = 0x999A
MR0 = 1.7 (0x3FD9999A)
MR1(15:0) = MF32TOI16round (MR0) = 2 (0x0002)
MR1(31:16) = Sign extension of MR1(15) = 0x0000
MR2 = -1.7 (0xBFD9999A)
MR3(15:0) = MF32TOI16round (MR2) = -2 (0xFFFE)
MR3(31:16) = Sign extension of MR2(15) = 0xFFFF
MF32TOI16 MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MF32TOI32 MRa, MRb Convert 32-Bit Floating-Point Value to 32-Bit Integer
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 0110 0000
Description
Convert the 32-bit floating-point value in MRb to a 32-bit integer value and truncate.
Store the result in MRa.
MRa = F32TOI32(MRb);
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example 1
MMOVF32
MF32TOI32
MMOVF32
MF32TOI32
Example 2
; Given X, M and B are IQ24 numbers:
; X = IQ24(+2.5) = 0x02800000
; M = IQ24(+1.5) = 0x01800000
; B = IQ24(-0.5) = 0xFF800000
;
; Calculate Y = X * M + B
;
; Convert M, X and B from IQ24 to float
;
_Cla1Task2:
MI32TOF32 MR0, @_M
; MR0 = 0x4BC00000
MI32TOF32 MR1, @_X
; MR1 = 0x4C200000
MI32TOF32 MR2, @_B
; MR2 = 0xCB000000
MMPYF32
MR0, MR0, #0x3380 ; M = 1/(1*2^24) * iqm = 1.5 (0x3FC00000)
MMPYF32
MR1, MR1, #0x3380 ; X = 1/(1*2^24) * iqx = 2.5 (0x40200000)
MMPYF32
MR2, MR2, #0x3380 ; B = 1/(1*2^24) * iqb = -.5 (0xBF000000)
MMPYF32
MR3, MR0, MR1
; M*X
MADDF32
MR2, MR2, MR3
; Y=MX+B = 3.25 (0x40500000)
MR2,
MR3,
MR0,
MR1,
#11204005.0
MR2
#-11204005.0
MR0
;
;
;
;
MR2
MR3
MR0
MR1
; Convert Y from float32 to IQ24
MMPYF32 MR2, MR2, #0x4B80
;
MF32TOI32 MR2, MR2
;
MMOV32 @_Y, MR2
;
MSTOP
;
See also
=
=
=
=
11204005.0 (0x4B2AF5A5)
MF32TOI32(MR2) = 11204005 (0x00AAF5A5)
-11204005.0 (0xCB2AF5A5)
MF32TOI32(MR0) = -11204005 (0xFF550A5B)
Y * 1*2^24
IQ24(Y) = 0x03400000
store result
end of task
MF32TOUI32 MRa, MRb
MI32TOF32 MRa, MRb
MI32TOF32 MRa, mem32
MUI32TOF32 MRa, MRb
MUI32TOF32 MRa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
603
Instruction Set
www.ti.com
MF32TOUI16 MRa, MRb Convert 32-Bit Floating-Point Value to 16-bit Unsigned Integer
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 1010 0000
Description
Convert the 32-bit floating point value in MRb to an unsigned 16-bit integer value and
truncate to zero. The result will be stored in MRa. To instead round the integer to the
nearest even value use the MF32TOUI16R instruction.
MRa(15:0) = F32TOUI16(MRb);
MRa(31:16) = 0x0000;
This instruction does not affect any flags:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MF32TOUI16
MR0, #9.0
MR1, MR0
MMOVIZ
MF32TOUI16
MR2, #-9.0
MR3, MR2
See also
604
;
;
;
;
;
;
MR0 = 9.0 (0x41100000)
MR1(15:0) = MF32TOUI16(MR0) = 9 (0x0009)
MR1(31:16) = 0x0000
MR2 = -9.0 (0xC1100000)
MR3(15:0) = MF32TOUI16(MR2) = 0 (0x0000)
MR3(31:16) = 0x0000
MF32TOI16 MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MF32TOUI16R MRa, MRb Convert 32-Bit Floating-Point Value to 16-bit Unsigned Integer and Round
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 1100 0000
Description
Convert the 32-bit floating-point value in MRb to an unsigned 16-bit integer and round to
the closest even value. The result will be stored in MRa. To instead truncate the
converted value, use the MF32TOUI16 instruction.
MRa(15:0) = MF32TOUI16round(MRb);
MRa(31:16) = 0x0000;
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVXI
MF32TOUI16R
MR0, #0x412C
MR0, #0xCCCD
MR1, MR0
MMOVF32
MF32TOUI16R
MR2, #-10.8
MR3, MR2
See also
;
;
;
;
;
;
;
MR0 = 0x412C
MR0 = 0xCCCD ; MR0 = 10.8 (0x412CCCCD)
MR1(15:0) = MF32TOUI16round(MR0) = 11 (0x000B)
MR1(31:16) = 0x0000
MR2 = -10.8 (0x0xC12CCCCD)
MR3(15:0) = MF32TOUI16round(MR2) = 0 (0x0000)
MR3(31:16) = 0x0000
MF32TOI16 MRa, MRb
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
605
Instruction Set
www.ti.com
MF32TOUI32 MRa, MRb Convert 32-Bit Floating-Point Value to 32-Bit Unsigned Integer
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 1010 0000
Description
Convert the 32-bit floating-point value in MRb to an unsigned 32-bit integer and store the
result in MRa.
MRa = F32TOUI32(MRb);
This instruction does not affect any flags:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MF32TOUI32
MMOVIZ
MF32TOUI32
See also
MF32TOI32 MRa, MRb
MI32TOF32 MRa, MRb
MI32TOF32 MRa, mem32
MUI32TOF32 MRa, MRb
MUI32TOF32 MRa, mem32
606
Control Law Accelerator (CLA)
MR0,
MR0,
MR1,
MR2,
#12.5
MR0
#-6.5
MR1
;
;
;
;
MR0
MR0
MR1
MR2
=
=
=
=
12.5 (0x41480000)
MF32TOUI32 (MR0) = 12 (0x0000000C)
-6.5 (0xC0D00000)
MF32TOUI32 (MR1) = 0.0 (0x00000000)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MFRACF32 MRa, MRb Fractional Portion of a 32-Bit Floating-Point Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 0000 0000
Description
Returns in MRa the fractional portion of the 32-bit floating-point value in MRb
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MFRACF32
MR2, #19.625 ; MR2 = 19.625 (0x419D0000)
MR3, MR2
; MR3 = MFRACF32(MR2) = 0.625 (0x3F200000)0)
See also
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
607
Instruction Set
www.ti.com
MI16TOF32 MRa, MRb Convert 16-Bit Integer to 32-Bit Floating-Point Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 1000 0000
Description
Convert the 16-bit signed integer in MRb to a 32-bit floating point value and store the
result in MRa.
MRa = MI16TOF32(MRb);
This instruction does not affect any flags:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVXI
MI16TOF32
MR0, #0x0000
MR0, #0x0004
MR1, MR0
; MR0(31:16) = 0.0 (0x0000)
; MR0(15:0) = 4.0 (0x0004)
; MR1 = MI16TOF32 (MR0) = 4.0 (0x40800000)
MMOVIZ
MMOVXI
MI16TOF32
MSTOP
MR2, #0x0000
MR2, #0xFFFC
MR3, MR2
; MR2(31:16) = 0.0 (0x0000)
; MR2(15:0) = -4.0 (0xFFFC)
; MR3 = MI16TOF32 (MR2) = -4.0 (0xC0800000)
See also
608
MF32TOI16 MRa, MRb
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MI16TOF32 MRa, mem16 Convert 16-Bit Integer to 32-Bit Floating-Point Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
mem16
16-bit source memory location to be converted
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0101 00aa addr
Description
Convert the 16-bit signed integer indicated by the mem16 pointer to a 32-bit floatingpoint value and store the result in MRa.
MRa = MI16TOF32[mem16];
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction:
Example
; Assume A = 4 (0x0004)
;
B = -4 (0xFFFC)
MI16TOF32 MR0, @_A ; MR0 = MI16TOF32(A) = 4.0 (0x40800000)
MI16TOF32 MR1, @_B ; MR1 = MI16TOF32(B) = -4.0 (0xC0800000
See also
MF32TOI16 MRa, MRb
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MUI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
609
Instruction Set
www.ti.com
MI32TOF32 MRa, mem32 Convert 32-Bit Integer to 32-Bit Floating-Point Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
mem32
32-bit memory source for the MMOV32 operation.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0100 01aa addr
Description
Convert the 32-bit signed integer indicated by mem32 to a 32-bit floating point value and
store the result in MRa.
MRa = MI32TOF32[mem32];
This instruction does not affect any flags:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
;
;
;
;
;
;
;
;
;
Given X, M and
X = IQ24(+2.5)
M = IQ24(+1.5)
B = IQ24(-0.5)
B
=
=
=
are IQ24 numbers:
0x02800000
0x01800000
0xFF800000
Calculate Y = X * M + B
Convert M, X and B from IQ24 to float
_Cla1Task3:
MI32TOF32 MR0, @_M
MI32TOF32 MR1, @_X
MI32TOF32 MR2, @_B
MMPYF32 MR0, MR0, #0x3380
MMPYF32 MR1, MR1, #0x3380
MMPYF32 MR2, MR2, #0x3380
MMPYF32 MR3, MR0, MR1
MADDF32 MR2, MR2, MR3
;
;
;
;
;
;
;
;
MR0 = 0x4BC00000
MR1 = 0x4C200000
MR2 = 0xCB000000
M = 1/(1*2^24) * iqm = 1.5 (0x3FC00000)
X = 1/(1*2^24) * iqx = 2.5 (0x40200000)
B = 1/(1*2^24) * iqb = -.5 (0xBF000000)
M*X
Y=MX+B = 3.25 (0x40500000)
; Convert Y from float32 to IQ24
MMPYF32 MR2, MR2, #0x4B80 ; Y * 1*2^24
MF32TOI32 MR2, MR2
; IQ24(Y) = 0x03400000
MMOV32 @_Y, MR2
; store result
MSTOP
; end of task
See also
610
MF32TOI32 MRa, MRb
MF32TOUI32 MRa, MRb
MI32TOF32 MRa, MRb
MUI32TOF32 MRa, MRb
MUI32TOF32 MRa, mem32
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MI32TOF32 MRa, MRb Convert 32-Bit Integer to 32-Bit Floating-Point Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 1000 0000
Description
Convert the signed 32-bit integer in MRb to a 32-bit floating-point value and store the
result in MRa.
MRa = MI32TOF32(MRb);
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; Example1:
;
MMOVIZ
MMOVXI
MR2, #0x1111 ;
MR2, #0x1111 ;
;
MI32TOF32 MR3, MR2
;
See also
MR2(31:16) = 4369 (0x1111)
MR2(15:0) = 4369 (0x1111)
MR2 = +286331153 (0x11111111)
MR3 = MI32TOF32 (MR2) = 286331153.0 (0x4D888888)
MF32TOI32 MRa, MRb
MF32TOUI32 MRa, MRb
MI32TOF32 MRa, mem32
MUI32TOF32 MRa, MRb
MUI32TOF32 MRa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
611
Instruction Set
www.ti.com
MLSL32 MRa, #SHIFT Logical Shift Left
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
#SHIFT
Number of bits to shift (1 to 32)
Opcode
LSW: 0000 0000 0shi ftaa
MSW: 0111 1011 1100 0000
Description
Logical shift left of MRa by the number of bits indicated. The number of bits can be 1 to
32.
MARa(31:0) = Logical Shift Left(MARa(31:0) by #SHIFT bits);
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
; Given m2 = (int32)32
;
x2 = (int32)64
;
b2 = (int32)-128
;
; Calculate:
;
m2 = m2*2
;
x2 = x2*4
;
b2 = b2*8
;
_Cla1Task3:
MMOV32 MR0, @_m2
; MR0 = 32 (0x00000020)
MMOV32 MR1, @_x2
; MR1 = 64 (0x00000040)
MMOV32 MR2, @_b2
; MR2 = -128 (0xFFFFFF80)
MLSL32 MR0, #1
; MR0 = 64 (0x00000040)
MLSL32 MR1, #2
; MR1 = 256 (0x00000100)
MLSL32 MR2, #3
; MR2 = -1024 (0xFFFFFC00)
MMOV32 @_m2, MR0
; Store results
MMOV32 @_x2, MR1
MMOV32 @_b2, MR2
MSTOP
; end of task
See also
MADD32 MRa, MRb, MRc
MASR32 MRa, #SHIFT
MAND32 MRa, MRb, MRc
MLSR32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
612
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MLSR32 MRa, #SHIFT Logical Shift Right
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
#SHIFT
Number of bits to shift (1 to 32)
Opcode
LSW: 0000 0000 0shi ftaa
MSW: 0111 1011 1000 0000
Description
Logical shift right of MRa by the number of bits indicated. The number of bits can be 1 to
32. Unlike the arithmetic shift (MASR32), the logical shift does not preserve the number's
sign bit. Every bit in the operand is moved the specified number of bit positions, and the
vacant bit-positions are filled in with zeros
MARa(31:0) = Logical Shift Right(MARa(31:0) by #SHIFT bits);
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1;}
Pipeline
This is a single-cycle instruction.
Example
; Illustrate the difference between MASR32 and MLSR32
See also
MMOVIZ MR0, #0xAAAA
MMOVXI MR0, #0x5555
; MR0 = 0xAAAA5555
MMOV32 MR1, MR0
MMOV32 MR2, MR0
; MR1 = 0xAAAA5555
; MR2 = 0xAAAA5555
MASR32 MR1, #1
MLSR32 MR2, #1
; MR1 = 0xD5552AAA
; MR2 = 0x55552AAA
MASR32 MR1, #1
MLSR32 MR2, #1
; MR1 = 0xEAAA9555
; MR2 = 0x2AAA9555
MASR32 MR1, #6
MLSR32 MR2, #6
; MR1 = 0xFFAAAA55
; MR2 = 0x00AAAA55
MADD32 MRa, MRb, MRc
MASR32 MRa, #SHIFT
MAND32 MRa, MRb, MRc
MLSL32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
MSUB32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
613
Instruction Set
www.ti.com
MMACF32 MR3, MR2, MRd, MRe, MRf ||MMOV32 MRa, mem32 32-Bit Floating-Point Multiply and
Accumulate with Parallel Move
Operands
MR3
floating-point destination/source register MR3 for the add operation
MR2
CLA floating-point source register MR2 for the add operation
MRd
CLA floating-point destination register (MR0 to MR3) for the multiply operation
MRd cannot be the same register as MRa
MRe
CLA floating-point source register (MR0 to MR3) for the multiply operation
MRf
CLA floating-point source register (MR0 to MR3) for the multiply operation
MRa
CLA floating-point destination register for the MMOV32 operation (MR0 to MR3).
MRa cannot be MR3 or the same register as MRd.
mem32
32-bit source for the MMOV32 operation
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0011 ffee ddaa addr
Description
Multiply and accumulate the contents of floating-point registers and move from register
to memory. The destination register for the MMOV32 cannot be the same as the
destination registers for the MMACF32.
MR3 = MR3 + MR2;
MRd = MRe * MRf;
MRa = [mem32];
Restrictions
The destination registers for the MMACF32 and the MMOV32 must be unique. That is,
MRa cannot be MR3 and MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMACF32 (add or multiply) generates an underflow condition.
• LVF = 1 if MMACF32 (add or multiply) generates an overflow condition.
MMOV32 sets the NF and ZF flags as follows:
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; }
Pipeline
614
MMACF32 and MMOV32 complete in a single cycle.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 1
; Perform 5 multiply and accumulate operations:
;
; X and Y are 32-bit floating point arrays
;
; 1st multiply: A = X0 * Y0
; 2nd multiply: B = X1 * Y1
; 3rd multiply: C = X2 * Y2
; 4th multiply: D = X3 * Y3
; 5th multiply: E = X3 * Y3
;
; Result = A + B + C + D + E
;
_Cla1Task1:
MMOVI16 MAR0, #_X
; MAR0 points to X array
MMOVI16 MAR1, #_Y
; MAR1 points to Y array
MNOP
; Delay for MAR0, MAR1 load
MNOP
; Delay for MAR0, MAR1 load
; <-- MAR0 valid
MMOV32 MR0, *MAR0[2]++
; MR0 = X0, MAR0 += 2
; <-- MAR1 valid
MMOV32 MR1, *MAR1[2]++
; MR1 = Y0, MAR1 += 2
MMPYF32 MR2, MR0, MR1
|| MMOV32 MR0, *MAR0[2]++
MMOV32 MR1, *MAR1[2]++
; MR2 = A = X0 * Y0
; In parallel MR0 = X1, MAR0 += 2
; MR1 = Y1, MAR1 += 2
MMPYF32 MR3, MR0, MR1
|| MMOV32 MR0, *MAR0[2]++
MMOV32 MR1, *MAR1[2]++
; MR3 = B = X1 * Y1
; In parallel MR0 = X2, MAR0 += 2
; MR1 = Y2, MAR2 += 2
MMACF32 MR3, MR2, MR2, MR0, MR1 ; MR3 = A + B, MR2 = C = X2 * Y2
|| MMOV32 MR0, *MAR0[2]++
; In parallel MR0 = X3
MMOV32 MR1, *MAR1[2]++
; MR1 = Y3 M
MACF32 MR3, MR2, MR2, MR0, MR1
|| MMOV32 MR0, *MAR0
MMOV32 MR1, *MAR1
; MR3 = (A + B) + C, MR2 = D = X3 * Y3
; In parallel MR0 = X4
; MR1 = Y4
MMPYF32 MR2, MR0, MR1
|| MADDF32 MR3, MR3, MR2
; MR2 = E = X4 * Y4
; in parallel MR3 = (A + B + C) + D
MADDF32 MR3, MR3, MR2
MMOV32 @_Result, MR3
MSTOP
; MR3 = (A + B + C + D) + E
; Store the result
; end of task
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
615
Instruction Set
Example 2
www.ti.com
; sum = X0*B0 +
;
;
X2 = X1
;
X1 = X0
;
Y2 = Y1
;
_ClaTask2:
MMOV32
MMOV32
MMPYF32
|| MMOV32
MMOVD32
MMPYF32
|| MMOV32
MMOVD32
;
;
X1*B1 + X2*B2 + Y1*A1 + Y2*B2
; Y1 = sum
MR0,
MR1,
MR2,
MR0,
MR1,
MR3,
MR0,
MR1,
@_B2
@_X2
MR1, MR0
@_B1
@_X1
MR1, MR0
@_B0
@_X0
616
=
=
=
=
=
=
=
=
B2
X2
X2*B2
B1
X1, X2 = X1
X1*B1
B0
X0, X1 = X0
; MR1 = Y2
MR3 = X0*B0 + X1*B1 + X2*B2, MR2 = Y2*A2
MR0 = A1
MMACF32 MR3, MR2, MR2, MR1, MR0
|| MMOV32 MR0, @_A1
MMOVD32 MR1,@_Y1
MADDF32 MR3, MR3, MR2
|| MMPYF32 MR2, MR1, MR0
MADDF32 MR3, MR3, MR2
MMOV32 @_Y1, MR3
MSTOP
See also
MR0
MR1
MR2
MR0
MR1
MR3
MR0
MR1
MR3 = X1*B1 + X2*B2, MR2 = X0*B0
MR0 = A2
MMACF32 MR3, MR2, MR2, MR1, MR0
|| MMOV32 MR0, @_A2 M
MOV32 MR1, @_Y2
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
MR1 = Y1, Y2 = Y1
MR3 = Y2*A2 + X0*B0 + X1*B1 + X2*B2
MR2 = Y1*A1
MR3 = Y1*A1 + Y2*A2 + X0*B0 + X1*B1 + X2*B2
Y1 = MR3
end of task
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMAXF32 MRa, MRb 32-Bit Floating-Point Maximum
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 0010 0000
Description
if(MRa < MRb) MRa = MRb;
Special cases for the output from the MMAXF32 operation:
• NaN output will be converted to infinity
• A denormalized output will be converted to positive zero.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The ZF and NF flags are configured on the result of the operation, not the result stored
in the destination register.
if(MRa == MRb) {ZF=1; NF=0;}
if(MRa > MRb) {ZF=0; NF=0;}
if(MRa < MRb) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example 1
MMOVIZ
MMOVIZ
MMOVIZ
MMAXF32
MMAXF32
MMAXF32
MAXF32
Example 2
; X is an array of 32-bit floating-point values
; Find the maximum value in an array X
; and store it in Result
;
_Cla1Task1:
MMOVI16
MAR1,#_X
; Start address
MUI16TOF32 MR0, @_len
; Length of the array
MNOP
; delay for MAR1 load
MNOP
; delay for MAR1 load
MMOV32
MR1, *MAR1[2]++
; MR1 = X0
LOOP
MMOV32
MR2, *MAR1[2]++
; MR2 = next element
MMAXF32
MR1, MR2
; MR1 = MAX(MR1, MR2)
MADDF32
MR0, MR0, #-1.0
; Decrememt the counter
MCMPF32
MR0 #0.0
; Set/clear flags for MBCNDD
MNOP
MNOP
MNOP
MBCNDD
LOOP, NEQ
; Branch if not equal to zero
MMOV32
@_Result, MR1
; Always executed
MNOP
; Always executed
MNOP
; Always executed
MSTOP
; End of task
See also
MCMPF32 MRa, MRb
MCMPF32 MRa, #16FHi
MMAXF32 MRa, #16FHi
MMINF32 MRa, MRb
MR0, #5.0
MR1, #-2.0
MR2, #-1.5
MR2, MR1
MR1, MR2
MR2, MR0
MR0, MR2
;
;
;
;
;
;
;
MR0
MR1
MR2
MR2
MR1
MR2
MR2
=
=
=
=
=
=
=
5.0
-2.0
-1.5
-1.5,
-1.5,
5.0,
5.0,
(0x40A00000)
(0xC0000000)
(0xBFC00000)
ZF = NF = 0
ZF = 0, NF = 1
ZF = 0, NF = 1
ZF = 1, NF = 0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
617
Instruction Set
www.ti.com
MMINF32 MRa, #16FHi
618
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMAXF32 MRa, #16FHi 32-Bit Floating-Point Maximum
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1001 0000 00aa
Description
Compare MRa with the floating-point value represented by the immediate operand. If the
immediate value is larger, then load it into MRa.
if(MRa < #16FHi:0) MRa = #16FHi:0;
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. This
addressing mode is most useful for constants where the lowest 16-bits of the mantissa
are 0. Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and
-1.5 (0xBFC00000). The assembler will accept either a hex or float as the immediate
value. That is, -1.5 can be represented as #-1.5 or #0xBFC0.
Special cases for the output from the MMAXF32 operation:
• NaN output will be converted to infinity
• A denormalized output will be converted to positive zero.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The ZF and NF flags are configured on the result of the operation, not the result stored
in the destination register.
if(MRa == #16FHi:0) {ZF=1; NF=0;}
if(MRa > #16FHi:0) {ZF=0; NF=0;}
if(MRa < #16FHi:0) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVIZ
MMOVIZ
MMAXF32
MMAXF32
MMAXF32
MMAXF32
See also
MR0,
MR1,
MR2,
MR0,
MR1,
MR2,
MR2,
#5.0
#4.0
#-1.5
#5.5
#2.5
#-1.0
#-1.0
;
;
;
;
;
;
;
MR0
MR1
MR2
MR0
MR1
MR2
MR2
= 5.0
= 4.0
= -1.5
= 5.5,
= 4.0,
= -1.0,
= -1.5,
(0x40A00000)
(0x40800000)
(0xBFC00000)
ZF = 0, NF =
ZF = 0, NF =
ZF = 0, NF =
ZF = 1, NF =
1
0
1
0
MMAXF32 MRa, MRb
MMINF32 MRa, MRb
MMINF32 MRa, #16FHi
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
619
Instruction Set
www.ti.com
MMINF32 MRa, MRb 32-Bit Floating-Point Minimum
Operands
MRa
CLA floating-point source/destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 0100 0000
Description
if(MRa > MRb) MRa = MRb;
Special cases for the output from the MMINF32 operation:
• NaN output will be converted to infinity
• A denormalized output will be converted to positive zero.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The ZF and NF flags are configured on the result of the operation, not the result stored
in the destination register.
if(MRa == MRb) {ZF=1; NF=0;}
if(MRa > MRb) {ZF=0; NF=0;}
if(MRa < MRb) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example 1
MMOVIZ MR0, #5.0
MMOVIZ MR1, #4.0
MMOVIZ MR2, #-1.5
MMINF32 MR0, MR1
MMINF32 MR1, MR2
MMINF32 MR2, MR1
MMINF32 MR1, MR0
Example 2
;
; X is an array of 32-bit floating-point values
; Find the minimum value in an array X
; and store it in Result
;
;
;
;
;
;
;
;
MR0
MR1
MR2
MR0
MR1
MR2
MR2
=
=
=
=
=
=
=
5.0 (0x40A00000)
4.0 (0x40800000)
-1.5 (0xBFC00000)
4.0, ZF = 0, NF = 0
-1.5, ZF = 0, NF = 0
-1.5, ZF = 1, NF = 0
-1.5, ZF = 0, NF = 1
_Cla1Task1:
MMOVI16
MAR1,#_X
MUI16TOF32 MR0, @_len
MNOP
MNOP
MMOV32
MR1, *MAR1[2]++
LOOP
MMOV32
MR2, *MAR1[2]++
MMINF32
MR1, MR2
MADDF32
MR0, MR0, #-1.0
MCMPF32
MR0 #0.0
MNOP
MNOP
MNOP
MBCNDD
LOOP, NEQ
MMOV32
@_Result, MR1
MNOP
MNOP
MSTOP
See also
620
;
;
;
;
;
Start address
Length of the array
delay for MAR1 load
delay for MAR1 load
MR1 = X0
;
;
;
;
MR2 = next element
MR1 = MAX(MR1, MR2)
Decrememt the counter
Set/clear flags for MBCNDD
;
;
;
;
;
Branch
Always
Always
Always
End of
if not equal to zero
executed
executed
executed
task
MMAXF32 MRa, MRb
MMAXF32 MRa, #16FHi
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMINF32 MRa, #16FHi
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
621
Instruction Set
www.ti.com
MMINF32 MRa, #16FHi 32-Bit Floating-Point Minimum
Operands
MRa
floating-point source/destination register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1001 0100 00aa
Description
Compare MRa with the floating-point value represented by the immediate operand. If the
immidate value is smaller, then load it into MRa.
if(MRa > #16FHi:0) MRa = #16FHi:0;
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. This
addressing mode is most useful for constants where the lowest 16-bits of the mantissa
are 0. Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and
-1.5 (0xBFC00000). The assembler will accept either a hex or float as the immediate
value. That is, -1.5 can be represented as #-1.5 or #0xBFC0.
Special cases for the output from the MMINF32 operation:
• NaN output will be converted to infinity
• A denormalized output will be converted to positive zero.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The ZF and NF flags are configured on the result of the operation, not the result stored
in the destination register.
if(MRa == #16FHi:0)
{ZF=1; NF=0;}
if(MRa > #16FHi:0) {ZF=0; NF=0;}
if(MRa < #16FHi:0) {ZF=0; NF=1;}
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVIZ
MMOVIZ
MMINF32
MMINF32
MMINF32
MMINF32
See also
622
MR0,
MR1,
MR2,
MR0,
MR1,
MR2,
MR2,
#5.0
#4.0
#-1.5
#5.5
#2.5
#-1.0
#-1.5
;
;
;
;
;
;
;
MR0
MR1
MR2
MR0
MR1
MR2
MR2
= 5.0
= 4.0
= -1.5
= 5.0,
= 2.5,
= -1.5,
= -1.5,
(0x40A00000)
(0x40800000)
(0xBFC00000)
ZF = 0, NF =
ZF = 0, NF =
ZF = 0, NF =
ZF = 1, NF =
1
0
1
0
MMAXF32 MRa, #16FHi
MMAXF32 MRa, MRb
MMINF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV16 MARx, MRa, #16I Load the Auxiliary Register with MRa + 16-bit Immediate Value
Operands
Opcode
MARx
Auxiliary register MAR0 or MAR1
MRa
CLA Floating-point register (MR0 to MR3)
#16I
16-bit immediate value
LSW: IIII IIII IIII IIII (opcode of MMOV16 MAR0, MRa, #16I)
MSW: 0111 1111 1101 00AA
LSW: IIII IIII IIII IIII (opcode of MMOV16 MAR1, MRa, #16I)
MSW: 0111 1111 1111 00AA
Description
Load the auxiliary register, MAR0 or MAR1, with MRa(15:0) + 16-bit immediate value.
Refer to the pipeline section for important information regarding this instruction.
MARx = MRa(15:0) + #16I;
Flags
Pipeline
This instruction does not modify flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction. The load of MAR0 or MAR1 will occur in the EXE
phase of the pipeline. Any post increment of MAR0 or MAR1 using indirect addressing
will occur in the D2 phase of the pipeline. Therefore the following applies when loading
the auxiliary registers:
• I1 and I2
The two instructions following MMOV16 will use MAR0/MAR1 before the update
occurs. Thus these two instructions will use the old value of MAR0 or MAR1.
• I3
Loading of an auxiliary register occurs in the EXE phase while updates due to postincrement addressing occur in the D2 phase. Thus I3 cannot use the auxiliary
register or there will be a conflict. In the case of a conflict, the update due to addressmode post increment will win and the auxiliary register will not be updated with #_X.
• I4
Starting with the 4th instruction MAR0 or MAR1 will be the new value loaded with
MMOVI16.
; Assume MAR0 is 50, MR0 is 10, and #_X is 20
MMOV16 MAR0,
2>
3>
4>
5>
;
;
;
;
;
I1
I2
I3
I4
I5
; Load MAR0 with address
Will use the old value of
Will use the old value of
Cannot use MAR0
Will use the new value of
of X (20) + MR0 (10)
MAR0 (50)
MAR0 (50)
MAR0 (30)
Table 9-28. Pipeline Activity For MMOV16 MARx, MRa , #16I
Instruction
F1
F2
D1
D2
MMOV16 MAR0, MR0, #_X
MMOV16
I1
I1
MMOV16
I2
I2
I1
MMOV16
I3
I3
I2
I1
MMOV16
I4
I4
I3
I2
I1
MMOV16
I5
I5
I4
I3
I2
I1
MMOV16
I6
I6
I5
I4
I3
I2
I1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
R1
R2
E
W
MMOV1
6
Control Law Accelerator (CLA) 623
Instruction Set
Example 1
www.ti.com
; Calculate an offset into a sin/cos table
;
_Cla1Task1:
MMOV32 MR0,@_rad
; MR0 =
MMOV32 MR1,@_TABLE_SIZEDivTwoPi ; MR1 =
MMPYF32 MR1,MR0,MR1
; MR1 =
|| MMOV32 MR2,@_TABLE_MASK
; MR2 =
MF32TOI32 MR3,MR1
; MR3 =
MAND32 MR3,MR3,MR2
; MR3 =
MLSL32 MR3,#1
; MR3 =
||
Example 2
rad
TABLE_SIZE/(2*Pi)
rad* TABLE_SIZE/(2*Pi)
TABLE_MASK
K=int(rad*TABLE_SIZE/(2*Pi))
K & TABLE_MASK
K * 2
MMOV16 MAR0,MR3,#_Cos0
MFRACF32 MR1,MR1
MMOV32 MR0,@_TwoPiDivTABLE_SIZE
MMPYF32 MR1,MR1,MR0
MMOV32 MR0,@_Coef3
;
;
;
;
MAR0 K*2+addr of table.Cos0
I1
I2
I3
MMOV32 MR2,*MAR0[#-64]++
...
...
MSTOP ; end of task
; MR2 = *MAR0, MAR0 += (-64)
; This task logs the last NUM_DATA_POINTS
; ADCRESULT1 values in the array VoltageCLA
;
; When the last element in the array has been
; filled, the task will go back to the
; the first element.
;
; Before starting the ADC conversions, force
; Task 8 to initialize the ConversionCount to zero
;
_Cla1Task2:
MMOVZ16
MR0, @_ConversionCount
;I1 Current Conversion
MMOV16 MAR1, MR0, #_VoltageCLA
;I2 Next array location
MUI16TOF32
MR0, MR0
;I3 Convert count to float32
MADDF32
MR0, MR0, #1.0
;I4 Add 1 to conversion count
MCMPF32
MR0, #NUM_DATA_POINTS.0
;I5 Compare count to max
MF32TOUI16
MR0, MR0
;I6 Convert count to Uint16
MNOP
;I7 Wait till I8 to read result
MMOVZ16
MR2, @_AdcResult.ADCRESULT1 ;I8 Read ADCRESULT1
MMOV16
*MAR1, MR2
; Store ADCRESULT1
MBCNDD
_RestartCount, GEQ
; If count >= NUM_DATA_POINTS
MMOVIZ
MR1, #0.0
; Always executed: MR1=0
MNOP
MNOP
MMOV16
@_ConversionCount, MR0
; If branch not taken
MSTOP
; store current count
_RestartCount
MMOV16
@_ConversionCount, MR1
; If branch taken, restart count
MSTOP
; end of task
; This task initializes the ConversionCount
; to zero
;
_Cla1Task8:
MMOVIZ MR0, #0.0
MMOV16 @_ConversionCount, MR0
MSTOP
_ClaT8End:
See also
624
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV16 MARx, mem16 Load MAR1 with 16-bit Value
Operands
Opcode
MARx
CLA auxiliary register MAR0 or MAR1
mem16
16-bit destination memory accessed using indirect or direct addressing modes
LSW: mmmm mmmm mmmm mmmm (Opcode for MMOV16 MAR0, mem16)
MSW: 0111 0110 0000 addr
LSW: mmmm mmmm mmmm mmmm (Opcode for MMOV16 MAR1, mem16)
MSW: 0111 0110 0100 addr
Description
Load MAR0 or MAR1 with the 16-bit value pointed to by mem16. Refer to the pipeline
section for important information regarding this instruction.
MAR1 = [mem16];
Flags
Pipeline
No flags MSTF flags are affected.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction. The load of MAR0 or MAR1 will occur in the EXE
phase of the pipeline. Any post increment of MAR0 or MAR1 using indirect addressing
will occur in the D2 phase of the pipeline. Therefore the following applies when loading
the auxiliary registers:
• I1 and I2
The two instructions following MMOV16 will use MAR0/MAR1 before the update
occurs. Thus these two instructions will use the old value of MAR0 or MAR1.
• I3
Loading of an auxiliary register occurs in the EXE phase while updates due to postincrement addressing occur in the D2 phase. Thus I3 cannot use the auxiliary
register or there will be a conflict. In the case of a conflict, the update due to addressmode post increment will win snd the auxiliary register will not be updated with #_X.
• I4
Starting with the 4th instruction MAR0 or MAR1 will be the new value loaded with
MMOV16.
; Assume MAR0 is 50 and @_X is 20
MMOV16 MAR0,
2>
3>
4>
5>
;
;
;
;
;
I1
I2
I3
I4
I5
; Load MAR0 with the contents
Will use the old value of MAR0
Will use the old value of MAR0
Cannot use MAR0
Will use the new value of MAR0
of X (20)
(50)
(50)
(20)
Table 9-29. Pipeline Activity For MMOV16 MAR0/MAR1, mem16
Instruction
F1
MMOV16 MAR0, @_X
MMOV16
F2
D1
D2
I1
I1
MMOV16
I2
I2
I1
MMOV16
I3
I3
I2
I1
MMOV16
I4
I4
I3
I2
I1
MMOV16
I5
I5
I4
I3
I2
I1
MMOV16
I6
I6
I5
I4
I3
I2
I1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
R1
R2
E
W
MMOV1
6
Control Law Accelerator (CLA) 625
Instruction Set
Example
www.ti.com
; This task logs the last NUM_DATA_POINTS
; ADCRESULT1 values in the array VoltageCLA
;
; When the last element in the array has been
; filled, the task will go back to the
; the first element.
;
; Before starting the ADC conversions, force
; Task 8 to initialize the ConversionCount to zero
;
_Cla1Task2:
MMOVZ16
MR0, @_ConversionCount
;I1 Current Conversion
MMOV16
MAR1, MR0, #_VoltageCLA
;I2 Next array location
MUI16TOF32
MR0, MR0
;I3 Convert count to float32
MADDF32
MR0, MR0, #1.0
;I4 Add 1 to conversion count
MCMPF32
MR0, #NUM_DATA_POINTS.0
;I5 Compare count to max
MF32TOUI16
MR0, MR0
;I6 Convert count to Uint16
MNOP
;I7 Wait till I8 to read result
MMOVZ16
MR2, @_AdcResult.ADCRESULT1 ;I8 Read ADCRESULT1
MMOV16
*MAR1, MR2
; Store ADCRESULT1
MBCNDD
_RestartCount, GEQ
; If count >= NUM_DATA_POINTS
MMOVIZ
MR1, #0.0
; Always executed: MR1=0
MNOP
MNOP
MMOV16
@_ConversionCount, MR0
; If branch not taken MSTOP
; store current count
_RestartCount
MMOV16
@_ConversionCount, MR1
; If branch taken, restart count
MSTOP
; end of task
; This task initializes the ConversionCount
; to zero
;
_Cla1Task8:
MMOVIZ
MR0, #0.0
MMOV16
@_ConversionCount, MR0
MSTOP
_ClaT8End:
See also
626
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV16 mem16, MARx Move 16-Bit Auxiliary Register Contents to Memory
Operands
Opcode
mem16
16-bit destination memory accessed using indirect or direct addressing modes
MARx
CLA auxiliary register MAR0 or MAR1
LSW: mmmm mmmm mmmm mmmm (Opcode for MMOV16 mem16, MAR0)
MSW: 0111 0110 1000 addr
LSW: mmmm mmmm mmmm mmmm (Opcode for MMOV16 mem16, MAR1)
MSW: 0111 0110 1100 addr
Description
Store the contents of MAR0 or MAR1 in the 16-bit memory location pointed to by
mem16.
[mem16] = MAR0;
Flags
Pipeline
No flags MSTF flags are affected.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction.
Example
See also
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
627
Instruction Set
www.ti.com
MMOV16 mem16, MRa Move 16-Bit Floating-Point Register Contents to Memory
Operands
mem16
16-bit destination memory accessed using indirect or direct addressing modes
MRa
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0101 11aa addr
Description
Move 16-bit value from the lower 16-bits of the floating-point register (MRa(15:0)) to the
location pointed to by mem16.
[mem16] = MRa(15:0);
No flags MSTF flags are affected.
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
;
;
;
;
;
;
;
;
;
;
This task logs the last NUM_DATA_POINTS
ADCRESULT1 values in the array VoltageCLA
When the last element in the array has been
filled, the task will go back to the
the first element.
Before starting the ADC conversions, force
Task 8 to initialize the ConversionCount to zero
_Cla1Task2:
MMOVZ16
MMOV16
MUI16TOF32
MADDF32
MCMPF32
MF32TOUI16
MNOP
MMOVZ16
MMOV16
MBCNDD
MMOVIZ
MNOP
MNOP
MMOV16
_RestartCount
MMOV16
MSTOP
MR0, @_ConversionCount
MAR1, MR0, #_VoltageCLA
MR0, MR0
MR0, MR0, #1.0
MR0, #NUM_DATA_POINTS.0
MR0, MR0
;I1 Current Conversion
;I2 Next array location
;I3 Convert count to float32
;I4 Add 1 to conversion count
;I5 Compare count to max
;I6 Convert count to Uint16
;I7 Wait till I8 to read result
MR2, @_AdcResult.ADCRESULT1 ;I8 Read ADCRESULT1
*MAR1, MR2
; Store ADCRESULT1
_RestartCount, GEQ
; If count >= NUM_DATA_POINTS
MR1, #0.0
; Always executed: MR1=0
@_ConversionCount, MR0
; If branch not taken MSTOP
; store current count
@_ConversionCount, MR1
; If branch taken, restart count
; end of task
; This task initializes the ConversionCount
; to zero
;
_Cla1Task8:
MMOVIZ MR0, #0.0
MMOV16 @_ConversionCount, MR0
MSTOP
_ClaT8End:
See also
628
MMOVIZ MRa, #16FHi
MMOVXI MRa, #16FLoHex
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV32 mem32, MRa Move 32-Bit Floating-Point Register Contents to Memory
Operands
MRa
floating-point register (MR0 to MR3)
mem32
32-bit destination memory accessed using indirect or direct addressing modes
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0100 11aa addr
Description
Move from MRa to 32-bit memory location indicated by mem32.
[mem32] = MRa;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
No flags affected.
Pipeline
This is a single-cycle instruction.
Example
; Perform 5 multiply and accumulate operations:
;
; X and Y are 32-bit floating point arrays;
; 1st multiply: A = X0 * Y0
; 2nd multiply: B = X1 * Y1
; 3rd multiply: C = X2 * Y2
; 4th multiply: D = X3 * Y3
; 5th multiply: E = X3 * Y3;
; Result = A + B + C + D + E
;
_Cla1Task1:
MMOVI16
MAR0, #_X
; MAR0 points to X array
MMOVI16
MAR1, #_Y
; MAR1 points to Y array
MNOP
; Delay for MAR0, MAR1 load
MNOP
; Delay for MAR0, MAR1 load
; <-- MAR0 valid
MMOV32
MR0, *MAR0[2]++
; MR0 = X0, MAR0 += 2
; <-- MAR1 valid
MMOV32
MR1, *MAR1[2]++
; MR1 = Y0, MAR1 += 2
MMPYF32
MR2, MR0, MR1
; MR2 = A = X0 * Y0
|| MMOV32
MR0, *MAR0[2]++
; In parallel MR0 = X1, MAR0 += 2
MMOV32
MR1, *MAR1[2]++
; MR1 = Y1, MAR1 += 2
MMPYF32
MR3, MR0, MR1
; MR3 = B = X1 * Y1
|| MMOV32
MR0, *MAR0[2]++
; In parallel MR0 = X2, MAR0 += 2
MMOV32
MR1, *MAR1[2]++
; MR1 = Y2, MAR2 += 2
See also
MMACF32
|| MMOV32
MMOV32
MR3, MR2, MR2, MR0, MR1 ; MR3 = A + B, MR2 = C = X2 * Y2
MR0, *MAR0[2]++
; In parallel MR0 = X3
MR1, *MAR1[2]++
; MR1 = Y3
MMACF32
|| MMOV32
MMOV32
MMPYF32
|| MADDF32
MADDF32
MMOV32
MR3, MR2, MR2, MR0, MR1 ; MR3 = (A + B) + C, MR2 = D = X3 * Y3
MR0, *MAR0
; In parallel MR0 = X4
MR1, *MAR1
; MR1 = Y4
MR2, MR0, MR1
; MR2 = E = X4 * Y4
MR3, MR3, MR2
; in parallel MR3 = (A + B + C) + D
MR3, MR3, MR2
; MR3 = (A + B + C + D) + E
@_Result, MR3
; Store the result MSTOP ; end of task
MMOV32 mem32, MSTF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
629
Instruction Set
www.ti.com
MMOV32 mem32, MSTF Move 32-Bit MSTF Register to Memory
Operands
MSTF
floating-point status register
mem32
32-bit destination memory
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0111 0100 addr
Description
Copy the CLA's floating-point status register, MSTF, to memory.
[mem32] = MSTF;
This instruction does not modify flags in the MSTF register:
Flags
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction.
Example
See also
630
MMOV32 mem32, MRa
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV32 MRa, mem32 {, CNDF} Conditional 32-Bit Move
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
mem32
32-bit memory location accessed using direct or indirect addressing
CNDF
optional condition.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 00cn dfaa addr
Description
If the condition is true, then move the 32-bit value referenced by mem32 to the floatingpoint register indicated by MRa.
if (CNDF == TRUE) MRa = [mem32];
CNDF is one of the following conditions:
Encode
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(1)
(2)
Flags
(1)
(2)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
if(CNDF == UNCF)
{
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; }
}
else No flags modified;
Pipeline
This is a single-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
631
Instruction Set
Example
See also
632
www.ti.com
; Given A, B, X, M1 and M2 are
; numbers
;
; if(A > B) calculate Y = X*M1
; if(A < B) calculate Y = X*M2
;
_Cla1Task5:
MMOV32
MR0, @_A
MMOV32
MR1, @_B
MCMPF32
MR0, MRB
MMOV32
MR2, @_M1, EQ ;
;
MMOV32
MR2, @_M2, NEQ ;
;
MMOV32
MR3, @_X
MMPYF32
MR3, MR2, MR3 ;
MMOV32
@_Y, MR3
;
MSTOP
;
32-bit floating-point
if A > B, MR2 = M1
Y = M1*X
if A < B, MR2 = M2
Y = M2*X
Calculate Y
Store Y
end of task
MMOV32 MRa, MRb {, CNDF}
MMOVD32 MRa, mem32
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV32 MRa, MRb {, CNDF} Conditional 32-Bit Move
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
CNDF
optional condition.
Opcode
LSW: 0000 0000 cndf bbaa
MSW: 0111 1010 1100 0000
Description
If the condition is true, then move the 32-bit value in MRb to the floating-point register
indicated by MRa.
if (CNDF == TRUE) MRa = MRb;
CNDF is one of the following conditions:
Encode
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(3)
(4)
Flags
(3)
(4)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF, and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
if(CNDF == UNCF)
{
NF = MRa(31); ZF = 0;
if(MRa(30:23) == 0) {ZF = 1; NF = 0;}
}
else No flags modified;
Pipeline
This is a single-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
633
Instruction Set
Example
See also
634
www.ti.com
; Given: X = 8.0
;
Y = 7.0
;
A = 2.0
;
B = 5.0
; _ClaTask1
MMOV32
MR3,
MMOV32
MR0,
MMAXF32 MR3,
MMOV32
MR1,
MMOV32
MR1,
MMOV32
MR2,
MMOV32
MR2,
MSTOP
@_X
@_Y
MR0
@_A,
@_B,
MR1,
MR0,
GT
LT
GT
LT
;
;
;
;
;
;
;
MR3 = X = 8.0
MR0 = Y = 7.0
ZF = 0, NF = 0,
true, MR1 = A =
false, does not
true, MR2 = MR1
false, does not
MR3 = 8.0
2.0
load MR1
= 2.0
load MR2
MMOV32 MRa, mem32 {,CNDF}
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOV32 MSTF, mem32 Move 32-Bit Value from Memory to the MSTF Register
Operands
MSTF
CLA status register
mem32
32-bit source memory location
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0111 0000 addr
Description
Move from memory to the CLA's status register MSTF. This instruction is most useful
when nesting function calls (via MCCNDD).
MSTF = [mem32];
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
Yes
Yes
Yes
Yes
Yes
Loading the status register will overwrite all flags and the RPC field. The MEALLOW field
is not affected.
Pipeline
This is a single-cycle instruction.
Example
See also
MMOV32 mem32, MSTF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
635
Instruction Set
www.ti.com
MMOVD32 MRa, mem32 Move 32-Bit Value from Memory with Data Copy
Operands
MRa
CLA floating-point register (MR0 to MR3)
mem32
32-bit memory location accessed using direct or indirect addressing
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0100 00aa addr
Description
Move the 32-bit value referenced by mem32 to the floating-point register indicated by
MRa.
MRa = [mem32];
[mem32+2] = [mem32];
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0){ ZF = 1; NF = 0; }
Pipeline
This is a single-cycle instruction.
Example
; sum = X0*B0 + X1*B1 + X2*B2 + Y1*A1 + Y2*B2
;
;
X2 = X1
;
X1 = X0
;
Y2 = Y1
;
Y1 = sum
;
_Cla1Task2:
MMOV32 MR0, @_B2
; MR0 = B2
MMOV32 MR1, @_X2
; MR1 = X2
MMPYF32 MR2, MR1, MR0 ; MR2 = X2*B2
|| MMOV32 MR0, @_B1
; MR0 = B1
MMOVD32 MR1, @_X1
; MR1 = X1, X2 = X1
MMPYF32 MR3, MR1, MR0 ; MR3 = X1*B1
|| MMOV32 MR0, @_B0
; MR0 = B0
MMOVD32 MR1, @_X0
; MR1 = X0, X1 = X0
; MR3 = X1*B1 + X2*B2, MR2 = X0*B0
; MR0 = A2
MMACF32 MR3, MR2, MR2, MR1, MR0
|| MMOV32 MR0, @_A2
MMOV32 MR1, @_Y2
; MR1 = Y2
; MR3 = X0*B0 + X1*B1 + X2*B2, MR2 = Y2*A2
; MR0 = A1
MMACF32 MR3, MR2, MR2, MR1, MR0
|| MMOV32 MR0, @_A1
||
See also
636
MMOVD32 MR1,@_Y1
MADDF32 MR3, MR3, MR2
MMPYF32 MR2, MR1, MR0
MADDF32 MR3, MR3, MR2
MMOV32 @_Y1, MR3
MSTOP
;
;
;
;
;
;
MR1 = Y1, Y2 = Y1
MR3 = Y2*A2 + X0*B0 + X1*B1 + X2*B2
MR2 = Y1*A1
MR3 = Y1*A1 + Y2*A2 + X0*B0 + X1*B1 + X2*B2
Y1 = MR3
end of task
MMOV32 MRa, mem32 {,CNDF}
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOVF32 MRa, #32F Load the 32-Bits of a 32-Bit Floating-Point Register
Operands
This instruction is an alias for MMOVIZ and MMOVXI instructions. The second operand
is translated by the assembler such that the instruction becomes:
MMOVIZ MRa, #16FHiHex MMOVXI MRa, #16FLoHex
MRa
CLA floating-point destination register (MR0 to MR3)
#32F
immediate float value represented in floating-point representation
Opcode
LSW:
MSW:
LSW:
MSW:
Description
Note: This instruction accepts the immediate operand only in floating-point
representation. To specify the immediate value as a hex value (IEEE 32-bit floatingpoint format) use the MOVI32 MRa, #32FHex instruction.
IIII
0111
IIII
0111
IIII
1000
IIII
1000
IIII
0100
IIII
1000
IIII (opcode of MMOVIZ MRa, #16FHiHex)
00aa
IIII (opcode of MMOVXI MRa, #16FLoHex)
00aa
Load the 32-bits of MRa with the immediate float value represented by #32F.
#32F is a float value represented in floating-point representation. The assembler will only
accept a float value represented in floating-point representation. That is, 3.0 can only be
represented as #3.0. #0x40400000 will result in an error.
MRa = #32F;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
Depending on #32FH, this instruction takes one or two cycles. If all of the lower 16-bits
of the IEEE 32-bit floating-point format of #32F are zeros, then the assembler will
convert MMOVF32 into only MMOVIZ instruction. If the lower 16-bits of the IEEE 32-bit
floating-point format of #32F are not zeros, then the assembler will convert MMOVF32
into MMOVIZ and MMOVXI instructions.
Example
MMOVF32 MR1, #3.0
; MR1 = 3.0 (0x40400000)
; Assembler converts this instruction as
; MMOVIZ MR1, #0x4040
MMOVF32 MR2, #0.0
; MR2 = 0.0 (0x00000000)
; Assembler converts this instruction as
; MMOVIZ MR2, #0x0
MMOVF32 MR3, #12.265 ;
;
;
;
See also
MR3 = 12.625 (0x41443D71)
Assembler converts this instruction as
MMOVIZ MR3, #0x4144
MMOVXI MR3, #0x3D71
MMOVIZ MRa, #16FHi
MMOVXI MRa, #16FLoHex
MMOVI32 MRa, #32FHex
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
637
Instruction Set
www.ti.com
MMOVI16 MARx, #16I Load the Auxiliary Register with the 16-Bit Immediate Value
Operands
Opcode
MARx
Auxiliary register MAR0 or MAR1
#16I
16-bit immediate value
LSW: IIII IIII IIII IIII (opcode of MMOVI16 MAR0, #16I)
MSW: 0111 1111 1100 0000
LSW: IIII IIII IIII IIII (opcode of MMOVI16 MAR1, #16I)
MSW: 0111 1111 1110 0000
Description
Load the auxiliary register, MAR0 or MAR1, with a 16-bit immediate value. Refer to the
pipeline section for important information regarding this instruction.
MARx = #16I;
This instruction does not modify flags in the MSTF register:
Flags
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction. The immediate load of MAR0 or MAR1 will occur in the
EXE phase of the pipeline. Any post increment of MAR0 or MAR1 using indirect
addressing will occur in the D2 phase of the pipeline. Therefore the following applies
when loading the auxiliary registers:
• I1 and I2
The two instructions following MMOVI16 will use MAR0/MAR1 before the update
occurs. Thus these two instructions will use the old value of MAR0 or MAR1.
• I3
Loading of an auxiliary register occurs in the EXE phase while updates due to postincrement addressing occur in the D2 phase. Thus I3 cannot use the auxiliary
register or there will be a conflict. In the case of a conflict, the update due to addressmode post increment will win snd the auxiliary register will not be updated with #_X.
• I4
Starting with the 4th instruction MAR0 or MAR1 will be the new value loaded with
MMOVI16.
;
Assume MAR0 is 50 and #_X is 20
MMOVI16 MAR0, #_X
....
;
;
;
;
;
I1
I2
I3
I4
I5
; Load MAR0 with address
Will use the old value of
Will use the old value of
Cannot use MAR0
Will use the new value of
of X (20)
MAR0 (50)
MAR0 (50)
MAR0 (20)
Table 9-30. Pipeline Activity For MMOVI16 MAR0/MAR1, #16I
638
Instruction
F1
MMOVI16 MAR0, #_X
MMOVI16
I1
I1
MMOVI16
I2
I2
I1
MMOVI16
I3
I3
I2
I1
MMOVI16
I4
I4
I3
I2
I1
MMOVI16
I5
I5
I4
I3
I2
I1
MMOVI16
I6
I6
I5
I4
I3
I2
I1
Control Law Accelerator (CLA)
F2
D1
D2
R1
R2
E
W
MMOVI
16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOVI32 MRa, #32FHex Load the 32-Bits of a 32-Bit Floating-Point Register with the Immediate
Operands
MRa
floating-point register (MR0 to MR3)
#32FHex
A 32-bit immediate value that represents an IEEE 32-bit floating-point value.
This instruction is an alias for MMOVIZ and MMOVXI instructions. The second operand
is translated by the assembler such that the instruction becomes:
MMOVIZ MRa, #16FHiHex
MMOVXI MRa, #16FLoHex
Opcode
LSW: IIII IIII IIII IIII (opcode of MMOVIZ MRa, #16FHiHex)
MSW: 0111 1000 0100 00aa
LSW: IIII IIII IIII IIII (opcode of MMOVXI MRa, #16FLoHex)
MSW: 0111 1000 1000 00aa
Description
Note: This instruction only accepts a hex value as the immediate operand. To specify the
immediate value with a floating-point representation use the MMOVF32 MRa, #32F
instruction.
Load the 32-bits of MRa with the immediate 32-bit hex value represented by #32Fhex.
#32Fhex is a 32-bit immediate hex value that represents the IEEE 32-bit floating-point
value of a floating-point number. The assembler will only accept a hex immediate value.
That is, 3.0 can only be represented as #0x40400000. #3.0 will result in an error.
MRa = #32FHex;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
Depending on #32FHex, this instruction takes one or two cycles. If all of the lower 16bits of #32FHex are zeros, then assembler will convert MOVI32 to the MMOVIZ
instruction. If the lower 16-bits of #32FHex are not zeros, then assembler will convert
MOVI32 to a MMOVIZ and a MMOVXI instruction.
Example
MOVI32
See also
MR1, #0x40400000 ; MR1 = 0x40400000
; Assembler converts this instruction as
; MMOVIZ MR1, #0x4040
MOVI32
MR2, #0x00000000
; MR2 = 0x00000000
; Assembler converts this instruction as
; MMOVIZ MR2, #0x0
MOVI32
MR3, #0x40004001
;
;
;
;
MR3 = 0x40004001
Assembler converts this instruction as
MMOVIZ MR3, #0x4000
MMOVXI MR3, #0x4001
MOVI32
MR0, #0x00004040
;
;
;
;
MR0 = 0x00004040
Assembler converts this instruction as
MMOVIZ MR0, #0x0000
MMOVXI MR0, #0x4040
MMOVIZ MRa, #16FHi
MMOVXI MRa, #16FLoHex
MMOVF32 MRa, #32F
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
639
Instruction Set
www.ti.com
MMOVIZ MRa, #16FHi Load the Upper 16-Bits of a 32-Bit Floating-Point Register
Operands
MRa
floating-point register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1000 0100 00aa
Description
Load the upper 16-bits of MRa with the immediate value #16FHi and clear the low 16bits of MRa.
#16FHiHex is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32bit floating-point value. The low 16-bits of the mantissa are assumed to be all 0. The
assembler will only accept a decimal or hex immediate value. That is, -1.5 can be
represented as #-1.5 or #0xBFC0.
By itself, MMOVIZ is useful for loading a floating-point register with a constant in which
the lowest 16-bits of the mantissa are 0. Some examples are 2.0 (0x40000000), 4.0
(0x40800000), 0.5 (0x3F000000), and -1.5 (0xBFC00000). If a constant requires all 32bits of a floating-point register to be iniitalized, then use MMOVIZ along with the
MMOVXI instruction.
MRa(31:16) = #16FHi;
MRa(15:0) = 0;
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; Load MR0 and MR1 with -1.5 (0xBFC00000)
MMOVIZ
MR0, #0xBFC0
; MR0 = 0xBFC00000 (1.5)
MMOVIZ
MR1, #-1.5
; MR1 = -1.5 (0xBFC00000)
; Load MR2 with pi = 3.141593 (0x40490FDB)
MMOVIZ
MR2, #0x4049
; MR2 = 0x40490000
MMOVXI
MR2, #0x0FDB
; MR2 = 0x40490FDB
See also
640
MMOVF32 MRa, #32F
MMOVI32 MRa, #32FHex
MMOVXI MRa, #16FLoHex
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMOVZ16 MRa, mem16 Load MRx With 16-bit Value
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
mem16
16-bit source memory location
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0101 10aa addr
Description
Move the 16-bit value referenced by mem16 to the floating-point register indicated by
MRa.
MRa(31:16) = 0;
MRa(15:0) = [mem16];
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = 0;
if (MRa(31:0)== 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
641
Instruction Set
www.ti.com
MMOVXI MRa, #16FLoHex Move Immediate to the Low 16-Bits of a Floating-Point Register
Operands
MRa
CLA floating-point register (MR0 to MR3)
#16FLoHex
A 16-bit immediate hex value that represents the lower 16-bits of an IEEE 32-bit
floating-point value. The upper 16-bits will not be modified.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1000 1000 00aa
Description
Load the low 16-bits of MRa with the immediate value #16FLoHex. #16FLoHex
represents the lower 16-bits of an IEEE 32-bit floating-point value. The upper 16-bits of
MRa will not be modified. MMOVXI can be combined with the MMOVIZ instruction to
initialize all 32-bits of a MRa register.
MRa(15:0) = #16FLoHex;
MRa(31:16) = Unchanged;
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; Load MR0 with pi = 3.141593 (0x40490FDB)
MMOVIZ
MR0,#0x4049
; MR0 = 0x40490000
MMOVXI
MR0,#0x0FDB
; MR0 = 0x40490FDB
See also
MMOVIZ MRa, #16FHi
642
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMPYF32 MRa, MRb, MRc 32-Bit Floating-Point Multiply
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 0000 0000
Description
Multiply the contents of two floating-point registers.
MRa = MRb * MRc;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Calculate Num/Den using a Newton-Raphson algorithum for 1/Den
; Ye = Estimate(1/X)
; Ye = Ye*(2.0 - Ye*X)
; Ye = Ye*(2.0 - Ye*X)
;
_Cla1Task1:
MMOV32
MR1, @_Den
; MR1 = Den
MEINVF32
MR2, MR1
; MR2 = Ye = Estimate(1/Den)
MMPYF32
MR3, MR2, MR1
; MR3 = Ye*Den
MSUBF32
MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32
MR2, MR2, MR3
; MR2 = Ye = Ye*(2.0 - Ye*Den)
MMPYF32
MR3, MR2, MR1
; MR3 = Ye*Den
|| MMOV32
MR0, @_Num
; MR0 = Num
MSUBF32
MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32
MR2, MR2, MR3
; MR2 = Ye = Ye*(2.0 - Ye*Den)
|| MMOV32
MR1, @_Den
; Reload Den To Set Sign
MNEGF32
MR0, MR0, EQ
; if(Den == 0.0) Change Sign Of Num
MMPYF32
MR0, MR2, MR0
; MR0 = Y = Ye*Num
MMOV32
@_Dest, MR0
; Store result
MSTOP
; end of task
See also
MMPYF32 MRa, #16FHi, MRb
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
MMPYF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MMPYF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MSUBF32 MRd, MRe, MRf
MMACF32 MR3, MR2, MRd, MRe, MRf || MMOV32 MRa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
643
Instruction Set
www.ti.com
MMPYF32 MRa, #16FHi, MRb 32-Bit Floating-Point Multiply
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 0111 1000 baaa
Description
Multiply MRb with the floating-point value represented by the immediate operand. Store
the result of the addition in MRa.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
MRa = MRb * #16FHi:0;
This instruction can also be written as MMPYF32 MRa, MRb, #16FHi.
This instruction modifies the following flags in the MSTF register:.
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example 1
; Same as example 2 but #16FHi
MMOVIZ
MR3, #2.0
;
MMPYF32
MR0, #3.0, MR3 ;
MMOV32
@_X, MR0
;
Example 2
; Same as example 1 but #16FHi is
MMOVIZ
MR3, #2.0
;
MMPYF32
MR0, #0x4040, MR3 ;
MMOV32
@_X, MR0
;
644
Control Law Accelerator (CLA)
is represented in float
MR3 = 2.0 (0x40000000)
MR0 = 3.0 * MR3 = 6.0 (0x40C00000)
Save the result in variable X
represented in Hex
MR3 = 2.0 (0x40000000)
MR0 = 0x4040 * MR3 = 6.0 (0x40C00000)
Save the result in variable X
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 3
; Given X, M and B are IQ24 numbers:
; X = IQ24(+2.5) = 0x02800000
; M = IQ24(+1.5) = 0x01800000
; B = IQ24(-0.5) = 0xFF800000
;
; Calculate Y = X * M + B
;
;
_Cla1Task2:
;
; Convert M, X and B from IQ24 to float
MI32TOF32
MR0, @_M
; MR0 = 0x4BC00000
MI32TOF32
MR1, @_X
; MR1 = 0x4C200000
MI32TOF32
MR2, @_B
; MR2 = 0xCB000000
MMPYF32
MR0, MR0, #0x3380 ; M = 1/(1*2^24) * iqm = 1.5 (0x3FC00000)
MMPYF32
MR1, MR1, #0x3380 ; X = 1/(1*2^24) * iqx = 2.5 (0x40200000)
MMPYF32
MR2, MR2, #0x3380 ; B = 1/(1*2^24) * iqb = -.5 (0xBF000000)
MMPYF32
MR3, MR0, MR1
; M*X
MADDF32
MR2, MR2, MR3
; Y=MX+B = 3.25 (0x40500000)
; Convert Y from float32 to IQ24
MMPYF32
MR2, MR2, #0x4B80 ; Y * 1*2^24
MF32TOI32
MR2, MR2
; IQ24(Y) = 0x03400000
MMOV32 @_Y, MR2
; store result
MSTOP
; end of task
See also
MMPYF32 MRa, MRb, #16FHi
MMPYF32 MRa, MRb, MRc
MMPYF32 MRa, MRb, MRc || MADDF32 MRd, MRe, MRf
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
645
Instruction Set
www.ti.com
MMPYF32 MRa, MRb, #16FHi 32-Bit Floating-Point Multiply
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 0111 1000 baaa
Description
Multiply MRb with the floating-point value represented by the immediate operand. Store
the result of the addition in MRa.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
MRa = MRb * #16FHi:0;
This instruction can also be writen as MMPYF32 MRa, #16FHi, MRb.
This instruction modifies the following flags in the MSTF register:.
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example 1
;Same as example 2
MMOVIZ
MR3,
MMPYF32
MR0,
MMOV32
@_X,
Example 2
;Same as above example but #16FHi is represented in Hex
MMOVIZ
MR3, #2.0
; MR3 = 2.0 (0x40000000)
MMPYF32
MR0, MR3, #0x4040 ; MR0 = MR3 * 0x4040 = 6.0 (0x40C00000)
MMOV32
@_X, MR0
; Save the result in variable X
646
Control Law Accelerator (CLA)
but #16FHi
#2.0
MR3, #3.0
MR0
is represented in float
; MR3 = 2.0 (0x40000000)
; MR0 = MR3 * 3.0 = 6.0 (0x40C00000)
; Save the result in variable X
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 3
; Given X, M and B are IQ24 numbers:
; X = IQ24(+2.5) = 0x02800000
; M = IQ24(+1.5) = 0x01800000
; B = IQ24(-0.5) = 0xFF800000
;
; Calculate Y = X * M + B
;
_Cla1Task2:
;
; Convert M, X and B from IQ24 to float
MI32TOF32
MR0, @_M
; MR0 = 0x4BC00000
MI32TOF32
MR1, @_X
; MR1 = 0x4C200000
MI32TOF32
MR2, @_B
; MR2 = 0xCB000000
MMPYF32
MR0, #0x3380, MR0 ; M = 1/(1*2^24) * iqm = 1.5 (0x3FC00000)
MMPYF32
MR1, #0x3380, MR1 ; X = 1/(1*2^24) * iqx = 2.5 (0x40200000)
MMPYF32
MR2, #0x3380, MR2 ; B = 1/(1*2^24) * iqb = -.5 (0xBF000000)
MMPYF32
MR3, MR0, MR1
; M*X
MADDF32
MR2, MR2, MR3
; Y=MX+B = 3.25 (0x40500000)
; Convert Y from
MMPYF32
MF32TOI32
MMOV32
MSTOP
See also
float32 to IQ24
MR2, #0x4B80, MR2 ; Y * 1*2^24
MR2, MR2
; IQ24(Y) = 0x03400000
@_Y, MR2
; store result
; end of task
MMPYF32 MRa, #16FHi, MRb
MMPYF32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
647
Instruction Set
www.ti.com
MMPYF32 MRa, MRb, MRc||MADDF32 MRd, MRe, MRf 32-Bit Floating-Point Multiply with Parallel
Add
Operands
MRa
CLA floating-point destination register for MMPYF32 (MR0 to MR3)
MRa cannot be the same register as MRd
MRb
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRc
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRd
CLA floating-point destination register for MADDF32 (MR0 to MR3)
MRd cannot be the same register as MRa
MRe
CLA floating-point source register for MADDF32 (MR0 to MR3)
MRf
CLA floating-point source register for MADDF32 (MR0 to MR3)
Opcode
LSW: 0000 ffee ddcc bbaa
MSW: 0111 1010 0000 0000
Description
Multiply the contents of two floating-point registers with parallel addition of two registers.
MRa = MRb * MRc;
MRd = MRe + MRf;
Restrictions
The destination register for the MMPYF32 and the MADDF32 must be unique. That is,
MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 or MADDF32 generates an underflow condition.
• LVF = 1 if MMPYF32 or MADDF32 generates an overflow condition.
Pipeline
648
Both MMPYF32 and MADDF32 complete in a single cycle.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example
; Perform 5 multiply and accumulate operations:
;
; X and Y are 32-bit floating point arrays
;
; 1st multiply: A = X0 * Y0
; 2nd multiply: B = X1 * Y1
; 3rd multiply: C = X2 * Y2
; 4th multiply: D = X3 * Y3
; 5th multiply: E = X3 * Y3
;
; Result = A + B + C + D + E
;
_Cla1Task1:
MMOVI16
MAR0, #_X
; MAR0 points to X array
MMOVI16
MAR1, #_Y
; MAR1 points to Y array
MNOP
; Delay for MAR0, MAR1 load
MNOP
; Delay for MAR0, MAR1 load
; <-- MAR0 valid
MMOV32
MR0, *MAR0[2]++
; MR0 = X0, MAR0 += 2
; <-- MAR1 valid
MMOV32
MR1, *MAR1[2]++
; MR1 = Y0, MAR1 += 2
||
MMPYF32
MMOV32
MMOV32
MR2, MR0, MR1
MR0, *MAR0[2]++
MR1, *MAR1[2]++
; MR2 = A = X0 * Y0
; In parallel MR0 = X1, MAR0 += 2
; MR1 = Y1, MAR1 += 2
||
MMPYF32
MMOV32
MMOV32
MR3, MR0, MR1
MR0, *MAR0[2]++
MR1, *MAR1[2]++
; MR3 = B = X1 * Y1
; In parallel MR0 = X2, MAR0 += 2
; MR1 = Y2, MAR2 += 2
||
MMACF32
MMOV32
MMOV32
MR3, MR2, MR2, MR0, MR1 ; MR3 = A + B, MR2 = C = X2 * Y2
MR0, *MAR0[2]++
; In parallel MR0 = X3
MR1, *MAR1[2]++
; MR1 = Y3
||
MMACF32
MMOV32
MMOV32
MR3, MR2, MR2, MR0, MR1 ; MR3 = (A + B) + C, MR2 = D = X3 * Y3
MR0, *MAR0
; In parallel MR0 = X4
MR1, *MAR1
; MR1 = Y4
MMPYF32
MADDF32
MR2, MR0, MR1
MR3, MR3, MR2
; MR2 = E = X4 * Y4
; in parallel MR3 = (A + B + C) + D
MADDF32
MMOV32
MSTOP
MR3, MR3, MR2
@_Result, MR3
; MR3 = (A + B + C + D) + E
; Store the result
; end of task
||
See also
MMACF32 MR3, MR2, MRd, MRe, MRf || MMOV32 MRa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
649
Instruction Set
www.ti.com
MMPYF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 32-Bit Floating-Point Multiply with Parallel Move
Operands
MRd
CLA floating-point destination register for the MMPYF32 (MR0 to MR3)
MRd cannot be the same register as MRa
MRe
CLA floating-point source register for the MMPYF32 (MR0 to MR3)
MRf
CLA floating-point source register for the MMPYF32 (MR0 to MR3)
MRa
CLA floating-point destination register for the MMOV32 (MR0 to MR3)
MRa cannot be the same register as MRd
mem32
32-bit memory location accessed using direct or indirect addressing. This will be the
source of the MMOV32.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0000 ffee ddaa addr
Description
Multiply the contents of two floating-point registers and load another.
MRd = MRe * MRf;
MRa = [mem32];
Restrictions
The destination register for the MMPYF32 and the MMOV32 must be unique. That is,
MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
The MMOV32 Instruction will set the NF and ZF flags as follows:
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; }
Pipeline
Both MMPYF32 and MMOV32 complete in a single cycle.
Example 1
; Given M1, X1 and B1 are 32-bit
; Calculate Y1 = M1*X1+B1
;
_Cla1Task1:
MMOV32
MR0, @M1
;
MMOV32
MR1, @X1
;
MMPYF32
MR1, MR1, MR0
;
|| MMOV32
MR0, @B1
;
MADDF32
MR1, MR1, MR0
;
MMOV32
@Y1, MR1
;
MSTOP
;
650
Control Law Accelerator (CLA)
floating point
Load MR0 with M1
Load MR1 with X1
Multiply M1*X1
and in parallel load MR0 with B1
Add M*X1 to B1 and store in MR1
Store the result
end of task
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 2
; Given A, B and C are 32-bit floating-point numbers
; Calculate Y2 = (A * B)
;
Y3 = (A * B) * C
;
_Cla1Task2:
MMOV32
MR0, @A
; Load MR0 with A
MMOV32
MR1, @B
; Load MR1 with B
MMPYF32
MR1, MR1, MR0 ; Multiply A*B
|| MMOV32
MR0, @C
; and in parallel load MR0 with C
MMPYF32
MR1, MR1, MR0 ; Multiply (A*B) by C
|| MMOV32
@Y2, MR1
; and in parallel store A*B
MMOV32
@Y3, MR1
; Store the result
MSTOP
; end of task
See also
MMPYF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMACF32 MR3, MR2, MRd, MRe, MRf || MMOV32 MRa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
651
Instruction Set
www.ti.com
MMPYF32 MRd, MRe, MRf ||MMOV32 mem32, MRa 32-Bit Floating-Point Multiply with Parallel Move
Operands
MRd
CLA floating-point destination register for the MMPYF32 (MR0 to MR3)
MRe
CLA floating-point source register for the MMPYF32 (MR0 to MR3)
MRf
CLA floating-point source register for the MMPYF32 (MR0 to MR3)
mem32
32-bit memory location accessed using direct or indirect addressing. This will be the
destination of the MMOV32.
MRa
CLA floating-point source register for the MMOV32 (MR0 to MR3)
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0100 ffee ddaa addr
Description
Multiply the contents of two floating-point registers and move from memory to register.
MRd = MRe * MRf;
[mem32] = MRa;
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
Pipeline
MMPYF32 and MMOV32 both complete in a single cycle.
Example
; Given A, B and C are 32-bit
; Calculate Y2 = (A * B)
;
Y3 = (A * B) * C
;
_Cla1Task2:
MMOV32
MR0, @A
MMOV32
MR1, @B
MMPYF32
MR1, MR1, MR0
||
MMOV32
MR0, @C
MMPYF32
MR1, MR1, MR0
||
MMOV32
@Y2, MR1
MMOV32
@Y3, MR1
MSTOP
See also
652
floating-point numbers
;
;
;
;
;
;
;
;
Load MR0 with A
Load MR1 with B
Multiply A*B
and in parallel load MR0 with C
Multiply (A*B) by C
and in parallel store A*B
Store the result
end of task
MMPYF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MMACF32 MR3, MR2, MRd, MRe, MRf || MMOV32 MRa, mem32
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MMPYF32 MRa, MRb, MRc ||MSUBF32 MRd, MRe, MRf 32-Bit Floating-Point Multiply with Parallel
Subtract
Operands
MRa
CLA floating-point destination register for MMPYF32 (MR0 to MR3)
MRa cannot be the same register as MRd
MRb
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRc
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRd
CLA floating-point destination register for MSUBF32 (MR0 to MR3)
MRd cannot be the same register as MRa
MRe
CLA floating-point source register for MSUBF32 (MR0 to MR3)
MRf
CLA floating-point source register for MSUBF32 (MR0 to MR3)
Opcode
LSW: 0000 ffee ddcc bbaa
MSW: 0111 1010 0100 0000
Description
Multiply the contents of two floating-point registers with parallel subtraction of two
registers.
MRa = MRb * MRc;
MRd = MRe - MRf;
Restrictions
The destination register for the MMPYF32 and the MSUBF32 must be unique. That is,
MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 or MSUBF32 generates an underflow condition.
• LVF = 1 if MMPYF32 or MSUBF32 generates an overflow condition.
Pipeline
MMPYF32 and MSUBF32 both complete in a single cycle.
Example
; Given A, B and C are 32-bit
; Calculate Y2 = (A * B)
;
Y3 = (A - B)
;
_Cla1Task2:
MMOV32
MR0, @A
MMOV32
MR1, @B
MMPYF32 MR2, MR0, MR1
||
MSUBF32 MR3, MR0, MR1
MMOV32
@Y2, MR2
MMOV32
@Y3, MR3
MSTOP
See also
floating-point numbers
;
;
;
;
;
;
;
Load MR0 with A
Load MR1 with B
Multiply (A*B)
and in parallel Sub (A-B)
Store A*B
Store A-B
end of task
MSUBF32 MRa, MRb, MRc
MSUBF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MSUBF32 MRd, MRe, MRf || MMOV32 mem32, MRa
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
653
Instruction Set
www.ti.com
MNEGF32 MRa, MRb{, CNDF} Conditional Negation
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
CNDF
condition tested
Opcode
LSW: 0000 0000 cndf bbaa
MSW: 0111 1010 1000 0000
Description
if (CNDF == true) {MRa = - MRb; }
else {MRa = MRb; }
CNDF is one of the following conditions:
Encode
(5)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(5)
(6)
(6)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF, and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction modifies the following flags in the MSTF register:
Flags
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
This is a single-cycle instruction.
Example 1
; Show the basic operation of
;
MMOVIZ
MR0, #5.0
MMOVIZ
MR1, #4.0
MMOVIZ
MR2, #-1.5
MMPYF32
MR3, MR1, MR2
MMPYF32
MR0, MR0, MR1
MMOVIZ
MR1, #0.0
MCMPF32
MR3, MR1
MNEGF32
MR3, MR3, LT
MCMPF32
MR0, MR1
MNEGF32
MR0, MR0, GEQ
654
Control Law Accelerator (CLA)
MNEGF32
;
;
;
;
;
MR0
MR1
MR2
MR3
MR0
;
;
;
;
NF
if
NF
if
=
=
=
=
=
5.0 (0x40A00000)
4.0 (0x40800000)
-1.5 (0xBFC00000)
-6.0
20.0
= 1
NF = 1, MR3 = 6.0
= 0
NF = 0, MR0 = -20.0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example 2
; Calculate Num/Den using a Newton-Raphson algorithum for 1/Den
; Ye = Estimate(1/X)
; Ye = Ye*(2.0 - Ye*X)
; Ye = Ye*(2.0 - Ye*X)
;
_Cla1Task1:
MMOV32
MR1, @_Den
; MR1 = Den
MEINVF32 MR2, MR1
; MR2 = Ye = Estimate(1/Den)
MMPYF32
MR3, MR2, MR1
; MR3 = Ye*Den
MSUBF32
MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32
MR2, MR2, MR3
; MR2 = Ye = Ye*(2.0 - Ye*Den)
MMPYF32
MR3, MR2, MR1
; MR3 = Ye*Den
|| MMOV32
MR0, @_Num
; MR0 = Num
MSUBF32
MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den
MMPYF32
MR2, MR2, MR3
; MR2 = Ye = Ye*(2.0 - Ye*Den)
|| MMOV32
MR1, @_Den
; Reload Den To Set Sign
MNEGF32
MR0, MR0, EQ
; if(Den == 0.0) Change Sign Of Num
MMPYF32
MR0, MR2, MR0
; MR0 = Y = Ye*Num
MMOV32
@_Dest, MR0
; Store result
MSTOP
; end of task
See also
MABSF32 MRa, MRb
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
655
Instruction Set
MNOP
www.ti.com
No Operation
Operands
none
This instruction does not have any operands
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1111 1010 0000
Description
Do nothing. This instruction is used to fill required pipeline delay slots when other
instructions are not available to fill the slots.
Flags
This instruction does not modify flags in the MSTF register.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; X is an array of 32-bit floating-point values
; Find the maximum value in an array X
; and store it in Result
;
_Cla1Task1:
MMOVI16
MAR1,#_X
; Start address
MUI16TOF32 MR0, @_len
; Length of the array
MNOP
; delay for MAR1 load
MNOP
; delay for MAR1 load
MMOV32
MR1, *MAR1[2]++ ; MR1 = X0
LOOP
MMOV32
MR2, *MAR1[2]++ ; MR2 = next element
MMAXF32
MR1, MR2
; MR1 = MAX(MR1, MR2)
MADDF32
MR0, MR0, #-1.0 ; Decrememt the counter
MCMPF32
MR0 #0.0
; Set/clear flags for MBCNDD
MNOP
; Too late to affect MBCNDD
MNOP
; Too late to affect MBCNDD
MNOP
; Too late to affect MBCNDD
MBCNDD
LOOP, NEQ
; Branch if not equal to zero
MMOV32
@_Result, MR1
; Always executed
MNOP
; Pad to seperate MBCNDD and MSTOP
MNOP
; Pad to seperate MBCNDD and MSTOP
MSTOP
; End of task
See also
656
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MOR32 MRa, MRb, MRc Bitwise OR
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 1000 0000
Description
Bitwise OR of MRb with MRc.
MARa(31:0) = MARb(31:0) OR MRc(31:0);
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVXI
MR0, #0x5555 ; MR0 = 0x5555AAAA
MR0, #0xAAAA
MMOVIZ
MMOVXI
MR1, #0x5432 ; MR1 = 0x5432FEDC
MR1, #0xFEDC
MOR32 MR2, MR1, MR0
See also
;
;
;
;
;
;
;
;
;
0101 OR 0101 = 0101
0101 OR 0100 = 0101
0101 OR 0011 = 0111
0101 OR 0010 = 0111
1010 OR 1111 = 1111
1010 OR 1110 = 1110
1010 OR 1101 = 1111
1010 OR 1100 = 1110
MR3 = 0x5555FEFE
(5)
(5)
(7)
(7)
(F)
(E)
(F)
(E)
MAND32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
657
Instruction Set
MRCNDD {CNDF}
www.ti.com
Return Conditional Delayed
Operands
CNDF
optional condition.
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1001 1010 cndf
Description
If the specified condition is true, then the RPC field of MSTF is loaded into MPC and
fetching continues from that location. Otherwise program fetches will continue without
the return.
Please refer to the pipeline section for important information regarding this instruction.
if (CNDF == TRUE) MPC = RPC;
CNDF is one of the following conditions:
Encode
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(7)
(8)
Flags
658
(7)
(8)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction does not modify flags in the MSTF register.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Pipeline
The MRCNDD instruction by itself is a single-cycle instruction. As shown in Table 9-31,
for each return 6 instruction slots are executed; three before the return instruction (d5d7) and three after the return instruction (d8-d10). The total number of cycles for a return
taken or not taken depends on the usage of these slots. That is, the number of cycles
depends on how many slots are filled with a MNOP as well as which slots are filled. The
effective number of cycles for a return can, therefore, range from 1 to 7 cycles. The
number of cycles for a return taken may not be the same as for a return not taken.
Referring to the following code fragment and the pipeline diagrams in Table 9-31 and
Table 9-32, the instructions before and after MRCNDD have the following properties:
;
;
MCCNDD _func, NEQ
6>
7>
8>
10>
1>
2>
3>
4>
MRCNDD
NEQ
9>
10>
11>
12>
;
;
;
;
;
I1 Last instruction that can affect flags for
the MCCNDD operation
I2 Cannot be stop, branch, call or return
I3 Cannot be stop, branch, call or return
I4 Cannot be stop, branch, call or return
;
;
;
;
;
;
;
;
;
;
;
;
Call to func if not eqal to zero
Three instructions after MCCNDD are always
executed whether the call is taken or not
I5 Cannot be stop, branch, call or return
I6 Cannot be stop, branch, call or return
I7 Cannot be stop, branch, call or return
I8 The address of this instruction is saved
in the RPC field of the MSTF register.
Upon return this value is loaded into MPC
and fetching continues from this point.
I9
I10
;
;
;
;
;
;
;
;
d1 Can be any instruction
d2
d3
d4 Last instruction that can affect flags for
the MRCNDD operation
d5 Cannot be stop, branch, call or return
d6 Cannot be stop, branch, call or return
d7 Cannot be stop, branch, call or return
;
;
;
;
;
;
;
;
Return to if not equal to zero
Three instructions after MRCNDD are always
executed whether the return is taken or not
d8 Cannot be stop, branch, call or return
d9 Cannot be stop, branch, call or return
d10 Cannot be stop, branch, call or return
d11
d12
d4
– d4 is the last instruction that can effect the CNDF flags for the MRCNDD
instruction. The CNDF flags are tested in the D2 phase of the pipeline. That is, a
decision is made whether to return or not when MRCNDD is in the D2 phase.
– There are no restrictions on the type of instruction for d4.
d5, d6 and d7
– The three instructions proceeding MRCNDD can change MSTF flags but will have
no effect on whether the MRCNDD instruction makes the return or not. This is
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
659
Instruction Set
www.ti.com
•
because the flag modification will occur after the D2 phase of the MRCNDD
instruction.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
d8, d9 and d10
– The three instructions following MRCNDD are always executed irrespective of
whether the return is taken or not.
– These instructions must not be the following: MSTOP, MDEBUGSTOP,
MBCNDD, MCCNDD or MRCNDD.
Table 9-31. Pipeline Activity For MRCNDD, Return Not Taken
Instruction
F1
F2
D1
D2
R1
R2
E
d4
d4
d3
d2
d1
I7
I6
I5
d5
d5
d4
d3
d2
d1
I7
I6
d6
d6
d5
d4
d3
d2
d1
i7
d7
d7
d6
d5
d4
d3
d2
d1
MRCNDD
MRCNDD
d7
d6
d5
d4
d3
d2
d8
d8
MRCNDD
d7
d6
d5
d4
d3
d9
d9
d8
MRCNDD
d7
d6
d5
d4
d10
d10
d9
d8
MRCNDD
d7
d6
d5
d11
d11
d10
d9
d8
-
d7
d6
d12
d12
d11
d10
d9
d8
-
d7
etc....
....
d12
d11
d10
d9
d8
-
....
....
....
d12
d11
d10
d9
d8
....
....
....
....
d12
d11
d10
d9
d12
d11
d10
d12
d11
W
d12
Table 9-32. Pipeline Activity For MRCNDD, Return Taken
Instruction
F1
F2
D1
D2
R1
R2
E
d4
d4
d3
d2
d1
I7
I6
I5
d5
d5
d4
d3
d2
d1
I7
I6
d6
d6
d5
d4
d3
d2
d1
i7
d7
d7
d6
d5
d4
d3
d2
d1
MRCNDD
MRCNDD
d7
d6
d5
d4
d3
d2
d8
d8
MRCNDD
d7
d6
d5
d4
d3
d9
d9
d8
MRCNDD
d7
d6
d5
d4
d10
d10
d9
d8
MRCNDD
d7
d6
d5
I8
I8
d10
d9
d8
-
d7
d6
I9
I9
I8
d10
d9
d8
-
d7
I10
I10
I9
I8
d10
d9
d8
-
etc....
....
I10
I9
I8
d10
d9
d8
....
....
I10
I9
I8
d10
d9
....
....
I10
I9
I8
d10
I10
I9
I8
I10
I9
W
I10
660
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example
;
See also
MBCNDD #16BitDest, CNDF
MCCNDD 16BitDest, CNDF
MMOV32 mem32, MSTF
MMOV32 MSTF, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
661
Instruction Set
www.ti.com
MSETFLG FLAG, VALUE Set or Clear Selected Floating-Point Status Flags
Operands
FLAG
8 bit mask indicating which floating-point status flags to change.
VALUE
8 bit mask indicating the flag value; 0 or 1.
Opcode
LSW: FFFF FFFF VVVV VVVV
MSW: 0111 1001 1100 0000
Description
The MSETFLG instruction is used to set or clear selected floating-point status flags in
the MSTF register. The FLAG field is an 11-bit value that indicates which flags will be
changed. That is, if a FLAG bit is set to 1 it indicates that flag will be changed; all other
flags will not be modified. The bit mapping of the FLAG field is shown below:
reserved
RNDF32
TF
reserved
reserved
ZF
NF
LUF
LVF
8
7
6
5
4
3
2
1
0
The VALUE field indicates the value the flag should be set to; 0 or 1.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
Yes
Yes
Yes
Yes
Yes
Any flag can be modified by this instruction. The MEALLOW and RPC fields cannot be
modified with this instruction.
Pipeline
This is a single-cycle instruction.
Example
To make it easier and legible, the assembler accepts a FLAG=VALUE syntax for the
MSTFLG operation as shown below:
MSETFLG RNDF32=0, TF=0, NF=1; FLAG = 11000100; VALUE = 00XXX1XX;
See also
662
MMOV32 mem32, MSTF
MMOV32 MSTF, mem32
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MSTOP
Stop Task
Operands
none
This instruction does not have any operands
Opcode
LSW: 0000 0000 0000 0000
MSW: 0111 1111 1000 0000
Description
The MSTOP instruction must be placed to indicate the end of each task. In addition,
placing MSTOP in unused memory locations within the CLA program RAM can be useful
for debugging and preventing run away CLA code. When MSTOP enters the D2 phase
of the pipeline, the MIRUN flag for the task is cleared and the associated interrupt is
flagged in the PIE vector table.
There are three special cases that can occur when single-stepping a task such that the
MPC reaches the MSTOP instruction.
1. If you are single-stepping or halted in "task A" and "task B" comes in before the MPC
reaches the MSTOP, then "task B" will start if you continue to step through the
MSTOP instruction. Basically if "task B" is pending before the MPC reaches MSTOP
in "task A" then there is no issue in "task B" starting and no special action is required.
2. In this case you have single-stepped or halted in "task A" and the MPC has reached
the MSTOP with no tasks pending. If "task B" comes in at this point, it will be flagged
in the MIFR register but it may or may not start if you continue to single-step through
the MSTOP instruction of "task A". It depends on exactly when the new task comes
in. To reliably start "task B" perform a soft reset and reconfigure the MIER bits. Once
this is done, you can start single-stepping "task B".
3. Case 2 can be handled slightly differently if there is control over when "task B" comes
in (for example using the IACK instruction to start the task). In this case you have
single-stepped or halted in "task A" and the MPC has reached the MSTOP with no
tasks pending. Before forcing "task B", run free to force the CLA out of the debug
state. Once this is done you can force "task B" and continue debugging.
Restrictions
The MSTOP instruction cannot be placed 3 instructions before or after a MBCNDD,
MCCNDD or MRCNDD instruction.
Flags
This instruction does not modify flags in the MSTF register.
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction. Table 9-33 shows the pipeline behavior of the MSTOP
instruction. The MSTOP instruction cannot be placed with 3 instructions of a MBCNDD,
MCCNDD or MRCNDD instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA) 663
Instruction Set
www.ti.com
Table 9-33. Pipeline Activity For MSTOP
Instruction
F1
I1
I1
F2
D1
D2
R1
R2
E
I2
I2
I1
I3
I3
I2
I1
MSTOP
MSTOP
I3
I2
I1
I4
I4
MSTOP
I3
I2
I1
I5
I5
I4
MSTOP
I3
I2
I1
I6
I6
I5
I4
MSTOP
I3
I2
I1
New Task Arbitrated and Piroitized
-
-
-
-
-
I3
I2
New Task Arbitrated and Piroitized
-
-
-
-
-
-
I3
I1
I1
-
-
-
-
-
-
I2
I2
I1
-
-
-
-
-
I3
I3
I2
I1
-
-
-
-
I4
I4
I3
I2
I1
-
-
-
I5
I5
I4
I3
I2
I1
-
-
I6
I6
I5
I4
I3
I2
I1
-
I7
I7
I6
I5
I4
I3
I2
I1
W
etc ....
Example
See also
664
; Given A =
;
B =
;
C =
;
; Calculate
_Cla1Task3:
MMOV32
MMOV32
MMOV32
MSUB32
MSUB32
MMOV32
MSTOP
(int32)1
(int32)2
(int32)-7
Y2 = A - B - C
MR0, @_A
; MR0 = 1 (0x00000001)
MR1, @_B
; MR1 = 2 (0x00000002)
MR2, @_C
; MR2 = -7 (0xFFFFFFF9)
MR3, MR0, MR1 ; A + B
MR3, MR3, MR2 ; A + B + C = 6 (0x0000006)
@_y2, MR3
; Store y2
; End of task
MDEBUGSTOP
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MSUB32 MRa, MRb, MRc 32-Bit Integer Subtraction
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point destination register (MR0 to MR3)
MRc
CLA floating-point destination register (MR0 to MR3)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 1110 0000
Description
32-bit integer addition of MRb and MRc.
MARa(31:0) = MARb(31:0) - MRc(31:0);
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified as follows:
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
; Given A = (int32)1
;
B = (int32)2
;
C = (int32)-7
;
;
Calculate Y2 = A - B - C
;
_Cla1Task3:
MMOV32
MR0, @_A
MMOV32
MR1, @_B
MMOV32
MR2, @_C
MSUB32
MR3, MR0, MR1
MSUB32
MR3, MR3, MR2
MMOV32
@_y2, MR3
MSTOP
See also
;
;
;
;
;
;
;
MR0 = 1 (0x00000001)
MR1 = 2 (0x00000002)
MR2 = -7 (0xFFFFFFF9)
A + B
A + B + C = 6 (0x0000006)
Store y2
End of task
MADD32 MRa, MRb, MRc
MAND32 MRa, MRb, MRc
MASR32 MRa, #SHIFT
MLSL32 MRa, #SHIFT
MLSR32 MRa, #SHIFT
MOR32 MRa, MRb, MRc
MXOR32 MRa, MRb, MRc
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
665
Instruction Set
www.ti.com
MSUBF32 MRa, MRb, MRc 32-Bit Floating-Point Subtraction
Operands
MRa
CLA floating-point destination register (MR0 to R1)
MRb
CLA floating-point source register (MR0 to R1)
MRc
CLA floating-point source register (MR0 to R1)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 0100 0000
Description
Subtract the contents of two floating-point registers
MRa = MRb - MRc;
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MSUBF32 generates an underflow condition.
• LVF = 1 if MSUBF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Given A, B and C are
; Calculate Y2 = A + B
;
_Cla1Task5:
MMOV32
MR0, @_A
MMOV32
MR1, @_B
MADDF32
MR0, MR1,
|| MMOV32
MR1, @_C
MSUBF32
MR0, MR0,
MMOV32
@Y, MR0
MSTOP
See also
666
32-bit floating-point numbers
- C
;
;
MR0 ;
;
MR1 ;
;
;
Load MR0 with A
Load MR1 with B
Add A + B
and in parallel load C
Subtract C from (A + B)
(A+B) - C
end of task
MSUBF32 MRa, #16FHi, MRb
MSUBF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MSUBF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MSUBF32 MRd, MRe, MRf
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MSUBF32 MRa, #16FHi, MRb 32-Bit Floating-Point Subtraction
Operands
MRa
CLA floating-point destination register (MR0 to R1)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit floatingpoint value. The low 16-bits of the mantissa are assumed to be all 0.
MRb
CLA floating-point source register (MR0 to R1)
Opcode
LSW: IIII IIII IIII IIII
MSW: 0111 1000 0000 baaa
Description
Subtract MRb from the floating-point value represented by the immediate operand. Store
the result of the addition in MRa.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
MRa = #16FHi:0 - MRb;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MSUBF32 generates an underflow condition.
• LVF = 1 if MSUBF32 generates an overflow condition.
Pipeline
This is a single-cycle instruction.
Example
; Y = sqrt(X)
; Ye = Estimate(1/sqrt(X));
; Ye = Ye*(1.5 - Ye*Ye*X*0.5)
; Ye = Ye*(1.5 - Ye*Ye*X*0.5)
; Y = X*Ye
;
_Cla1Task3:
MMOV32
MR0, @_x
MEISQRTF32 MR1, MR0
MMOV32
MR1, @_x, EQ
MMPYF32
MR3, MR0, #0.5
MMPYF32
MR2, MR1, MR3
MMPYF32
MR2, MR1, MR2
MSUBF32
MR2, #1.5, MR2
MMPYF32
MR1, MR1, MR2
MMPYF32
MR2, MR1, MR3
MMPYF32
MR2, MR1, MR2
MSUBF32
MR2, #1.5, MR2
MMPYF32
MR1, MR1, MR2
MMPYF32
MR0, MR1, MR0
MMOV32
@_y, MR0
MSTOP
See also
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
MR0 = X
MR1 = Ye = Estimate(1/sqrt(X))
if(X == 0.0) Ye = 0.0
MR3 = X*0.5
MR2 = Ye*X*0.5
MR2 = Ye*Ye*X*0.5
MR2 = 1.5 - Ye*Ye*X*0.5
MR1 = Ye = Ye*(1.5 - Ye*Ye*X*0.5)
MR2 = Ye*X*0.5
MR2 = Ye*Ye*X*0.5
MR2 = 1.5 - Ye*Ye*X*0.5
MR1 = Ye = Ye*(1.5 - Ye*Ye*X*0.5)
MR0 = Y = Ye*X
Store Y = sqrt(X)
end of task
MSUBF32 MRa, MRb, MRc
MSUBF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MSUBF32 MRd, MRe, MRf || MMOV32 mem32, MRa
MMPYF32 MRa, MRb, MRc || MSUBF32 MRd, MRe, MRf
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
667
Instruction Set
www.ti.com
MSUBF32 MRd, MRe, MRf ||MMOV32 MRa, mem32 32-Bit Floating-Point Subtraction with Parallel
Move
Operands
MRd
CLA floating-point destination register (MR0 to MR3) for the MSUBF32 operation
MRd cannot be the same register as MRa
MRe
CLA floating-point source register (MR0 to MR3) for the MSUBF32 operation
MRf
CLA floating-point source register (MR0 to MR3) for the MSUBF32 operation
MRa
CLA floating-point destination register (MR0 to MR3) for the MMOV32 operation
MRa cannot be the same register as MRd
mem32
32-bit memory location accessed using direct or indirect addressing. Source for the
MMOV32 operation.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0010 ffee ddaa addr
Description
Subtract the contents of two floating-point registers and move from memory to a floatingpoint register.
MRd = MRe - MRf;
MRa = [mem32];
Restrictions
The destination register for the MSUBF32 and the MMOV32 must be unique. That is,
MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MSUBF32 generates an underflow condition.
• LVF = 1 if MSUBF32 generates an overflow condition.
The MMOV32 Instruction will set the NF and ZF flags as follows:
Pipeline
Both MSUBF32 and MMOV32 complete in a single cycle.
Example
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; }
See also
MSUBF32 MRa, MRb, MRc
MSUBF32 MRa, #16FHi, MRb
MMPYF32 MRa, MRb, MRc || MSUBF32 MRd, MRe, MRf
668
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MSUBF32 MRd, MRe, MRf ||MMOV32 mem32, MRa 32-Bit Floating-Point Subtraction with Parallel
Move
Operands
MRd
CLA floating-point destination register (MR0 to MR3) for the MSUBF32 operation
MRe
CLA floating-point source register (MR0 to MR3) for the MSUBF32 operation
MRf
CLA floating-point source register (MR0 to MR3) for the MSUBF32 operation
mem32
32-bit destination memory location for the MMOV32 operation
MRa
CLA floating-point source register (MR0 to MR3) for the MMOV32 operation
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0110 ffee ddaa addr
Description
Subtract the contents of two floating-point registers and move from a floating-point
register to memory.
MRd = MRe - MRf;
[mem32] = MRa;
Flags
This instruction modifies the following flags in the MSTF register:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MSUBF32 generates an underflow condition.
• LVF = 1 if MSUBF32 generates an overflow condition.
Pipeline
Both MSUBF32 and MMOV32 complete in a single cycle.
Example
See also
MSUBF32 MRa, MRb, MRc
MSUBF32 MRa, #16FHi, MRb
MSUBF32 MRd, MRe, MRf || MMOV32 MRa, mem32
MMPYF32 MRa, MRb, MRc || MSUBF32 MRd, MRe, MRf
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
669
Instruction Set
www.ti.com
MSWAPF MRa, MRb {, CNDF} Conditional Swap
Operands
MRa
CLA floating-point register (MR0 to MR3)
MRb
CLA floating-point register (MR0 to MR3)
CNDF
Optional condition tested based on the MSTF flags
Opcode
LSW: 0000 0000 CNDF bbaa
MSW: 0111 1011 0000 0000
Description
Conditional swap of MRa and MRb.
if (CNDF == true) swap MRa and MRb;
CNDF is one of the following conditions:
Encode
(1)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
1111
UNCF
Unconditional with flag
modification
None
(1)
(2)
(2)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
No flags affected
Pipeline
670
This is a single-cycle instruction.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example
; X is an array of 32-bit floating-point values
; and has len elements. Find the maximum value in
; the array and store it in Result
;
; Note: MCMPF32 and MSWAPF can be replaced by MMAXF32
;
_Cla1Task1:
MMOVI16
MAR1,#_X
; Start address
MUI16TOF32 MR0, @_len
; Length of the array
MNOP
; delay for MAR1 load
MNOP
; delay for MAR1 load
MMOV32
MR1, *MAR1[2]++ ; MR1 = X0
LOOP
MMOV32
MR2, *MAR1[2]++ ; MR2 = next element
MCMPF32
MR2, MR1
; Compare MR2 with MR1
MSWAPF
MR1, MR2, GT
; MR1 = MAX(MR1, MR2)
MADDF32
MR0, MR0, #-1.0 ; Decrememt the counter
MCMPF32
MR0 #0.0
; Set/clear flags for MBCNDD
MNOP
MNOP
MNOP
MBCNDD
LOOP, NEQ
; Branch if not equal to zero
MMOV32
@_Result, MR1
; Always executed
MNOP
; Always executed
MNOP
; Always executed
MSTOP
; End of task
See also
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
671
Instruction Set
MMTESTTF CNDF
www.ti.com
Test MSTF Register Flag Condition
Operands
CNDF
condition to test based on MSTF flags
Opcode
LSW: 0000 0000 0000 cndf
MSW: 0111 1111 0100 0000
Description
Test the CLA floating-point condition and if true, set the MSTF[TF] flag. If the condition is
false, clear the MSTF[TF] flag. This is useful for temporarily storing a condition for later
use.
if (CNDF == true) TF = 1;
else TF = 0;
CNDF is one of the following conditions:
Encode
(3)
CNDF
Description
MSTF Flags Tested
0000
NEQ
Not equal to zero
ZF == 0
0001
EQ
Equal to zero
ZF == 1
0010
GT
Greater than zero
ZF == 0 AND NF == 0
0011
GEQ
Greater than or equal to zero
NF == 0
0100
LT
Less than zero
NF == 1
0101
LEQ
Less than or equal to zero
ZF == 1 OR NF == 1
1010
TF
Test flag set
TF == 1
1011
NTF
Test flag not set
TF == 0
1100
LU
Latched underflow
LUF == 1
1101
LV
Latched overflow
LVF == 1
1110
UNC
Unconditional
None
Unconditional with flag
modification
None
1111
(3)
(4)
UNCF
(4)
Values not shown are reserved.
This is the default operation if no CNDF field is specified. This condition will allow the ZF and NF flags to
be modified when a conditional operation is executed. All other conditions will not modify these flags.
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
Yes
No
No
No
No
TF = 0;
if (CNDF == true) TF = 1;
Note: If (CNDF == UNC or UNCF), the TF flag will be set to 1.
Pipeline
672
This is a single-cycle instruction.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
Example
; if (State == 0.1)
;
RampState = RampState || RAMPMASK
; else if (State == 0.01)
;
CoastState = CoastState || COASTMASK
; else
;
SteadyState = SteadyState || STEADYMASK
;
_Cla1Task2:
MMOV32
MR0, @_State
MCMPF32
MR0, #0.1
; Affects flags for 1st MBCNDD (A)
MCMPF32
MR0, #0.01
; Check used by 2nd MBCNDD (B)
MMTESTTF
EQ
; Store EQ flag in TF for 2nd MBCNDD (B)
MNOP
MBCNDD
_Skip1, NEQ
; (A) If State != 0.1, go to Skip1
MMOV32
MR1, @_RampState ; Always executed
MMOVXI
MR2, #RAMPMASK
; Always executed
MOR32
MR1, MR2
; Always executed
MMOV32
@_RampState, MR1 ; Execute if (A) branch not taken
MSTOP
; end of task if (A) branch not taken
_Skip1:
MMOV32
MMOVXI
MOR32
MBCNDD
MMOV32
MMOVXI
MOR32
MMOV32
MSTOP
MR3, @_SteadyState
MR2, #STEADYMASK
MR3, MR2
_Skip2, NTF
;
MR1, @_CoastState ;
MR2, #COASTMASK
;
MR1, MR2
;
@_CoastState, MR1 ;
;
_Skip2:
MMOV32 @_SteadyState, MR3
MSTOP
(B) if State != .01, go to Skip2
Always executed
Always executed
Always executed
Execute if (B) branch not taken
end of task if (B) branch not taken
; Executed if (B) branch taken
See also
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
673
Instruction Set
www.ti.com
MUI16TOF32 MRa, mem16 Convert Unsigned 16-Bit Integer to 32-Bit Floating-Point Value
Operands
Opcode
MRa
CLA floating-point destination register (MR0 to MR3)
mem16
16-bit source memory location
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0101 01aa addr
Description
When converting F32 to I16/UI16 data format, the MF32TOI16/UI16 operation truncates
to zero while the MF32TOI16R/UI16R operation will round to nearest (even) value.
MRa = UI16TOF32[mem16];
This instruction does not affect any flags:
Flags
Pipeline
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
This is a single-cycle instruction.
Example
See also
674
MF32TOI16 MRa, MRb
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, MRb
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MUI16TOF32 MRa, MRb Convert Unsigned 16-Bit Integer to 32-Bit Floating-Point Value
Operands
Opcode
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
LSW: 0000 0000 0000 bbaa
MSW: 0111 1110 1110 0000
Description
Convert an unsigned 16-bit integer to a 32-bit floating-point value. When converting
float32 to I16/UI16 data format, the MF32TOI16/UI16 operation truncates to zero while
the MF32TOI16R/UI16R operation will round to nearest (even) value.
MRa = UI16TOF32[MRb];
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVXI MR1, #0x800F ; MR1(15:0) = 32783 (0x800F)
MUI16TOF32 MR0, MR1 ; MR0 = UI16TOF32 (MR1(15:0))
; = 32783.0 (0x47000F00)
See also
MF32TOI16 MRa, MRb
MF32TOI16R MRa, MRb
MF32TOUI16 MRa, MRb
MF32TOUI16R MRa, MRb
MI16TOF32 MRa, MRb
MI16TOF32 MRa, mem16
MUI16TOF32 MRa, mem16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
675
Instruction Set
www.ti.com
MUI32TOF32 MRa, mem32 Convert Unsigned 32-Bit Integer to 32-Bit Floating-Point Value
Operands
Opcode
MRa
CLA floating-point destination register (MR0 to MR3)
mem32
32-bit memory location accessed using direct or indirect addressing
LSW: mmmm mmmm mmmm mmmm
MSW: 0111 0100 10aa addr
Description
MRa = UI32TOF32[mem32];
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
; Given x2, m2 and b2 are Uint32 numbers:
;
; x2 = Uint32(2) = 0x00000002
; m2 = Uint32(1) = 0x00000001
; b2 = Uint32(3) = 0x00000003
;
; Calculate y2 = x2 * m2 + b2
;
_Cla1Task1:
MUI32TOF32 MR0, @_m2
; MR0 = 1.0 (0x3F800000)
MUI32TOF32 MR1, @_x2
; MR1 = 2.0 (0x40000000)
MUI32TOF32 MR2, @_b2
; MR2 = 3.0 (0x40400000)
MMPYF32
MR3, MR0, MR1 ; M*X
MADDF32
MR3, MR2, MR3 ; Y=MX+B = 5.0 (0x40A00000)
MF32TOUI32 MR3, MR3
; Y = Uint32(5.0) = 0x00000005
MMOV32
@_y2, MR3
; store result
MSTOP
; end of task
See also
MF32TOI32 MRa, MRb
MF32TOUI32 MRa, MRb
MI32TOF32 MRa, mem32
MI32TOF32 MRa, MRb
MUI32TOF32 MRa, MRb
676
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
MUI32TOF32 MRa, MRb Convert Unsigned 32-Bit Integer to 32-Bit Floating-Point Value
Operands
Opcode
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
LSW: 0000 0000 0000 bbaa
MSW: 0111 1101 1100 0000
Description
MRa = UI32TOF32 [MRb];
Flags
This instruction does not affect any flags:
Flag
TF
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ
MMOVXI
See also
MF32TOI32 MRa, MRb
MF32TOUI32 MRa, MRb
MI32TOF32 MRa, mem32
MI32TOF32 MRa, MRb
MUI32TOF32 MRa, mem32
MR3, #0x8000 ;
MR3, #0x1111 ;
;
MUI32TOF32 MR3, MR3
;
MR3(31:16) = 0x8000
MR3(15:0) = 0x1111
MR3 = 2147488017
MR3 = MUI32TOF32 (MR3) = 2147488017.0 (0x4F000011)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
677
Instruction Set
www.ti.com
MXOR32 MRa, MRb, MRc Bitwise Exclusive Or
Operands
MRa
CLA floating-point destination register (MR0 to MR3)
MRb
CLA floating-point source register (MR0 to MR3)
MRc
CLA floating-point source register (MR0 to MR3)
Opcode
LSW: 0000 0000 00cc bbaa
MSW: 0111 1100 1010 0000
Description
Bitwise XOR of MRb with MRc.
MARa(31:0) = MARb(31:0) XOR MRc(31:0);
This instruction modifies the following flags in the MSTF register:
Flags
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
No
No
The MSTF register flags are modified based on the integer results of the operation.
NF = MRa(31);
ZF = 0;
if(MRa(31:0) == 0) { ZF = 1; }
Pipeline
This is a single-cycle instruction.
Example
MMOVIZ MR0, #0x5555
; MR0 = 0x5555AAAA
MMOVXI MR0, #0xAAAA
MMOVIZ MR1, #0x5432
MMOVXI MR1, #0xFEDC
;
;
;
;
;
;
;
;
0101
0101
0101
0101
1010
1010
1010
1010
XOR
XOR
XOR
XOR
XOR
XOR
XOR
XOR
0101
0100
0011
0010
1111
1110
1101
1100
=
=
=
=
=
=
=
=
0000
0001
0110
0111
0101
0100
0111
0110
MXOR32 MR2, MR1, MR0
See also
678
; MR1 = 0x5432FEDC
(0)
(1)
(6)
(7)
(5)
(4)
(7)
(6)
; MR3 = 0x01675476
MAND32 MRa, MRb, MRc
MOR32 MRa, MRb, MRc
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Appendix A: CLA and CPU Arbitration
www.ti.com
9.7
Appendix A: CLA and CPU Arbitration
Typically, CLA activity is independent of the CPU activity. Under the circumstance where both the CLA
and the CPU are attempting to access memory or a peripheral register within the same interface
concurrently, an arbitration procedure will occur. This appendix describes this arbitration.
9.7.1 CLA and CPU Arbitration
Typically, CLA activity is independent of the CPU activity. Under the circumstance where both the CLA
and the CPU are attempting to access memory or a peripheral register within the same interface
concurrently, an arbitration procedure will occur. The one exception is the ADC result registers which do
not create a conflict when read by both the CPU and the CLA simultaneously even if different addresses
are accessed. Any combined accesses between the different interfaces, or where the CPU access is
outside of the interface that the CLA is accessing do not create a conflict.
The interfaces that can have conflict arbitration are:
• CLA Message RAMs
• CLA Program Memory
• CLA Data RAMs
9.7.1.1
CLA Message RAMs
Message RAMs consist of two blocks. These blocks are for passing data between the main CPU and the
CLA. No opcode fetches are allowed from the message RAMs. The two message RAMs have the
following characteristics:
• CLA to CPU Message RAM:
The following accesses are allowed:
– CPU reads
– CLA reads and writes
– CPU debug reads and writes
The following accesses are ignored
– CPU writes
Priority of accesses are (highest priority first):
1. CLA write
2. CPU debug write
3. CPU data read, program read, CPU debug read
4. CLA data read
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
679
Appendix A: CLA and CPU Arbitration
•
9.7.1.2
www.ti.com
CPU to CLA Message RAM:
The following accesses are allowed:
– CPU reads and writes
– CLA reads
– CPU debug reads and writes
The following accesses are ignored
– CLA writes
Priority of accesses are (highest priority first):
1. CLA read
2. CPU data write, program write, CPU debug write
3. CPU data read, CPU debug read
4. CPU program read
CLA Program Memory
The behavior of the program memory depends on the state of the MMEMCFG[PROGE] bit. This bit
controls whether the memory is mapped to CLA space or CPU space.
• MMEMCFG[PROGE] == 0
In this case the memory is mapped to the CPU. The CLA will be halted and no tasks shoud be
incoming.
– Any CLA fetch will be treated as an illegal opcode condition as described in Section 9.3.4. This
condition will not occur if the proper procedure is followed to map the program memory.
– CLA reads and writes cannot occur
– The memory block behaves as any normal SARAM block mapped to CPU memory space.
Priroty of accesses are (highest priority first):
1. CPU data write, program write, debug write
2. CPU data read, program read, debug read
3. CPU fetch, program read
• MMEMCFG[PROGE] == 1
In this case the memory block is mapped to CLA space. The CPU can only make debug accesses.
– CLA reads and writes cannot occur
– CLA fetches are allowed
– CPU fetches return 0 which is an illegal opcode and will cause an ITRAP interrupt.
– CPU data reads and program reads return 0
– CPU data writes and program writes are ignored
Priroty of accesses are (highest priority first):
1. CLA fetch
2. CPU debug write
3. CPU debug read
NOTE: Because the CLA fetch has higher priority than CPU debug reads, it is possible for the CLA
to permanently block debug accesses if the CLA is executing in a loop. This might occur
when initially developing CLA code due to a bug. To avoid this issue, the program memory
will return all 0x0000 for CPU debug reads (ignore writes) when the CLA is running. When
the CLA is halted or idle then normal CPU debug read and write access can be performed.
680
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Appendix A: CLA and CPU Arbitration
www.ti.com
9.7.1.3
•
•
•
9.7.1.4
CLA Data Memory
There are three independent data memory blocks. The behavior of the data memory depends on the
state of the MMEMCFG[RAM0E], MMEMCFG[RAM1E] and MMEMCFG[RAM2E] bits. These bits
determine whether the memory blocks are mapped to CLA space or CPU space.
MMEMCFG[RAMxE] == 0, MMEMCFG[RAMxCPUE] = 0/1
In this case the memory block is mapped to the CPU.
– CLA fetches cannot occur to this block.
– CLA reads return 0.
– CLA writes are ignored.
– The memory block behaves as any normal SARAM block mapped to the CPU memory space.
Priroty of accesses are (highest priority first):
1. CPU data write/program write/debug access write
2. CPU data read/debug access read
3. CPU fetch/program read
MMEMCFG[RAMxE] == 1, MMEMCFG[RAMxCPUE] = 0
In this case the memory block is mapped to CLA space. The CPU can make only debug accesses.
– CLA fetches cannot occur to this block.
– CLA read and CLA writes are allowed.
– CPU fetches return 0
– CPU data reads and program reads return 0.
– CPU data writes and program writes are ignored.
Priority of accesses are (highest priority first):
1. CLA data write
2. CPU debug write
3. CPU debug read
4. CLA read
MMEMCFG[RAMxE] == 1, MMEMCFG[RAMxCPUE] = 1
In this case the memory block is mapped to CLA space. The CPU has read and write access to the
memory in addition to debug accesses.
– CLA fetches cannot occur to this block.
– CLA read and CLA writes are allowed.
– CPU fetches return 0
– CPU data reads and writes are allowed.
– CPU program reads return 0 while program writes are ignored.
Priority of accesses are (highest priority first):
1. CLA data write
2. CPU debug access write/CPU data write
3. CPU debug access read/ CPU data read
4. CLA read
Peripheral Registers (ePWM, HRPWM, Comparator, eCAP, eQEP)
Accesses to the registers follow these rules:
• If both the CPU and CLA request access at the same time, then the CLA will have priority and the
main CPU is stalled.
• If a CPU access is in progress and another CPU access is pending, then the CLA will have priority
over the pending CPU access. In this case the CLA access will begin when the current CPU access
completes.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Control Law Accelerator (CLA)
681
Appendix A: CLA and CPU Arbitration
•
•
•
•
•
682
www.ti.com
While a CPU access is in progress any incoming CLA access will be stalled.
While a CLA access is in progress any incoming CPU access will be stalled.
A CPU write operation has priority over a CPU read operation.
A CLA write operation has priority over a CLA read operation.
If the CPU is performing a read-modify-write operation and the CLA performs a write to the same
location, the CLA write may be lost if the operation occurs in-between the CPU read and write. For this
reason, you should not mix CPU and CLA accesses to same location.
Control Law Accelerator (CLA)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 10
SPRUH18G – January 2011 – Revised April 2017
Viterbi, Complex Math and CRC Unit (VCU)
The C28x Viterbi, Complex Math and CRC Unit (VCU) is a fully programmable block which accelerates
the performance of communications-based algorithms by up to a factor of 8X over C28x alone. In addition
to eliminating the need for a second processor to manage the communications link, the performance gains
of the VCU provides headroom for future system growth and higher bit rates or, conversely, enables
devices to operate at a lower MHz to reduce system cost and power consumption. This document
provides an overview of the architectural structure and instruction set of the C28x VCU.
The VCU module described in this reference guide is a Type 0 VCU. See the TMS320x28xx, 28xxx DSP
Peripheral Reference Guide (SPRU566) for a list of all devices with a VCU module of the same type, to
determine the differences between the types, and for a list of device-specific differences within a type.
This document describes the architecture, pipeline, instruction set, and interrupts of the C28x+VCU.
Topic
10.1
10.2
10.3
10.4
10.5
10.6
10.7
...........................................................................................................................
Overview .........................................................................................................
Components of the C28x plus VCU .....................................................................
Emulation Logic ...............................................................................................
Register Set .....................................................................................................
Pipeline ...........................................................................................................
Instruction Set..................................................................................................
Rounding Mode ................................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
Page
684
685
686
689
696
701
806
683
Overview
www.ti.com
10.1 Overview
The C28x with VCU (C28x+VCU) processor extends the capabilities of the C28x fixed-point or floatingpoint CPU by adding registers and instructions to support the following algorithm types:
• Viterbi decoding
Viterbi decoding is commonly used in baseband communications applications. The viterbi decode
algorithm consists of three main parts: branch metric calculations, compare-select (viterbi butterfly) and
a traceback operation. Table 10-1 shows a summary of the VCU performance for each of these
operations.
Table 10-1. Viterbi Decode Performance
Viterbi Operation
(1)
(2)
•
•
VCU Cycles
Branch Metric Calculation (code rate = 1/2)
1
Branch Metric Calculation (code rate = 1/3)
2p
Viterbi Butterfly (add-compare-select)
2
(1)
Traceback per Stage
3
(2)
C28x CPU takes 15 cycles per butterfly.
C28x CPU takes 22 cycles per stage.
Cyclic redundancy check (CRC)
CRC algorithms provide a straightforward method for verifying data integrity over large data blocks,
communication packets, or code sections. The C28x+VCU can perform 8-, 16-, and 32-bit CRCs. For
example, the VCU can compute the CRC for a block length of 10 bytes in 10 cycles. A CRC result
register contains the current CRC which is updated whenever a CRC instruction is executed.
Complex math
Complex math is used in many applications. The VCU A few of which are:
– Fast fourier transform (FFT)
The complex FFT is used in spread spectrum communications, as well in many signal processing
algorithms.
– Complex filters
Complex filters improve data reliability, transmission distance, and power efficiency. The
C28x+VCU can perform a complex I and Q multiple with coefficients (four multiplies) in a single
cycle. In addition, the C28x+VCU can read/write the real and imaginary parts of 16-bit complex data
to memory in a single cycle.
Table 10-2 shows a summary of the VCU operations enabled by the VCU:
Table 10-2. Complex Math Performance
Complex Math Operation
VCU Cycles
Notes
Add Or Subtract
1
32 +/- 32 = 32-bit (Useful for filters)
Add or Subtract
1
16 +/- 32 = 15-bit (Useful for FFT)
Multiply
2p
16 x 16 = 32-bit
Multiply & Accumulate (MAC)
2p
32 + 32 = 32-bit, 16 x 16 = 32-bit
RPT MAC
2p+N
Repeat MAC. Single cycle after the first operation.
This C28x+VCU draws from the best features of digital signal processing; reduced instruction set
computing (RISC); and microcontroller architectures, firmware, and tool sets. The C2000 features include
a modified Harvard architecture and circular addressing. The RISC features are single-cycle instruction
execution, register-to-register operations, and modified Harvard architecture (usable in Von Neumann
mode). The microcontroller features include ease of use through an intuitive instruction set, byte packing
and unpacking, and bit manipulation. The modified Harvard architecture of the CPU enables instruction
and data fetches to be performed in parallel. The CPU can read instructions and data while it writes data
simultaneously to maintain the single-cycle instruction operation across the pipeline. The CPU does this
over six separate address/data buses.
Throughout this document the following notations are used:
684
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Components of the C28x plus VCU
www.ti.com
•
•
•
•
C28x refers to the C28x fixed-point CPU.
C28x plus Floating-Point and C28x+FPU both refer to the C28x CPU with enhancements to support
IEEE single-precision floating-point operations.
C28x plus VCU and C28x+VCU both refer to the C28x CPU with enhancements to support viterbi
decode, complex math and CRC.
Some devices have both the FPU and the VCU. These are refered to as C28x+FPU+VCU.
10.2 Components of the C28x plus VCU
The VCU extends the capabilities of the C28x CPU and C28x+FPU processors by adding additional
instructions. No changes have been made to existing instructions, pipeline, or memory bus architecture.
Therefore, programs written for the C28x are completely compatible with the C28x+VCU. All of the
features of the C28x documented in TMS320C28x DSP CPU and Instruction Set Reference Guide
(literature number SPRU430) apply to the C28x+VCU. All features documented in the TMS320C28x
Floating Point Unit and Instruction Set Reference Guide (SPRUE02) apply to the C28x+FPU+VCU.
Figure 10-1 shows the block diagram of the VCU.
Figure 10-1. C28x + VCU Block Diagram
Memory
bus
Program address bus (22)
Program data bus (32)
Read address bus (32)
Read data bus (32)
C28x
+
FPU
+
Vcu
Existing
memory,
peripherals,
interfaces
LVF
LUF
Memory
bus
PIE
Write data bus (32)
Write address bus (32)
The C28x+VCU contains the same features as the C28x fixed-point CPU:
• A central processing unit for generating data and program-memory addresses; decoding and executing
instructions; performing arithmetic, logical, and shift operations; and controlling data transfers among
CPU registers, data memory, and program memory.
• Emulation logic for monitoring and controlling various parts and functions of the device and for testing
device operation. This logic is identical to that on the C28x fixed-point CPU.
• Signals for interfacing with memory and peripherals, clocking and controlling the CPU and the
emulation logic, showing the status of the CPU and the emulation logic, and using interrupts. This logic
is identical to the C28x fixed-point CPU.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
685
Emulation Logic
•
•
•
•
•
www.ti.com
Arithmetic logic unit (ALU). The 32-bit ALU performs 2s-complement arithmetic and Boolean logic
operations.
Address register arithmetic unit (ARAU). The ARAU generates data memory addresses and
increments or decrements pointers in parallel with ALU operations.
Fixed-Point instructions are pipeline protected. This pipeline for fixed-point instructions is identical to
that on the C28x fixed-point CPU. The CPU implements an 8-phase pipeline that prevents a write to
and a read from the same location from occurring out of order.
Barrel shifter. This shifter performs all left and right shifts of fixed-point data. It can shift data to the left
by up to 16 bits and to the right by up to 16 bits.
Fixed-Point Multiplier. The multiplier performs 32-bit × 32-bit 2s-complement multiplication with a 64-bit
result. The multiplication can be performed with two signed numbers, two unsigned numbers, or one
signed number and one unsigned number.
The VCU adds the following features:
• Instructions to support Cyclic Redundancy Check (CRC) or a polynomial code checksum:
– CRC8
– CRC16
– CRC32
• Clocked at the same rate as the main CPU (SYSCLKOUT).
• Instructions to support a software implementation of a Viterbi Decoder
– Branch metrics calculations
– Add-Compare Select or Viterbi Butterfly
– Traceback
• Complex Math Arithmetic Unit
– Add or Subtract
– Multiply
– Multiply and Accumulate (MAC)
– Repeat MAC (RPT || MAC)
• Independent register space. These registers function as source and destination registers for VCU
instructions.
• Some VCU instructions require pipeline alignment. This alignment is done through software to allow
the user to improve performance by taking advantage of required delay slots. See Section 10.5 for
more information.
Devices with the floating-point unit also include:
• Floating point unit (FPU). The 32-bit FPU performs IEEE single-precision floating-point operations.
• Dedicated floating-point registers.
10.3 Emulation Logic
The emulation logic is identical to that on the C28x fixed-point CPU. This logic includes the following
features. For more details about these features, refer to the TMS320C28x DSP CPU and Instruction Set
Reference Guide (literature number SPRU430):
• Debug-and-test direct memory access (DT-DMA). A debug host can gain direct access to the content
of registers and memory by taking control of the memory interface during unused cycles of the
instruction pipeline
• A counter for performance benchmarking.
• Multiple debug events. Any of the following debug events can cause a break in program execution:
– A breakpoint initiated by the ESTOP0 or ESTOP1 instruction.
– An access to a specified program-space or data-space location. When a debug event causes the
C28x to enter the debug-halt state, the event is called a break event.
• Real-time mode of operation.
686
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Emulation Logic
www.ti.com
10.3.1 Memory Map
Like the C28x, the C28x+VCU uses 32-bit data addresses and 22-bit program addresses. This allows for a
total address reach of 4G words (1 word = 16 bits) in data space and 4M words in program space.
Memory blocks on all C28x+VCU designs are uniformly mapped to both program and data space. For
specific details about each of the map segments, see the data manual for a particular device device.
10.3.2 CPU Interrupt Vectors
The C28x+VCU interrupt vectors are identical to those on the C28x CPU. Sixty-four addresses in program
space are set aside for a table of 32 CPU interrupt vectors. For more information about the CPU vectors,
see TMS320C28x CPU and Instruction Set Reference Guide (literature number SPRU430). Typically the
CPU interrupt vectors are only used during the boot up of the device by the boot ROM. Once an
application has taken control it should initalize and enable the peripheral interrupt expansion block (PIE).
10.3.3 Memory Interface
The C28x+VCU memory interface is identical to that on the C28x. The C28x+VCU memory map is
accessible outside the CPU by the memory interface, which connects the CPU logic to memories,
peripherals, or other interfaces. The memory interface includes separate buses for program space and
data space. This means an instruction can be fetched from program memory while data memory is being
accessed. The interface also includes signals that indicate the type of read or write being requested by the
CPU. These signals can select a specified memory block or peripheral for a given bus transaction. In
addition to 16-bit and 32-bit accesses, the CPU supports special byte-access instructions that can access
the least significant byte (LSByte) or most significant byte (MSByte) of an addressed word. Strobe signals
indicate when such an access is occurring on a data bus.
10.3.4 Address and Data Buses
Like the C28x, the memory interface has three address buses:
• PAB: Program address bus: The 22-bit PAB carries addresses for reads and writes from program
space.
• DRAB: Data-read address bus: The 32-bit DRAB carries addresses for reads from data space.
• DWAB: Data-write address bus: The 32-bit DWAB carries addresses for writes to data space.
The memory interface also has three data buses:
• PRDB: Program-read data bus: The 32-bit PRDB carries instructions during reads from program
space.
• DRDB: Data-read data bus: The 32-bit DRDB carries data during reads from data space.
• DWDB: Data-/Program-write data bus: The 32-bit DWDB carries data during writes to data space or
program space.
A program-space read and a program-space write cannot happen simultaneously because both use the
PAB. Similarly, a program-space write and a data-space write cannot happen simultaneously because
both use the DWDB. Transactions that use different buses can happen simultaneously. For example, the
CPU can read from program space (using PAB and PRDB), read from data space (using DRAB and
DRDB), and write to data space (using DWAB and DWDB) at the same time. This behavior is identical to
the C28x CPU.
10.3.5 Alignment of 32-Bit Accesses to Even Addresses
The C28x+VPU expects memory wrappers or peripheral-interface logic to align any 32-bit read or write to
an even address. If the address-generation logic generates an odd address, the CPU will begin reading or
writing at the previous even address. This alignment does not affect the address values generated by the
address-generation logic.
Most instruction fetches from program space are performed as 32-bit read operations and are aligned
accordingly. However, alignment of instruction fetches are effectively invisible to a programmer. When
instructions are stored to program space, they do not have to be aligned to even addresses. Instruction
boundaries are decoded within the CPU.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
687
Emulation Logic
www.ti.com
You need to be concerned with alignment when using instructions that perform 32-bit reads from or writes
to data space.
688
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
10.4 Register Set
Devices with the C28x+VCU include the standard C28x register set plus an additional set of VCU specific
registers. The additional VCU registers are the following:
• Result registers: VR0, VR1... VR8
• Traceback registers: VT0, VT1
• Configuraiton and status register: VSTATUS
• CRC result register: VCRC
• Repeat block register: RB
Figure 10-2 shows the register sets for the 28x CPU, the FPU and the VCU. The following section
discusses the VCU register set in detail.
Figure 10-2. C28x + FPU + VCU Registers
Standard C28x Register Set
Additional 32-bit FPU Registers
Standard VCU Register Set
ACC (32-bit)
R0H (32-bit)
VR0
P (32-bit)
VR1
R1H (32-bit)
XT (32-bit)
VR2
VR3
R2H (32-bit)
XAR0 (32-bit)
VR4
XAR1 (32-bit)
R3H (32-bit)
VR5
XAR2 (32-bit)
VR6
R4H (32-bit)
XAR3 (32-bit)
VR7
XAR4 (32-bit)
R5H (32-bit)
VR8
XAR5 (32-bit)
VT0
R6H (32-bit)
XAR6 (32-bit)
VT1
XAR7 (32-bit)
VSTATUS
R7H (32-bit)
VCRC
PC (22-bit)
FPU Status Register (STF)
RPC (22-bit)
DP (16-bit)
Repeat Block Register (RB)
SP (16-bit)
FPU registers R0H - R7H and STF
are shadowed for fast context
save and restore
ST0 (16-bit)
ST1 (16-bit)
IER (16-bit)
IFR (16-bit)
DBGIER (16-bit)
10.4.1 VCU Register Set
The table below describes the VCU module register set. The last three columns indicate whether the
particular module within the VCU can make use of the register.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
689
Register Set
www.ti.com
Table 10-3. VCU Register Set
Register
Name
Size
Description
Viterbi
Complex
Math
CRC
VR0
32-bits
General purpose register 0
Yes
Yes
No
VR1
32-bits
General purpose register 1
Yes
Yes
No
VR2
32-bits
General purpose register 2
Yes
Yes
No
VR3
32-bits
General purpose register 3
Yes
Yes
No
VR4
32-bits
General purpose register 4
Yes
Yes
No
VR5
32-bits
General purpose register 5
Yes
Yes
No
VR6
32-bits
General purpose register 6
Yes
Yes
No
VR7
32-bits
General purpose register 7
Yes
Yes
No
VR8
32-bits
General purpose register 8
Yes
No
No
VT0
32-bits
32-bit transition bit register 0
Yes
No
No
VT1
32-bits
32-bit transition bit register 1
Yes
No
No
Yes
Yes
No
No
No
Yes
(1)
VSTATUS
32-bits
VCU status and configuration register
VCRC
32-bits
Cyclic redundancy check (CRC) result register
(1)
Debugger writes are not allowed to the VSTATUS register.
Table 10-4 lists the CPU registers available on devices with the C28x, the C28x+FPU, the C28x+VCU and
the C28x+FPU+VCU.
690 Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 10-4. 28x CPU Register Summary
Register
C28x CPU
C28x+FPU
C28x+VCU
C28x+FPU+VCU
ACC
Yes
Yes
Yes
Yes
Description
Fixed-point accumulator
AH
Yes
Yes
Yes
Yes
High half of ACC
AL
Yes
Yes
Yes
Yes
Low half of ACC
XAR0 - XAR7
Yes
Yes
Yes
Yes
Auxiliary register 0 - 7
AR0 - AR7
Yes
Yes
Yes
Yes
Low half of XAR0 - XAR7
DP
Yes
Yes
Yes
Yes
Data-page pointer
IFR
Yes
Yes
Yes
Yes
Interrupt flag register
IER
Yes
Yes
Yes
Yes
Interrupt enable register
DBGIER
Yes
Yes
Yes
Yes
Debug interrupt enable register
P
Yes
Yes
Yes
Yes
Fixed-point product register
PH
Yes
Yes
Yes
Yes
High half of P
PL
Yes
Yes
Yes
Yes
Low half of P
PC
Yes
Yes
Yes
Yes
Program counter
RPC
Yes
Yes
Yes
Yes
Return program counter
SP
Yes
Yes
Yes
Yes
Stack pointer
ST0
Yes
Yes
Yes
Yes
Status register 0
ST1
Yes
Yes
Yes
Yes
Status register 1
XT
Yes
Yes
Yes
Yes
Fixed-point multiplicand register
T
Yes
Yes
Yes
Yes
High half of XT
TL
Yes
Yes
Yes
Yes
Low half of XT
ROH - R7H
No
Yes
No
Yes
Floating-point Unit result registers
STF
No
Yes
No
Yes
Floating-point Uint status register
RB
No
Yes
Yes
Yes
Repeat block register
VR0 - VR8
No
No
Yes
Yes
VCU general purpose registers
VT0, VT1
No
No
Yes
Yes
VCU transition bit register 0 and 1
VSTATUS
No
No
Yes
Yes
VCU status and configuration
VCRC
No
No
Yes
Yes
CRC result register
10.4.2 VCU Status Register (VSTATUS)
The VCU status register (VSTATUS) register is described in Figure 10-3. There is no single instruction to
directly transfer the VSTATUS register to a C28x register. To transfer the contents:
1. Store VSTATUS into memory using VMOV32 mem32, VSTATUS instruction
2. Load the value from memory into a main C28x CPU register.
Configuration bits within the VSTATUS registers are set or cleared using VCU instructions.
Figure 10-3. VCU Status Register (VSTATUS)
31
16
Reserved
R/W-0
15
R-0
13
12
11
10
Reserved
14
OVRI
OVFR
RND
SAT
9
SHIFTL
5
4
SHIFTR
0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
691
Register Set
www.ti.com
Table 10-5. VCU Status (VSTATUS) Register Field Descriptions
Bits
Field
Value
31 - 14
Reserved
0
13
OVFI
12
Overflow or Underflow Flag: Imaginary Part
0
No overflow or underflow has been detected.
1
Indiates an overflow or underflow has occurred during the computation of the imaginary part of
operations shown in Table 10-6. This bit will be set regardless of the value of the VSTATUS[SAT] bit.
OVRI bit will remain set until it is cleared by executing the VCLROVFI instruction.
OVFR
11
Description
Reserved for future use
Overflow or Underflow Flag: Real Part
0
No overflow or underflow has been detected.
1
Indicates overflow or underflow has occurred during a real number calculation for operations shown
in Table 10-6. This bit will be set regardless of the value of the VSTATUS[SAT] bit. This bit will
remain set until it is cleared by executing the VCLROVFR instruction.
RND
Rounding
When a right-shift operation is performed the lower bits of the value will be lost. The RND bit
determines if the shifted value is rounded or if the shifted-out bits are simply truncated. This is
described in . Operations which use right-shift and rounding are shown in Table 10-6.
The RND bit is set by the VRNDON instruction and cleared by the VRNDOFF instruction.
10
0
Rounding is not performed. Bits shifted out right are truncated.
1
Rounding is performed. Refer to the instruction descriptions for information on how the operation is
affected by the RND bit.
SAT
Saturation
This bit determines whether saturation will be performed for operations shown in Table 10-6.
The SAT bit is set by the VSATON instruction and is cleared by the VSATOFF instruction.
9-5
0
No saturation is performed.
1
Saturation is performed.
SHIFTL
Left Shift
Operations which use left-shift are shown in Table 10-6
The shift SHIFTL field can be set or cleared by the VSETSHL instruction.
0
No left shift.
0x01 0x1F
4-0
SHIFTR
Refer to the instruction description for information on how the operation is affected by the shift value.
During the left-shift, the lower bits are filled with 0's.
Right Shift
Operations which use right-shift and rounding are shown in Table 10-6.
The shift SHIFTR field can be set or cleared by the VSETSHR instruction.
0
No right shift.
0x01 0x1F
Refer to the instruction descriptions for information on how the operation is affected by the shift value.
During the right-shift, the lower bits are lost, and the shifted value is sign extended. If rounding is
enabled (VSTATUS[RND] == 1) , then the value will be rounded instead of truncated.
Table 10-6 shows a summary of the operations that are affected by or modify bits in the VSTATUS
register.
Table 10-6. Operation Interaction with VSTATUS Bits
Operation
(1)
(1)
Description
OVFI
OVFR
RND
SAT
SHIFT SHIFT
L
R
VITDLADDSUB
Viterbi Add and Subtract Low
-
Y
-
Y
-
-
VITDHADDSUB
Viterbi Add and Subtract High
-
Y
-
Y
-
-
VITDLSUBADD
Viterbi Subtract and Add Low
-
Y
-
Y
-
-
VITDHSUBADD
Viterbi Subtract and Add High
-
Y
-
Y
-
-
VITBM2
Viterbi Branch Metric CR 1/2
-
Y
-
Y
-
-
VITBM3
Viterbi Branch Metric CR 1/3
-
Y
-
Y
-
-
VCADD
Complex 32 + 32 = 32
Y
Y
Y
Y
-
Y
Some parallel instructions also include these operations. In this case, the operation will also modify, or be affected by, VSTATUS
bits as when used as part of a parallel instruction.
692 Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 10-6. Operation Interaction with VSTATUS Bits (continued)
Operation
(1)
SHIFT SHIFT
L
R
Description
OVFI
OVFR
RND
SAT
VCDADD16
Complex 16 + 32 = 32
Y
Y
Y
Y
Y
Y
VCDSUB16
Complex 16 - 32 = 32
Y
Y
Y
Y
Y
Y
VCMAC
Complex 32 + 32 = 32,
16 x 16 = 32
Y
Y
Y
Y
-
Y
VCMPY
Complex 16 x 16 = 32
Y
Y
Y
-
-
VCSUB
Complex 32 -32 = 32
Y
Y
Y
-
Y
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Y
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
693
Register Set
www.ti.com
10.4.3 Repeat Block Register (RB)
The repeat block instruction (RPTB) applies to devices with the C28x+FPU and the C28x+VCU. This
instruction allows you to repeat a block of code as shown in Example 10-1.
Example 10-1. The Repeat Block (RPTB) Instruction uses the RB Register
; find the largest element and put its address in XAR6
;
; This example makes use of floating-point (C28x + FPU) instructions
;
;
MOV32 R0H, *XAR0++;
.align 2
; Aligns the next instruction to an even address
NOP
; Makes RPTB odd aligned - required for a block size of 8
RPTB VECTOR_MAX_END, AR7 ; RA is set to 1
MOVL ACC,XAR0
MOV32 R1H,*XAR0++
; RSIZE reflects the size of the RPTB block
MAXF32 R0H,R1H
; in this case the block size is 8
MOVST0 NF,ZF
MOVL XAR6,ACC,LT
VECTOR_MAX_END:
; RE indicates the end address. RA is cleared
The C28x FPU or VCU automatically populates the RB register based on the execution of a RPTB
instruction. This register is not normally read by the application and does not accept debugger writes.
Figure 10-4. Repeat Block Register (RB)
31
30
RAS
RA
29
RSIZE
23
22
RE
16
R-0
R-0
R-0
R-0
15
0
RC
R-0
LEGEND: R = Read only; -n = value after reset
Table 10-7. Repeat Block (RB) Register Field Descriptions
Bits
Field
31
RAS
Value
Description
Repeat Block Active Shadow Bit
When an interrupt occurs the repeat active, RA, bit is copied to the RAS bit and the RA bit is cleared.
When an interrupt return instruction occurs, the RAS bit is copied to the RA bit and RAS is cleared.
30
0
A repeat block was not active when the interrupt was taken.
1
A repeat block was active when the interrupt was taken.
RA
Repeat Block Active Bit
0
This bit is cleared when the repeat counter, RC, reaches zero.
When an interrupt occurs the RA bit is copied to the repeat active shadow, RAS, bit and RA is cleared.
When an interrupt return, IRET, instruction is executed, the RAS bit is copied to the RA bit and RAS is
cleared.
1
29-23
RSIZE
This bit is set when the RPTB instruction is executed to indicate that a RPTB is currently active.
Repeat Block Size
This 7-bit value specifies the number of 16-bit words within the repeat block. This field is initialized
when the RPTB instruction is executed. The value is calculated by the assembler and inserted into the
RPTB instruction's RSIZE opcode field.
0-7
Illegal block size.
8/9-0x7F A RPTB block that starts at an even address must include at least 9 16-bit words and a block that
starts at an odd address must include at least 8 16-bit words. The maximum block size is 127 16-bit
words. The codegen assembler will check for proper block size and alignment.
694
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Set
www.ti.com
Table 10-7. Repeat Block (RB) Register Field Descriptions (continued)
Bits
Field
22-16
RE
Value
Description
Repeat Block End Address
This 7-bit value specifies the end address location of the repeat block. The RE value is calculated by
hardware based on the RSIZE field and the PC value when the RPTB instruction is executed.
RE = lower 7 bits of (PC + 1 + RSIZE)
15-0
RC
Repeat Count
0
The block will not be repeated; it will be executed only once. In this case the repeat active, RA, bit will
not be set.
10xFFFF
This 16-bit value determines how many times the block will repeat. The counter is initialized when the
RPTB instruction is executed and is decremented when the PC reaches the end of the block. When
the counter reaches zero, the repeat active bit is cleared and the block will be executed one more
time. Therefore the total number of times the block is executed is RC+1.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
695
Pipeline
www.ti.com
10.5 Pipeline
This section describes the VCU pipeline stages and presents cases where pipeline alignment must be
considered.
10.5.1 Pipeline Overview
The C28x VCU pipeline is identical to the C28x pipeline for all standard C28x instructions. In the decode2
stage (D2), it is determined if an instruction is a C28x instruction, a FPU instruction, or a VCU instruction.
The pipeline flow is shown in Figure 10-5.
Notice that stalls due to normal C28x pipeline stalls (D2) and memory waitstates (R2 and W) will also stall
any C28x VCU instruction. Most C28x VCU instructions are single cycle and will complete in the VCU E1
or W stage which aligns to the C28x pipeline. Some instructions will take an additional execute cycle (E2).
For these instructions you must wait a cycle for the result from the instruction to be available. The rest of
this section will describe when delay cycles are required. Keep in mind that the assembly tools for the
C28x+VCU will issue an error if a delay slot has not been handled correctly.
Figure 10-5. C28x + FCU + VCU Pipeline
Fetch
C28x pipeline
F1
Decode
F2
D1
Read
D2
Exe
Write
R1
R2
E
W
FPU instruction
D
R
E1
E2
W
VCU instruction
D
R
E1
E2
W
Load
Store
Complex ADD/SUB Viterbi ADDSUB/SUBADD
FPU ADD/SUB/MPY, Complex MPY
10.5.2 General Guidelines for Floating-Point Pipeline Alignment
The majority of the VCU instructions do not require any special pipeline considerations. This section lists
the few operations that do require special consideration.
While the C28x+VCU assembler will issue errors for pipeline conflicts, you may still find it useful to
understand when software delays are required. This section describes three guidelines you can follow
when writing C28x+VCU assembly code.
VCU instructions that require delay slots have a 'p' after their cycle count. For example '2p' stands for 2
pipelined cycles. This means that an instruction can be started every cycle, but the result of the instruction
will only be valid one instruction later.
There are three general guidelines to determine if an instruction needs a delay slot:
1. Branch metric calculation for a code rate of 1/3 takes 2p cycles.
2. Complex multiply and MAC take 2p cycles.
3. Everything else does not require a delay slot.
696
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline
www.ti.com
An example of the complex multiply instruction is shown in Example 10-2. VCMPY is a 2p instruction and
therefore requires one delay slot. The destination registers for the operation, VR2 and VR3, will be
updated one cycle after the instruction for a total of 2 cycles. Therefore, a NOP or instruction that does not
use VR2 or VR3 must follow this instruction.
Any memory stall or pipeline stall will also stall the VCU. This keeps the VCU aligned with the C28x
pipeline and there is no need to change the code based on the waitstates of a memory block.
Example 10-2. 2p Instruction Pipeline Alignment
VCMPY VR3, VR2, VR1, VR0
NOP
NOP
;
;
;
;
2 pipeline cycles (2p)
1 cycle delay or non-conflicting instruction
<-- VCMPY completes, VR2 and VR3 updated
Any instruction
10.5.3 Parallel Instructions
Parallel instructions are single opcodes that perform two operations in parallel. The guidelines provided in
Section 10.5.2 apply to parallel instructions as well. In this case the cycle count will be given for both
operations. For example, a branch metric calculation for code rate of 1/3 with a parallel load takes 2p/1
cycles. This means the branch metric portion of the operation takes 2 pipelined cycles while the move
portion of the operation is single cycle. NOPs or other non conflicting instructions must be inserted to align
the branch metric calculation portion of the operation as shown in Example 10-4 .
Example 10-3. Branch Metric CR 1/2 Calculation with Parallel Load
;
;
;
;
VITBM2 || VMOV32 instruction: branch metrics calculation with parallel load
VBITM2 is a 1 cycle operation (code rate = 1/2)
VMOV32 is a 1 cycle operation
VITBM2
|| VMOV32
VR0
VR2,
@Val
;
;
;
;
;
Load VR0 with the 2 branch metrics
VR2 gets the contents of Val
<-- VMOV32 completes here (VR2 is valid)
<-- VITBM2 completes here (VR0 is valid)
Any instruction, can use VR2 and/or VR0
Example 10-4. Branch Metric CR 1/3 Calculation with Parallel Load
;
;
;
;
VITBM3 || VMOV32 instruction: branch metrics calculation with parallel load
VBITM3 is a 2p cycle operation (code rate = 1/3)
VMOV32 is a 1 cycle operation
VITBM3
|| VMOV32
VR0, VR1, VR2
VR2, @Val
;
;
;
;
;
;
Load VR0 and VR1 with the 4 branch metrics
VR2 gets the contents of Val
<-- VMOV32 completes here (VR2 is valid)
Must not use VR0 or VR1. Can use VR2.
<-- VITBM3 completes here (VR0, VR1 are valid)
Any instruction, can use VR2 and/or VR0
10.5.4 Invalid Delay Instructions
All VCU, FPU and fixed-point instructions can be used in VCU instruction delay slots as long as source
and destination register conflicts are avoided. The C28x+VCU assembler will issue an error anytime you
use an conflicting instruction within a delay slot. The following guidelines can be used to avoid these
conflicts.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
697
Pipeline
www.ti.com
NOTE:
Destination register conflicts in delay slots:
Any operation used for pipeline alignment delay must not use the same destination register
as the instruction requiring the delay. See Example 10-5.
In Example 10-5 the VCMPY instruction uses VR2 and VR3 as its destination registers. The next
instruction should not use VR2 or VR3 as a destination. Since the VMOV32 instruction uses the VR3
register a pipeline conflict will be issued by the assembler. This conflict can be resolved by using a
register other than VR2 for the VMOV32 instruction as shown in Example 10-6.
698
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline
www.ti.com
Example 10-5. Destination Register Conflict
; Invalid delay instruction.
; Both instructions use the same destination register (VR3)
;
VCMPY VR3, VR2, VR1, VR0
; 2p instruction
VMOV32 VR3, mem32
; Invalid delay instruction
; <-- VCMPY completes, VR3, VR2 are valid
Example 10-6. Destination Register Conflict Resolved
; Valid delay instruction
;
VCMPY VR3, VR2, VR1, VR0
VMOV32 VR7, mem32
NOTE:
; 2p instruction
; Valid delay instruction
Instructions in delay slots cannot use the instruction's destination register as a
source register.
Any operation used for pipeline alignment delay must not use the destination register of the
instruction requiring the delay as a source register as shown in Example 10-7. For parallel
instructions, the current value of a register can be used in the parallel operation before it is
overwritten as shown in Example 10-9.
In Example 10-7 the VCMPY instruction again uses VR3 and VR2 as its destination registers. The next
instruction should not use VR3 or VR2 as its source since the VCMPY will take an additional cycle to
complete. Since the VCADD instruction uses the VR2 as a source register a pipeline conflict will be issued
by the assembler. The use of VR3 will also cause a pipeline conflict. This conflict can be resolved by using
a register other than VR2 or VR3 or by inserting a non-conflicting instruction between the VCMPY and
VCADD instructions. Since the VNEG does not use VR2 or VR3 this instruction can be moved before the
VCADD as shown in Example 10-8.
Example 10-7. Destination/Source Register Conflict
; Invalid delay instruction.
; VCADD should not use VR2 or VR3 as a source operand
;
VCMPY VR3, VR2, VR1, VR0
; 2p instruction
VCADD VR5, VR4, VR3, VR2
; Invalid delay instruction
VNEG VR0
; <- VCMPY completes, VR3, VR2 valid
Example 10-8. Destination/Source Register Conflict Resolved
; Valid delay instruction.
;
VCMPY VR3, VR2, VR1, VR0
VNEG VR0
VCADD VR5, VR4, VR3, VR2
; 2p instruction
; Non conflicting instruction or NOP
; <- VCMPY completes, VR3, VR2 valid
It should be noted that a source register for the 2nd operation within a parallel instruction can be the same
as the destination register of the first operation. This is because the two operations are started at the
same time. The 2nd operation is not in the delay slot of the first operation. Consider Example 10-9 where
the VCMPY uses VR3 and VR2 as its destination registers. The VMOV32 is the 2nd operation in the
instruction and can freely use VR3 or VR2 as a source register. In the example, the contents of VR3
before the multiply will be used by MOV32.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
699
Pipeline
www.ti.com
Example 10-9. Parallel Instruction Destination/Source Exception
; Valid parallel operation.
;
VCMPY VR3,
VR2, VR1, VR0
|| VMOV32 mem32, VR3
NOP
;
;
;
;
;
2p/1 instruction
<-- Uses VR3 before the VCMPY update
<-- mem32 updated
<-- Delay for VCMPY
<-- VR2, VR3 updated
Likewise, the source register for the 2nd operation within a parallel instruction can be the same as one of
the source registers of the first operation. The VCMPY operation in Example 10-10 uses the VR0 register
as one of its sources. This register is also updated by the VMOV32 instruction. The multiplication
operation will use the value in VR0 before the VMOV32 updates it.
Example 10-10. Parallel Instruction Destination/Source Exception
; Valid parallel operation.
VCMPY VR3, VR2, VR1, VR0
|| VMOV32 VR0, mem32
NOP
NOTE:
; 2p/1 instruction
; <-- Uses VR3 before the VCMPY update
; <-- mem32 updated
; <-- Delay for VCMPY
; <-- VR2, VR3 updated
Operations within parallel instructions cannot use the same destination register.
When two parallel operations have the same destination register, the result is invalid.
For example, see Example 10-11.
If both operations within a parallel instruction try to update the same destination register as shown in
Example 10-11 the assembler will issue an error.
Example 10-11. Invalid Destination Within a Parallel Instruction
; Invalid parallel instruction. Both operations use VR3 as a destination register
;
VCMPY VR3, VR2, VR1, VR0
; 2p/1 instruction
|| VMOV32 VR3, mem32
; <-- Invalid
700
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
10.6 Instruction Set
This section describes the assembly language instructions of the VCU. Also described are parallel
operations, conditional operations, resource constraints, and addressing modes. The instructions listed
here are independant from C28x and C28x+FPU instruction sets.
10.6.1 Instruction Descriptions
This section gives detailed information on the instruction set. Each instruction may present the following
information:
• Operands
• Opcode
• Description
• Exceptions
• Pipeline
• Examples
• See also
The example INSTRUCTION is shown to familiarize you with the way each instruction is described. The
example describes the kind of information you will find in each part of the individual instruction description
and where to obtain more information. VCU instructions follow the same format as the C28x; the source
operand(s) are always on the right and the destination operand(s) are on the left.
The explanations for the syntax of the operands used in the instruction descriptions for the C28x VCU are
given in Table 10-8.
Table 10-8. Operand Nomenclature
Symbol
Description
#16FHi
16-bit immediate (hex or float) value that represents the upper 16-bits of an IEEE 32-bit floating-point value.
Lower 16-bits of the mantissa are assumed to be zero.
#16FHiHex
16-bit immediate hex value that represents the upper 16-bits of an IEEE 32-bit floating-point value.
Lower 16-bits of the mantissa are assumed to be zero.
#16FLoHex
A 16-bit immediate hex value that represents the lower 16-bits of an IEEE 32-bit floating-point value
#32Fhex
32-bit immediate value that represents an IEEE 32-bit floating-point value
#32F
Immediate float value represented in floating-point representation
#0.0
Immediate zero
#5-bit
5-bit immediate unsigned value
addr
Opcode field indicating the addressing mode
Im(X), Im(Y)
Imaginary part of the input X or input Y
Im(Z)
Imaginary part of the output Z
Re(X), Re(Y)
Real part of the input X or input Y
Re(Z)
Real part of the output Z
mem16
Pointer (using any of the direct or indirect addressing modes) to a 16-bit memory location
mem32
Pointer (using any of the direct or indirect addressing modes) to a 32-bit memory location
VRa
VR0 - VR8 registers. Some instructions exclude VR8. Refer to the instruction description for details.
VR0H,
VR1H...VR7H
VR0 - VR7 registers, high half.
VR0L, VR1L....VR7L VR0 - VR7 registers, low half.
VT0, VT1
Transition bit register VT0 or VT1.
Each instruction has a table that gives a list of the operands and a short description. Instructions always
have their destination operand(s) first followed by the source operand(s).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
701
Instruction Set
www.ti.com
Table 10-9. INSTRUCTION dest, source1, source2 Short Description
Description
702
dest1
Description for the 1st operand for the instruction
source1
Description for the 2nd operand for the instruction
source2
Description for the 3rd operand for the instruction
Opcode
This section shows the opcode for the instruction
Description
Detailed description of the instruction execution is described. Any constraints on the operands imposed by
the processor or the assembler are discussed.
Restrictions
Any constraints on the operands or use of the instruction imposed by the processor are discussed.
Pipeline
This section describes the instruction in terms of pipeline cycles as described in Section 10.5
Example
Examples of instruction execution. If applicable, register and memory values are given before and after
instruction execution. Some examples are code fragments while other examples are full tasks that assume
the VCU is correctly configured and the main CPU has passed it data.
Operands
Each instruction has a table that gives a list of the operands and a short description. Instructions always
have their destination operand(s) first followed by the source operand(s).
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Instruction Set
www.ti.com
10.6.2
General Instructions
The instructions are listed alphabetically, preceded by a summary.
Table 10-10. General Instructions
Title
......................................................................................................................................
POP RB — Pop the RB Register from the Stack ...................................................................................
PUSH RB — Push the RB Register onto the Stack ................................................................................
RPTB label, loc16 — Repeat A Block of Code .....................................................................................
RPTB label, #RC — Repeat a Block of Code .......................................................................................
VCLEAR VRa — Clear General Purpose Register .................................................................................
VCLEARALL — Clear All General Purpose and Transition Bit Registers ......................................................
VCLROVFI — Clear Imaginary Overflow Flag ......................................................................................
VCLROVFR — Clear Real Overflow Flag ...........................................................................................
VMOV16 mem16, VRaL — Store General Purpose Register, Low Half .........................................................
VMOV16 VRaL, mem16 — Load General Purpose Register, Low Half .........................................................
VMOV32 mem32, VRa — Store General Purpose Register ......................................................................
VMOV32 mem32, VSTATUS — Store VCU Status Register .....................................................................
VMOV32 mem32, VTa — Store Transition Bit Register ...........................................................................
VMOV32 VRa, mem32 — Load 32-bit General Purpose Register ...............................................................
VMOV32 VSTATUS, mem32 — Load VCU Status Register ......................................................................
VMOV32 VTa, mem32 — Load 32-bit Transition Bit Register ....................................................................
VMOVD32 VRa, mem32 — Load Register with Data Move .......................................................................
VMOVIX VRa, #16I — Load Upper Half of a General Purpose Register with I6-bit Immediate ..............................
VMOVZI VRa, #16I — Load General Purpose Register with Immediate.........................................................
VMOVXI VRa, #16I — Load Low Half of a General Purpose Register with Immediate ........................................
VRNDOFF — Disable Rounding ......................................................................................................
VRNDON — Enable Rounding ........................................................................................................
VSATOFF — Disable Saturation .....................................................................................................
VSATON — Enable Saturation .......................................................................................................
VSETSHL #5-bit — Initialize the Left Shift Value ..................................................................................
VSETSHR #5-bit — Initialize the Left Shift Value ..................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
Page
704
706
708
710
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
703
POP RB — Pop the RB Register from the Stack
POP RB
www.ti.com
Pop the RB Register from the Stack
Operands
RB
repeat block register
Opcode
LSW: 1111 1111 1111 0001
Description
Restore the RB register from stack. If a high-priority interrupt contains a RPTB
instruction, then the RB register must be stored on the stack before the RPTB block and
restored after the RTPB block. In a low-priority interrupt RB must always be saved and
restored. This save and restore must occur when interrupts are disabled.
Flags
This instruction does not affect any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
A high priority interrupt is defined as an interrupt that cannot itself be interrupted. In a
high priority interrupt, the RB register must be saved if a RPTB block is used within the
interrupt. If the interrupt service routine does not include a RPTB block, then you do not
have to save the RB register.
; Repeat Block within a High-Priority Interrupt (Non-Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Save RB register only if a RPTB block is used in the ISR
...
...
RPTB _BlockEnd, AL ; Execute the block AL+1 times
...
...
...
_BlockEnd
; End of block to be repeated
...
...
POP RB
; Restore RB register ...
IRET
; RA = RAS, RAS = 0
A low-priority interrupt is defined as an interrupt that allows itself to be interrupted. The
RB register must always be saved and restored in a low-priority interrupt. The RB
register must stored before interrupts are enabled. Likewise before restoring the RB
register interrupts must first be disabled.
; Repeat Block within a Low-Priority Interrupt (Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Always save RB register
...
CLRC INTM
; Enable interrupts only after saving RB
...
...
...
; ISR may or may not include a RPTB block
...
...
SETC INTM
; Disable interrupts before restoring RB
...
POP RB
; Always restore RB register
...
IRET
; RA = RAS, RAS = 0
See also
704
PUSH RB
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
POP RB — Pop the RB Register from the Stack
www.ti.com
RPTB label, loc16
RPTB label, #RC
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
705
PUSH RB — Push the RB Register onto the Stack
PUSH RB
www.ti.com
Push the RB Register onto the Stack
Operands
RB
repeat block register
Opcode
LSW: 1111 1111 1111 0000
Description
Save the RB register on the stack. If a high-priority interrupt contains a RPTB instruction,
then the RB register must be stored on the stack before the RPTB block and restored
after the RTPB block. In a low-priority interrupt RB must always be saved and restored.
This save and restore must occur when interrupts are disabled.
Flags
This instruction does not affect any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
A high priority interrupt is defined as an interrupt that cannot itself be interrupted. In a
high priority interrupt, the RB register must be saved if a RPTB block is used within the
interrupt. If the interrupt service routine does not include a RPTB block, then you do not
have to save the RB register.
; Repeat Block within a High-Priority Interrupt (Non-Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Save RB register only if a RPTB block is used in the ISR
...
...
RPTB _BlockEnd, AL ; Execute the block AL+1 times
...
...
...
_BlockEnd
; End of block to be repeated
...
...
POP RB
; Restore RB register ...
IRET
; RA = RAS, RAS = 0
A low-priority interrupt is defined as an interrupt that allows itself to be interrupted. The
RB register must always be saved and restored in a low-priority interrupt. The RB
register must stored before interrupts are enabled. Likewise before restoring the RB
register interrupts must first be disabled.
; Repeat Block within a Low-Priority Interrupt (Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Always save RB register
...
CLRC INTM
; Enable interrupts only after saving RB
...
...
...
; ISR may or may not include a RPTB block
...
...
SETC INTM
; Disable interrupts before restoring RB
...
POP RB
; Always restore RB register
...
IRET
; RA = RAS, RAS = 0
See also
706
POP RB
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
PUSH RB — Push the RB Register onto the Stack
www.ti.com
RPTB label, loc16
RPTB label, #RC
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
707
RPTB label, loc16 — Repeat A Block of Code
RPTB label, loc16
www.ti.com
Repeat A Block of Code
Operands
label
This label is used by the assembler to determine the end of the repeat block and to calculate RSIZE.
This label should be placed immediately after the last instruction included in the repeat block.
loc16
16-bit location for the repeat count value.
Opcode
LSW: 1011 0101 0bbb bbbb
MSW: 0000 0000
loc16
Description
Initialize repeat block loop, repeat count from [loc16]
Restrictions
•
•
•
•
•
•
•
The maximum block size is ≤127 16-bit words.
An even aligned block must be ≥ 9 16-bit words.
An odd aligned block must be ≥ 8 16-bit words.
Interrupts must be disabled when saving or restoring the RB register.
Repeat blocks cannot be nested.
Any discontinuity type operation is not allowed inside a repeat block. This includes all
call, branch or TRAP instructions. Interrupts are allowed.
Conditional execution operations are allowed.
Flags
This instruction does not affect any flags in the VSTATUS register.
Pipeline
This instruction takes four cycles on the first iteration and zero cycles thereafter. No
special pipeline alignment is required.
Example
The minimum size for the repeat block is 8 words if the block is even aligned and 9
words if the block is odd aligned. If you have a block of 8 words, as in the following
example, you can make sure the block is odd aligned by proceeding it by a .align 2
directive and a NOP instruction. The .align 2 directive will make sure the NOP is even
aligned. Since a NOP is a 16-bit instruction the RPTB will be odd aligned. For blocks of
9 or more words, this is not required.
; Repeat Block of 8 Words (Interruptible)
;
; Note: This example makes use of floating-point (C28x+FPU) instructions
;
;
; find the largest element and put its address in XAR6
.align 2
NOP
RPTB _VECTOR_MAX_END, AR7
; Execute the block AR7+1 times
MOVL ACC,XAR0 MOV32 R1H,*XAR0++
; min size = 8, 9 words
MAXF32 R0H,R1H
; max size = 127 words
MOVST0 NF,ZF
MOVL XAR6,ACC,LT
_VECTOR_MAX_END:
; label indicates the end
; RA is cleared
When an interrupt is taken the repeat active (RA) bit in the RB register is automatically
copied to the repeat active shadow (RAS) bit. When the interrupt exits, the RAS bit is
automatically copied back to the RA bit. This allows the hardware to keep track if a
repeat loop was active whenever an interrupt is taken and restore that state
automatically.
A high priority interrupt is defined as an interrupt that cannot itself be interrupted. In a
high priority interrupt, the RB register must be saved if a RPTB block is used within the
708
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
RPTB label, loc16 — Repeat A Block of Code
www.ti.com
interrupt. If the interrupt service routine does not include a RPTB block, then you do not
have to save the RB register.
; Repeat Block within a High-Priority Interrupt (Non-Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Save RB register only if a RPTB block is used in the ISR
...
...
RPTB _BlockEnd, AL ; Execute the block AL+1 times
...
...
...
_BlockEnd
; End of block to be repeated
...
...
POP RB
; Restore RB register ...
IRET
; RA = RAS, RAS = 0
A low-priority interrupt is defined as an interrupt that allows itself to be interrupted. The
RB register must always be saved and restored in a low-priority interrupt. The RB
register must stored before interrupts are enabled. Likewise before restoring the RB
register interrupts must first be disabled.
; Repeat Block within a Low-Priority Interrupt (Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Always save RB register
...
CLRC INTM
; Enable interrupts only after saving RB
...
...
...
; ISR may or may not include a RPTB block
...
...
SETC INTM
; Disable interrupts before restoring RB
...
POP RB
; Always restore RB register
...
IRET
; RA = RAS, RAS = 0
See also
POP RB
PUSH RB
RPTB label, #RC
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
709
RPTB label, #RC — Repeat a Block of Code
RPTB label, #RC
www.ti.com
Repeat a Block of Code
Operands
label
This label is used by the assembler to determine the end of the repeat block and to calculate RSIZE.
This label should be placed immediately after the last instruction included in the repeat block.
#RC
16-bit immediate value for the repeat count.
Opcode
LSW: 1011 0101 1bbb bbbb
MSW: cccc cccc cccc cccc
Description
Repeat a block of code. The repeat count is specified as a immediate value.
Restrictions
•
•
•
•
•
•
•
The maximum block size is ≤127 16-bit words.
An even aligned block must be ≥ 9 16-bit words.
An odd aligned block must be ≥ 8 16-bit words.
Interrupts must be disabled when saving or restoring the RB register.
Repeat blocks cannot be nested.
Any discontinuity type operation is not allowed inside a repeat block. This includes all
call, branch or TRAP instructions. Interrupts are allowed.
Conditional execution operations are allowed.
Flags
This instruction does not affect any flags in the VSTATUS register.
Pipeline
This instruction takes one cycle on the first iteration and zero cycles thereafter. No
special pipeline alignment is required.
Example
The minimum size for the repeat block is 8 words if the block is even aligned and 9
words if the block is odd aligned. If you have a block of 8 words, as in the following
example, you can make sure the block is odd aligned by proceeding it by a .align 2
directive and a NOP instruction. The .align 2 directive will make sure the NOP is even
aligned. Since a NOP is a 16-bit instruction the RPTB will be odd aligned. For blocks of
9 or more words, this is not required.
; Repeat Block of 8 Words (Interruptible)
;
; Note: This example makes use of floating-point (C28x+FPU) instructions
;
; find the largest element and put its address in XAR6
;
.align 2
NOP
RPTB _VECTOR_MAX_END, AR7
; Execute the block AR7+1 times
MOVL ACC,XAR0 MOV32 R1H,*XAR0++
; min size = 8, 9 words
MAXF32 R0H,R1H
; max size = 127 words
MOVST0 NF,ZF
MOVL XAR6,ACC,LT
_VECTOR_MAX_END:
; label indicates the end
; RA is cleared
When an interrupt is taken the repeat active (RA) bit in the RB register is automatically
copied to the repeat active shadow (RAS) bit. When the interrupt exits, the RAS bit is
automatically copied back to the RA bit. This allows the hardware to keep track if a
repeat loop was active whenever an interrupt is taken and restore that state
automatically.
A high priority interrupt is defined as an interrupt that cannot itself be interrupted. In a
high priority interrupt, the RB register must be saved if a RPTB block is used within the
710
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
RPTB label, #RC — Repeat a Block of Code
www.ti.com
interrupt. If the interrupt service routine does not include a RPTB block, then you do not
have to save the RB register.
; Repeat Block within a
;
; Interrupt:
...
PUSH RB
...
...
RPTB #_BlockEnd, #5
...
...
...
_BlockEnd
...
...
POP RB
IRET
High-Priority Interrupt (Non-Interruptible)
; RAS = RA, RA = 0
; Save RB register only if a RPTB block is used in the ISR
; Execute the block AL+1 times
; End of block to be repeated
; Restore RB register ...
; RA = RAS, RAS = 0
A low-priority interrupt is defined as an interrupt that allows itself to be interrupted. The
RB register must always be saved and restored in a low-priority interrupt. The RB
register must stored before interrupts are enabled. Likewise before restoring the RB
register interrupts must first be disabled.
; Repeat Block within a Low-Priority Interrupt (Interruptible)
;
; Interrupt:
; RAS = RA, RA = 0
...
PUSH RB
; Always save RB register
...
CLRC INTM
; Enable interrupts only after saving RB
...
...
...
; ISR may or may not include a RPTB block
...
...
SETC INTM
; Disable interrupts before restoring RB
...
POP RB
; Always restore RB register
...
IRET
; RA = RAS, RAS = 0
See also
POP RB
PUSH RB
RPTB label, loc16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
711
VCLEAR VRa — Clear General Purpose Register
VCLEAR VRa
www.ti.com
Clear General Purpose Register
Operands
VRa
General purpose register: VR0, VR1... VR8
Opcode
LSW: 1110 0110 1111 1000
MSW: 0000 0000 0000 aaaa
Description
Clear the specified general purpose register.
VRa = 0x00000000;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
;
; Code fragment from a viterbi traceback
; For the first iteration the previous state metric must be
; initalized to zero (VR0).
;
VCLEAR VR0
; Clear the VR0 register
MOVL XAR5,*+XAR4[0]
; Point XAR5 to an array
;
; For first stage
;
VMOV32 VT0, *--XAR3
VMOV32 VT1, *--XAR3
VTRACE *XAR5++,VR0,VT0,VT1
; Uses VR0 (which is zero)
;
; etc...
;
See also
VCLEARALL
VTCLEAR
712
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCLEARALL — Clear All General Purpose and Transition Bit Registers
www.ti.com
VCLEARALL
Clear All General Purpose and Transition Bit Registers
Operands
none
Opcode
LSW: 1110 0110 1111 1001
MSW: 0000 0000 0000 0000
Description
Clear all of the general purpose registers (VR0, VR1... VR8) and the transition bit
registers (VT0 and VT1).
VR0
VR0
VR2
VR3
VR4
VR5
VR6
VR7
VR8
VT0
VT1
=
=
=
=
=
=
=
=
=
=
=
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
0x00000000;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
;
;
;
Context save all VCU VRa and VTa registers
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
VMOV32
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
*SP++,
VR0
VR1
VR2
VR3
VR4
VR5
VR6
VR7
VR8
VT0
VT1
;
; Clear VR0 - VR8, VT0 and VT1
;
VCLEARALL
;
; etc...
See also
VCLEAR VRa
VTCLEAR
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
713
VCLROVFI — Clear Imaginary Overflow Flag
VCLROVFI
www.ti.com
Clear Imaginary Overflow Flag
Operands
none
Opcode
LSW: 1110 0101 0000 1011
Description
Clear the imaginary overflow flag in the VSTATUS register. To clear the real flag, use
the VCLROVFR instruction. The imaginary flag bit can be set by instructions shown in
Table 10-6. Refer to invidual instruction descriptions for details.
VSTATUS[OVFI] = 0;
Flags
This instruction clears the OVFI flag.
Pipeline
This is a single-cycle instruction.
Example
See also
714
VCLROVFR
VRNDON
VSATFOFF
VSATON
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCLROVFR — Clear Real Overflow Flag
www.ti.com
VCLROVFR
Clear Real Overflow Flag
Operands
none
Opcode
LSW: 1110 0101 0000 1010
Description
Clear the real overflow flag in the VSTATUS register. To clear the imaginary flag, use
the VCLROVFI instruction. The imaginary flag bit can be set by instructions shown in
Table 10-6. Refer to invidual instruction descriptions for details.
VSTATUS[OVFR] = 0;
Flags
This instruction clears the OVFR flag.
Pipeline
This is a single-cycle instruction.
Example
See also
VCLROVFI
VRNDON
VSATFOFF
VSATON
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
715
VMOV16 mem16, VRaL — Store General Purpose Register, Low Half
www.ti.com
VMOV16 mem16, VRaL Store General Purpose Register, Low Half
Operands
mem16
Pointer to a 16-bit memory location. This will be the destination of the VMOV16.
VRaL
Low word of a general purpose register: VR0L, VR1L...VR8L.
Opcode
LSW: 1110 0010 0001 1000
MSW: 0000 aaaa mem16
Description
Store the low 16-bits of the specified general purpose register into the 16-bit memory
location.
[mem16] = VRa[15:0];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
716
VMOV16 VRaL, mem16
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOV16 VRaL, mem16 — Load General Purpose Register, Low Half
www.ti.com
VMOV16 VRaL, mem16 Load General Purpose Register, Low Half
Operands
VRaL
Low word of a general purpose register: VR0L, VR1L....VR8L
mem16
Pointer to a 16-bit memory location. This will be the source for the VMOV16.
Opcode
LSW: 1110 0010 1100 1001
MSW: 0000 aaaa mem16
Description
Load the lower 16 bits of the specified general purpose register with the contents of
memory pointed to by mem16.
VRa[15:0] = [mem16];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
;
; Loop will run 106 times for 212 inputs to decoder
;
; Code fragment from viterbi decoder
;
_LOOP:
;
;
; Calculate the branch metrics for code rate = 1/3
; Load VR0L, VR1L and VR2L with inputs
; to the decoder from the array pointed to by XAR5
;
;
VMOV16 VR0L, *XAR5++
VMOV16 VR1L, *XAR5++
VMOV16 VR2L, *XAR5++
;
; VR0L = BM0
; VR0H = BM1
; VR1L = BM2
; VR1H = BM3
; VR2L = pt_old[0]
; VR2H = pt_old[1]
;
VITBM3 VR0, VR1, VR2
VMOV32 VR2, *XAR1++
; etc...
See also
VMOV16 mem16, VRaL
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
717
VMOV32 mem32, VRa — Store General Purpose Register
www.ti.com
VMOV32 mem32, VRa Store General Purpose Register
Operands
mem32
Pointer to a 32-bit memory location. This will be the destination of the VMOV32.
VRa
General purpose reigster VR0, VR1... VR8
Opcode
LSW: 1110 0010 0000 0100
MSW: 0000 aaaa mem32
Description
Store the 32-bit contents of the specified general purpose register into the memory
location pointed to by mem32.
[mem32] = VRa;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
718
VMOV32 mem32, VSTATUS
VMOV32 mem32, VTa
VMOV32 VRa, mem32
VMOV32 VTa, mem32
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOV32 mem32, VSTATUS — Store VCU Status Register
www.ti.com
VMOV32 mem32, VSTATUS Store VCU Status Register
Operands
mem32
Pointer to a 32-bit memory location. This will be the destination of the VMOV32.
VSTATUS
VCU status register.
Opcode
LSW: 1110 0010 0000 1101
MSW: 0000 0000 mem32
Description
Store the VSTATUS register into the memory location pointed to by mem32.
[mem32] = VSTATUS;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VMOV32 mem32, VRa
VMOV32 mem32, VTa
VMOV32 VRa, mem32
VMOV32 VSTATUS, mem32
VMOV32 VTa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
719
VMOV32 mem32, VTa — Store Transition Bit Register
www.ti.com
VMOV32 mem32, VTa Store Transition Bit Register
Operands
mem32
pointer to a 32-bit memory location. This will be the destination of the VMOV32.
VTa
Transition bits register VT0 or VT1
Opcode
LSW: 1110 0010 0000 0101
MSW: 0000 00tt mem32
Description
Store the 32-bits of the specified transition bits register into the memory location pointed
to by mem32.
[mem32] = VTa;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
720
VMOV32 mem32, VRa
VMOV32 mem32, VSTATUS
VMOV32 VRa, mem32
VMOV32 VSTATUS, mem32
VMOV32 VTa, mem32
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOV32 VRa, mem32 — Load 32-bit General Purpose Register
www.ti.com
VMOV32 VRa, mem32 Load 32-bit General Purpose Register
Operands
VRa
General purpose register VR0, VR1....VR8
mem32
Pointer to a 32-bit memory location. This will be the source of the VMOV32.
Opcode
LSW: 1110 0011 1111 0000
MSW: 0000 aaaa mem32
Description
Load the specified general purpose register with the 32-bit value in memory pointed to
by mem32.
VRa = [mem32];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VMOV32 mem32, VRa
VMOV32 mem32, VSTATUS
VMOV32 mem32, VTa
VMOV32 VSTATUS, mem32
VMOV32 VTa, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
721
VMOV32 VSTATUS, mem32 — Load VCU Status Register
www.ti.com
VMOV32 VSTATUS, mem32 Load VCU Status Register
Operands
VSTATUS
VCU status register
mem32
Pointer to a 32-bit memory location. This will be the source of the VMOV32.
Opcode
LSW: 1110 0010 1011 0000
MSW: 0000 0000 mem32
Description
Load the VSTATUS register with the 32-bit value in memory pointed to by mem32.
VSTATUS = [mem32];
Flags
This instruction modifies all bits within the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
722
VMOV32 mem32, VSTATUS
VMOV32 mem32, VTa
VMOV32 VRa, mem32
VMOV32 VTa, mem32
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOV32 VTa, mem32 — Load 32-bit Transition Bit Register
www.ti.com
VMOV32 VTa, mem32 Load 32-bit Transition Bit Register
Operands
VTa
Transition bit register: VT0, VT1
mem32
Pointer to a 32-bit memory location. This will be the source of the VMOV32.
Opcode
LSW: 1110 0011 1111 0001
MSW: 0000 00tt mem32
Description
Load the specified transition bit register with the 32-bit value in memory pointed to by
mem32 .
VTa = [mem32];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VMOV32 mem32, VSTATUS
VMOV32 mem32, VTa
VMOV32 VRa, mem32
VMOV32 VSTATUS, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
723
VMOVD32 VRa, mem32 — Load Register with Data Move
www.ti.com
VMOVD32 VRa, mem32 Load Register with Data Move
Operands
VRa
General purpose registger, VR0, VR1.... VR8
mem32
Pointer to a 32-bit memory location. This will be the source of the VMOV32.
Opcode
LSW: 1110 0010 0010 0100
MSW: 0000 aaaa mem32
Description
Load the specified general purpose register with the 32-bit value in memory pointed to
by mem32. In addition, copy the next 32-bit value in memory to the location pointed to by
mem32.
VRa = [mem32];
[mem32 + 2] = [mem32];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
724
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOVIX VRa, #16I — Load Upper Half of a General Purpose Register with I6-bit Immediate
www.ti.com
VMOVIX VRa, #16I
Load Upper Half of a General Purpose Register with I6-bit Immediate
Operands
VRa
General purpose registger, VR0, VR1... VR8
#16I
16-bit immediate value
Opcode
LSW: 1110 0111 1110 IIII
MSW: IIII IIII IIII aaaa
Description
Load the upper 16-bits of the specified general purpose register with an immediate
value. Leave the lower 16-bits of the register unchanged.
VRa[15:0] = unchanged;
VRa[31:16] = #16I;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VMOVZI VRa, #16I
VMOVXI VRa, #16I
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
725
VMOVZI VRa, #16I — Load General Purpose Register with Immediate
VMOVZI VRa, #16I
www.ti.com
Load General Purpose Register with Immediate
Operands
VRa
General purpose registger, VR0, VR1...VR8
#16I
16-bit immediate value
Opcode
LSW: 1110 0111 1111 IIII
MSW: IIII IIII IIII aaaa
Description
Load the lower 16-bits of the specified general purpose register with an immediate value.
Clear the upper 16-bits of the register.
VRa[15:0] = #16I;
VRa[31:16] = 0x0000;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
726
VMOVIX VRa, #16I
VMOVXI VRa, #16I
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOVXI VRa, #16I — Load Low Half of a General Purpose Register with Immediate
www.ti.com
VMOVXI VRa, #16I
Load Low Half of a General Purpose Register with Immediate
Operands
VRa
General purpose registger, VR0 - VR8
#16I
16-bit immediate value
Opcode
LSW: 1110 0111 0111 IIII
MSW: IIII IIII IIII aaaa
Description
Load the lower 16-bits of the specified general purpose register with an immediate value.
Leave the upper 16 bits unchanged.
VRa[15:0] = #16I;
VRa[31:16] = unchanged;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VMOVIX VRa, #16I
VMOVZI VRa, #16I
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
727
VRNDOFF — Disable Rounding
VRNDOFF
www.ti.com
Disable Rounding
Operands
none
Opcode
LSW: 1110 0101 0000 1001
Description
This instruction disables the rounding mode by clearning the RND bit in the VSTATUS
register. When rounding is disabled, the result of the shift right operation for addition and
subtraction operations will be truncated instead of rounded. The operations affected by
rounding are shown in Table 10-6. Refer to the individual instruction descriptions for
information on how rounding effects the operation. To enable rounding use the VRNDON
instruction.
For more information on rounding, refer to .
VSTATUS[RND] = 0;
Flags
This instruction clears the RND bit in the VSTATUS register. It does not change any
flags.
Pipeline
This is a single-cycle instruction.
Example
See also
728
VCLROVFI
VCLROVFR
VRNDON
VSATFOFF
VSATON
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VRNDON — Enable Rounding
www.ti.com
VRNDON
Enable Rounding
Operands
none
Opcode
LSW: 1110 0101 0000 1000
Description
This instruction enables the rounding mode by setting the RND bit in the VSTATUS
register. When rounding is enabled, the result of the shift right operation for addition and
subtraction operations will be rounded instead of being truncated. The operations
affected by rounding are shown in Table 10-6. Refer to the individual instruction
descriptions for information on how rounding effects the operation. To disable rounding
use the VRNDOFF instruction.
For more information on rounding, refer to .
VSTATUS[RND] = 1;
Flags
This instruction sets the RND bit in the VSTATUS register. It does not change any flags.
Pipeline
This is a single-cycle instruction.
Example
See also
VCLROVFI
VCLROVFR
VRNDOFF
VSATFOFF
VSATON
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
729
VSATOFF — Disable Saturation
VSATOFF
www.ti.com
Disable Saturation
Operands
none
Opcode
LSW: 1110 0101 0000 0111
Description
This instruction disables the satuartion mode by clearing the SAT bit in the VSTATUS
register. When saturation is disabled, results of addition and subtraction are allowed to
overflow or underflow. When saturation is enabled, results will instead be set to a
maximum or minimum value instead of being allowed to overflow or underflow. To
enable saturation use the VSATON instruction.
VSTATUS[SAT] = 0
Flags
This instruction clears the the SAT bit in the VSTATUS register. It does not change any
flags.
Pipeline
This is a single-cycle instruction.
Example
See also
730
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATON
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VSATON — Enable Saturation
www.ti.com
VSATON
Enable Saturation
Operands
none
Opcode
LSW: 1110 0101 0000 0110
Description
This instruction enables the satuartion mode by setting the SAT bit in the VSTATUS
register. When saturation is enables, results of addition and subtraction are not allowed
to overflow or underflow. Results will, instead, be set to a maximum or minimum value.
To disable saturation use the VSATOFF instruction..
VSTATUS[SAT] = 1
Flags
This instruction sets the SAT bit in the VSTATUS register. It does not change any flags.
Pipeline
This is a single-cycle instruction.
Example
See also
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATOFF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
731
VSETSHL #5-bit — Initialize the Left Shift Value
VSETSHL #5-bit
www.ti.com
Initialize the Left Shift Value
Operands
#5-bit
5-bit, unsigned, immediate value
Opcode
LSW: 1110 0101 110s ssss
Description
Load VSTATUS[SHIFTL] with an unsigned, 5-bit, immediate value. The left shift value
specifies the number of bits an operand is shifed by. A value of zero indicates no shift
will be performed. The left shift is used by the and VCDSUB16 and VCDADD16
operations. Refer to the description of these instructions for more information. To load
the right shift value use the VSETSHR #5-bit instruction.
VSTATUS[VSHIFTL] = #5-bit
Flags
This instruction changes the VSHIFTL value in the VSTATUS register. It does not
change any flags.
Pipeline
This is a single-cycle instruction.
Example
See also
732
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VSETSHR #5-bit — Initialize the Left Shift Value
www.ti.com
VSETSHR #5-bit
Initialize the Left Shift Value
Operands
#5-bit
5-bit, unsigned, immediate value
Opcode
LSW: 1110 0101 010s ssss
Description
Load VSTATUS[SHIFTR] with an unsigned, 5-bit, immediate value. The right shift value
specifies the number of bits an operand is shifed by. A value of zero indicates no shift
will be performed. The right shift is used by the VCADD, VCSUB, VCDADD16 and
VCDSUB16 operations. It is also used by the addition portion of the VCMAC. Refer to
the description of these instructions for more information.
VSTATUS[VSHIFTR] = #5-bit
Flags
This instruction changes the VSHIFTR value in the VSTATUS register. It does not
change any flags.
Pipeline
This is a single-cycle instruction.
Example
See also
VSETSHL #5-bit
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
733
Instruction Set
10.6.3
www.ti.com
Complex Math Instructions
The instructions are listed alphabetically, preceded by a summary.
Table 10-11. Complex Math Instructions
Title
......................................................................................................................................
VCADD VR5, VR4, VR3, VR2 — Complex 32 + 32 = 32 Addition ...............................................................
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 32+32 = 32 Add with Parallel Load .................
VCADD VR7, VR6, VR5, VR4 — Complex 32 + 32 = 32- Addition...............................................................
VCDADD16 VR5, VR4, VR3, VR2 — Complex 16 + 32 = 16 Addition ..........................................................
VCDADD16 VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Double Add with Parallel Load .................
VCDSUB16 VR6, VR4, VR3, VR2 — Complex 16-32 = 16 Subtract .............................................................
VCDSUB16 VR6, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 16+32 = 16 Add with Parallel Load ............
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 — Complex Multiply and Accumulate ..............................................
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply and Accumulate with Parallel
Load ............................................................................................................................
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ — Complex Multiply and Accumulate ...................................
VCMPY VR3, VR2, VR1, VR0 — Complex Multiply ................................................................................
VCMPY VR3, VR2, VR1, VR0 || VMOV32 mem32, VRa — Complex Multiply with Parallel Store...........................
VCMPY VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply with Parallel Load ...........................
VNEG VRa — Two's Complement Negate ...........................................................................................
VCSUB VR5, VR4, VR3, VR2 — Complex 32 - 32 = 32 Subtraction ............................................................
VCSUB VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Subtraction .............................................
734
Viterbi, Complex Math and CRC Unit (VCU)
Page
735
737
739
741
745
747
751
753
755
757
761
763
765
767
768
770
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCADD VR5, VR4, VR3, VR2 — Complex 32 + 32 = 32 Addition
www.ti.com
VCADD VR5, VR4, VR3, VR2 Complex 32 + 32 = 32 Addition
Operands
Before the operation, the inputs should be loaded into registers as shown below. Each
operand for this instruction includes a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR5
32-bit integer representing the real part of the first input: Re(X)
VR4
32-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is also a complex number with a 32-bit real and a 32-bit imaginary part. The
result is stored in VR5 and VR4 as shown below:
Output Register
Value
VR5
32-bit integer representing the real part of the result:
Re(Z) = Re(X) + (Re(Y) >> SHIFTR)
VR4
32-bit integer representing the imaginary part of the result:
Im(Z) = Im(X) + (Im(Y) >> SHIFTR)
Opcode
LSW: 1110 0101 0000 0010
Description
Complex 32 + 32 = 32-bit addition operation.
The second input operand (stored in VR3 and VR2) is shifted right by VSTATUS[SHIFR]
bits before the addition. If VSTATUS[RND] is set, then bits shifted out to the right are
rounded, otherwise these bits are truncated. The rounding operation is described in . If
the VSTATUS[SAT] bit is set, then the result will be saturated in the event of an overflow
or underflow.
//
//
//
//
//
//
//
//
//
RND
is VSTATUS[RND]
SAT
is VSTATUS[SAT]
SHIFTR is VSTATUS[SHIFTR]
X:
Y:
VR5 = Re(X)
VR3 = Re(Y)
VR4 = Im(X)
VR2 = Im(Y)
Calculate Z = X + Y
if (RND == 1)
{
VR5 = VR5 +
VR4 = VR4 +
}
else
{
VR5 = VR5 +
VR4 = VR4 +
}
if (SAT == 1)
{
sat32(VR5);
sat32(VR4);
}
round(VR3 >> SHIFTR);
round(VR2 >> SHIFTR);
// Re(Z)
// Im(Z)
(VR3 >> SHIFTR);
(VR2 >> SHIFTR);
// Re(Z)
// Im(Z)
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR5 computation (real part) overflows or underflows.
• OVFI is set if the VR4 computation (imaginary part) overflows or underflows.
Pipeline
This is a single-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
735
VCADD VR5, VR4, VR3, VR2 — Complex 32 + 32 = 32 Addition
www.ti.com
Example
See also
736
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 32+32 = 32 Add with Parallel Load
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 Complex 32+32 = 32 Add with Parallel Load
Operands
Before the operation, the inputs should be loaded into registers as shown below. Each
complex number includes a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR5
32-bit integer representing the real part of the first input: Re(X)
VR4
32-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
mem32
pointer to a 32-bit memory location
The result is also a complex number with a 32-bit real and a 32-bit imaginary part. The
result is stored in VR5 and VR4 as shown below:
Output Register
Value
VR5
32-bit integer representing the real part of the result:
Re(Z) = Re(X) + (Re(Y) >> SHIFTR)
VR4
32-bit integer representing the imaginary part of the result:
Im(Z) = Im(X) + (Im(Y) >> SHIFTR)
VRa
contents of the memory pointed to by [mem32]. VRa can not be VR5, VR4 or VR8.
Opcode
LSW: 1110 0011 1111 1000
MSW: 0000 aaaa mem32
Description
Complex 32 + 32 = 32-bit addition operation with parallel register load.
The second input operand (stored in VR3 and VR2) is shifted right by VSTATUS[SHIFR]
bits before the addition. If VSTATUS[RND] is set, then bits shifted out to the right are
rounded, otherwise these bits are truncated. The rounding operation is described in . If
the VSTATUS[SAT] bit is set, then the result will be saturated in the event of an overflow
or underflow.
In parallel with the addition, VRa is loaded with the contents of memory pointed to by
mem32.
//
//
//
//
//
//
//
//
//
RND
is VSTATUS[RND]
SAT
is VSTATUS[SAT]
SHIFTR is VSTATUS[SHIFTR]
VR5 = Re(X)
VR3 = Re(Y)
VR4 = Im(X)
VR2 = Im(Y)
Z = X + Y
if (RND == 1)
{
VR5 = VR5 +
VR4 = VR4 +
}
else
{
VR5 = VR5 +
VR4 = VR4 +
}
if (SAT == 1)
{
sat32(VR5);
sat32(VR4);
}
VRa = [mem32];
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
round(VR3 >> SHIFTR);
round(VR2 >> SHIFTR);
// Re(Z)
// Im(Z)
(VR3 >> SHIFTR);
(VR2 >> SHIFTR);
// Re(Z)
// Im(Z)
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
737
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 32+32 = 32 Add with Parallel Load
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR5 computation (real part) overflows.
• OVFI is set if the VR4 computation (imaginary part) overflows.
Pipeline
Both operations complete in a single cycle (1/1 cycles).
www.ti.com
Example
See also
738
VCADD VR7, VR6, VR5, VR4
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCADD VR7, VR6, VR5, VR4 — Complex 32 + 32 = 32- Addition
www.ti.com
VCADD VR7, VR6, VR5, VR4 Complex 32 + 32 = 32- Addition
Operands
Before the operation, the inputs should be loaded into registers as shown below. Each
complex number includes a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR7
32-bit integer representing the real part of the first input: Re(X)
VR6
32-bit integer representing the imaginary part of the first input: Im(X)
VR5
32-bit integer representing the real part of the 2nd input: Re(Y)
VR4
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is also a complex number with a 32-bit real and a 32-bit imaginary part. The
result is stored in VR7 and VR6 as shown below:
Output Register
Value
VR6
32-bit integer representing the real part of the result:
Re(Z) = Re(X) + (Re(Y) >> SHIFTR)
VR7
32-bit integer representing the imaginary part of the result:
Im(Z) = Im(X) + (Im(Y) >> SHIFTR)
Opcode
LSW: 1110 0101 0010 1010
Description
Complex 32 + 32 = 32-bit addition operation.
The second input operand (stored in VR5 and VR4) is shifted right by VSTATUS[SHIFR]
bits before the addition. If VSTATUS[RND] is set, then bits shifted out to the right are
rounded, otherwise these bits are truncated. The rounding operation is described in . If
the VSTATUS[SAT] bit is set, then the result will be saturated in the event of an overflow
or underflow.
//
//
//
//
//
//
//
//
//
RND
is VSTATUS[RND]
SAT
is VSTATUS[SAT]
SHIFTR is VSTATUS[SHIFTR]
VR5 = Re(X)
VR3 = Re(Y)
VR4 = Im(X)
VR2 = Im(Y)
Z = X + Y
if (RND == 1)
{
VR7 = VR7 +
VR6 = VR6 +
}
else
{
VR7 = VR5 +
VR6 = VR4 +
}
if (SAT == 1)
{
sat32(VR7);
sat32(VR6);
}
round(VR5 >> SHIFTR);
round(VR4 >> SHIFTR);
// Re(Z)
// Im(Z)
(VR5 >> SHIFTR);
(VR4 >> SHIFTR);
// Re(Z)
// Im(Z)
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR7 computation (real part) overflows.
• OVFI is set if the VR6 computation (imaginary part) overflows.
Pipeline
This is a single-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
739
VCADD VR7, VR6, VR5, VR4 — Complex 32 + 32 = 32- Addition
See also
740
www.ti.com
VCADD VR5, VR4, VR3, VR2
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCDADD16 VR5, VR4, VR3, VR2 — Complex 16 + 32 = 16 Addition
www.ti.com
VCDADD16 VR5, VR4, VR3, VR2 Complex 16 + 32 = 16 Addition
Operands
Before the operation, the inputs should be loaded into registers as shown below. The
first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR4H
16-bit integer representing the real part of the first input: Re(X)
VR4L
16-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is a complex number with a 16-bit real and a 16-bit imaginary part. The result
is stored in VR5 as shown below:
Output Register
Value
VR5H
16-bit integer representing the real part of the result:
Re(Z) = (Re(X) << SHIFTL) + (Re(Y) ) >> SHIFTR
VR5L
16-bit integer representing the imaginary part of the result:
Im(Z) = (Im(X) << SHIFTL) + (Im(Y) ) >> SHIFTR
Opcode
LSW: 1110 0101 0000 0100
Description
Complex 16 + 32 = 16-bit operation. This operation is useful for algorithms similar to a
complex FFT. The first operand is a complex number with a 16-bit real and 16-bit
imaginary part. The second operand has a 32-bit real and a 32-bit imaginary part.
Before the addition, the first input is sign extended to 32-bits and shifted left by
VSTATUS[VSHIFTL] bits. The result of the addition is left shifted by
VSTATUS[VSHIFTR] before it is stored in VR5H and VR5L. If VSTATUS[RND] is set,
then bits shifted out to the right are rounded, otherwise these bits are truncated. The
rounding operation is described in . If the VSTATUS[SAT] bit is set, then the result will
be saturated in the event of a 16-bit overflow or underflow.
//
//
//
//
//
//
//
//
//
//
//
//
RND
SAT
SHIFTR
SHIFTL
is
is
is
is
VR4H
VR4L
VR3
VR2
Re(X)
Im(X)
Re(Y)
Im(Y)
=
=
=
=
VSTATUS[RND]
VSTATUS[SAT]
VSTATUS[SHIFTR]
VSTATUS[SHIFTL]
16-bit
16-bit
32-bit
32-bit
Calculate Z = X + Y
temp1 = sign_extend(VR4H);
temp2 = sign_extend(VR4L);
// 32-bit extended Re(X)
// 32-bit extended Im(X)
temp1 = (temp1 << SHIFTL) + VR3;
temp2 = (temp2 << SHIFTL) + VR2;
// Re(Z) intermediate
// Im(Z) intermediate
if (RND ==
{
temp1 =
temp2 =
}
else
{
temp1 =
temp2 =
}
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
1)
round(temp1 >> SHIFTR);
round(temp2 >> SHIFTR);
truncate(temp1 >> SHIFTR);
truncate(temp2 >> SHIFTR);
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
741
VCDADD16 VR5, VR4, VR3, VR2 — Complex 16 + 32 = 16 Addition
if (SAT
{
VR5H
VR5L
}
else
{
VR5H
VR5L
}
www.ti.com
== 1)
= sat16(temp1);
= sat16(temp2);
= temp1[15:0];
= temp2[15:0];
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the real-part computation (VR5H) overflows or underflows.
• OVFI is set if the imaginary-part computation (VR5L) overflows or underflows.
Pipeline
This is a single-cycle instruction.
Example
;
;Example: Z = X + Y
;
; X = 4 + 3j
(16-bit real + 16-bit imaginary)
; Y = 13 + 12j
(32-bit real + 32-bit imaginary)
;
; Real:
;
temp1 = 0x00000004 + 0x0000000D = 0x00000011
;
VR5H = temp1[15:0] = 0x0011 = 17
; Imaginary:
;
temp2 = 0x00000003 + 0x0000000C = 0x0000000F
;
VR5L = temp2[15:0] = 0x000F = 15
;
VSATOFF
; VSTATUS[SAT] = 0
VRNDOFF
; VSTATUS[RND] = 0
VSETSHR
#0
; VSTATUS[SHIFTR] = 0
VSETSHL
#0
; VSTATUS[SHIFTL] = 0
VCLEARALL
; VR0, VR1...VR8 == 0
VMOVXI
VR3, #13
; VR3 = Re(Y) = 13
VMOVXI
VR2, #12
; VR2 = Im(Y) = 12
VMOVXI
VR4, #3
VMOVIX
VR4, #4
; VR4 = X = 0x00040003 = 4 + 3j
VCDADD16 VR5, VR4, VR3, VR2 ; VR5 = Z = 0x0011000F = 17 + 15j
The next example illustrates the operation with a right shift value defined.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X + Y with Right Shift
X = 4 + 3j
Y = 13 + 12j
Real:
temp1 = (0x00000004 + 0x0000000D ) >> 1
temp1 = (0x00000011) >> 1 = 0x0000008.8
VR5H = temp1[15:0] = 0x0008 = 8
Imaginary:
temp2 = (0x00000003 + 0x0000000C ) >> 1
temp2 = (0x0000000F) >> 1 = 0x0000007.8
VR5L = temp2[15:0] = 0x0007 = 7
VSATOFF
VRNDOFF
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVXI
742
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
#1
#0
VR3, #13
VR2, #12
Viterbi, Complex Math and CRC Unit (VCU)
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 0
VSTATUS[SHIFTR] = 1
VSTATUS[SHIFTL] = 0
VR0, VR1...VR8 == 0
VR3 = Re(Y) = 13
VR2 = Im(Y) = 12
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCDADD16 VR5, VR4, VR3, VR2 — Complex 16 + 32 = 16 Addition
www.ti.com
VMOVXI
VMOVIX
VCDADD16
VR4, #3
VR4, #4
VR5, VR4, VR3, VR2
; VR4 = X = 0x00040003 =
; VR5 = Z = 0x00080007 =
4 +
8 +
3j
7j
The next example illustrates the operation with a right shift value defined as well as
rounding.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X + Y with Right Shift and Rounding
X = 4 + 3j
Y = 13 + 12j
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
Real:
temp1 = round((0x00000004 + 0x0000000D ) >> 1)
temp1 = round(0x00000011 >> 1)
temp1 = round(0x0000008.8) = 0x00000009
VR5H = temp1[15:0] = 0x0011 = 8
Imaginary:
temp2 = round(0x00000003 + 0x0000000C ) >> 1)
temp2 = round(0x0000000F >> 1)
temp2 = round(0x0000007.8) = 0x00000008
VR5L = temp2[15:0] = 0x0008 = 8
VSATOFF
VRNDON
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVXI
VMOVXI
VMOVIX
VCDADD16
#1
#0
VR3,
VR2,
VR4,
VR4,
VR5,
#13
#12
#3
#4
VR4, VR3, VR2
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 1
VSTATUS[SHIFTR] = 1
VSTATUS[SHIFTL] = 0
VR0, VR1...VR8 == 0
VR3 = Re(Y) = 13
VR2 = Im(Y) = 12
; VR4 = X = 0x00040003 =
; VR5 = Z = 0x00090008 =
4 +
9 +
3j
8j
The next example illustrates the operation with both a right and left shift value defined
along with rounding.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X + Y with Right Shift, Left Shift and Rounding
X = -4 + 3j
Y = 13 - 9j
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
Real:
temp1 = 0xFFFFFFFC << 2 + 0x0000000D
temp1 = 0xFFFFFFF0
+ 0x0000000D = 0xFFFFFFFD
temp1 = 0xFFFFFFFD >> 1 = 0xFFFFFFFE.8
temp1 = round(0xFFFFFFFFE.8) = 0xFFFFFFFF
VR5H = temp1[15:0] 0xFFFF = -1;
Imaginary:
temp2 = 0x00000003 << 2 + 0xFFFFFFF7
temp2 = 0x0000000C
+ 0xFFFFFFF7 = 0x00000003
temp2 = 0x00000003 >> 1 = 0x00000001.8
temp1 = round(0x000000001.8 = 0x000000002
VR5L = temp2[15:0] 0x0002 = 2
VSATOFF
VRNDON
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVXI
VMOVIX
VMOVXI
VMOVIX
VCDADD16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
#1
#2
VR3,
VR2,
VR2,
VR4,
VR4,
VR5,
#13
#-9
#0xFFFF
#3
#-4
VR4, VR3, VR2
;
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 1
VSTATUS[SHIFTR] = 1
VSTATUS[SHIFTL] = 2
VR0, VR1...VR8 == 0
VR3 = Re(Y) = 13 = 0x0000000D
VR2 = Im(Y) = -9
sign extend VR2 = 0xFFFFFFF7
; VR4 = X = 0xFFFC0003 = -4 +
; VR5 = Z = 0xFFFF0002 = -1 +
3j
2j
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
743
VCDADD16 VR5, VR4, VR3, VR2 — Complex 16 + 32 = 16 Addition
See also
744
www.ti.com
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VCDADD16 VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHL #5-bit
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VCDADD16 VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Double Add with Parallel Load
VCDADD16 VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 Complex Double Add with Parallel Load
Operands
Before the operation, the inputs should be loaded into registers as shown below. The
first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR4H
16-bit integer representing the real part of the first input: Re(X)
VR4L
16-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
mem32
pointer to a 32-bit memory location.
The result is a complex number with a 16-bit real and a 16-bit imaginary part. The result
is stored in VR5 as shown below:
Output Register
Value
VR5H
16-bit integer representing the real part of the result:
Re(Z) = (Re(X) << SHIFTL) + (Re(Y) ) >> SHIFTR
VR5L
16-bit integer representing the imaginary part of the result:
Im(Z) = (Im(X) << SHIFTL) + (Im(Y) ) >> SHIFTR
VRa
Contents of the memory pointed to by [mem32]. VRa can not be VR5 or VR8.
Opcode
LSW: 1110 0011 1111 1010
MSW: 0000 aaaa mem32
Description
Complex 16 + 32 = 16-bit operation with parallel register load. This operation is useful
for algorithms similar to a complex FFT.
The first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Before the addition, the first input is sign extended to 32-bits and shifted left by
VSTATUS[VSHIFTL] bits. The result of the addition is left shifted by
VSTATUS[VSHIFTR] before it is stored in VR5H and VR5L. If VSTATUS[RND] is set,
then bits shifted out to the right are rounded, otherwise these bits are truncated. The
rounding operation is described in . If the VSTATUS[SAT] bit is set, then the result will
be saturated in the event of a 16-bit overflow or underflow.
//
//
//
//
//
//
//
//
//
RND
SAT
SHIFTR
SHIFTL
is
is
is
is
VR4H
VR4L
VR3
VR2
Re(X)
Im(X)
Re(Y)
Im(Y)
=
=
=
=
VSTATUS[RND]
VSTATUS[SAT]
VSTATUS[SHIFTR]
VSTATUS[SHIFTL]
16-bit
16-bit
32-bit
32-bit
temp1 = sign_extend(VR4H);
temp2 = sign_extend(VR4L);
// 32-bit extended Re(X)
// 32-bit extended Im(X)
temp1 = (temp1 << SHIFTL) + VR3;
temp2 = (temp2 << SHIFTL) + VR2;
// Re(Z) intermediate
// Im(Z) intermediate
if (RND ==
{
temp1 =
temp2 =
}
else
{
temp1 =
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
1)
round(temp1 >> SHIFTR);
round(temp2 >> SHIFTR);
truncate(temp1 >> SHIFTR);
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
745
VCDADD16 VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Double Add with Parallel Load
www.ti.com
temp2 = truncate(temp2 >> SHIFTR);
}
if (SAT == 1)
{
VR5H = sat16(temp1);
VR5L = sat16(temp2);
}
else
{
VR5H = temp1[15:0];
VR5L = temp2[15:0];
}
VRa = [mem32];
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the real-part (VR5H) computation overflows or underflows.
• OVFI is set if the imaginary-part (VR5L) computation overflows or underflows.
Pipeline
Both operations complete in a single cycle.
Example
For more information regarding the addition operation, please refer to the examples for
the VCDADD16 VR5, VR4, VR3, VR2 instruction.
;
;Example: Right Shift, Left Shift and Rounding
;
; X = -4 + 3j
(16-bit real + 16-bit imaginary)
; Y = 13 - 9j
(32-bit real + 32-bit imaginary)
;
;
; Real:
;
temp1 = 0xFFFFFFFC << 2 + 0x0000000D
;
temp1 = 0xFFFFFFF0
+ 0x0000000D = 0xFFFFFFFD
;
temp1 = 0xFFFFFFFD >> 1 = 0xFFFFFFFE.8
;
temp1 = round(0xFFFFFFFFE.8) = 0xFFFFFFFF
;
VR5H = temp1[15:0] 0xFFFF = -1;
; Imaginary:
;
temp2 = 0x00000003 << 2 + 0xFFFFFFF7
;
temp2 = 0x0000000C
+ 0xFFFFFFF7 = 0x00000003
;
temp2 = 0x00000003 >> 1 = 0x00000001.8
;
temp1 = round(0x000000001.8 = 0x000000002
;
VR5L = temp2[15:0] 0x0002 = 2
;
VSATOFF
; VSTATUS[SAT] = 0
VRNDON
; VSTATUS[RND] = 1
VSETSHR
#1
; VSTATUS[SHIFTR] = 1
VSETSHL
#2
; VSTATUS[SHIFTL] = 2
VCLEARALL
; VR0, VR1...VR8 == 0
VMOVXI
VR3, #13
; VR3 = Re(Y) = 13 = 0x0000000D
VMOVXI
VR2, #-9
; VR2 = Im(Y) = -9
VMOVIX
VR2, #0xFFFF
; sign extend VR2 = 0xFFFFFFF7
VMOVXI
VR4, #3
VMOVIX
VR4, #-4
; VR4 = X = 0xFFFC0003 = -4 + 3j
VCDADD16 VR5, VR4, VR3, VR2 ; VR5 = Z = 0xFFFF0002 = -1 + 2j
|| VCMOV32
VR2, *XAR7
; VR2 = value pointed to by XAR7
See also
746
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHL #5-bit
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCDSUB16 VR6, VR4, VR3, VR2 — Complex 16-32 = 16 Subtract
www.ti.com
VCDSUB16 VR6, VR4, VR3, VR2 Complex 16-32 = 16 Subtract
Operands
Before the operation, the inputs should be loaded into registers as shown below. The
first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR4H
16-bit integer representing the real part of the first input: Re(X)
VR4L
16-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is a complex number with a 16-bit real and a 16-bit imaginary part. The result
is stored in VR6 as shown below:
Output Register
Value
VR6H
16-bit integer representing the real part of the result: Re(Z) = (Re(X) << SHIFTL) (Re(Y) ) >> SHIFTR
VR6L
16-bit integer representing the imaginary part of the result: Im(Z) = (Im(X) << SHIFTL) (Im(Y) ) >> SHIFTR
Opcode
LSW: 1110 0101 0000 0101
Description
Complex 16 - 32 = 16-bit operation. This operation is useful for algorithms similar to a
complex FFT.
The first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Before the addition, the first input is sign extended to 32-bits and shifted left by
VSTATUS[VSHIFTL] bits. The result of the subtraction is left shifted by
VSTATUS[VSHIFTR] before it is stored in VR5H and VR5L. If VSTATUS[RND] is set,
then bits shifted out to the right are rounded, otherwise these bits are truncated. The
rounding operation is described in . If the VSTATUS[SAT] bit is set, then the result will
be saturated in the event of a 16-bit overflow or underflow.
//
//
//
//
//
//
//
//
//
RND
SAT
SHIFTR
SHIFTL
is
is
is
is
VR4H
VR4L
VR3
VR2
Re(X)
Im(X)
Re(Y)
Im(Y)
=
=
=
=
VSTATUS[RND]
VSTATUS[SAT]
VSTATUS[SHIFTR]
VSTATUS[SHIFTL]
16-bit
16-bit
32-bit
32-bit
temp1 = sign_extend(VR4H);
temp2 = sign_extend(VR4L);
// 32-bit extended Re(X)
// 32-bit extended Im(X)
temp1 = (temp1 << SHIFTL) - VR3;
temp2 = (temp2 << SHIFTL) - VR2;
// Re(Z) intermediate
// Im(Z) intermediate
if (RND == 1)
{
temp1 = round(temp1 >>
temp2 = round(temp2 >>
}
else
{
temp1 = truncate(temp1
temp2 = truncate(temp2
}
if (SAT == 1)
{
VR5H = sat16(temp1);
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
SHIFTR);
SHIFTR);
>> SHIFTR);
>> SHIFTR);
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
747
VCDSUB16 VR6, VR4, VR3, VR2 — Complex 16-32 = 16 Subtract
www.ti.com
VR5L = sat16(temp2);
}
else
{
VR5H = temp1[15:0];
VR5L = temp2[15:0];
}
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the real-part (VR6H) computation overflows or underflows.
• OVFI is set if the imaginary-part (VR6L) computation overflows or underflows.
Pipeline
This is a single-cycle instruction.
Example
;
;
;
;
;
;
;
;
Example: Z = X - Y
X = 4 + 6j
Y = 13 + 22j
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
Z = (4 - 13) + (6 - 22)j = -9 - 16j
VSATOFF
VRNDOFF
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVXI
VMOVXI
VMOVIX
VCDSUB16
;
;
;
;
;
;
;
#0
#0
VR3,
VR2,
VR4,
VR4,
VR6,
#13
#22
#6
#4
VR4, VR3, VR2
VSTATUS[SAT] = 0
VSTATUS[RND] = 0
VSTATUS[SHIFTR] = 0
VSTATUS[SHIFTL] = 0
VR0, VR1...VR8 = 0
VR3 = Re(Y) = 13 = 0x0000000D
VR2 = Im(Y) = 22j = 0x00000016
; VR4 = X = 0x00040006 = 4 +
6j
; VR5 = Z = 0xFFF7FFF0 = -9 + -16j
The next example illustrates the operation with a right shift value defined.
;
; Example: Z = X - Y with Right Shift
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Y = 4 + 6j
X = 13 + 22j
Real:
temp1 =
temp1 =
temp1 =
VR5H =
Imaginary:
temp2 =
temp2 =
temp2 =
VR5L =
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
(0x00000004 - 0x0000000D) >> 1
(0xFFFFFFF7) >> 1
0xFFFFFFFFB
temp1[15:0] = 0xFFFB = -5
(0x00000006 - 0x00000016) >> 1
(0xFFFFFFF0) >> 1
0xFFFFFFF8
temp2[15:0] = 0xFFF8 = -8
VSATOFF
VRNDOFF
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVXI
VMOVXI
VMOVIX
VCDSUB16
#1
#0
VR3,
VR2,
VR4,
VR4,
VR6,
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 0
VSTATUS[SHIFTR] =
VSTATUS[SHIFTL] =
VR0, VR1...VR8 ==
VR3 = Re(Y) = 13
VR2 = Im(Y) = 22j
1
0
0
= 0x0000000D
= 0x00000016
#13
#22
#6
#4
; VR4 = X = 0x00040006 = 4 + 6j
VR4, VR3, VR2 ; VR5 = Z = 0xFFFBFFF8 = -5 + -8j
The next example illustrates rounding with a right shift value defined.
748
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCDSUB16 VR6, VR4, VR3, VR2 — Complex 16-32 = 16 Subtract
www.ti.com
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X-Y with Rounding and Right Shift
X =
4 + 6j
Y = -13 + 22j
Real:
temp1 =
temp1 =
temp1 =
VR5H =
Imaginary:
temp2 =
temp2 =
temp2 =
VR5L =
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
round((0x00000004 - 0xFFFFFFF3) >> 1)
round(0x00000011) >> 1)
round(0x000000008.8) = 0x000000009
temp1[15:0] = 0x0009 = 9
round((0x00000006 - 0x00000016) >> 1)
round(0xFFFFFFF0) >> 1)
round(0xFFFFFFF8.0) = 0xFFFFFFF8
temp2[15:0] = 0xFFF8 = -8
VSATOFF
VRNDON
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVIX
VMOVXI
VMOVXI
VMOVIX
VCDSUB16
#1
#0
VR3,
VR3,
VR2,
VR4,
VR4,
VR6,
#-13
#0xFFFF
#22
#6
#4
VR4, VR3, VR2
;
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 1
VSTATUS[SHIFTR] =
VSTATUS[SHIFTL] =
VR0, VR1...VR8 ==
VR3 = Re(Y)
sign extend VR3 =
VR2 = Im(Y) = 22j
1
0
0
-13 = 0xFFFFFFF3
= 0x00000016
; VR4 = X = 0x00040006 =
; VR5 = Z = 0x0009FFF8 =
4 + 6j
9 + -8j
The next example illustrates rounding with both a left and a right shift value defined.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X-Y with Rounding and both Left and Right Shift
X =
4 + 6j
Y = -13 + 22j
Real:
temp1 =
temp1 =
temp1 =
temp1 =
VR5H =
Imaginary:
temp2 =
temp2 =
temp2 =
temp1 =
VR5L =
round((0x00000004 <<
round((0x00000010
round( 0x0000001D >>
round( 0x0000000E.8)
temp1[15:0] = 0x000F
2 - 0xFFFFFFF3) >> 1)
- 0xFFFFFFF3) >> 1)
1)
= 0x0000000F
= 15
round((0x00000006 <<
round((0x00000018
round( 0x00000002 >>
round( 0x00000001.0)
temp2[15:0] = 0x0001
2 - 0x00000016) >> 1)
- 0x00000016) >> 1)
1)
= 0x00000001
= 1
VSATOFF
VRNDON
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVIX
VMOVXI
VMOVXI
VMOVIX
VCDSUB16
See also
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
#1
#2
VR3,
VR3,
VR2,
VR4,
VR4,
VR6,
#-13
#0xFFFF
#22
#6
#4
VR4, VR3, VR2
;
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 1
VSTATUS[SHIFTR] =
VSTATUS[SHIFTL] =
VR0, VR1...VR8 ==
VR3 = Re(Y)
sign extend VR3 =
VR2 = Im(Y) = 22j
1
2
0
-13 = 0xFFFFFFF3
= 0x00000016
; VR4 = X = 0x00040006 = 4 +
; VR5 = Z = 0x000F0001 = 15 +
6j
1j
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VRNDOFF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
749
VCDSUB16 VR6, VR4, VR3, VR2 — Complex 16-32 = 16 Subtract
www.ti.com
VRNDON
VSATON
VSATOFF
VSETSHL #5-bit
VSETSHR #5-bit
750
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VCDSUB16 VR6, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 16+32 = 16 Add with Parallel Load
VCDSUB16 VR6, VR4, VR3, VR2 || VMOV32 VRa, mem32 Complex 16+32 = 16 Add with Parallel
Load
Operands
Before the operation, the inputs should be loaded into registers as shown below. The
first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR4H
16-bit integer representing the real part of the first input: Re(X)
VR4L
16-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
mem32
pointer to a 32-bit memory location.
The result is a complex number with a 16-bit real and a 16-bit imaginary part. The result
is stored in VR6 as shown below:
Output Register
Value
VR6H
16-bit integer representing the real part of the result:
Re(Z) = (Re(X) << SHIFTL) + (Re(Y) ) >> SHIFTR
VR6L
16-bit integer representing the imaginary part of the result:
Im(Z) = (Im(X) << SHIFTL) + (Im(Y) ) >> SHIFTR
VRa
Contents of the memory pointed to by [mem32]. VRa can not be VR6 or VR8.
Opcode
LSW: 1110 0010 1100 1010
MSW: 0000 0000 mem16
Description
Complex 16 - 32 = 16-bit operation with parallel load. This operation is useful for
algorithms similar to a complex FFT.
The first operand is a complex number with a 16-bit real and 16-bit imaginary part. The
second operand has a 32-bit real and a 32-bit imaginary part.
Before the addition, the first input is sign extended to 32-bits and shifted left by
VSTATUS[VSHIFTL] bits. The result of the subtraction is left shifted by
VSTATUS[VSHIFTR] before it is stored in VR5H and VR5L. If VSTATUS[RND] is set,
then bits shifted out to the right are rounded, otherwise these bits are truncated. The
rounding operation is described in . If the VSTATUS[SAT] bit is set, then the result will
be saturated in the event of a 16-bit overflow or underflow.
//
//
//
//
//
//
//
//
//
RND
SAT
SHIFTR
SHIFTL
is
is
is
is
VR4H
VR4L
VR3
VR2
Re(X)
Im(X)
Re(Y)
Im(Y)
=
=
=
=
VSTATUS[RND]
VSTATUS[SAT]
VSTATUS[SHIFTR]
VSTATUS[SHIFTL]
16-bit
16-bit
32-bit
32-bit
temp1 = sign_extend(VR4H);
temp2 = sign_extend(VR4L);
if (RND ==
{
temp1 =
temp2 =
}
else
{
temp1 =
temp2 =
}
if (SAT ==
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
// 32-bit extended Re(X)
// 32-bit extended Im(X)
1)
round(temp1 >> SHIFTR);
round(temp2 >> SHIFTR);
truncate(temp1 >> SHIFTR);
truncate(temp2 >> SHIFTR);
1)
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
751
VCDSUB16 VR6, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex 16+32 = 16 Add with Parallel Load
www.ti.com
{
VR5H = sat16(temp1);
VR5L = sat16(temp2);
}
else
{
VR5H = temp1[15:0];
VR5L = temp2[15:0];
}
VRa = [mem32];
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the real-part (VR6H) computation overflows or underflows.
• OVFI is set if the imaginary-part (VR6l) computation overflows or underflows.
Pipeline
Both operations complete in a single cycle.
Example
For more information regarding the subtraction operation, please refer to VCDSUB16
VR6, VR4, VR3, VR2.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Example: Z = X-Y with Rounding and both Left and Right Shift
X =
4 + 6j
Y = -13 + 22j
Real:
temp1 =
temp1 =
temp1 =
temp1 =
VR5H =
Imaginary:
temp2 =
temp2 =
temp2 =
temp1 =
VR5L =
round((0x00000004 <<
round((0x00000010
round( 0x0000001D >>
round( 0x0000000E.8)
temp1[15:0] = 0x000F
2 - 0xFFFFFFF3) >> 1)
- 0xFFFFFFF3) >> 1)
1)
= 0x0000000F
= 15
round((0x00000006 <<
round((0x00000018
round( 0x00000002 >>
round( 0x00000001.0)
temp2[15:0] = 0x0001
2 - 0x00000016) >> 1)
- 0x00000016) >> 1)
1)
= 0x00000001
= 1
VSATOFF
VRNDON
VSETSHR
VSETSHL
VCLEARALL
VMOVXI
VMOVIX
VMOVXI
VMOVXI
VMOVIX
VCDSUB16
|| VCMOV32
See also
752
(16-bit real + 16-bit imaginary)
(32-bit real + 32-bit imaginary)
#1
#2
VR3,
VR3,
VR2,
VR4,
VR4,
VR6,
VR2,
#-13
#0xFFFF
#22
#6
#4
VR4, VR3, VR2
*XAR7
;
;
;
;
;
;
;
;
VSTATUS[SAT] = 0
VSTATUS[RND] = 1
VSTATUS[SHIFTR] =
VSTATUS[SHIFTL] =
VR0, VR1...VR8 ==
VR3 = Re(Y)
sign extend VR3 =
VR2 = Im(Y) = 22j
1
2
0
-13 = 0xFFFFFFF3
= 0x00000016
; VR4 = X = 0x00040006 = 4 + 6j
; VR5 = Z = 0x000F0001 = 15 + 1j
; VR2 = contents pointed to by XAR7
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHL #5-bit
VSETSHR #5-bit
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 — Complex Multiply and Accumulate
www.ti.com
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 Complex Multiply and Accumulate
Operands
Before the operation, the inputs should be loaded into registers as shown below.
Input Register
Value
VR5
32-bit integer, previous real-part accumulation
VR4
32-bit integer, previous imaginary-part accumulation
VR3
32-bit integer, real result from the previous multiply
VR2
32-bit integer, imaginary result from the previous multiply
VR0H
16-bit integer representing the real part of the first input: Re(X)
VR0L
16-bit integer representing the imaginary part of the first input: Im(X)
VR1H
16-bit integer representing the real part of the second input: Re(Y)
VR1L
16-bit integer representing the imaginary part of the second input: Im(Y)
Note: The user will need to do one final addition to accumulate the final multiplications
(Real-VR3 and Imaginary-VR2) into the result registers.
The result is stored as shown below:
Output Register
Value
VR5
32-bit real part of the total accumulation Re(sum) = Re(sum) + Re(mpy)
VR4
32-bit imaginary part of the total accumulation Im(sum) = Im(sum) + Im(mpy
Opcode
LSW: 1110 0101 0011 0001
Description
Complex multiply operation.
//
//
//
//
//
//
//
//
VR5 = Accumulation of the real part
VR4 = Accumulation of the imaginary part
VR0 = X + jX:
VR1 = Y + jY:
VR0[31:16] = X,
VR1[31:16] = Y,
VR0[15:0] = jX
VR1[15:0] = jY
Perform add
if (RND == 1)
{
VR5 = VR5 +
VR4 = VR4 +
}
else
{
VR5 = VR5 +
VR4 = VR4 +
}
round(VR3 >> SHIFTR);
round(VR2 >> SHIFTR);
(VR3 >> SHIFTR);
(VR2 >> SHIFTR);
//
// Perform multiply (X + jX) * (Y * jY)
//
VR3 = VR0H * VR1H - VR0L * VR1L;
Real result
VR2 = VR0H * VR1L + VR0L * VR1H;
Imaginary result
if(SAT == 1)
{
sat32(VR3);
sat32(VR2);
}
VRa = [mem32];
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR3 computation (real part) overflows or underflows.
• OVFI is set if the VR2 computation (imaginary part) overflows or underflows.
Pipeline
This is a 2p-cycle instruction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
753
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 — Complex Multiply and Accumulate
www.ti.com
Example
See also
754
VCLROVFI
VCLROVFR
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32
VSATON
VSATOFF
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply and Accumulate with
Parallel Load
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 Complex Multiply and Accumulate
with Parallel Load
Operands
Before the operation, the inputs should be loaded into registers as shown below.
Input Register
Value
VR5
Previous real-part accumulation
VR4
Previous imaginary-part accumulation
VR3
32-bit real result from the previous multiply
VR2
32-bit imaginary result from the previous multiply
VR0H
16-bit integer representing the real part of the first input: Re(X)
VR0L
16-bit integer representing the imaginary part of the first input: Im(X)
VR1H
16-bit integer representing the real part of the second input: Re(Y)
VR1L
16-bit integer representing the imaginary part of the second input: Im(Y)
mem32
Pointer to 32-bit memory location.
Note: The user will need to do one final addition to accumulate the final multiplications
(Real-VR3 and Imaginary-VR2) into the result registers.
The result is stored as shown below:
Output Register
Value
VR5
32-bit real part of the total accumulation Re(sum) = Re(sum) + Re(mpy)
VR4
32-bit imaginary part of the total accumulation Im(sum) = Im(sum) + Im(mpy)
VRa
Contents of the memory pointed to by [mem32]. VRa cannot be VR5, VR4 or VR8
Note:
Opcode
LSW: 1110 0010 1100 1010
MSW: 0000 0000 mem32
Description
Complex multiply operation.
//
//
//
//
//
//
//
//
VR5 = Accumulation of the real part
VR4 = Accumulation of the imaginary part
VR0 = X + Xj:
VR1 = Y + Yj:
VR0[31:16] = Re(X),
VR1[31:16] = Re(Y),
VR0[15:0] = Im(X)
VR1[15:0] = Im(Y)
Perform add
if (RND == 1)
{
VR5 = VR5 +
VR4 = VR4 +
}
else
{
VR5 = VR5 +
VR4 = VR4 +
}
round(VR3 >> SHIFTR);
round(VR2 >> SHIFTR);
(VR3 >> SHIFTR);
(VR2 >> SHIFTR);
//
// Perform multiply Z = (X + Xj) * (Y * Yj)
//
VR3 = VR0H * VR1H - VR0L * VR1L;
// Re(Z)
VR2 = VR0H * VR1L + VR0L * VR1H;
// Im(Z)
if(SAT == 1)
{
sat32(VR3);
sat32(VR2);
}
VRa = [mem32];
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
755
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply and Accumulate with Parallel Load
www.ti.com
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR3 computation (real part) overflows or underflows.
• OVFI is set if the VR2 computation (imaginary part) overflows or underflows.
Pipeline
This is a 2p/1-cycle instruction. The multiply and accumulate is a 2p-cycle operation and
the VMOV32 is a single-cycle operation.
Example
See also
756
VCLROVFI
VCLROVFR
VCMAC VR5, VR4, VR3, VR2, VR1, VR0
VSATON
VSATOFF
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ — Complex Multiply and Accumulate
www.ti.com
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ Complex Multiply and Accumulate
Operands
The VMAC alternates which registers are used between each cycle. For odd cycles (1,
3, 5, etc) the following registers are used:
Odd Cycle Input
Value
VR5
Previous real-part total accumulation: Re(odd_sum)
VR4
Previous imaginary-part total accumulation: Im(odd-sum)
VR1
Previous real result from the multiply: Re(odd-mpy)
VR0
Previous imaginary result from the multiply Im(odd-mpy)
[mem32]
Pointer to a 32-bit memory location representing the first input to the multiply
[mem32][31:16] = Re(X)
[mem32][15:0] = Im(X)
XAR7
Pointer to a 32-bit memory location representing the second input to the multiply
*XAR7[31:16] = Re(Y)
*XAR7[15:0] = Im(Y)
The result from odd cycle is stored as shown below:
Odd Cycle Output
Value
VR5
32-bit real part of the total accumulation
Re(odd_sum) = Re(odd_sum) + Re(odd_mpy)
VR4
32-bit imaginary part of the total accumulation
Im(sum) = Im(odd_sum) + Im(odd_mpy)
VR1
32-bit real result from the multiplication:
Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
VR0
32-bit imaginary result from the multiplication:
Im(Z) = Re(X)*Im(Y) + Re(Y)*Im(X)
For even cycles (2, 4, 6, etc) the following registers are used:
Even Cycle Input
Value
VR7
Previous real-part total accumulation: Re(even_sum)
VR6
Previous imaginary-part total accumulation: Im(even-sum)
VR3
Previous real result from the multiply: Re(even-mpy)
VR2
Previous imaginary result from the multiply Im(even-mpy)
[mem32]
Pointer to a 32-bit memory location representing the first input to the multiply
[mem32][31:16] = Re(X); (a)
[mem32][15:0] = Im(X); (b)
XAR7
Pointer to a 32-bit memory location representing the second input to the multiply:
*XAR7[31:16] = Re(Y); (c)
*XAR7[15:0] = Im(Y); (d)
The result from even cycles is stored as shown below:
Even Cycle Output Value
VR7
32-bit real part of the total accumulation
Re(even_sum) = Re(even_sum) + Re(even_mpy)
VR6
32-bit imaginary part of the total accumulation
Im(even_sum) = Im(even_sum) + Im(even_mpy)
VR3
32-bit real result from the multiplication:
Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
VR2
32-bit imaginary result from the multiplication:
Im(Z) = Re(X)*Im(Y) + Re(Y)*Im(X)
Opcode
LSW: 1110 0010 0101 0000
MSW: 00bb baaa mem32
Description
Perform a repeated multiply and accumulate operation. This instruction is the only VCU
instruction that can be repeated using the single repeat instruction (RPT ||). When
repeated, the destination of the accumulate will alternate between VR7/VR6 and
VR5/VR4 on each cycle.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
757
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ — Complex Multiply and Accumulate
www.ti.com
// Cycle 1:
//
// Perform accumulate
//
if(RND == 1)
{
VR5 = VR5 + round(VR1 >> SHIFTR)
VR4 = VR4 + round(VR0 >> SHIFTR)
}
else
{
VR5 = VR5 + (VR1 >> SHIFTR)
VR4 = VR4 + (VR0 >> SHIFTR)
}
//
// X and Y array element 0
//
VR1 = Re(X)*Re(Y) - Im(X)*Im(Y)
VR0 = Re(X)*Im(Y) + Re(Y)*Im(X)
//
// Cycle 2:
//
// Perform accumulate
//
if(RND == 1)
{
VR7 = VR7 + round(VR3 >> SHIFTR)
VR6 = VR6 + round(VR2 >> SHIFTR)
}
else
{
VR7 = VR7 + (VR3 >> SHIFTR)
VR6 = VR6 + (VR2 >> SHIFTR)
}
//
// X and Y array element 1
//
VR3 = Re(X)*Re(Y) - Im(X)*Im(Y)
VR2 = Re(X)*Im(Y) + Re(Y)*Im(X)
//
// Cycle 3:
//
// Perform accumulate
//
if(RND == 1)
{
VR5 = VR5 + round(VR1 >> SHIFTR)
VR4 = VR4 + round(VR0 >> SHIFTR)
}
else
{
VR5 = VR5 + (VR1 >> SHIFTR)
VR4 = VR4 + (VR0 >> SHIFTR)
}
//
// X and Y array element 2
//
VR1 = Re(X)*Re(Y) - Im(X)*Im(Y)
VR0 = Re(X)*Im(Y) + Re(Y)*Im(X)
etc...
Restrictions
VR0, VR1, VR2, and VR3 will be used as temporary storage by this instruction.
Flags
The VSTATUS register flags are modified as follows:
• OVFR is set in the case of an overflow or underflow of the addition or subtraction
758
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ — Complex Multiply and Accumulate
www.ti.com
•
Pipeline
operations.
OVFI is set in the case an overflow or underflow of the imaginary part of the addition
or subtraction operations.
When repeated the VMAC takes 2p + N cycles where N is the number of times the
instruction is repeated. When repeated, this instruction has the following pipeline
restrictions:
; No restriction
; Cannot be a 2p instruction that writes
; to VR0, VR1...VR7 registers
RPT #(N-1)
; Execute N times, where N is even
|| VCMAC VR7, VR6, VR5, VR4, *XAR6++, *XAR7++
; No restrictions.
; Can read VR0, VR1... VR8
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
759
VCMAC VR7, VR6, VR5, VR4, mem32, *XAR7++ — Complex Multiply and Accumulate
www.ti.com
MACF32 can also be used standalone. In this case, the insruction takes 2 cycles and the
following pipeline restrictions apply:
; No restriction ; Cannot be a 2p instruction that
writes ; to R2H, R3H, R6H or R7H MACF32 R7H, R3H, *XAR6, *XAR7 ; R3H = R3H + R2H,
R2H = [mem32] * [XAR7++] ; <-R2H and R3H are valid (note: no delay required) NOP
Example
Cascading of RPT || VMAC is allowed as long as the first and subsequent counts are
even. Cascading is useful for creating interruptible windows so that interrupts are not
delayed too long by the RPT instruction. For example:
;
; Example of cascaded VMAC instructions
;
VCLEARALL
; Zero the accumulation registers
;
; Execute MACF32 N+1 (4) times
;
RPT #3
|| VCMAC VR7, VR6, VR5, VR4, *XAR6++, *XAR7++
;
; Execute MACF32 N+1 (6) times
;
RPT #5
|| VCMAC VR7, VR6, VR5, VR4, *XAR6++, *XAR7++
;
; Repeat MACF32 N+1 times where N+1 is even
;
RPT #N
|| MACF32 R7H, R3H, *XAR6++, *XAR7++
ADDF32 VR7, VR6, VR5, VR4
See also
760
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMPY VR3, VR2, VR1, VR0 — Complex Multiply
www.ti.com
VCMPY VR3, VR2, VR1, VR0 Complex Multiply
Operands
Before the operation, the inputs should be loaded into registers as shown below. Both
inputs are complex numbers with a 16-bit real and 16-bit imaginary part.
Input Register
Value
VR0H
16-bit integer representing the real part of the first input: Re(X)
VR0L
16-bit integer representing the imaginary part of the first input: Im(X)
VR1H
16-bit integer representing the real part of the 2nd input: Re(Y)
VR1L
16-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is a complex number with a 32-bit real and a 32-bit imaginary part. The result
is stored in VR2 and VR3 as shown below:
Output Register
Value
VR3
16-bit integer representing the real part of the result:
Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
VR2
16-bit integer representing the imaginary part of the result:
Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
Opcode
LSW: 1110 0101 0000 0000
Description
Complex 16 x 16 = 32-bit multiply operation.
If the VSTATUS[SAT] bit is set, then the result will be saturated in the event of a 32-bit
overflow or underflow.
// VR0 = X + Xj:
VR0[31:16] = Re(X),
// VR1 = Y + Yj:
VR1[31:16] = Re(Y),
//
// Calculate: Z = (X + jX) * (Y + jY)
//
VR3 = VR0H * VR1H - VR0L * VR1L;
VR2 = VR0H * VR1L + VR0L * VR1H;
if(SAT == 1)
{
sat32(VR3);
sat32(VR2);
}
VR0[15:0] = Im(X)
VR1[15:0] = Im(Y)
// Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
// Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR3 computation (real part) overflows or underflows.
• OVFI is set if the VR2 computation (imaginary part) overflows or underflows.
Pipeline
This is a 2p-cycle instruction. The instruciton following this one should not use VR3 or
VR2.
Example
;
;
;
;
;
;
;
;
Example 1
X = 4 + 6j
Y = 12 + 9j
Z = X * Y
Re(Z) = 4*12 - 6*9 = -6
Im(Z) = 4*9 + 6*12 = 108
VSATOFF
VCLEARALL
VMOVXI
VMOVIX
VMOVXI
VMOVIX
VCMPY
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
; VSTATUS[SAT] = 0
; VR0, VR1...VR8 == 0
VR0,
VR0,
VR1,
VR1,
VR3,
#6
#4
#9
#12
VR2, VR1, VR0
; VR0 = X = 0x00040006 =
4 +
6j
; VR1 = Y = 0x000C0009 = 12 + 9j
; VR3 = Re(Z) = 0xFFFFFFFA = -6
; VR2 = Im(Z) = 0x0000006C = 108
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
761
VCMPY VR3, VR2, VR1, VR0 — Complex Multiply
See also
762
www.ti.com
; <- Must not use VR2, VR3
; <- VCMPY completes, VR2, VR3 valid
; Can use VR2, VR3
VCLROVFI
VCLROVFR
VCMAC VR5, VR4, VR3, VR2, VR1, VR0
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32
VSATON
VSATOFF
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMPY VR3, VR2, VR1, VR0 || VMOV32 mem32, VRa — Complex Multiply with Parallel Store
www.ti.com
VCMPY VR3, VR2, VR1, VR0 || VMOV32 mem32, VRa Complex Multiply with Parallel Store
Operands
Before the operation, the inputs should be loaded into registers as shown below. Both
inputs are complex numbers with a 16-bit real and 16-bit imaginary part.
Input Register
Value
VR0H
16-bit integer representing the real part of the first input: Re(X)
VR0L
16-bit integer representing the imaginary part of the first input: Im(X)
VR1H
16-bit integer representing the real part of the 2nd input: Re(Y)
VR1L
16-bit integer representing the imaginary part of the 2nd input: Im(Y)
VRa
Value to be stored.
The result is a complex number with a 32-bit real and a 32-bit imaginary part. The result
is stored in VR2 and VR3 as shown below:
Output Register
Value
VR3
16-bit integer representing the real part of the result:
Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
VR2
16-bit integer representing the imaginary part of the result:
Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
[mem32]
Contents of VRa. VRa can be VR0-VR7. VRa can not be VR8.
Opcode
LSW: 1110 0010 1100 1010
MSW: 0000 0000 mem16
Description
Complex 16 x 16 = 32-bit multiply operation with parallel register load.
If the VSTATUS[SAT] bit is set, then the result will be saturated in the event of a 32-bit
overflow or underflow.
// VR0 = X + jX:
VR0[31:16] = Re(X),
// VR1 = Y + jY:
VR1[31:16] = Re(Y),
//
// Calculate: Z = (X + jX) * (Y + jY)
//
VR3 = VR0H * VR1H - VR0L * VR1L;
VR2 = VR0H * VR1L + VR0L * VR1H;
if(SAT == 1)
{
sat32(VR3);
sat32(VR2);
}
VRa = [mem32];
VR0[15:0] = Im(X)
VR1[15:0] = Im(Y)
// Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
// Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR3 computation (real part) overflows or underflows.
• OVFI is set if the VR2 computation (imaginary part) overflows or underflows.
Pipeline
This is a 2p/1-cycle instruction. The multply operation takes 2p cycles and the VMOV
operation completes in a single cycle. The instruction following this one must not use
VR2 or VR3.
Example
;
;
;
;
;
;
;
;
Example 1
X = 4 + 6j
Y = 12 + 9j
Z = X * Y
Re(Z) = 4*12 - 6*9 = -6
Im(Z) = 4*9 + 6*12 = 108
VSATOFF
VCLEARALL
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
; VSTATUS[SAT] = 0
; VR0, VR1...VR8 == 0
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
763
VCMPY VR3, VR2, VR1, VR0 || VMOV32 mem32, VRa — Complex Multiply with Parallel Store
VMOVXI
VMOVIX
VMOVXI
VMOVIX
VR0,
VR0,
VR1,
VR1,
#6
#4
#9
#12
VCMPY
VR3, VR2, VR1, VR0
|| VMOV32
*XAR7, VR3
multiply)
See also
764
; VR0 = X = 0x00040006 =
;
;
;
;
www.ti.com
4 +
6j
VR1 = Y = 0x000C0009 = 12 + 9j
VR3 = Re(Z) = 0xFFFFFFFA = -6
VR2 = Im(Z) = 0x0000006C = 108
Location XAR7 points to = VR3 (before
; <- Must not use VR2, VR3
; <- VCMPY completes, VR2, VR3 valid
; Can use VR2, VR3
VCLROVFI
VCLROVFR
VCMAC VR5, VR4, VR3, VR2, VR1, VR0
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32
VSATON
VSATOFF
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCMPY VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply with Parallel Load
www.ti.com
VCMPY VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 Complex Multiply with Parallel Load
Operands
Before the operation, the inputs should be loaded into registers as shown below. Both
inputs are complex numbers with a 16-bit real and 16-bit imaginary part.
Input Register
Value
VR0H
16-bit integer representing the real part of the first input: Re(X)
VR0L
16-bit integer representing the imaginary part of the first input: Im(X)
VR1H
16-bit integer representing the real part of the 2nd input: Re(Y)
VR1L
16-bit integer representing the imaginary part of the 2nd input: Im(Y)
mem32
pointer to 32-bit memory location
The result is a complex number with a 32-bit real and a 32-bit imaginary part. The result
is stored in VR2 and VR3 as shown below:
Output Register
Value
VR3
16-bit integer representing the real part of the result:
Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
VR2
16-bit integer representing the imaginary part of the result:
Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
VRa
32-bit value pointed to by [mem32]. VRa can not be VR2, VR3 or VR8.
Opcode
LSW: 1110 0011 1111 0110
MSW: 0000 aaaa mem32
Description
Complex 16 x 16 = 32-bit multiply operation with parallel register load.
If the VSTATUS[SAT] bit is set, then the result will be saturated in the event of a 32-bit
overflow or underflow.
// VR0 = X + jX:
VR0[31:16] = Re(X),
// VR1 = Y + jY:
VR1[31:16] = Re(Y),
//
// Calculate: Z = (X + jX) * (Y + jY)
//
VR3 = VR0H * VR1H - VR0L * VR1L;
VR2 = VR0H * VR1L + VR0L * VR1H;
if(SAT == 1)
{
sat32(VR3);
sat32(VR2);
}
VRa = [mem32];
VR0[15:0] = Im(X)
VR1[15:0] = Im(Y)
// Re(Z) = Re(X)*Re(Y) - Im(X)*Im(Y)
// Im(Z) = Re(X)*Im(Y) + Im(X)*Re(Y)
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR3 computation (real part) overflows or underflows.
• OVFI is set if the VR2 computation (imaginary part) overflows or underflows.
Pipeline
This is a 2p/1-cycle instruction. The multply operation takes 2p cycles and the VMOV
operation completes in a single cycle. The instruction following this one must not use
VR2 or VR3.
Example
;
;
;
;
;
;
;
;
Example 1
X = 4 + 6j
Y = 12 + 9j
Z = X * Y
Re(Z) = 4*12 - 6*9 = -6
Im(Z) = 4*9 + 6*12 = 108
VSATOFF
VCLEARALL
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
; VSTATUS[SAT] = 0
; VR0, VR1...VR8 == 0
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
765
VCMPY VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32 — Complex Multiply with Parallel Load
VMOVXI
VMOVIX
VMOVXI
VMOVIX
||
VR0,
VR0,
VR1,
VR1,
#6
#4
#9
#12
VCMPY
VR3, VR2, VR1, VR0
VMOV32
VR0, *XAR7
See also
766
; VR0 = X = 0x00040006 =
;
;
;
;
;
;
;
www.ti.com
4 +
6j
VR1 = Y = 0x000C0009 = 12 + 9j
VR3 = Re(Z) = 0xFFFFFFFA = -6
VR2 = Im(Z) = 0x0000006C = 108
VR0 = contents of location XAR7 points to
<- Must not use VR2, VR3
<- VCMPY completes, VR2, VR3 valid
Can use VR2, VR3
VCLROVFI
VCLROVFR
VCMAC VR5, VR4, VR3, VR2, VR1, VR0
VCMAC VR5, VR4, VR3, VR2, VR1, VR0 || VMOV32 VRa, mem32
VSATON
VSATOFF
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VNEG VRa — Two's Complement Negate
www.ti.com
VNEG VRa
Two's Complement Negate
Operands
VRa
VRa can be VR0 - VR7. VRa can not be VR8.
Opcode
LSW: 1110 0101 0001 aaaa
Description
Complex add operation.
// SAT
is VSTATUS[SAT]
//
if (VRa == 0x800000000)
{
if(SAT == 1)
{
VRa = 0x7FFFFFFF;
}
else
{
VRa = 0x80000000;
}
}
else
{
VRa = - VRa
}
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the input to the operation is 0x80000000.
Pipeline
This is a single-cycle instruction.
Example
See also
VCLROVFR
VSATON
VSATOFF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
767
VCSUB VR5, VR4, VR3, VR2 — Complex 32 - 32 = 32 Subtraction
www.ti.com
VCSUB VR5, VR4, VR3, VR2 Complex 32 - 32 = 32 Subtraction
Operands
Before the operation, the inputs should be loaded into registers as shown below. Each
complex number includes a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR5
32-bit integer representing the real part of the first input: Re(X)
VR4
32-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
The result is also a complex number with a 32-bit real and a 32-bit imaginary part. The
result is stored in VR5 and VR4 as shown below:
Output Register
Value
VR5
32-bit integer representing the real part of the result:
Re(Z) = Re(X) - (Re(Y) >> SHIFTR)
VR4
32-bit integer representing the imaginary part of the result:
Im(Z) = Im(X) - (Im(Y) >> SHIFTR)
Opcode
LSW: 1110 0101 0000 0011
Description
Complex 32 - 32 = 32-bit subtraction operation.
The second input operand (stored in VR3 and VR2) is shifted right by VSTATUS[SHIFR]
bits before the subtraction. If VSTATUS[RND] is set, then bits shifted out to the right are
rounded, otherwise these bits are truncated. The rounding operation is described in . If
the VSTATUS[SAT] bit is set, then the result will be saturated in the event of an overflow
or underflow.
// RND
is VSTATUS[RND]
// SAT
is VSTATUS[SAT]
// SHIFTR is VSTATUS[SHIFTR]
//
if (RND == 1)
{
VR5 = VR5 - round(VR3 >> SHIFTR);
VR4 = VR4 - round(VR2 >> SHIFTR);
}
else
{
VR5 = VR5 - (VR3 >> SHIFTR);
VR4 = VR4 - (VR2 >> SHIFTR);
}
if (SAT == 1)
{
sat32(VR5);
sat32(VR4);
}
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR5 computation (real part) overflows or underflows.
• OVFI is set if the VR6 computation (imaginary part) overflows or underflows.
Pipeline
This is a single-cycle instruction.
Example
See also
768
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VCSUB VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCLROVFI
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCSUB VR5, VR4, VR3, VR2 — Complex 32 - 32 = 32 Subtraction
www.ti.com
VCLROVFR
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHR #5-bit
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
769
VCSUB VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Subtraction
www.ti.com
VCSUB VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 Complex Subtraction
Operands
Before the operation, the inputs should be loaded into registers as shown below. Each
complex number includes a 32-bit real and a 32-bit imaginary part.
Input Register
Value
VR5
32-bit integer representing the real part of the first input: Re(X)
VR4
32-bit integer representing the imaginary part of the first input: Im(X)
VR3
32-bit integer representing the real part of the 2nd input: Re(Y)
VR2
32-bit integer representing the imaginary part of the 2nd input: Im(Y)
mem32
pointer to a 32-bit memory location
The result is also a complex number with a 32-bit real and a 32-bit imaginary part. The
result is stored in VR5 and VR4 as shown below:
Output Register
Value
VR5
32-bit integer representing the real part of the result:
Re(Z) = Re(X) - (Re(Y) >> SHIFTR)
VR4
32-bit integer representing the imaginary part of the result:
Im(Z) = Im(X) - (Im(Y) >> SHIFTR)
VRa
contents of the memory pointed to by [mem32]. VRa can not be VR5, VR4 or VR8.
Opcode
LSW: 1110 0010 1100 1010
MSW: 0000 0000 mem16
Description
Complex 32 - 32 = 32-bit subtraction operation with parallel load.
The second input operand (stored in VR3 and VR2) is shifted right by VSTATUS[SHIFR]
bits before the subtraction. If VSTATUS[RND] is set, then bits shifted out to the right are
rounded, otherwise these bits are truncated. The rounding operation is described in . If
the VSTATUS[SAT] bit is set, then the result will be saturated in the event of an overflow
or underflow.
// RND
is VSTATUS[RND]
// SAT
is VSTATUS[SAT]
// SHIFTR is VSTATUS[SHIFTR]
//
if (RND == 1)
{
VR5 = VR5 - round(VR3 >> SHIFTR);
VR4 = VR4 - round(VR2 >> SHIFTR);
}
else
{
VR5 = VR5 - (VR3 >> SHIFTR);
VR4 = VR4 - (VR2 >> SHIFTR);
}
if (SAT == 1)
{
sat32(VR5);
sat32(VR4);
}
VRa = [mem32];
Flags
This instruction modifies the following bits in the VSTATUS register:
• OVFR is set if the VR5 computation (real part) overflows or underflows.
• OVFI is set if the VR6 computation (imaginary part) overflows or underflows.
Pipeline
This is a single-cycle instruction.
Example
770
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCSUB VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32 — Complex Subtraction
www.ti.com
See also
VCADD VR5, VR4, VR3, VR2 || VMOV32 VRa, mem32
VCADD VR7, VR6, VR5, VR4
VCSUB VR5, VR4, VR3, VR2
VCLROVFI
VCLROVFR
VRNDOFF
VRNDON
VSATON
VSATOFF
VSETSHR #5-bit
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
771
Instruction Set
10.6.4
www.ti.com
Cyclic Redundancy Check (CRC) Instructions
The instructions are listed alphabetically, preceded by a summary.
Table 10-12. CRC Instructions
Title
......................................................................................................................................
VCRC8H_1 mem16 — CRC8, High Byte ............................................................................................
VCRC8L_1 mem16 — CRC8 , Low Byte ............................................................................................
VCRC16P1H_1 mem16 — CRC16, Polynomial 1, High Byte .....................................................................
VCRC16P1L_1 mem16 — CRC16, Polynomial 1, Low Byte......................................................................
VCRC16P2H_1 mem16 — CRC16, Polynomial 2, High Byte .....................................................................
VCRC16P2L_1 mem16 — CRC16, Polynomial 2, Low Byte......................................................................
VCRC32H_1 mem16 — CRC32, High Byte .........................................................................................
VCRC32L_1 mem16 — CRC32, Low Byte ..........................................................................................
VCRCCLR — Clear CRC Result Register ..........................................................................................
VMOV32 mem32, VCRC — Store the CRC Result Register .....................................................................
VMOV32 VCRC, mem32 — Load the CRC Result Register ......................................................................
772
Viterbi, Complex Math and CRC Unit (VCU)
Page
773
774
775
776
777
778
779
780
781
782
783
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCRC8H_1 mem16 — CRC8, High Byte
www.ti.com
VCRC8H_1 mem16 CRC8, High Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1100
MSW: 0000 0000
mem16
Description
This instruction uses CRC8 polynomial == 0x07.
Calculate the CRC8 of the most significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC8 (VCRC, mem16[15:8])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VCRC8L_1 mem16
See also
VCRC8L_1 mem16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
773
VCRC8L_1 mem16 — CRC8 , Low Byte
www.ti.com
VCRC8L_1 mem16 CRC8 , Low Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1011
MSW: 0000 0000 mem16
Description
This instruction uses CRC8 polynomial == 0x07.
Calculate the CRC8 of the least significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC8 (VCRC, mem16[7:0])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
typedef struct {
uint32_t *CRCResult;
uint16_t *CRCData;
uint16_t CRCLen;
}CRC_CALC;
//
//
//
Address where result should be stored
Start of data
Length of data in bytes
CRC_CALC mycrc;
...
CRC8(&mycrc);
...
; ------------------; Calculate the CRC of a block of data
; This function assumes the block is a multiple of 2 16-bit words
;
.global _CRC8
_CRC8
VCRCCLR
; Clear the result register
MOV
AL,
*+XAR4[4] ; AL = CRCLen
ASR
AL,
2
; AL = CRCLen/4
SUBB
AL,
#1
; AL = CRCLen/4 - 1
MOVL
XAR7,
*+XAR4[2] ; XAR7 = &CRCData
.align 2
NOP
; Align RPTB to an odd address
RPTB _CRC8_done, AL
; Execute block of code AL + 1 times
VCRC8L_1 *XAR7
; Calculate CRC for 4 bytes
VCRC8H_1 *XAR7++
; ...
VCRC8L_1 *XAR7
; ...
VCRC8H_1 *XAR7++
; ...
_CRC8_done
MOVL
XAR7, *_+XAR4[0]
; XAR7 = &CRCResult
MOV32 *+XAR7[0], VCRC
; Store the
result
LRETR
; return to caller
See also
774
VCRC8H_1 mem16
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCRC16P1H_1 mem16 — CRC16, Polynomial 1, High Byte
www.ti.com
VCRC16P1H_1 mem16 CRC16, Polynomial 1, High Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1111
MSW: 0000 0000
mem16
Description
This instruction uses CRC16 polynomial 1 == 0x8005.
Calculate the CRC16 of the most significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC16 (VCRC, mem16[15:8])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example forVCRC16P1L_1 mem16.
See also
VCRC16P1L_1 mem16
VCRC16P2H_1 mem16
VCRC16P2L_1 mem16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
775
VCRC16P1L_1 mem16 — CRC16, Polynomial 1, Low Byte
www.ti.com
VCRC16P1L_1 mem16 CRC16, Polynomial 1, Low Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1110
MSW: 0000 0000
mem16
Description
This instruction uses CRC16 polynomial 1 == 0x8005.
Calculate the CRC16 of the least significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC16 (VCRC, mem16[7:0])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
typedef struct {
uint32_t *CRCResult;
uint16_t *CRCData;
uint16_t CRCLen;
}CRC_CALC;
//
//
//
Address where result should be stored
Start of data
Length of data in bytes
CRC_CALC mycrc;
...
CRC16P1(&mycrc);
...
; ------------------; Calculate the CRC of a block of data
; This function assumes the block is a multiple of 2 16-bit words
;
.global _CRC16P1
_CRC16P1
VCRCCLR
; Clear the result register
MOV
AL,
*+XAR4[4] ; AL = CRCLen
ASR
AL,
2
; AL = CRCLen/4
SUBB
AL,
#1
; AL = CRCLen/4 - 1
MOVL
XAR7,
*+XAR4[2] ; XAR7 = &CRCData
.align 2
NOP
; Align RPTB to an odd address
RPTB _CRC16P1_done, AL
; Execute block of code AL + 1 times
VCRC16P1L_1 *XAR7
; Calculate CRC for 4 bytes
VCRC16P1H_1 *XAR7++
; ...
VCRC16P1L_1 *XAR7
; ...
VCRC16P1H_1 *XAR7++
; ...
_CRC16P1_done
MOVL
XAR7, *_+XAR4[0]
; XAR7 = &CRCResult
MOV32 *+XAR7[0], VCRC
; Store the
result
LRETR
; return to caller
See also
776
VCRC16P1H_1 mem16
VCRC16P2H_1 mem16
VCRC16P2L_1 mem16
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCRC16P2H_1 mem16 — CRC16, Polynomial 2, High Byte
www.ti.com
VCRC16P2H_1 mem16 CRC16, Polynomial 2, High Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1111
MSW: 0001 0000 mem16
Description
This instruction uses CRC16 polynomial 2== 0x1021.
Calculate the CRC16 of the most significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC16 (VCRC, mem16[15:8])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VCRC16P2L_1 mem16.
See also
VCRC16P2L_1 mem16
VCRC16P1H_1 mem16
VCRC16P1L_1 mem16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
777
VCRC16P2L_1 mem16 — CRC16, Polynomial 2, Low Byte
www.ti.com
VCRC16P2L_1 mem16 CRC16, Polynomial 2, Low Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 1110
MSW: 0001 0000
mem16
Description
This instruction uses CRC16 polynomial 2== 0x1021.
Calculate the CRC16 of the least significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC16 (VCRC, mem16[7:0])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
typedef struct {
uint32_t *CRCResult;
uint16_t *CRCData;
uint16_t CRCLen;
}CRC_CALC;
//
//
//
Address where result should be stored
Start of data
Length of data in bytes
CRC_CALC mycrc;
...
CRC16P2(&mycrc);
...
; ------------------; Calculate the CRC of a block of data
; This function assumes the block is a multiple of 2 16-bit words
;
.global _CRC16P2
_CRC16P2
VCRCCLR
; Clear the result register
MOV
AL,
*+XAR4[4] ; AL = CRCLen
ASR
AL,
2
; AL = CRCLen/4
SUBB
AL,
#1
; AL = CRCLen/4 - 1
MOVL
XAR7,
*+XAR4[2] ; XAR7 = &CRCData
.align 2
NOP
; Align RPTB to an odd address
RPTB _CRC16P2_done, AL
; Execute block of code AL + 1 times
VCRC16P2L_1 *XAR7
; Calculate CRC for 4 bytes
VCRC16P2H_1 *XAR7++
; ...
VCRC16P2L_1 *XAR7
; ...
VCRC16P2H_1 *XAR7++
; ...
_CRC16P2_done
MOVL
XAR7, *_+XAR4[0]
; XAR7 = &CRCResult
MOV32 *+XAR7[0], VCRC
; Store the
result
LRETR
; return to caller
See also
778
VCRC16P2H_1 mem16
VCRC16P1H_1 mem16
VCRC16P1L_1 mem16
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCRC32H_1 mem16 — CRC32, High Byte
www.ti.com
VCRC32H_1 mem16 CRC32, High Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 0010
MSW: 0000 0000
mem16
Description
This instruction uses CRC32 polynomial 1 == 0x04C11DB7
Calculate the CRC16 of the most significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC16 (VCRC, mem16[15:8])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VCRC32L_1 mem16.
See also
VCRC32L_1 mem16
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
779
VCRC32L_1 mem16 — CRC32, Low Byte
www.ti.com
VCRC32L_1 mem16 CRC32, Low Byte
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0010 1100 0001
MSW: 0000 0000
mem16
Description
This instruction uses CRC32 polynomial 1 == 0x04C11DB7
Calculate the CRC32 of the least significant byte pointed to by mem16 and accumulate it
with the value in the VCRC register. Store the result in VCRC.
VCRC = CRC32 (VCRC, mem16[7:0])
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
typedef struct {
uint32_t *CRCResult;
uint16_t *CRCData;
uint16_t CRCLen;
}CRC_CALC;
//
//
//
Address where result should be stored
Start of data
Length of data in bytes
CRC_CALC mycrc;
...
CRC32(&mycrc);
...
; ------------------; Calculate the CRC of a block of data
; This function assumes the block is a multiple of 2 16-bit words
;
.global _CRC32
_CRC32
VCRCCLR
; Clear the result register
MOV
AL,
*+XAR4[4] ; AL = CRCLen
ASR
AL,
2
; AL = CRCLen/4
SUBB
AL,
#1
; AL = CRCLen/4 - 1
MOVL
XAR7,
*+XAR4[2] ; XAR7 = &CRCData
.align 2
NOP
; Align RPTB to an odd address
RPTB _CRC16P2_done, AL
; Execute block of code AL + 1 times
VCRC32_1 *XAR7
; Calculate CRC for 4 bytes
VCRC32_1 *XAR7++
; ...
VCRC32_1 *XAR7
; ...
VCRC32_1 *XAR7++
; ...
_CRC32_done
MOVL
XAR7, *_+XAR4[0]
; XAR7 = &CRCResult
MOV32 *+XAR7[0], VCRC
; Store the
result
LRETR
; return to caller
See also
780
VCRC32H_1 mem16
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VCRCCLR — Clear CRC Result Register
www.ti.com
VCRCCLR
Clear CRC Result Register
Operands
mem16
16-bit memory location
Opcode
LSW: 1110 0101 0010 0100
Description
Clear the VCRC register.
VCRC = 0x0000
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VCRC32L_1 mem16.
See also
VMOV32 mem32, VCRC
VMOV32 VCRC, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
781
VMOV32 mem32, VCRC — Store the CRC Result Register
www.ti.com
VMOV32 mem32, VCRC Store the CRC Result Register
Operands
mem32
32-bit memory destination
VCRC
CRC result register
Opcode
LSW: 1110 0010 0000 0110
MSW: 0000 0000
mem32
Description
Store the VCRC register.
[mem32] = VCRC
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
X
See also
VCRCCLR
VMOV32 VCRC, mem32
782
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VMOV32 VCRC, mem32 — Load the CRC Result Register
www.ti.com
VMOV32 VCRC, mem32 Load the CRC Result Register
Operands
mem32
32-bit memory destination
VCRC
CRC result register
Opcode
LSW: 1110 0011 1111 0110
MSW: 0000 0000
mem32
Description
Load the VCRC register.
VCRC = [mem32]
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VCRCCLR
VMOV32 mem32, VCRC
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
783
Instruction Set
10.6.5
www.ti.com
Viterbi Instructions
The instructions are listed alphabetically, preceded by a summary.
Table 10-13. Viterbi Instructions
Title
......................................................................................................................................
VITBM2 VR0 — Code Rate 1:2 Branch Metric Calculation ........................................................................
VITBM2 VR0 || VMOV32 VR2, mem32 — Code Rate 1:2 Branch Metric Calculation with Parallel Load ..................
VITBM3 VR0, VR1, VR2 — Code Rate 1:3 Branch Metric Calculation ..........................................................
VITBM3 VR0, VR1, VR2 || VMOV32 VR2, mem32 — Code Rate 1:3 Branch Metric Calculation with Parallel Load .....
VITDHADDSUB VR4, VR3, VR2, VRa — Viterbi Double Add and Subtract, High .............................................
VITDHADDSUB VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Add and Subtract High with Parallel Store ..............
VITDHSUBADD VR4, VR3, VR2, VRa — Viterbi Add and Subtract Low ........................................................
VITDHSUBADD VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Subtract and Add, High with Parallel Store .............
VITDLADDSUB VR4, VR3, VR2, VRa — Viterbi Add and Subtract Low .......................................................
VITDLADDSUB VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Add and Subtract Low with Parallel Load ...............
VITDLSUBADD VR4, VR3, VR2, VRa — Viterbi Subtract and Add Low .......................................................
VITDLSUBADD VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Subtract and Add, Low with Parallel Store ..............
VITHSEL VRa, VRb, VR4, VR3 — Viterbi Select High ............................................................................
VITHSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 — Viterbi Select High with Parallel Load .......................
VITLSEL VRa, VRb, VR4, VR3 — Viterbi Select, Low Word .....................................................................
VITLSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 — Viterbi Select Low with Parallel Load ........................
VTCLEAR — Clear Transition Bit Registers ........................................................................................
VTRACE mem32, VR0, VT0, VT1 — Viterbi Traceback, Store to Memory .....................................................
VTRACE VR1, VR0, VT0, VT1 — Viterbi Traceback, Store to Register .........................................................
784
Viterbi, Complex Math and CRC Unit (VCU)
Page
785
786
787
788
789
791
792
793
794
795
796
797
798
799
800
801
802
803
805
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VITBM2 VR0 — Code Rate 1:2 Branch Metric Calculation
www.ti.com
VITBM2 VR0
Code Rate 1:2 Branch Metric Calculation
Operands
Before the operation, the inputs are loaded into the registers as shown below. Each
operand for the branch metric calculation is 16-bits.
Input Register
Value
VR0L
16-bit decoder input 0
VR0H
16-bit decoder input 1
The result of the operation is also stored in VR0 as shown below:
Output Register
Value
VR0L
16-bit branch metric 0 = VR0L + VR0H
VR0H
16-bit branch metric 1 = VR0L - VR0L
Opcode
LSW: 1110 0101 0000 1100
Description
Branch metric calculation for code rate = 1/2.
//
//
//
//
//
//
//
SAT is VSTATUS[SAT]
VR0L is decoder input 0
VR0H is decoder input 1
Calculate the branch metrics by performing 16-bit signed
addition and subtraction
VR0L = VR0L + VR0H;
VR0H = VR0L - VR0L;
if (SAT == 1)
{
sat16(VR0L);
sat16(VR0H);
}
// VR0L = branch metric 0
// VR0H = branch metric 1
Flags
This instruction sets the real overflow flag, VSTATUS[OVFR] in the event of an overflow
or underflow.
Pipeline
This is a single-cycle instruction.
Example
See also
VITBM2 VR0 || VMOV32 VR2, mem32
VITBM3 VR0, VR1, VR2
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
785
VITBM2 VR0 || VMOV32 VR2, mem32 — Code Rate 1:2 Branch Metric Calculation with Parallel Load
www.ti.com
VITBM2 VR0 || VMOV32 VR2, mem32 Code Rate 1:2 Branch Metric Calculation with Parallel Load
Operands
Before the operation, the inputs are loaded into the registers as shown below. Each
operand for the branch metric calculation is 16-bits.
Input Register
Value
VR0L
16-bit decoder input 0
VR0H
16-bit decoder input 1
[mem32]
pointer to 32-bit memory location.
The result of the operation is stored in VR0 as shown below:
Output Register
Value
VR0L
16-bit branch metric 0 = VR0L + VR0H
VR0H
16-bit branch metric 1 = VR0L - VR0L
VR2
contents of memory pointed to by [mem32]
Opcode
LSW: 1110 0011 1111 1100
MSW: 0000 aaaa
mem32
Description
Branch metric calculation for a code rate of 1/2 with parallel register load.
//
//
//
//
//
//
//
SAT is VSTATUS[SAT]
VR0L is decoder input 0
VR0H is decoder input 1
Calculate the branch metrics by performing 16-bit signed
addition and subtraction
VR0L = VR0L + VR0H;
VR0H = VR0L - VR0L;
if (SAT == 1)
{
sat16(VR0L);
sat16(VR0H);
}
VR2 = [mem32]
// VR0L = branch metric 0
// VR0H = branch metric 1
// Load VR2L and VR2H with the next state metrics
Flags
This instruction sets the real overflow flag, VSTATUS[OVFR] in the event of an overflow
or underflow.
Pipeline
Both operations complete in a single cycle.
Example
See also
786
VITBM2 VR0
VITBM3 VR0, VR1, VR2
VITBM3 VR0, VR1, VR2 || VMOV32 VR2, mem32
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VITBM3 VR0, VR1, VR2 — Code Rate 1:3 Branch Metric Calculation
www.ti.com
VITBM3 VR0, VR1, VR2 Code Rate 1:3 Branch Metric Calculation
Operands
Before the operation, the inputs are loaded into the registers as shown below. Each
operand for the branch metric calculation is 16-bits.
Input Register
Value
VR0L
16-bit decoder input 0
VR1L
16-bit decoder input 1
VR2L
16-bit decoder input 2
The result of the operation is stored in VR0 and VR1 as shown below:
Output Register
Value
VR0L
16-bit branch metric 0 = VR0L + VR1L + VR2L
VR0H
16-bit branch metric 1 = VR0L + VR1L - VR2L
VR1L
16-bit branch metric 2 = VR0L - VR1L + VR2L
VR1H
16-bit branch metric 3 = VR0L - VR1L - VR2L
Opcode
LSW: 1110 0101 0000
Description
Calculate the four branch metrics for a code rate of 1/3.
//
//
//
//
//
//
//
//
SAT
VR0L
VR1L
VR2L
is
is
is
is
1101
VSTATUS[SAT]
decoder input 0
decoder input 1
decoder input 2
Calculate the branch metrics by performing 16-bit signed
addition and subtraction
VR0L = VR0L + VR1L
VR0H = VR0L + VR1L
VR1L = VR0L - VR1L
VR1H = VR0L - VR1L
if(SAT == 1)
{
sat16(VR0L);
sat16(VR0H);
sat16(VR1L);
sat16(VR1H);
}
+
+
-
VR2L;
VR2L;
VR2L;
VR2L;
//
//
//
//
VR0L
VR0H
VR1L
VR1H
=
=
=
=
branch
branch
branch
branch
Metric
Metric
Metric
Metric
0
1
2
3
Flags
This instruction sets the real overflow flag, VSTATUS[OVFR] in the event of an overflow
or underflow.
Pipeline
This is a 2p-cycle instruction. The instruction following VITBM3 must not use VR0 or
VR1.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITBM2 VR0
VITBM2 VR0 || VMOV32 VR2, mem32
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
787
VITBM3 VR0, VR1, VR2 || VMOV32 VR2, mem32 — Code Rate 1:3 Branch Metric Calculation with Parallel Load
www.ti.com
VITBM3 VR0, VR1, VR2 || VMOV32 VR2, mem32 Code Rate 1:3 Branch Metric Calculation with
Parallel Load
Operands
Before the operation, the inputs are loaded into the registers as shown below. Each
operand for the branch metric calculation is 16-bits.
Input Register
Value
VR0L
16-bit decoder input 0
VR1L
16-bit decoder input 1
[mem32]
pointer to a 32-bit memory location
The result of the operation is stored in VR0 and VR1 and VR2 as shown below:
Output Register
Value
VR0L
16-bit branch metric 0 = VR0L + VR1L + VR2L
VR0H
16-bit branch metric 1 = VR0L + VR1L - VR2L
VR1L
16-bit branch metric 2 = VR0L - VR1L + VR2
VR1H
16-bit branch metric 3 = VR0L - VR1L - VR2L
VR2
Contents of the memory pointed to by [mem32]
Opcode
LSW: 1110 0011 1111
1101
MSW: 0000 aaaa
mem32
Description
Calculate the four branch metrics for a code rate of 1/3 with parallel register load.
//
//
//
//
//
//
//
//
SAT
VR0L
VR1L
VR2L
is
is
is
is
VSTATUS[SAT]
decoder input 0
decoder input 1
decoder input 2
Calculate the branch metrics by performing 16-bit signed
addition and subtraction
VR0L = VR0L + VR1L
VR0H = VR0L + VR1L
VR1L = VR0L - VR1L
VR1H = VR0L - VR1L
if(SAT == 1)
{
sat16(VR0L);
sat16(VR0H);
sat16(VR1L);
sat16(VR1H);
}
VR2 = [mem32];
+
+
-
VR2L;
VR2L;
VR2L;
VR2L;
//
//
//
//
VR0L
VR0H
VR1L
VR1H
=
=
=
=
branch
branch
branch
branch
Metric
Metric
Metric
Metric
0
1
2
3
Flags
This instruction sets the real overflow flag, VSTATUS[OVFR] in the event of an overflow
or underflow.
Pipeline
This is a 2p/1-cycle instruction. The VBITM3 operation takes 2p cycles and the VMOV32
completes in a single cycle. The next instruction must not use VR0 or VR1.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITBM2 VR0
VITBM2 VR0 || VMOV32 VR2, mem32
788
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VITDHADDSUB VR4, VR3, VR2, VRa — Viterbi Double Add and Subtract, High
www.ti.com
VITDHADDSUB VR4, VR3, VR2, VRa Viterbi Double Add and Subtract, High
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaH.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaH
Branch metric 1. VRa must be VR0 or VR1.
The result of the operation is stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L + VRaH
VR3H
16-bit path metric 1 = VR2H - VRaH
VR4L
16-bit path metric 2 = VR2L - VRaH
VR4H
16-bit path metric 3 = VR2H +VRaH
Opcode
LSW: 1110 0101 0111
Description
Viterbi high add and subtract. This instruction is used to calculate four path metrics.
//
//
//
//
//
//
//
aaaa
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaH with the branch metric.
VR3L
VR3H
VR4L
VR4H
=
=
=
=
VR2L
VR2H
VR2L
VR2H
+
+
VRaH
VRaH
VRaH
VRaH
// Path metric 0
// Path metric 1
// Path metric 2
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
;
;
;
;
;
;
Example Viterbi decoder code fragment
Viterbi butterfly calculations
Loop once for each decoder input pair
Branch metrics = BM0 and BM1
XAR5 points to the input stream
...
...
_loop:
VMOV32 VR0, *XAR5++
VITBM2 VR0
|| VMOV32 VR2, *XAR1++
to the decoder
; Load two inputs into VR0L, VR0H
; VR0L = BM0
VR0H = BM1
; Load previous state metrics
;
; 2 cycle Viterbi butterfly
;
VITDLADDSUB VR4,VR3,VR2,VR0 ; Perform add/sub
VITLSEL VR6,VR5,VR4,VR3
; Perform compare/select
|| VMOV32 VR2, *XAR1++
; Load previous state metrics
;
; 2 cycle Viterbi butterfly, next stage
;
VITDHADDSUB VR4,VR3,VR2,VR0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
789
VITDHADDSUB VR4, VR3, VR2, VRa — Viterbi Double Add and Subtract, High
www.ti.com
VITHSEL VR6,VR5,VR4,VR3
|| VMOV32 VR2, *XAR1++
;
; 2 cycle Viterbi butterfly, next stage
;
VITDLADDSUB VR4,VR3,VR2,VR0
|| VMOV32 *XAR2++, VR5
...
...
See also
790
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLADDSUB VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITDHADDSUB VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Add and Subtract High with Parallel Store
VITDHADDSUB VR4, VR3, VR2, VRa || mem32 VRb Viterbi Add and Subtract High with Parallel
Store
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaH.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaH
Branch metric 1. VRa must be VR0 or VR1.
VRb
Value to be stored. VRb can be VR5, VR6, VR7 or VR8.
The result of the operation is stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L + VRaH
VR3H
16-bit path metric 1 = VR2H - VRaH
VR4L
16-bit path metric 2 = VR2L - VRaH
VR4H
16-bit path metric 3 = VR2H +VRaH
[mem32]
Contents of VRb. VRb can be VR5, VR6, VR7 or VR8.
Opcode
LSW: 1110 0101 0000
1001
MSW: bbbb aaaa
mem32
Description
Viterbi high add and subtract. This instruction is used to calculate four path metrics.
//
//
//
//
//
//
//
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaH with the branch metric.
VR3L
VR3H
VR4L
VR4H
=
=
=
=
VR2L
VR2H
VR2L
VR2H
+
+
VRaH
VRaH
VRaH
VRaH
// Path metric 0
// Path metric 1
// Path metric 2
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLADDSUB VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
791
VITDHSUBADD VR4, VR3, VR2, VRa — Viterbi Add and Subtract Low
www.ti.com
VITDHSUBADD VR4, VR3, VR2, VRa Viterbi Add and Subtract Low
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaL.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaL
Branch metric 0. VRa must be VR0 or VR1.
The result of the operation is 4 path metrics stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L - VRaH
VR3H
16-bit path metric 1 = VR2H + VRaH
VR4L
16-bit path metric 2 = VR2L + VRaH
VR4H
16-bit path metric 3 = VR2H - VRaL
Opcode
LSW: 1110 0101 1111
Description
This instruction is used to calculate four path metrics in the Viterbi butterfly. This
operation uses the branch metric stored in VRaL.
//
//
//
//
//
//
//
aaaa
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaL with the branch metric.
VR3L
VR3H
VR4L
VR4H
=
=
=
=
VR2L
VR2H
VR2L
VR2H
+
+
-
VRaL
VRaL
VRaL
VRaL
// Path metric 0
// Path metric 1
// Path metric 2
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
792
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITDHSUBADD VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Subtract and Add, High with Parallel Store
VITDHSUBADD VR4, VR3, VR2, VRa || mem32 VRb Viterbi Subtract and Add, High with Parallel
Store
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaH.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaH
Branch metric 1. VRa must be VR0 or VR1.
VRb
Contents to be stored. VRb can be VR5, VR6, VR7 or VR8.
The result of the operation is stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L -VRaH
VR3H
16-bit path metric 1 = VR2H + VRaH
VR4L
16-bit path metric 2 = VR2L + VRaH
VR4H
16-bit path metric 3 = VR2H - VRaH
[mem32]
Contents of VRb. VRb can be VR5, VR6, VR7 or VR8.
Opcode
LSW: 1110 0010 0000
0101
MSW: bbbb aaaa
mem32
Description
Viterbi high subtract and add. This instruction is used to calculate four path metrics.
//
//
//
//
//
//
//
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaH with the branch metric.
[mem32] = VRb
// Store VRb to memory
VR3L = VR2L - VRaH
// Path metric 0
VR3H = VR2H + VRaH
// Path metric 1
VR4L = VR2L + VRaH
// Path metric 2
VR4H = VR2H - VRaH
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDLADDSUB VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
793
VITDLADDSUB VR4, VR3, VR2, VRa — Viterbi Add and Subtract Low
www.ti.com
VITDLADDSUB VR4, VR3, VR2, VRa Viterbi Add and Subtract Low
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaL.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaL
Branch metric 0. VRa must be VR0 or VR1.
The result of the operation is 4 path metrics stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L + VRaH
VR3H
16-bit path metric 1 = VR2H - VRaH
VR4L
16-bit path metric 2 = VR2L - VRaH
VR4H
16-bit path metric 3 = VR2H + VRaL
Opcode
LSW: 1110 0101 0011
Description
This instruction is used to calculate four path metrics in the Viterbi butterfly. This
operation uses the branch metric stored in VRaL.
//
//
//
//
//
//
//
aaaa
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaL with the branch metric.
VR3L
VR3H
VR4L
VR4H
=
=
=
=
VR2L
VR2H
VR2L
VR2H
+
+
VRaL
VRaL
VRaL
VRaL
// Path metric 0
// Path metric 1
// Path metric 2
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
794
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITDLADDSUB VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Add and Subtract Low with Parallel Load
VITDLADDSUB VR4, VR3, VR2, VRa || mem32 VRb Viterbi Add and Subtract Low with Parallel Load
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaL.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaL
Branch metric 0. VRa can be VR0 or VR1.
VRb
Contents to be stored to memory
The result of the operation is 4 path metrics stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0 = VR2L + VRaH
VR3H
16-bit path metric 1 = VR2H - VRaH
VR4L
16-bit path metric 2 = VR2L - VRaH
VR4H
16-bit path metric 3 = VR2H + VRaL
[mem32]
Contents of VRb. VRb can be VR5, VR6, VR7 or VR8.
Opcode
LSW: 1110 0010 0000
1000
MSW: bbbb aaaa
mem32
Description
This instruction is used to calculate four path metrics in the Viterbi butterfly. This
operation uses the branch metric stored in VRaL.
//
//
//
//
//
//
//
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaL with the branch metric.
[mem32] = VRb
VR3L = VR2L +
VR3H
VR4L
VR4H
// Store VRb
VRaL
// Path metric 0
= VR2H - VRaL
// Path metric 1
= VR2L - VRaL
// Path metric 2
= VR2H + VRaL
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLSUBADD VR4, VR3, VR2, VRa
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
795
VITDLSUBADD VR4, VR3, VR2, VRa — Viterbi Subtract and Add Low
www.ti.com
VITDLSUBADD VR4, VR3, VR2, VRa Viterbi Subtract and Add Low
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaL.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaL
Branch metric 0. VRa must be VR0 or VR1.
The result of the operation is 4 path metrics stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0= VR2L - VRaH
VR3H
16-bit path metric 1 = VR2H + VRaH
VR4L
16-bit path metric 2 = VR2L + VRaH
VR4H
16-bit path metric 3 = VR2H - VRaL
Opcode
LSW: 1110 0101 1110
Description
This instruction is used to calculate four path metrics in the Viterbi butterfly. This
operation uses the branch metric stored in VRaL.
//
//
//
//
//
//
//
aaaa
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaH with the branch metric.
VR3L
VR3H
VR4L
VR4H
=
=
=
=
VR2L
VR2H
VR2L
VR2H
+
+
-
VRaL
VRaL
VRaL
VRaL
// Path metric 0
// Path metric 1
// Path metric 2
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLADDSUB VR4, VR3, VR2, VRa
796
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITDLSUBADD VR4, VR3, VR2, VRa || mem32 VRb — Viterbi Subtract and Add, Low with Parallel Store
VITDLSUBADD VR4, VR3, VR2, VRa || mem32 VRb Viterbi Subtract and Add, Low with Parallel Store
Operands
Before the operation, the inputs are loaded into the registers as shown below. This
operation uses the branch metric stored in VRaL.
Input Register
Value
VR2L
16-bit state metric 0
VR2H
16-bit state metric 1
VRaL
Branch metric 0. VRa must be VR0 or VR1.
VRb
Value to be stored. VRb can be VR5, VR6, VR7 or VR8.
The result of the operation is 4 path metrics stored in VR3 and VR4 as shown below:
Output Register
Value
VR3L
16-bit path metric 0= VR2L - VRaH
VR3H
16-bit path metric 1 = VR2H + VRaH
VR4L
16-bit path metric 2 = VR2L + VRaH
VR4H
16-bit path metric 3 = VR2H - VRaL
[mem32]
Contents of VRb. VRb can be VR5, VR6, VR7 or VR8.
Opcode
LSW: 1110 0010 0000
1010
MSW: bbbb aaaa
mem32
Description
This instruction is used to calculate four path metrics in the Viterbi butterfly. This
operation uses the branch metric stored in VRaL.
//
//
//
//
//
//
//
Calculate the four path metrics by performing 16-bit signed
addition and subtraction
Before this operation VR2L and VR2H are loaded with the state
metrics and VRaH with the branch metric.
[mem32] = VRb
// Store VRb into mem32
VR3L = VR2L - VRaL
// Path metric 0
VR3H = VR2H + VRaL
// Path metric 1
VR4L = VR2L + VRaL
// Path metric 2
VR4H = VR2H - VRaL
// Path metric 3
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITDHADDSUB VR4, VR3, VR2, VRa
VITDHSUBADD VR4, VR3, VR2, VRa
VITDLADDSUB VR4, VR3, VR2, VRa
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
797
VITHSEL VRa, VRb, VR4, VR3 — Viterbi Select High
www.ti.com
VITHSEL VRa, VRb, VR4, VR3 Viterbi Select High
Operands
Before the operation, the path metrics are loaded into the registers as shown below.
Typically this will have been done using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VR3L
16-bit path metric 0
VR3H
16-bit path metric 1
VR4L
16-bit path metric 2
VR4H
16-bit path metric 3
The result of the operation is the new state metrics stored in VRa and VRb as shown
below:
Output Register
Value
VRaH
16-bit state metric 0. VRa can be VR6 or VR8.
VRbH
16-bit state metric 1. VRb can be VR5 or VR7.
VT0
The transition bit is appended to the end of the register.
VT1
The transition bit is appended to the end of the register.
Opcode
LSW: 1110 0110 1111
0111
MSW: 0000 0000 bbbb aaaa
Description
This instruction computes the new state metrics of a Viterbi butterfly operation and
stores them in the higher 16-bits of the VRa and VRb registers. To instead load the state
metrics into the low 16-bits use the VITLSEL instruction.
T0 = T0 << 1
if (VR3L > VR3H)
{
VRbH = VR3L;
T0[0:0] = 0;
}
else
{
VRbH = VR3H;
T0[0:0] = 1;
}
// Shift previous transition bits left
T1 = T1 << 1
if (VR4L > VR4H)
{
VRaH = VR4L;
T1[0:0] = 0;
}
else
{
VRaH = VR4H;
T1[0:0] = 1;
}
// Shift previous transition bits left
// New state metric 0
// Store the transition bit
// New state metric 0
// Store the transition bit
// New state metric 1
// Store the transition bit
// New state metric 1
// Store the transition bit
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITLSEL VRa, VRb, VR4, VR3
798
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITHSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 — Viterbi Select High with Parallel Load
VITHSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 Viterbi Select High with Parallel Load
Operands
Before the operation, the path metrics are loaded into the registers as shown below.
Typically this will have been done using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VR3L
16-bit path metric 0
VR3H
16-bit path metric 1
VR4L
16-bit path metric 2
VR4H
16-bit path metric 3
[mem32]
pointer to 32-bit memory location.
The result of the operation is the new state metrics stored in VRa and VRb as shown
below:
Output Register
Value
VRaH
16-bit state metric 0. VRa can be VR6 or VR8.
VRbH
16-bit state metric 1. VRb can be VR5 or VR7.
VT0
The transition bit is appended to the end of the register.
VT1
The transition bit is appended to the end of the register.
VR2
Contents of the memory pointed to by [mem32].
Opcode
LSW: 1110 0011 1111
1111
MSW: bbbb aaaa
mem32
Description
This instruction computes the new state metrics of a Viterbi butterfly operation and
stores them in the higher 16-bits of the VRa and VRb registers. To instead load the state
metrics into the low 16-bits use the VITLSEL instruction.
T0 = T0 << 1
if (VR3L > VR3H)
{
VRbH = VR3L;
T0[0:0] = 0;
}
else
{
VRbH = VR3H;
T0[0:0] = 1;
}
// Shift previous transition bits left
T1 = T1 << 1
if (VR4L > VR4H)
{
VRaH = VR4L;
T1[0:0] = 0;
}
else
{
VRaH = VR4H;
T1[0:0] = 1;
}
VR2 = [mem32];
// Shift previous transition bits left
// New state metric 0
// Store the transition bit
// New state metric 0
// Store the transition bit
// New state metric 1
// Store the transition bit
// New state metric 1
// Store the transition bit
// Load VR2
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITLSEL VRa, VRb, VR4, VR3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
799
VITLSEL VRa, VRb, VR4, VR3 — Viterbi Select, Low Word
www.ti.com
VITLSEL VRa, VRb, VR4, VR3 Viterbi Select, Low Word
Operands
Before the operation, the path metrics are loaded into the registers as shown below.
Typically this will have been done using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VR3L
16-bit path metric 0
VR3H
16-bit path metric 1
VR4L
16-bit path metric 2
VR4H
16-bit path metric 3
The result of the operation is the new state metrics stored in VRa and VRb as shown
below:
Output Register
Value
VRaL
16-bit state metric 0. VRa can be VR6 or VR8.
VRbL
16-bit state metric 1. VRb can be VR5 or VR7.
VT0
The transition bit is appended to the end of the register.
VT1
The transition bit is appended to the end of the register.
Opcode
LSW: 1110 0110 1111
0110
MSW: 0000 0000 bbbb aaaa
Description
This instruction computes the new state metrics of a Viterbi butterfly operation and
stores them in the higher 16-bits of the VRa and VRb registers. To instead load the state
metrics into the low 16-bits use the VITHSEL instruction.
T0 = T0 << 1
if (VR3L > VR3H)
{
VRbL = VR3L;
T0[0:0] = 0;
}
else
{
VRbL = VR3H;
T0[0:0] = 1;
}
// Shift previous transition bits left
T1 = T1 << 1
if (VR4L > VR4H)
{
VRaL = VR4L;
T1[0:0] = 0;
}
else
{
VRaL = VR4H;
T1[0:0] = 1;
}
// Shift previous transition bits left
// New state metric 0
// Store the transition bit
// New state metric 0
// Store the transition bit
// New state metric 1
// Store the transition bit
// New state metric 1
// Store the transition bit
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITHSEL VRa, VRb, VR4, VR3
800
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
www.ti.com
VITLSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 — Viterbi Select Low with Parallel Load
VITLSEL VRa, VRb, VR4, VR3 || VMOV32 VR2, mem32 Viterbi Select Low with Parallel Load
Operands
Before the operation, the path metrics are loaded into the registers as shown below.
Typically this will have been done using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VR3L
16-bit path metric 0
VR3H
16-bit path metric 1
VR4L
16-bit path metric 2
VR4H
16-bit path metric 3
mem32
Pointer to 32-bit memory location.
The result of the operation is the new state metrics stored in VRa and VRb as shown
below:
Output Register
Value
VRaL
16-bit state metric 0. VRa can be VR6 or VR8.
VRbL
16-bit state metric 1. VRb can be VR5 or VR7.
VT0
The transition bit is appended to the end of the register.
VT1
The transition bit is appended to the end of the register.
VR2
Contents of 32-bit memory pointed to by mem32.
Opcode
LSW: 1110 0011 1111
1110
MSW: bbbb aaaa
mem32
Description
This instruction computes the new state metrics of a Viterbi butterfly operation and
stores them in the higher 16-bits of the VRa and VRb registers. To instead load the state
metrics into the low 16-bits use the VITHSEL instruction. In parallel the VR2 register is
loaded with the contents of memory pointed to by [mem32].
T0 = T0 << 1
if (VR3L > VR3H)
{
VRbL = VR3L;
T0[0:0] = 0;
}
else
{
VRbL = VR3H;
T0[0:0] = 1;
}
// Shift previous transition bits left
T1 = T1 << 1
if (VR4L > VR4H)
{
VRaL = VR4L;
T1[0:0] = 0;
}
else
{
VRaL = VR4H;
T1[0:0] = 1;
}
VR2 = [mem32]
// Shift previous transition bits left
// New state metric 0
// Store the transition bit
// New state metric 0
// Store the transition bit
// New state metric 1
// Store the transition bit
// New state metric 1
// Store the transition bit
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
Refer to the example for VITDHADDSUB VR4, VR3, VR2, VRa.
See also
VITHSEL VRa, VRb, VR4, VR3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
801
VTCLEAR — Clear Transition Bit Registers
VTCLEAR
www.ti.com
Clear Transition Bit Registers
Operands
none
Opcode
LSW: 1110 0101 0010
Description
Clear the VT0 and VT1 registers.
1001
VT0 = 0;
VT1 = 0;
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
802
VCLEARALL
VCLEAR VRa
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VTRACE mem32, VR0, VT0, VT1 — Viterbi Traceback, Store to Memory
www.ti.com
VTRACE mem32, VR0, VT0, VT1 Viterbi Traceback, Store to Memory
Operands
Before the operation, the path metrics are loaded into the registers as shown below
using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VT0
transition bit register 0
VT1
transiton bit register 1
VR0
Initial value is zero. After the first VTRACE, this contains infromation from the
previous trace-back.
The result of the operation is the new state metrics stored in VRa and VRb as shown
below:
Output Register
Value
[mem32]
Traceback result from the transiton bits.
Opcode
LSW: 1110 0010 0000
1100
MSW: 0000 0000
mem32
Description
Trace-back from the transition bits stored in VT0 and VT1 registers. Write the result to
memory. The transition bits in the VT0 and VT1 registers are stored in the following
format by the VITLSEL and VITHSEL instructions:
VT0[31]
Transition bit [State 0]
VT0[30]
Transition bit [State 1]
VT0[29]
Transition bit [State 2]
...
...
VT0[0]
Transition bit [State 31]
VT1[31]
Transition bit [State 32]
VT1[30]
Transition bit [State 33]
VT1[29]
Transition bit [State 34]
...
...
VT1[0]
Transition bit [State 63]
//
// Calculate the decoder output bit by performing a
// traceback from the transition bits stored in the VT0 and VT1 registers
//
S = VR0[5:0];
VR0[31:6] = 0;
if (S < 32)
{
temp[0] = VT0[31-S];
}
else
{
temp[0] = VT1[63-S];
}
*[mem32][0] = temp;
*[mem32][31:1] = 0;
VR0[5:0] = 2*VR0[5:0] + temp[0];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
//
// Example traceback code fragment
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
803
VTRACE mem32, VR0, VT0, VT1 — Viterbi Traceback, Store to Memory
www.ti.com
//
// XAR5 points to the beginning of Decoder Output array
//
VCLEAR VR0
MOVL XAR5,*+XAR4[0]
//
// To retrieve each original message:
// Load VT0/VT1 with the stored transition values
// and use VTRACE instruction
//
VMOV32 VT0, *--XAR3
VMOV32 VT1, *--XAR3
VTRACE *XAR5++, VR0, VT0, VT1
VMOV32
VMOV32
VTRACE
...
...etc
See also
804
VT0, *--XAR3
VT1, *--XAR3
*XAR5++, VR0, VT0, VT1
for each VT0/VT1 pair
VTRACE VR1, VR0, VT0, VT1
Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
VTRACE VR1, VR0, VT0, VT1 — Viterbi Traceback, Store to Register
www.ti.com
VTRACE VR1, VR0, VT0, VT1 Viterbi Traceback, Store to Register
Operands
Before the operation, the path metrics are loaded into the registers as shown below
using a Viterbi AddSub or SubAdd instruction.
Input Register
Value
VT0
transition bit register 0
VT1
transiton bit register 1
VR0
Initial value is zero. After the first VTRACE, this contains infromation from the
previous trace-back.
The result of the operation is the output of the decoder stored in VR1:
Output Register
Value
VR1
Traceback result from the transiton bits.
Opcode
LSW: 1110 0101 0010
Description
Trace-back from the transition bits stored in VT0 and VT1 registers. Write the result to
VR1. The transition bits in the VT0 and VT1 registers are stored in the following format
by the VITLSEL and VITHSEL instructions:
1000
VT0[31]
Transition bit [State 0]
VT0[30]
Transition bit [State 1]
VT0[29]
Transition bit [State 2]
...
...
VT0[0]
Transition bit [State 31]
VT1[31]
Transition bit [State 32]
VT1[30]
Transition bit [State 33]
VT1[29]
Transition bit [State 34]
...
...
VT1[0]
Transition bit [State 63]
//
// Calculate the decoder output bit by performing a
// traceback from the transition bits stored in the VT0 and VT1 registers
//
S = VR0[5:0];
VR0[31:6] = 0;
if (S < 32)
{
temp[0] = VT0[31-S];
}
else
{
temp[0] = VT1[63-S];
}
VR1[0] = temp;
VR1[31:1] = 0;
VR0[5:0] = 2*VR0[5:0] + temp[0];
Flags
This instruction does not modify any flags in the VSTATUS register.
Pipeline
This is a single-cycle instruction.
Example
See also
VTRACE mem32, VR0, VT0, VT1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
805
Rounding Mode
www.ti.com
10.7 Rounding Mode
This section details the rounding operation as applied to a right shift. When the rounding mode is enabled
in the VSTATUS register, .5 will be added to the right shifted intermediate value before truncation. If
rounding is disabled the right shifted value is only truncated. Table 10-14shows the bit representation of
two values, 11.0 and 13.0. The columns marked Bit-1, Bit-2 and Bit-3 hold temporary bits resulting from
the right shift operation.
Table 10-14. Example: Values Before Shift Right
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Bit-1
Bit-2
Bit -3
Value
Val A
0
0
1
0
1
1
0
0
0
11.000
Val B
0
0
0
0
0
1
0
0
0
13.000
Table 10-14Shows the intermediate values after the right shift has been applied to Val B. The columns
marked Bit-1, Bit-2 and Bit-3 hold temporary bits resulting from the right shift operation.
Table 10-15. Example: Values after Shift Right
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Bit-1
Bit-2
Bit -3
Value
Val A
0
0
1
0
1
1
0
0
0
11.000
Val B >> 3
0
0
0
0
0
1
1
0
1
1.625
When the rounding mode is enabled, .5 will be added to the intermediate result before truncation.
Table 10-16 shows the bit representation of Val A + Val (B >> 3) operation with rounding. Notice .5 is
added to the intermediate shifted right value. After the addition, the bits in Bit-1, Bit-2 and Bit-3 are
removed. In this case the result of the operation will be 13 which is the truncated value after rounding.
Table 10-16. Example: Addition with Right Shift and Rounding
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Bit-1
Bit-2
Bit -3
Value
Val A
0
0
1
0
1
1
0
0
0
11.000
Val B >> 3
0
0
0
0
0
1
1
0
1
1.625
.5
0
0
0
0
0
0
1
0
0
0 .500
Val A + Val B >> 3 + .5
0
0
1
1
0
1
0
0
1
13.125
When the rounding mode is disabled, the value is simply truncated. Table 10-17 shows the bit
representation of the operation Val A + (Val B >> 3) without rounding. After the addition, the bits in Bit-1,
Bit-2 and Bit-3 are removed. In this case the result of the operation will be 12 which is the truncated value
without rounding.
Table 10-17. Example: Addition with Rounding After Shift Right
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Bit-1
Bit-2
Bit -3
Value
Val A
0
0
1
0
1
1
0
0
0
11.000
Val B >> 3
0
0
0
0
0
1
1
0
1
1.625
Val A + Val B >> 3
0
0
1
1
0
0
1
0
1
12.625
Table 10-18 shows more examples of the intermediate shifted value along with the result if rounding is
enabled or disabled. In each case, the truncated value is without .5 added and the rounded value is with
.5 added.
Table 10-18. Shift Right Operation With and Without Rounding
Bit2
Bit1
Bit0
Bit -1
Bit -2
Value
Result with RND = 0
Result with RND = 1
0
1
0
0
0
2.00
2
2
0
0
1
1
1
1.75
1
2
0
0
1
1
0
1.50
1
2
806 Viterbi, Complex Math and CRC Unit (VCU)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Rounding Mode
www.ti.com
Table 10-18. Shift Right Operation With and Without Rounding (continued)
Bit2
Bit1
Bit0
Bit -1
Bit -2
Value
Result with RND = 0
Result with RND = 1
0
0
1
0
1
1.25
1
1
0
0
0
1
1
0.75
0
1
0
0
0
1
0
0.50
0
1
0
0
0
0
1
0.25
0
0
0
0
0
0
0
0.00
0
0
1
1
1
1
1
-0.25
0
0
1
1
1
1
0
-0.50
0
0
1
1
1
0
1
-0.75
0
-1
1
1
1
0
0
-1.00
-1
-1
1
1
0
1
1
-1.25
-1
-1
1
1
0
1
0
-1.50
-1
-1
1
1
0
0
1
-1.75
-1
-2
1
1
0
0
0
-2.00
-2
-2
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Viterbi, Complex Math and CRC Unit (VCU)
Copyright © 2011–2017, Texas Instruments Incorporated
807
Chapter 11
SPRUH18G – January 2011 – Revised April 2017
Direct Memory Access (DMA) Module
The direct memory access (DMA) module provides a hardware method of transferring data between
peripherals and/or memory without intervention from the CPU, thereby freeing up bandwidth for other
system functions. Additionally, the DMA has the capability to orthogonally rearrange the data as it is
transferred as well as “ping-pong” data between buffers. These features are useful for structuring data into
blocks for optimal CPU processing.
Topic
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
808
...........................................................................................................................
Introduction ....................................................................................................
DMA Overview..................................................................................................
Architecture .....................................................................................................
Pipeline Timing and Throughput ........................................................................
CPU Arbitration ................................................................................................
Channel Priority ...............................................................................................
Address Pointer and Transfer Control .................................................................
Overrun Detection Feature .................................................................................
Register Descriptions........................................................................................
Direct Memory Access (DMA) Module
Page
809
809
809
813
814
814
815
820
822
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
11.1 Introduction
The strength of a controller is not measured purely in processor speed, but in total system capabilities. As
a part of the equation, any time the CPU bandwidth for a given function can be reduced, the greater the
system capabilities. Many times applications spend a significant amount of their bandwidth moving data,
whether it is from off-chip memory to on-chip memory, or from a peripheral such as an analog-to-digital
converter (ADC) to RAM, or even from one peripheral to another. Furthermore, many times this data
comes in a format that is not conducive to the optimum processing powers of the CPU. The DMA module
described in this reference guide has the ability to free up CPU bandwidth and rearrange the data into a
pattern for more streamlined processing.
11.2 DMA Overview
The DMA module is an event-based machine, meaning it requires a peripheral interrupt trigger to start a
DMA transfer. Although it can be made into a periodic time-driven machine by configuring a timer as the
interrupt trigger source, there is no mechanism within the module itself to start memory transfers
periodically. The interrupt trigger source for each of the six DMA channels can be configured separately
and each channel contains its own independent PIE interrupt to let the CPU know when a DMA transfers
has either started or completed. Five of the six channels are exactly the same, while Channel 1 has one
additional feature: the ability to be configured at a higher priority than the others. At the heart of the DMA
is a state machine and tightly coupled address control logic. It is this address control logic that allows for
rearrangement of the block of data during the transfer as well as the process of ping-ponging data
between buffers. Each of these features, along with others will be discussed in detail in this document.
• Six channels with independent PIE interrupts
• Peripheral interrupt trigger sources
– ADC interrupts 1 and 2
– Multichannel buffered serial port transmit and receive
– XINT1-3
– CPU Timers
– ePWM2-7 ADCSOCA and ADSOCB signals
– USB endpoints 1-3 transmit and receive
– Software
• Data sources/destinations:
– L5-L8 32K x 16 SARAM
– ADC memory bus mapped result registers
– McBSP transmit and receive buffers
– ePWM1-8 / HRPWM1-8
The DMA module can access all the PWM modules as shown in Figure 11-1 . However, only 6 out of 8
PWM modules (ePWM2-ePWM7) can trigger DMA using PERINTSEL.
• Word Size: 16-bit or 32-bit (McBSP limited to 16-bit)
• Throughput: 4 cycles/word (5 cycles/word for McBSP reads)
11.3 Architecture
11.3.1 Block Diagram
Figure 11-1 shows a device level block diagram of the DMA.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
809
Architecture
www.ti.com
Figure 11-1. DMA Block Diagram
CPU bus
L5
I/F
L5
SARAM
(8Kx16)
L6
I/F
L6
SARAM
(8Kx16)
L7
I/F
L7
SARAM
(8Kx16)
L8
I/F
L8
SARAM
(8Kx16)
INT7
External
interrupts
ADC
PF2
I/F
CPU
timers
PIE
DINT[CH1:CH6]
ADC
CPU
ADC
PF0
ADC
control
I/F
RESULT
and
ADC registers RESULT
DMA
registers
PF0
I/F
CPU
PF3 I/F McBSP
CLA
bus
Event
triggers
ePWM/
PF3 I/F HRPWM
registers
PF3 I/F
DMA
6-ch
USB
DMA bus
11.3.2 Peripheral Interrupt Event Trigger Sources
The peripheral interrupt event trigger can be independently configured as one twenty-nine different
sources for each of the six DMA channels. Included in these sources are three external interrupt signals
which can be connected to most of the general-purpose input/output (GPIO) pins on the device. This adds
significant flexibility to the event trigger capabilities. A bit field called PERINTSEL in the MODE register of
each channel is used to select that channels interrupt trigger source. An active peripheral interrupt trigger
will be latched into the PERINTFLG bit of the CONTROL register, and if the respective interrupt and DMA
channel is enabled (see the MODE.CHx[PERINTE] and CONTROL.CHx[RUNSTS] bits), it will be serviced
by the DMA channel. Upon receipt of a peripheral interrupt event signal, the DMA will automatically send a
clear signal to the interrupt source so that subsequent interrupt events will occur.
Regardless of the value of the MODE.CHx[PERINTSEL] bit field, software can always force a trigger by
using the CONTROL.CHx[PERINTFRC] bit. Likewise, software can always clear a pending DMA trigger
using the CONTROL.CHx[PERINTCLR] bit.
Once a particular interrupt trigger sets a channel’s PERINTFLG bit, the bit stays pending until the priority
logic of the state machine starts the burst transfer for that channel. Once the burst transfer starts, the flag
is cleared. If a new interrupt trigger is generated while a burst is in progress, the burst will complete before
responding to the new interrupt trigger (after proper prioritization). If a third interrupt trigger occurs before
the pending interrupt is serviced, an error flag is set in the CONTROL.CHx[OVRFLG] bit. If a peripheral
interrupt trigger occurs at the same time as the latched flag is being cleared, the peripheral interrupt
trigger has priority and the PERINTFLG will remain set.
Figure 11-2 shows a diagram of the trigger select circuit. See the MODE.CHx[PERINTSEL] bit field
description for the complete list of peripheral interrupt trigger sources.
810
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Architecture
www.ti.com
Figure 11-2. Peripheral Interrupt Trigger Input Diagram
Clear interrupt
CONTROL.CHx[PERINTFLG]
DMA
channel x
processing
logic
MODE.CHx
[PERINTSEL]
Clear
Peripheral
Int
None
Latch
MODE.CHx
[PERINTE]
CONTROL.CHx
[PERINTCLR]
ADCINT1
ADCINT2
.
.
.
Set
EPWM7SOCB
CONTROL.CHx
[PERINTFRC]
USB0EP3RX
USB0EP3TX
Clear peripheral interrupt
trigger flag if appropriate
Table 11-1 shows the interrupt trigger source options that are available for each channel.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
811
Architecture
www.ti.com
Table 11-1. Peripheral Interrupt Trigger Source Options
Peripheral
Interrupt Trigger Source
CPU
DMA Software bit (CHx.CONTROL.PERINTFRC) only
ADC
ADCINT 1
ADCINT 2
External Interrupts
External Interrupt 1
External Interrupt 2
External Interrupt 3
CPU Timers
Timer 0 Overflow
Timer 1 Overflow
Timer 2 Overflow
McBSP
McBSP Transmit Buffer Empty
McBSP Receive Buffer Full
ePWM2
ADC Start of Conversion A
ADC Start of Conversion B
ePWM3
ADC Start of Conversion A
ADC Start of Conversion B
ePWM4
ADC Start of Conversion A
ADC Start of Conversion B
ePWM5
ADC Start of Conversion A
ADC Start of Conversion B
ePWM6
ADC Start of Conversion A
ADC Start of Conversion B
ePWM7
ADC Start of Conversion A
ADC Start of Conversion B
USB
USB Endpoint 1 Receive Full
USB
USB Endpoint 1 Transmit Empty
USB
USB Endpoint 2 Receive Full
USB
USB Endpoint 2 Transmit Empty
USB
USB Endpoint 3 Receive Full
USB
USB Endpoint 3 Transmit Empty
11.3.3 DMA Bus
The DMA bus architecture consists of a 22-bit address bus, a 32-bit data read bus, and a 32-bit data write
bus. Memories and register locations connected to the DMA bus are via interfaces that sometimes share
resources with the CPU memory or peripheral bus. Arbitration rules are defined in Section 11.5. The
following resources are connected to the DMA bus:
• L5 SARAM
• L6 SARAM
• L7 SARAM
• L8 SARAM
• ADC Memory Mapped Result Registers
• McBSP Data Receive Registers (DRR2/DRR1) and Data Transmit Registers (DXR2/DXR1)
• ePWM1-8/HRPWM1-8 Registers
• USB Transmit and Receive Endpoints 1-3
812
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Pipeline Timing and Throughput
www.ti.com
11.4 Pipeline Timing and Throughput
The DMA consists of a 4-stage pipeline as shown in Figure 11-3. The one exception to this is when a
DMA channel is configured to have the McBSP as its data source. A read of a McBSP DRR register stalls
the DMA bus for one cycle during the read portion of the transfer, as shown in Figure 11-4.
Figure 11-3. 4-Stage Pipeline DMA Transfer
SYSCLK
Addr bus
Read
SRC
data
(N)
Data bus
Generate
address
Out
Out
DST SRC
addr addr
(N+1) (N+2)
Out
Out
DST SRC
addr addr
(N) (N+1)
Out
SRC
addr
(N)
Gen
SRC
addr
(N+1)
Write
DST
data
(N)
Gen
DST
addr
(N+1)
Read
SRC
data
(N+1)
Gen
SRC
addr
(N+2)
Read
SRC
data
(N+2)
Write
DST
data
(N+1)
Gen
DST
addr
(N+2)
Gen
SRC
addr
(N+3)
Figure 11-4. 4-Stage Pipeline With One Read Stall (McBSP as source)
SYSCLK
Addr bus
Out
SRC
addr
(N)
Read
SRC
data
(N)
Data bus
Generate
address
Out
DST
addr
(N)
Gen
SRC
addr
(N+1)
Out
SRC
addr
(N+1)
Out
DST
addr
(N+1)
Write
DST
data
(N)
Gen
DST
addr
(N+1)
Read
SRC
data
(N+1)
Write
DST
data
(N+1)
Gen
DST
addr
(N+2)
Gen
SRC
addr
(N+2)
In
•
•
•
addition to the pipeline there are a few other behaviors of the DMA that affect it’s total throughput
A 1-cycle delay is added at the beginning of each burst
A 1-cycle delay is added when returning from a CH1 high priority interrupt
32-bit transfers run at double the speed of a 16-bit transfer (i.e., it takes the same amount of time to
transfer a 32-bit word as it does a 16-bit word)
• Collisions with the CPU may add delay slots (see Section 11.5)
For example, to transfer 128 16-bit words from ADC to RAM a channel can be configured to transfer 8
bursts of 16 words/burst. This will give:
8 bursts * [(4 cycles/word * 16 words/burst) + 1] = 520 cycles
If instead the channel were configured to transfer the same amount of data 32 bits at a time (the word size
is configured to 32 bits) the transfer would take:
8 bursts * [(4 cycles/word * 8 words/burst) + 1] = 264 cycles
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
813
CPU Arbitration
www.ti.com
11.5 CPU Arbitration
Typically, DMA activity is independent of the CPU activity. Under the circumstance where both the DMA
and the CPU are attempting to access memory or a peripheral register within the same interface
concurrently, an arbitration procedure will occur. The one exception is with the memory mapped (PF0)
ADC registers, which do not create a conflict when read by both the CPU and the DMA simultaneously,
even if different addresses are accessed. Any combined accesses between the different interfaces, or
where the CPU access is outside of the interface that the DMA is accessing do not create a conflict.
The interfaces which internally contain conflicts are:
• L5 RAM
• L6 RAM
• L7 RAM
• L8 RAM
• McBSP Peripheral Frame 3
• ePWM/HRPWM Peripheral Frame 3
• USB Peripheral Frame 3
If the CPU and the DMA make an access to the same interface in the same cycle, the DMA has priority
and the CPU is stalled.
If a CPU access to an interface is in progress and another CPU access to the same interface is pending,
for example, the CPU is performing a write operation and a read operation from the CPU is pending, then
a DMA access to that same interface has priority over the pending CPU access when the current CPU
access completes.
NOTE: If the CPU is performing a read-modify-write operation and the DMA performs a write to the
same location, the DMA write may be lost if the operation occurs in between the CPU read
and the CPU write. For this reason, it is advised not to mix such CPU accesses with DMA
accesses to the same locations.
In the case of RAM, a ping-pong scheme can be implemented to avoid the CPU and the DMA accessing
the same RAM block concurrently, thus avoiding any stalls or corruption issues.
11.6 Channel Priority
Two priority schemes exist when determining channel priority: Round-robin mode and Channel 1 highpriority mode.
11.6.1 Round-Robin Mode
In this mode, all channels have equal priority and each enabled channel is serviced in round-robin fashion
as follows:
CH1 → CH2 → CH3 → CH4 → CH5 → CH6 → CH1 → CH2 → …
In the case above, after each channel has transferred a burst of words, the next channel is serviced. You
can specify the size of the burst for each channel. Once CH6 (or the last enabled channel) has been
serviced, and no other channels are pending, the round-robin state machine enters an idle state.
From the idle state, channel 1 (if enabled) is always serviced first. However, if the DMA is currently
processing another channel x, all other pending channels between x and the end of the round are serviced
before CH1. It is in this sense that all the channels are of equal priority. For instance, take an example
where CH1, CH4, and CH5 are enabled in round-robin mode and CH4 is currently being processed. Then
CH1 and CH5 both receive an interrupt trigger from their respective peripherals before CH4 completes.
CH1 and CH5 are now both pending. When CH4 completes its burst, CH5 will be serviced next. Only after
CH5 completes will CH1 be serviced. Upon completion of CH1, if there are no more channels pending, the
round-robin state machine will enter an idle state.
814
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Channel Priority
www.ti.com
A
•
•
•
•
•
•
•
•
•
•
more complicated example is shown below:
Assume all channels are enabled, and the DMA is in an idle state,
Initially a trigger occurs on CH1, CH3, and CH5 on the same cycle,
When the CH1 burst transfer starts, requests from CH3 and CH5 are pending,
Before completion of the CH1 burst, the DMA receives a request from CH2. Now the pending requests
are from CH2, CH3, and CH5,
After completing the CH1 burst, CH2 will be serviced since it is next in the round-robin scheme after
CH1.
After the burst from CH2 is finished, the CH3 burst will be serviced, followed by CH5 burst.
Now while the CH5 burst is being serviced, the DMA receives a request from CH1, CH3, and CH6.
The burst from CH6 will start after the completion of the CH5 burst since it is the next channel after
CH5 in the round-robin scheme.
This will be followed by the CH1 burst and then the CH3 burst
After the CH3 burst finishes, assuming no more triggers have occurred, the round-robin state machine
will enter an idle state.
The round-robin state machine may be reset to the idle state via the DMACTRL[PRIORITYRESET] bit.
11.6.2 Channel 1 High Priority Mode
In this mode, if a CH1 trigger occurs, the current word transfer or the current + 1 word transfer (depends
on which phase of the current DMA transfer the new CH1 trigger occurred)on any other channel is
completed (not the complete burst), execution is halted, and CH1 is serviced for the complete burst count.
When the CH1 burst is complete, execution returns to the channel that was active when the CH1 trigger
occurred. All other channels have equal priority and each enabled channel is serviced in round-robin
fashion as follows:
Higher Priority:
Lower priority:
CH1
CH2 → CH3 → CH4 → CH5 → CH6 → CH2 → …
Given an example where CH1, CH4 and CH5 are enabled in Channel 1 High Priority Mode and CH4 is
currently being processed. Then CH1 and CH5 both receive an interrupt trigger from their respective
peripherals before CH4 completes. CH1 and CH5 are now both pending. When the current CH4 word
transfer is completed, regardless of whether the DMA has completed the entire CH4 burst, CH4 execution
will be suspended and CH1 will be serviced. After the CH1 burst completes, CH4 will resume execution.
Upon completion of CH4, CH5 will be serviced. After CH5 completes, if there are no more channels
pending, the round-robin state machine will enter an idle state.
Typically Channel 1 would be used in this mode for the ADC, since its data rate is so high. However,
Channel 1 High Priority Mode may be used in conjunction with any peripheral.
NOTE: High-priority mode and ONESHOT mode may not be used at the same time on channel 1.
Other channels may use ONESHOT mode when channel 1 is in high-priority mode.
11.7 Address Pointer and Transfer Control
The DMA state machine is, at its most basic level, two nested loops. The inner loop transfers a burst of
data when a peripheral interrupt trigger is received. A burst is the smallest amount of data that can be
transferred at one time and its size is defined by the BURST_SIZE register for each channel. The
BURST_SIZE register allows a maximum of 32 sixteen-bit words to be transferred in one burst. The outer
loop, whose size is set by the TRANSFER_SIZE register for each channel, defines how many bursts are
performed in the entire transfer. Since TRANSFER_SIZE is a 16-bit register, the total size of a transfer
allowed is well beyond any practical requirement. One CPU interrupt is generated, if enabled, for each
transfer. This interrupt can be configured to occur at the beginning or the end of the transfer via the
MODE.CHx[CHINTMODE] bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
815
Address Pointer and Transfer Control
www.ti.com
In the default setting of the MODE.CHx[ONESHOT] bit, the DMA transfers one burst of data each time a
peripheral interrupt trigger is received. After the burst is completed, the state machine moves on to the
next pending channel in the priority scheme, even if another trigger for the channel just completed is
pending. This feature keeps any single channel from monopolizing the DMA bus. If a transfer of more than
the maximum number of words per burst is desired for a single trigger, the MODE.CHx[ONESHOT] bit can
be set to complete the entire transfer when triggered. Care is advised when using this mode, since this
can create a condition where one trigger uses up the majority of the DMA bandwidth.
Each DMA channel contains a shadowed address pointer for the source and the destination address.
These pointers, SRC_ADDR and DST_ADDR, can be independently controlled during the state machine
operation. At the beginning of each transfer, the shadowed version of each pointer is copied into its
respective active register. During the burst loop, after each word is transferred, the signed value contained
in the appropriate source or destination BURST_STEP register is added to the active SRC/DST_ADDR
register. During the transfer loop, after each burst is complete, there are two methods that can be used to
modify the active address pointer. The first, and default, method is by adding the signed value contained
in the SRC/DST_TRANSFER_STEP register to the appropriate pointer. The second is via a process
called wrapping, where a wrap address is loaded into the active address pointer. When a wrap procedure
occurs, the associated SRC/DST_TRANSFER_STEP register has no effect.
Address wrapping occurs when a number of bursts specified by the appropriate SRC/DST_WRAP_SIZE
register completes. Each DMA channel contains two shadowed wrap address pointers, SRC_BEG_ADDR
and DST_BEG_ADDR, allowing the source and destination wrapping to be independent of each other.
Like the SRC_ADDR and DST_ADDR registers, the active SRC/DST_BEG_ADDR registers are loaded
from their shadow counterpart at the beginning of a transfer. When the specified number of bursts has
occurred, a two part wrap procedure takes place:
• The appropriate active SRC/DST_BEG_ADDR register is incremented by the signed value contained in
the SRC/DST_WRAP_STEP register, then
• The new active SRC/DST_BEG_ADDR register is loaded into the active SRC/DST_ADDR register.
Additionally the wrap counter (SRC/DST_WRAP_COUNT) register is reloaded with the
SRC/DST_WRAP_SIZE value to setup the next wrap period. This allows the channel to wrap multiple
times within a single transfer. Combined with the first bullet above, this allows the channel to address
multiple buffers within a single transfer.
The DMA contains both an active and shadow set of the following address pointers. When a DMA transfer
begins, the shadow register set is copied to the active working set of registers. This allows you to program
the values of the shadow registers for the next transfer while the DMA works with the active set. It also
allows you to implement Ping-Pong buffer schemes without disrupting the DMA channel execution.
Source/Destination Address Pointers (SRC/DST_ADDR)— The value written into the shadow register
is the start address of the first location where data is read or written to.
At the beginning of a transfer the shadow register is copied into the active register. The active
register performs as the current address pointer.
Source/Destination Begin Address Pointers (SRC/DST_BEG_ADDR)— This is the wrap pointer.
The value written into the shadow register will be loaded into the active register at the start of a
transfer. On a wrap condition, the active register will be incremented by the signed value in the
appropriate SRC/DST_WRAP_STEP register prior to being loaded into the active SRC/DST_ADDR
register.
For each channel, the transfer process can be controlled with the following size values:
Source and Destination Burst Size (BURST_SIZE): — This specifies the number of words to be
transferred in a burst.
This value is loaded into the BURST_COUNT register at the beginning of each burst. The
BURST_COUNT decrements each word that is transferred and when it reaches a zero value, the
burst is complete, indicating that the next channel can be serviced. The behavior of the current
channel is defined by the ONE_SHOT bit in the MODE register. The maximum size of the burst is
dictated by the type of peripheral. For the ADC, the burst size could be all 16 registers (if all 16
registers are used). For a McBSP peripheral, the burst size is limited to 1 since there is no FIFO
and the receive or transmit data register must be loaded or copied every word transferred. For RAM
the burst size can be up to the maximum allowed by the BURST_SIZE register, which is 32.
816
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Address Pointer and Transfer Control
www.ti.com
Source and Destination Transfer Size (TRANSFER_SIZE): — This specifies the number of bursts to be
transferred before per CPU interrupt (if enabled).
Whether this interrupt is generated at the beginning or the end of the transfer is defined in the
CHINTMODE bit in the MODE register. Whether the channel remains enabled or not after the
transfer is completed is defined by the CONTINUOUS bit in the MODE register. The
TRANSFER_SIZE register is loaded into the TRANSFER_COUNT register at the beginning of each
transfer. The TRANSFER_COUNT register keeps track of how many bursts of data the channel has
transferred and when it reaches zero, the DMA transfer is complete.
Source/Destination Wrap Size (SRC/DST_WRAP_SIZE)— This specifies the number of bursts to be
transferred before the current address pointer wraps around to the beginning.
This feature is used to implement a circular addressing type function. This value is loaded into the
appropriate SRC/DST_WRAP_COUNT register at the beginning of each transfer. The
SRC/DST_WRAP_COUNT registers keep track of how many bursts of data the channel has
transferred and when they reaches zero, the wrap procedure is performed on the appropriate
source or destination address pointer. A separate size and count register is allocated for source
and destination pointers. To disable the wrap function, assign the value of these registers to be
larger than the TRANSFER_SIZE.
NOTE: The value written to the SIZE registers is one less than the intended size. So, to transfer
three 16-bit words, the value 2 should be placed in the SIZE register.
Regardless of the state of the DATASIZE bit, the value specified in the SIZE registers are for
16-bit addresses. So, to transfer three 32-bit words, the value 5 should be placed in the SIZE
register.
For each source/destination pointer, the address changes can be controlled with the following step values:
Source/Destination Burst Step (SRC/DST_BURST_STEP)— Within each burst transfer, the address
source and destination step sizes are specified by these registers.
This value is a signed 2's compliment number so that the address pointer can be incremented or
decremented as required. If no increment is desired, such as when accessing the McBSP data
receive or transmit registers, the value of these registers should be set to zero.
Source/Destination Transfer Step (SRC/DST_TRANSFER_STEP)— This specifies the address offset to
start the next burst transfer after completing the current burst transfer.
This is used in cases where registers or data memory locations are spaced at constant intervals.
This value is a signed 2's compliment number so that the address pointer can be incremented or
decremented as required.
Source/Destination Wrap Step (SRC/DST_WRAP_STEP): — When the wrap counter reaches zero, this
value specifies the number of words to add/subtract from the BEG_ADDR pointer and hence sets
the new start address.
This implements a circular type of addressing mode, useful in many applications. This value is a
signed 2's compliment number so that the address pointer can be incremented or decremented as
required.
NOTE: Regardless of the state of the DATASIZE bit, the value specified in the STEP registers are
for 16-bit addresses. So, to increment one 32-bit address, a value of 2 should be placed in
these registers.
Three modes are provided to control the way the state machine behaves during the burst loop and the
transfer loop:
One Shot Mode (ONESHOT)— If one shot mode is enabled when an interrupt event trigger occurs, the
DMA will continue transferring data in bursts until TRANSFER_COUNT is zero. If one shot mode is
disabled, then an interrupt event trigger is required for each burst transfer and this will continue until
TRANSFER_COUNT is zero.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
817
Address Pointer and Transfer Control
www.ti.com
NOTE: When ONESHOT mode is enabled, the DMA will continuously transfer bursts of data on the
given channel until the TRANSFER_COUNT value is zero. This could potentially hog the
bandwidth of a peripheral and cause long CPU stalls to occur. To avoid this, you could
configure a CPU timer (or similar) and disable ONESHOT so as to avoid this situation.
High-priority mode and ONESHOT mode may not be used at the same time on channel 1.
Other channels may use ONESHOT mode when channel 1 is in high-priority mode.
Continuous Mode (CONTINUOUS)— If continuous mode is disabled the RUNSTS bit in the CONTROL
register is cleared at the end of the transfer, disabling the DMA channel.
The channel must be re-enabled by setting the RUN bit in the CONTROL register before another
transfer can be started on that channel. If the continuous mode is enabled the RUNSTS bit is not
cleared at the end of the transfer.
Channel Interrupt Mode (CHINTMODE)— This mode bit selects whether the DMA interrupt from the
respective channel is generated at the beginning of a new transfer or at the end of the transfer.
If implementing a ping-pong buffer scheme with continuous mode of operation, then the interrupt
would be generated at the beginning, just after the working registers are copied to the shadow set.
If the DMA does not operate in continuous mode, then the interrupt is typically generated at the end
when the transfer is complete.
All of the above features and modes are shown in Figure 11-5.
818
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Address Pointer and Transfer Control
www.ti.com
Figure 11-5. DMA State Diagram
Copy all addr shadow registers
to Active Set
TRANSFER_COUNT = TRANSFER_SIZE
WRAP_COUNT = WRAP_SIZE
TRANSFERSTS = 1
Generate DMACHx
interrupt to CPU
at beginning of
transfer (if enabled)
Yes
RUNSTS = 1
Yes
Peripheral
int
?
No
Peripheral
int
?
No
HALT
here
CHINTMODE
== 0
?
No
WRAP_COUNT = WRAP_SIZE
ADDR = BEG_ADDR
SYNCERR = 1
SYNCE == 1 &
SYNCFLG == 1 &
WRAP_COUNT !=
WRAP_SIZE
?
Yes
Yes
HALT
here
No
BURST_COUNT = BURST_SIZE
BURSTSTS = 1
Clear PERINTFLG bit
Clear SYNCFLG bit
Out active SRC_ADDR
Read data
Out active DST_ADDR
Write data
HALT
here
BURST_
COUNT
== 0
?
No
BURST_COUNT-ADDR += BURST_STEP
Yes
ADDR += TRANSFER STEP
Points where state
machine branches
to next channel
BURSTSTS = 0
Yes
TRANSFER_
COUNT == 0
?
No
BEG_ADDR += WRAP_STEP
ADDR = BEG_ADDR
WRAP_COUNT = WRAP_SIZE
Yes
WRAP_
COUNT == 0
?
Yes
No
ONESHOT
== 1
?
WRAP_COUNT--
No
TRANSFER_COUNT-TRANSFERSTS = 0
RUNSTS = 0
No
Generate DMACHx interrupt
to CPU at end of
transfer (if enabled)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Yes
CHINTMODE
== 1
?
No
CONTINUOUS
== 1
?
Yes
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
819
Overrun Detection Feature
www.ti.com
The following items are in reference to Figure 11-5.
• The HALT points represent where the channel halts operation when interrupted by a high priority
channel 1 trigger, or when the HALT command is set, or when an emulation halt is issued and the
FREE bit is cleared to 0.
• The ADDR registers are not affected by BEG_ADDR at the start of a transfer. BEG_ADDR only affects
the ADDR registers on a wrap or sync error. Following is what happens to each of the ADDR registers
when a transfer first starts:
– BEG_ADDR_SHADOW remains unchanged.
– ADDR_SHADOW remains unchanged.
– BEG_ADDR = BEG_ADDR_SHADOW
– ADDR = ADDR_SHADOW
• The active registers get updated when a wrap occurs. The shadow registers remain unchanged.
Specifically:
– BEG_ADDR_SHADOW remains unchanged.
– ADDR_SHADOW remains unchanged.
– BEG_ADDR += WRAP_STEP
– ADDR = BEG_ADDR
• The active registers get updated when a sync error occurs. The shadow registers remain unchanged.
Specifically:
– BEG_ADDR_SHADOW remains unchanged.
– ADDR_SHADOW remains unchanged.
– BEG_ADDR remains unchanged.
– ADDR = BEG_ADDR
Probably the easiest way to remember all this is that:
• The shadow registers never change except by software.
• The active registers never change except by hardware, and a shadow register is only copied into its
own active register, never an active register by another name.
11.8 Overrun Detection Feature
The DMA contains overrun detection logic. When a peripheral event trigger is received by the DMA, the
PERINTFLG bit in the CONTROL register is set, pending the channel to the DMA state machine. When
the burst for that channel is started, the PERINTFLG is cleared. If however, between the time that the
PERINTFLG bit is set by an event trigger and cleared by the start of the burst, an additional event trigger
arrives, the second trigger will be lost. This condition will set the OVRFLG bit in the CONTROL register as
in Figure 11-6. If the overrun interrupt is enabled then the channel interrupt will be generated to the PIE
module.
820
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Overrun Detection Feature
www.ti.com
Figure 11-6. Overrun Detection Logic
DMA
channel interrupt
PIE
MODE.CHx
[CHINTE]
DMACHx interrupt generated
at beginning or end of transfer
CONTROL.CHx
CONTROL.CHx
[PERINTFLG]
[OVRFLG]
PERx_INT
Latch
CONTROL.CHx
[ERRCLR]
MODE.CHx
[OVERNITE]
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
821
Register Descriptions
www.ti.com
11.9 Register Descriptions
The complete DMA register set is shown in Table 11-2.
Table 11-2. DMA Register Summary (1)
Address
Acronym
Description
Section
DMA Control, Mode and Status Registers
0x1000
DMACTRL
DMA Control Register
Section 11.9.1
0x1001
DEBUGCTRL
Debug Control Register
Section 11.9.2
0x1002
REVISION
Peripheral Revision Register
Section 11.9.3
0x1003
Reserved
Reserved
0x1004
PRIORITYCTRL1
Priority Control Register 1
0x1005
Reserved
Reserved
0x1006
PRIORITYSTAT
Priority Status Register
0x1007
0x101F
Reserved
Reserved
Section 11.9.4
Table 11-7
DMA Channel 1 Registers
(1)
0x1020
MODE
Mode Register
Section 11.9.6
0x1021
CONTROL
Control Register
Section 11.9.7
0x1022
BURST_SIZE
Burst Size Register
Section 11.9.8
0x1023
BURST_COUNT
Burst Count Register
Section 11.9.9
0x1024
SRC_BURST_STEP
Source Burst Step Size Register
Section
11.9.10
0x1025
DST_BURST_STEP
Destination Burst Step Size Register
Section
11.9.11
0x1026
TRANSFER_SIZE
Transfer Size Register
0x1027
TRANSFER_COUNT
Transfer Count Register
Section
11.9.13
0x1028
SRC_TRANSFER_STEP
Source Transfer Step Size Register
Section
11.9.14
0x1029
DST_TRANSFER_STEP
Destination Transfer Step Size Register
Section
11.9.15
0x102A
SRC_WRAP_SIZE
Source Wrap Size Register
Section
11.9.16
0x102B
SRC_WRAP_COUNT
Source Wrap Count Register
Section
11.9.17
0x102C
SRC_WRAP_STEP
Source Wrap Step Size Register
Section
11.9.18
0x102D
DST_WRAP_SIZE
Destination Wrap Size Register
Section
11.9.16
0x102E
DST_WRAP_COUNT
Destination Wrap Count Register
Section
11.9.17
0x102F
DST_WRAP_STEP
Destination Wrap Step Size Register
Section
11.9.18
0x1030
SRC_BEG_ADDR_SHADOW
Shadow Source Begin and Current Address Pointer Registers
Section
11.9.19
0x1032
SRC_ADDR_SHADOW
0x1034
SRC_BEG_ADDR
0x1036
SRC_ADDR
0x1038
DST_BEG_ADDR_SHADOW
Table 11-13
Section
11.9.19
Active Source Begin and Current Address Pointer Registers
Section
11.9.20
Section
11.9.20
Shadow Destination Begin and Current Address Pointer
Registers
Section
11.9.21
All DMA register writes are EALLOW protected.
822 Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 11-2. DMA Register Summary (1) (continued)
Address
Acronym
Description
0x103A
DST_ADDR_SHADOW
0x103C
DST_BEG_ADDR
0x103E
DST_ADDR
0x103F
Reserved
Section
Section
11.9.21
Active Destination Begin and Current Address Pointer Registers
Section
11.9.22
Section
11.9.22
Reserved
DMA Channel 2 Registers
0x1040
0x105F
Same as above
DMA Channel 3 Registers
0x1060
0x107F
Same as above
DMA Channel 4 Registers
0x1080
0x109F
Same as above
DMA Channel 5 Registers
0x10A0
0x10BF
Same as above
DMA Channel 6 Registers
0x10C0
0x10DF
Same as above
11.9.1 DMA Control Register (DMACTRL) — EALLOW Protected
The DMA control register (DMACTRL) is shown in Figure 11-7 and described in Table 11-3.
Figure 11-7. DMA Control Register (DMACTRL)
15
8
Reserved
R-0
7
1
0
Reserved
2
PRIORITY
RESET
HARD
RESET
R-0
R0/S-0
R0/S-0
LEGEND: R0/S = Read 0/Set; R = Read only; -n = value after reset
Table 11-3. DMA Control Register (DMACTRL) Field Descriptions
Bit
15-2
1
Field
Value
Description
Reserved
PRIORITYRESET
Reserved
0
The priority reset bit resets the round-robin state machine when a 1 is written. Service starts
from the first enabled channel. Writes of 0 are ignored and this bit always reads back a 0.
When a 1 is written to this bit, any pending burst transfer completes before resetting the
channel priority machine. If CH1 is configured as a high priority channel, and this bit is
written to while CH1 is servicing a burst, the CH1 burst is completed and then any lower
priority channel burst is also completed (if CH1 interrupted in the middle of a burst), before
the state machine is reset.
In case CH1 is high priority, the state machine restarts from CH2 (or the next highest
enabled channel).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
823
Register Descriptions
www.ti.com
Table 11-3. DMA Control Register (DMACTRL) Field Descriptions (continued)
Bit
0
Field
HARDRESET
Value
Description
0
Writing a 1 to the hard reset bit resets the whole DMA and aborts any current access
(similar to applying a device reset). Writes of 0 are ignored and this bit always reads back a
0.
For a soft reset, a bit is provided for each channel to perform a gentler reset. Refer to the
channel control registers.
If the DMA was performing an access to the XINTF and the DMA access was stalled
(XREADY not responding), then a HARDRESET would abort the access. The XINTF
access would only complete if XREADY is released.
When writing to this bit, there is a one cycle delay before it takes effect. Hence at least a
one cycle delay (i.e., a NOP instruction) after writing to this bit should be introduced before
attempting an access to any other DMA register.
824
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.2 Debug Control Register (DEBUGCTRL) — EALLOW Protected
The debug control register (DEBUGCTRL) is shown in Figure 11-8 and described in Table 11-4.
Figure 11-8. Debug Control Register (DEBUGCTRL)
15
14
0
FREE
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-4. Debug Control Register (DEBUGCTRL) Field Descriptions
Bit
Field
15
FREE
14-0
Value
Description
Emulation Control Bit: This bit specifies the action when an emulation halt event occurs.
0
DMA runs until the current DMA read-write access is completed and the current status of a DMA is
frozen. See the HALT points in Figure 11-5 for possible halt states.
1
DMA is unaffected by emulation suspend (run free)
Reserved
Reserved
11.9.3 Revision Register (REVISION)
The revision register (REVISION) is shown in Figure 11-9 and described in Table 11-5.
Figure 11-9. Revision Register (REVISION)
15
8
7
0
TYPE
REV
R
R
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-5. Revision Register (REVISION) Field Descriptions
Bit
Field
15-8
TYPE
7-0
REV
Value
Description
DMA Type Bits. A type change represents a major functional feature difference in a peripheral
module. Within a peripheral type, there may be minor differences between devices which do not
affect the basic functionality of the module. These device-specific differences are listed in the
TMS320x28xx, 28xxx DSP Peripheral Reference Guide (SPRU566).
0x0000
This document describes a Type0 DMA.
DMA Silicon Revision Bits: These bits specify the DMA revision and are changed if any bug
fixes are performed.
0x0000
First release
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
825
Register Descriptions
www.ti.com
11.9.4 Priority Control Register 1 (PRIORITYCTRL1) — EALLOW Protected
The priority control register 1 (PRIORITYCTRL1) is shown in Figure 11-10 and described in Table 11-6.
Figure 11-10. Priority Control Register 1 (PRIORITYCTRL1)
15
1
0
Reserved
CH1
PRIORITY
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-6. Priority Control Register 1 (PRIORITYCTRL1) Field Descriptions
Bit
15-1
0
Field
Value
Description
Reserved
Reserved
CH1PRIORITY
DMA Ch1 Priority: This bit selects whether channel 1 has higher priority or not:
0
Same priority as all other channels
1
Highest priority channel
Channel priority can only be changed when all channels are disabled. A priority reset should
be performed before restarting channels after changing priority.
826
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.5 Priority Status Register (PRIORITYSTAT)
The priority status register (PRIORITYSTAT) is shown in Figure 11-11 and described in Table 11-7.
Figure 11-11. Priority Status Register (PRIORITYSTAT)
15
8
Reserved
R-0
7
6
4
3
2
0
Reserved
ACTIVESTS_SHADOW
Reserved
ACTIVESTS
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-7. Priority Status Register (PRIORITYSTAT) Field Descriptions
Bit
Field
Value
Description
15-7
Reserved
Reserved
6-4
ACTIVESTS_SH
ADOW
Active Channel Status Shadow Bits: These bits are only useful when CH1 is enabled as a higher
priority channel. When CH1 is serviced, the ACTIVESTS bits are copied to the shadow bits and
indicate which channel was interrupted by CH1. When CH1 service is completed, the shadow bits
are copied back to the ACTIVESTS bits. If this bit field is zero or the same as the ACTIVESTS bit
field, then no channel is pending due to a CH1 interrupt. When CH1 is not a higher priority channel,
these bits should be ignored:
3
2-0
0,0,0
No channel pending
0,0,1
CH 1
0,1,0
CH 2
0,1,1
CH 3
1,0,0
CH 4
1,0,1
CH 5
1,1,0
CH 6
Reserved
Reserved
ACTIVESTS
Active Channel Status Bits: These bits indicate which channel is currently active or performing a
transfer:
0,0,0
no channel active
0,0,1
CH 1
0,1,0
CH 2
0,1,1
CH 3
1,0,0
CH 4
1,0,1
CH 5
1,1,0
CH 6
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
827
Register Descriptions
www.ti.com
11.9.6 Mode Register (MODE) — EALLOW Protected
The mode register (MODE) is shown in Figure 11-12 and described in Table 11-8.
Figure 11-12. Mode Register (MODE)
15
14
11
10
9
8
CHINTE
DATASIZE
13
Reserved
12
CONTINUOUS
ONESHOT
CHINTMODE
PERINTE
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
0
OVRINTE
Reserved
PERINTSEL
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-8. Mode Register (MODE) Field Descriptions
Bit
Field
15
CHINTE
14
Value
Description
Channel Interrupt Enable Bit: This bit enables/disables the respective DMA channel interrupt
to the CPU (via the PIE).
0
Interrupt disabled
1
Interrupt enabled
DATASIZE
Data Size Mode Bit: This bit selects if the DMA channel transfers 16-bits or 32-bits of data at a
time.
0
16-bit data transfer size
1
32-bit data transfer size
NOTE: Regardless of the value of this bit all of the registers in the
DMA refer to 16-bit words. The only effect this bit causes
is whether the databus width is 16 or 32 bits.
It is up to you to configure the pointer step increment and
size to accommodate 32-bit data transfers. See section
Section 11.7 for details.
13-12 Reserved
Reserved
11
CONTINUOUS
Continuous Mode Bit: If this bit is set to 1, then DMA re-initializes when TRANSFER_COUNT
is zero and waits for the next interrupt event trigger. If this bit is 0, then the DMA stops and
clears the RUNSTS bit to 0.
10
ONESHOT
One Shot Mode Bit: If this bit is set to 1, then subsequent burst transfers occur without
additional event triggers after the first event trigger. If this bit is 0 then only one burst transfer
is performed per event trigger.
Note: High-priority mode and One-shot mode may not be used at the same time.
9
CHINTMODE
Channel Interrupt Generation Mode Bit: This bit specifies when the respective DMA channel
interrupt should be generated to the CPU (via the PIE).
8
7
0
Generate interrupt at beginning of new transfer
1
Generate interrupt at end of transfer.
PERINTE
Peripheral Interrupt Trigger Enable Bit: This bit enables/disables the selected peripheral
interrupt trigger to the DMA.
0
Interrupt trigger disabled. Neither the selected peripheral nor software can start a DMA burst.
1
Interrupt trigger enabled.
OVRINTE
Overflow Interrupt Enable: This bit when set to 1 enables the DMA to generate an interrupt
when an overflow event is detected.
0
Overflow interrupt disabled
1
Overflow interrupt enabled
An overflow interrupt is generated when the PERINTFLG is set and another interrupt event
occurs. The PERINTFLG being set indicates a previous peripheral event is latched and has
not been serviced by the DMA.
6-5
828
Reserved
Reserved
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 11-8. Mode Register (MODE) Field Descriptions (continued)
Bit
Field
4-0
PERINTSEL
Value
Description
Peripheral Interrupt Source Select Bits: These bits select which interrupt triggers a DMA burst
for the given channel. Only one interrupt source can be selected. A DMA burst can also be
forced via the PERINTFRC bit.
Value
Interrupt
Sync
Peripheral
0
None
None
No peripheral connection
1
ADCINT1
None
ADC
2
ADCINT2
None
3
XINT1
None
4
XINT2
None
5
XINT3
None
6
Reserved
None
No peripheral connection
7
USB0EP1RX
None
USB-0
8
USB0EP1TX
None
9
USB0EP2RX
None
10
USB0EP2TX
None
11
TINT0
None
12
TINT1
None
13
TINT2
None
14
MXEVTA
None
15
MREVTA
None
16
Reserved
None
17
Reserved
None
18
ePWM2SOCA
None
19
ePWM2SOCB
None
20
ePWM3SOCA
None
21
ePWM3SOCB
None
22
ePWM4SOCA
None
23
ePWM4SOCB
None
24
ePWM5SOCA
None
25
ePWM5SOCB
None
26
ePWM6SOCA
None
27
ePWM6SOCB
None
28
ePWM7SOCA
None
29
ePWM7 SOCB
None
30
USB0EP3RX
None
31
USB0EP3TX
None
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
External Interrupts
CPU Timers
McBSP-A
No peripheral conneciton
ePWM2
ePWM3
ePWM4
ePWM5
ePWM6
ePWM7
USB-0
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
829
Register Descriptions
www.ti.com
11.9.7 Control Register (CONTROL) — EALLOW Protected
The control register (CONTROL) is shown in Figure 11-13 and described in Table 11-9.
Figure 11-13. Control Register (CONTROL)
15
14
Reserved
13
OVRFLG
R-0
R-0
7
6
12
RUNSTS
BURSTSTS
R-0
R-0
5
11
10
9
8
TRANSFERSTS
Reserved
PERINTFLG
R-0
R-0
R-0
4
3
2
1
0
ERRCLR
Reserved
PERINTCLR
PERINTFRC
SOFTRESET
HALT
RUN
R0/S-0
R-0
R0/S-0
R0/S-0
R0/S-0
R0/S-0
R0/S-0
LEGEND: R0/S = Read 0/Set; R = Read only; -n = value after reset
Table 11-9. Control Register (CONTROL) Field Descriptions
Bit
Field
15
Reserved
Value Description
Reserved
14
OVRFLG
Overflow Flag Bit: This bit indicates if a peripheral interrupt event trigger is received from the
selected peripheral and the PERINTFLG is already set.
0
No overflow event
1
Overflow event
The ERRCLR bit can be used to clear the state of this bit to 0. The OVRFLG bit is not affected
by the PERINTFRC event.
13
12
11
10-9
8
RUNSTS
Run Status Bit: This bit is set to 1 when the RUN bit is written to with a 1. This indicates the DMA
channel is now ready to process peripheral interrupt event triggers. This bit is cleared to 0 when
TRANSFER_COUNT reaches zero and CONTINUOUS mode bit is set to 0. This bit is also
cleared to 0 when either the HARDRESET bit, the SOFTRESET bit, or the HALT bit is activated.
0
Chanel is disabled.
1
Channel is enabled.
BURSTSTS
Burst Status Bit: This bit is set to 1 when a DMA burst transfer begins and the BURST_COUNT
is initialized with the BURST_SIZE. This bit is cleared to zero when BURST_COUNT reaches
zero. This bit is also cleared to 0 when either the HARDRESET or the SOFTRESET bit is
activated.
0
No burst activity
1
The DMA is currently servicing or suspending a burst transfer from this channel.
TRANSFERSTS
Transfer Status Bit: This bit is set to 1 when a DMA transfer begins and the address registers are
copied to the shadow set and the TRANSFER_COUNT is initialized with the TRANSFER_SIZE.
This bit is cleared to zero when TRANSFER_COUNT reaches zero. This bit is also cleared to 0
when either the HARDRESET or the SOFTRESET bit is activated.
0
No transfer activity
1
The channel is currently in the middle of a transfer regardless of whether a burst of data is
actively being transferred or not.
Reserved
Reserved
PERINTFLG
Peripheral Interrupt Trigger Flag Bit: This bit indicates if a peripheral interrupt event trigger has
occurred. This flag is automatically cleared when the first burst transfer begins.
0
No interrupt event trigger
1
Interrupt event trigger
The PERINTFRC bit can be used to set the state of this bit to 1 and force a software DMA event.
The PERINTCLR bit can be used to clear the state of this bit to 0.
7
ERRCLR
6-5
Reserved
830
0
Error Clear Bit: Writing a 1 to this bit will clear any latched sync error event and clear the
SYNCERR bit. This bit will also clear the OVRFLG bit. This bit would normally be used when
initializing the DMA for the first time or if an overflow condition is detected. If an ADCSYNC error
event or overflow event occurs at the same time as writing to this bit, the ADC or overrun has
priority and the SYNCERR or OVRFLG bit is set.
Reserved
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 11-9. Control Register (CONTROL) Field Descriptions (continued)
Bit
Field
Value Description
4
PERINTCLR
0
Peripheral Interrupt Clear Bit: Writing a 1 to this bit clears any latched peripheral interrupt event
and clears the PERINTFLG bit. This bit would normally be used when initializing the DMA for the
first time. If a peripheral event occurs at the same time as writing to this bit, the peripheral has
priority and the PERINTFLG bit is set.
3
PERINTFRC
0
Peripheral Interrupt Force Bit: Writing a 1 to this bit latches a peripheral interrupt event trigger
and sets the PERINTFLG bit. If the PERINTE bit is set, this bit can be used like a software force
for a DMA burst transfer.
2
SOFTRESET
0
Channel Soft Reset Bit: Writing a 1 to this bit completes current read-write access and places the
channel into a default state as follows:
RUNSTS = 0
TRANSFERSTS = 0
BURSTSTS = 0
BURST_COUNT = 0
TRANSFER_COUNT = 0
SRC_WRAP_COUNT = 0
DST_WRAP_COUNT = 0
This is a soft reset that basically allows the DMA to complete the current read-write access and
then places the DMA channel into the default reset state.
1
HALT
0
Channel Halt Bit: Writing a 1 to this bit halts the DMA at the current state and any current readwrite access is completed. See Figure 11-5 for the various positions the state machine can be at
when HALTED. The RUNSTS bit is set to 0. To take the device out of HALT, the RUN bit needs
to be activated.
0
RUN
0
Channel Run Bit: Writing a 1 to this bit starts the DMA channel. The RUNSTS bit is set to 1. This
bit is also used to take the device out of HALT.
The RUN bit is typically used to start the DMA running after you have configured the DMA. It will
then wait for the first interrupt event (PERINTFLG == 1) to start operation. The RUN bit can also
be used to take the DMA channel out of a HALT condition See Figure 11-5 for the various
positions the state machine can be at when HALTED.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
831
Register Descriptions
www.ti.com
11.9.8 Burst Size Register (BURST_SIZE) — EALLOW Protected
The burst size register (BURST_SIZE) is shown in Figure 11-14 and described in Table 11-10.
Figure 11-14. Burst Size Register (BURST_SIZE)
15
5
4
0
Reserved
BURSTSIZE
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-10. Burst Size Register (BURST_SIZE) Field Descriptions
Bit
Field
15-5
Reserved
4-0
BURSTSIZE
Value
Description
Reserved
These bits specify the burst transfer size:
0
Transfer 1 word in a burst
1
Transfer 2 words in a burst
...
...
31
Transfer 32 words in a burst
11.9.9 BURST_COUNT Register
The burst count register (BURST_COUNT) is shown in Figure 11-15 and described in Table 11-11.
Figure 11-15. Burst Count Register (BURST_COUNT)
15
5
4
0
Reserved
BURSTCOUNT
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-11. Burst Count Register (BURST_COUNT) Field Descriptions
Bit
Field
15-5
Reserved
4-0
BURSTCOUNT
Value
Description
Reserved
These bits indicate the current burst counter value:
0
0 word left in a burst
1
1 word left in a burst
2
2 words left in a burst
...
...
31
31 words left in a burst
The above values represent the state of the counter at the HALT conditions.
832
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.10 Source Burst Step Register Size (SRC_BURST_STEP) — EALLOW Protected
The source burst step size register (SRC_BURST_STEP) is shown in Figure 11-16 and described in
Table 11-12.
Figure 11-16. Source Burst Step Size Register (SRC_BURST_STEP)
15
0
SRCBURSTSTEP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-12. Source Burst Step Size Register (SRC_BURST_STEP) Field Descriptions
Bit
15-0
Field
Value
SRCBURSTSTEP
Description
These bits specify the source address post-increment/decrement step size while
processing a burst of data:
0x0FFF
...
Add 4095 to address
...
0x0002
Add 2 to address
0x0001
Add 1 to address
0x0000
No address change
0xFFFF
Sub 1 from address
0xFFFE
Sub 2 from address
...
0xF000
...
Sub 4096 from address
Only values from -4096 to 4095 are valid.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
833
Register Descriptions
www.ti.com
11.9.11 Destination Burst Step Register Size (DST_BURST_STEP) — EALLOW Protected
The destination burst step register size (DST_BURST_STEP) is shown in Figure 11-17 and described in
Table 11-13.
Figure 11-17. Destination Burst Step Register Size (DST_BURST_STEP)
15
0
DSTBURSTSTEP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-13. Destination Burst Step Register Size (DST_BURST_STEP) Field Descriptions
Bit
Field
15-0
Value
DSTBURSTSTEP
Description
These bits specify the destination address post-increment/decrement step size while
processing a burst of data:
0x0FFF
...
Add 4095 to address
...
0x0002
Add 2 to address
0x0001
Add 1 to address
0x0000
No address change
0xFFFF
Sub 1 from address
0xFFFE
Sub 2 from address
...
0xF000
...
Sub 4096 from address
Only values from -4096 to 4095 are valid.
11.9.12 Transfer Size Register (TRANSFER_SIZE) — EALLOW Protected
The transfer size register (TRANSFER_SIZE) is shown in Figure 11-18 and described in Table 11-14.
Figure 11-18. Transfer Size Register (TRANSFER_SIZE)
15
0
TRANSFERSIZE
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-14. Transfer Size Register (TRANSFER_SIZE) Field Descriptions
Bit
15-0
Field
Value
TRANSFERSIZE
These bits specify the number of bursts to transfer:
0x0000
Transfer 1 burst
0x0001
Transfer 2 bursts
0x0002
Transfer 3 bursts
...
0xFFFF
834
Description
Direct Memory Access (DMA) Module
...
Transfer 65536 bursts
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.13 Transfer Count Register (TRANSFER_COUNT)
The transfer count register (TRANSFER_COUNT) is shown in Figure 11-19 and described in Table 11-15.
Figure 11-19. Transfer Count Register (TRANSFER_COUNT)
15
0
TRANSFERCOUNT
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-15. Transfer Count Register (TRANSFER_COUNT) Field Descriptions
Bit
Field
15-0
Value
Description
TRANSFERCOUNT
These bits specify the current transfer counter value:
0x0000
0 bursts left to transfer
0x0001
1 burst left to transfer
0x0002
2 bursts left to transfer
...
...
0xFFFF
65535 bursts left to transfer
The above values represent the state of the counter at the HALT conditions.
11.9.14 Source Transfer Step Size Register (SRC_TRANSFER_STEP) — EALLOW Protected
The source transfer step size register (SRC_TRANSFER_STEP) is shown in Figure 11-20 and described
in Table 11-16.
Figure 11-20. Source Transfer Step Size Register (SRC_TRANSFER_STEP)
15
0
SRCTRANSFERSTEP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-16. Source Transfer Step Size Register (SRC_TRANSFER_STEP) Field Descriptions
Bit
15-0
Field
Value
SRCTRANSFERSTEP
Description
These bits specify the source address pointer post-increment/decrement step
size after processing a burst of data:
0x0FFF
...
Add 4095 to address
...
0x0002
Add 2 to address
0x0001
Add 1 to address
0x0000
No address change
0xFFFF
Sub 1 from address
0xFFFE
Sub 2 from address
...
0xF000
...
Sub 4096 from address
Only values from -4096 to 4095 are valid.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
835
Register Descriptions
www.ti.com
11.9.15 Destination Transfer Step Size Register (DST_TRANSFER_STEP) — EALLOW
Protected
The destination transfer step size register (DST_TRANSFER_STEP) is shown in Figure 11-21 and
described in Table 11-17.
Figure 11-21. Destination Transfer Step Size Register (DST_TRANSFER_STEP)
15
0
DSTTRANSFERSTEP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-17. Destination Transfer Step Size Register (DST_TRANSFER_STEP) Field Descriptions
Bit
Field
15-0
Value
DSTTRANSFERSTEP
Description
These bits specify the destination address pointer post-increment/decrement
step size after processing a burst of data:
0x0FFF
...
Add 4095 to address
...
0x0002
Add 2 to address
0x0001
Add 1 to address
0x0000
No address change
0xFFFF
Sub 1 from address
0xFFFE
Sub 2 from address
...
0xF000
...
Sub 4096 from address
Only values from -4096 to 4095 are valid.
11.9.16 Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE) — EALLOW protected)
The source/destination wrap size register is shown in Figure 11-22 and described in Table 11-18.
Figure 11-22. Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE)
15
0
WRAPSIZE
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-18. Source/Destination Wrap Size Register (SRC/DST_WRAP_SIZE) Field Descriptions
Bit
15-0
Field
Value
WRAPSIZE
Description
These bits specify the number of bursts to transfer before wrapping back to
begin address pointer:
0x0000
Wrap after 1 burst
0x0001
Wrap after 2 bursts
0x0002
Wrap after 3 bursts
...
0xFFFF
...
Wrap after 65536 bursts
To disable the wrap function, set the WRAPSIZE bit field to a number larger than
the TRANSFERSIZE bit field.
836
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.17 Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT)
The source/destination wrap count register (SCR/DST_WRAP_COUNT) is shown in Figure 11-23 and
described in Table 11-19.
Figure 11-23. Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT)
15
0
WRAPCOUNT
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-19. Source/Destination Wrap Count Register (SCR/DST_WRAP_COUNT) Field
Descriptions
Bit
Field
15-0
Value
WRAPCOUNT
Description
These bits indicate the current wrap counter value:
0x0000
Wrap complete
0x0001
1 burst left
0x0002
2 burst left
...
0xFFFF
...
65535 burst left
The above values represent the state of the counter at the HALT conditions.
11.9.18 Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP) —
EALLOW Protected
The source/destination wrap step size register (SRC/DST_WRAP_STEP) are shown in Figure 11-24 and
described in Table 11-20.
Figure 11-24. Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP)
15
0
WRAPSTEP
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-20. Source/Destination Wrap Step Size Registers (SRC/DST_WRAP_STEP) Field
Descriptions
Bit
15-0
Field
Value
WRAPSTEP
Description
These bits specify the source begin address pointer post-increment/decrement
step size after wrap counter expires:
0x0FFF
...
Add 4095 to address
...
0x0002
Add 2 to address
0x0001
Add 1 to address
0x0000
No address change
0xFFFF
Sub 1 from address
0xFFFE
Sub 2 from address
...
0xF000
...
Sub 4096 from address
Only values from -4096 to 4095 are valid.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
837
Register Descriptions
www.ti.com
11.9.19 Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) — All EALLOW Protected
The shadow source begin and current address pointer registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) are shown in Figure 11-25 and described in
Table 11-21.
Figure 11-25. Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW)
31
22
21
0
Reserved
BEGADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-21. Shadow Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR_SHADOW/DST_BEG_ADDR_SHADOW) Field Descriptions
Bit
Field
Value
Description
31-22
Reserved
Reserved
21-0
BEGADDR
22-bit address value
11.9.20 Active Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR/DST_BEG_ADDR)
The active source begin and current address pointer registers (SRC_BEG_ADDR/DST_BEG_ADDR) are
shown in Table 11-22 and described in Table 11-22.
Figure 11-26. Active Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR/DST_BEG_ADDR)
31
22
21
0
Reserved
BEGADDR
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-22. Active Source Begin and Current Address Pointer Registers
(SRC_BEG_ADDR/DST_BEG_ADDR) Field Descriptions
Bit
Field
Value
Description
31-22
Reserved
Reserved
21-0
BEGADDR
22-bit address value
838
Direct Memory Access (DMA) Module
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
11.9.21 Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) — All EALLOW Protected
The shadow destination begin and current address pointer registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) are shown in Figure 11-27 and described in Table 1123.
Figure 11-27. Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW)
31
22
21
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-23. Shadow Destination Begin and Current Address Pointer Registers
(SRC_ADDR_SHADOW/DST_ADDR_SHADOW) Field Descriptions
Bit
Field
Value
Description
31-22
Reserved
Reserved
21-0
ADDR
22-bit address value
11.9.22 Active Destination Begin and Current Address Pointer Registers
(SRC_ADDR/DST_ADDR)
The active destination begin and current address pointer registers (SRC_ADDR/DST_ADDR) are shown in
Figure 11-28 and described in Table 11-24.
Figure 11-28. Active Destination Begin and Current Address Pointer Registers
(SRC_ADDR/DST_ADDR)
31
22
21
0
Reserved
ADDR
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 11-24. Active Destination Begin and Current Address Pointer Registers
(SRC_ADDR/DST_ADDR) Field Descriptions
Bit
Field
Value
Description
31-22
Reserved
Reserved
21-0
ADDR
22-bit address value
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Direct Memory Access (DMA) Module
Copyright © 2011–2017, Texas Instruments Incorporated
839
Chapter 12
SPRUH18G – January 2011 – Revised April 2017
Serial Peripheral Interface (SPI)
The serial peripheral interface (SPI) is a high-speed synchronous serial input/ output (I/O) port that allows
a serial bit stream of programmed length (one to 16 bits) to be shifted into and out of the device at a
programmed bit-transfer rate. The SPI is normally used for communications between the DSP controller
and external peripherals or another controller. Typical applications include external I/O or peripheral
expansion via devices such as shift registers, display drivers, and analog-to-digital converters (ADCs).
Multi-device communications are supported by the master/slave operation of the SPI. On the C28x, the
port supports a 4-level, receive and transmit FIFO for reducing CPU servicing overhead.
Topic
12.1
12.2
840
...........................................................................................................................
Page
Enhanced SPI Module Overview ......................................................................... 841
SPI Registers and Waveforms ............................................................................ 858
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
12.1 Enhanced SPI Module Overview
Figure 12-1 shows the SPI CPU interfaces.
Figure 12-1. SPI CPU Interface
System
control
block
Low speed
prescaler
SPIAENCLK
SYSCLKOUT
CPU
LSPCLK
SYSRS
GPIO
MUX
SPI
SPICLK
SPISTE
Registers
SPISOMI
Peripheral Bus
SPISIMO
SPIINT/RXINT
TXINT
PIE
block
The SPI module features include:
• SPISOMI: SPI slave-output/master-input pin
• SPISIMO: SPI slave-input/master-output pin
• SPISTE: SPI slave transmit-enable pin
• SPICLK: SPI serial-clock pin
NOTE: All four pins can be used as GPIO, if the SPI module is not used.
•
•
•
•
•
•
•
Two operational modes: master and slave
Baud rate: 125 different programmable rates. The maximum baud rate that can be employed is limited
by the maximum speed of the I/O buffers used on the SPI pins. See the device-specific data sheet for
more details.
Data word length: one to sixteen data bits
Four clocking schemes (controlled by clock polarity and clock phase bits) include:
– Falling edge without phase delay: SPICLK active-high. SPI transmits data on the falling edge of the
SPICLK signal and receives data on the rising edge of the SPICLK signal.
– Falling edge with phase delay: SPICLK active-high. SPI transmits data one half-cycle ahead of the
falling edge of the SPICLK signal and receives data on the falling edge of the SPICLK signal.
– Rising edge without phase delay: SPICLK inactive-low. SPI transmits data on the rising edge of the
SPICLK signal and receives data on the falling edge of the SPICLK signal.
– Rising edge with phase delay: SPICLK inactive-low. SPI transmits data one half-cycle ahead of the
rising edge of the SPICLK signal and receives data on the rising edge of the SPICLK signal.
Simultaneous receive and transmit operation (transmit function can be disabled in software)
Transmitter and receiver operations are accomplished through either interrupt- driven or polled
algorithms.
12 SPI module control registers: Located in control register frame beginning at address 7040h.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
841
Enhanced SPI Module Overview
www.ti.com
NOTE: All registers in this module are 16-bit registers that are connected to Peripheral Frame 2.
When a register is accessed, the register data is in the lower byte (7−0), and the upper byte
(15−8) is read as zeros. Writing to the upper byte has no effect.
Enhanced Features:
• 4-level transmit/receive FIFO
• Delayed transmit control
• 3-wire SPI mode
• SPISTE inversion for digital audio interface receive mode on devices with two SPI modules.
12.1.1 SPI Block Diagram
Figure 12-2 is a block diagram of the SPI in slave mode, showing the basic control blocks available on the
SPI module.
842
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
Figure 12-2. Serial Peripheral Interface Module Block Diagram
SPIFFENA
SPIFFTX.14
Receiver
Overrun Flag
RX FIFO Registers
SPISTS.7
Overrun
INT ENA
SPICTL.4
SPIRXBUF
RX FIFO _0
RX FIFO _1
-----
SPIINT
RX FIFO Interrupt
RX FIFO _3
RX Interrupt
Logic
16
SPIRXBUF
Buffer Register
SPIFFOVF
FLAG
SPIFFRX.15
To CPU
TX FIFO Registers
SPITXBUF
TX FIFO _3
SPITX
16
16
TX Interrupt
Logic
TX FIFO Interrupt
----TX FIFO _1
TX FIFO _0
SPI INT
ENA
SPI INT FLAG
SPITXBUF
Buffer Register
SPISTS.6
SPICTL.0
TRIWIRE
SPIPRI.0
16
M
M
SPIDAT
Data Register
TW
S
S
SPIDAT.15 - 0
SW1
SPISIMO
M TW
M
TW
SPISOMI
S
S
STEINV
SW2
SPIPRI.1
Talk
STEINV
SPICTL.1
SPISTE
State Control
Master/Slave
SPICCR.3 - 0
SPI Char
3
2
SW3
M
SPI Bit Rate
S
SPIBRR.6 - 0
LSPCLK
6
A
SPICTL.2
S
0
1
5
4
3
2
1
Clock
Polarity
Clock
Phase
SPICCR.6
SPICTL.3
SPICLK
M
0
SPISTE of a slave device is driven low by the master.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
843
Enhanced SPI Module Overview
www.ti.com
12.1.2 SPI Module Signal Summary
Table 12-1. SPI Module Signal Summary
Signal Name
Description
External Signals
SPICLK
SPI clock
SPISIMO/SPIMOMI (1)
SPISOMI/SPISISO
(1)
SPISTE
SPI slave in, master out/ SPI master out, master in
SPI slave out, master in/ SPI slave in, slave out
SPI slave transmit enable
Control
SPI Clock Rate
LSPCLK
Interrupt signals
SPIRXINT
Transmit interrupt/ Receive Interrupt in non FIFO mode (referred to as SPI INT)
Receive in interrupt in FIFO mode
SPITXINT
(1)
Transmit interrupt – FIFO
In 3-wire master mode, the SPISIMO pin becomes the SPIMOMI pin and the SPISOMI pin becomes a general purpose
input/output (GPIO) pin. In 3-wire slave mode, the SPISOMI pin becomes the SPISISO pin and the SPISIMO pin becomes a
GPIO pin.
12.1.3 Overview of SPI Module Registers
The SPI port operation is configured and controlled by the registers listed in Table 12-2.
Table 12-2. SPI Registers
Name
Address Range
Size (x16)
Description
SPICCR
0x0000-7040
1
SPI Configuration Control Register
SPICTL
0x0000-7041
1
SPI Operation Control Register
SPIST
0x0000-7042
1
SPI Status Register
SPIBRR
0x0000-7044
1
SPI Baud Rate Register
SPIEMU
0x0000-7046
1
SPI Emulation Buffer Register
SPIRXBUF
0x0000-7047
1
SPI Serial Input Buffer Register
SPITXBUF
0x0000-7048
1
SPI Serial Output Buffer Register
SPIDAT
0x0000-7049
1
SPI Serial Data Register
SPIFFTX
0x0000-704A
1
SPI FIFO Transmit Register
SPIFFRX
0x0000-704B
1
SPI FIFO Receive Register
SPIFFCT
0x0000-704C
1
SPI FIFO Control Register
SPIPRI
0x0000-704F
1
SPI Priority Control Register
This SPI has 16-bit transmit and receive capability, with double-buffered transmit and double-buffered
receive. All data registers are 16-bits wide.
The SPI is no longer limited to a maximum transmission rate of LSPCLK/8 in slave mode. The maximum
transmission rate in both slave mode and master mode is now LSPCLK/4.
Writes of transmit data to the serial data register, SPIDAT (and the new transmit buffer, SPITXBUF), must
be left-justified within a 16-bit register.
The control and data bits for general-purpose bit I/O multiplexing have been removed from this peripheral,
along with the associated registers, SPIPC1 (704Dh) and SPIPC2 (704Eh). These bits are now in the
General-Purpose I/O registers.
Twelve registers inside the SPI module control the SPI operations:
• SPICCR (SPI configuration control register). Contains control bits used for SPI configuration
– SPI module software reset
844
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
•
•
•
•
•
•
•
•
– SPICLK polarity selection
– Four SPI character-length control bits
SPICTL (SPI operation control register). Contains control bits for data transmission
– Two SPI interrupt enable bits
– SPICLK phase selection
– Operational mode (master/slave)
– Data transmission enable
SPISTS (SPI status register). Contains two receive buffer status bits and one transmit buffer status bit
– RECEIVER OVERRUN
– SPI INT FLAG
– TX BUF FULL FLAG
SPIBRR (SPI baud rate register). Contains seven bits that determine the bit transfer rate
SPIRXEMU (SPI receive emulation buffer register). Contains the received data. This register is used
for emulation purposes only. The SPIRXBUF should be used for normal operation
SPIRXBUF (SPI receive buffer — the serial receive buffer register). Contains the received data
SPITXBUF (SPI transmit buffer — the serial transmit buffer register). Contains the next character to be
transmitted
SPIDAT (SPI data register). Contains data to be transmitted by the SPI, acting as the transmit/receive
shift register. Data written to SPIDAT is shifted out on subsequent SPICLK cycles. For every bit shifted
out of the SPI, a bit from the receive bit stream is shifted into the other end of the shift register
SPIPRI (SPI priority register). Contains bits that specify interrupt priority and determine SPI operation
on the XDS emulator during program suspensions. This register also contains bit to enable 3-wire
mode and the SPISTE inversion bit.
12.1.4 SPI Operation
This section describes the operation of the SPI. Included are explanations of the operation modes,
interrupts, data format, clock sources, and initialization. Typical timing diagrams for data transfers are
given.
12.1.4.1 Introduction to Operation
Figure 12-3 shows typical connections of the SPI for communications between two controllers: a master
and a slave.
The master initiates data transfer by sending the SPICLK signal. For both the slave and the master, data
is shifted out of the shift registers on one edge of the SPICLK and latched into the shift register on the
opposite SPICLK clock edge. If the CLOCK PHASE bit (SPICTL.3) is high, data is transmitted and
received a half-cycle before the SPICLK transition (see Section 12.1.4.2). As a result, both controllers
send and receive data simultaneously. The application software determines whether the data is
meaningful or dummy data. There are three possible methods for data transmission:
• Master sends data; slave sends dummy data.
• Master sends data; slave sends data.
• Master sends dummy data; slave sends data.
The master can initiate data transfer at any time because it controls the SPICLK signal. The software,
however, determines how the master detects when the slave is ready to broadcast data.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
845
Enhanced SPI Module Overview
www.ti.com
Figure 12-3. SPI Master/Slave Connection
SPI master (master/slave = 1)
SPIRXBUF.15−0
Slave in/
SPISIMO master out
SPI slave (master/slave = 0)
SPISIMO
SPIRXBUF.15−0
Serial input buffer
SPIRXBUF
Serial input buffer
SPIRXBUF
SPISTE
SPIDAT.15−0
SPISOMI
Shift register
MSB
LSB
(SPIDAT)
SPICLK
SPI
strobe
SPISTE
SPIDAT.15−0
Slave out/ SPISOMI
Shift register
MSB
(SPIDAT)
master in
Serial
clock
LSB
SPICLK
SPITXBUF.15−0
SPITXBUF.15−0
Serial transmit buffer
SPITXBUF
Serial transmit buffer
SPITXBUF
Processor 1
Processor 2
12.1.4.2 SPI Module Slave and Master Operation Modes
The SPI can operate in master or slave mode. The MASTER/SLAVE bit (SPICTL.2) selects the operating
mode and the source of the SPICLK signal.
12.1.4.2.1 Master Mode
In the master mode (MASTER/SLAVE = 1), the SPI provides the serial clock on the SPICLK pin for the
entire serial communications network. Data is output on the SPISIMO pin and latched from the SPISOMI
pin.
The SPIBRR register determines both the transmit and receive bit transfer rate for the network. SPIBRR
can select 126 different data transfer rates.
Data written to SPIDAT or SPITXBUF initiates data transmission on the SPISIMO pin, MSB (most
significant bit) first. Simultaneously, received data is shifted through the SPISOMI pin into the LSB (least
significant bit) of SPIDAT. When the selected number of bits has been transmitted, the received data is
transferred to the SPIRXBUF (buffered receiver) for the CPU to read. Data is stored right-justified in
SPIRXBUF.
When the specified number of data bits has been shifted through SPIDAT, the following events occur:
• SPIDAT contents are transferred to SPIRXBUF.
• SPI INT FLAG bit (SPISTS.6) is set to 1.
• If there is valid data in the transmit buffer SPITXBUF, as indicated by the TXBUF FULL bit in SPISTS,
this data is transferred to SPIDAT and is transmitted; otherwise, SPICLK stops after all bits have been
shifted out of SPIDAT.
• If the SPI INT ENA bit (SPICTL.0) is set to 1, an interrupt is asserted.
In a typical application, the SPISTE pin serves as a chip-enable pin for a slave SPI device. This pin is
driven low by the master before transmitting data to the slave and is taken high after the transmission is
complete.
12.1.4.2.2 Slave Mode
In the slave mode (MASTER/SLAVE = 0), data shifts out on the SPISOMI pin and in on the SPISIMO pin.
The SPICLK pin is used as the input for the serial shift clock, which is supplied from the external network
master. The transfer rate is defined by this clock. The SPICLK input frequency should be no greater than
the LSPCLK frequency divided by 4.
846
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
Data written to SPIDAT or SPITXBUF is transmitted to the network when appropriate edges of the
SPICLK signal are received from the network master. Data written to the SPITXBUF register will be
transferred to the SPIDAT register when all bits of the character to be transmitted have been shifted out of
SPIDAT. If no character is currently being transmitted when SPITXBUF is written to, the data will be
transferred immediately to SPIDAT. To receive data, the SPI waits for the network master to send the
SPICLK signal and then shifts the data on the SPISIMO pin into SPIDAT. If data is to be transmitted by
the slave simultaneously, and SPITXBUF has not been previously loaded, the data must be written to
SPITXBUF or SPIDAT before the beginning of the SPICLK signal.
When the TALK bit (SPICTL.1) is cleared, data transmission is disabled, and the output line (SPISOMI) is
put into the high-impedance state. If this occurs while a transmission is active, the current character is
completely transmitted even though SPISOMI is forced into the high-impedance state. This ensures that
the SPI is still able to receive incoming data correctly. This TALK bit allows many slave devices to be tied
together on the network, but only one slave at a time is allowed to drive the SPISOMI line.
The SPISTE pin operates as the slave-select pin. An active-low signal on the SPISTE pin allows the slave
SPI to transfer data to the serial data line; an inactive- high signal causes the slave SPI serial shift register
to stop and its serial output pin to be put into the high-impedance state. This allows many slave devices to
be tied together on the network, although only one slave device is selected at a time.
12.1.5 SPI Interrupts
This section includes information on the control bits that initialize interrupts, data format, clocking,
initialization, and data transfer.
12.1.5.1 SPI Interrupt Control Bits
Five control bits are used to initialize the SPI interrupts:
• SPI INT ENA bit (SPICTL.0)
• SPI INT FLAG bit (SPISTS.6)
• OVERRUN INT ENA bit (SPICTL.4)
• RECEIVER OVERRUN FLAG bit (SPISTS.7)
12.1.5.1.1 SPI INT ENA Bit (SPICTL.0)
When the SPI interrupt-enable bit is set and an interrupt condition occurs, the corresponding interrupt is
asserted.
0
1
Disable SPI interrupts
Enable SPI interrupts
12.1.5.1.2 SPI INT FLAG Bit (SPISTS.6)
This status flag indicates that a character has been placed in the SPI receiver buffer and is ready to be
read.
When a complete character has been shifted into or out of SPIDAT, the SPI INT FLAG bit (SPISTS.6) is
set, and an interrupt is generated if enabled by the SPI INT ENA bit (SPICTL.0). The interrupt flag remains
set until it is cleared by one of the following events:
• The interrupt is acknowledged (this is different from the C240).
• The CPU reads the SPIRXBUF (reading the SPIRXEMU does not clear the SPI INT FLAG bit).
• The device enters IDLE2 or HALT mode with an IDLE instruction.
• Software clears the SPI SW RESET bit (SPICCR.7).
• A system reset occurs.
When the SPI INT FLAG bit is set, a character has been placed into the SPIRXBUF and is ready to be
read. If the CPU does not read the character by the time the next complete character has been received,
the new character is written into SPIRXBUF, and the RECEIVER OVERRUN Flag bit (SPISTS.7) is set.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
847
Enhanced SPI Module Overview
www.ti.com
12.1.5.1.3 OVERRUN INT ENA Bit (SPICTL.4)
Setting the overrun interrupt enable bit allows the assertion of an interrupt whenever the RECEIVER
OVERRUN Flag bit (SPISTS.7) is set by hardware. Interrupts generated by SPISTS.7 and by the SPI INT
FLAG bit (SPISTS.6) share the same interrupt vector.
0
1
Disable RECEIVER OVERRUN Flag bit interrupts
Enable RECEIVER OVERRUN Flag bit interrupts
12.1.5.1.4 RECEIVER OVERRUN FLAG Bit (SPISTS.7)
The RECEIVER OVERRUN Flag bit is set whenever a new character is received and loaded into the
SPIRXBUF before the previously received character has been read from the SPIRXBUF. The RECEIVER
OVERRUN Flag bit must be cleared by software.
12.1.5.2 Data Format
Four bits (SPICCR.3–0) specify the number of bits (1 to 16) in the data character. This information directs
the state control logic to count the number of bits received or transmitted to determine when a complete
character has been processed. The following statements apply to characters with fewer than 16 bits:
• Data must be left-justified when written to SPIDAT and SPITXBUF.
• Data read back from SPIRXBUF is right-justified.
• SPIRXBUF contains the most recently received character, right-justified, plus any bits that remain from
previous transmission(s) that have been shifted to the left (shown in Example 12-1).
Example 12-1. Transmission of Bit From SPIRXBUF
Conditions:
1. Transmission character length = 1 bit (specified in bits SPICCR.3−0)
2. The current value of SPIDAT = 737Bh
(TXed) 0 ←
(1)
848
0
1
1
1
0
1
1
1
0
0
1
1
1
0
0
SPIDAT (before transmission)
0
1
1
0
1
1
SPIDAT (after transmission)
1
1
0
1
1
1
SPIRXBUF (after transmission)
1
1
0
1
1
1
1
1
0
1
1
1
0
1
1
x (1)
1
0
1
1
x (1)
← (RXed)
x = 1 if SPISOMI data is high; x = 0 if SPISOMI data is low; master mode is assumed.
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
12.1.5.3 Baud Rate and Clocking Schemes
The SPI module supports 125 different baud rates and four different clock schemes. Depending on
whether the SPI clock is in slave or master mode, the SPICLK pin can receive an external SPI clock signal
or provide the SPI clock signal, respectively.
• In the slave mode, the SPI clock is received on the SPICLK pin from the external source, and can be
no greater than the LSPCLK frequency divided by 4.
• In the master mode, the SPI clock is generated by the SPI and is output on the SPICLK pin, and can
be no greater than the LSPCLK frequency divided by 4.
Example 12-2 shows how to determine the SPI baud rates.
Example 12-2. Baud Rate Determination
For SPIBRR = 3 to 127:
LSPCLK
SPI Baud Rate =
(SPIBRR + 1)
(5)
For SPIBRR = 0, 1, or 2:
SPI Baud Rate = LSPCLK
4
(6)
where:
LSPCLK = Low-speed peripheral clock frequency of the device
SPIBRR = Contents of the SPIBRR in the master SPI device
To determine what value to load into SPIBRR, you must know the device system clock (LSPCLK) frequency
(which is device-specific) and the baud rate at which you will be operating.
Example 12-3 shows how to determine the maximum baud rate at which the SPI can communicate at a given
LSPCLK frequency. Assume that LSPCLK = 40 MHz.
Example 12-3. Maximum Baud-Rate Calculation
Maximum SPI Baud Rate
LSPCLK
4
60 u 106
4
15 u 106 bps
(7)
12.1.5.3.1 SPI Clocking Schemes
The CLOCK POLARITY bit (SPICCR.6) and the CLOCK PHASE bit (SPICTL.3) control four different
clocking schemes on the SPICLK pin. The CLOCK POLARITY bit selects the active edge, either rising or
falling, of the clock. The CLOCK PHASE bit selects a half-cycle delay of the clock. The four different
clocking schemes are as follows:
• Falling Edge Without Delay. The SPI transmits data on the falling edge of the SPICLK and receives
data on the rising edge of the SPICLK.
• Falling Edge With Delay. The SPI transmits data one half-cycle ahead of the falling edge of the
SPICLK signal and receives data on the falling edge of the SPICLK signal.
• Rising Edge Without Delay. The SPI transmits data on the rising edge of the SPICLK signal and
receives data on the falling edge of the SPICLK signal.
• Rising Edge With Delay. The SPI transmits data one half-cycle ahead of the rising edge of the SPICLK
signal and receives data on the rising edge of the SPICLK signal.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
849
Enhanced SPI Module Overview
www.ti.com
The selection procedure for the SPI clocking scheme is shown in Table 12-3. Examples of these four
clocking schemes relative to transmitted and received data are shown in Figure 12-4.
Table 12-3. SPI Clocking Scheme Selection Guide
SPICLK Scheme
CLOCK POLARITY
(SPICCR.6)
CLOCK PHASE
(SPICTL.3)
Rising edge without delay
0
0
Rising edge with delay
0
1
Falling edge without delay
1
0
Falling edge with delay
1
1
Figure 12-4. SPICLK Signal Options
SPICLK cycle
number
1
2
3
4
5
6
7
8
SPICLK
(Rising edge
without delay)
SPICLK
(Rising edge
with delay)
SPICLK
(Falling edge
without delay)
SPICLK
(Falling edge
with delay)
SPISIMO/
SPISOMI
See note
MSB
LSB
SPISTE
(Into slave)
Receive latch
points
Note:
Previous data bit
For the SPI, SPICLK symmetry is retained only when the result of (SPIBRR+1) is an even value. When
(SPIBRR + 1) is an odd value and SPIBRR is greater than 3, SPICLK becomes asymmetrical. The low
pulse of SPICLK is one CLKOUT longer than the high pulse when the CLOCK POLARITY bit is clear (0).
When the CLOCK POLARITY bit is set to 1, the high pulse of the SPICLK is one CLKOUT longer than the
low pulse, as shown in Figure 12-5.
Figure 12-5. SPI: SPICLK-CLKOUT Characteristic When (BRR + 1) is Odd, BRR > 3, and CLOCK
POLARITY = 1
2 cycles
3 cycles
2 cycles
CLKOUT
SPICLK
850
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
12.1.5.4 Initialization Upon Reset
A
•
•
•
•
•
•
•
system reset forces the SPI peripheral module into the following default configuration:
Unit is configured as a slave module (MASTER/SLAVE = 0)
Transmit capability is disabled (TALK = 0)
Data is latched at the input on the falling edge of the SPICLK signal
Character length is assumed to be one bit
SPI interrupts are disabled
Data in SPIDAT is reset to 0000h
SPI module pin functions are selected as general-purpose inputs (this is done in I/O MUX control
register B [MCRB])
To change this SPI configuration:
Step 1. Clear the SPI SW RESET bit (SPICCR.7) to 0 to force the SPI to the reset state.
Step 2. Initialize the SPI configuration, format, baud rate, and pin functions as desired.
Step 3. Set the SPI SW RESET bit to 1 to release the SPI from the reset state.
Step 4. Write to SPIDAT or SPITXBUF (this initiates the communication process in the master).
Step 5. Read SPIRXBUF after the data transmission has completed (SPISTS.6 = 1) to determine
what data was received.
To prevent unwanted and unforeseen events from occurring during or as a result of initialization changes,
clear the SPI SW RESET bit (SPICCR.7) before making initialization changes, and then set this bit after
initialization is complete.
NOTE: Do not change the SPI configuration when communication is in progress.
12.1.5.5 Data Transfer Example
The timing diagram shown in Figure 12-6 illustrates an SPI data transfer between two devices using a
character length of five bits with the SPICLK being symmetrical.
The timing diagram with SPICLK unsymmetrical (Figure 12-5) shares similar characterizations with
Figure 12-6 except that the data transfer is one CLKOUT cycle longer per bit during the low pulse
(CLOCK POLARITY = 0) or during the high pulse (CLOCK POLARITY = 1) of the SPICLK.
Figure 12-6 is applicable for 8-bit SPI only and is not for 24x devices that are capable of working with 16bit data. The figure is shown for illustrative purposes only.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
851
Enhanced SPI Module Overview
www.ti.com
Figure 12-6. Five Bits per Character
Master SPI
Int flag
Slave SPI
Int flag
A B C
D E F G
H
I
J
K
SPISOMI
from slave
7
6
5
4
3
7
6
5
4
3
7
6
5
4
3
7
6
5
4
3
SPISIMO
from master
SPICLK signal options:
CLOCK POLARITY = 0
CLOCK PHASE = 0
CLOCK POLARITY = 0
CLOCK PHASE = 1
CLOCK POLARITY = 1
CLOCK PHASE = 0
CLOCK POLARITY = 1
CLOCK PHASE = 1
SPISTE
A
Slave writes 0D0h to SPIDAT and waits for the master to shift out the data.
B
Master sets the slave SPISTE signal low (active).
C
Master writes 058h to SPIDAT, which starts the transmission procedure.
D
First byte is finished and sets the interrupt flags.
E
Slave reads 0Bh from its SPIRXBUF (right-justified).
F
Slave writes 04Ch to SPIDAT and waits for the master to shift out the data.
G
Master writes 06Ch to SPIDAT, which starts the transmission procedure.
H
Master reads 01Ah from the SPIRXBUF (right−justified).
I
Second byte is finished and sets the interrupt flags.
J
Master reads 89h and the slave reads 8Dh from their respective SPIRXBUF. After the user’s software masks off the
unused bits, the master receives 09h and the slave receives 0Dh.
K
Master clears the slave SPISTE signal high (inactive).
12.1.6 SPI FIFO Description
The following steps explain the FIFO features and help with programming the SPI FIFOs:
1. Reset. At reset the SPI powers up in standard SPI mode, the FIFO function is disabled. The FIFO
registers SPIFFTX, SPIFFRX and SPIFFCT remain inactive.
2. Standard SPI. The standard SPI mode will work with SPIINT/SPIRXINT as the interrupt source.
3. Mode change. FIFO mode is enabled by setting the SPIFFEN bit to 1 in the SPIFFTX register. SPIRST
can reset the FIFO mode at any stage of its operation.
4. Active registers. All the SPI registers and SPI FIFO registers SPIFFTX, SPIFFRX, and SPIFFCT will be
active.
5. Interrupts. FIFO mode has two interrupts one for transmit FIFO, SPITXINT and one for receive FIFO,
SPIINT/SPIRXINT. SPIINT/SPIRXINT is the common interrupt for SPI FIFO receive, receive error and
receive FIFO overflow conditions. The single SPIINT for both transmit and receive sections of the
standard SPI will be disabled and this interrupt will service as SPI receive FIFO interrupt.
852
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
6. Buffers. Transmit and receive buffers are supplemented with two FIFOs. The one-word transmit buffer
(TXBUF) of the standard SPI functions as a transition buffer between the transmit FIFO and shift
register. The one-word transmit buffer will be loaded from transmit FIFO only after the last bit of the
shift register is shifted out.
7. Delayed transfer. The rate at which transmit words in the FIFO are transferred to transmit shift register
is programmable. The SPIFFCT register bits (7−0) FFTXDLY7−FFTXDLY0 define the delay between
the word transfer. The delay is defined in number SPI serial clock cycles. The 8-bit register could
define a minimum delay of 0 serial clock cycles and a maximum of 255 serial clock cycles. With zero
delay, the SPI module can transmit data in continuous mode with the FIFO words shifting out back to
back. With the 255 clock delay, the SPI module can transmit data in a maximum delayed mode with
the FIFO words shifting out with a delay of 255 SPI clocks between each words. The programmable
delay facilitates glueless interface to various slow SPI peripherals, such as EEPROMs, ADC, DAC, etc.
8. FIFO status bits. Both transmit and receive FIFOs have status bits TXFFST or RXFFST (bits 12− 0)
that define the number of words available in the FIFOs at any time. The transmit FIFO reset bit
TXFIFO and receive reset bit RXFIFO will reset the FIFO pointers to zero when these bits are set to 1.
The FIFOs will resume operation from start once these bits are cleared to zero.
9. Programmable interrupt levels. Both transmit and receive FIFO can generate CPU interrupts. The
interrupt trigger is generated whenever the transmit FIFO status bits TXFFST (bits 12−8) match (less
than or equal to) the interrupt trigger level bits TXFFIL (bits 4−0 ). This provides a programmable
interrupt trigger for transmit and receive sections of the SPI. The default value for these trigger level
bits will be 0x11111 for receive FIFO and 0x00000 for transmit FIFO respectively.
12.1.6.1 SPI Interrupts
Figure 12-7. SPI FIFO Interrupt Flags and Enable Logic Generation
4 x 16-bit FIFO
RX FIFO 3
.
.
.
RXFFOVF flag
RXFFIL
RXFFIENA
1
RX FIFO 0
SPIFFENA
SPIRXINT
0
OVRNINTENA
RX BUF
SPI SOMI
RX_OVRN flag
SPIDAT
SPI SIMO
SPIINT flag
TX BUF
SPIINTENA
TX FIFO 0
TXFFIENA
.
.
.
SPIFFENA
0
TXFFIL
SPITXINT
1
TX FIFO 3
Table 12-4. SPI Interrupt Flag Modes
FIFO Options
SPI Interrupt
Source
Interrupt Flags
Interrupt Enables
FIFO Enable
SPIFFENA
Interrupt (1) line
SPI without FIFO
(1)
Receive overrun
RXOVRN
OVRNINTENA
0
SPIRXINT
Data receive
SPIINT
SPIINTENA
0
SPIRXINT
Transmit empty
SPIINT
SPIINTENA
0
SPIRXINT
In non FIFO mode, SPIINT may be referred to as SPIRXINT.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI) 853
Enhanced SPI Module Overview
www.ti.com
Table 12-4. SPI Interrupt Flag Modes (continued)
FIFO Options
SPI Interrupt
Source
Interrupt Flags
Interrupt Enables
FIFO Enable
SPIFFENA
Interrupt (1) line
SPI FIFO mode
FIFO receive
RXFFIL
RXFFIENA
1
SPIRXINT
Transmit empty
TXFFIL
TXFFIENA
1
SPITXINT
12.1.7 SPI 3-Wire Mode Description
SPI 3-wire mode allows for SPI communication over three pins instead of the normal four pins.
In master mode, if the TRIWIRE (SPIPRI.0) bit is set, enabling 3-wire SPI mode, SPISIMOx becomes the
bi-directional SPIMOMIx (SPI master out, master in) pin, and SPISOMIx is no longer used by the SPI. In
slave mode, if the TRIWIRE bit is set, SPISOMIx becomes the bi-directional SPISISOx (SPI slave in, slave
out) pin, and SPISIMOx is no longer used by the SPI.
The table below indicates the pin function differences between 3-wire and 4-wire SPI mode for a master
and slave SPI.
Table 12-5. 4-wire vs. 3-wire SPI Pin Functions
4-wire SPI
3-wire SPI (Master)
3-wire SPI(Slave)
SPICLKx
SPICLKx
SPICLKx
SPISTEx
SPISTEx
SPISTEx
SPISIMOx
SPIMOMIx
Free
SPISOMIx
Free
SPISISOx
Because in 3-wire mode, the receive and transmit paths within the SPI are connected, any data
transmitted by the SPI module is also received by itself. The application software must take care to
perform a dummy read to clear the SPI data register of the additional received data.
The TALK bit (SPICTL.1) plays an important role in 3-wire SPI mode. The bit must be set to transmit data
and cleared prior to reading data. In master mode, in order to initiate a read, the application software must
write dummy data to the SPI data register (SPIDAT or SPIRXBUF) while the TALK bit is cleared (no data
is transmitted out the SPIMOMI pin) before reading from the data register.
Figure 12-8. SPI 3-wire Master Mode
GPIO MUX
SPI Module
Data RX
Free pin
SPIDAT
Data TX
Talk
SPIMOMIx
SPICTL.1
854
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
Figure 12-9. SPI 3-wire Slave Mode
GPIO MUX
SPI Module
Data RX
SPISISOx
SPIDAT
Data TX
Free pin
Talk
SPICTL.1
Table 12-6 indicates how data is received or transmitted in the various SPI modes while the TALK bit is
set or cleared.
Table 12-6. 3-Wire SPI Pin Configuration
Pin Mode
SPIPRI[TRIWIRE]
SPICTL[TALK]
SPISIMO
SPISOMI
Master Mode
4-wire
0
X
TX
RX
3-pin mode
1
0
RX
Disconnect from SPI
1
TX/RX
Slave Mode
4-wire
0
X
RX
TX
3-pin mode
1
0
Disconnect from SPI
RX
1
TX/RX
SPI 3-Wire Mode Code Examples
In addition to the normal SPI initialization, to configure the SPI module for 3-wire mode, the TRIWIRE bit
(SPIPRI.0) must be set to 1. After initialization, there are several considerations to take into account when
transmitting and receiving data in 3-wire master and slave mode. The following examples demonstrate
these considerations.
In 3-wire master mode, SPICLKx, SPISTEx, and SPISIMOx pins must be configured as SPI pins
(SPISOMIx pin can be configured as non-SPI pin). When the master transmits, it receives the data it
transmits (because SPISIMOx and SPISOMIx are connected internally in 3-wire mode). Therefore, the
junk data received must be cleared from the receive buffer every time data is transmitted.
Example 12-4. 3-Wire Master Mode Transmit
Uint16 data;
Uint16 dummy;
SpiaRegs.SPICTL.bit.TALK = 1;
//
SpiaRegs.SPITXBUF = data; // Master transmits
while(SpiaRegs.SPISTS.bit.INT_FLAG !=1) {} //
dummy = SpiaRegs.SPIRXBUF;
//
//
Enable Transmit path
data
Waits until data rx’d
Clears junk data from itself
bc it rx’d same data tx’d
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
855
Enhanced SPI Module Overview
www.ti.com
To receive data in 3-wire master mode, the master must clear the TALK (SPICTL.1) bit to 0 to close the
transmit path and then transmit dummy data in order to initiate the transfer from the slave. Because the
TALK bit is 0, unlike in transmit mode, the master dummy data does not appear on the SPISIMOx pin, and
the master does not receive its own dummy data. Instead, the data from the slave is received by the
master.
Example 12-5. 3-Wire Master Mode Receive
Uint16 rdata;
Uint16 dummy;
SpiaRegs.SPICTL.bit.TALK = 0;
// Disable Transmit path
SpiaRegs.SPITXBUF = dummy;
// Send dummy to start tx
// NOTE: because TALK = 0, data does not tx onto SPISIMOA pin
while(SpiaRegs.SPISTS.bit.INT_FLAG !=1) {} // Wait until data received
rdata = SpiaRegs.SPIRXBUF;
// Master reads data
In 3-wire slave mode, SPICLKx, SPISTEx, and SPISOMIx pins must be configured as SPI pins
(SPISIMOx pin can be configured as non-SPI pin). Like in master mode, when transmitting, the slave
receives the data it transmits and must clear this junk data from its receive buffer.
Example 12-6. 3-Wire Slave Mode Transmit
Uint16 data;
Uint16 dummy;
SpiaRegs.SPICTL.bit.TALK = 1;
//
SpiaRegs.SPITXBUF = data;
//
while(SpiaRegs.SPISTS.bit.INT_FLAG !=1) {} //
dummy = SpiaRegs.SPIRXBUF;
//
Enable Transmit path
Slave transmits data
Wait until data rx’d
Clears junk data from itself
As in 3-wire master mode, the TALK bit must be cleared to 0. Otherwise, the slave receives data normally.
Example 12-7. - 3-Wire Slave Mode Receive
Uint16 rdata;
SpiaRegs.SPICTL.bit.TALK = 0;
// Disable Transmit path
while(SpiaRegs.SPISTS.bit.INT_FLAG !=1) {} // Waits until data rx’d
rdata = SpiaRegs.SPIRXBUF;
// Slave reads data
12.1.8 SPI STEINV Bit in Digital Audio Transfers
On those devices with two SPI modules, enabling the STEINV bit (SPIPRI.1) on one of the SPI modules
allows the pair of SPIs to receive both left and right-channel digital audio data in slave mode. The SPI
module that receives a normal active-low SPISTE signal stores right-channel data, and the SPI module
that receives an inverted active-high SPISTE signal stores left-channel data from the master. To receive
digital audio data from a digital audio interface receiver, the SPI modules can be connected as shown in
Figure 12-10.
856
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SPI Module Overview
www.ti.com
Figure 12-10. SPI Digital Audio Receiver Configuration Using 2 SPIs
SPICLKA
SPICLKB
SPISIMOA
SPISIMOB
SPISOMIA
SPISOMIB
SPI-A
SPI-B
SPISTEA
DATA OUT
L/R CLK
AUDIOBIT
CLK
SPISTEB
DIGITAL
AUDIO
RECEiVER
Standard 28x SPI timing requirements limit the number of digital audio interface formats supported using
the 2-SPI configuration with the STEINV bit. See your device-specific data sheet electricals for SPI timing
requirements. With the SPI clock phase configured such that the CLOCK POLARITY (SPICCR.6) bit is 0
and the CLOCK PHASE (SPICTL.3) bit is 1 (data latched on rising edge of clock), standard right-justified
digital audio interface data format is supported as shown in Figure 12-11.
Figure 12-11. Standard Right-Justified Digital Audio Data Format
1/fs
SPI-B Receive (SPISTE invert)
L/R CLK
SPI-A Receive (normal SPISTE)
R-channel
L-channel
SPISTEA/B
SPICLKA/B
AUDIO BIT CLK
DATA OUT
0
n n-1
2
1
0
n n-1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
2
1
0
SPISIMOA/B
Serial Peripheral Interface (SPI)
857
SPI Registers and Waveforms
www.ti.com
12.2 SPI Registers and Waveforms
This section contains the registers, bit descriptions, and waveforms.
12.2.1 SPI Example Waveforms
Figure 12-12. CLOCK POLARITY = 0, CLOCK PHASE = 0 (All data transitions are during the rising edge,
non-delayed clock. Inactive level is low.)
Ch1 Period
200 ns
SPICLK
SPISIMO
858
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Figure 12-13. CLOCK POLARITY = 0, CLOCK PHASE = 1 (All data transitions are during the rising edge,
but delayed by half clock cycle. Inactive level is low.)
Ch1 Period
200 ns
SPICLK
SPISIMO
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
859
SPI Registers and Waveforms
www.ti.com
Figure 12-14. CLOCK POLARITY = 1, CLOCK PHASE = 0 (All data transitions are during the falling edge.
Inactive level is high.)
Ch1 Period
199 ns
SPICLK
SPISIMO
860
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Figure 12-15. CLOCK POLARITY = 1, CLOCK PHASE = 1 (All data transitions are during the falling edge,
but delayed by half clock cycle. Inactive level is high.)
Ch1 Period
200 ns
SPICLK
SPISIMO
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
861
SPI Registers and Waveforms
www.ti.com
Figure 12-16. SPISTE Behavior in Master Mode (Master lowers SPISTE during the entire 16 bits of
transmission.)
Ch1 Period
200 ns
SPICLK
SPISTE
862
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Figure 12-17. SPISTE Behavior in Slave Mode (Slave’s SPISTE is lowered during the entire 16 bits of
transmission.)
Ch1 Period
398 ns
SPISIMO
SPISTE
12.2.2 SPI Control Registers
The SPI is controlled and accessed through registers in the control register file.
12.2.2.1 SPI Configuration Control Register (SPICCR)
SPICCR controls the setup of the SPI for operation.
Figure 12-18. SPI Configuration Control Register (SPICCR) — Address 7040h
7
6
5
4
3
2
1
0
SPI SW Reset
CLOCK
POLARITY
Reserved
SPILBK
SPI CHAR3
SPI CHAR2
SPI CHAR1
SPI CHAR0
R/W-0
R/W-0
R-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
863
SPI Registers and Waveforms
www.ti.com
Table 12-7. SPI Configuration Control Register (SPICCR) Field Descriptions
Bit
7
6
Field
Value
Description
SPI SW RESET
SPI software reset. When changing configuration, you should clear this bit before making changes
and set this bit before resuming operation.
0
Initializes the SPI operating flags to the reset condition. Specifically, the RECEIVER OVERRUN
Flag bit (SPISTS.7), the SPI INT FLAG bit (SPISTS.6), and the TXBUF FULL Flag bit (SPISTS.5)
are cleared. SPISTE will become inactive. SPICLK will be immediately driven to 0 regardless of the
clock polarity. The SPI configuration remains unchanged.
1
SPI is ready to transmit or receive the next character. When the SPI SW RESET bit is a 0, a
character written to the transmitter will not be shifted out when this bit is set. A new character must
be written to the serial data register. SPICLK will be returned to its inactive state one SPICLK cycle
after this bit is set.
CLOCK
POLARITY
Shift Clock Polarity. This bit controls the polarity of the SPICLK signal. CLOCK POLARITY and
CLOCK PHASE (SPICTL.3) control four clocking schemes on the SPICLK pin. See
Section 12.1.5.3.
0
Data is output on rising edge and input on falling edge. When no SPI data is sent, SPICLK is at low
level. The data input and output edges depend on the value of the CLOCK PHASE bit (SPICTL.3)
as follows:
• CLOCK PHASE = 0: Data is output on the rising edge of the SPICLK signal; input data is latched
on the falling edge of the SPICLK signal.
• CLOCK PHASE = 1: Data is output one half-cycle before the first rising edge of the SPICLK
signal and on subsequent falling edges of the SPICLK signal; input data is latched on the rising
edge of the SPICLK signal.
1
Data is output on falling edge and input on rising edge. When no SPI data is sent, SPICLK is at
high level. The data input and output edges depend on the value of the CLOCK PHASE bit
(SPICTL.3) as follows:
• CLOCK PHASE = 0: Data is output on the falling edge of the SPICLK signal; input data is
latched on the rising edge of the SPICLK signal.
• CLOCK PHASE = 1: Data is output one half-cycle before the first falling edge of the SPICLK
signal and on subsequent rising edges of the SPICLK signal; input data is latched on the falling
edge of the SPICLK signal.
5
Reserved
Reads return zero; writes have no effect.
4
SPILBK
SPI loopback. Loop back mode allows module validation during device testing. This mode is valid
only in master mode of the SPI.
3-0
0
SPI loop back mode disabled – default value after reset
1
SPI loop back mode enabled, SIMO/SOMI lines are connected internally. Used for module self
tests.
SPI CHAR3 −
SPI CHAR0
Character Length Control Bits 3-0. These four bits determine the number of bits to be shifted in or
out as a single character during one shift sequence. Table 12-8 lists the character length selected
by the bit values.
Table 12-8. Character Length Control Bit Values
864
SPI CHAR3
SPI CHAR2
SPI CHAR1
SPI CHAR0
Character Length
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
10
1
0
1
0
11
1
0
1
1
12
1
1
0
0
13
1
1
0
1
14
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Table 12-8. Character Length Control Bit Values (continued)
SPI CHAR3
SPI CHAR2
SPI CHAR1
SPI CHAR0
Character Length
1
1
1
0
15
1
1
1
1
16
12.2.2.2 SPI Operation Control Register (SPICTL)
SPICTL controls data transmission, the SPI’s ability to generate interrupts, the SPICLK phase, and the
operational mode (slave or master).
Figure 12-19. SPI Operation Control Register (SPICTL) — Address 7041h
7
6
4
3
2
1
0
Reserved
5
OVERRUN INT
ENA
CLOCK
PHASE
MASTER/
SLAVE
TALK
SPI INT ENA
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-9. SPI Operation Control Register (SPICTL) Field Descriptions
Bit
Field
7-5
Reserved
Reads return zero; writes have no effect.
Overrun INT ENA
Overrun Interrupt Enable. Setting this bit causes an interrupt to be generated when the RECEIVER
OVERRUN Flag bit (SPISTS.7) is set by hardware. Interrupts generated by the RECEIVER
OVERRUN Flag bit and the SPI INT FLAG bit (SPISTS.6) share the same interrupt vector.
4
3
2
1
Value
Description
0
Disable RECEIVER OVERRUN Flag bit (SPISTS.7) interrupts
1
Enable RECEIVER OVERRUN Flag bit (SPISTS.7) interrupts
CLOCK PHASE
SPI Clock Phase Select. This bit controls the phase of the SPICLK signal.
CLOCK PHASE and CLOCK POLARITY (SPICCR.6) make four different clocking schemes
possible (see Figure 12-4). When operating with CLOCK PHASE high, the SPI (master or slave)
makes the first bit of data available after SPIDAT is written and before the first edge of the SPICLK
signal, regardless of which SPI mode is being used.
0
Normal SPI clocking scheme, depending on the CLOCK POLARITY bit (SPICCR.6)
1
SPICLK signal delayed by one half-cycle; polarity determined by the CLOCK POLARITY bit
MASTER /
SLAVE
SPI Network Mode Control. This bit determines whether the SPI is a network master or slave.
During reset initialization, the SPI is automatically configured as a network slave.
0
SPI configured as a slave.
1
SPI configured as a master.
TALK
Master/Slave Transmit Enable. The TALK bit can disable data transmission (master or slave) by
placing the serial data output in the high-impedance state. If this bit is disabled during a
transmission, the transmit shift register continues to operate until the previous character is shifted
out. When the TALK bit is disabled, the SPI is still able to receive characters and update the status
flags. TALK is cleared (disabled) by a system reset.
0
Disables transmission:
• Slave mode operation: If not previously configured as a general-purpose I/O pin, the SPISOMI
pin will be put in the high-impedance state.
• Master mode operation: If not previously configured as a general-purpose I/O pin, the SPISIMO
pin will be put in the high-impedance state.
1
0
SPI INT ENA
Enables transmission For the 4-pin option, ensure to enable the receiver’s SPISTE input pin.
SPI Interrupt Enable. This bit controls the SPI’s ability to generate a transmit/receive interrupt. The
SPI INT FLAG bit (SPISTS.6) is unaffected by this bit.
0
Disables interrupt
1
Enables interrupt
12.2.2.3 SPI Status Register (SPIST)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
865
SPI Registers and Waveforms
www.ti.com
Figure 12-20. SPI Status Register (SPIST) — Address 7042h
7
6
5
4
0
RECEIVER
OVERRUN
FLAG (1) (2)
SPI INT
FLAG (1) (2)
TX BUF FULL
FLAG (2)
Reserved
R/C-0
R/C-0
R/C-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
(1)
The RECEIVER OVERRUN FLAG bit and the SPI INT FLAG bit share the same interrupt vector.
Writing a 0 to bits 5, 6, and 7 has no effect.
(2)
Table 12-10. SPI Status Register (SPIST) Field Descriptions
Bit
Field
7
Value
RECEIVER
OVERRUN FLAG
Description
SPI Receiver Overrun Flag. This bit is a read/clear-only flag. The SPI hardware sets this bit when a
receive or transmit operation completes before the previous character has been read from the
buffer. The bit indicates that the last received character has been overwritten and therefore lost
(when the SPIRXBUF was overwritten by the SPI module before the previous character was read
by the user application). The SPI requests one interrupt sequence each time this bit is set if the
OVERRUN INT ENA bit (SPICTL.4) is set high. The bit is cleared in one of three ways:
• Writing a 1 to this bit
• Writing a 0 to SPI SW RESET (SPICCR.7)
• Resetting the system
If the OVERRUN INT ENA bit (SPICTL.4) is set, the SPI requests only one interrupt upon the first
occurrence of setting the RECEIVER OVERRUN Flag bit. Subsequent overruns will not request
additional interrupts if this flag bit is already set. This means that in order to allow new overrun
interrupt requests the user must clear this flag bit by writing a 1 to SPISTS.7 each time an overrun
condition occurs. In other words, if the RECEIVER OVERRUN Flag bit is left set (not cleared) by
the interrupt service routine, another overrun interrupt will not be immediately re-entered when the
interrupt service routine is exited.
6
0
Writing a 0 has no effect
1
Clears this bit. The RECEIVER OVERRUN Flag bit should be cleared during the interrupt service
routine because the RECEIVER OVERRUN Flag bit and SPI INT FLAG bit (SPISTS.6) share the
same interrupt vector. This will alleviate any possible doubt as to the source of the interrupt when
the next byte is received.
SPI INT FLAG
SPI Interrupt Flag. SPI INT FLAG is a read-only flag. The SPI hardware sets this bit to indicate that
it has completed sending or receiving the last bit and is ready to be serviced. The received
character is placed in the receiver buffer at the same time this bit is set. This flag causes an
interrupt to be requested if the SPI INT ENA bit (SPICTL.0) is set.
0
Writing a 0 has no effect
1
This bit is cleared in one of three ways:
• Reading SPIRXBUF
• Writing a 0 to SPI SW RESET (SPICCR.7)
• Resetting the system
5
TX BUF FULL
FLAG
4-0
SPI Transmit Buffer Full Flag. This read-only bit gets set to 1 when a character is written to the SPI
Transmit buffer SPITXBUF. It is cleared when the character is automatically loaded into SPIDAT
when the shifting out of a previous character is complete.
Reserved
0
Writing a 0 has no effect
1
This bit is cleared at reset.
0
Reads return zero; writes have no effect.
12.2.2.4 SPI Baud Rate Register (SPIBRR)
SPIBRR contains the bits used for baud-rate selection.
Figure 12-21. SPI Baud Rate Register (SPIBRR) — Address 7044h
7
6
5
4
3
2
1
0
Reserved
SPI BIT RATE 6
SPI BIT RATE 5
SPI BIT RATE 4
SPI BIT RATE 3
SPI BIT RATE 2
SPI BIT RATE 1
SPI BIT RATE 0
R-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
866
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Table 12-11. Field Descriptions
Bit
Field
7
6-0
Value
Description
Reserved
Reads return zero; writes have no effect.
SPI BIT RATE 6−
SPI BIT RATE 0
SPI Bit Rate (Baud) Control. These bits determine the bit transfer rate if the SPI is the network
master. There are 125 data-transfer rates (each a function of the CPU clock, LSPCLK) that can be
selected. One data bit is shifted per SPICLK cycle. (SPICLK is the baud rate clock output on the
SPICLK pin.)
If the SPI is a network slave, the module receives a clock on the SPICLK pin from the network
master; therefore, these bits have no effect on the SPICLK signal. The frequency of the input clock
from the master should not exceed the slave SPI’s SPICLK signal divided by 4.
In master mode, the SPI clock is generated by the SPI and is output on the SPICLK pin. The SPI
baud rates are determined by the following formula:
SPI Baud Rate =
For SPIBRR = 3 to 127:
For SPIBRR = 0, 1, or 2:
LSPCLK
(SPIBRR + 1)
SPI Baud Rate = LSPCLK
4
where: LSPCLK = Function of CPU clock frequency X low-speed peripheral clock of the device
SPIBRR = Contents of the SPIBRR in the master SPI device
12.2.2.5 SPI Emulation Buffer Register (SPIRXEMU)
SPIRXEMU contains the received data. Reading SPIRXEMU does not clear the SPI INT FLAG bit
(SPISTS.6). This is not a real register but a dummy address from which the contents of SPIRXBUF can be
read by the emulator without clearing the SPI INT FLAG.
Figure 12-22. SPI Emulation Buffer Register (SPIRXEMU) — Address 7046h
15
14
13
12
11
10
9
8
ERXB15
ERXB14
ERXB13
ERXB12
ERXB11
ERXB10
ERXB9
ERXB8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
ERXB7
ERXB6
ERXB5
ERXB4
ERXB3
ERXB2
ERXB1
ERXB0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-12. SPI Emulation Buffer Register (SPIRXEMU) Field Descriptions
Bit
15-0
Field
ERXB15− ERXB0
Value
Description
Emulation Buffer Received Data. SPIRXEMU functions almost identically to SPIRXBUF, except that
reading SPIRXEMU does not clear the SPI INT FLAG bit (SPISTS.6). Once the SPIDAT has
received the complete character, the character is transferred to SPIRXEMU and SPIRXBUF, where
it can be read. At the same time, SPI INT FLAG is set.
This mirror register was created to support emulation. Reading SPIRXBUF clears the SPI INT
FLAG bit (SPISTS.6). In the normal operation of the emulator, the control registers are read to
continually update the contents of these registers on the display screen. SPIRXEMU was created
so that the emulator can read this register and properly update the contents on the display screen.
Reading SPIRXEMU does not clear the SPI INT FLAG bit, but reading SPIRXBUF clears this flag.
In other words, SPIRXEMU enables the emulator to emulate the true operation of the SPI more
accurately.
It is recommended that you view SPIRXEMU in the normal emulator run mode.
12.2.2.6 SPI Serial Receive Buffer Register (SPIRXBUF)
SPIRXBUF contains the received data. Reading SPIRXBUF clears the SPI INT FLAG bit (SPISTS.6).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
867
SPI Registers and Waveforms
www.ti.com
Figure 12-23. SPI Serial Receive Buffer Register (SPIRXBUF) — Address 7047h
15
14
13
12
11
10
9
8
RXB15
RXB14
RXB13
RXB12
RXB11
RXB10
RXB9
RXB8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
RXB7
RXB6
RXB5
RXB4
RXB3
RXB2
RXB1
RXB0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-13. SPI Serial Receive Buffer Register (SPIRXBUF) Field Descriptions
Bit
Field
Value
RXB15 − RXB0
15-0
Description
Received Data. Once SPIDAT has received the complete character, the character is transferred to
SPIRXBUF, where it can be read. At the same time, the SPI INT FLAG bit (SPISTS.6) is set. Since
data is shifted into the SPI’s most significant bit first, it is stored right-justified in this register.
12.2.2.7 SPI Serial Transmit Buffer Register (SPITXBUF)
SPITXBUF stores the next character to be transmitted. Writing to this register sets the TX BUF FULL Flag
bit (SPISTS.5). When transmission of the current character is complete, the contents of this register are
automatically loaded in SPIDAT and the TX BUF FULL Flag is cleared. If no transmission is currently
active, data written to this register falls through into the SPIDAT register and the TX BUF FULL Flag is not
set.
In master mode, if no transmission is currently active, writing to this register initiates a transmission in the
same manner that writing to SPIDAT does.
Figure 12-24. SPI Serial Transmit Buffer Register (SPITXBUF) — Address 7048h
15
14
13
12
11
10
9
8
TXB15
TXB14
TXB13
TXB12
TXB11
TXB10
TXB9
TXB8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
TXB7
TXB6
TXB5
TXB4
TXB3
TXB2
TXB1
TXB0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-14. SPI Serial Transmit Buffer Register (SPITXBUF) Field Descriptions
Bit
15-0
Field
Value
TXB15 − TXB0
Description
Transmit Data Buffer. This is where the next character to be transmitted is stored. When the
transmission of the current character has completed, if the TX BUF FULL Flag bit is set, the
contents of this register is automatically transferred to SPIDAT, and the TX BUF FULL Flag is
cleared.
Writes to SPITXBUF must be left-justified.
12.2.2.8 SPI Serial Data Register (SPIDAT)
SPIDAT is the transmit/receive shift register. Data written to SPIDAT is shifted out (MSB) on subsequent
SPICLK cycles. For every bit (MSB) shifted out of the SPI, a bit is shifted into the LSB end of the shift
register.
868
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Figure 12-25. SPI Serial Data Register (SPIDAT) — Address 7049h
15
14
13
12
11
10
9
8
SDAT15
SDAT14
SDAT13
SDAT12
SDAT11
SDAT10
SDAT9
SDAT8
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
SDAT7
SDAT6
SDAT5
SDAT4
SDAT3
SDAT2
SDAT1
SDAT0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-15. SPI Serial Data Register (SPIDAT) Field Descriptions
Bit
15-0
Field
SDAT15 −
SDAT0
Value
Description
Serial data. Writing to the SPIDAT performs two functions:
• It provides data to be output on the serial output pin if the TALK bit (SPICTL.1) is set.
• When the SPI is operating as a master, a data transfer is initiated. When initiating a transfer, see
the CLOCK POLARITY bit (SPICCR.6) described in Section 12.2.2.1 and the CLOCK PHASE bit
(SPICTL.3) described in Section 12.2.2.2, for the requirements.
In master mode, writing dummy data to SPIDAT initiates a receiver sequence. Since the data is not
hardware-justified for characters shorter than sixteen bits, transmit data must be written in leftjustified form, and received data read in right-justified form.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
869
SPI Registers and Waveforms
www.ti.com
12.2.2.9 SPI FIFO Transmit, Receive, and Control Registers
Figure 12-26. SPI FIFO Transmit (SPIFFTX) Register − Address 704Ah
15
14
13
12
11
10
9
8
SPIRST
SPIFFENA
TXFIFO
TXFFST4
TXFFST3
TXFFST2
TXFFST1
TXFFST0
R/W-1
R/W−0
R/W-1
R−0
R−0
R−0
R−0
R−0
7
6
5
4
3
2
1
0
TXFFINT Flag
TXFFINT CLR
TXFFIENA
TXFFIL4
TXFFIL3
TXFFIL2
TXFFIL1
TXFFIL0
R/W-0
W−0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-16. SPI FIFO Transmit (SPIFFTX) Register Field Descriptions
Bit
Field
15
SPIRST
14
Value
Description
SPI reset
0
Write 0 to reset the SPI transmit and receive channels. The SPI FIFO register configuration bits will
be left as is.
1
SPI FIFO can resume transmit or receive. No effect to the SPI registers bits.
SPIFFENA
13
SPI FIFO enhancements enable
0
SPI FIFO enhancements are disabled
1
SPI FIFO enhancements are enabled
TXFIFO Reset
12-8
Transmit FIFO reset
0
Write 0 to reset the FIFO pointer to zero, and hold in reset.
1
Re-enable Transmit FIFO operation
TXFFST4−0
7
Transmit FIFO status
00000
Transmit FIFO is empty.
00001
Transmit FIFO has 1 word.
00010
Transmit FIFO has 2 words.
00011
Transmit FIFO has 3 words.
00100
Transmit FIFO has 4 words, which is the maximum.
TXFFINT
6
TXFIFO interrupt
0
TXFIFO interrupt has not occurred, This is a read-only bit.
1
TXFIFO interrupt has occurred, This is a read-only bit.
TXFFINT CLR
5
TXFIFO clear
0
Write 0 has no effect on TXFIFINT flag bit, Bit reads back a zero.
1
Write 1 to clear TXFFINT flag in bit 7.
TXFFIENA
4-0
TX FIFO interrupt enable
0
TX FIFO interrupt based on TXFFIVL match (less than or equal to) will be disabled .
1
TX FIFO interrupt based on TXFFIVL match (less than or equal to) will be enabled.
TXFFIL4−0
TXFFIL4−0 transmit FIFO interrupt level bits. Transmit FIFO will generate interrupt when the FIFO
status bits (TXFFST4−0) and FIFO level bits (TXFFIL4−0 ) match (less than or equal to).
00000
Default value is 0x00000.
Figure 12-27. SPI FIFO Receive (SPIFFRX) Register − Address 704Bh
15
14
RXFFOVF Flag RXFFOVF CLR
13
12
11
10
9
8
RXFIFO Reset
RXFFST4
RXFFST3
RXFFST2
RXFFST1
RXFFST0
R-0
W−0
R/W−1
R−0
R−0
R−0
R−0
R−0
7
6
5
4
3
2
1
0
RXFFINT Flag
RXFFINT CLR
RXFFIENA
RXFFIL4
RXFFIL3
RXFFIL2
RXFFIL1
RXFFIL0
R-0
W−0
R/W−0
R/W−1
R/W−1
R/W−1
R/W−1
R/W−1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
870
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Registers and Waveforms
www.ti.com
Table 12-17. SPI FIFO Receive (SPIFFRX) Register Field Descriptions
Bit
Field
15
RXFFOVF
14
Value
Receive FIFO overflow flag
0
Receive FIFO has not overflowed. This is a read-only bit.
1
Receive FIFO has overflowed, read-only bit. More than 4 words have been received in to the FIFO,
and the first received word is lost.
RXFFOVF CLR
13
Receive FIFO overflow clear
0
Write 0 does not affect RXFFOVF flag bit, Bit reads back a zero
1
Write 1 to clear RXFFOVF flag in bit 15
RXFIFO Reset
12-8
Receive FIFO reset
0
Write 0 to reset the FIFO pointer to zero, and hold in reset.
1
Re-enable receive FIFO operation
RXFFST4−0
7
Receive FIFO Status
00000
Receive FIFO is empty.
00001
Receive FIFO has 1 word.
00010
Receive FIFO has 2 words.
00011
Receive FIFO has 3 words.
00100
Receive FIFO has 4 words. Receive FIFO has a maximum of 4 words.
RXFFINT
6
Receive FIFO interrupt
0
RXFIFO interrupt has not occurred. This is a read-only bit.
1
RXFIFO interrupt has occurred. This is a read-only bit.
RXFFINT CLR
5
Receive FIFO interrupt clear
0
Write 0 has no effect on RXFIFINT flag bit, Bit reads back a zero.
1
Write 1 to clear RXFFINT flag in bit 7.
RXFFIENA
4-0
Description
RX FIFO interrupt enable
0
RX FIFO interrupt based on RXFFIL match (greater than or equal to) will be disabled.
1
RX FIFO interrupt based on RXFFIL match (greater than or equal to) will be enabled.
RXFFIL4−0
Receive FIFO interrupt level bits
11111
Receive FIFO generates an interrupt when the FIFO status bits (RXFFST4–0) are greater than or
equal to the FIFO level bits (RXFFIL4–0). The default value of these bits after reset is 11111. This
avoids frequent interrupts after reset, as the receive FIFO will be empty most of the time.
Figure 12-28. SPI FIFO Control (SPIFFCT) Register − Address 704Ch
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
FFTXDLY7
FFTXDLY6
FFTXDLY5
FFTXDLY4
FFTXDLY3
FFTXDLY2
FFTXDLY1
FFTXDLY0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-18. SPI FIFO Control (SPIFFCT) Register Field Descriptions
Bit
Field
15-8
Reserved
7-0
FFTXDLY7−0
Value
Description
Reads return zero; writes have no effect.
FIFO transmit delay bits
0
These bits define the delay between every transfer from FIFO transmit buffer to transmit shift
register. The delay is defined in number SPI serial clock cycles. The 8-bit register could define a
minimum delay of 0 serial clock cycles and a maximum of 255 serial clock cycles.
1
In FIFO mode, the buffer (TXBUF) between the shift register and the FIFO should be filled only
after the shift register has completed shifting of the last bit. This is required to pass on the delay
between transfers to the data stream. In the FIFO mode TXBUF should not be treated as one
additional level of buffer.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Peripheral Interface (SPI)
871
SPI Registers and Waveforms
www.ti.com
12.2.2.10 SPI Priority Control Register (SPIPRI)
Figure 12-29. SPI Priority Control Register (SPIPRI) — Address 704Fh
15
8
Reserved
R-0
7
5
4
1
0
Reserved
6
SPI SUSP
SOFT
SPI SUSP
FREE
3
Reserved
2
STEINV
TRIWIRE
R-0
R/W-0
R/W-0
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 12-19. SPI Priority Control Register (SPIPRI) Field Descriptions
Bit
Field
Value
Description
15-6 Reserved
Reads return zero; writes have no effect.
5-4
These bits determine what occurs when an emulation suspend occurs (for example, when the
debugger hits a breakpoint). The peripheral can continue whatever it is doing (free-run mode) or, if in
stop mode, it can either stop immediately or stop when the current operation (the current
receive/transmit sequence) is complete.
SPI SUSP SOFT
SPI SUSP FREE
00
Transmission stops after midway in the bit stream while TSUSPEND is asserted. Once TSUSPEND
is deasserted without a system reset, the remainder of the bits pending in the DATBUF are shifted.
Example: If SPIDAT has shifted 3 out of 8 bits, the communication freezes right there. However, if
TSUSPEND is later deasserted without resetting the SPI, SPI starts transmitting from where it had
stopped (fourth bit in this case) and will transmit 8 bits from that point. The SCI module operates
differently.
10
If the emulation suspend occurs before the start of a transmission, (i.e., before the first SPICLK
pulse) then the transmission will not occur. If the emulation suspend occurs after the start of a
transmission, then the data will be shifted out to completion. When the start of transmission occurs is
dependent on the baud rate used.
Standard SPI mode: Stop after transmitting the words in the shift register and buffer. That is, after
TXBUF and SPIDAT are empty.
In FIFO mode: Stop after transmitting the words in the shift register and buffer. That is, after TX FIFO
and SPIDAT are empty.
x1
3-2
1
Free run, continue SPI operation regardless of suspend or when the suspend occurred.
Reserved
STEINV
SPISTE inversion bit.
On devices with 2 SPI modules, inverting the SPISTE signal on one of the modules allows the device
to receive left and right- channel digital audio data.
0
872
0
SPISTE is active low (normal)
1
SPISTE is active high (inverted)
TRIWIRE
SPI 3-wire mode enable
0
Normal 4-wire SPI mode
1
3-wire SPI mode enabled. The unused pin becomes a GPIO pin. In master mode, the SPISIMO pin
becomes the SPIMOMI (master receive and transmit) pin and SPISOMI is free for non-SPI use. In
slave mode, the SIISOMI pin becomes the SPISISO (slave receive and transmit) pin and SPISIMO is
free for non-SPI use.
Serial Peripheral Interface (SPI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 13
SPRUH18G – January 2011 – Revised April 2017
Serial Communications Interface (SCI)
The serial communications interface (SCI) is a two−wire asynchronous serial port, commonly known as a
UART. The SCI modules support digital communications between the CPU and other asynchronous
peripherals that use the standard non-return-to-zero (NRZ) format. The SCI receiver and transmitter each
have a 4-level deep FIFO for reducing servicing overhead, and each has its own separate enable and
interrupt bits. Both can be operated independently for half-duplex communication, or simultaneously for
full-duplex communication.
To specify data integrity, the SCI checks received data for break detection, parity, overrun, and framing
errors. The bit rate is programmable to different speeds through a 16-bit baud-select register.
NOTE: The 28x SCI features several enhancements compared to the 240xA SCI. See
Section 13.1.1.10 for a description of these features.
Topic
13.1
13.2
...........................................................................................................................
Page
Enhanced SCI Module Overview ......................................................................... 874
SCI Registers ................................................................................................... 888
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
873
Enhanced SCI Module Overview
www.ti.com
13.1 Enhanced SCI Module Overview
The SCI interfaces are shown in Figure 13-1.
Figure 13-1. SCI CPU Interface
System
control
block
Low speed
prescaler
SCIENCLK
SYSCLKOUT
CPU
LSPCLK
SCITXD
MUX
SCIRXD
SCI
Registers
GPIO
Data Bus
SYSRS
RXINT
TXINT
PIE
block
Features of the SCI module include:
• Two external pins:
– SCITXD: SCI transmit-output pin
– SCIRXD: SCI receive-input pin
Both pins can be used as GPIO if not used for SCI.
• Baud rate programmable to 64K different rates
• Data-word format
– One start bit
– Data-word length programmable from one to eight bits
– Optional even/odd/no parity bit
– One or two stop bits
• Four error-detection flags: parity, overrun, framing, and break detection
• Two wake-up multiprocessor modes: idle-line and address bit
• Half- or full-duplex operation
• Double-buffered receive and transmit functions
• Transmitter and receiver operations can be accomplished through interrupt- driven or polled algorithms
with status flags.
• Separate enable bits for transmitter and receiver interrupts (except BRKDT)
• NRZ (non-return-to-zero) format
• 13 SCI module control registers located in the control register frame beginning at address 7050h
All registers in this module are 8-bit registers that are connected to Peripheral Frame 2. When a
register is accessed, the register data is in the lower byte (7−0), and the upper byte (15−8) is read as
zeros. Writing to the upper byte has no effect.
Enhanced features:
874
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
•
•
Auto-baud-detect hardware logic
4-level transmit/receive FIFO
Figure 13-2 shows the SCI module block diagram. The SCI port operation is configured and controlled by
the registers listed in Table 13-1 and Table 13-2.
Figure 13-2. Serial Communications Interface (SCI) Module Block Diagram
SCICTL1.1
SCITXD
Frame Format and Mode
TXSHF
Register
Parity
Even/Odd Enable
TXENA
8
SCICCR.6 SCICCR.5
TX EMPTY
SCICTL2.6
TXRDY
Transmitter-Data
Buffer Register
TXWAKE
SCICTL1.3
8
TX INT ENA
SCICTL2.7
SCICTL2.0
TX FIFO
Interrupts
TX FIFO _0
TX FIFO _1
1
TXINT
TX Interrupt
Logic
-----
To CPU
TX FIFO _3
WUT
SCITXD
SCI TX Interrupt select logic
SCITXBUF.7-0
TX FIFO registers
SCIFFENA
AutoBaud Detect logic
SCIFFTX.14
SCIHBAUD. 15 - 8
SCIRXD
RXSHF
Register
Baud Rate
MSbyte
Register
SCIRXD
RXWAKE
LSPCLK
SCIRXST.1
SCILBAUD. 7 - 0
RXENA
8
Baud Rate
LSbyte
Register
SCICTL1.0
SCICTL2.1
Receive Data
Buffer register
SCIRXBUF.7-0
RXRDY
8
BRKDT
RX FIFO _0
----RX FIFO_2
RX FIFO _3
SCIRXBUF.7-0
RX/BK INT ENA
SCIRXST.6
RX FIFO
Interrupts
SCIRXST.5
RX Interrupt
Logic
RX FIFO registers
SCIRXST.7
SCIRXST.4 - 2
RX Error
FE OE PE
RXINT
To CPU
RXFFOVF
SCIFFRX.15
RX Error
RX ERR INT ENA
SCICTL1.6
SCI RX Interrupt select logic
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Serial Communications Interface (SCI) 875
Enhanced SCI Module Overview
www.ti.com
Table 13-1. SCI-A Registers
Name
Address Range
Size (x16)
SCICCR
0x0000-7050
1
Description
SCI-A Communications Control Register
SCICTL1
0x0000-7051
1
SCI-A Control Register 1
SCIHBAUD
0x0000-7052
1
SCI-A Baud Register, High Bits
SCILBAUD
0x0000-7053
1
SCI-A Baud Register, Low Bits
SCICTL2
0x0000-7054
1
SCI-A Control Register 2
SCIRXST
0x0000-7055
1
SCI-A Receive Status Register
SCIRXEMU
0x0000-7056
1
SCI-A Receive Emulation Data Buffer Register
SCIRXBUF
0x0000-7057
1
SCI-A Receive Data Buffer Register
SCITXBUF
0x0000-7059
1
SCI-A Transmit Data Buffer Register
SCIFFTX
0x0000-705A
1
SCI-A FIFO Transmit Register
SCIFFRX
0x0000-705B
1
SCI-A FIFO Receive Register
SCIFFCT
0x0000-705C
1
SCI-A FIFO Control Register
SCIPRI
0x0000-705F
1
SCI-A Priority Control Register
Table 13-2. SCI-B Registers
Name
Description (1)
(2)
Address Range
Size (x16)
SCICCR
0x0000-7750
1
SCI-B Communications Control Register
SCICTL1
0x0000-7751
1
SCI-B Control Register 1
SCIHBAUD
0x0000-7752
1
SCI-B Baud Register, High Bits
SCILBAUD
0x0000-7753
1
SCI-B Baud Register, Low Bits
SCICTL2
0x0000-7754
1
SCI-B Control Register 2
SCIRXST
0x0000-7755
1
SCI-B Receive Status Register
SCIRXEMU
0x0000-7756
1
SCI-B Receive Emulation Data Buffer Register
SCIRXBUF
0x0000-7757
1
SCI-B Receive Data Buffer Register
SCITXBUF
0x0000-7759
1
SCI-B Transmit Data Buffer Register
SCIFFTX
0x0000-775A
1
SCI-B FIFO Transmit Register
SCIFFRX
0x0000-775B
1
SCI-B FIFO Receive Register
SCIFFCT
0x0000-775C
1
SCI-B FIFO Control Register
SCIPRI
0x0000-775F
1
SCI-B Priority Control Register
(1)
(2)
The registers are mapped to peripheral frame 2. This frame allows only 16-bit accesses. Using 32-bit accesses will produce
undefined results.
SCIB is an optional peripheral. In some devices this may not be present. See the device-specific data sheet for peripheral
availability.
13.1.1 Architecture
The major elements used in full-duplex operation are shown in Figure 13-2 and include:
• A transmitter (TX) and its major registers (upper half of Figure 13-2)
– SCITXBUF — transmitter data buffer register. Contains data (loaded by the CPU) to be transmitted
– TXSHF register — transmitter shift register. Accepts data from register SCITXBUF and shifts data
onto the SCITXD pin, one bit at a time
• A receiver (RX) and its major registers (lower half of Figure 13-2)
– RXSHF register — receiver shift register. Shifts data in from SCIRXD pin, one bit at a time
– SCIRXBUF — receiver data buffer register. Contains data to be read by the CPU. Data from a
remote processor is loaded into register RXSHF and then into registers SCIRXBUF and
SCIRXEMU
• A programmable baud generator
• Data-memory-mapped control and status registers
876
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
The SCI receiver and transmitter can operate either independently or simultaneously.
13.1.1.1 SCI Module Signal Summary
Table 13-3. SCI Module Signal Summary
Signal Name
Description
External signals
SCIRXD
SCI Asynchronous Serial Port receive data
SCITXD
SCI Asynchronous Serial Port transmit data
Control
Baud clock
LSPCLK Prescaled clock
Interrupt signals
TXINT
Transmit interrupt
RXINT
Receive Interrupt
13.1.1.2 Multiprocessor and Asynchronous Communication Modes
The SCI has two multiprocessor protocols, the idle-line multiprocessor mode (see Section 13.1.1.5) and
the address-bit multiprocessor mode (see Section 13.1.1.6). These protocols allow efficient data transfer
between multiple processors.
The SCI offers the universal asynchronous receiver/transmitter (UART) communications mode for
interfacing with many popular peripherals. The asynchronous mode (see Section 13.1.1.7) requires two
lines to interface with many standard devices such as terminals and printers that use RS-232-C formats.
Data transmission characteristics include:
• One start bit
• One to eight data bits
• An even/odd parity bit or no parity bit
• One or two stop bits
13.1.1.3 SCI Programmable Data Format
SCI data, both receive and transmit, is in NRZ (non-return-to-zero) format. The NRZ data format, shown in
Figure 13-3, consists of:
• One start bit
• One to eight data bits
• An even/odd parity bit (optional)
• One or two stop bits
• An extra bit to distinguish addresses from data (address-bit mode only)
The basic unit of data is called a character and is one to eight bits in length. Each character of data is
formatted with a start bit, one or two stop bits, and optional parity and address bits. A character of data
with its formatting information is called a frame and is shown in Figure 13-3.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
877
Enhanced SCI Module Overview
www.ti.com
Figure 13-3. Typical SCI Data Frame Formats
Start
LSB
2
3
4
5
6
7
MSB Parity Stop
Idle-line mode
(Normal nonmultiprocessor communications)
Address bit
Start
LSB
2
3
4
5
6
7
MSB Addr/ Parity Stop
data
Address-bit mode
To program the data format, use the SCICCR register. The bits used to program the data format are
shown in Table 13-4.
Table 13-4. Programming the Data Format Using SCICCR
Bit(s)
2-0
5
Bit Name
Designation
Functions
SCI CHAR2-0
SCICCR.2:0
Select the character (data) length (one to eight bits).
PARITY
SCICCR.5
Enables the parity function if set to 1, or disables the parity function
ENABLE
6
EVEN/ODD
if cleared to 0.
SCICCR.6
PARITY
7
STOP BITS
If parity is enabled, selects odd parity if cleared to 0 or even parity if
set to 1.
SCICCR.7
Determines the number of stop bits transmitted—one stop bit if cleared to 0 or two
stop bits if set to 1.
13.1.1.4 SCI Multiprocessor Communication
The multiprocessor communication format allows one processor to efficiently send blocks of data to other
processors on the same serial link. On one serial line, there should be only one transfer at a time. In other
words, there can be only one talker on a serial line at a time.
Address Byte
The first byte of a block of information that the talker sends contains an address byte that is read by all
listeners. Only listeners with the correct address can be interrupted by the data bytes that follow the
address byte. The listeners with an incorrect address remain uninterrupted until the next address byte.
Sleep Bit
All processors on the serial link set the SCI SLEEP bit (bit 2 of SCICTL1) to 1 so that they are interrupted
only when the address byte is detected. When a processor reads a block address that corresponds to the
CPU device address as set by your application software, your program must clear the SLEEP bit to enable
the SCI to generate an interrupt on receipt of each data byte.
Although the receiver still operates when the SLEEP bit is 1, it does not set RXRDY, RXINT, or any of the
receiver error status bits to 1 unless the address byte is detected and the address bit in the received
frame is a 1 (applicable to address-bit mode). The SCI does not alter the SLEEP bit; your software must
alter the SLEEP bit.
13.1.1.4.1 Recognizing the Address Byte
A processor recognizes an address byte differently, depending on the multiprocessor mode used. For
example:
• The idle-line mode (Section 13.1.1.5) leaves a quiet space before the address byte. This mode does
not have an extra address/data bit and is more efficient than the address-bit mode for handling blocks
that contain more than ten bytes of data. The idle-line mode should be used for typical nonmultiprocessor SCI communication.
• The address-bit mode (Section 13.1.1.6) adds an extra bit (that is, an address bit) into every byte to
distinguish addresses from data. This mode is more efficient in handling many small blocks of data
878
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
because, unlike the idle mode, it does not have to wait between blocks of data. However, at a high
transmit speed, the program is not fast enough to avoid a 10-bit idle in the transmission stream.
13.1.1.4.2 Controlling the SCI TX and RX Features
The multiprocessor mode is software selectable via the ADDR/IDLE MODE bit (SCICCR, bit 3). Both
modes use the TXWAKE flag bit (SCICTL1, bit 3), RXWAKE flag bit (SCIRXST, bit1), and the SLEEP flag
bit (SCICTL1, bit 2) to control the SCI transmitter and receiver features of these modes.
13.1.1.4.3 Receipt Sequence
In both multiprocessor modes, the receive sequence is:
1. At the receipt of an address block, the SCI port wakes up and requests an interrupt (bit number 1
RX/BK INT ENA-of SCICTL2 must be enabled to request an interrupt). It reads the first frame of the
block, which contains the destination address.
2. A software routine is entered through the interrupt and checks the incoming address. This address
byte is checked against its device address byte stored in memory.
3. If the check shows that the block is addressed to the device CPU, the CPU clears the SLEEP bit and
reads the rest of the block; if not, the software routine exits with the SLEEP bit still set and does not
receive interrupts until the next block start.
13.1.1.5 Idle-Line Multiprocessor Mode
In the idle-line multiprocessor protocol (ADDR/IDLE MODE bit=0), blocks are separated by having a
longer idle time between the blocks than between frames in the blocks. An idle time of ten or more highlevel bits after a frame indicates the start of a new block. The time of a single bit is calculated directly from
the baud value (bits per second). The idle-line multiprocessor communication format is shown in
Figure 13-4 (ADDR/IDLE MODE bit is bit 3 of SCICCR).
ÇÇÇÇÇÇ
ÇÇÇÇÇ
ÇÇÇ
ÇÇÇ
ÇÇÇÇÇÇ
ÇÇÇ
ÇÇÇÇÇ
ÇÇ
ÇÇÇÇÇÇ
ÇÇÇÇÇ
ÇÇÇÇÇÇ
ÇÇ
ÇÇÇÇ
ÇÇÇÇ
ÇÇ
ÇÇÇÇÇÇ
ÇÇÇÇ
ÇÇ
ÇÇÇÇ
ÇÇ
ÇÇÇÇ
Figure 13-4. Idle-Line Multiprocessor Communication Format
Data format
(Pins SCIRXD, SCITXD)
Several blocks of frames
Idle periods of 10 bits or more
separate the blocks
First frame within block
Is address; it follows idle
period of 10 bits or more
Start
Address
Start
Data format expanded
Start
One block of frames
Data
Frame within Idle period
block
less than 10
bits
Last Data
Idle period
of 10 bits
or more
13.1.1.5.1 Idle-Line Mode Steps
The steps followed by the idle-line mode:
Step 1. SCI wakes up after receipt of the block-start signal.
Step 2. The processor recognizes the next SCI interrupt.
Step 3. The interrupt service routine compares the received address (sent by a remote transmitter) to
its own.
Step 4. If the CPU is being addressed, the service routine clears the SLEEP bit and receives the rest
of the data block.
Step 5. If the CPU is not being addressed, the SLEEP bit remains set. This lets the CPU continue to
execute its main program without being interrupted by the SCI port until the next detection of
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
879
Enhanced SCI Module Overview
www.ti.com
a block start.
13.1.1.5.2 Block Start Signal
There are two ways to send a block-start signal:
1. Method 1: Deliberately leave an idle time of ten bits or more by delaying the time between the
transmission of the last frame of data in the previous block and the transmission of the address frame
of the new block.
2. Method 2: The SCI port first sets the TXWAKE bit (SCICTL1, bit 3) to 1 before writing to the
SCITXBUF register. This sends an idle time of exactly 11 bits. In this method, the serial
communications line is not idle any longer than necessary. (A don't care byte has to be written to
SCITXBUF after setting TXWAKE, and before sending the address, so as to transmit the idle time.)
13.1.1.5.3 Wake-UP Temporary (WUT) Flag
Associated with the TXWAKE bit is the wake-up temporary (WUT) flag. WUT is an internal flag, doublebuffered with TXWAKE. When TXSHF is loaded from SCITXBUF, WUT is loaded from TXWAKE, and the
TXWAKE bit is cleared to 0. This arrangement is shown in Figure 13-5.
Figure 13-5. Double-Buffered WUT and TXSHF
TXWAKE
A
Transmit buffer (SCITXBUF)
1
8
WUT
TXSHF
WUT = wake-up temporary
Sending a Block Start Signal
To send out a block-start signal of exactly one frame time during a sequence of block transmissions:
1. Write a 1 to the TXWAKE bit.
2. Write a data word (content not important: a don’t care) to the SCITXBUF register (transmit data buffer)
to send a block-start signal. (The first data word written is suppressed while the block-start signal is
sent out and ignored after that.) When the TXSHF (transmit shift register) is free again, SCITXBUF
contents are shifted to TXSHF, the TXWAKE value is shifted to WUT, and then TXWAKE is cleared.
Because TXWAKE was set to a 1, the start, data, and parity bits are replaced by an idle period of 11
bits transmitted following the last stop bit of the previous frame.
3. Write a new address value to SCITXBUF.
A don’t-care data word must first be written to register SCITXBUF so that the TXWAKE bit value can
be shifted to WUT. After the don’t-care data word is shifted to the TXSHF register, the SCITXBUF (and
TXWAKE if necessary) can be written to again because TXSHF and WUT are both double-buffered.
13.1.1.5.4 Receiver Operation
The receiver operates regardless of the SLEEP bit. However, the receiver neither sets RXRDY nor the
error status bits, nor does it request a receive interrupt until an address frame is detected.
13.1.1.6 Address-Bit Multiprocessor Mode
In the address-bit protocol (ADDR/IDLE MODE bit=1), frames have an extra bit called an address bit that
immediately follows the last data bit. The address bit is set to 1 in the first frame of the block and to 0 in all
other frames. The idle period timing is irrelevant (see Figure 13-6).
880
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
13.1.1.6.1 Sending an Address
The TXWAKE bit value is placed in the address bit. During transmission, when the SCITXBUF register
and TXWAKE are loaded into the TXSHF register and WUT respectively, TXWAKE is reset to 0 and WUT
becomes the value of the address bit of the current frame. Thus, to send an address:
1. Set the TXWAKE bit to 1 and write the appropriate address value to the SCITXBUF register.
When this address value is transferred to the TXSHF register and shifted out, its address bit is sent as
a 1. This flags the other processors on the serial link to read the address.
2. Write to SCITXBUF and TXWAKE after TXSHF and WUT are loaded. (Can be written to immediately
since both TXSHF and WUT are both double-buffered.
3. Leave the TXWAKE bit set to 0 to transmit non-address frames in the block.
NOTE: As a general rule, the address-bit format is typically used for data frames of 11 bytes or less.
This format adds one bit value (1 for an address frame, 0 for a data frame) to all data bytes
transmitted. The idle-line format is typically used for data frames of 12 bytes or more.
ÉÉ
ÉÉ
ÉÉ
ÉÉ
ÉÉ
ÉÉ
ÉÉ
ÉÉ
ÉÉÉÉÉ
ÉÉÉÉÉÉÉÉ
ÉÉÉ
ÉÉ
ÉÉÉ
ÉÉÉ
ÉÉ
ÉÉÉ
ÉÉÉ
ÉÉÉÉÉ
ÉÉÉÉÉÉÉÉ
ÉÉÉ
ÉÉÉÉÉ
ÉÉÉÉÉÉÉÉ
ÉÉÉ
Figure 13-6. Address-Bit Multiprocessor Communication Format
Data format
(Pins SCIRXD, SCITXD)
Blocks of frames
Idle periods of no significance
1
First frame within
block is address
(Address bit is 1)
Start
Addr
Start
Data format expanded
Start
One block
0
Data
Frame within block
(Address bit is 0)
Addr
1
Next frame is address
for next block
(Address bit is 1)
Idle time is of
no significance
Address bit
Start LSB
MSB
1
Parity Stop
Address-bit mode frame example
13.1.1.7 SCI Communication Format
The SCI asynchronous communication format uses either single line (one way) or two line (two way)
communications. In this mode, the frame consists of a start bit, one to eight data bits, an optional
even/odd parity bit, and one or two stop bits (shown in Figure 13-7). There are eight SCICLK periods per
data bit.
The receiver begins operation on receipt of a valid start bit. A valid start bit is identified by four
consecutive internal SCICLK periods of zero bits as shown in Figure 13-7. If any bit is not zero, then the
processor starts over and begins looking for another start bit.
For the bits following the start bit, the processor determines the bit value by making three samples in the
middle of the bits. These samples occur on the fourth, fifth, and sixth SCICLK periods, and bit-value
determination is on a majority (two out of three) basis. Figure 13-7 illustrates the asynchronous
communication format for this with a start bit showing where a majority vote is taken.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
881
Enhanced SCI Module Overview
www.ti.com
Since the receiver synchronizes itself to frames, the external transmitting and receiving devices do not
have to use a synchronized serial clock. The clock can be generated locally.
Figure 13-7. SCI Asynchronous Communications Format
Majority
vote
SC ICLK
(internal)
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
SCIRXD
Start bit
LSB of data
8 SCICLK periods per data bit
8 SCICLK periods per data bit
13.1.1.7.1 Receiver Signals in Communication Modes
Figure 13-8 illustrates an example of receiver signal timing that assumes the following conditions:
• Address-bit wake-up mode (address bit does not appear in idle-line mode)
• Six bits per character
Figure 13-8. SCI RX Signals in Communication Modes
RXENA
1
6
RXRDY
3
2
SCIRXD pin
4
5
0
Start
1
2
3
4
5
Ad
Pa
Stop
Start
0
1
2
Frame
(1)
2) Data arrives on the SCIRXD pin, start bit detected.
(2)
6) Bit RXENA is brought low to disable the receiver. Data continues to be assembled in RXSHF but is not
transferred to the receiver buffer register.
Notes:
1. Flag bit RXENA (SCICTL1, bit 0) goes high to enable the receiver.
2. Data arrives on the SCIRXD pin, start bit detected.
3. Data is shifted from RXSHF to the receiver buffer register (SCIRXBUF); an interrupt is requested. Flag
bit RXRDY (SCIRXST, bit 6) goes high to signal that a new character has been received.
4. The program reads SCIRXBUF; flag RXRDY is automatically cleared.
5. The next byte of data arrives on the SCIRXD pin; the start bit is detected, then cleared.
6. Bit RXENA is brought low to disable the receiver. Data continues to be assembled in RXSHF but is not
transferred to the receiver buffer register.
13.1.1.7.2 Transmitter Signals in Communication Modes
Figure 13-9 illustrates an example of transmitter signal timing that assumes the following conditions:
• Address-bit wake-up mode (address bit does not appear in idle-line mode)
• Three bits per character
882
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
Figure 13-9. SCI TX Signals in Communications Mode
TXENA
1
6
TXRDY
2 3
4
5
TX EMPTY
First Character
SCITXD pin
Start
0
1
2
Ad
Second Character
Pa Stop
Start
0
1
Frame
2
Ad
7
Pa Stop
Frame
Notes:
1. Bit TXENA (SCICTL1, bit 1) goes high, enabling the transmitter to send data.
2. SCITXBUF is written to; thus, (1) the transmitter is no longer empty, and (2) TXRDY goes low.
3. The SCI transfers data to the shift register (TXSHF). The transmitter is ready for a second character
(TXRDY goes high), and it requests an interrupt (to enable an interrupt, bit TX INT ENA — SCICTL2,
bit 0 — must be set).
4. The program writes a second character to SCITXBUF after TXRDY goes high (item 3). (TXRDY goes
low again after the second character is written to SCITXBUF.)
5. Transmission of the first character is complete. Transfer of the second character to shift register
TXSHF begins.
6. Bit TXENA goes low to disable the transmitter; the SCI finishes transmitting the current character.
7. Transmission of the second character is complete; transmitter is empty and ready for new character.
13.1.1.8 SCI Port Interrupts
The SCI receiver and transmitter can be interrupt controlled. The SCICTL2 register has one flag bit
(TXRDY) that indicates active interrupt conditions, and the SCIRXST register has two interrupt flag bits
(RXRDY and BRKDT), plus the RX ERROR interrupt flag which is a logical OR of the FE, OE, BRKDT,
and PE conditions. The transmitter and receiver have separate interrupt-enable bits. When not enabled,
the interrupts are not asserted; however, the condition flags remain active, reflecting transmission and
receipt status.
The SCI has independent peripheral interrupt vectors for the receiver and transmitter. Peripheral interrupt
requests can be either high priority or low priority. This is indicated by the priority bits which are output
from the peripheral to the PIE controller. When both RX and TX interrupt requests are made at the same
priority level, the receiver always has higher priority than the transmitter, reducing the possibility of
receiver overrun.
• If the RX/BK INT ENA bit (SCICTL2, bit 1) is set, the receiver peripheral interrupt request is asserted
when one of the following events occurs:
– The SCI receives a complete frame and transfers the data in the RXSHF register to the SCIRXBUF
register. This action sets the RXRDY flag (SCIRXST, bit 6) and initiates an interrupt.
– A break detect condition occurs (the SCIRXD is low for ten bit periods following a missing stop bit).
This action sets the BRKDT flag bit (SCIRXST, bit 5) and initiates an interrupt.
• If the TX INT ENA bit (SCICTL2.0) is set, the transmitter peripheral interrupt request is asserted
whenever the data in the SCITXBUF register is transferred to the TXSHF register, indicating that the
CPU can write to SCITXBUF; this action sets the TXRDY flag bit (SCICTL2, bit 7) and initiates an
interrupt.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
883
Enhanced SCI Module Overview
www.ti.com
NOTE: Interrupt generation due to the RXRDY and BRKDT bits is controlled by the RX/BK INT ENA
bit (SCICTL2, bit 1). Interrupt generation due to the RX ERROR bit is controlled by the RX
ERR INT ENA bit (SCICTL1, bit 6).
13.1.1.9 SCI Baud Rate Calculations
The internally generated serial clock is determined by the low-speed peripheral clock LSPCLK) and the
baud-select registers. The SCI uses the 16-bit value of the baud-select registers to select one of the 64K
different serial clock rates possible for a given LSPCLK.
See the bit descriptions in Section 13.2.4, for the formula to use when calculating the SCI asynchronous
baud. Table 13-5Table 13-5 shows the baud-select values for common SCI bit rates.
884 Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
Table 13-5. Asynchronous Baud Register Values for Common SCI Bit Rates
LSPCLK Clock Frequency, 15 MHz
Ideal Baud
BRR
Actual Baud
% Error
2400
780(30Ch)
2401
0.03
4800
390(186h)
4795
-0.10
9600
194(C2h)
9615
0.16
19200
97(61h)
19133
-0.35
38400
48(30h)
38265
-0.35
13.1.1.10 SCI Enhanced Features
The 28x SCI features autobaud detection and transmit/receive FIFO. The following section explains the
FIFO operation.
13.1.1.10.1 SCI FIFO Description
The following steps explain the FIFO features and help with programming the SCI with FIFOs.
1. Reset. At reset the SCI powers up in standard SCI mode and the FIFO function is disabled. The FIFO
registers SCIFFTX, SCIFFRX, and SCIFFCT remain inactive.
2. Standard SCI. The standard F24x SCI modes will work normally with TXINT/RXINT interrupts as the
interrupt source for the module.
3. FIFO enable. FIFO mode is enabled by setting the SCIFFEN bit in the SCIFFTX register. SCIRST can
reset the FIFO mode at any stage of its operation.
4. Active registers. All the SCI registers and SCI FIFO registers (SCIFFTX, SCIFFRX, and SCIFFCT) are
active.
5. Interrupts. FIFO mode has two interrupts; one for transmit FIFO, TXINT and one for receive FIFO,
RXINT. RXINT is the common interrupt for SCI FIFO receive, receive error, and receive FIFO overflow
conditions. The TXINT of the standard SCI will be disabled and this interrupt will service as SCI
transmit FIFO interrupt.
6. Buffers. Transmit and receive buffers are supplemented with two -level FIFOs. The transmit FIFO
registers are 8 bits wide and receive FIFO registers are 10 bits wide. The one word transmit buffer of
the standard SCI functions as a transition buffer between the transmit FIFO and shift register. The one
word transmit buffer is loaded from transmit FIFO only after the last bit of the shift register is shifted
out. With the FIFO enabled, TXSHF is directly loaded after an optional delay value (SCIFFCT), TXBUF
is not used.
7. Delayed transfer. The rate at which words in the FIFO are transferred to the transmit shift register is
programmable. The SCIFFCT register bits (7−0) FFTXDLY7−FFTXDLY0 define the delay between the
word transfer. The delay is defined in the number SCI baud clock cycles. The 8 bit register can define
a minimum delay of 0 baud clock cycles and a maximum of 256-baud clock cycles. With zero delay,
the SCI module can transmit data in continuous mode with the FIFO words shifting out back to back.
With the 256 clock delay the SCI module can transmit data in a maximum delayed mode with the FIFO
words shifting out with a delay of 256 baud clocks between each words. The programmable delay
facilitates communication with slow SCI/UARTs with little CPU intervention.
8. FIFO status bits. Both the transmit and receive FIFOs have status bits TXFFST or RXFFST (bits 12−0)
that define the number of words available in the FIFOs at any time. The transmit FIFO reset bit
TXFIFO and receive reset bit RXFIFO reset the FIFO pointers to zero when these bits are cleared to 0.
The FIFOs resumes operation from start once these bits are set to one.
9. Programmable interrupt levels. Both transmit and receive FIFO can generate CPU interrupts. The
interrupt trigger is generated whenever the transmit FIFO status bits TXFFST (bits 12−8) match (less
than or equal to) the interrupt trigger level bits TXFFIL (bits 4−0 ). This provides a programmable
interrupt trigger for transmit and receive sections of the SCI. Default value for these trigger level bits
will be 0x11111 for receive FIFO and 0x00000 for transmit FIFO, respectively.
Figure 13-10 and Table 13-6 explain the operation/configuration of SCI interrupts in nonFIFO/FFO mode.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
885
Enhanced SCI Module Overview
www.ti.com
Figure 13-10. SCI FIFO Interrupt Flags and Enable Logic
4x16 bit FIFO
RX FIFO 3
RXFFIENA
RXFFOVF flag
RXFFIL
1 SCIFFENA
RX FIFO 0
RXINT
RXERRINTENA
RX
RX BUF
RXERR flag
RXSHF
RXRDY/BRKDT
0
RX/BKINTENA
TXSHF
TX
TXRDY flag
TX BUF
TXINTENA
0 SCIFFENA
TXINT
TX FIFO 0
1
TXFFIENA
TXFFIL
TX FIFO 3
Auto-baud
detect logic
ABD bit
CDC bit
Table 13-6. SCI Interrupt Flags
FIFO Options (1)
SCI Interrupt Source
SCI without FIFO
Receive error
SCI with FIFO
Auto-baud
(1)
(2)
Interrupt Flags
RXERR
(2)
Interrupt Enables
FIFO Enable
SCIFFENA
Interrupt Line
RXERRINTENA
0
RXINT
Receive break
BRKDT
RX/BKINTENA
0
RXINT
Data receive
RXRDY
RX/BKINTENA
0
RXINT
Transmit empty
TXRDY
TXINTENA
0
TXINT
Receive error and
receive break
RXERR
RXERRINTENA
1
RXINT
FIFO receive
RXFFIL
RXFFIENA
1
RXINT
Transmit empty
TXFFIL
TXFFIENA
1
TXINT
ABD
Don’t care
x
TXINT
Auto-baud detected
FIFO mode TXSHF is directly loaded after delay value, TXBUF is not used.
RXERR can be set by BRKDT, FE, OE, PE flags. In FIFO mode, BRKDT interrupt is only through RXERR flag
13.1.1.10.2 SCI Auto-Baud
Most SCI modules do not have an auto-baud detect logic built-in hardware. These SCI modules are
integrated with embedded controllers whose clock rates are dependent on PLL reset values. Often
embedded controller clocks change after final design. In the enhanced feature set this module supports an
autobaud-detect logic in hardware. The following section explains the enabling sequence for autobauddetect feature.
886
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Enhanced SCI Module Overview
www.ti.com
13.1.1.10.3 Autobaud-Detect Sequence
Bits ABD and CDC in SCIFFCT control the autobaud logic. The SCIRST bit should be enabled to make
autobaud logic work.
If ABD is set while CDC is 1, which indicates auto-baud alignment, SCI transmit FIFO interrupt will occur
(TXINT). After the interrupt service CDC bit has to be cleared by software. If CDC remains set even after
interrupt service, there should be no repeat interrupts.
1. Enable autobaud-detect mode for the SCI by setting the CDC bit (bit 13) in SCIFFCT and clearing the
ABD bit (Bit 15) by writing a 1 to ABDCLR bit (bit 14).
2. Initialize the baud register to be 1 or less than a baud rate limit of 500 Kbps.
3. Allow SCI to receive either character "A" or "a" from a host at the desired baud rate. If the first
character is either "A" or "a". the autobaud- detect hardware will detect the incoming baud rate and set
the ABD bit.
4. The auto-detect hardware will update the baud rate register with the equivalent baud value hex. The
logic will also generate an interrupt to the CPU.
5. Respond to the interrupt clear ADB bit by writing a 1 to ABD CLR (bit 14) of SCIFFCT register and
disable further autobaud locking by clearing CDC bit by writing a 0.
6. Read the receive buffer for character "A" or "a" to empty the buffer and buffer status.
7. If ABD is set while CDC is 1, which indicates autobaud alignment, the SCI transmit FIFO interrupt will
occur (TXINT). After the interrupt service CDC bit must be cleared by software.
NOTE: At higher baud rates, the slew rate of the incoming data bits can be affected by transceiver
and connector performance. While normal serial communications may work well, this slew
rate may limit reliable autobaud detection at higher baud rates (typically beyond 100k baud)
and cause the auto-baudlock feature to fail.
To avoid this, the followng is recommended:
•
•
Achieve a baud-lock between the host and 28x SCI boot loader using a lower
baud rate.
The host may then handshake with the loaded 28x application to set the SCI
baud rate register to the desired higher baud rate.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
887
SCI Registers
www.ti.com
13.2 SCI Registers
The functions of the SCI are software configurable. Sets of control bits, organized into dedicated bytes,
are programmed to initialize the desired SCI communications format. This includes operating mode and
protocol, baud value, character length, even/odd parity or no parity, number of stop bits, and interrupt
priorities and enables.
13.2.1 SCI Module Register Summary
The SCI is controlled and accessed through registers listed in Table 13-7 and Table 13-8, which are
described in the sections that follow.
Table 13-7. SCIA Registers
Register Mnemonic
Address
SCICCR
0x0000-7050
1
SCI-A Communications Control Register
SCICTL1
0x0000-7051
1
SCI-A Control Register 1
SCIHBAUD
0x0000-7052
1
SCI-A Baud Register, High Bits
SCILBAUD
0x0000-7053
1
SCI-A Baud Register, Low Bits
SCICTL2
0x0000-7054
1
SCI-A Control Register 2
SCIRXST
0x0000-7055
1
SCI-A Receive Status Register
SCIRXEMU
0x0000-7056
1
SCI-A Receive Emulation Data Buffer Register
SCIRXBUF
0x0000-7057
1
SCI-A Receive Data Buffer Register
SCITXBUF
0x0000-7059
1
SCI-A Transmit Data Buffer Register
0x0000-705A
1
SCI-A FIFO Transmit Register
0x0000-705B
1
SCI-A FIFO Receive Register
0x0000-705C
1
SCI-A FIFO Control Register
0x0000-705F
1
SCI-A Priority Control Register
SCIFFTX
(1)
SCIFFRX (1)
SCIFFCT
(1)
SCIPRI
(1)
Number of Bits
Description
These registers operate in enhanced mode.
Table 13-8. SCIB Registers
888
Name
Address Range
SCICCR
0x0000-7750
1
SCI-B Communications Control Register
SCICTL1
0x0000-7751
1
SCI-B Control Register 1
SCIHBAUD
0x0000-7752
1
SCI-B Baud Register, High Bits
SCILBAUD
0x0000-7753
1
SCI-B Baud Register, Low Bits
SCICTL2
0x0000-7754
1
SCI-B Control Register 2
SCIRXST
0x0000-7755
1
SCI-B Receive Status Register
SCIRXEMU
0x0000-7756
1
SCI-B Receive Emulation Data Buffer Register
SCIRXBUF
0x0000-7757
1
SCI-B Receive Data Buffer Register
SCITXBUF
0x0000-7759
1
SCI-B Transmit Data Buffer Register
SCIFFTX
0x0000-775A
1
SCI-B FIFO Transmit Register
SCIFFRX
0x0000-775B
1
SCI-B FIFO Receive Register
SCIFFCT
0x0000-775C
1
SCI-B FIFO Control Register
SCIPRI
0x0000-775F
1
SCI-B Priority Control Register
Serial Communications Interface (SCI)
Number of Bits
Description
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
13.2.2 SCI Communication Control Register (SCICCR)
SCICCR defines the character format, protocol, and communications mode used by the SCI.
Figure 13-11. SCI Communication Control Register (SCICCR) — Address 7050h
7
6
5
4
3
2
1
0
STOP BITS
EVEN/ODD
PARITY
PARITY
ENABLE
LOOPBACK
ENA
ADDR/IDLE
MODE
SCICHAR2
SCICHAR1
SCICHAR0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-9. SCI Communication Control Register (SCICCR) Field Descriptions
Bit
7
6
5
4
3
2-0
Field
Value Description
STOP BITS
SCI number of stop bits. This bit specifies the number of stop bits transmitted. The receiver
checks for only one stop bit.
0
One stop bit
1
Two stop bits
EVEN/ODD PARITY
SCI parity odd/even selection. If the PARITY ENABLE bit (SCICCR, bit 5) is set, PARITY (bit
6) designates odd or even parity (odd or even number of bits with the value of 1 in both
transmitted and received characters).
0
Odd parity
1
Even parity
PARITY ENABLE
SCI parity enable. This bit enables or disables the parity function. If the SCI is in the addressbit multiprocessor mode (set using bit 3 of this register), the address bit is included in the
parity calculation (if parity is enabled). For characters of less than eight bits, the remaining
unused bits should be masked out of the parity calculation.
0
Parity disabled; no parity bit is generated during transmission or is expected during reception
1
Parity is enabled
LOOP BACK ENA
Loop Back test mode enable. This bit enables the Loop Back test mode where the Tx pin is
internally connected to the Rx pin.
0
Loop Back test mode disabled
1
Loop Back test mode enabled
ADDR/IDLE MODE
SCI CHAR2−0
SCI multiprocessor mode control bit. This bit selects one of the multiprocessor protocols.
Multiprocessor communication is different from the other communication modes because it
uses SLEEP and TXWAKE functions (bits SCICTL1, bit 2 and SCICTL1, bit 3, respectively).
The idle-line mode is usually used for normal communications because the address-bit mode
adds an extra bit to the frame. The idle-line mode does not add this extra bit and is compatible
with RS-232 type communications.
0
Idle-line mode protocol selected
1
Address-bit mode protocol selected
Character-length control bits 2−0. These bits select the SCI character length from one to eight
bits. Characters of less than eight bits are right-justified in SCIRXBUF and SCIRXEMU and
are padded with leading zeros in SCIRXBUF. SCITXBUF doesn’t need to be padded with
leading zeros. The bit values and character lengths for SCI CHAR2-0 bits are as follows:
SCI CHAR2−0 Bit Values (Binary)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
SCI CHAR2
SCI CHAR1
SCI CHAR0
Character
Length (Bits)
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
8
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
889
SCI Registers
www.ti.com
13.2.3 SCI Control Register 1 (SCICTL1)
SCICTL1 controls the receiver/transmitter enable, TXWAKE and SLEEP functions, and the SCI software
reset.
Figure 13-12. SCI Control Register 1 (SCICTL1) — Address 7051h
7
6
5
4
3
2
1
0
Reserved
RX ERR INT
ENA
SW RESET
Reserved
TXWAKE
SLEEP
TXENA
RXENA
R-0
R/W-0
R/W-0
R-0
R/S-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-10. SCI Control Register 1 (SCICTL1) Field Descriptions
Bit Field
Valu Description
e
7
Reserved
Reads return zero; writes have no effect.
6
RX ERR INT
ENA
SCI receive error interrupt enable. Setting this bit enables an interrupt if the RX ERROR bit (SCIRXST, bit 7)
becomes set because of errors occurring.
5
0
Receive error interrupt disabled
1
Receive error interrupt enabled
SW RESET
SCI software reset (active low). Writing a 0 to this bit initializes the SCI state machines and operating flags
(registers SCICTL2 and SCIRXST) to the reset condition.
The SW RESET bit does not affect any of the configuration bits.
All affected logic is held in the specified reset state until a 1 is written to SW RESET (the bit values following
a reset are shown beneath each register diagram in this section). Thus, after a system reset, re-enable the
SCI by writing a 1 to this bit.
Clear this bit after a receiver break detect (BRKDT flag, bit SCIRXST, bit 5).
SW RESET affects the operating flags of the SCI, but it neither affects the configuration bits nor restores the
reset values. Once SW RESET is asserted, the flags are frozen until the bit is deasserted.
The affected flags are as follows:
Value After SW
RESET
SCI Flag
Register Bit
1
TXRDY
SCICTL2, bit 7
1
TX EMPTY
SCICTL2, bit 6
0
RXWAKE
SCIRXST, bit 1
0
PE
SCIRXST, bit 2
0
OE
SCIRXST, bit 3
0
FE
SCIRXST, bit 4
0
BRKDT
SCIRXST, bit 5
0
RXRDY
SCIRXST, bit 6
0
RX ERROR
SCIRXST, bit 7
0
Writing a 0 to this bit initializes the SCI state machines and operating flags (registers SCICTL2 and
SCIRXST) to the reset condition.
1
After a system reset, re-enable the SCI by writing a 1 to this bit.
4
Reserved
Reads return zero; writes have no effect.
3
TXWAKE
SCI transmitter wake-up method select. The TXWAKE bit controls selection of the data-transmit feature,
depending on which transmit mode (idle-line or address-bit) is specified at the ADDR/IDLE MODE bit
(SCICCR, bit 3)
0
Transmit feature is not selected. In idle-line mode: write a 1 to TXWAKE, then write data to register
SCITXBUF to generate an idle period of 11 data bits In address-bit mode: write a 1 to TXWAKE, then write
data to SCITXBUF to set the address bit for that frame to 1
1
Transmit feature selected is dependent on the mode, idle-line or address-bit:
TXWAKE is not cleared by the SW RESET bit (SCICTL1, bit 5); it is cleared by a system reset or the
transfer of TXWAKE to the WUT flag.
890
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
Table 13-10. SCI Control Register 1 (SCICTL1) Field Descriptions (continued)
Bit Field
2
Valu Description
e
SLEEP
SCI sleep. The TXWAKE bit controls selection of the data-transmit feature, depending on which transmit
mode (idle-line or address-bit) is specified at the ADDR/IDLE MODE bit (SCICCR, bit 3). In a multiprocessor
configuration, this bit controls the receiver sleep function. Clearing this bit brings the SCI out of the sleep
mode.
The receiver still operates when the SLEEP bit is set; however, operation does not update the receiver
buffer ready bit (SCIRXST, bit 6, RXRDY) or the error status bits (SCIRXST, bit 5−2: BRKDT, FE, OE, and
PE) unless the address byte is detected. SLEEP is not cleared when the address byte is detected.
1
0
0
Sleep mode disabled
1
Sleep mode enabled
TXENA
SCI transmitter enable. Data is transmitted through the SCITXD pin only when TXENA is set. If reset,
transmission is halted but only after all data previously written to SCITXBUF has been sent.
0
Transmitter disabled0
1
Transmitter enabled
RXENA
SCI receiver enable. Data is received on the SCIRXD pin and is sent to the receiver shift register and then
the receiver buffers. This bit enables or disables the receiver (transfer to the buffers).
Clearing RXENA stops received characters from being transferred to the two receiver buffers and also stops
the generation of receiver interrupts. However, the receiver shift register can continue to assemble
characters. Thus, if RXENA is set during the reception of a character, the complete character will be
transferred into the receiver buffer registers, SCIRXEMU and SCIRXBUF.
0
Prevent received characters from transfer into the SCIRXEMU and SCIRXBUF receiver buffers
1
Send received characters to SCIRXEMU and SCIRXBUF
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
891
SCI Registers
www.ti.com
13.2.4 SCI Baud-Select Registers (SCIHBAUD, SCILBAUD)
The values in SCIHBAUD and SCILBAUD specify the baud rate for the SCI.
Figure 13-13. Baud-Select MSbyte Register (SCIHBAUD) — Address 7052h
15
14
13
12
11
10
9
8
BAUD15 (MSB)
BAUD14
BAUD13
BAUD12
BAUD11
BAUD10
BAUD9
BAUD8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Figure 13-14. Baud-Select LSbyte Register (SCILBAUD) — Address 7053h
7
6
5
4
3
2
1
0
BAUD7
BAUD6
BAUD5
BAUD4
BAUD3
BAUD2
BAUD1
BAUD10 (LSB)
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-11. Baud-Select Register Field Descriptions
Bit
15-0
Field
BAUD15− BAUD0
Value
Description
SCI 16-bit baud selection Registers SCIHBAUD (MSbyte) and SCILBAUD (LSbyte) are
concatenated to form a 16-bit baud value, BRR.
The internally-generated serial clock is determined by the low speed peripheral clock (LSPCLK)
signal and the two baud-select registers. The SCI uses the 16-bit value of these registers to select
one of 64K serial clock rates for the communication modes.
The SCI baud rate is calculated using the following equation:
SCI Asynchronous Baud =
LSPCLK
(BRR + 1) × 8
(8)
Alternatively,
BRR =
LSPCLK
− 1
SCI Asynchronous Baud × 8
(9)
Note that the above formulas are applicable only when 1 ≤ BRR ≤ 65535. If BRR = 0, then
SCI Asynchronous Baud = LSPCLK
16
(10)
Where: BRR = the 16-bit value (in decimal) in the baud-select registers.
892
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
13.2.5 SCI Control Register 2 (SCICTL2)
SCICTL2 enables the receive-ready, break-detect, and transmit-ready interrupts as well as transmitterready and -empty flags.
Figure 13-15. SCI Control Register 2 (SCICTL2) — Address 7054h
7
6
1
0
TXRDY
TX EMPTY
5
Reserved
2
RX/BK INT
ENA
TX INT ENA
R-1
R-1
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-12. SCI Control Register 2 (SCICTL2) Field Descriptions
Bit
Field
7
Value
TXRDY
6
Transmitter buffer register ready flag. When set, this bit indicates that the transmit data buffer
register, SCITXBUF, is ready to receive another character. Writing data to the SCITXBUF
automatically clears this bit. When set, this flag asserts a transmitter interrupt request if the
interrupt-enable bit, TX INT ENA (SCICTL2.0), is also set. TXRDY is set to 1 by enabling the SW
RESET bit (SCICTL1.5) or by a system reset.
0
SCITXBUF is full
1
SCITXBUF is ready to receive the next character
TX EMPTY
5-2
1
0
Description
Transmitter empty flag. This flag’s value indicates the contents of the transmitter’s buffer register
(SCITXBUF) and shift register (TXSHF). An active SW RESET (SCICTL1.5), or a system reset,
sets this bit. This bit does not cause an interrupt request.
0
Transmitter buffer or shift register or both are loaded with data
1
Transmitter buffer and shift registers are both empty
Reserved
Reserved
RX/BK INT ENA
Receiver-buffer/break interrupt enable. This bit controls the interrupt request caused by either the
RXRDY flag or the BRKDT flag (bits SCIRXST.6 and .5) being set. However, RX/BK INT ENA does
not prevent the setting of these flags.
0
Disable RXRDY/BRKDT interrupt
1
Enable RXRDY/BRKDT interrupt
TX INT ENA
SCITXBUF register interrupt enable. This bit controls the interrupt request caused by setting the
TXRDY flag bit (SCICTL2.7). However, it does not prevent the TXRDY flag from being set, which
indicates SCITXBUF is ready to receive another character.
0
Disable TXRDY interrupt
1
Enable TXRDY interrupt
In non-FIFO mode, a dummy (or a valid) data has to be written to SCITXBUF for the first transmit
interrupt to occur. This is the case when you enable the transmit interrupt for the first time and also
when you re-enable (disable and then enable) the transmit interrupt. If TXINTENA is enabled after
writing the data to SCITXBUF, it will not generate an interrupt.
13.2.6 SCI Receiver Status Register (SCIRXST)
SCIRXST contains seven bits that are receiver status flags (two of which can generate interrupt requests).
Each time a complete character is transferred to the receiver buffers (SCIRXEMU and SCIRXBUF), the
status flags are updated. Figure 13-17 shows the relationships between several of the register’s bits.
Figure 13-16. SCI Receiver Status Register (SCIRXST) — Address 7055h
7
6
5
4
3
2
1
0
RX ERROR
RXRDY
BRKDT
FE
OE
PE
RXWAKE
Reserved
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
893
SCI Registers
www.ti.com
Table 13-13. SCI Receiver Status Register (SCIRXST) Field Descriptions
Bit
7
Field
Value
RX ERROR
Description
SCI receiver error flag. The RX ERROR flag indicates that one of the error flags in the receiver
status register is set. RX ERROR is a logical OR of the break detect, framing error, overrun, and
parity error enable flags (bits 5−2: BRKDT, FE, OE, and PE).
A 1 on this bit will cause an interrupt if the RX ERR INT ENA bit (SCICTL1.6) is set. This bit can be
used for fast error-condition checking during the interrupt service routine. This error flag cannot be
cleared directly; it is cleared by an active SW RESET or by a system reset.
6
5
4
3
2
1
0
No error flags set
1
Error flag(s) set
RXRDY
SCI receiver-ready flag. When a new character is ready to be read from the SCIRXBUF register,
the receiver sets this bit, and a receiver interrupt is generated if the RX/BK INT ENA bit
(SCICTL2.1) is a 1. RXRDY is cleared by a reading of the SCIRXBUF register, by an active SW
RESET, or by a system reset.
0
No new character in SCIRXBUF
1
Character ready to be read from SCIRXBUF
BRKDT
SCI break-detect flag. The SCI sets this bit when a break condition occurs. A break condition
occurs when the SCI receiver data line (SCIRXD) remains continuously low for at least ten bits,
beginning after a missing first stop bit. The occurrence of a break causes a receiver interrupt to be
generated if the RX/BK INT ENA bit is a 1, but it does not cause the receiver buffer to be loaded. A
BRKDT interrupt can occur even if the receiver SLEEP bit is set to 1. BRKDT is cleared by an
active SW RESET or by a system reset. It is not cleared by receipt of a character after the break is
detected. In order to receive more characters, the SCI must be reset by toggling the SW RESET bit
or by a system reset.
0
No break condition
1
Break condition occurred
FE
SCI framing-error flag. The SCI sets this bit when an expected stop bit is not found. Only the first
stop bit is checked. The missing stop bit indicates that synchronization with the start bit has been
lost and that the character is incorrectly framed. The FE bit is reset by a clearing of the SW RESET
bit or by a system reset.
0
No framing error detected
1
Framing error detected
OE
SCI overrun-error flag. The SCI sets this bit when a character is transferred into registers
SCIRXEMU and SCIRXBUF before the previous character is fully read by the CPU or DMAC. The
previous character is overwritten and lost. The OE flag bit is reset by an active SW RESET or by a
system reset.
0
No overrun error detected
1
Overrun error detected
PE
SCI parity-error flag. This flag bit is set when a character is received with a mismatch between the
number of 1s and its parity bit. The address bit is included in the calculation. If parity generation
and detection is not enabled, the PE flag is disabled and read as 0. The PE bit is reset by an active
SW RESET or a system reset.!
0
No parity error or parity is disabled
1
Parity error is detected
RXWAKE
Receiver wake-up-detect flag
0
No detection of a receiver wake-up condition
1
A value of 1 in this bit indicates detection of a receiver wake-up condition. In the address-bit
multiprocessor mode (SCICCR.3 = 1), RXWAKE reflects the value of the address bit for the
character contained in SCIRXBUF. In the idle-line multiprocessor mode, RXWAKE is set if the
SCIRXD data line is detected as idle. RXWAKE is a read-only flag, cleared by one of the following:
•
•
•
•
0
894
Reserved
The transfer of the first byte after the address byte to SCIRXBUF (only in non-FIFO mode)
The reading of SCIRXBUF
An active SW RESET
A system reset
Reads return zero; writes have no effect.
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
Figure 13-17. Register SCIRXST Bit Associations — Address 7055h
7
RX ERROR
6
5
4
3
2
1
0
RXRDY
BRKDT
FE
OE
PE
RXWAKE
Reserved
RXRDY or BRKDT causes an interrupt
if RX/BK INT ENA (SCICTL2.1) = 1
RX ERROR = 1 when any of bits 5 through 2 is a 1 value
13.2.7 Receiver Data Buffer Registers (SCIRXEMU, SCIRXBUF)
Received data is transferred from RXSHF to SCIRXEMU and SCIRXBUF. When the transfer is complete,
the RXRDY flag (bit SCIRXST.6) is set, indicating that the received data is ready to be read. Both
registers contain the same data; they have separate addresses but are not physically separate buffers.
The only difference is that reading SCIRXEMU does not clear the RXRDY flag; however, reading
SCIRXBUF clears the flag.
13.2.7.1 Emulation Data Buffer (SCIRXEMU)
Normal SCI data-receive operations read the data received from the SCIRXBUF register. The SCIRXEMU
register is used principally by the emulator (EMU) because it can continuously read the data received for
screen updates without clearing the RXRDY flag. SCIRXEMU is cleared by a system reset.
This is the register that should be used in an emulator watch window to view the contents of the
SCIRXBUF register.
SCIRXEMU is not physically implemented; it is just a different address location to access the SCIRXBUF
register without clearing the RXRDY flag.
Figure 13-18. Emulation Data Buffer Register (SCIRXEMU) — Address 7056h
7
6
5
4
3
2
1
0
ERXDT7
ERXDT6
ERXDT5
ERXDT4
ERXDT3
ERXDT2
ERXDT1
ERXDT0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
13.2.7.2 Receiver Data Buffer (SCIRXBUF)
When the current data received is shifted from RXSHF to the receiver buffer, flag bit RXRDY is set and
the data is ready to be read. If the RX/BK INT ENA bit (SCICTL2.1) is set, this shift also causes an
interrupt. When SCIRXBUF is read, the RXRDY flag is reset. SCIRXBUF is cleared by a system reset.
Figure 13-19. SCI Receive Data Buffer Register (SCIRXBUF) — Address 7057h
15
14
SCIFFFE (1)
SCIFFPE (1)
13
Reserved
8
R−0
R−0
R−0
7
6
5
4
3
2
1
0
RXDT7
RXDT6
RXDT5
RXDT4
RXDT3
RXDT2
RXDT1
RXDT0
R−0
R−0
R−0
R−0
R−0
R−0
R−0
R−0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
(1)
Applicable only if the FIFO is enabled.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
895
SCI Registers
www.ti.com
Table 13-14. SCI Receive Data Buffer Register (SCIRXBUF) Field Descriptions
Bit
Field
15
SCIFFFE
14
Value
SCIFFFE. SCI FIFO Framing error flag bit (applicable only if the FIFO is enabled)
0
No frame error occurred while receiving the character, in bits 7−0. This bit is associated with the
character on the top of the FIFO.
1
A frame error occurred while receiving the character in bits 7−0. This bit is associated with the
character on the top of the FIFO.
SCIFFPE
13-8
Reserved
7-0
RXDT7−0
Description
SCIFFPE. SCI FIFO parity error flag bit (applicable only if the FIFO is enabled)
0
No parity error occurred while receiving the character, in bits 7−0. This bit is associated with the
character on the top of the FIFO.
1
A parity error occurred while receiving the character in bits 7−0. This bit is associated with the
character on the top of the FIFO.
Receive Character bits
13.2.8 SCI Transmit Data Buffer Register (SCITXBUF)
Data bits to be transmitted are written to SCITXBUF. These bits must be rightjustified because the
leftmost bits are ignored for characters less than eight bits long. The transfer of data from this register to
the TXSHF transmitter shift register sets the TXRDY flag (SCICTL2.7), indicating that SCITXBUF is ready
to receive another set of data. If bit TX INT ENA (SCICTL2.0) is set, this data transfer also causes an
interrupt.
Figure 13-20. Transmit Data Buffer Register (SCITXBUF) — Address 7059h
7
6
5
4
3
2
1
0
TXDT7
TXDT6
TXDT5
TXDT4
TXDT3
TXDT2
TXDT1
TXDT0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
13.2.9 SCI FIFO Registers (SCIFFTX, SCIFFRX, SCIFFCT)
Figure 13-21. SCI FIFO Transmit (SCIFFTX) Register — Address 705Ah
15
14
13
12
11
10
9
8
SCIRST
SCIFFENA
TXFIFO Reset
TXFFST4
TXFFST3
TXFFST2
TXFFST1
TXFFST0
R/W-1
R/W-0
R/W-1
R−0
R−0
R−0
R−0
R−0
7
6
5
4
3
2
1
0
TXFFINT Flag
TXFFINT CLR
TXFFIENA
TXFFIL4
TXFFIL3
TXFFIL2
TXFFIL1
TXFFIL0
R−0
W−0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-15. SCI FIFO Transmit (SCIFFTX) Register Field Descriptions
Bit
Field
15
SCIRST
14
13
896
Value
Description
SCI Reset
0
Write 0 to reset the SCI transmit and receive channels. SCI FIFO register configuration bits will be
left as is.
1
SCI FIFO can resume transmit or receive. SCIRST should be 1 even for Autobaud logic to work.
SCIFFENA
SCI FIFO enable
0
SCI FIFO enhancements are disabled
1
SCI FIFO enhancements are enabled
TXFIFO Reset
Transmit FIFO reset
0
Reset the FIFO pointer to zero and hold in reset
1
Re-enable transmit FIFO operation
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
Table 13-15. SCI FIFO Transmit (SCIFFTX) Register Field Descriptions (continued)
Bit
12-8
7
Field
Value
Description
TXFFST4-0
00000
Transmit FIFO is empty.
00001
Transmit FIFO has 1 words
00010
Transmit FIFO has 2 words
00011
Transmit FIFO has 3 words
00100
Transmit FIFO has 4 words
TXFFINT Flag
6
Transmit FIFO interrupt
0
TXFIFO interrupt has not occurred, read-only bit
1
TXFIFO interrupt has occurred, read-only bit
TXFFINT CLR
5
Transmit FIFO clear
0
Write 0 has no effect on TXFIFINT flag bit, Bit reads back a zero
1
Write 1 to clear TXFFINT flag in bit 7
TXFFIENA
4-0
Transmit FIFO interrupt enable
0
TX FIFO interrupt based on TXFFIL match (less than or equal to) is disabled
1
TX FIFO interrupt based on TXFFIL match (less than or equal to) is enabled.
TXFFIL4-0
TXFFIL4−0 Transmit FIFO interrupt level bits.
The transmit FIFO generates an interrupt whenever the FIFO status bits (TXFFST4-0) are less than
or equal to the FIFO level bits (TXFFIL4-0). The maximum value that can be assigned to these bits
to generate an interrupt cannot be more than the depth of the TX FIFO. The default value of these
bits after reset is 00000b. Users should set TXFFIL to best fit their application needs by weighing
between the CPU overhead to service the ISR and the best possible usage of SCI bus bandwidth.
Figure 13-22. SCI FIFO Receive (SCIFFRX) Register — Address 705Bh
15
14
13
12
11
10
9
8
RXFFOVF
RXFFOVR CLR
RXFIFO Reset
RXFIFST4
RXFFST3
RXFFST2
RXFFST1
RXFFST0
R-0
W−0
R/W−1
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
RXFFINT Flag
RXFFINT CLR
RXFFIENA
RXFFIL4
RXFFIL3
RXFFIL2
RXFFIL1
RXFFIL0
R-0
W−0
R/W−0
R/W−1
R/W−1
R/W−1
R/W−1
R/W−1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-16. SCI FIFO Receive (SCIFFRX) Register Field Descriptions
Bit
Field
15
RXFFOVF
14
13
12-8
Value
Receive FIFO overflow. This will function as flag, but cannot generate interrupt by itself. This
condition will occur while receive interrupt is active. Receive interrupts should service this flag
condition.
0
Receive FIFO has not overflowed, read-only bit
1
Receive FIFO has overflowed, read-only bit. More than 16 words have been received in to the
FIFO, and the first received word is lost
RXFFOVF CLR
RXFFOVF clear
0
Write 0 has no effect on RXFFOVF flag bit, Bit reads back a zero
1
Write 1 to clear RXFFOVF flag in bit 15
RXFIFO Reset
RXFFST4−0
Description
Receive FIFO reset
0
Write 0 to reset the FIFO pointer to zero, and hold in reset.
1
Re-enable receive FIFO operation
00000
Receive FIFO is empty
00001
Receive FIFO has 1 word
00010
Receive FIFO has 2 words
00011
Receive FIFO has 3 words
00100
Receive FIFO has 4 words, the maximum allowed.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
897
SCI Registers
www.ti.com
Table 13-16. SCI FIFO Receive (SCIFFRX) Register Field Descriptions (continued)
Bit
Field
7
Value
RXFFINT
6
Receive FIFO interrupt
0
RXFIFO interrupt has not occurred, read-only bit
1
RXFIFO interrupt has occurred, read-only bit
RXFFINT CLR
5
Receive FIFO interrupt clear
0
Write 0 has no effect on RXFIFINT flag bit. Bit reads back a zero.
1
Write 1 to clear RXFFINT flag in bit 7
RXFFIENA
4-0
Description
Receive FIFO interrupt enable
0
RX FIFO interrupt based on RXFFIL match (greater than or equal to) is disabled
1
RX FIFO interrupt based on RXFFIL match (less than or equal to) will be enabled.
RXFFIL4−0
Receive FIFO interrupt level bits
11111
The receive FIFO generates an interrupt whenever the FIFO status bits (RXFFST4-0) are greater
than or equal to the FIFO level bits (RXFFIL4-0). The maximum value that can be assigned to
these bits to generate an interrupt cannot be more than the depth of the RX FIFO. The default
value of these bits after reset is 11111b. Users should set RXFFIL to best fit their application needs
by weighing between the CPU overhead to service the ISR and the best possible usage of received
SCI data.
Figure 13-23. SCI FIFO Control (SCIFFCT) Register — Address 705Ch
15
14
13
ABD
ABD CLR
CDC
12
Reserved
8
R-0
W−0
R/W−0
R-0
7
6
5
4
3
2
1
0
FFTXDLY7
FFTXDLY6
FFTXDLY5
FFTXDLY4
FFTXDLY3
FFTXDLY2
FFTXDLY1
FFTXDLY0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-17. SCI FIFO Control (SCIFFCT) Register Field Descriptions
Bit
Field
15
ABD
14
13
12-8
898
Value
Auto-baud detect (ABD) bit.
0
Auto-baud detection is not complete. ”A”,”a” character has not been received successfully.
1
Auto-baud hardware has detected ”A” or ”a” character on the SCI receive register. Auto-detect is
complete.
ABD CLR
ABD-clear bit
0
Write 0 has no effect on ABD flag bit. Bit reads back a zero.
1
Write 1 to clear ABD flag in bit 15.
CDC
Reserved
Description
CDC calibrate A-detect bit
0
Disables auto-baud alignment
1
Enables auto-baud alignment
Reserved
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SCI Registers
www.ti.com
Table 13-17. SCI FIFO Control (SCIFFCT) Register Field Descriptions (continued)
Bit
Field
7−0
FFTXDLY7−0
Value
Description
FIFO transfer delay. These bits define the delay between every transfer from FIFO transmit buffer
to transmit shift register. The delay is defined in the number of SCI serial baud clock cycles. The 8
bit register could define a minimum delay of 0 baud clock cycles and a maximum of 256 baud clock
cycles
In FIFO mode, the buffer (TXBUF) between the shift register and the FIFO should be filled only
after the shift register has completed shifting of the last bit. This is required to pass on the delay
between transfers to the data stream. In FIFO mode, TXBUF should not be treated as one
additional level of buffer. The delayed transmit feature will help to create an auto-flow scheme
without RTS/CTS controls as in standard UARTS.
When SCI is configured for one stop-bit, delay introduced by FFTXDLY between one frame and the
next frame is equal to number of baud clock cycles that FFTXDLY is set to.
When SCI is configured for two stop-bits, delay introduced by FFTXDLY between one frame and
the next frame is equal to number of baud clock cycles that FFTXDLY is set to minus 1.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Serial Communications Interface (SCI)
Copyright © 2011–2017, Texas Instruments Incorporated
899
SCI Registers
www.ti.com
13.2.10 Priority Control Register (SCIPRI)
Figure 13-24. SCI Priority Control Register (SCIPRI) — Address 705Fh
7
4
3
Reserved
5
SCI SOFT
SCI FREE
2
Reserved
0
R-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13-18. Field Descriptions
Bit
Field
7-5
Reserved
Reads return zero; writes have no effect.
4-3
SOFT and FREE
These bits determine what occurs when an emulation suspend event occurs (for example, when the
debugger hits a breakpoint). The peripheral can continue whatever it is doing (free-run mode), or if
in stop mode, it can either stop immediately or stop when the current operation (the current
receive/transmit sequence) is complete.
2-0
900
Reserved
Value
Description
00
Immediate stop on suspend
10
Complete current receive/transmit sequence before stopping
x1
Free run. Continues SCI operation regardless of suspend
Reads return zero; writes have no effect.
Serial Communications Interface (SCI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Chapter 14
SPRUH18G – January 2011 – Revised April 2017
Inter-Integrated Circuit Module (I2C)
This guide describes the features and operation of the inter-integrated circuit (I2C) module. bi-directional
data transfer through a two-wire design (a serial data line SDA and a serial clock line SCL), and interfaces
to external I2C devices such as serial memory (RAMs and ROMs), networking devices, LCDs, tone
generators, and so on. The I2C bus may also be used for system testing and diagnostic purposes in
product development and manufacture.
The two I2C modules provide the ability to interact (both transmit and receive) with other I2C devices on
the bus. They include the following features:
• Devices on the I2C bus can be designated as either a master or a slave
– Supports both transmitting and receiving data as either a master or a slave
– Supports simultaneous master and slave operation
• Four I2C modes: Master transmit – Master receive – Slave transmit – Slave receive
• Two transmission speeds: Standard (100 Kbps) and Fast (400 Kbps)
• Master and slave interrupt generation
– Master generates interrupts when a transmit or receive operation completes (or aborts due to an
error)
– Slave generates interrupts when data has been transferred or requested by a master or when a
START or STOP condition is detected
• Master with arbitration and clock synchronization, multimaster support, and 7-bit addressing mode
NOTE: A unit of data transmitted or received by the I2C module can have fewer than 8 bits;
however, for convenience, a unit of data is called a data byte throughout this document. (The
number of bits in a data byte is selectable via the BC bits of the mode register, I2CMDR.
This reference guide is applicable for the I2C found on the TMS320x28x family of processors.
Topic
14.1
14.2
14.3
14.4
14.5
...........................................................................................................................
Introduction to the I2C Module ...........................................................................
I2C Module Operational Details ..........................................................................
Interrupt Requests Generated by the I2C Module .................................................
Resetting/Disabling the I2C Module ....................................................................
I2C Module Registers ........................................................................................
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
Page
902
905
911
912
913
901
Introduction to the I2C Module
www.ti.com
14.1 Introduction to the I2C Module
The I2C module supports any slave or master I2C-compatible device. Figure 14-1 shows an example of
multiple I2C modules connected for a two-way transfer from one device to other devices.
Figure 14-1. Multiple I2C Modules Connected
VDD
Pullup
resistors
28x
I2C
I2C
controller
Serial data (SDA)
Serial clock (SCL)
I2C
EPROM
902
Inter-Integrated Circuit Module (I2C)
28x
I2C
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction to the I2C Module
www.ti.com
14.1.1 Features
The I2C module has the following features:
• Compliance with the Philips Semiconductors I2C-bus specification (version 2.1):
– Support for 8-bit format transfers
– 7-bit and 10-bit addressing modes
– General call
– START byte mode
– Support for multiple master-transmitters and slave-receivers
– Support for multiple slave-transmitters and master-receivers
– Combined master transmit/receive and receive/transmit mode
– Data transfer rate of from 10 kbps up to 400 kbps (Philips Fast-mode rate)
• One 4-level receive FIFO and one 4-level transmit FIFO
• One interrupt that can always be used by the CPU. This interrupt can be generated as a result of one
of the following conditions: transmit-data ready, receive-data ready, register-access ready, noacknowledgment received, arbitration lost, stop condition detected, addressed as slave.
• An additional interrupt that can be used by the CPU when in FIFO mode
• Module enable/disable capability
• Free data format mode
14.1.2 Features Not Supported
The I2C module does not support:
• High-speed mode (Hs-mode)
• CBUS-compatibility mode
14.1.3 Functional Overview
Each device connected to an I2C-bus is recognized by a unique address. Each device can operate as
either a transmitter or a receiver, depending on the function of the device. A device connected to the I2Cbus can also be considered as the master or the slave when performing data transfers. A master device is
the device that initiates a data transfer on the bus and generates the clock signals to permit that transfer.
During this transfer, any device addressed by this master is considered a slave. The I2C module supports
the multi-master mode, in which one or more devices capable of controlling an I2C-bus can be connected
to the same I2C-bus.
For data communication, the I2C module has a serial data pin (SDA) and a serial clock pin (SCL), as
shown in Figure 14-2. These two pins carry information between the 28x device and other devices
connected to the I2C-bus. The SDA and SCL pins both are bidirectional. They each must be connected to
a positive supply voltage using a pull-up resistor. When the bus is free, both pins are high. The driver of
these two pins has an open-drain configuration to perform the required wired-AND function.
There are two major transfer techniques: .
• Standard Mode: Send exactly n data values, where n is a value you program in an I2C module
register. See Table 14-5 for register information.
• Repeat Mode: Keep sending data values until you use software to initiate a STOP condition or a new
START condition. See Table 14-5 for RM bit information.
The I2C module consists of the following primary blocks:
• A serial interface: one data pin (SDA) and one clock pin (SCL)
• Data registers and FIFOs to temporarily hold receive data and transmit data traveling between the
SDA pin and the CPU
• Control and status registers
• A peripheral bus interface to enable the CPU to access the I2C module registers and FIFOs.
• A clock synchronizer to synchronize the I2C input clock (from the device clock generator) and the clock
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
903
Introduction to the I2C Module
•
•
•
•
•
www.ti.com
on the SCL pin, and to synchronize data transfers with masters of different clock speeds
A prescaler to divide down the input clock that is driven to the I2C module
A noise filter on each of the two pins, SDA and SCL
An arbitrator to handle arbitration between the I2C module (when it is a master) and another master
Interrupt generation logic, so that an interrupt can be sent to the CPU
FIFO interrupt generation logic, so that FIFO access can be synchronized to data reception and data
transmission in the I2C module
Figure 14-2 shows the four registers used for transmission and reception in non-FIFO mode. The CPU
writes data for transmission to I2CDXR and reads received data from I2CDRR. When the I2C module is
configured as a transmitter, data written to I2CDXR is copied to I2CXSR and shifted out on the SDA pin
one bit a time. When the I2C module is configured as a receiver, received data is shifted into I2CRSR and
then copied to I2CDRR.
Figure 14-2. I2C Module Conceptual Block Diagram
I2C module
I2CXSR
I2CDXR
TX FIFO
FIFO Interrupt
to CPU/PIE
SDA
RX FIFO
Peripheral bus
I2CRSR
SCL
Clock
synchronizer
I2CDRR
Control/status
registers
CPU
Prescaler
Noise filters
Interrupt to
CPU/PIE
I2C INT
Arbitrator
14.1.4 Clock Generation
As shown in Figure 14-3, the device clock generator receives a signal from an external clock source and
produces an I2C input clock with a programmed frequency. The I2C input clock is equivalent to the CPU
clock and is then divided twice more inside the I2C module to produce the module clock and the master
clock.
904
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Operational Details
www.ti.com
Figure 14-3. Clocking Diagram for the I2C Module
28x device
I2C module
Device input clock
2
PLLCR
divider
I C input clock
(SYSCLKOUT)
IPSC
ICCL,
ICCH
÷
÷
Master clock
on SCL pin
To I2C-bus
Module clock
for I2C module operation
The module clock determines the frequency at which the I2C module operates. A programmable prescaler
in the I2C module divides down the I2C input clock to produce the module clock. To specify the dividedown value, initialize the IPSC field of the prescaler register, I2CPSC. The resulting frequency is:
module clock frequency +
I2C input clock frequency
( IPSC ) 1 )
NOTE: To meet all of the I2C protocol timing specifications, the module clock must be configured
between 7 - 12 MHz.
The prescaler must be initialized only while the I2C module is in the reset state (IRS = 0 in I2CMDR). The
prescaled frequency takes effect only when IRS is changed to 1. Changing the IPSC value while IRS = 1
has no effect.
The master clock appears on the SCL pin when the I2C module is configured to be a master on the I2Cbus. This clock controls the timing of communication between the I2C module and a slave. As shown in
Figure 14-3, a second clock divider in the I2C module divides down the module clock to produce the
master clock. The clock divider uses the ICCL value of I2CCLKL to divide down the low portion of the
module clock signal and uses the ICCH value of I2CCLKH to divide down the high portion of the module
clock signal. See section Section 14.5.7.1 for the master clock frequency equation.
14.2 I2C Module Operational Details
This section provides an overview of the I2C-bus protocol and how it is implemented.
14.2.1 Input and Output Voltage Levels
One clock pulse is generated by the master device for each data bit transferred. Due to a variety of
different technology devices that can be connected to the I2C-bus, the levels of logic 0 (low) and logic 1
(high) are not fixed and depend on the associated level of VDD. For details, see the data manual for your
particular device.
14.2.2 Data Validity
The data on SDA must be stable during the high period of the clock (see Figure 14-4). The high or low
state of the data line, SDA, should change only when the clock signal on SCL is low.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
905
I2C Module Operational Details
www.ti.com
Figure 14-4. Bit Transfer on the I2C-Bus
Data line
stable data
SDA
SCL
Change of data
allowed
14.2.3 Operating Modes
The I2C module has four basic operating modes to support data transfers as a master and as a slave.
See Table 14-1 for the names and descriptions of the modes.
If the I2C module is a master, it begins as a master-transmitter and typically transmits an address for a
particular slave. When giving data to the slave, the I2C module must remain a master-transmitter. To
receive data from a slave, the I2C module must be changed to the master-receiver mode.
If the I2C module is a slave, it begins as a slave-receiver and typically sends acknowledgment when it
recognizes its slave address from a master. If the master will be sending data to the I2C module, the
module must remain a slave-receiver. If the master has requested data from the I2C module, the module
must be changed to the slave-transmitter mode.
Table 14-1. Operating Modes of the I2C Module
Operating Mode
Description
Slave-receiver modes
The I2C module is a slave and receives data from a master.
All slaves begin in this mode. In this mode, serial data bits received on SDA are shifted in with
the clock pulses that are generated by the master. As a slave, the I2C module does not
generate the clock signal, but it can hold SCL low while the intervention of the device is
required (RSFULL = 1 in I2CSTR) after a byte has been received. See section Section 14.2.7
for more details.
Slave-transmitter mode
The I2C module is a slave and transmits data to a master.
This mode can be entered only from the slave-receiver mode; the I2C module must first receive
a command from the master. When you are using any of the 7-bit/10-bit addressing formats,
the I2C module enters its slave-transmitter mode if the slave address byte is the same as its
own address (in I2COAR) and the master has transmitted R/W = 1. As a slave-transmitter, the
I2C module then shifts the serial data out on SDA with the clock pulses that are generated by
the master. While a slave, the I2C module does not generate the clock signal, but it can hold
SCL low while the intervention of the device is required (XSMT = 0 in I2CSTR) after a byte has
been transmitted. See section Section 14.2.7 for more details.
Master-receiver mode
The I2C module is a master and receives data from a slave.
This mode can be entered only from the master-transmitter mode; the I2C module must first
transmit a command to the slave. When you are using any of the 7-bit/10-bit addressing
formats, the I2C module enters its master-receiver mode after transmitting the slave address
byte and R/W = 1. Serial data bits on SDA are shifted into the I2C module with the clock pulses
generated by the I2C module on SCL. The clock pulses are inhibited and SCL is held low when
the intervention of the device is required (RSFULL = 1 in I2CSTR) after a byte has been
received.
Master-transmitter modes
The IC module is a master and transmits control information and data to a slave.
All masters begin in this mode. In this mode, data assembled in any of the 7-bit/10-bit
addressing formats is shifted out on SDA. The bit shifting is synchronized with the clock pulses
generated by the I2C module on SCL. The clock pulses are inhibited and SCL is held low when
the intervention of the device is required (XSMT = 0 in I2CSTR) after a byte has been
transmitted.
906
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Operational Details
www.ti.com
To summarize, SCL will be held low in the following conditions:
• When RSFULL = 1, in Slave-receiver mode
• When XSMT = 0, in Slave-transmitter mode
I2C slave nodes have to accept and provide data when the I2C master node requests it.
• To release SCL in slave-receiver mode, read data from I2CDRR.
• To release SCL in slave-transmitter mode, write data to I2CDXR.
• To force a release without handling the data, reset the module using the I2CMDR.IRS bit.
14.2.4 I2C Module START and STOP Conditions
START and STOP conditions can be generated by the I2C module when the module is configured to be a
master on the I2C-bus. As shown in Figure 14-5:
• The START condition is defined as a high-to-low transition on the SDA line while SCL is high. A
master drives this condition to indicate the start of a data transfer.
• The STOP condition is defined as a low-to-high transition on the SDA line while SCL is high. A master
drives this condition to indicate the end of a data transfer.
Figure 14-5. I2C Module START and STOP Conditions
SDA
SCL
START
condition (S)
STOP
condition (P)
After a START condition and before a subsequent STOP condition, the I2C-bus is considered busy, and
the bus busy (BB) bit of I2CSTR is 1. Between a STOP condition and the next START condition, the bus
is considered free, and BB is 0.
For the I2C module to start a data transfer with a START condition, the master mode bit (MST) and the
START condition bit (STT) in I2CMDR must both be 1. For the I2C module to end a data transfer with a
STOP condition, the STOP condition bit (STP) must be set to 1. When the BB bit is set to 1 and the STT
bit is set to 1, a repeated START condition is generated. For a description of I2CMDR and its bits
(including MST, STT, and STP), see Section 14.5.1.
14.2.5 Serial Data Formats
Figure 14-6 shows an example of a data transfer on the I2C-bus. The I2C module supports 1 to 8-bit data
values. In Figure 14-6, 8-bit data is transferred. Each bit put on the SDA line equates to 1 pulse on the
SCL line, and the values are always transferred with the most significant bit (MSB) first. The number of
data values that can be transmitted or received is unrestricted. The serial data format used in Figure 14-6
is the 7-bit addressing format. The I2C module supports the formats shown in Figure 14-7 through
Figure 14-9 and described in the paragraphs that follow the figures.
NOTE: In Figure 14-6 through Figure 14-9, n = the number of data bits (from 1 to 8) specified by the
bit count (BC) field of I2CMDR.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
907
I2C Module Operational Details
www.ti.com
Figure 14-6. I2C Module Data Transfer (7-Bit Addressing with 8-bit Data Configuration Shown)
Acknowledgement
bit from slave
(No-)Acknowledgement
bit from receiver
SDA
MSB
SCL
1
2
7
START
Slave address
condition (S)
8
9
R/W ACK
1
2
8
9
ACK
Data
STOP
condition (P)
Figure 14-7. I2C Module 7-Bit Addressing Format (FDF = 0, XA = 0 in I2CMDR)
1
S
7
xxxxxxx
1
1
R/W
ACK
1
n
Data
1
n
ACK
Data
1
ACK P
7 bits of slave address
Figure 14-8. I2C Module 10-Bit Addressing Format (FDF = 0, XA = 1 in I2CMDR)
1
7
1
1
8
1
S
11110xx
R/W
ACK
xxxxxxxx
ACK
x x = 2 MSBs
n
Data
1
1
ACK P
8 LSBs of slave address
Figure 14-9. I2C Module Free Data Format (FDF = 1 in I2CMDR)
1
n
1
n
1
S
Data
ACK
Data
ACK
n
Data
1
1
ACK P
14.2.5.1 7-Bit Addressing Format
In the 7-bit addressing format (see Figure 14-7), the first byte after a START condition (S) consists of a 7bit slave address followed by a R/W bit. R/W determines the direction of the data:
• R/W = 0: The master writes (transmits) data to the addressed slave.
• R/W = 1: The master reads (receives) data from the slave.
An extra clock cycle dedicated for acknowledgment (ACK) is inserted after each byte. If the ACK bit is
inserted by the slave after the first byte from the master, it is followed by n bits of data from the transmitter
(master or slave, depending on the R/W bit). n is a number from 1 to 8 determined by the bit count (BC)
field of I2CMDR. After the data bits have been transferred, the receiver inserts an ACK bit.
To select the 7-bit addressing format, write 0 to the expanded address enable (XA) bit of I2CMDR, and
make sure the free data format mode is off (FDF = 0 in I2CMDR).
14.2.5.2 10-Bit Addressing Format
The 10-bit addressing format (see Figure 14-8) is similar to the 7-bit addressing format, but the master
sends the slave address in two separate byte transfers. The first byte consists of 11110b, the two MSBs of
the 10-bit slave address, and R/W = 0 (write). The second byte is the remaining 8 bits of the 10-bit slave
address. The slave must send acknowledgment after each of the two byte transfers. Once the master has
written the second byte to the slave, the master can either write data or use a repeated START condition
to change the data direction. For more details about using 10-bit addressing, see the Philips
Semiconductors I2C-bus specification.
To select the 10-bit addressing format, write 1 to the XA bit of I2CMDR and make sure the free data
format mode is off (FDF = 0 in I2CMDR).
908
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Operational Details
www.ti.com
14.2.5.3 Free Data Format
In this format (see Figure 14-9), the first byte after a START condition (S) is a data byte. An ACK bit is
inserted after each data byte, which can be from 1 to 8 bits, depending on the BC field of I2CMDR. No
address or data-direction bit is sent. Therefore, the transmitter and the receiver must both support the free
data format, and the direction of the data must be constant throughout the transfer.
To select the free data format, write 1 to the free data format (FDF) bit of I2CMDR. The free data format is
not supported in the digital loopback mode (DLB = 1 in I2CMDR).
14.2.5.4 Using a Repeated START Condition
At the end of each data byte, the master can drive another START condition. Using this capability, a
master can communicate with multiple slave addresses without having to give up control of the bus by
driving a STOP condition. The length of a data byte can be from 1 to 8 bits and is selected with the BC
field of I2CMDR. The repeated START condition can be used with the 7-bit addressing, 10-bit addressing,
and free data formats. Figure 14-10 shows a repeated START condition in the 7-bit addressing format.
Figure 14-10. Repeated START Condition (in This Case, 7-Bit Addressing Format)
1
S
1
7
1
Slave address R/W ACK
1
n
1
1
7
Data
ACK
S
Slave address
Any
number
1
1
R/W ACK
1
n
1
1
Data
ACK
P
Any number
NOTE: In Figure 14-10, n = the number of data bits (from 1 to 8) specified by the bit count (BC) field
of I2CMDR.
14.2.6 NACK Bit Generation
When the I2C module is a receiver (master or slave), it can acknowledge or ignore bits sent by the
transmitter. To ignore any new bits, the I2C module must send a no-acknowledge (NACK) bit during the
acknowledge cycle on the bus. Table 14-2 summarizes the various ways you can tell the I2C module to
send a NACK bit.
Table 14-2. Ways to Generate a NACK Bit
I2C Module Condition
NACK Bit Generation Options
Slave-receiver modes
• Allow an overrun condition (RSFULL = 1 in I2CSTR)
• Reset the module (IRS = 0 in I2CMDR)
• Set the NACKMOD bit of I2CMDR before the rising edge of the last data bit you
intend to receive
Master-receiver mode AND
Repeat mode (RM = 1 in I2CMDR)
• Generate a STOP condition (STP = 1 in I2CMDR)
• Reset the module (IRS = 0 in I2CMDR)
• Set the NACKMOD bit of I2CMDR before the rising edge of the last data bit you
intend to receive
Master-receiver mode AND
Nonrepeat mode
(RM = 0 in I2CMDR)
• If STP = 1 in I2CMDR, allow the internal data counter to count down to 0 and thus
force a STOP condition
• If STP = 0, make STP = 1 to generate a STOP condition
• Reset the module (IRS = 0 in I2CMDR). = 1 to generate a STOP condition
• Set the NACKMOD bit of I2CMDR before the rising edge of the last data bit you
intend to receive
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
909
I2C Module Operational Details
www.ti.com
14.2.7 Clock Synchronization
Under normal conditions, only one master device generates the clock signal, SCL. During the arbitration
procedure, however, there are two or more masters and the clock must be synchronized so that the data
output can be compared. Figure 14-11 illustrates the clock synchronization. The wired-AND property of
SCL means that a device that first generates a low period on SCL overrules the other devices. At this
high-to-low transition, the clock generators of the other devices are forced to start their own low period.
The SCL is held low by the device with the longest low period. The other devices that finish their low
periods must wait for SCL to be released, before starting their high periods. A synchronized signal on SCL
is obtained, where the slowest device determines the length of the low period and the fastest device
determines the length of the high period.
If a device pulls down the clock line for a longer time, the result is that all clock generators must enter the
wait state. In this way, a slave slows down a fast master and the slow device creates enough time to store
a received byte or to prepare a byte to be transmitted.
Figure 14-11. Synchronization of Two I2C Clock Generators During Arbitration
Wait
state
Start HIGH
period
SCL from
device #1
SCL from
device #2
Bus line
SCL
14.2.8 Arbitration
If two or more master-transmitters attempt to start a transmission on the same bus at approximately the
same time, an arbitration procedure is invoked. The arbitration procedure uses the data presented on the
serial data bus (SDA) by the competing transmitters. Figure 14-12 illustrates the arbitration procedure
between two devices. The first master-transmitter, which release the SDA line high, is overruled by
another master-transmitter that drives SDA low. The arbitration procedure gives priority to the device that
transmits the serial data stream with the lowest binary value. Should two or more devices send identical
first bytes, arbitration continues on the subsequent bytes.
If the I2C module is the losing master, it switches to the slave-receiver mode, sets the arbitration lost (AL)
flag, and generates the arbitration-lost interrupt request.
If during a serial transfer the arbitration procedure is still in progress when a repeated START condition or
a STOP condition is transmitted to SDA, the master-transmitters involved must send the repeated START
condition or the STOP condition at the same position in the format frame. Arbitration is not allowed
between:
• A repeated START condition and a data bit
• A STOP condition and a data bit
• A repeated START condition and a STOP condition
910
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Interrupt Requests Generated by the I2C Module
www.ti.com
Figure 14-12. Arbitration Procedure Between Two Master-Transmitters
Bus line
SCL
Device #1 loses arbitration
and switches off
Data from
device #1
1
0
Data from
device #2
1
0
0
1
0
1
Bus line
SDA
1
0
0
1
0
1
Device #2 drives SDA
14.3 Interrupt Requests Generated by the I2C Module
The I2C module can generate seven types of basic interrupt requests, which are described in
Section 14.3.1. Two of these can tell the CPU when to write transmit data and when to read receive data.
If you want the FIFOs to handle transmit and receive data, you can also use the FIFO interrupts described
in Section 14.3.2. The basic I2C interrupts are combined to form PIE Group 8, Interrupt 1
(I2CINT1A_ISR), and the FIFO interrupts are combined to form PIE Group 8, Interrupt 2 (I2CINT2A_ISR).
14.3.1 Basic I2C Interrupt Requests
The I2C module generates the interrupt requests described in Table 14-3. As shown in Figure 14-13, all
requests are multiplexed through an arbiter to a single I2C interrupt request to the CPU. Each interrupt
request has a flag bit in the status register (I2CSTR) and an enable bit in the interrupt enable register
(I2CIER). When one of the specified events occurs, its flag bit is set. If the corresponding enable bit is 0,
the interrupt request is blocked. If the enable bit is 1, the request is forwarded to the CPU as an I2C
interrupt.
The I2C interrupt is one of the maskable interrupts of the CPU. As with any maskable interrupt request, if
it is properly enabled in the CPU, the CPU executes the corresponding interrupt service routine
(I2CINT1A_ISR). The I2CINT1A_ISR for the I2C interrupt can determine the interrupt source by reading
the interrupt source register, I2CISRC. Then the I2CINT1A_ISR can branch to the appropriate subroutine.
After the CPU reads I2CISRC, the following events occur:
1. The flag for the source interrupt is cleared in I2CSTR. Exception: The ARDY, RRDY, and XRDY bits in
I2CSTR are not cleared when I2CISRC is read. To clear one of these bits, write a 1 to it.
2. The arbiter determines which of the remaining interrupt requests has the highest priority, writes the
code for that interrupt to I2CISRC, and forwards the interrupt request to the CPU.
Table 14-3. Descriptions of the Basic I2C Interrupt Requests
I2C Interrupt Request
Interrupt Source
XRDYINT
Transmit ready condition: The data transmit register (I2CDXR) is ready to accept new data because the
previous data has been copied from I2CDXR to the transmit shift register (I2CXSR).
As an alternative to using XRDYINT, the CPU can poll the XRDY bit of the status register, I2CSTR.
XRDYINT should not be used when in FIFO mode. Use the FIFO interrupts instead.
RRDYINT
Receive ready condition: The data receive register (I2CDRR) is ready to be read because data has been
copied from the receive shift register (I2CRSR) to I2CDRR.
As an alternative to using RRDYINT, the CPU can poll the RRDY bit of I2CSTR. RRDYINT should not
be used when in FIFO mode. Use the FIFO interrupts instead.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C) 911
Interrupt Requests Generated by the I2C Module
www.ti.com
Table 14-3. Descriptions of the Basic I2C Interrupt Requests (continued)
I2C Interrupt Request
Interrupt Source
ARDYINT
Register-access ready condition: The I2C module registers are ready to be accessed because the
previously programmed address, data, and command values have been used.
The specific events that generate ARDYINT are the same events that set the ARDY bit of I2CSTR.
As an alternative to using ARDYINT, the CPU can poll the ARDY bit.
NACKINT
No-acknowledgment condition: The I2C module is configured as a master-transmitter and did not
received acknowledgment from the slave-receiver.
As an alternative to using NACKINT, the CPU can poll the NACK bit of I2CSTR.
ALINT
Arbitration-lost condition: The I2C module has lost an arbitration contest with another master-transmitter.
As an alternative to using ALINT, the CPU can poll the AL bit of I2CSTR.
SCDINT
Stop condition detected: A STOP condition was detected on the I2C bus.
As an alternative to using SCDINT, the CPU can poll the SCD bit of the status register, I2CSTR.
AASINT
Addressed as slave condition: The I2C has been addressed as a slave device by another master on the
I2C bus.
As an alternative to using AASINT, the CPU can poll the AAS bit of the status register, I2CSTR.
Figure 14-13. Enable Paths of the I2C Interrupt Requests
Flag bits
I2C interrupt requests
Enable bits
I2CSTR(XRDY)
XRDYINT
I2CIER(XRDY)
I2CSTR(RRDY)
RRDYINT
I2CIER(RRDY)
I2CSTR(ARDY)
ARDYINT
I2CIER(ARDY)
I2CSTR(NACK)
Arbiter
NACKINT
I2C interrupt
request to CPU
I2CIER(NACK)
I2CSTR(AL)
ALINT
I2CIER(AL)
I2CSTR(SCD)
SCDINT
I2CIER(SCD)
I2CSTR(AAS)
AASINT
I2CIER(AAS)
14.3.2 I2C FIFO Interrupts
In addition to the seven basic I2C interrupts, the transmit and receive FIFOs each contain the ability to
generate an interrupt (I2CINT2A). The transmit FIFO can be configured to generate an interrupt after
transmitting a defined number of bytes, up to 4. The receive FIFO can be configured to generate an
interrupt after receiving a defined number of bytes, up to 4. These two interrupt sources are ORed
together into a single maskable CPU interrupt. The interrupt service routine can then read the FIFO
interrupt status flags to determine from which source the interrupt came. See the I2C transmit FIFO
register (I2CFFTX) and the I2C receive FIFO register (I2CFFRX) descriptions.
14.4 Resetting/Disabling the I2C Module
You can reset/disable the I2C module in two ways:
• Write 0 to the I2C reset bit (IRS) in the I2C mode register (I2CMDR). All status bits (in I2CSTR) are
912
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
•
forced to their default values, and the I2C module remains disabled until IRS is changed to 1. The SDA
and SCL pins are in the high-impedance state.
Initiate a device reset by driving the XRS pin low. The entire device is reset and is held in the reset
state until you drive the pin high. When XRS is released, all I2C module registers are reset to their
default values. The IRS bit is forced to 0, which resets the I2C module. The I2C module stays in the
reset state until you write 1 to IRS.
IRS must be 0 while you configure/reconfigure the I2C module. Forcing IRS to 0 can be used to save
power and to clear error conditions.
14.5 I2C Module Registers
Table 14-4 lists the I2C module registers. All but the receive and transmit shift registers (I2CRSR and
I2CXSR) are accessible to the CPU.
Table 14-4. I2C Module Registers
Name
Address
I2COAR
0x7900
Description
I2C own address register
I2CIER
0x7901
I2C interrupt enable register
I2CSTR
0x7902
I2C status register
I2CCLKL
0x7903
I2C clock low-time divider register
I2CCLKH
0x7904
I2C clock high-time divider register
I2CCNT
0x7905
I2C data count register
I2CDRR
0x7906
I2C data receive register
I2CSAR
0x7907
I2C slave address register
I2CDXR
0x7908
I2C data transmit register
I2CMDR
0x7909
I2C mode register
I2CISRC
0x790A
I2C interrupt source register
I2CEMDR
0x790B
I2C extended mode register
I2CPSC
0x790C
I2C prescaler register
I2CFFTX
0x7920
I2C FIFO transmit register
I2CFFRX
0x7921
I2C FIFO receive register
I2CRSR
-
I2C receive shift register (not accessible to the CPU)
I2CXSR
-
I2C transmit shift register (not accessible to the CPU)
NOTE: To use the I2C module the system clock to the module must be enabled by setting the
appropriate bit in the PCLKR0 register. See Section 1.4.1.1.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
913
I2C Module Registers
www.ti.com
14.5.1 I2C Mode Register (I2CMDR)
The I2C mode register (I2CMDR) is a 16-bit register that contains the control bits of the I2C module. The
bit fields of I2CMDR are shown in Figure 14-14 and described in Table 14-5.
Figure 14-14. I2C Mode Register (I2CMDR)
15
14
13
12
11
10
9
8
NACKMOD
FREE
STT
Reserved
STP
MST
TRX
XA
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
2
7
6
5
4
3
RM
DLB
IRS
STB
FDF
BC
0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-5. I2C Mode Register (I2CMDR) Field Descriptions
Bit
Field
15
NACKMOD
Value
Description
NACK mode bit. This bit is only applicable when the I2C module is acting as a receiver.
0
In the slave-receiver mode: The I2C module sends an acknowledge (ACK) bit to the transmitter
during each acknowledge cycle on the bus. The I2C module only sends a no-acknowledge (NACK)
bit if you set the NACKMOD bit.
In the master-receiver mode: The I2C module sends an ACK bit during each acknowledge cycle
until the internal data counter counts down to 0. At that point, the I2C module sends a NACK bit to
the transmitter. To have a NACK bit sent earlier, you must set the NACKMOD bit.
1
In either slave-receiver or master-receiver mode: The I2C module sends a NACK bit to the
transmitter during the next acknowledge cycle on the bus. Once the NACK bit has been sent,
NACKMOD is cleared.
Important: To send a NACK bit in the next acknowledge cycle, you must set NACKMOD before the
rising edge of the last data bit.
14
FREE
This bit controls the action taken by the I2C module when a debugger breakpoint is encountered.
0
When I2C module is master:
If SCL is low when the breakpoint occurs, the I2C module stops immediately and keeps driving SCL
low, whether the I2C module is the transmitter or the receiver. If SCL is high, the I2C module waits
until SCL becomes low and then stops.
When I2C module is slave:
A breakpoint forces the I2C module to stop when the current transmission/reception is complete.
1
13
STT
The I2C module runs free; that is, it continues to operate when a breakpoint occurs.
START condition bit (only applicable when the I2C module is a master). The RM, STT, and STP
bits determine when the I2C module starts and stops data transmissions (see Table 14-6). Note
that the STT and STP bits can be used to terminate the repeat mode, and that this bit is not
writable when IRS = 0.
0
In the master mode, STT is automatically cleared after the START condition has been generated.
1
In the master mode, setting STT to 1 causes the I2C module to generate a START condition on the
I2C-bus.
12
Reserved
This reserved bit location is always read as a 0. A value written to this bit has no effect.
11
STP
STOP condition bit (only applicable when the I2C module is a master). In the master mode, the RM,
STT, and STP bits determine when the I2C module starts and stops data transmissions (see
Table 14-6). Note that the STT and STP bits can be used to terminate the repeat mode, and that
this bit is not writable when IRS=0. When in non-repeat mode, at least one byte must be transferred
before a stop condition can be generated. The I2C module delays clearing of this bit until ater the
I2CSTR[SCD] bit is set. If the STOP bit is not checked prior to initiating a new message, the I2C
module could become confused. To avoid disrupting the I2C state machine, the user must wait until
this bit is clear before initiating a new message.
914
0
STP is automatically cleared after the STOP condition has been generated.
1
STP has been set by the device to generate a STOP condition when the internal data counter of
the I2C module counts down to 0.
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Table 14-5. I2C Mode Register (I2CMDR) Field Descriptions (continued)
Bit
Field
10
MST
9
8
7
6
Value
Description
Master mode bit. MST determines whether the I2C module is in the slave mode or the master
mode. MST is automatically changed from 1 to 0 when the I2C master generates a STOP condition.
0
Slave mode. The I2C module is a slave and receives the serial clock from the master.
1
Master mode. The I2C module is a master and generates the serial clock on the SCL pin.
TRX
Transmitter mode bit. When relevant, TRX selects whether the I2C module is in the transmitter
mode or the receiver mode. Table 14-7 summarizes when TRX is used and when it is a don’t care.
0
Receiver mode. The I2C module is a receiver and receives data on the SDA pin.
1
Transmitter mode. The I2C module is a transmitter and transmits data on the SDA pin.
XA
Expanded address enable bit.
0
7-bit addressing mode (normal address mode). The I2C module transmits 7-bit slave addresses
(from bits 6-0 of I2CSAR), and its own slave address has 7 bits (bits 6-0 of I2COAR).
1
10-bit addressing mode (expanded address mode). The I2C module transmits 10-bit slave
addresses (from bits 9-0 of I2CSAR), and its own slave address has 10 bits (bits 9-0 of I2COAR).
RM
Repeat mode bit (only applicable when the I2C module is a master-transmitter). The RM, STT, and
STP bits determine when the I2C module starts and stops data transmissions (see Table 14-6).
0
Nonrepeat mode. The value in the data count register (I2CCNT) determines how many bytes are
received/transmitted by the I2C module.
1
Repeat mode. A data byte is transmitted each time the I2CDXR register is written to (or until the
transmit FIFO is empty when in FIFO mode) until the STP bit is manually set. The value of I2CCNT
is ignored. The ARDY bit/interrupt can be used to determine when the I2CDXR (or FIFO) is ready
for more data, or when the data has all been sent and the CPU is allowed to write to the STP bit.
DLB
Digital loopback mode bit. The effects of this bit are shown in Figure 14-15.
0
Digital loopback mode is disabled.
1
Digital loopback mode is enabled. For proper operation in this mode, the MST bit must be 1.
In the digital loopback mode, data transmitted out of I2CDXR is received in I2CDRR after n device
cycles by an internal path, where:
n = ((I2C input clock frequency/module clock frequency) × 8)
The transmit clock is also the receive clock. The address transmitted on the SDA pin is the address
in I2COAR.
Note: The free data format (FDF = 1) is not supported in the digital loopback mode.
5
4
IRS
I2C module reset bit.
0
The I2C module is in reset/disabled. When this bit is cleared to 0, all status bits (in I2CSTR) are set
to their default values.
1
The I2C module is enabled. This has the effect of releasing the I2C bus if the I2C peripheral is
holding it.
STB
START byte mode bit. This bit is only applicable when the I2C module is a master. As described in
version 2.1 of the Philips Semiconductors I2C-bus specification, the START byte can be used to
help a slave that needs extra time to detect a START condition. When the I2C module is a slave, it
ignores a START byte from a master, regardless of the value of the STB bit.
0
The I2C module is not in the START byte mode.
1
The I2C module is in the START byte mode. When you set the START condition bit (STT), the I2C
module begins the transfer with more than just a START condition. Specifically, it generates:
1.
2.
3.
4.
A
A
A
A
START condition
START byte (0000 0001b)
dummy acknowledge clock pulse
repeated START condition
Then, as normal, the I2C module sends the slave address that is in I2CSAR.
3
FDF
Free data format mode bit.
0
Free data format mode is disabled. Transfers use the 7-/10-bit addressing format selected by the
XA bit.
1
Free data format mode is enabled. Transfers have the free data (no address) format described in
Section 14.2.5.
The free data format is not supported in the digital loopback mode (DLB=1).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
915
I2C Module Registers
www.ti.com
Table 14-5. I2C Mode Register (I2CMDR) Field Descriptions (continued)
Bit
Field
2-0
BC
Value
Description
Bit count bits. BC defines the number of bits (1 to 8) in the next data byte that is to be received or
transmitted by the I2C module. The number of bits selected with BC must match the data size of
the other device. Notice that when BC = 000b, a data byte has 8 bits. BC does not affect address
bytes, which always have 8 bits.
Note: If the bit count is less than 8, receive data is right-justified in I2CDRR(7-0), and the other bits
of I2CDRR(7-0) are undefined. Also, transmit data written to I2CDXR must be right-justified.
000
8 bits per data byte
001
1 bit per data byte
010
2 bits per data byte
011
3 bits per data byte
100
4 bits per data byte
101
5 bits per data byte
110
6 bits per data byte
111
7 bits per data byte
Table 14-6. Master-Transmitter/Receiver Bus Activity Defined by the RM, STT, and STP Bits of
I2CMDR
(1)
Bus Activity (1)
Description
0
None
No activity
1
P
STOP condition
1
0
S-A-D..(n)..D.
START condition, slave address, n data bytes (n = value in
I2CCNT)
0
1
1
S-A-D..(n)..D-P
START condition, slave address, n data bytes, STOP condition (n =
value in I2CCNT)
1
0
0
None
No activity
1
0
1
P
STOP condition
1
1
0
S-A-D-D-D.
Repeat mode transfer: START condition, slave address, continuous
data transfers until STOP condition or next START condition
1
1
1
None
Reserved bit combination (No activity)
RM
STT
STP
0
0
0
0
0
S = START condition; A = Address; D = Data byte; P = STOP condition;
Table 14-7. How the MST and FDF Bits of I2CMDR Affect the Role of the TRX Bit of I2CMDR
MST
FDF
I2C Module State
Function of TRX
0
0
In slave mode but not free data
format mode
TRX is a don’t care. Depending on the command from the master, the I2C
module responds as a receiver or a transmitter.
0
1
In slave mode and free data
format mode
The free data format mode requires that the I2C module remains the
transmitter or the receiver throughout the transfer. TRX identifies the role
of the I2C module:
TRX = 1: The I2C module is a transmitter.
TRX = 0: The I2C module is a receiver.
916
1
0
In master mode but not free data
format mode
TRX = 1: The I2C module is a transmitter.
TRX = 0: The I2C module is a receiver.
1
1
In master mode and free data
format mode
TRX = 0: The I2C module is a receiver.
TRX = 1: The I2C module is a transmitter.
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Figure 14-15. Pin Diagram Showing the Effects of the Digital Loopback Mode (DLB) Bit
I2C module
DLB
To internal I2C logic
0
SCL_IN
1
From internal I2C logic
SCL
0
SCL_OUT
DLB
To internal
I2C
logic
0
To CPU
I2CDRR
SDA
I2CRSR
1
DLB
From CPU
I2CSAR
0
From CPU
I2COAR
1
From CPU
I2CDXR
0
I2CXSR
Address/data
14.5.2 I2C Extended Mode Register (I2CEMDR)
The I2C extended mode register is shown in Figure 14-16 and described in Table 14-8.
Figure 14-16. I2C Extended Mode Register (I2CEMDR)
15
1
0
Reserved
BCM
R-0
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-8. I2C Extended Mode Register (I2CEMDR) Field Descriptions
Bit
15-1
0
Field
Value
Description
Reserved
Any writes to these bit(s) must always have a value of 0.
BCM
Backwards compatibility mode. This bit affects the timing of the transmit status bits (XRDY and
XSMT) in the I2CSTR register when in slave transmitter mode. See Figure 14-17 for details
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
917
I2C Module Registers
www.ti.com
Figure 14-17. BCM Bit, Slave Transmitter Mode
Slave-Transmitter
a) BCM = 1
S Slave Address R
A
Data 1
Data 2
A
Data 3
A
nA
P
Left in I2CDXR
Interrupt
XRDY
XSMT
I2CDXR
Empty
Data 2
I2CXSR
Empty
Data 1
Data 4
Data 3
Data 3
Data 2
b) BCM = 0
S Slave Address R
A
Data 1
A
Data 2
A
Data 3
nA
P
Interrupt
XRDY
XSMT
918
I2CDXR
Empty
I2CXSR
Empty
Inter-Integrated Circuit Module (I2C)
Data 1
Data 1
Data 3
Data 2
Data 2
Data 3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
14.5.3 I2C Interrupt Enable Register (I2CIER)
I2CIER is used by the CPU to individually enable or disable I2C interrupt requests. The bits of I2CIER are
shown and described in Figure 14-18 and Table 14-9, respectively.
Figure 14-18. I2C Interrupt Enable Register (I2CIER)
15
8
Reserved
R-0
7
6
5
4
3
2
1
0
Reserved
AAS
SCD
XRDY
RRDY
ARDY
NACK
AL
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-9. I2C Interrupt Enable Register (I2CIER) Field Descriptions
Bit
15-7
6
5
4
3
2
1
0
Field
Value
Reserved
Description
These reserved bit locations are always read as zeros. A value written to this field has no effect.
AAS
Addressed as slave interrupt enable bit
0
Interrupt request disabled
1
Interrupt request enabled
SCD
Stop condition detected interrupt enable bit
0
Interrupt request disabled
1
Interrupt request enabled
XRDY
Transmit-data-ready interrupt enable bit. This bit should not be set when using FIFO mode.
0
Interrupt request disabled
1
Interrupt request enabled
RRDY
Receive-data-ready interrupt enable bit. This bit should not be set when using FIFO mode.
0
Interrupt request disabled
1
Interrupt request enabled
ARDY
Register-access-ready interrupt enable bit
0
Interrupt request disabled
1
Interrupt request enabled
NACK
No-acknowledgment interrupt enable bit
0
Interrupt request disabled
1
Interrupt request enabled
AL
Arbitration-lost interrupt enable bit
0
Interrupt request disabled
1
Interrupt request enabled
14.5.4 I2C Status Register (I2CSTR)
The I2C status register (I2CSTR) is a 16-bit register used to determine which interrupt has occurred and to
read status information. The bits of I2CSTR are shown and described in Figure 14-19 and Table 14-10,
respectively.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
919
I2C Module Registers
www.ti.com
Figure 14-19. I2C Status Register (I2CSTR)
15
14
13
Reserved
SDIR
R-0
R/W1C-0
7
6
12
11
10
9
8
NACKSNT
BB
RSFULL
XSMT
AAS
AD0
R/W1C-0
R-0
R-0
R-1
R-0
R-0
5
4
3
2
1
0
Reserved
SCD
XRDY
RRDY
ARDY
NACK
AL
R-0
R/W1C-0
R-1
R/W1C-0
R/W1C-0
R/W1C-0
R/W1C-0
LEGEND: R/W = Read/Write; W1C = Write 1 to clear (writing 0 has no effect); R = Read only; -n = value after reset
Table 14-10. I2C Status Register (I2CSTR) Field Descriptions
Bit
Field
15
Reserved
14
SDIR
Value
0
Description
This reserved bit location is always read as zeros. A value written to this bit has no effect.
Slave direction bit
0
I2C is not addressed as a slave transmitter. SDIR is cleared by one of the following events:
• It is manually cleared. To clear this bit, write a 1 to it.
• Digital loopback mode is enabled.
• A START or STOP condition occurs on the I2C bus.
1
13
NACKSNT
I2C is addressed as a slave transmitter.
NACK sent bit. This bit is used when the I2C module is in the receiver mode. One instance in which
NACKSNT is affected is when the NACK mode is used (see the description for NACKMOD in
Section 14.5.1).
0
NACK not sent. NACKSNT bit is cleared by any one of the following events:
• It is manually cleared. To clear this bit, write a 1 to it.
• The I2C module is reset (either when 0 is written to the IRS bit of I2CMDR or when the whole
device is reset).
1
12
BB
NACK sent: A no-acknowledge bit was sent during the acknowledge cycle on the I2C-bus.
Bus busy bit. BB indicates whether the I2C-bus is busy or is free for another data transfer. See the
paragraph following the table for more information.
0
Bus free. BB is cleared by any one of the following events:
• The I2C module receives or transmits a STOP bit (bus free).
• The I2C module is reset.
1
11
RSFULL
Bus busy: The I2C module has received or transmitted a START bit on the bus.
Receive shift register full bit. RSFULL indicates an overrun condition during reception. Overrun
occurs when new data is received into the shift register (I2CRSR) and the old data has not been
read from the receive register (I2CDRR). As new bits arrive from the SDA pin, they overwrite the
bits in I2CRSR. The new data will not be copied to ICDRR until the previous data is read.
0
No overrun detected. RSFULL is cleared by any one of the following events:
• I2CDRR is read is read by the CPU. Emulator reads of the I2CDRR do not affect this bit.
• The I2C module is reset.
1
10
XSMT
Overrun detected
Transmit shift register empty bit. XSMT = 0 indicates that the transmitter has experienced
underflow. Underflow occurs when the transmit shift register (I2CXSR) is empty but the data
transmit register (I2CDXR) has not been loaded since the last I2CDXR-to-I2CXSR transfer. The
next I2CDXR-to-I2CXSR transfer will not occur until new data is in I2CDXR. If new data is not
transferred in time, the previous data may be re-transmitted on the SDA pin.
0
Underflow detected (empty)
1
No underflow detected (not empty). XSMT is set by one of the following events:
• Data is written to I2CDXR.
• The I2C module is reset
9
920
AAS
Addressed-as-slave bit
0
In the 7-bit addressing mode, the AAS bit is cleared when receiving a NACK, a STOP condition, or
a repeated START condition. In the 10-bit addressing mode, the AAS bit is cleared when receiving
a NACK, a STOP condition, or by a slave address different from the I2C peripheral’s own slave
address.
1
The I2C module has recognized its own slave address or an address of all zeros (general call).
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Table 14-10. I2C Status Register (I2CSTR) Field Descriptions (continued)
Bit
Field
8
AD0
7-6
5
Reserved
Value
Description
Address 0 bits
0
AD0 has been cleared by a START or STOP condition.
1
An address of all zeros (general call) is detected.
0
These reserved bit locations are always read as zeros. A value written to this field has no effect.
SCD
Stop condition detected bit. SCD is set when the I2C sends or receives a STOP condition. The I2C
module delays clearing of the I2CMDR[STP] bit until the SCD bit is set.
0
STOP condition not detected since SCD was last cleared. SCD is cleared by any one of the
following events:
• I2CISRC is read by the CPU when it contains the value 110b (stop condition detected). Emulator
reads of the I2CISRC do not affect this bit.
• SCD is manually cleared. To clear this bit, write a 1 to it.
• The I2C module is reset.
1
4
XRDY
A STOP condition has been detected on the I2C bus.
Transmit-data-ready interrupt flag bit. When not in FIFO mode, XRDY indicates that the data
transmit register (I2CDXR) is ready to accept new data because the previous data has been copied
from I2CDXR to the transmit shift register (I2CXSR). The CPU can poll XRDY or use the XRDY
interrupt request (see Section 14.3.1). When in FIFO mode, use TXFFINT instead.
0
I2CDXR not ready. XRDY is cleared when data is written to I2CDXR.
1
I2CDXR ready: Data has been copied from I2CDXR to I2CXSR.
XRDY is also forced to 1 when the I2C module is reset.
3
RRDY
Receive-data-ready interrupt flag bit. When not in FIFO mode, RRDY indicates that the data receive
register (I2CDRR) is ready to be read because data has been copied from the receive shift register
(I2CRSR) to I2CDRR. The CPU can poll RRDY or use the RRDY interrupt request (see
Section 14.3.1). When in FIFO mode, use RXFFINT instead.
0
I2CDRR not ready. RRDY is cleared by any one of the following events:
• I2CDRR is read by the CPU. Emulator reads of the I2CDRR do not affect this bit.
• RRDY is manually cleared. To clear this bit, write a 1 to it.
• The I2C module is reset.
1
2
ARDY
I2CDRR ready: Data has been copied from I2CRSR to I2CDRR.
Register-access-ready interrupt flag bit (only applicable when the I2C module is in the master
mode). ARDY indicates that the I2C module registers are ready to be accessed because the
previously programmed address, data, and command values have been used. The CPU can poll
ARDY or use the ARDY interrupt request (see Section 14.3.1)
0
The registers are not ready to be accessed. ARDY is cleared by any one of the following events:
• The I2C module starts using the current register contents.
• ARDY is manually cleared. To clear this bit, write a 1 to it.
• The I2C module is reset.
1
The registers are ready to be accessed.
In the nonrepeat mode (RM = 0 in I2CMDR): If STP = 0 in I2CMDR, the ARDY bit is set when the
internal data counter counts down to 0. If STP = 1, ARDY is not affected (instead, the I2C module
generates a STOP condition when the counter reaches 0).
In the repeat mode (RM = 1): ARDY is set at the end of each byte transmitted from I2CDXR.
1
NACK
No-acknowledgment interrupt flag bit. NACK applies when the I2C module is a transmitter (master
or slave). NACK indicates whether the I2C module has detected an acknowledge bit (ACK) or a noacknowledge bit (NACK) from the receiver. The CPU can poll NACK or use the NACK interrupt
request (see Section 14.3.1).
0
ACK received/NACK not received. This bit is cleared by any one of the following events:
• An acknowledge bit (ACK) has been sent by the receiver.
• NACK is manually cleared. To clear this bit, write a 1 to it.
• The CPU reads the interrupt source register (I2CISRC) and the register contains the code for a
NACK interrupt. Emulator reads of the I2CISRC do not affect this bit.
• The I2C module is reset.
1
NACK bit received. The hardware detects that a no-acknowledge (NACK) bit has been received.
Note: While the I2C module performs a general call transfer, NACK is 1, even if one or more slaves
send acknowledgment.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
921
I2C Module Registers
www.ti.com
Table 14-10. I2C Status Register (I2CSTR) Field Descriptions (continued)
Bit
0
Field
Value
AL
Description
Arbitration-lost interrupt flag bit (only applicable when the I2C module is a master-transmitter). AL
primarily indicates when the I2C module has lost an arbitration contest with another mastertransmitter. The CPU can poll AL or use the AL interrupt request (see Section 14.3.1)
0
Arbitration not lost. AL is cleared by any one of the following events:
• AL is manually cleared. To clear this bit, write a 1 to it.
• The CPU reads the interrupt source register (I2CISRC) and the register contains the code for an
AL interrupt. Emulator reads of the I2CISRC do not affect this bit.
• The I2C module is reset.
1
Arbitration lost. AL is set by any one of the following events:
• The I2C module senses that it has lost an arbitration with two or more competing transmitters
that started a transmission almost simultaneously.
• The I2C module attempts to start a transfer while the BB (bus busy) bit is set to 1.
When AL becomes 1, the MST and STP bits of I2CMDR are cleared, and the I2C module becomes
a slave-receiver.
The I2C peripheral cannot detect a START or STOP condition when it is in reset, i.e. the IRS bit is set to
0. Therefore, the BB bit will remain in the state it was at when the peripheral was placed in reset. The BB
bit will stay in that state until the I2C peripheral is taken out of reset, i.e. the IRS bit is set to 1, and a
START or STOP condition is detected on the I2C bus.
Follow these steps before initiating the first data transfer with I2C :
1. After taking the I2C peripheral out of reset by setting the IRS bit to 1, wait a certain period to detect the
actual bus status before starting the first data transfer. Set this period larger than the total time taken
for the longest data transfer in the application. By waiting for a period of time after I2C comes out of
reset, users can ensure that at least one START or STOP condition will have occurred on the I2C bus,
and been captured by the BB bit. After this period, the BB bit will correctly reflect the state of the I2C
bus.
2. Check the BB bit and verify that BB=0 (bus not busy) before proceeding.
3. Begin data transfers.
Not resetting the I2C peripheral in between transfers ensures that the BB bit reflects the actual bus status.
If users must reset the I2C peripheral in between transfers, repeat steps 1 through 3 every time the I2C
peripheral is taken out of reset.
14.5.5 I2C Interrupt Source Register (I2CISRC)
The I2C interrupt source register (I2CISRC) is a 16-bit register used by the CPU to determine which event
generated the I2C interrupt. For more information about these events, see the descriptions of the I2C
interrupt requests in Table 14-3.
Figure 14-20. I2C Interrupt Source Register (I2CISRC)
15
12
11
8
7
3
2
0
Reserved
Reserved
Reserved
INTCODE
R-0
R/W-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-11. I2C Interrupt Source Register (I2CISRC) Field Descriptions
Bit
Field
Value
Description
15-12
Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
11-8
Reserved
These reserved bit locations should always be written as zeros.
7-3
Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
922
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Table 14-11. I2C Interrupt Source Register (I2CISRC) Field Descriptions (continued)
Bit
Field
2-0
INTCODE
Value
Description
Interrupt code bits. The binary code in INTCODE indicates the event that generated an I2C
interrupt.
000
None
001
Arbitration lost
010
No-acknowledgment condition detected
011
Registers ready to be accessed
100
Receive data ready
101
Transmit data ready
110
Stop condition detected
111
Addressed as slave
A CPU read will clear this field. If another lower priority interrupt is pending and enabled, the value
corresponding to that interrupt will then be loaded. Otherwise, the value will stay cleared.
In the case of an arbitration lost, a no-acknowledgment condition detected, or a stop condition
detected, a CPU read will also clear the associated interrupt flag bit in the I2CSTR register.
Emulator reads will not affect the state of this field or of the status bits in the I2CSTR register.
14.5.6 I2C Prescaler Register (I2CPSC)
The I2C prescaler register (I2CPSC) is a 16-bit register (see Figure 14-21) used for dividing down the I2C
input clock to obtain the desired module clock for the operation of the I2C module. See the device-specific
data manual for the supported range of values for the module clock frequency. Table 14-12 lists the bit
descriptions. For more details about the module clock, see Section 14.1.3.
IPSC must be initialized while the I2C module is in reset (IRS = 0 in I2CMDR). The prescaled frequency
takes effect only when IRS is changed to 1. Changing the IPSC value while IRS = 1 has no effect.
Figure 14-21. I2C Prescaler Register (I2CPSC)
15
8
7
0
Reserved
IPSC
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-12. I2C Prescaler Register (I2CPSC) Field Descriptions
Bit
Field
Value Description
15-8 Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
7-0
I2C prescaler divide-down value.
IPSC
IPSC determines how much the CPU clock is divided to create the module clock of the I2C module:
module clock frequency = I2C input clock frequency/(IPSC + 1)
Note: IPSC must be initialized while the I2C module is in reset (IRS = 0 in I2CMDR).
NOTE: To meet all of the I2C protocol timing specifications, the module clock must be configured
between 7-12 MHz.
14.5.7 I2C Clock Divider Registers (I2CCLKL and I2CCLKH)
As explained in Section 14.1.3, when the I2C module is a master, the module clock is divided down for
use as the master clock on the SCL pin. As shown in Figure 14-22, the shape of the master clock
depends on two divide-down values:
• ICCL in I2CCLKL (summarized by Figure 14-23 and Table 14-13). For each master clock cycle, ICCL
determines the amount of time the signal is low.
• ICCH in I2CCLKH (summarized by Figure 14-24 and Table 14-14). For each master clock cycle, ICCH
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
923
I2C Module Registers
www.ti.com
determines the amount of time the signal is high.
Figure 14-22. The Roles of the Clock Divide-Down Values (ICCL and ICCH)
High-time duration:
Tmod × (ICCH + d)(A)
High-time duration:
Tmod × (ICCH + d)(A)
SCL
Low-time duration:
Tmod × (ICCL + d)(A)
A
Low-time duration:
Tmod × (ICCL + d)(A)
As described in Section 14.5.7.1, Tmod is the module clock period, and d is 5, 6, or 7.
Figure 14-23. I2C Clock Low-Time Divider Register (I2CCLKL)
15
0
ICCL
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-13. I2C Clock Low-Time Divider Register (I2CCLKL) Field Description
Bit
Field
15-0
ICCL
Value
Description
Clock low-time divide-down value. To produce the low-time duration of the master clock, the period
of the module clock is multiplied by (ICCL + d). d is 5, 6, or 7 as described in Section 14.5.7.1.
Note: These bits must be set to a non-zero value for proper I2C clock operation.
Figure 14-24. I2C Clock High-Time Divider Register (I2CCLKH)
15
0
ICCH
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-14. I2C Clock High-Time Divider Register (I2CCLKH) Field Description
Bit
Field
15-0
ICCH
Value
Description
Clock high-time divide-down value. To produce the high-time duration of the master clock, the
period of the module clock is multiplied by (ICCH + d). d is 5, 6, or 7 as described in
Section 14.5.7.1.
Note: These bits must be set to a non-zero value for proper I2C clock operation.
14.5.7.1 Formula for the Master Clock Period
The period of the master clock (Tmst) is a multiple of the period of the module clock (Tmod):
T mst + T mod
T mst +
[( ICCL ) d ) ) ( ICCH ) d )]
( IPSC ) 1 ) [ ( ICCL ) d ) ) ( ICCH ) d ) ]
I2C input clock frequency
where d depends on the divide-down value IPSC, as shown in Table 14-15. IPSC is described in
Section 14.5.6.
924
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Table 14-15. Dependency of Delay d on the DivideDown Value IPSC
IPSC
d
0
7
1
6
Greater than 1
5
14.5.8 I2C Slave Address Register (I2CSAR)
The I2C slave address register (I2CSAR) is a register for storing the next slave address that will be
transmitted by the I2C module when it is a master. It is a 16-bit register with the format shown in
Figure 14-25. As described in Table 14-16, the SAR field of I2CSAR contains a 7-bit or 10-bit slave
address. When the I2C module is not using the free data format (FDF = 0 in I2CMDR), it uses this
address to initiate data transfers with a slave or slaves. When the address is nonzero, the address is for a
particular slave. When the address is 0, the address is a general call to all slaves. If the 7-bit addressing
mode is selected (XA = 0 in I2CMDR), only bits 6-0 of I2CSAR are used; write 0s to bits 9-7.
Figure 14-25. I2C Slave Address Register (I2CSAR)
15
10
9
0
Reserved
SAR
R-0
R/W-3FFh
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-16. I2C Slave Address Register (I2CSAR) Field Descriptions
Bit
15-10
9-0
Field
Value
Reserved
Description
These reserved bit locations are always read as zeros. A value written to this field has no effect.
SAR
In 7-bit addressing mode (XA = 0 in I2CMDR):
00h-7Fh
Bits 6-0 provide the 7-bit slave address that the I2C module transmits when it is in the mastertransmitter mode. Write 0s to bits 9-7.
In 10-bit addressing mode (XA = 1 in I2CMDR):
000h-3FFh
Bits 9-0 provide the 10-bit slave address that the I2C module transmits when it is in the mastertransmitter mode.
14.5.9 I2C Own Address Register (I2COAR)
The I2C own address register (I2COAR) is a 16-bit register. Figure 14-26 shows the format of I2COAR,
and Table 14-17 describes its bit fields. The I2C module uses this register to specify its own slave
address, which distinguishes it from other slaves connected to the I2C-bus. If the 7-bit addressing mode is
selected (XA = 0 in I2CMDR), only bits 6-0 are used; write 0s to bits 9-7.
Figure 14-26. I2C Own Address Register (I2COAR)
15
10
9
0
Reserved
OAR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-17. I2C Own Address Register (I2COAR) Field Descriptions
Bit
15-10
9-0
Field
Value
Description
Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
OAR
In 7-bit addressing mode (XA = 0 in I2CMDR):
00h-7Fh
Bits 6-0 provide the 7-bit slave address of the I2C module. Write 0s to bits 9-7.
In 10-bit addressing mode (XA = 1 in I2CMDR):
000h-3FFh
Bits 9-0 provide the 10-bit slave address of the I2C module.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
925
I2C Module Registers
www.ti.com
14.5.10 I2C Data Count Register (I2CCNT)
I2CCNT is a 16-bit register used to indicate how many data bytes to transfer when the I2C module is
configured as a transmitter, or to receive when configured as a master receiver. In the repeat mode (RM =
1), I2CCNT is not used. The bits of I2CCNT are shown and described in Figure 14-27 and Table 14-18,
respectively.
The value written to I2CCNT is copied to an internal data counter. The internal data counter is
decremented by 1 for each byte transferred (I2CCNT remains unchanged). If a STOP condition is
requested in the master mode (STP = 1 in I2CMDR), the I2C module terminates the transfer with a STOP
condition when the countdown is complete (that is, when the last byte has been transferred).
Figure 14-27. I2C Data Count Register (I2CCNT)
15
0
ICDC
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-18. I2C Data Count Register (I2CCNT) Field Descriptions
Bit
Field
15-0
ICDC
Value
Description
Data count value. ICDC indicates the number of data bytes to transfer or receive. The value in
I2CCNT is a don’t care when the RM bit in I2CMDR is set to 1.
0000h
0001h-FFFFh
The start value loaded to the internal data counter is 65536.
The start value loaded to internal data counter is 1-65535.
14.5.11 I2C Data Receive Register (I2CDRR)
I2CDRR (see Figure 14-28 and Table 14-19) is a 16-bit register used by the CPU to read received data.
The I2C module can receive a data byte with 1 to 8 bits. The number of bits is selected with the bit count
(BC) bits in I2CMDR. One bit at a time is shifted in from the SDA pin to the receive shift register
(I2CRSR). When a complete data byte has been received, the I2C module copies the data byte from
I2CRSR to I2CDRR. The CPU cannot access I2CRSR directly.
If a data byte with fewer than 8 bits is in I2CDRR, the data value is right-justified, and the other bits of
I2CDRR(7-0) are undefined. For example, if BC = 011 (3-bit data size), the receive data is in I2CDRR(20), and the content of I2CDRR(7-3) is undefined.
When in the receive FIFO mode, the I2CDRR register acts as the receive FIFO buffer.
Figure 14-28. I2C Data Receive Register (I2CDRR)
15
8
7
0
Reserved
DATA
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-19. I2C Data Receive Register (I2CDRR) Field Descriptions
Bit
Field
Value
Description
15-8
Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
7-0
DATA
Receive data
14.5.12 I2C Data Transmit Register (I2CDXR)
The CPU writes transmit data to I2CDXR (see Figure 14-29 and Table 14-20). This 16-bit register accepts
a data byte with 1 to 8 bits. Before writing to I2CDXR, specify how many bits are in a data byte by loading
the appropriate value into the bit count (BC) bits of I2CMDR. When writing a data byte with fewer than 8
bits, make sure the value is right-aligned in I2CDXR.
926
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
After a data byte is written to I2CDXR, the I2C module copies the data byte to the transmit shift register
(I2CXSR). The CPU cannot access I2CXSR directly. From I2CXSR, the I2C module shifts the data byte
out on the SDA pin, one bit at a time.
When in the transmit FIFO mode, the I2CDXR register acts as the transmit FIFO buffer.
Figure 14-29. I2C Data Transmit Register (I2CDXR)
15
8
7
0
Reserved
DATA
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-20. I2C Data Transmit Register (I2CDXR) Field Descriptions
Bit
Field
Value
Description
15-8
Reserved
These reserved bit locations are always read as zeros. A value written to this field has no effect.
7-0
DATA
Transmit data
14.5.13 I2C Transmit FIFO Register (I2CFFTX)
The I2C transmit FIFO register (I2CFFTX) is a 16-bit register that contains the I2C FIFO mode enable bit
as well as the control and status bits for the transmit FIFO mode of operation on the I2C peripheral. The
bit fields are shown in Figure 14-30 and described in Table 14-21.
Figure 14-30. I2C Transmit FIFO Register (I2CFFTX)
15
14
13
12
11
10
9
8
Reserved
I2CFFEN
TXFFRST
TXFFST4
TXFFST3
TXFFST2
TXFFST1
TXFFST0
R-0
R/W-0
R/W-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
TXFFINT
TXFFINTCLR
TXFFIENA
TXFFIL4
TXFFIL3
TXFFIL2
TXFFIL1
TXFFIL0
R-0
R/W1C-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-21. I2C Transmit FIFO Register (I2CFFTX) Field Descriptions
Bit
Field
15
Reserved
Reserved. Reads will return a 0, writes have no effect.
14
I2CFFEN
I2C FIFO mode enable bit. This bit must be enabled for either the transmit or the receive FIFO to
operate correctly.
13
12-8
Value
Description
0
Disable the I2C FIFO mode.
1
Enable the I2C FIFO mode.
TXFFRST
I2C transmit FIFO reset bit.
0
Reset the transmit FIFO pointer to 0000 and hold the transmit FIFO in the reset state.
1
Enable the transmit FIFO operation.
TXFFST4-0
Contains the status of the transmit FIFO:
00xxx
Transmit FIFO contains xxx bytes.
00000
Transmit FIFO is empty.
Note: Since these bits are reset to zero, the transmit FIFO interrupt flag will be set when the
transmit FIFO operation is enabled and the I2C is taken out of reset. This will generate a transmit
FIFO interrupt if enabled. To avoid any detrimental effects from this, write a one to the
TXFFINTCLR once the transmit FIFO operation is enabled and the I2C is taken out of reset.
7
TXFFINT
Transmit FIFO interrupt flag. This bit cleared by a CPU write of a 1 to the TXFFINTCLR bit. If the
TXFFIENA bit is set, this bit will generate an interrupt when it is set.
0
Transmit FIFO interrupt condition has not occurred.
1
Transmit FIFO interrupt condition has occurred.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
927
I2C Module Registers
www.ti.com
Table 14-21. I2C Transmit FIFO Register (I2CFFTX) Field Descriptions (continued)
Bit
Field
6
Value
TXFFINTCLR
5
Transmit FIFO interrupt flag clear bit.
0
Writes of zeros have no effect. Reads return a 0.
1
Writing a 1 to this bit clears the TXFFINT flag.
TXFFIENA
4-0
Description
Transmit FIFO interrupt enable bit.
0
Disabled. TXFFINT flag does not generate an interrupt when set.
1
Enabled. TXFFINT flag does generate an interrupt when set.
TXFFIL4-0
Transmit FIFO interrupt level.
These bits set the status level that will set the transmit interrupt flag. When the TXFFST4-0 bits
reach a value equal to or less than these bits, the TXFFINT flag will be set. This will generate an
interrupt if the TXFFIENA bit is set. Because the I2C on these devices has a 4-level transmit FIFO,
these bits cannot be configured for an interrupt of more than 4 FIFO levels. TXFFIL4 and TXFFIL3
are tied to zero.
14.5.14 I2C Receive FIFO Register (I2CFFRX)
The I2C receive FIFO register (I2CFFRX) is a 16-bit register that contains the control and status bits for
the receive FIFO mode of operation on the I2C peripheral. The bit fields are shown in Figure 14-31 and
described in Table 14-22.
Figure 14-31. I2C Receive FIFO Register (I2CFFRX)
15
14
13
12
11
10
9
8
Reserved
RXFFRST
RXFFST4
RXFFST3
RXFFST2
RXFFST1
RXFFST0
R-0
R/W-0
R-0
R-0
R-0
R-0
R-0
7
6
5
4
3
2
1
0
RXFFINT
RXFFINTCLR
RXFFIENA
RXFFIL4
RXFFIL3
RXFFIL2
RXFFIL1
RXFFIL0
R-0
R/W1C-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 14-22. I2C Receive FIFO Register (I2CFFRX) Field Descriptions
Bit
Field
15-14
Reserved
13
RXFFRST
12-8
7
6
5
928
Value
Description
Reserved. Reads will return a 0, writes have no effect.
I2C receive FIFO reset bit
0
Reset the receive FIFO pointer to 0000 and hold the receive FIFO in the reset state.
1
Enable the receive FIFO operation.
RXFFST4-0
Contains the status of the receive FIFO:
00xxx
Receive FIFO contains xxx bytes
00000
Receive FIFO is empty.
RXFFINT
Receive FIFO interrupt flag. This bit cleared by a CPU write of a 1 to the RXFFINTCLR bit. If the
RXFFIENA bit is set, this bit will generate an interrupt when it is set.
0
Receive FIFO interrupt condition has not occurred.
1
Receive FIFO interrupt condition has occurred.
RXFFINTCLR
Receive FIFO interrupt flag clear bit.
0
Writes of zeros have no effect. Reads return a zero.
1
Writing a 1 to this bit clears the RXFFINT flag.
RXFFIENA
Receive FIFO interrupt enable bit.
0
Disabled. RXFFINT flag does not generate an interrupt when set.
1
Enabled. RXFFINT flag does generate an interrupt when set.
Inter-Integrated Circuit Module (I2C)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
I2C Module Registers
www.ti.com
Table 14-22. I2C Receive FIFO Register (I2CFFRX) Field Descriptions (continued)
Bit
Field
4-0
RXFFIL4-0
Value
Description
Receive FIFO interrupt level.
These bits set the status level that will set the receive interrupt flag. When the RXFFST4-0 bits
reach a value equal to or greater than these bits, the RXFFINT flag is set. This will generate an
interrupt if the RXFFIENA bit is set.
Note: Since these bits are reset to zero, the receive FIFO interrupt flag will be set if the receive
FIFO operation is enabled and the I2C is taken out of reset. This will generate a receive FIFO
interrupt if enabled. To avoid this, modify these bits on the same instruction as or prior to setting the
RXFFRST bit. Because the I2C on these devices has a 4-level receive FIFO, these bits cannot be
configured for an interrupt of more than 4 FIFO levels. RXFFIL4 and RXFFIL3 are tied to zero.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Inter-Integrated Circuit Module (I2C)
929
Chapter 15
SPRUH18G – January 2011 – Revised April 2017
Multichannel Buffered Serial Port (McBSP)
This chapter describes the multichannel buffered serial port (McBSP). This device provides one highspeed multichannel buffered serial port (McBSP) that allows direct interface to codecs and other devices
in a system.
Topic
...........................................................................................................................
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
15.9
15.10
15.11
15.12
930
Page
Overview ......................................................................................................... 931
Clocking and Framing Data................................................................................ 936
Frame Phases .................................................................................................. 938
McBSP Sample Rate Generator .......................................................................... 943
McBSP Exception/Error Conditions .................................................................... 950
Multichannel Selection Modes ............................................................................ 958
SPI Operation Using the Clock Stop Mode ........................................................... 965
Receiver Configuration...................................................................................... 972
Transmitter Configuration.................................................................................. 991
Emulation and Reset Considerations ............................................................... 1008
Data Packing Examples .................................................................................. 1010
McBSP Registers ........................................................................................... 1012
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Overview
www.ti.com
15.1 Overview
The McBSP consists of a data-flow path and a control path connected to external devices by six pins as
shown in Figure 15-1.
Data is communicated to devices interfaced with the McBSP via the data transmit (DX) pin for
transmission and via the data receive (DR) pin for reception. Control information in the form of clocking
and frame synchronization is communicated via the following pins: CLKX (transmit clock), CLKR (receive
clock), FSX (transmit frame synchronization), and FSR (receive frame synchronization).
The CPU and the DMA controller communicate with the McBSP through 16-bit-wide registers accessible
via the internal peripheral bus. The CPU or the DMA controller writes the data to be transmitted to the
data transmit registers (DXR1, DXR2). Data written to the DXRs is shifted out to DX via the transmit shift
registers (XSR1, XSR2). Similarly, receive data on the DR pin is shifted into the receive shift registers
(RSR1, RSR2) and copied into the receive buffer registers (RBR1, RBR2). The contents of the RBRs is
then copied to the DRRs, which can be read by the CPU or the DMA controller. This allows simultaneous
movement of internal and external data communications.
DRR2, RBR2, RSR2, DXR2, and XSR2 are not used (written, read, or shifted) if the serial word length is 8
bits, 12 bits, or 16 bits. For larger word lengths, these registers are needed to hold the most significant
bits.
The frame and clock loop-back is implemented at chip level to enable CLKX and FSX to drive CLKR and
FSR. If the loop-back is enabled, the CLKR and FSR get their signals from the CLKX and FSX pads;
instead of the CLKR and FSR pins.
15.1.1 Features of the McBSP
The McBSP features:
• Full-duplex communication
• Double-buffered transmission and triple-buffered reception, allowing a continuous data stream
• Independent clocking and framing for reception and transmission
• The capability to send interrupts to the CPU and to send DMA events to the DMA controller
• 128 channels for transmission and reception
• Multichannel selection modes that enable or disable block transfers in each of the channels
• Direct interface to industry-standard codecs, analog interface chips (AICs), and other serially
connected A/D and D/A devices
• Support for external generation of clock signals and frame-synchronization signals
• A programmable sample rate generator for internal generation and control of clock signals and framesynchronization signals
• Programmable polarity for frame-synchronization pulses and clock signals
• Direct interface to:
– T1/E1 framers
– IOM-2 compliant devices
– AC97-compliant devices (the necessary multiphase frame capability is provided)
– I2S compliant devices
– SPI devices
• A wide selection of data sizes: 8, 12, 16, 20, 24, and 32 bits
NOTE: A value of the chosen data size is referred to as a serial word or word throughout the
McBSP documentation. Elsewhere, word is used to describe a 16-bit value.
•
•
•
•
μ-law and A-law companding
The option of transmitting/receiving 8-bit data with the LSB first
Status bits for flagging exception/error conditions
ABIS mode is not supported.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
931
Overview
www.ti.com
15.1.2 McBSP Pins/Signals
Table 15-1 describes the McBSP interface pins and some internal signals.
Table 15-1. McBSP Interface Pins/Signals
McBSP-A Pin
Type
MCLKRA
I/O
Description
Supplying or reflecting the receive clock; supplying the input clock of the sample rate generator
MCLKXA
I/O
Supplying or reflecting the transmit clock; supplying the input clock of the sample rate generator
MDRA
I
Serial data receive pin
MDXA
O
Serial data transmit pin
MFSRA
I/O
Supplying or reflecting the receive frame-sync signal; controlling sample rate generator synchronization
for the case when GSYNC = 1 (see Section 15.4.3)
MFSXA
I/O
Supplying or reflecting the transmit frame-sync signal
CPU Interrupt Signals
MRINT
Receive interrupt to CPU
MXINT
Transmit interrupt to CPU
DMA Events
932
REVT
Receive synchronization event to DMA
XEVT
Transmit synchronization event to DMA
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Overview
www.ti.com
15.1.2.1
McBSP Generic Block Diagram
The McBSP consists of a data-flow path and a control path connected to external devices by six pins as
shown in Figure 15-1. The figure and the text in this section use generic pin names.
Figure 15-1. Conceptual Block Diagram of the McBSP
TX
Interrupt
MXINT
To CPU
Peripheral Write Bus
CPU
TX Interrupt Logic
16
McBSP Transmit
Interrupt Select Logic
16
DXR2 Transmit Buffer
LSPCLK
DXR1 Transmit Buffer
MFSXx
16
16
MCLKXx
DMA Bus
Bridge
CPU
Peripheral Bus
Compand Logic
XSR2
XSR1
MDXx
RSR2
RSR1
MDRx
16
MCLKRx
16
Expand Logic
MFSRx
RBR2 Register
16
16
DRR2 Receive Buffer
DRR1 Receive Buffer
McBSP Receive
Interrupt Select Logic
MRINT
RX Interrupt Logic
RBR1 Register
16
RX
Interrupt
16
Peripheral Read Bus
CPU
To CPU
A
Not available in all devices. See the device-specific data sheet
15.1.3 McBSP Operation
This section addresses the following topics:
• Data transfer process
• Companding (compressing and expanding) data
• Clocking and framing data
• Frame phases
• McBSP reception
• McBSP transmission
• Interrupts and DMA events generated by McBSPs
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
933
Overview
www.ti.com
15.1.4 Data Transfer Process of McBSP
Figure 15-2 shows a diagram of the McBSP data transfer paths. The McBSP receive operation is triplebuffered, and transmit operation is double-buffered. The use of registers varies, depending on whether the
defined length of each serial word is 16 bits.
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
Figure 15-2. McBSP Data Transfer Paths
DR
DX
RSR[1,2]
RBR[1,2]
XSR[1,2]
Compand
Expand
Compress
DRR[1,2]
To CPU/DMA controller
DXR[1,2]
From CPU/DMA controller
15.1.4.1 Data Transfer Process for Word Length of 8, 12, or 16 Bits
If the word length is 16 bits or smaller, only one 16-bit register is needed at each stage of the data transfer
paths. The registers DRR2, RBR2, RSR2, DXR2, and XSR2 are not used (written, read, or shifted).
Receive data arrives on the DR pin and is shifted into receive shift register 1 (RSR1). Once a full word is
received, the content of RSR1 is copied to receive buffer register 1 (RBR1) if RBR1 is not full with
previous data. RBR1 is then copied to data receive register 1 (DRR1), unless the previous content of
DRR1 has not been read by the CPU or the DMA controller. If the companding feature of the McBSP is
implemented, the required word length is 8 bits and receive data is expanded into the appropriate format
before being passed from RBR1 to DRR1. For more details about reception, see Section 15.3.5.
Transmit data is written by the CPU or the DMA controller to data transmit register 1 (DXR1). If there is no
previous data in transmit shift register (XSR1), the value in DXR1 is copied to XSR1; otherwise, DXR1 is
copied to XSR1 when the last bit of the previous data is shifted out on the DX pin. If selected, the
companding module compresses 16-bit data into the appropriate 8-bit format before passing it to XSR1.
After transmit frame synchronization, the transmitter begins shifting bits from XSR1 to the DX pin. For
more details about transmission, see Section 15.3.6.
15.1.4.2 Data Transfer Process for Word Length of 20, 24, or 32 Bits
If the word length is larger than 16 bits, two 16-bit registers are needed at each stage of the data transfer
paths. The registers DRR2, RBR2, RSR2, DXR2, and XSR2 are needed to hold the most significant bits.
Receive data arrives on the DR pin and is shifted first into RSR2 and then into RSR1. Once the full word
is received, the contents of RSR2 and RSR1 are copied to RBR2 and RBR1, respectively, if RBR1 is not
full. Then the contents of RBR2 and RBR1 are copied to DRR2 and DRR1, respectively, unless the
previous content of DRR1 has not been read by the CPU or the DMA controller. The CPU or the DMA
controller must read data from DRR2 first and then from DRR1. When DRR1 is read, the next RBR-toDRR copy occurs. For more details about reception, see Section 15.3.5.
For transmission, the CPU or the DMA controller must write data to DXR2 first and then to DXR1. When
new data arrives in DXR1, if there is no previous data in XSR1, the contents of DXR2 and DXR1 are
copied to XSR2 and XSR1, respectively; otherwise, the contents of the DXRs are copied to the XSRs
when the last bit of the previous data is shifted out on the DX pin. After transmit frame synchronization,
the transmitter begins shifting bits from the XSRs to the DX pin. For more details about transmission, see
Section 15.3.6.
15.1.5 Companding (Compressing and Expanding) Data
Companding (COMpressing and exPANDing) hardware allows compression and expansion of data in
either μ-law or A-law format. The companding standard employed in the United States and Japan is μ-law.
The European companding standard is referred to as A-law. The specifications for μ-law and A-law log
PCM are part of the CCITT G.711 recommendation.
A-law and μ-law allow 13 bits and 14 bits of dynamic range, respectively. Any values outside this range
are set to the most positive or most negative value. Thus, for companding to work best, the data
transferred to and from the McBSP via the CPU or DMA controller must be at least 16 bits wide.
934
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Overview
www.ti.com
The μ-law and A-law formats both encode data into 8-bit code words. Companded data is always 8 bits
wide; the appropriate word length bits (RWDLEN1, RWDLEN2, XWDLEN1, XWDLEN2) must therefore be
set to 0, indicating an 8-bit wide serial data stream. If companding is enabled and either of the frame
phases does not have an 8-bit word length, companding continues as if the word length is 8 bits.
Figure 15-3 illustrates the companding processes. When companding is chosen for the transmitter,
compression occurs during the process of copying data from DXR1 to XSR1. The transmit data is
encoded according to the specified companding law (A-law or μ-law). When companding is chosen for the
receiver, expansion occurs during the process of copying data from RBR1 to DRR1. The receive data is
decoded to twos-complement format.
Figure 15-3. Companding Processes
DR
RSR1
DX
RBR1
XSR1
8
16
Expand
8
Compress
16
DRR1
To CPU or DMA controller
DXR1
From CPU or DMA controller
15.1.5.1 Companding Formats
For reception, the 8-bit compressed data in RBR1 is expanded to left-justified 16-bit data in DRR1. The
receive sign-extension and justification mode specified in RJUST is ignored when companding is used.
For transmission using μ-law compression, the 14 data bits must be left-justified in DXR1 and that the
remaining two low-order bits are filled with 0s as shown in Figure 15-4.
Figure 15-4. μ-Law Transmit Data Companding Format
15-2
µ-law format in DXR1
1-0
Value
00
For transmission using A-law compression, the 13 data bits must be left-justified in DXR1, with the
remaining three low-order bits filled with 0s as shown in Figure 15-5.
Figure 15-5. A-Law Transmit Data Companding Format
A-law format in DXR1
15-3
2-0
Value
000
15.1.5.2 Capability to Compand Internal Data
If the McBSP is otherwise unused (the serial port transmit and receive sections are reset), the
companding hardware can compand internal data. This can be used to:
• Convert linear to the appropriate μ-law or A-law format
• Convert μ-law or A-law to the linear format
• Observe the quantization effects in companding by transmitting linear data and compressing and reexpanding this data. This is useful only if both XCOMPAND and RCOMPAND enable the same
companding format.
Figure 15-6 shows two methods by which the McBSP can compand internal data. Data paths for these
two methods are used to indicate:
• When both the transmit and receive sections of the serial port are reset, DRR1 and DXR1 are
connected internally through the companding logic. Values from DXR1 are compressed, as selected by
XCOMPAND, and then expanded, as selected by RCOMPAND. RRDY and XRDY bits are not set.
However, data is available in DRR1 within four CPU clocks after being written to DXR1.
The advantage of this method is its speed. The disadvantage is that there is no synchronization
available to the CPU and DMA to control the flow. DRR1 and DXR1 are internally connected if the
(X/R)COMPAND bits are set to 10b or 11b (compand using μ-law or A-law).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
935
Clocking and Framing Data
•
www.ti.com
The McBSP is enabled in digital loopback mode with companding appropriately enabled by
RCOMPAND and XCOMPAND. Receive and transmit interrupts (RINT when RINTM = 0 and XINT
when XINTM = 0) or synchronization events (REVT and XEVT) allow synchronization of the CPU or
DMA to these conversions, respectively. Here, the time for this companding depends on the serial bit
rate selected.
Figure 15-6. Two Methods by Which the McBSP Can Compand Internal Data
RSR1
DR
RBR1
Expand
DRR1
To CPU or DMA controller
Compress
DXR1
From CPU or DMA controller
(1)
(2) (DLB)
XSR1
DX
15.1.5.3 Reversing Bit Order: Option to Transfer LSB First
Generally, the McBSP transmits or receives all data with the most significant bit (MSB) first. However,
certain 8-bit data protocols (that do not use companded data) require the least significant bit (LSB) to be
transferred first. If you set XCOMPAND = 01b in XCR2, the bit ordering of 8-bit words is reversed (LSB
first) before being sent from the serial port. If you set RCOMPAND = 01b in RCR2, the bit ordering of 8-bit
words is reversed during reception. Similar to companding, this feature is enabled only if the appropriate
word length bits are set to 0, indicating that 8-bit words are to be transferred serially. If either phase of the
frame does not have an 8-bit word length, the McBSP assumes the word length is eight bits, and LSB-first
ordering is done.
15.2 Clocking and Framing Data
This section explains basic concepts and terminology important for understanding how McBSP data
transfers are timed and delimited.
15.2.1 Clocking
Data is shifted one bit at a time from the DR pin to the RSR(s) or from the XSR(s) to the DX pin. The time
for each bit transfer is controlled by the rising or falling edge of a clock signal.
The receive clock signal (CLKR) controls bit transfers from the DR pin to the RSR(s). The transmit clock
signal (CLKX) controls bit transfers from the XSR(s) to the DX pin. CLKR or CLKX can be derived from a
pin at the boundary of the McBSP or derived from inside the McBSP. The polarities of CLKR and CLKX
are programmable.
In the example in Figure 15-7, the clock signal controls the timing of each bit transfer on the pin.
Figure 15-7. Example - Clock Signal Control of Bit Transfer Timing
Internal
CLK(R/X)
Internal
FS(R/X)
D(R/X)
A1
ÁÁ
ÁÁ
ÁÁ
Á
Á
Á
A0
B7
B6
B5
B4
B3
B2
B1
ÁÁ
ÁÁ
ÁÁ
B0
NOTE: The McBSP cannot operate at a frequency faster than ½ the LSPCLK frequency. When
driving CLKX or CLKR at the pin, choose an appropriate input clock frequency. When using
the internal sample rate generator for CLKX and/or CLKR, choose an appropriate input clock
frequency and divide down value (CLKDV) (i.e., be certain that CLKX or CLKR ≤ LSPCLK/2).
15.2.2 Serial Words
Bits traveling between a shift register (RSR or XSR) and a data pin (DR or DX) are transferred in a group
called a serial word. You can define how many bits are in a word.
936
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Clocking and Framing Data
www.ti.com
Bits coming in on the DR pin are held in RSR until RSR holds a full serial word. Only then is the word
passed to RBR (and ultimately to the DRR).
During transmission, XSR does not accept new data from DXR until a full serial word has been passed
from XSR to the DX pin.
In the example in Figure 15-7, an 8-bit word size was defined (see bits 7 through 0 of word B being
transferred).
15.2.3 Frames and Frame Synchronization
One or more words are transferred in a group called a frame. You can define how many words are in a
frame.
All of the words in a frame are sent in a continuous stream. However, there can be pauses between frame
transfers. The McBSP uses frame-synchronization signals to determine when each frame is
received/transmitted. When a pulse occurs on a frame-synchronization signal, the McBSP begins
receiving/transmitting a frame of data. When the next pulse occurs, the McBSP receives/transmits the next
frame, and so on.
Pulses on the receive frame-synchronization (FSR) signal initiate frame transfers on DR. Pulses on the
transmit frame-sync (FSX) signal initiate frame transfers on DX. FSR or FSX can be derived from a pin at
the boundary of the McBSP or derived from inside the McBSP.
In the example in Figure 15-7, a one-word frame is transferred when a frame-synchronization pulse
occurs.
In McBSP operation, the inactive-to-active transition of the frame-synchronization signal indicates the start
of the next frame. For this reason, the frame-synchronization signal may be high for an arbitrary number of
clock cycles. Only after the signal is recognized to have gone inactive, and then active again, does the
next frame synchronization occur.
15.2.4 Generating Transmit and Receive Interrupts
The McBSP can send receive and transmit interrupts to the CPU to indicate specific events in the McBSP.
To facilitate detection of frame synchronization, these interrupts can be sent in response to framesynchronization pulses. Set the appropriate interrupt mode bits to 10b (for reception, RINTM = 10b; for
transmission, XINTM = 10b).
15.2.4.1 Detecting Frame-Synchronization Pulses, Even in Reset State
Unlike other serial port interrupt modes, this mode can operate while the associated portion of the serial
port is in reset (such as activating RINT when the receiver is in reset). In this case, FSRM/FSXM and
FSRP/FSXP still select the appropriate source and polarity of frame synchronization. Thus, even when the
serial port is in the reset state, these signals are synchronized to the CPU clock and then sent to the CPU
in the form of RINT and XINT at the point at which they feed the receiver and transmitter of the serial port.
Consequently, a new frame-synchronization pulse can be detected, and after this occurs the CPU can
take the serial port out of reset safely.
15.2.5 Ignoring Frame-Synchronization Pulses
The McBSP can be configured to ignore transmit and/or receive frame-synchronization pulses. To have
the receiver or transmitter recognize frame-synchronization pulses, clear the appropriate framesynchronization ignore bit (RFIG = 0 for the receiver, XFIG = 0 for the transmitter). To have the receiver or
transmitter ignore frame-synchronization pulses until the desired frame length or number of words is
reached, set the appropriate frame-synchronization ignore bit (RFIG = 1 for the receiver, XFIG = 1 for the
transmitter). For more details on unexpected frame-synchronization pulses, see one of the following
topics:
• Unexpected Receive Frame-Synchronization Pulse (see Section 15.5.3)
• Unexpected Transmit Frame-Synchronization Pulse (see Section 15.5.5)
You can also use the frame-synchronization ignore function for data packing (for more details, see
Section 15.11.2).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
937
Clocking and Framing Data
www.ti.com
15.2.6 Frame Frequency
The frame frequency is determined by the period between frame-synchronization pulses and is defined as
shown by Example 1.
Equation 1: McBSP Frame Frequency
Frame Frequency +
Clock Frequency
Number of Clock Cycles Between Frame- Sync Pulses
The frame frequency can be increased by decreasing the time between frame-synchronization pulses
(limited only by the number of bits per frame). As the frame transmit frequency increases, the inactivity
period between the data packets for adjacent transfers decreases to zero.
15.2.7 Maximum Frame Frequency
The minimum number of clock cycles between frame synchronization pulses is equal to the number of bits
transferred per frame. The maximum frame frequency is defined as shown by Example 2.
Equation 2: McBSP Maximum Frame Frequency
Maximum Frame Frequency +
Clock Frequency
Number of Bits Per Frame
Figure 15-8 shows the McBSP operating at maximum packet frequency. At maximum packet frequency,
the data bits in consecutive packets are transmitted contiguously with no inactivity between bits.
Figure 15-8. McBSP Operating at Maximum Packet Frequency
CLK(R/X)
FS(R/X)
D(R/X)
A2
A1
A0
B7
B6
B5
B4
B3
B2
B1
B0
C7
C6
If there is a 1-bit data delay as shown in this figure, the frame-synchronization pulse overlaps the last bit
transmitted in the previous frame. Effectively, this permits a continuous stream of data, making framesynchronization pulses redundant. Theoretically, only an initial frame-synchronization pulse is required to
initiate a multipacket transfer.
The McBSP supports operation of the serial port in this fashion by ignoring the successive framesynchronization pulses. Data is clocked into the receiver or clocked out of the transmitter during every
clock cycle.
NOTE: For XDATDLY = 0 (0-bit data delay), the first bit of data is transmitted asynchronously to the
internal transmit clock signal (CLKX). For more details, see Section 15.9.12, Set the
Transmit Data Delay.
15.3 Frame Phases
The McBSP allows you to configure each frame to contain one or two phases. The number of words and
the number of bits per word can be specified differently for each of the two phases of a frame, allowing
greater flexibility in structuring data transfers. For example, you might define a frame as consisting of one
phase containing two words of 16 bits each, followed by a second phase consisting of 10 words of 8 bits
each. This configuration permits you to compose frames for custom applications or, in general, to
maximize the efficiency of data transfers.
938
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Frame Phases
www.ti.com
15.3.1 Number of Phases, Words, and Bits Per Frame
Table 15-2 shows which bit-fields in the receive control registers (RCR1 and RCR2) and in the transmit
control registers (XCR1 and XCR2) determine the number of phases per frame, the number of words per
frame, and number of bits per word for each phase, for the receiver and transmitter. The maximum
number of words per frame is 128 for a single-phase frame and 256 for a dual-phase frame. The number
of bits per word can be 8, 12, 16, 20, 24, or 32 bits.
Table 15-2. Register Bits That Determine the Number of Phases, Words, and Bits
Operation
Number of Phases
Words per Frame Set With
Bits per Word Set With
Reception
1 (RPHASE = 0)
RFRLEN1
RWDLEN1
Reception
2 (RPHASE = 1)
RFRLEN1 and RFRLEN2
RWDLEN1 for phase 1
Transmission
1 (XPHASE = 0)
XFRLEN1
XWDLEN1
Transmission
2 (XPHASE = 1)
XFRLEN1 and XFRLEN2
XWDLEN1 for phase 1
RWDLEN2 for phase 2
XWDLEN2 for phase 2
15.3.2 Single-Phase Frame Example
Figure 15-9 shows an example of a single-phase data frame containing one 8-bit word. Because the
transfer is configured for one data bit delay, the data on the DX and DR pins are available one clock cycle
after FS(R/X) goes active. The figure makes the following assumptions:
• (R/X)PHASE = 0: Single-phase frame
• (R/X)FRLEN1 = 0b: 1 word per frame
• (R/X)WDLEN1 = 000b: 8-bit word length
• (R/X)FRLEN2 and (R/X)WDLEN2 are ignored
• CLK(X/R)P = 0: Receive data clocked on falling edge; transmit data clocked on rising edge
• FS(R/X)P = 0: Active-high frame-synchronization signals
• (R/X)DATDLY = 01b: 1-bit data delay
Figure 15-9. Single-Phase Frame for a McBSP Data Transfer
CLK(R/X)
FS(R/X)
D(R/X) A1
Á
Á
Á
Á
A0
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
B7 B6 B5 B4 B3 B2 B1 B0
15.3.3 Dual-Phase Frame Example
C7 C6 C5
Figure 15-10 shows an example of a frame where the first phase consists of two words of 12 bits each,
followed by a second phase of three words of 8 bits each. The entire bit stream in the frame is contiguous.
There are no gaps either between words or between phases.
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Figure 15-10. Dual-Phase Frame for a McBSP Data Transfer
Phase 1 Word 1
Phase 1 Word 2
Phase 2
Phase 2
Phase 2
Word 1
Word 2
Word 3
CLK(R/X)
FS(R/X)
D(R/X)
A
XRDY gets asserted once per phase. So, if there are 2 phases, XRDY gets asserted twice (once per phase).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
939
Frame Phases
www.ti.com
15.3.4 Implementing the AC97 Standard With a Dual-Phase Frame
Figure 15-11 shows an example of the Audio Codec ‘97 (AC97) standard, which uses the dual-phase
frame feature. Notice that words, not individual bits, are shown on the D(R/X) signal. The first phase (P1)
consists of a single 16-bit word. The second phase (P2) consists of twelve 20-bit words. The phase
configurations are listed after the figure.
Figure 15-11. Implementing the AC97 Standard With a Dual-Phase Frame
P1W1 P2W1
FS(R/X)
P2W2
P2W3
ÁÁ
ÁÁ
ÁÁ
ÁÁ
P2W4
P2W5
P2W6
P2W7
P2W8
P2W9 P2W10 P2W11 P2W12
1-bit data delay
16 bits
20 bits
D(R/X)
•
•
•
•
•
•
•
•
PxWy = Phase x Word y
(R/X)PHASE = 1: Dual-phase frame
(R/X)FRLEN1 = 0000000b: 1 word in phase 1
(R/X)WDLEN1 = 010b: 16 bits per word in phase 1
(R/X)FRLEN2 = 0001011b: 12 words in phase 2
(R/X)WDLEN2 = 011b: 20 bits per word in phase 2
CLKRP/CLKXP= 0: Receive data sampled on falling edge of internal CLKR / transmit data clocked on
rising edge of internal CLKX
FSRP/FSXP = 0: Active-high frame-sync signal
(R/X)DATDLY = 01b: Data delay of 1 clock cycle (1-bit data delay)
Figure 15-12 shows the timing of an AC97-standard data transfer near frame synchronization. In this
figure, individual bits are shown on D(R/X). Specifically, the figure shows the last two bits of phase 2 of
one frame and the first four bits of phase 1 of the next frame. Regardless of the data delay, data transfers
can occur without gaps. The first bit of the second frame (P1W1B15) immediately follows the last bit of the
first frame (P2W12B0). Because a 1-bit data delay has been chosen, the transition on the frame-sync
signal can occur when P2W12B0 is transferred.
Figure 15-12. Timing of an AC97-Standard Data Transfer Near Frame Synchronization
MCLKRA
MFSRA
MDRA
Á
Á
Á
Á
P2W12B1
1-bit data delay
P2W12B0
P1W1B15
P1W1B14
P1W1B13
P1W1B12
PxWyBz = Phase x Word y Bit z
15.3.5 McBSP Reception
This section explains the fundamental process of reception in the McBSP. For details about how to
program the McBSP receiver, see Receiver Configuration in Section 15.8.
Figure 15-13 and Figure 15-14 show how reception occurs in the McBSP. Figure 15-13 shows the
physical path for the data. Figure 15-14 is a timing diagram showing signal activity for one possible
reception scenario. A description of the process follows the figures.
940
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
ÁÁÁÁÁÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁÁÁ
www.ti.com
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
Frame Phases
Figure 15-13. McBSP Reception Physical Data Path
RSR[1,2]
DR
A
RBR[1,2]
DRR[1,2]
To CPU or
DMA controller
RSR[1,2]: Receive shift registers 1 and 2
B
RBR[1,2]: Receive buffer registers 1 and 2
C
DRR[1,2]: Data receive registers 1 and 2
CLKR
FSR
DR
RRDY
A1
Á
Á
Á
Á
Figure 15-14. McBSP Reception Signal Activity
A0
Á
Á
Á
Á
B7
B6
RBR1 to DRR1 copy(A)
A
Expand
or
justify and bit fill
B5
B4
B3
B2
Á
Á
Á
Á
B1 B0
Á
Á
Á
Á
C7 C6
Read from DRR1(A) RBR1 to DRR1 copy(B)
C5
Read from DRR1(b)
CLKR: Internal receive clock
B
FSR: Internal receive frame-synchronization signal
C
DR: Data on DR pin
D
RRDY: Status of receiver ready bit (high is 1)
The following process describes how data travels from the DR pin to the CPU or to the DMA controller:
1. The McBSP waits for a receive frame-synchronization pulse on internal FSR.
2. When the pulse arrives, the McBSP inserts the appropriate data delay that is selected with the
RDATDLY bits of RCR2.
In the preceding timing diagram (Figure 15-14), a 1-bit data delay is selected.
3. The McBSP accepts data bits on the DR pin and shifts them into the receive shift register(s).
If the word length is 16 bits or smaller, only RSR1 is used. If the word length is larger than 16 bits,
RSR2 and RSR1 are used and RSR2 contains the most significant bits. For details on choosing a word
length, see Section 15.8.8, Set the Receive Word Length(s).
4. When a full word is received, the McBSP copies the contents of the receive shift register(s) to the
receive buffer register(s), provided that RBR1 is not full with previous data.
If the word length is 16 bits or smaller, only RBR1 is used. If the word length is larger than 16 bits,
RBR2 and RBR1 are used and RBR2 contains the most significant bits.
5. The McBSP copies the contents of the receive buffer register(s) into the data receive register(s),
provided that DRR1 is not full with previous data. When DRR1 receives new data, the receiver ready
bit (RRDY) is set in SPCR1. This indicates that received data is ready to be read by the CPU or the
DMA controller.
If the word length is 16 bits or smaller, only DRR1 is used. If the word length is larger than 16 bits,
DRR2 and DRR1 are used and DRR2 contains the most significant bits.
If companding is used during the copy (RCOMPAND = 10b or 11b in RCR2), the 8-bit compressed
data in RBR1 is expanded to a left-justified 16-bit value in DRR1. If companding is disabled, the data
copied from RBR[1,2] to DRR[1,2] is justified and bit filled according to the RJUST bits.
6. The CPU or the DMA controller reads the data from the data receive register(s). When DRR1 is read,
RRDY is cleared and the next RBR-to-DRR copy is initiated.
NOTE: If both DRRs are required (word length larger than 16 bits), the CPU or the DMA controller
must read from DRR2 first and then from DRR1. As soon as DRR1 is read, the next RBR-toDRR copy is initiated. If DRR2 is not read first, the data in DRR2 is lost.
When activity is not properly timed, errors can occur. See the following topics for more details:
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
941
Frame Phases
•
•
www.ti.com
Overrun in the Receiver (see Section 15.5.2)
Unexpected Receive Frame-Synchronization Pulse (see Section 15.5.3)
15.3.6 McBSP Transmission
This section explains the fundamental process of transmission in the McBSP. For details about how to
program the McBSP transmitter, see Section 15.9, Transmitter Configuration.
Figure 15-15 and Figure 15-16 show how transmission occurs in the McBSP. Figure 15-15 shows the
physical path for the data. Figure 15-16 is a timing diagram showing signal activity for one possible
transmission scenario. A description of the process follows the figures.
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
Figure 15-15. McBSP Transmission Physical Data Path
XSR[1,2]
DX
A
XSR[1,2]: Transmit shift registers 1 and 2
B
DXR[1,2]: Data transmit registers 1 and 2
CLKX
FSX
DX A1
XRDY
Á
Á
Á
Á
DXR[1,2]
From CPU or
DMA controller
Figure 15-16. McBSP Transmission Signal Activity
A0
ÁÁ
ÁÁ
ÁÁ
ÁÁ
B7
DXR1 to XSR1 copy(B)
A
Compress
or
do not modify
B6
B5
B4
B3
Write to DXR1(C)
B2
B1
Á
Á
Á
Á
B0
Á
Á
Á
Á
C7
DXR1 to XSR1 copy(C)
C6
C5
Write to DXR1
CLKX: Internal transmit clock
B
FSX: Internal transmit frame-synchronization signal
C
DX: Data on DX pin
D
XRDY: Status of transmitter ready bit (high is 1)
1. The CPU or the DMA controller writes data to the data transmit register(s). When DXR1 is loaded, the
transmitter ready bit (XRDY) is cleared in SPCR2 to indicate that the transmitter is not ready for new
data.
If the word length is 16 bits or smaller, only DXR1 is used. If the word length is larger than 16 bits,
DXR2 and DXR1 are used and DXR2 contains the most significant bits. For details on choosing a word
length, see Section 15.9.8, Set the Transmit Word Length(s).
NOTE: If both DXRs are needed (word length larger than 16 bits), the CPU or the DMA controller
must load DXR2 first and then load DXR1. As soon as DXR1 is loaded, the contents of both
DXRs are copied to the transmit shift registers (XSRs), as described in the next step. If
DXR2 is not loaded first, the previous content of DXR2 is passed to the XSR2.
2. When new data arrives in DXR1, the McBSP copies the content of the data transmit register(s) to the
transmit shift register(s). In addition, the transmit ready bit (XRDY) is set. This indicates that the
transmitter is ready to accept new data from the CPU or the DMA controller.
If the word length is 16 bits or smaller, only XSR1 is used. If the word length is larger than 16 bits,
XSR2 and XSR1 are used and XSR2 contains the most significant bits.
If companding is used during the transfer (XCOMPAND = 10b or 11b in XCR2), the McBSP
compresses the 16-bit data in DXR1 to 8-bit data in the μ-law or A-law format in XSR1. If companding
is disabled, the McBSP passes data from the DXR(s) to the XSR(s) without modification.
3. The McBSP waits for a transmit frame-synchronization pulse on internal FSX.
4. When the pulse arrives, the McBSP inserts the appropriate data delay that is selected with the
XDATDLY bits of XCR2.
942
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Frame Phases
www.ti.com
In the preceding timing diagram (Figure 15-16), a 1-bit data delay is selected.
5. The McBSP shifts data bits from the transmit shift register(s) to the DX pin.
When activity is not properly timed, errors can occur. See the following topics for more details:
• Overwrite in the Transmitter ( Section 15.5.4)
• Underflow in the Transmitter (Section 15.5.4.3)
• Unexpected Transmit Frame-Synchronization Pulse (Section 15.5.5)
15.3.7 Interrupts and DMA Events Generated by a McBSP
The McBSP sends notification of important events to the CPU and the DMA controller via the internal
signals shown in Table 15-3.
Table 15-3. Interrupts and DMA Events Generated by a McBSP
Internal Signal
Description
RINT
Receive interrupt
The McBSP can send a receive interrupt request to CPU based upon a selected condition in the receiver of
the McBSP (a condition selected by the RINTM bits of SPCR1).
XINT
Transmit interrupt
The McBSP can send a transmit interrupt request to CPU based upon a selected condition in the transmitter
of the McBSP (a condition selected by the XINTM bits of SPCR2).
REVT
Receive synchronization event
An REVT signal is sent to the DMA when data has been received in the data receive registers (DRRs).
XEVT
Transmit synchronization event
An XEVT signal is sent to the DMA when the data transmit registers (DXRs) are ready to accept the next
serial word for transmission.
15.4 McBSP Sample Rate Generator
Each McBSP contains a sample rate generator (SRG) that can be programmed to generate an internal
data clock (CLKG) and an internal frame-synchronization signal (FSG). CLKG can be used for bit shifting
on the data receive (DR) pin and/or the data transmit (DX) pin. FSG can be used to initiate frame transfers
on DR and/or DX. Figure 15-17 is a conceptual block diagram of the sample rate generator.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
943
McBSP Sample Rate Generator
www.ti.com
15.4.1 Block Diagram
Figure 15-17. Conceptual Block Diagram of the Sample Rate Generator
MCLKX pin
1
CLKXP
SRGR1
[CLKGDV]
MCLKR pin
SRGR2
[FPER]
SRGR1
[FWID]
÷
Frame
pulse
0
CLKRP
1
CLKSRG
SRGR2 [CLKSM]
/(CLKGDV + 1)
FSG
0
LSPCLK
1
Reserved
0
CLKG
PCR
[SCLKSME]
GSYNC
Frame pulse
detection
and clock
synchronization
FSR
The source clock for the sample rate generator (labeled CLKSRG in the diagram) can be supplied by the
LSPCLK, or by an external pin (MCLKX or MCLKR). The source is selected with the SCLKME bit of PCR
and the CLKSM bit of SRGR2. If a pin is used, the polarity of the incoming signal can be inverted with the
appropriate polarity bit (CLKXP of PCR or CLKRP of PCR).
The sample rate generator has a three-stage clock divider that gives CLKG and FSG programmability.
The three stages provide:
• Clock divide-down. The source clock is divided according to the CLKGDV bits of SRGR1 to produce
CLKG.
• Frame period divide-down. CLKG is divided according to the FPER bits of SRGR2 to control the period
from the start of a frame-pulse to the start of the next pulse.
• Frame-synchronization pulse-width countdown. CLKG cycles are counted according to the FWID bits
of SRGR1 to control the width of each frame-synchronization pulse.
NOTE: The McBSP cannot operate at a frequency faster than ½ the source clock frequency.
Choose an input clock frequency and a CLKGDV value such that CLKG is less than or equal
to ½ the source clock frequency.
In addition to the three-stage clock divider, the sample rate generator has a frame-synchronization pulse
detection and clock synchronization module that allows synchronization of the clock divide down with an
incoming frame-synchronization pulse on the FSR pin. This feature is enabled or disabled with the
GSYNC bit of SRGR2.
For details on getting the sample rate generator ready for operation, see Section 15.4.4, Reset and
Initialization Procedure.
944
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Sample Rate Generator
www.ti.com
15.4.1.1 Clock Generation in the Sample Rate Generator
The sample rate generator can produce a clock signal (CLKG) for use by the receiver, the transmitter, or
both. Use of the sample rate generator to drive clocking is controlled by the clock mode bits (CLKRM and
CLKXM) in the pin control register (PCR). When a clock mode bit is set to 1 (CLKRM = 1 for reception,
CLKXM = 1 for transmission), the corresponding data clock (CLKR for reception, CLKX for transmission)
is driven by the internal sample rate generator output clock (CLKG).
The effects of CLKRM = 1 and CLKXM = 1 on the McBSP are partially affected by the use of the digital
loopback mode and the clock stop (SPI) mode, respectively, as described in Table 15-4. The digital
loopback mode (described in Section 15.8.4) is selected with the DLB bit of SPCR1. The clock stop mode
(described in Section 15.7.2) is selected with the CLKSTP bits of SPCR1.
When using the sample rate generator as a clock source, make sure the sample rate generator is enabled
(GRST = 1).
Table 15-4. Effects of DLB and CLKSTP on Clock Modes
Mode Bit Settings
Effect
CLKRM = 1
DLB = 0
(Digital loopback mode disabled)
CLKR is an output pin driven by the sample rate generator output clock
(CLKG).
DLB = 1
(Digital loopback mode enabled)
CLKR is an output pin driven by internal CLKX. The source for CLKX
depends on the CLKXM bit.
CLKSTP = 00b or 01b
(Clock stop (SPI) mode disabled)
CLKX is an output pin driven by the sample rate generator output clock
(CLKG).
CLKSTP = 10b or 11b
(Clock stop (SPI) mode enabled)
The McBSP is a master in an SPI system. Internal CLKX drives internal
CLKR and the shift clocks of any SPI-compliant slave devices in the
system. CLKX is driven by the internal sample rate generator.
CLKXM = 1
15.4.1.2 Choosing an Input Clock
The sample rate generator must be driven by an input clock signal from one of the three sources
selectable with the SCLKME bit of PCR and the CLKSM bit of SRGR2 (see Table 15-5). When CLKSM =
1, the minimum divide down value in CLKGDV bits is 1. CLKGDV is described in Section 15.4.1.4.
Table 15-5. Choosing an Input Clock for the Sample Rate Generator with the
SCLKME and CLKSM Bits
SCLKME
CLKSM
0
0
Input Clock for Sample Rate Generator
Reserved
0
1
LSPCLK
1
0
Signal on MCLKR pin
1
1
Signal on MCLKX pin
15.4.1.3 Choosing a Polarity for the Input Clock
As shown in Figure 15-18, when the input clock is received from a pin, you can choose the polarity of the
input clock. The rising edge of CLKSRG generates CLKG and FSG, but you can determine which edge of
the input clock causes a rising edge on CLKSRG. The polarity options and their effects are described in
Table 15-6.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
945
McBSP Sample Rate Generator
www.ti.com
Figure 15-18. Possible Inputs to the Sample Rate Generator and the Polarity Bits
MCLKX pin
1
CLKXP
MCLKR pin
0
CLKRP
1
CLKSRG
To clock dividers
CLKSM
0
LSPCLK
1
SCLKME
Reserved
0
Table 15-6. Polarity Options for the Input to the Sample Rate Generator
Input Clock
Polarity Option
Effect
LSPCLK
Always positive polarity
Rising edge of CPU clock generates transitions on CLKG and FSG.
Signal on MCLKR pin
CLKRP = 0 in PCR
Falling edge on MCLKR pin generates transitions on CLKG and FSG.
CLKRP = 1 in PCR
Rising edge on MCLKR pin generates transitions on CLKG and FSG.
CLKXP = 0 in PCR
Rising edge on MCLKX pin generates transitions on CLKG and FSG.
CLKXP = 1 in PCR
Falling edge on MCLKX pin generates transitions on CLKG and FSG.
Signal on MCLKX pin
15.4.1.4 Choosing a Frequency for the Output Clock (CLKG)
The input clock (LSPCLK or external clock) can be divided down by a programmable value to drive CLKG.
Regardless of the source to the sample rate generator, the rising edge of CLKSRG (see Figure 15-17)
generates CLKG and FSG.
The first divider stage of the sample rate generator creates the output clock from the input clock. This
divider stage uses a counter that is preloaded with the divide down value in the CLKGDV bits of SRGR1.
The output of this stage is the data clock (CLKG). CLKG has the frequency represented by Example 3.
Equation 3: CLKG Frequency
CLKG frequency +
Input clock frequency
(CLKGDV ) 1)
Thus, the input clock frequency is divided by a value between 1 and 256. When CLKGDV is odd or equal
to 0, the CLKG duty cycle is 50%. When CLKGDV is an even value, 2p, representing an odd divide down,
the high-state duration is p+1 cycles and the low-state duration is p cycles.
15.4.1.5 Keeping CLKG Synchronized to External MCLKR
When the MCLKR pin is used to drive the sample rate generator (see Section 15.4.1.2), the GSYNC bit in
SRGR2 and the FSR pin can be used to configure the timing of the output clock (CLKG) relative to the
input clock. Note that this feature is available only when the MCLKR pin is used to feed the external clock.
GSYNC = 1 ensures that the McBSP and an external device are dividing down the input clock with the
same phase relationship. If GSYNC = 1, an inactive-to-active transition on the FSR pin triggers a
resynchronization of CLKG and generation of FSG.
For more details about synchronization, see Section 15.4.3.
946
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Sample Rate Generator
www.ti.com
15.4.2 Frame Synchronization Generation in the Sample Rate Generator
The sample rate generator can produce a frame-synchronization signal (FSG) for use by the receiver, the
transmitter, or both.
If you want the receiver to use FSG for frame synchronization, make sure FSRM = 1. (When FSRM = 0,
receive frame synchronization is supplied via the FSR pin.)
If you want the transmitter to use FSG for frame synchronization, you must set:
• FSXM = 1 in PCR: This indicates that transmit frame synchronization is supplied by the McBSP itself
rather than from the FSX pin.
• FSGM = 1 in SRGR2: This indicates that when FSXM = 1, transmit frame synchronization is supplied
by the sample rate generator. (When FSGM = 0 and FSXM = 1, the transmitter uses framesynchronization pulses generated every time data is transferred from DXR[1,2] to XSR[1,2].)
In either case, the sample rate generator must be enabled (GRST = 1) and the frame-synchronization
logic in the sample rate generator must be enabled (FRST = 0).
15.4.2.1 Choosing the Width of the Frame-Synchronization Pulse on FSG
Each pulse on FSG has a programmable width. You program the FWID bits of SRGR1, and the resulting
pulse width is (FWID + 1) CLKG cycles, where CLKG is the output clock of the sample rate generator.
15.4.2.2 Controlling the Period Between the Starting Edges of Frame-Synchronization Pulses on FSG
You can control the amount of time from the starting edge of one FSG pulse to the starting edge of the
next FSG pulse. This period is controlled in one of two ways, depending on the configuration of the
sample rate generator:
• If the sample rate generator is using an external input clock and GSYNC = 1 in SRGR2, FSG pulses in
response to an inactive-to-active transition on the FSR pin. Thus, the frame-synchronization period is
controlled by an external device.
• Otherwise, you program the FPER bits of SRGR2, and the resulting frame-synchronization period is
(FPER + 1) CLKG cycles, where CLKG is the output clock of the sample rate generator.
15.4.2.3 Keeping FSG Synchronized to an External Clock
When an external signal is selected to drive the sample rate generator (see Section 15.4.1.2 on page
Section 15.4.1.2), the GSYNC bit of SRGR2 and the FSR pin can be used to configure the timing of FSG
pulses.
GSYNC = 1 ensures that the McBSP and an external device are dividing down the input clock with the
same phase relationship. If GSYNC = 1, an inactive-to-active transition on the FSR pin triggers a
resynchronization of CLKG and generation of FSG.
See Section 15.4.3 for more details about synchronization.
15.4.3 Synchronizing Sample Rate Generator Outputs to an External Clock
The sample rate generator can produce a clock signal (CLKG) and a frame-synchronization signal (FSG)
based on an input clock signal that is either the CPU clock signal or a signal at the MCLKR or MCLKX pin.
When an external clock is selected to drive the sample rate generator, the GSYNC bit of SRGR2 and the
FSR pin can be used to control the timing of CLKG and the pulsing of FSG relative to the chosen input
clock.
Make GSYNC = 1 when you want the McBSP and an external device to divide down the input clock with
the same phase relationship. If GSYNC = 1:
• An inactive-to-active transition on the FSR pin triggers a resynchronization of CLKG and a pulsing of
FSG.
• CLKG always begins with a high state after synchronization.
• FSR is always detected at the same edge of the input clock signal that generates CLKG, no matter
how long the FSR pulse is.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
947
McBSP Sample Rate Generator
•
www.ti.com
The FPER bits of SRGR2 are ignored because the frame-synchronization period on FSG is determined
by the arrival of the next frame-synchronization pulse on the FSR pin.
If GSYNC = 0, CLKG runs freely and is not resynchronized, and the frame-synchronization period on FSG
is determined by FPER.
15.4.3.1 Operating the Transmitter Synchronously with the Receiver
When GSYNC = 1, the transmitter can operate synchronously with the receiver, provided that:
• FSX is programmed to be driven by FSG (FSGM = 1 in SRGR2 and FSXM = 1 in PCR). If the input
FSR has appropriate timing so that it can be sampled by the falling edge of CLKG, it can be used,
instead, by setting FSXM = 0 and connecting FSR to FSX externally.
• The sample rate generator clock drives the transmit and receive clocking (CLKRM = CLKXM = 1 in
PCR).
15.4.3.2 Synchronization Examples
Figure 15-19 and Figure 15-20 show the clock and frame-synchronization operation with various polarities
of CLKR and FSR. These figures assume FWID = 0 in SRGR1, for an FSG pulse that is one CLKG cycle
wide. The FPER bits of SRGR2 are not programmed; the period from the start of a frame-synchronization
pulse to the start of the next pulse is determined by the arrival of the next inactive-to-active transition on
the FSR pin. Each of the figures shows what happens to CLKG when it is initially synchronized and
GSYNC = 1, and when it is not initially synchronized and GSYNC = 1. The second figure has a slower
CLKG frequency (it has a larger divide-down value in the CLKGDV bits of SRGR1).
Figure 15-19. CLKG Synchronization and FSG Generation When GSYNC = 1 and CLKGDV = 1
CLKR
CLKR
FSR external
(FSRP=0)
FSR external
(FSRP=1)
CLKG
(No need to
resynchronize)
CLKG
(Needs resynchronization)
FSG
948
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Sample Rate Generator
www.ti.com
Figure 15-20. CLKG Synchronization and FSG Generation When GSYNC = 1 and CLKGDV = 3
CLKR
CLKR
FSR external
(FSRP=0)
FSR external
(FSRP=1)
CLKG
(No need to
resynchronize)
CLKG
(Needs resynchronization)
FSG
15.4.4 Reset and Initialization Procedure for the Sample Rate Generator
To reset and initialize the sample rate generator:
Step 1. Place the McBSP/sample rate generator in reset.
During a DSP reset, the sample rate generator, the receiver, and the transmitter reset bits (GRST,
RRST, and XRST) are automatically forced to 0. Otherwise, during normal operation, the sample rate
generator can be reset by making GRST = 0 in SPCR2, provided that CLKG and/or FSG is not used
by any portion of the McBSP. Depending on your system you may also want to reset the receiver
(RRST = 0 in SPCR1) and reset the transmitter (XRST = 0 in SPCR2).
If GRST = 0 due to a device reset, CLKG is driven by the CPU clock divided by 2, and FSG is driven
inactive-low. If GRST = 0 due to program code, CLKG and FSG are driven low (inactive).
Step 2. Program the registers that affect the sample rate generator.
Program the sample rate generator registers (SRGR1 and SRGR2) as required for your application. If
necessary, other control registers can be loaded with desired values, provided the respective portion of
the McBSP (the receiver or transmitter) is in reset.
After the sample rate generator registers are programmed, wait 2 CLKSRG cycles. This ensures
proper synchronization internally.
Step 3. Enable the sample rate generator (take it out of reset).
In SPCR2, make GRST = 1 to enable the sample rate generator.
After the sample rate generator is enabled, wait two CLKG cycles for the sample rate generator logic to
stabilize.
On the next rising edge of CLKSRG, CLKG transitions to 1 and starts clocking with a frequency equal
to Example 4.
Table 15-7. Input Clock Selection for Sample Rate Generator
SCLKME
CLKSM
0
0
Reserved
0
1
LSPCLK
1
0
Signal on MCLKR pin
1
1
Signal on MCLKX pin
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Input Clock for Sample Rate Generator
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
949
McBSP Exception/Error Conditions
www.ti.com
Step 4. If necessary, enable the receiver and/or the transmitter.
If necessary, remove the receiver and/or transmitter from reset by setting RRST and/or XRST = 1.
Step 5. If necessary, enable the frame-synchronization logic of the sample rate generator.
After the required data acquisition setup is done (DXR[1,2] is loaded with data), set GRST = 1 in
SPCR2 if an internally generated frame-synchronization pulse is required. FSG is generated with an
active-high edge after the programmed number of CLKG clocks (FPER + 1) have elapsed.
Equation 4: CLKG Frequency
CLKG frequency +
Input clock frequency
(CLKGDV ) 1)
where the input clock is selected with the SCLKME bit of PCR and the CLKSM bit of SRGR2 in one of the
configurations shown in Table 15-7.
15.5 McBSP Exception/Error Conditions
This section describes exception/error conditions and how to handle them.
15.5.1 Types of Errors
There are five serial port events that can constitute a system error:
• Receiver overrun (RFULL = 1)
This occurs when DRR1 has not been read since the last RBR-to-DRR copy. Consequently, the
receiver does not copy a new word from the RBR(s) to the DRR(s) and the RSR(s) are now full with
another new word shifted in from DR. Therefore, RFULL = 1 indicates an error condition wherein any
new data that can arrive at this time on DR replaces the contents of the RSR(s), and the previous word
is lost. The RSRs continue to be overwritten as long as new data arrives on DR and DRR1 is not read.
For more details about overrun in the receiver, see Section 15.5.2.
• Unexpected receive frame-synchronization pulse (RSYNCERR = 1)
This occurs during reception when RFIG = 0 and an unexpected frame-synchronization pulse occurs.
An unexpected frame-synchronization pulse is one that begins the next frame transfer before all the
bits of the current frame have been received. Such a pulse causes data reception to abort and restart.
If new data has been copied into the RBR(s) from the RSR(s) since the last RBR-to-DRR copy, this
new data in the RBR(s) is lost. This is because no RBR-to-DRR copy occurs; the reception has been
restarted. For more details about receive frame-synchronization errors, see Section 15.5.3.
• Transmitter data overwrite
This occurs when the CPU or DMA controller overwrites data in the DXR(s) before the data is copied
to the XSR(s). The overwritten data never reaches the DX pin. For more details about overwrite in the
transmitter, see Section 15.5.4.
• Transmitter underflow (XEMPTY = 0)
If a new frame-synchronization signal arrives before new data is loaded into DXR1, the previous data
in the DXR(s) is sent again. This procedure continues for every new frame-synchronization pulse that
arrives until DXR1 is loaded with new data. For more details about underflow in the transmitter, see
Section 15.5.4.3.
• Unexpected transmit frame-synchronization pulse (XSYNCERR = 1)
This occurs during transmission when XFIG = 0 and an unexpected frame-synchronization pulse
occurs. An unexpected frame-synchronization pulse is one that begins the next frame transfer before
all the bits of the current frame have been transferred. Such a pulse causes the current data
transmission to abort and restart. If new data has been written to the DXR(s) since the last DXR-toXSR copy, the current value in the XSR(s) is lost. For more details about transmit framesynchronization errors, see Section 15.5.5.
15.5.2 Overrun in the Receiver
RFULL = 1 in SPCR1 indicates that the receiver has experienced overrun and is in an error condition.
RFULL is set when all of the following conditions are met:
950
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Exception/Error Conditions
www.ti.com
1. DRR1 has not been read since the last RBR-to-DRR copy (RRDY = 1).
2. RBR1 is full and an RBR-to-DRR copy has not occurred.
3. RSR1 is full and an RSR1-to-RBR copy has not occurred.
As described in the Section 15.3.5, McBSP Reception, data arriving on DR is continuously shifted into
RSR1 (for word length of 16 bits or smaller) or RSR2 and RSR1 (for word length larger than 16 bits).
Once a complete word is shifted into the RSR(s), an RSR-to-RBR copy can occur only if the previous data
in RBR1 has been copied to DRR1. The RRDY bit is set when new data arrives in DRR1 and is cleared
when that data is read from DRR1. Until RRDY = 0, the next RBR-to-DRR copy does not take place, and
the data is held in the RSR(s). New data arriving on the DR pin is shifted into RSR(s), and the previous
content of the RSR(s) is lost.
You can prevent the loss of data if DRR1 is read no later than 2.5 cycles before the end of the third word
is shifted into the RSR1.
NOTE: If both DRRs are needed (word length larger than 16 bits), the CPU or the DMA controller
must read from DRR2 first and then from DRR1. As soon as DRR1 is read, the next RBR-toDRR copy is initiated. If DRR2 is not read first, the data in DRR2 is lost.
After the receiver starts running from reset, a minimum of three words must be received before RFULL is
set. Either of the following events clears the RFULL bit and allows subsequent transfers to be read
properly:
• The CPU or DMA controller reads DRR1.
• The receiver is reset individually (RRST = 0) or as part of a device reset.
Another frame-synchronization pulse is required to restart the receiver.
15.5.2.1 Example of Overrun Condition
Figure 15-21 shows the receive overrun condition. Because serial word A is not read from DRR1 before
serial word B arrives in RBR1, B is not transferred to DRR1 yet. Another new word ©) arrives and RSR1 is
full with this data. DRR1 is finally read, but not earlier than 2.5 cycles before the end of word C. Therefore,
new data (D) overwrites word C in RSR1. If DRR1 is not read in time, the next word can overwrite D.
CLKR
FSR
DR A1
RRDY
RFULL
ÁÁ
Á
Á
ÁÁ
ÁÁ
A0
Figure 15-21. Overrun in the McBSP Receiver
ÁÁ
Á
Á
ÁÁ
ÁÁ
B7 B6 B5 B4 B3 B2 B1 B0
RBR1 to DRR1 copy(A)
No read from DRR1(A)
ÁÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁÁ
C7 C6 C5 C4 C3 C2 C1 C0
D7
No RSR1 to RBR1 copy(C)
No RBR1 to DRR1 copy(B)
No read from DRR1(A)
15.5.2.2 Example of Preventing Overrun Condition
Figure 15-22 shows the case where RFULL is set, but the overrun condition is prevented by a read from
DRR1 at least 2.5 cycles before the next serial word ©) is completely shifted into RSR1. This ensures that
an RBR1-to-DRR1 copy of word B occurs before receiver attempts to transfer word C from RSR1 to
RBR1.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
951
McBSP Exception/Error Conditions
www.ti.com
Figure 15-22. Overrun Prevented in the McBSP Receiver
CLKR
FSR
DR A1
RRDY
RFULL
ÁÁ
Á
Á
ÁÁ
A0
B7 B6 B5 B4 B3 B2
ÁÁ
Á
Á
ÁÁ
B1 B0
RBR1 to DRR1 copy(A)
No read From DRR1(A)
Á
Á
Á
C7 C6 C5 C4 C3 C2 C1 C0
RBR1 to DRR1(B)
No RBR1 to DRR1 copy(B)
Read from DRR1(A)
15.5.3 Unexpected Receive Frame-Synchronization Pulse
Section 15.5.3.1 shows how the McBSP responds to any receive frame-synchronization pulses, including
an unexpected pulse. Section 15.5.3.2 and Section 15.5.3.3 show an examples of a frame-synchronization
error and an example of how to prevent such an error, respectively.
15.5.3.1 Possible Responses to Receive Frame-Synchronization Pulses
Figure 15-23 shows the decision tree that the receiver uses to handle all incoming frame-synchronization
pulses. The figure assumes that the receiver has been started (RRST = 1 in SPCR1). Case 3 in the figure
is the case in which an error occurs.
ÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁ
Figure 15-23. Possible Responses to Receive Frame-Synchronization Pulses
Receive frame-sync
pulse occurs.
Unexpected
frame-sync
pulse
?
No
Case 2:
Normal reception.
Start receiving data.
Yes
RFIG=1
?
No
Case 3:
Without frame ignore,
abort reception.
Set RSYNCERR.
Start next reception
immediately.
Previous word is lost.
Yes
Case 1:
With frame ignore,
ignore frame pulse.
Receiver continues
running.
Any one of three cases can occur:
• Case 1: Unexpected internal FSR pulses with RFIG = 1 in RCR2. Receive frame-synchronization
pulses are ignored, and the reception continues.
• Case 2: Normal serial port reception. Reception continues normally because the frame-synchronization
952
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Exception/Error Conditions
www.ti.com
•
pulse is not unexpected. There are three possible reasons why a receive operation might not be in
progress when the pulse occurs:
– The FSR pulse is the first after the receiver is enabled (RRST = 1 in SPCR1).
– The FSR pulse is the first after DRR[1,2] is read, clearing a receiver full (RFULL = 1 in SPCR1)
condition.
– The serial port is in the interpacket intervals. The programmed data delay for reception
(programmed with the RDATDLY bits in RCR2) may start during these interpacket intervals for the
first bit of the next word to be received. Thus, at maximum frame frequency, frame synchronization
can still be received 0 to 2 clock cycles before the first bit of the synchronized frame.
Case 3: Unexpected receive frame synchronization with RFIG = 0 (frame-synchronization pulses not
ignored). Unexpected frame-synchronization pulses can originate from an external source or from the
internal sample rate generator.
If a frame-synchronization pulse starts the transfer of a new frame before the current frame is fully
received, this pulse is treated as an unexpected frame-synchronization pulse, and the receiver sets the
receive frame-synchronization error bit (RSYNCERR) in SPCR1. RSYNCERR can be cleared only by a
receiver reset or by a write of 0 to this bit.
If you want the McBSP to notify the CPU of receive frame-synchronization errors, you can set a special
receive interrupt mode with the RINTM bits of SPCR1. When RINTM = 11b, the McBSP sends a
receive interrupt (RINT) request to the CPU each time that RSYNCERR is set.
15.5.3.2 Example of Unexpected Receive Frame-Synchronization Pulse
Figure 15-24 shows an unexpected receive frame-synchronization pulse during normal operation of the
serial port, with time intervals between data packets. When the unexpected frame-synchronization pulse
occurs, the RSYNCERR bit is set, the reception of data B is aborted, and the reception of data C begins.
In addition, if RINTM = 11b, the McBSP sends a receive interrupt (RINT) request to the CPU.
Figure 15-24. An Unexpected Frame-Synchronization Pulse During a McBSP Reception
CLKR
FSR
DR A1
Á
Á
Á
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
A0
Unexpected frame synchronization
Á
Á
Á
Á
B7 B6 B5 B4 C7 C6 C5 C4 C3 C2 C1 C0
RBR1 to DRR1(B)
RRDY
RBR1 to DRR1 copy(A)
Read from DRR1(A)
RBR1 to DRR1 copy(C)
Read from DRR1(C)
RSYNCERR
15.5.3.3 Preventing Unexpected Receive Frame-Synchronization Pulses
Each frame transfer can be delayed by 0, 1, or 2 MCLKR cycles, depending on the value in the RDATDLY
bits of RCR2. For each possible data delay, Figure 15-25 shows when a new frame-synchronization pulse
on FSR can safely occur relative to the last bit of the current frame.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
953
McBSP Exception/Error Conditions
www.ti.com
Figure 15-25. Proper Positioning of Frame-Synchronization Pulses
For 2-bit delay:
Next frame-synchronization
pulse here or later is OK.
For 1-bit delay:
Next frame-synchronization
pulse here or later is OK.
For 0-bit delay:
Next frame-synchronization
pulse here or later is OK.
CLKR/CLKX
FSR/FSX
DR/DX
Last bit of
current frame
Earliest possible
time to begin transfer
of next frame
15.5.4 Overwrite in the Transmitter
As described in the section on McBSP transmission (page Section 15.3.6), the transmitter must copy the
data previously written to the DXR(s) by the CPU or DMA controller into the XSR(s) and then shift each bit
from the XSR(s) to the DX pin. If new data is written to the DXR(s) before the previous data is copied to
the XSR(s), the previous data in the DXR(s) is overwritten and thus lost.
15.5.4.1 Example of Overwrite Condition
Figure 15-26 shows what happens if the data in DXR1 is overwritten before being transmitted. Initially,
DXR1 is loaded with data C. A subsequent write to DXR1 overwrites C with D before C is copied to XSR1.
Thus, C is never transmitted on DX.
Figure 15-26. Data in the McBSP Transmitter Overwritten and Thus Not Transmitted
CLKX
FSX
DX A1
XRDY
Á
Á
Á
Á
Á
Á
Á
Á
A0
B7
B6
B5
B4
B3
Write to DXR1(C) Write to DXR1(D)
B2
B1
Á
Á
Á
Á
B0
DXR1 to XSR1 Copy(D)
Á
Á
Á
Á
D7
D6
D5
Write to DXR1(E)
15.5.4.2 Preventing Overwrites
You can prevent CPU overwrites by making the CPU:
• Poll for XRDY = 1 in SPCR2 before writing to the DXR(s). XRDY is set when data is copied from DXR1
to XSR1 and is cleared when new data is written to DXR1.
954
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Exception/Error Conditions
www.ti.com
•
Wait for a transmit interrupt (XINT) before writing to the DXR(s). When XINTM = 00b in SPCR2, the
transmitter sends XINT to the CPU each time XRDY is set.
You can prevent DMA overwrites by synchronizing DMA transfers to the transmit synchronization event
XEVT. The transmitter sends an XEVT signal each time XRDY is set.
15.5.4.3 Underflow in the Transmitter
The McBSP indicates a transmitter empty (or underflow) condition by clearing the XEMPTY bit in SPCR2.
Either of the following events activates XEMPTY (XEMPTY = 0):
• DXR1 has not been loaded since the last DXR-to-XSR copy, and all bits of the data word in the XSR(s)
have been shifted out on the DX pin.
• The transmitter is reset (by forcing XRST = 0 in SPCR2, or by a device reset) and is then restarted.
In the underflow condition, the transmitter continues to transmit the old data that is in the DXR(s) for every
new transmit frame-synchronization signal until a new value is loaded into DXR1 by the CPU or the DMA
controller.
NOTE: If both DXRs are needed (word length larger than 16 bits), the CPU or the DMA controller
must load DXR2 first and then load DXR1. As soon as DXR1 is loaded, the contents of both
DXRs are copied to the transmit shift registers (XSRs). If DXR2 is not loaded first, the
previous content of DXR2 is passed to the XSR2.
XEMPTY is deactivated (XEMPTY = 1) when a new word in DXR1 is transferred to XSR1. If FSXM = 1 in
PCR and FSGM = 0 in SRGR2, the transmitter generates a single internal FSX pulse in response to a
DXR-to-XSR copy. Otherwise, the transmitter waits for the next frame-synchronization pulse before
sending out the next frame on DX.
When the transmitter is taken out of reset (XRST = 1), it is in a transmitter ready (XRDY = 1 in SPCR2)
and transmitter empty (XEMPTY = 0) state. If DXR1 is loaded by the CPU or the DMA controller before
internal FSX goes active high, a valid DXR-to-XSR transfer occurs. This allows for the first word of the first
frame to be valid even before the transmit frame-synchronization pulse is generated or detected.
Alternatively, if a transmit frame-synchronization pulse is detected before DXR1 is loaded, zeros are
output on DX.
15.5.4.3.1 Example of the Underflow Condition
Figure 15-27 shows an underflow condition. After B is transmitted, DXR1 is not reloaded before the
subsequent frame-synchronization pulse. Thus, B is again transmitted on DX.
Figure 15-27. Underflow During McBSP Transmission
CLKX
FSX
DX A1
XRDY
Á
Á
Á
Á
Á
Á
A0
B7
B6
B5
B4
B3
B2
B1
Á
Á
Á
B0
DXR1 to XSR1 copy(B)
Á
Á
Á
B7
B6
B5
Write to DXR1(C)
XEMPTY_
15.5.4.3.2 Example of Preventing Underflow Condition
Figure 15-28 shows the case of writing to DXR1 just before an underflow condition would otherwise occur.
After B is transmitted, C is written to DXR1 before the next frame-synchronization pulse. As a result, there
is no underflow; B is not transmitted twice.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
955
McBSP Exception/Error Conditions
www.ti.com
Figure 15-28. Underflow Prevented in the McBSP Transmitter
CLKX
FSX
DX A1
XRDY
Á
Á
Á
A0
Á
Á
Á
B7
B6
B5
B4
DXR1 to XSR1 copy
B3
B2
B1
Á
Á
Á
Á
Á
Á
B0
C7 C6
Write to DXR1(C)
C5
DXR1 to XSR1 copy(C)
XEMPTY_
15.5.5 Unexpected Transmit Frame-Synchronization Pulse
Section 15.5.5.1 shows how the McBSP responds to any transmit frame-synchronization pulses, including
an unexpected pulse. Section 15.5.5.2 and Section 15.5.5.3 show examples of a frame-synchronization
error and an example of how to prevent such an error, respectively.
15.5.5.1 Possible Responses to Transmit Frame-Synchronization Pulses
Figure 15-29 shows the decision tree that the transmitter uses to handle all incoming framesynchronization pulses. The figure assumes that the transmitter has been started (XRST = 1 in SPCR2).
Case 3 in the figure is the case in which an error occurs.
Figure 15-29. Possible Responses to Transmit Frame-Synchronization Pulses
Transmit frame-sync
pulse occurs.
Unexpected
frame-sync
pulse
?
No
Case 2:
Normal transmission.
Start new transmit.
Yes
XFIG=1
?
No
Case 3:
Without frame ignore
abort transfer.
Set XSYNCERR.
Restart current
transfer.
Yes
Case 1:
With frame ignore
ignore frame pulse.
Transmit stays
running.
Any one of three cases can occur:
• Case 1: Unexpected internal FSX pulses with XFIG = 1 in XCR2. Transmit frame-synchronization
pulses are ignored, and the transmission continues.
• Case 2: Normal serial port transmission. Transmission continues normally because the frame956
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Exception/Error Conditions
www.ti.com
•
synchronization pulse is not unexpected. There are two possible reasons why a transmit operations
might not be in progress when the pulse occurs:
This FSX pulse is the first after the transmitter is enabled (XRST = 1).
The serial port is in the interpacket intervals. The programmed data delay for transmission
(programmed with the XDATDLY bits of XCR2) may start during these interpacket intervals before the
first bit of the previous word is transmitted. Thus, at maximum packet frequency, frame synchronization
can still be received 0 to 2 clock cycles before the first bit of the synchronized frame.
Case 3: Unexpected transmit frame synchronization with XFIG = 0 (frame-synchronization pulses not
ignored). Unexpected frame-synchronization pulses can originate from an external source or from the
internal sample rate generator.
If a frame-synchronization pulse starts the transfer of a new frame before the current frame is fully
transmitted, this pulse is treated as an unexpected frame-synchronization pulse, and the transmitter
sets the transmit frame-synchronization error bit (XSYNCERR) in SPCR2. XSYNCERR can be cleared
only by a transmitter reset or by a write of 0 to this bit.
If you want the McBSP to notify the CPU of frame-synchronization errors, you can set a special
transmit interrupt mode with the XINTM bits of SPCR2. When XINTM = 11b, the McBSP sends a
transmit interrupt (XINT) request to the CPU each time that XSYNCERR is set.
15.5.5.2 Example of Unexpected Transmit Frame-Synchronization Pulse
Figure 15-30 shows an unexpected transmit frame-synchronization pulse during normal operation of the
serial port with intervals between the data packets. When the unexpected frame-synchronization pulse
occurs, the XSYNCERR bit is set and the transmission of data B is restarted because no new data has
been passed to XSR1 yet. In addition, if XINTM = 11b, the McBSP sends a transmit interrupt (XINT)
request to the CPU.
Figure 15-30. An Unexpected Frame-Synchronization Pulse During a McBSP Transmission
CLKX
FSX
DX A1
Á
Á
Á
Á
Á
Á
A0
Unexpected frame synchronization
B7
B6 B5
B4 B7
B6
B5 B4
B3 B2
Á
Á
Á
B1 B0
XRDY
DXR1 to XSR1 copy(B)
Write to DXR1(C)
DXR1 to XSR1 (C)
Write to DXR1(D)
XSYNCERR
15.5.5.3 Preventing Unexpected Transmit Frame-Synchronization Pulses
Each frame transfer can be delayed by 0, 1, or 2 CLKX cycles, depending on the value in the XDATDLY
bits of XCR2. For each possible data delay, Figure 15-31 shows when a new frame-synchronization pulse
on FSX can safely occur relative to the last bit of the current frame.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
957
Multichannel Selection Modes
www.ti.com
Figure 15-31. Proper Positioning of Frame-Synchronization Pulses
For 2-bit delay:
Next frame-synchronization
pulse here or later is OK.
For 1-bit delay:
Next frame-synchronization
pulse here or later is OK.
For 0-bit delay:
Next frame-synchronization
pulse here or later is OK.
CLKR/CLKX
FSR/FSX
DR/DX
Last bit of
current frame
Earliest possible
time to begin transfer
of next frame
15.6 Multichannel Selection Modes
This section discusses the multichannel selection modes for the McBSP.
15.6.1 Channels, Blocks, and Partitions
A McBSP channel is a time slot for shifting in/out the bits of one serial word. Each McBSP supports up to
128 channels for reception and 128 channels for transmission.
In the receiver and in the transmitter, the 128 available channels are divided into eight blocks that each
contain 16 contiguous channels (see Table 15-8 through Table 15-10) :
• It is possible to have two receive partitions (A & B) and 8 transmit partitions (A – H).
• McBSP can transmit/receive on selected channels.
• Each channel partition has a dedicated channel-enable register. Each bit controls whether data flow is
allowed or prevented in one of the channels assigned to that partition.
• There are three transmit multichannel modes and one receive multichannel mode.
Table 15-8. Block - Channel Assignment
Block
958
Multichannel Buffered Serial Port (McBSP)
Channels
0
0 -15
1
16 - 31
2
32 - 47
3
48 - 63
4
64 - 79
5
80 - 95
6
96 - 111
7
112 - 127
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Multichannel Selection Modes
www.ti.com
The blocks are assigned to partitions according to the selected partition mode. In the two-partition
mode (described in Section 15.6.4), you assign one even-numbered block (0, 2, 4, or 6) to partition A
and one odd-numbered block (1, 3, 5, or 7) to partition B. In the 8-partition mode (described in
Section 15.6.5), blocks 0 through 7 are automatically assigned to partitions, A through H, respectively.
Table 15-9. 2-Partition Mode
Partition
Blocks
A
0 or 2 or 4 or 6
B
1 or 3 or 5 or 7
Table 15-10. 8-Partition mode
Partition
Blocks
A
0
Channels
0 -15
B
1
16 - 31
C
2
32 - 47
D
3
48 - 63
E
4
64 - 79
F
5
80 - 95
G
6
96 - 111
H
7
112 - 127
The number of partitions for reception and the number of partitions for transmission are independent. For
example, it is possible to use two receive partitions (A and B) and eight transmit partitions (A-H).
15.6.2 Multichannel Selection
When a McBSP uses a time-division multiplexed (TDM) data stream while communicating with other
McBSPs or serial devices, the McBSP may need to receive and/or transmit on only a few channels. To
save memory and bus bandwidth, you can use a multichannel selection mode to prevent data flow in
some of the channels.
Each channel partition has a dedicated channel enable register. If the appropriate multichannel selection
mode is on, each bit in the register controls whether data flow is allowed or prevented in one of the
channels that is assigned to that partition.
The McBSP has one receive multichannel selection mode (described in Section 15.6.6) and three transmit
multichannel selection modes (described in Section 15.6.7).
15.6.3 Configuring a Frame for Multichannel Selection
Before you enable a multichannel selection mode, make sure you properly configure the data frame:
• Select a single-phase frame (RPHASE/XPHASE = 0). Each frame represents a TDM data stream.
• Set a frame length (in RFRLEN1/XFRLEN1) that includes the highest-numbered channel to be used.
For example, if you plan to use channels 0, 15, and 39 for reception, the receive frame length must be
at least 40 (RFRLEN1 = 39). If XFRLEN1 = 39 in this case, the receiver creates 40 time slots per
frame but only receives data during time slots 0, 15, and 39 of each frame.
15.6.4 Using Two Partitions
For multichannel selection operation in the receiver and/or the transmitter, you can use two partitions or
eight partitions (described in Section 15.6.5). If you choose the 2-partition mode (RMCME = 0 for
reception, XMCME = 0 for transmission), McBSP channels are activated using an alternating scheme. In
response to a frame-synchronization pulse, the receiver or transmitter begins with the channels in partition
A and then alternates between partitions B and A until the complete frame has been transferred. When the
next frame-synchronization pulse occurs, the next frame is transferred beginning with the channels in
partition A.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
959
Multichannel Selection Modes
www.ti.com
15.6.4.1 Assigning Blocks to Partitions A and B
For reception, any two of the eight receive-channel blocks can be assigned to receive partitions A and B,
which means up to 32 receive channels can be enabled at any given point in time. Similarly, any two of
the eight transmit-channel blocks (up 32 enabled transmit channels) can be assigned to transmit partitions
A and B.
For reception:
• Assign an even-numbered channel block (0, 2, 4, or 6) to receive partition A by writing to the RPABLK
bits. In the receive multichannel selection mode (described in Section 15.6.6), the channels in this
partition are controlled by receive channel enable register A (RCERA).
• Assign an odd-numbered block (1, 3, 5, or 7) to receive partition B with the RPBBLK bits. In the
receive multichannel selection mode, the channels in this partition are controlled by receive channel
enable register B (RCERB).
For transmission:
• Assign an even-numbered channel block (0, 2, 4, or 6) to transmit partition A by writing to the XPABLK
bits. In one of the transmit multichannel selection modes (described in Section 15.6.7), the channels in
this partition are controlled by transmit channel enable register A (XCERA).
• Assign an odd-numbered block (1, 3, 5, or 7) to transmit partition B with the XPBBLK bits. In one of the
transmit multichannel selection modes, the channels in this partition are controlled by transmit channel
enable register B (XCERB).
Figure 15-32 shows an example of alternating between the channels of partition A and the channels of
partition B. Channels 0-15 have been assigned to partition A, and channels 16-31 have been assigned to
partition B. In response to a frame-synchronization pulse, the McBSP begins a frame transfer with partition
A and then alternates between partitions B and A until the complete frame is transferred.
Figure 15-32. Alternating Between the Channels of Partition A and the Channels of Partition B
Two-partition mode. Example with fixed block assignments
Partition
Block
Channels
FS(R/X)
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
A
B
A
B
A
B
A
B
A
0
1
0
1
0
1
0
1
0
0-15
16-31
0-15
16-31
0-15
16-31
0-15
16-31
0-15
As explained in Section 15.6.4.2, you can dynamically change which blocks of channels are assigned to
the partitions.
15.6.4.2 Reassigning Blocks During Reception/Transmission
If you want to use more than 32 channels, you can change which channel blocks are assigned to
partitions A and B during the course of a data transfer. However, these changes must be carefully timed.
While a partition is being transferred, its associated block assignment bits cannot be modified and its
associated channel enable register cannot be modified. For example, if block 3 is being transferred and
block 3 is assigned to partition A, you can modify neither (R/X)PABLK to assign different channels to
partition A nor (R/X)CERA to change the channel configuration for partition A.
960
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Multichannel Selection Modes
www.ti.com
Several features of the McBSP help you time the reassignment:
• The block of channels currently involved in reception/transmission (the current block) is reflected in the
RCBLK/XCBLK bits. Your program can poll these bits to determine which partition is active. When a
partition is not active, it is safe to change its block assignment and channel configuration.
• At the end of every block (at the boundary of two partitions), an interrupt can be sent to the CPU. In
response to the interrupt, the CPU can then check the RCBLK/XCBLK bits and update the inactive
partition. See Section 15.6.7.3, Using Interrupts Between Block Transfers.
Figure 15-33 shows an example of reassigning channels throughout a data transfer. In response to a
frame-synchronization pulse, the McBSP alternates between partitions A and B. Whenever partition B is
active, the CPU changes the block assignment for partition A. Whenever partition A is active, the CPU
changes the block assignment for partition B.
Figure 15-33. Reassigning Channel Blocks Throughout a McBSP Data Transfer
Two-partition mode. Example with changing block assignments
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
Partition
A
B
A
B
A
B
A
B
A
Block
0
1
2
3
4
5
6
7
0
0-15
16-31
32-47
48-63
80-95
96-111
112-127
0-15
Channels
64-79
FS(R/X)
Block 2 assigned
to partition A
Block 4 assigned
to partition A
Block 3 assigned
to partition B
Block 6 assigned
to partition A
Block 5 assigned
to partition B
Block 0 assigned
to partition A
Block 7 assigned
to partition B
Block 1 assigned
to partition B
15.6.5 Using Eight Partitions
For multichannel selection operation in the receiver and/or the transmitter, you can use eight partitions or
two partitions (described in Section 15.6.4). If you choose the 8-partition mode (RMCME = 1 for reception,
XMCME = 1 for transmission), McBSP channels are activated in the following order: A, B, C, D, E, F, G,
H. In response to a frame-synchronization pulse, the receiver or transmitter begins with the channels in
partition A and then continues with the other partitions in order until the complete frame has been
transferred. When the next frame-synchronization pulse occurs, the next frame is transferred, beginning
with the channels in partition A.
In the 8-partition mode, the (R/X)PABLK and (R/X)PBBLK bits are ignored and the 16-channel blocks are
assigned to the partitions as shown in Table 15-11 and Table 15-12. These assignments cannot be
changed. The tables also show the registers used to control the channels in the partitions.
Table 15-11. Receive Channel Assignment and Control With Eight Receive Partitions
Receive Partition
Assigned Block of Receive Channels
Register Used For Channel Control
A
Block 0: channels 0 through 15
RCERA
B
Block 1: channels 16 through 31
RCERB
C
Block 2: channels 32 through 47
RCERC
D
Block 3: channels 48 through 63
RCERD
E
Block 4: channels 64 through 79
RCERE
F
Block 5: channels 80 through 95
RCERF
G
Block 6: channels 96 through 111
RCERG
H
Block 7: channels 112 through 127
RCERH
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
961
Multichannel Selection Modes
www.ti.com
Table 15-12. Transmit Channel Assignment and Control When Eight Transmit Partitions Are Used
Transmit Partition
Assigned Block of Transmit Channels
Register Used For Channel Control
A
Block 0: channels 0 through 15
XCERA
B
Block 1: channels 16 through 31
XCERB
C
Block 2: channels 32 through 47
XCERC
D
Block 3: channels 48 through 63
XCERD
E
Block 4: channels 64 through 79
XCERE
F
Block 5: channels 80 through 95
XCERF
G
Block 6: channels 96 through 111
XCERG
H
Block 7: channels 112 through 127
XCERH
Figure 15-34 shows an example of the McBSP using the 8-partition mode. In response to a framesynchronization pulse, the McBSP begins a frame transfer with partition A and then activates B, C, D, E,
F, G, and H to complete a 128-word frame.
Figure 15-34. McBSP Data Transfer in the 8-Partition Mode
Eight-partition mode
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
Partition
A
B
C
D
E
F
G
H
A
Block
0
1
2
3
4
5
6
7
0
0-15
16-31
32-47
48-63
80-95
96-111
112-127
0-15
Channels
64-79
FS(R/X)
15.6.6 Receive Multichannel Selection Mode
The RMCM bit of MCR1 determines whether all channels or only selected channels are enabled for
reception. When RMCM = 0, all 128 receive channels are enabled and cannot be disabled. When RMCM
= 1, the receive multichannel selection mode is enabled. In this mode:
• Channels can be individually enabled or disabled. The only channels enabled are those selected in the
appropriate receive channel enable registers (RCERs). The way channels are assigned to the RCERs
depends on the number of receive channel partitions (2 or 8), as defined by the RMCME bit of MCR1.
• If a receive channel is disabled, any bits received in that channel are passed only as far as the receive
buffer register(s) (RBR(s)). The receiver does not copy the content of the RBR(s) to the DRR(s), and
as a result, does not set the receiver ready bit (RRDY). Therefore, no DMA synchronization event
(REVT) is generated and, if the receiver interrupt mode depends on RRDY (RINTM = 00b), no interrupt
is generated.
As an example of how the McBSP behaves in the receive multichannel selection mode, suppose you
enable only channels 0, 15, and 39 and that the frame length is 40. The McBSP:
1. Accepts bits shifted in from the DR pin in channel 0
2. Ignores bits received in channels 1-14
3. Accepts bits shifted in from the DR pin in channel 15
4. Ignores bits received in channels 16-38
5. Accepts bits shifted in from the DR pin in channel 39
15.6.7 Transmit Multichannel Selection Modes
The XMCM bits of XCR2 determine whether all channels or only selected channels are enabled and
unmasked for transmission. More details on enabling and masking are in Section 15.6.7.1. The McBSP
has three transmit multichannel selection modes (XMCM = 01b, XMCM = 10b, and XMCM = 11b), which
are described in the following table.
962
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Multichannel Selection Modes
www.ti.com
Table 15-13. Selecting a Transmit Multichannel Selection Mode With the XMCM Bits
XMCM
Transmit Multichannel Selection Mode
00b
No transmit multichannel selection mode is on. All channels are enabled and unmasked. No channels
can be disabled or masked.
01b
All channels are disabled unless they are selected in the appropriate transmit channel enable registers
(XCERs). If enabled, a channel in this mode is also unmasked.
The XMCME bit of MCR2 determines whether 32 channels or 128 channels are selectable in XCERs.
10b
All channels are enabled, but they are masked unless they are selected in the appropriate transmit
channel enable registers (XCERs).
The XMCME bit of MCR2 determines whether 32 channels or 128 channels are selectable in XCERs.
11b
This mode is used for symmetric transmission and reception.
All channels are disabled for transmission unless they are enabled for reception in the appropriate
receive channel enable registers (RCERs). Once enabled, they are masked unless they are also
selected in the appropriate transmit channel enable registers (XCERs).
The XMCME bit of MCR2 determines whether 32 channels or 128 channels are selectable in RCERs
and XCERs.
As an example of how the McBSP behaves in a transmit multichannel selection mode, suppose that
XMCM = 01b (all channels disabled unless individually enabled) and that you have enabled only channels
0, 15, and 39. Suppose also that the frame length is 40. The McBSP:…
1. Shifts data to the DX pin in channel 0
2. Places the DX pin in the high impedance state in channels 1-14
3. Shifts data to the DX pin in channel 15
4. Places the DX pin in the high impedance state in channels 16-38
5. Shifts data to the DX pin in channel 39
15.6.7.1 Disabling/Enabling Versus Masking/Unmasking
For transmission, a channel can be:
• Enabled and unmasked (transmission can begin and can be completed)
• Enabled but masked (transmission can begin but cannot be completed)
• Disabled (transmission cannot occur)
The following definitions explain the channel control options:
Enabled channel
A channel that can begin transmission by passing data from the data transmit register(s)
(DXR(s)) to the transmit shift registers (XSR(s)).
A channel that cannot complete transmission. The DX pin is held in the high impedance
state; data cannot be shifted out on the DX pin.
In systems where symmetric transmit and receive provides software benefits, this feature
allows transmit channels to be disabled on a shared serial bus. A similar feature is not
needed for reception because multiple receptions cannot cause serial bus contention.
A channel that is not enabled. A disabled channel is also masked.
Because no DXR-to-XSR copy occurs, the XRDY bit of SPCR2 is not set. Therefore, no
DMA synchronization event (XEVT) is generated, and if the transmit interrupt mode
depends on XRDY (XINTM = 00b in SPCR2), no interrupt is generated.
The XEMPTY bit of SPCR2 is not affected.
A channel that is not masked. Data in the XSR(s) is shifted out on the DX pin.
Masked channel
Disabled channel
Unmasked channel
15.6.7.2 Activity on McBSP Pins for Different Values of XMCM
Figure 15-35 shows the activity on the McBSP pins for the various XMCM values. In all cases, the
transmit frame is configured as follows:
• XPHASE = 0: Single-phase frame (required for multichannel selection modes)
• XFRLEN1 = 0000011b: 4 words per frame
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
963
Multichannel Selection Modes
•
•
www.ti.com
XWDLEN1 = 000b: 8 bits per word
XMCME = 0: 2-partition mode (only partitions A and B used)
In the case where XMCM = 11b, transmission and reception are symmetric, which means the
corresponding bits for the receiver (RPHASE, RFRLEN1, RWDLEN1, and RMCME) must have the same
values as XPHASE, XFRLEN1, and XWDLEN1, respectively.
In the figure, the arrows showing where the various events occur are only sample indications. Wherever
possible, there is a time window in which these events can occur.
15.6.7.3 Using Interrupts Between Block Transfers
When a multichannel selection mode is used, an interrupt request can be sent to the CPU at the end of
every 16-channel block (at the boundary between partitions and at the end of the frame). In the receive
multichannel selection mode, a receive interrupt (RINT) request is generated at the end of each block
transfer if RINTM = 01b. In any of the transmit multichannel selection modes, a transmit interrupt (XINT)
request is generated at the end of each block transfer if XINTM = 01b. When RINTM/XINTM = 01b, no
interrupt is generated unless a multichannel selection mode is on.
These interrupt pulses are active high and last for two CPU clock cycles.
This type of interrupt is especially helpful if you are using the two-partition mode (described in
Section 15.6.4) and you want to know when you can assign a different block of channels to partition A or
B.
964
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Operation Using the Clock Stop Mode
www.ti.com
Figure 15-35. Activity on McBSP Pins for the Possible Values of XMCM
ÁÁ
Á
ÁÁ Á
ÁÁ Á
(a) XMCM = 00b: All channels enabled and unmasked
Internal FSX
DX
XRDY
W0
Write to DXR1(W1)
DXR1 to XSR1 copy(W0)
DXR1 to XSR1 copy(W1)
ÁÁ
ÁÁ
ÁÁ
ÁÁ
W1
Á
Á
Á
Á
W2
W3
Write to DXR1(W3)
DXR1 to XSR1 copy(W2)
DXR1 to XSR1 copy(W3)
Write to DXR1(W2)
Á
Á
Á
Á
Á
Á
Á
Á
(b) XMCM = 01b, XPABLK = 00b, XCERA = 1010b: Only channels 1 and 3 enabled and unmasked
Internal FSX
DX
XRDY
ÁÁ
ÁÁ
ÁÁ
ÁÁ
W1
Write to DXR1(W3)
Á
Á
Á
Á
DXR1 to XSR1 copy(W1)
Á
Á
Á
Á
W3
DXR1 to XSR1 copy(W3)
Á
Á
Á
Á
(c) XMCM = 10b, XPABLK = 00b, XCERA = 1010b: All channels enabled, only 1 and 3 unmasked
Internal FSX
DX
XRDY
W3
Write to DXR1(W3)
DXR1 to XSR1 copy(W2)
DXR1 to XSR1 copy(W3)
Write to DXR1(W2)
Write to DXR1(W1)
DXR1 to XSR1 copy(W0)
DXR1 to XSR1 copy(W1)
Á
Á
Á
Á
Á
Á
Á
W1
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
Á
(d) XMCM = 11b, RPABLK = 00b, XPABLK = X, RCERA = 1010b, XCERA = 1000b:
Receive channels: 1 and 3 enabled; transmit channels: 1 and 3 enabled, but only 3 unmasked
Internal FS(R/X)
DR
RRDY
DX
XRDY
DXR1 to XSR1 copy (W1)
Á
Á
Á
Á
W1
Read From DRR1(W3)
RBR1 to DRR1 copy (W3)
W3
Á
Á
Á
Á
Á
Á
Á
Read From DRR1(W1)
RBR1 to DRR1 copy (W1)
RBR1 to DRR1 (W3)
W3
DXR1 to XSR1 copy (W3)
Write to DXR1(W3)
15.7 SPI Operation Using the Clock Stop Mode
This section explains how to use the McBSP in SPI mode.
15.7.1 SPI Protocol
The SPI protocol is a master-slave configuration with one master device and one or more slave devices.
The interface consists of the following four signals:
• Serial data input (also referred to as slave out/master in, or SOMI)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
965
SPI Operation Using the Clock Stop Mode
•
•
•
www.ti.com
Serial data output (also referred to as slave in/master out, or SIMO)
Shift-clock (also referred to as SPICLK)
Slave-enable signal (also referred to as SPISTE)
A typical SPI interface with a single slave device is shown in Figure 15-36.
Figure 15-36. Typical SPI Interface
SPI-compliant
master
SPI-compliant
slave
SPICLK
SPICLK
SPISIMO
SPISIMO
SPISOMI
SPISOMI
SPISTE
SPISTE
The master device controls the flow of communication by providing shift-clock and slave-enable signals.
The slave-enable signal is an optional active-low signal that enables the serial data input and output of the
slave device (device not sending out the clock).
In the absence of a dedicated slave-enable signal, communication between the master and slave is
determined by the presence or absence of an active shift-clock. When the McBSP is operating in SPI
master mode and the SPISTE signal is not used by the slave SPI port, the slave device must remain
enabled at all times, and multiple slaves cannot be used.
15.7.2 Clock Stop Mode
The clock stop mode of the McBSP provides compatibility with the SPI protocol. When the McBSP is
configured in clock stop mode, the transmitter and receiver are internally synchronized so that the McBSP
functions as an SPI master or slave device. The transmit clock signal (CLKX) corresponds to the serial
clock signal (SPICLK) of the SPI protocol, while the transmit frame-synchronization signal (FSX) is used
as the slave-enable signal (SPISTE).
The receive clock signal (MCLKR) and receive frame-synchronization signal (FSR) are not used in the
clock stop mode because these signals are internally connected to their transmit counterparts, CLKX and
FSX.
15.7.3 Bits Used to Enable and Configure the Clock Stop Mode
The bits required to configure the McBSP as an SPI device are introduced in Table 15-14. Table 15-15
shows how the various combinations of the CLKSTP bit and the polarity bits CLKXP and CLKRP create
four possible clock stop mode configurations. The timing diagrams in Section 15.7.4 show the effects of
CLKSTP, CLKXP, and CLKRP.
Table 15-14. Bits Used to Enable and Configure the Clock Stop Mode
Bit Field
Description
CLKSTP bits of SPCR1
Use these bits to enable the clock stop mode and to select one of two timing variations.
(See also Table 15-15.)
CLKXP bit of PCR
This bit determines the polarity of the CLKX signal. (See also Table 15-15.)
CLKRP bit of PCR
This bit determines the polarity of the MCLKR signal. (See also Table 15-15.)
CLKXM bit of PCR
This bit determines whether CLKX is an input signal (McBSP as slave) or an output
signal (McBSP as master).
966 Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Operation Using the Clock Stop Mode
www.ti.com
Table 15-14. Bits Used to Enable and Configure the Clock Stop Mode (continued)
Bit Field
Description
XPHASE bit of XCR2
You must use a single-phase transmit frame (XPHASE = 0).
RPHASE bit of RCR2
You must use a single-phase receive frame (RPHASE = 0).
XFRLEN1 bits of XCR1
You must use a transmit frame length of 1 serial word (XFRLEN1 = 0).
RFRLEN1 bits of RCR1
You must use a receive frame length of 1 serial word (RFRLEN1 = 0).
XWDLEN1 bits of XCR1
The XWDLEN1 bits determine the transmit packet length. XWDLEN1 must be equal to
RWDLEN1 because in the clock stop mode. The McBSP transmit and receive circuits
are synchronized to a single clock.
RWDLEN1 bits of RCR1
The RWDLEN1 bits determine the receive packet length. RWDLEN1 must be equal to
XWDLEN1 because in the clock stop mode. The McBSP transmit and receive circuits
are synchronized to a single clock.
Table 15-15. Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme
Bit Settings
Clock Scheme
CLKSTP = 00b or 01b
Clock stop mode disabled. Clock enabled for non-SPI mode.
CLKXP = 0 or 1
CLKRP = 0 or 1
CLKSTP = 10b
CLKXP = 0
Low inactive state without delay: The McBSP transmits data on the rising edge of CLKX and
receives data on the falling edge of MCLKR.
CLKRP = 0
CLKSTP = 11b
CLKXP = 0
Low inactive state with delay: The McBSP transmits data one-half cycle ahead of the rising
edge of CLKX and receives data on the rising edge of MCLKR.
CLKRP = 1
CLKSTP = 10b
CLKXP = 1
High inactive state without delay: The McBSP transmits data on the falling edge of CLKX and
receives data on the rising edge of MCLKR.
CLKRP = 0
CLKSTP = 11b
CLKXP = 1
High inactive state with delay: The McBSP transmits data one-half cycle ahead of the falling
edge of CLKX and receives data on the falling edge of MCLKR.
CLKRP = 1
15.7.4 Clock Stop Mode Timing Diagrams
The timing diagrams for the four possible clock stop mode configurations are shown here. Notice that the
frame-synchronization signal used in clock stop mode is active throughout the entire transmission as a
slave-enable signal. Although the timing diagrams show 8-bit transfers, the packet length can be set to 8,
12, 16, 20, 24, or 32 bits per packet. The receive packet length is selected with the RWDLEN1 bits of
RCR1, and the transmit packet length is selected with the XWDLEN1 bits of XCR1. For clock stop mode,
the values of RWDLEN1 and XWDLEN1 must be the same because the McBSP transmit and receive
circuits are synchronized to a single clock.
NOTE: Even if multiple words are consecutively transferred, the CLKX signal is always stopped and
the FSX signal returns to the inactive state after a packet transfer. When consecutive packet
transfers are performed, this leads to a minimum idle time of two bit-periods between each
packet transfer.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
967
SPI Operation Using the Clock Stop Mode
www.ti.com
Figure 15-37. SPI Transfer With CLKSTP = 10b (No Clock Delay), CLKXP = 0, and CLKRP = 0
CLKX/SPICLK
DX or DR/SIMO
(from master)
DX or DR/SOMI
(from slave)
B7
B7
B6
B5
B4
B3
B2
B1
B0
B6
B5
B4
B3
B2
B1
B0
FSX/SPISTE
A
If the McBSP is the SPI master (CLKXM = 1), SIMO = DX. If the McBSP is the SPI slave (CLKXM = 0), SIMO = DR.
B
If the McBSP is the SPI master (CLKXM = 1), SOMI = DR. If the McBSP is the SPI slave (CLKXM = 0), SOMI = DX.
Figure 15-38. SPI Transfer With CLKSTP = 11b (Clock Delay), CLKXP = 0, CLKRP = 1
CLKX/SPICLK
DX or DR/SIMO
(from master)
DX or DR/SOMI
(from slave)
B7
B7
B6
B5
B4
B3
B2
B1
B0
B6
B5
B4
B3
B2
B1
B0
FSX/SPISTE
A
If the McBSP is the SPI master (CLKXM = 1), SIMO = DX. If the McBSP is the SPI slave (CLKXM = 0), SIMO = DR.
B
If the McBSP is the SPI master (CLKXM = 1), SOMI = DR. If the McBSP is the SPI slave (CLKXM = 0), SOMI = DX.
Figure 15-39. SPI Transfer With CLKSTP = 10b (No Clock Delay), CLKXP = 1, and CLKRP = 0
CLKX/SPICLK
DX or DR/SIMO
(from master)
DX or DR/SOMI
(from slave)
B7
B7
B6
B5
B4
B3
B2
B1
B0
B6
B5
B4
B3
B2
B1
B0
FSX/SPISTE
A
If the McBSP is the SPI master (CLKXM = 1), SIMO = DX. If the McBSP is the SPI slave (CLKXM = 0), SIMO = DR.
B
If the McBSP is the SPI master (CLKXM = 1), SOMI = DR. If the McBSP is the SPI slave (CLKXM = 0), SOMI = DX.
Figure 15-40. SPI Transfer With CLKSTP = 11b (Clock Delay), CLKXP = 1, CLKRP = 1
CLKX/SPICLK
DX or DR/SIMO
(from master)
DX or DR/SOMI
(from slave)
B7
B7
B6
B5
B4
B3
B2
B1
B0
B6
B5
B4
B3
B2
B1
B0
FSX/SPISTE
968
A
If the McBSP is the SPI master (CLKXM = 1), SIMO=DX. If the McBSP is the SPI slave (CLKXM = 0), SIMO = DR.
B
If the McBSP is the SPI master (CLKXM = 1), SOMI=DR. If the McBSP is the SPI slave (CLKXM = 0), SOMI = DX.
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Operation Using the Clock Stop Mode
www.ti.com
15.7.5 Procedure for Configuring a McBSP for SPI Operation
To configure the McBSP for SPI master or slave operation:
Step 1. Place the transmitter and receiver in reset.
Clear the transmitter reset bit (XRST = 0) in SPCR2 to reset the transmitter. Clear the receiver reset bit
(RRST = 0) in SPCR1 to reset the receiver.
Step 2. Place the sample rate generator in reset.
Clear the sample rate generator reset bit (GRST = 0) in SPCR2 to reset the sample rate generator.
Step 3. Program registers that affect SPI operation.
Program the appropriate McBSP registers to configure the McBSP for proper operation as an SPI
master or an SPI slave. For a list of important bits settings, see one of the following topics:
• McBSP as the SPI Master ( Section 15.7.6)
• McBSP as an SPI Slave ( Section 15.7.7)
Step 4. Enable the sample rate generator.
To release the sample rate generator from reset, set the sample rate generator reset bit (GRST = 1) in
SPCR2.
Make sure that during the write to SPCR2, you only modify GRST. Otherwise, you modify the McBSP
configuration you selected in the previous step.
Step 5. Enable the transmitter and receiver.
After the sample rate generator is released from reset, wait two sample rate generator clock periods for
the McBSP logic to stabilize.
If the CPU services the McBSP transmit and receive buffers, then you can immediately enable the
transmitter (XRST = 1 in SPCR2) and enable the receiver (RRST = 1 in SPCR1).
If the DMA controller services the McBSP transmit and receive buffers, then you must first configure
the DMA controller (this includes enabling the channels that service the McBSP buffers). When the
DMA controller is ready, make XRST = 1 and RRST = 1.
In either case, make sure you only change XRST and RRST when you write to SPCR2 and SPCR1.
Otherwise, you modify the bit settings you selected earlier in this procedure.
After the transmitter and receiver are released from reset, wait two sample rate generator clock periods
for the McBSP logic to stabilize.
Step 6. If necessary, enable the frame-synchronization logic of the sample rate generator.
After the required data acquisition setup is done (DXR[1,2] is loaded with data), set FRST = 1 if an
internally generated frame-synchronization pulse is required (that is, if the McBSP is the SPI master).
15.7.6 McBSP as the SPI Master
An SPI interface with the McBSP used as the master is shown in Figure 15-41. When the McBSP is
configured as a master, the transmit output signal (DX) is used as the SIMO signal of the SPI protocol and
the receive input signal (DR) is used as the SOMI signal.
The register bit values required to configure the McBSP as a master are listed in Table 15-16. After the
table are more details about the configuration requirements.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
969
SPI Operation Using the Clock Stop Mode
www.ti.com
Figure 15-41. SPI Interface with McBSP Used as Master
McBSP master
CLKX
SPI-compliant
slave
SPICLK
DX
SPISIMO
DR
SPISOMI
FSX
SPISTE
Table 15-16. Bit Values Required to Configure the McBSP as an SPI Master
Required Bit Setting
Description
CLKSTP = 10b or 11b
The clock stop mode (without or with a clock delay) is selected.
CLKXP = 0 or 1
The polarity of CLKX as seen on the MCLKX pin is positive (CLKXP = 0) or negative (CLKXP =
1).
CLKRP = 0 or 1
The polarity of MCLKR as seen on the MCLKR pin is positive (CLKRP = 0) or negative
(CLKRP = 1).
CLKXM = 1
The MCLKX pin is an output pin driven by the internal sample rate generator. Because
CLKSTP is equal to 10b or 11b, MCLKR is driven internally by CLKX.
SCLKME = 0
The clock generated by the sample rate generator (CLKG) is derived from the CPU clock.
CLKSM = 1
CLKGDV is a value from 1 to 255
CLKGDV defines the divide down value for CLKG.
FSXM = 1
The FSX pin is an output pin driven according to the FSGM bit. (See theTMS320F28335
Applications and Media Processor Data Manual (SPRS224) for more information.
FSGM = 0
The transmitter drives a frame-synchronization pulse on the FSX pin every time data is
transferred from DXR1 to XSR1.
FSXP = 1
The FSX pin is active low.
XDATDLY = 01b
This setting provides the correct setup time on the FSX signal.
RDATDLY = 01b
When the McBSP functions as the SPI master, it controls the transmission of data by producing the serial
clock signal. The clock signal on the MCLKX pin is enabled only during packet transfers. When packets
are not being transferred, the MCLKX pin remains high or low depending on the polarity used.
For SPI master operation, the MCLKX pin must be configured as an output. The sample rate generator is
then used to derive the CLKX signal from the CPU clock. The clock stop mode internally connects the
MCLKX pin to the MCLKR signal so that no external signal connection is required on the MCLKR pin and
both the transmit and receive circuits are clocked by the master clock (CLKX).
The data delay parameters of the McBSP (XDATDLY and RDATDLY) must be set to 1 for proper SPI
master operation. A data delay value of 0 or 2 is undefined in the clock stop mode.
The McBSP can also provide a slave-enable signal (SPISTE) on the FSX pin. If a slave-enable signal is
required, the FSX pin must be configured as an output and the transmitter must be configured so that a
frame-synchronization pulse is generated automatically each time a packet is transmitted (FSGM = 0).
The polarity of the FSX pin is programmable high or low; however, in most cases the pin must be
configured active low.
970
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
SPI Operation Using the Clock Stop Mode
www.ti.com
When the McBSP is configured as described for SPI-master operation, the bit fields for framesynchronization pulse width (FWID) and frame-synchronization period (FPER) are overridden, and custom
frame-synchronization waveforms are not allowed. To see the resulting waveform produced on the FSX
pin, see the timing diagrams in Section 15.7.4. The signal becomes active before the first bit of a packet
transfer, and remains active until the last bit of the packet is transferred. After the packet transfer is
complete, the FSX signal returns to the inactive state.
15.7.7 McBSP as an SPI Slave
An SPI interface with the McBSP used as a slave is shown in Figure 15-42. When the McBSP is
configured as a slave, DX is used as the SOMI signal and DR is used as the SIMO signal.
The register bit values required to configure the McBSP as a slave are listed in Table 15-17. Following the
table are more details about configuration requirements.
Figure 15-42. SPI Interface With McBSP Used as Slave
McBSP slave
CLKX
SPI-compliant
master
SPICLK
DX
SPISOMI
DR
SPISIMO
FSX
SPISTE
Table 15-17. Bit Values Required to Configure the McBSP as an SPI Slave
Required Bit Setting
Description
CLKSTP = 10b or 11b
The clock stop mode (without or with a clock delay) is selected.
CLKXP = 0 or 1
The polarity of CLKX as seen on the MCLKX pin is positive (CLKXP = 0) or negative (CLKXP =
1).
CLKRP = 0 or 1
The polarity of MCLKR as seen on the MCLKR pin is positive (CLKRP = 0) or negative
(CLKRP = 1).
CLKXM = 0
The MCLKX pin is an input pin, so that it can be driven by the SPI master. Because CLKSTP =
10b or 11b, MCLKR is driven internally by CLKX.
SCLKME = 0
The clock generated by the sample rate generator (CLKG) is derived from the CPU clock. (The
sample rate generator is used to synchronize the McBSP logic with the externally-generated
master clock.)
CLKSM = 1
CLKGDV = 1
The sample rate generator divides the CPU clock before generating CLKG.
FSXM = 0
The FSX pin is an input pin, so that it can be driven by the SPI master.
FSXP = 1
The FSX pin is active low.
XDATDLY = 00b
These bits must be 0s for SPI slave operation.
RDATDLY = 00b
When the McBSP is used as an SPI slave, the master clock and slave-enable signals are generated
externally by a master device. Accordingly, the CLKX and FSX pins must be configured as inputs. The
MCLKX pin is internally connected to the MCLKR signal, so that both the transmit and receive circuits of
the McBSP are clocked by the external master clock. The FSX pin is also internally connected to the FSR
signal, and no external signal connections are required on the MCLKR and FSR pins.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
971
Receiver Configuration
www.ti.com
Although the CLKX signal is generated externally by the master and is asynchronous to the McBSP, the
sample rate generator of the McBSP must be enabled for proper SPI slave operation. The sample rate
generator must be programmed to its maximum rate of half the CPU clock rate. The internal sample rate
clock is then used to synchronize the McBSP logic to the external master clock and slave-enable signals.
The McBSP requires an active edge of the slave-enable signal on the FSX input for each transfer. This
means that the master device must assert the slave-enable signal at the beginning of each transfer, and
deassert the signal after the completion of each packet transfer; the slave-enable signal cannot remain
active between transfers. Unlike the standard SPI, this pin cannot be tied low all the time.
The data delay parameters of the McBSP must be set to 0 for proper SPI slave operation. A value of 1 or
2 is undefined in the clock stop mode.
15.8 Receiver Configuration
To
1.
2.
3.
configure the McBSP receiver, perform the following procedure:
Place the McBSP/receiver in reset (see Section 15.8.2).
Program McBSP registers for the desired receiver operation (see Section 15.8.1).
Take the receiver out of reset (see Section 15.8.2).
15.8.1 Programming the McBSP Registers for the Desired Receiver Operation
The following is a list of important tasks to be performed when you are configuring the McBSP receiver.
Each task corresponds to one or more McBSP register bit fields.
• Global behavior:
– Set the receiver pins to operate as McBSP pins.
– Enable/disable the digital loopback mode.
– Enable/disable the clock stop mode.
– Enable/disable the receive multichannel selection mode.
• Data behavior:
– Choose 1 or 2 phases for the receive frame.
– Set the receive word length(s).
– Set the receive frame length.
– Enable/disable the receive frame-synchronization ignore function.
– Set the receive companding mode.
– Set the receive data delay.
– Set the receive sign-extension and justification mode.
– Set the receive interrupt mode.
• Frame-synchronization behavior:
– Set the receive frame-synchronization mode.
– Set the receive frame-synchronization polarity.
– Set the sample rate generator (SRG) frame-synchronization period and pulse width.
• Clock behavior:
– Set the receive clock mode.
– Set the receive clock polarity.
– Set the SRG clock divide-down value.
– Set the SRG clock synchronization mode.
– Set the SRG clock mode (choose an input clock).
– Set the SRG input clock polarity.
972
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
15.8.2 Resetting and Enabling the Receiver
The first step of the receiver configuration procedure is to reset the receiver, and the last step is to enable
the receiver (to take it out of reset). Table 15-18 describes the bits used for both of these steps.
Table 15-18. Register Bits Used to Reset or Enable the McBSP Receiver Field Descriptions
Register
Bit
Field
SPCR2
7
FRST
SPCR2
SPCR1
6
Value
Frame-synchronization logic reset
0
Frame-synchronization logic is reset. The sample rate generator does not generate framesynchronization signal FSG, even if GRST = 1.
1
If GRST = 1, frame-synchronization signal FSG is generated after (FPER + 1) number of
CLKG clock cycles; all frame counters are loaded with their programmed values.
GRST
0
Description
Sample rate generator reset
0
Sample rate generator is reset. If GRST = 0 due to a DSP reset, CLKG is driven by the
CPU clock divided by 2, and FSG is driven low (inactive). If GRST = 0 due to program
code, CLKG and FSG are both driven low (inactive).
1
Sample rate generator is enabled. CLKG is driven according to the configuration
programmed in the sample rate generator registers (SRGR[1,2]). If FRST = 1, the
generator also generates the frame-synchronization signal FSG as programmed in the
sample rate generator registers.
RRST
Receiver reset
0
The serial port receiver is disabled and in the reset state.
1
The serial port receiver is enabled.
15.8.2.1 Reset Considerations
The serial port can be reset in the following two ways:
1. The DSP reset (XRS signal driven low) places the receiver, transmitter, and sample rate generator in
reset. When the device reset is removed (XRS signal released), GRST = FRST = RRST = XRST = 0
keep the entire serial port in the reset state, provided the McBSP clock is turned on.
2. The serial port transmitter and receiver can be reset directly using the RRST and XRST bits in the
serial port control registers. The sample rate generator can be reset directly using the GRST bit in
SPCR2.
Table 15-19 shows the state of McBSP pins when the serial port is reset due to a device reset and a
direct receiver/transmitter reset.
For more details about McBSP reset conditions and effects, see Section 15.10.2, Resetting and Initializing
a McBSP.
Table 15-19. Reset State of Each McBSP Pin
Pin
Possible
State(s)
State Forced By
Device Reset
State Forced By Receiver Reset
(RRST = 0 and GRST = 1)
MDRx
I
GPIO Input
Input
MCLKRx
I/O/Z
GPIO Input
Known state if input; MCLKR running if output
MFSRx
I/O/Z
GPIO Input
Known state if input; FSRP inactive state if output
Transmitter reset (XRST = 0 and GRST = 1)
MDXx
O/Z
GPIO Input
Low impedance after transmit bit clock provided
MCLKXx
I/O/Z
GPIO Input
Known state if input; CLKX running if output
MFSXx
I/O/Z
GPIO Input
Known state if input; FSXP inactive state if output
15.8.3 Set the Receiver Pins to Operate as McBSP Pins
To configure a pin for its McBSP function , you should configure the bits of the GPxMUXn register
appropriately. In addition to this, bits 12 and 13 of the PCR register must be set to 0. These bits are
defined as reserved.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
973
Receiver Configuration
www.ti.com
15.8.4 Enable/Disable the Digital Loopback Mode
The DLB bit determines whether the digital loopback mode is on. DLB is described in Table 15-20.
Table 15-20. Register Bit Used to Enable/Disable the Digital Loopback Mode
Register
Bit
Name
Function
Type
Reset
Value
SPCR1
15
DLB
Digital loopback mode
R/W
0
DLB = 0
Digital loopback mode is disabled.
DLB = 1
Digital loopback mode is enabled.
15.8.4.1 Digital Loopback Mode
In the digital loopback mode, the receive signals are connected internally through multiplexers to the
corresponding transmit signals, as shown in Table 15-21. This mode allows testing of serial port code with
a single DSP device; the McBSP receives the data it transmits.
Table 15-21. Receive Signals Connected to Transmit Signals in Digital Loopback Mode
This Receive Signal
Is Fed Internally by
This Transmit Signal
MDR (receive data)
MDX (transmit data)
MFSR (receive frame synchronization)
MFSX (transmit frame synchronization)
MCLKR (receive clock)
MCLKX (transmit clock)
15.8.5 Enable/Disable the Clock Stop Mode
The CLKSTP bits determine whether the clock stop mode is on. CLKSTP is described in Table 15-22.
Table 15-22. Register Bits Used to Enable/Disable the Clock Stop Mode
Register
SPCR1
Bit
12-11
Name
Function
CLKSTP
Clock stop mode
CLKSTP = 0Xb
Clock stop mode disabled; normal clocking for
non-SPI mode
CLKSTP = 10b
Clock stop mode enabled, without clock delay
CLKSTP = 11b
Clock stop mode enabled, with clock delay
Type
Reset
Value
R/W
00
15.8.5.1 Clock Stop Mode
The clock stop mode supports the SPI master-slave protocol. If you do not plan to use the SPI protocol,
you can clear CLKSTP to disable the clock stop mode.
In the clock stop mode, the clock stops at the end of each data transfer. At the beginning of each data
transfer, the clock starts immediately (CLKSTP = 10b) or after a half-cycle delay (CLKSTP = 11b). The
CLKXP bit determines whether the starting edge of the clock on the MCLKX pin is rising or falling. The
CLKRP bit determines whether receive data is sampled on the rising or falling edge of the clock shown on
the MCLKR pin.
Table 15-23 summarizes the impact of CLKSTP, CLKXP, and CLKRP on serial port operation. In the clock
stop mode, the receive clock is tied internally to the transmit clock, and the receive frame-synchronization
signal is tied internally to the transmit frame-synchronization signal.
974 Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-23. Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme
Bit Settings
Clock Scheme
CLKSTP = 00b or 01b
Clock stop mode disabled. Clock enabled for non-SPI mode.
CLKXP = 0 or 1
CLKRP = 0 or 1
CLKSTP = 10b
Low inactive state without delay: The McBSP transmits data on the rising edge of CLKX and receives data on the
falling edge of MCLKR.
CLKXP = 0
CLKRP = 0
CLKSTP = 11b
Low inactive state with delay: The McBSP transmits data one-half cycle ahead of the rising edge of CLKX and
receives data on the rising edge of MCLKR.
CLKXP = 0
CLKRP = 1
CLKSTP = 10b
High inactive state without delay: The McBSP transmits data on the falling edge of CLKX and receives data on the
rising edge of MCLKR.
CLKXP = 1
CLKRP = 0
CLKSTP = 11b
High inactive state with delay: The McBSP transmits data one-half cycle ahead of the falling edge of CLKX and
receives data on the falling edge of MCLKR.
CLKXP = 1
CLKRP = 1
15.8.6 Enable/Disable the Receive Multichannel Selection Mode
The RMCM bit determines whether the receive multichannel selection mode is on. RMCM is described in
Table 15-24. For more details, see Section 15.6.6, Receive Multichannel Selection Mode.
Table 15-24. Register Bit Used to Enable/Disable the Receive Multichannel Selection Mode
Register
Bit
Name
Function
0
RMCM
Receive multichannel selection mode
MCR1
RMCM = 0
Type
Reset
Value
R/W
0
The mode is disabled.
All 128 channels are enabled.
RMCM = 1
The mode is enabled.
Channels can be individually enabled or disabled.
The only channels enabled are those selected in the
appropriate receive channel enable registers (RCERs).
The way channels are assigned to the RCERs
depends on the number of receive channel partitions
(2 or 8), as defined by the RMCME bit.
15.8.7 Choose One or Two Phases for the Receive Frame
The RPHASE bit (see Table 15-25) determines whether the receive data frame has one or two phases.
Table 15-25. Register Bit Used to Choose One or Two Phases for the Receive Frame
Register
Bit
Name
Function
Type
Reset
Value
RCR2
15
RPHASE
Receive phase number
R/W
0
Specifies whether the receive frame has 1 or 2 phases.
RPHASE = 0
Single-phase frame
RPHASE = 1
Dual-phase frame
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
975
Receiver Configuration
www.ti.com
15.8.8 Set the Receive Word Length(s)
The RWDLEN1 and RWDLEN2 bit fields (see Table 15-26) determine how many bits are in each serial
word in phase 1 and in phase 2, respectively, of the receive data frame.
Table 15-26. Register Bits Used to Set the Receive Word Length(s)
Register
Bit
Name
Function
Type
Reset
Value
RCR1
7-5
RWDLEN1
Receive word length 1
R/W
000
R/W
000
Specifies the length of every serial word in phase 1 of the receive frame.
RCR2
7-5
RWDLEN2
RWDLEN1 = 000
8 bits
RWDLEN1 = 001
12 bits
RWDLEN1 = 010
16 bits
RWDLEN1 = 011
20 bits
RWDLEN1 = 100
24 bits
RWDLEN1 = 101
32 bits
RWDLEN1 = 11X
Reserved
Receive word length 2
If a dual-phase frame is selected, RWDLEN2 specifies the length of every
serial word in phase 2 of the frame.
RWDLEN2 = 000
8 bits
RWDLEN2 = 001
12 bits
RWDLEN2 = 010
16 bits
RWDLEN2 = 011
20 bits
RWDLEN2 = 100
24 bits
RWDLEN2 = 101
32 bits
RWDLEN2 = 11X
Reserved
15.8.8.1 Word Length Bits
Each frame can have one or two phases, depending on the value that you load into the RPHASE bit. If a
single-phase frame is selected, RWDLEN1 selects the length for every serial word received in the frame. If
a dual-phase frame is selected, RWDLEN1 determines the length of the serial words in phase 1 of the
frame and RWDLEN2 determines the word length in phase 2 of the frame.
15.8.9 Set the Receive Frame Length
The RFRLEN1 and RFRLEN2 bit fields (see Table 15-27) determine how many serial words are in phase
1 and in phase 2, respectively, of the receive data frame.
Table 15-27. Register Bits Used to Set the Receive Frame Length
Register
RCR1
Bit
14-8
Name
Function
Type
Reset
Value
RFRLEN1
Receive frame length 1
R/W
000 0000
(RFRLEN1 + 1) is the number of serial words in phase 1 of the receive
frame.
RFRLEN1 = 000 0000
1 word in phase 1
RFRLEN1 = 000 0001
2 words in phase 1
|
|
|
|
RFRLEN1 = 111 1111
128 words in phase 1
976 Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-27. Register Bits Used to Set the Receive Frame Length (continued)
Register
RCR2
Bit
14-8
Name
Function
Type
Reset
Value
RFRLEN2
Receive frame length 2
R/W
000 0000
If a dual-phase frame is selected, (RFRLEN2 + 1) is the number of serial
words in phase 2 of the receive frame.
RFRLEN2 = 000 0000
1 word in phase 2
RFRLEN2 = 000 0001
2 words in phase 2
|
|
|
|
RFRLEN2 = 111 1111
128 words in phase 2
15.8.9.1 Selected Frame Length
The receive frame length is the number of serial words in the receive frame. Each frame can have one or
two phases, depending on value that you load into the RPHASE bit.
If a single-phase frame is selected (RPHASE = 0), the frame length is equal to the length of phase 1. If a
dual-phase frame is selected (RPHASE = 1), the frame length is the length of phase 1 plus the length of
phase 2.
The 7-bit RFRLEN fields allow up to 128 words per phase. See Table 15-28 for a summary of how to
calculate the frame length. This length corresponds to the number of words or logical time slots or
channels per frame-synchronization pulse.
Program the RFRLEN fields with [w minus 1], where w represents the number of words per phase. For the
example, if you want a phase length of 128 words in phase 1, load 127 into RFRLEN1.
Table 15-28. How to Calculate the Length of the Receive Frame
RPHASE
RFRLEN1
RFRLEN2
Frame Length
0
0 ≤ RFRLEN1 ≤ 127
Don't care
(RFRLEN1 + 1) words
1
0 ≤ RFRLEN1 ≤ 127
0 ≤ RFRLEN2 ≤ 127
(RFRLEN1 + 1) + (RFRLEN2 + 1) words
15.8.10 Enable/Disable the Receive Frame-Synchronization Ignore Function
The RFIG bit (see Table 15-29) controls the receive frame-synchronization ignore function.
Table 15-29. Register Bit Used to Enable/Disable the Receive Frame-Synchronization Ignore
Function
Register
RCR2
Bit
Name
Function
2
RFIG
Receive frame-synchronization ignore
RFIG = 0
An unexpected receive frame-synchronization pulse causes the
McBSP to restart the frame transfer.
RFIG = 1
The McBSP ignores unexpected receive frame-synchronization
pulses.
Type
Reset
Value
R/W
0
15.8.10.1 Unexpected Frame-Synchronization Pulses and the Frame-Synchronization Ignore Function
If a frame-synchronization pulse starts the transfer of a new frame before the current frame is fully
received, this pulse is treated as an unexpected frame-synchronization pulse.
When RFIG = 1, reception continues, ignoring the unexpected frame-synchronization pulses.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
977
Receiver Configuration
www.ti.com
When RFIG = 0, an unexpected FSR pulse causes the McBSP to discard the contents of RSR[1,2] in
favor of the new incoming data. Therefore, if RFIG = 0 and an unexpected frame-synchronization pulse
occurs, the serial port:
1. Aborts the current data transfer
2. Sets RSYNCERR in SPCR1 to 1
3. Begins the transfer of a new data word
For more details about the frame-synchronization error condition, see Section 15.5.3, Unexpected Receive
Frame-Synchronization Pulse.
15.8.10.2 Examples of Effects of RFIG
Figure 15-43 shows an example in which word B is interrupted by an unexpected frame-synchronization
pulse when (R/X)FIG = 0. In the case of reception, the reception of B is aborted (B is lost), and a new data
word © in this example) is received after the appropriate data delay. This condition is a receive
synchronization error, which sets the RSYNCERR bit.
Figure 15-43. Unexpected Frame-Synchronization Pulse With (R/X)FIG = 0
CLK(R/X)
FS(R/X)
DR
A0
B7
B6
C7
DX
A0
B7
B6
B7
Frame synchronization aborts current transfer
New data received
C6
C5
C4
C3
C2
C1
C0
Current data retransmitted
B6
B5
B4
B3
B2
B1
B0
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
D7
D6
C7
C6
(R/X)SYNCERR
In contrast with Figure 15-43, Figure 15-44 shows McBSP operation when unexpected framesynchronization signals are ignored (when (R/X)FIG = 1). Here, the transfer of word B is not affected by
an unexpected pulse.
Figure 15-44. Unexpected Frame-Synchronization Pulse With (R/X)FIG = 1
CLK(R/X)
Frame synchronization ignored
FS(R/X)
D(R/X)
A0
B7
B6
B5
B4
B3
B2
B1
B0
C7
C6
C5
(R/X)SYNCERR
ÁÁ
ÁÁ
ÁÁ
ÁÁ
C4
15.8.11 Set the Receive Companding Mode
The RCOMPAND bits (see Table 15-30) determine whether companding or another data transfer option is
chosen for McBSP reception.
Table 15-30. Register Bits Used to Set the Receive Companding Mode
Register
Bit
Name
Function
RCR2
4-3
RCOMPAND Receive companding mode
Type
Reset
Value
R/W
00
Modes other than 00b are enabled only when the appropriate RWDLEN is
000b, indicating 8-bit data.
RCOMPAND = 00 No companding, any size data, MSB received first
RCOMPAND = 01 No companding, 8-bit data, LSB received first (for details,
see Section 15.8.11.4).
RCOMPAND = 10 μ-law companding, 8-bit data, MSB received first
RCOMPAND = 11 A-law companding, 8-bit data, MSB received first
978 Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
15.8.11.1 Companding
Companding (COMpressing and exPANDing) hardware allows compression and expansion of data in
either μ-law or A-law format. The companding standard employed in the United States and Japan is μ-law.
The European companding standard is referred to as A-law. The specifications for μ-law and A-law log
PCM are part of the CCITT G.711 recommendation.
A-law and μ-law allow 13 bits and 14 bits of dynamic range, respectively. Any values outside this range
are set to the most positive or most negative value. Thus, for companding to work best, the data
transferred to and from the McBSP via the CPU or DMA controller must be at least 16 bits wide.
The μ-law and A-law formats both encode data into 8-bit code words. Companded data is always 8 bits
wide; the appropriate word length bits (RWDLEN1, RWDLEN2, XWDLEN1, XWDLEN2) must therefore be
set to 0, indicating an 8-bit wide serial data stream. If companding is enabled and either of the frame
phases does not have an 8-bit word length, companding continues as if the word length is 8 bits.
Figure 15-45 illustrates the companding processes. When companding is chosen for the transmitter,
compression occurs during the process of copying data from DXR1 to XSR1. The transmit data is
encoded according to the specified companding law (A-law or μ-law). When companding is chosen for the
receiver, expansion occurs during the process of copying data from RBR1 to DRR1. The receive data is
decoded to 2's-complement format.
Figure 15-45. Companding Processes for Reception and for Transmission
DR
RSR1
DX
8
RBR1
16
Expand
8
XSR1
Compress
16
DRR1
To CPU or DMA controller
DXR1
From CPU or DMA controller
15.8.11.2 Format of Expanded Data
For reception, the 8-bit compressed data in RBR1 is expanded to left-justified 16-bit data in DRR1. The
RJUST bit of SPCR1 is ignored when companding is used.
15.8.11.3 Companding Internal Data
If the McBSP is otherwise unused (the serial port transmit and receive sections are reset), the
companding hardware can compand internal data. See Section 15.1.5.2, Capability to Compand Internal
Data.
15.8.11.4 Option to Receive LSB First
Normally, the McBSP transmits or receives all data with the most significant bit (MSB) first. However,
certain 8-bit data protocols (that do not use companded data) require the least significant bit (LSB) to be
transferred first. If you set RCOMPAND = 01b in RCR2, the bit ordering of 8-bit words is reversed during
reception. Similar to companding, this feature is enabled only if the appropriate word length bits are set to
0, indicating that 8-bit words are to be transferred serially. If either phase of the frame does not have an 8bit word length, the McBSP assumes the word length is eight bits and LSB-first ordering is done.
15.8.12 Set the Receive Data Delay
The RDATDLY bits (see Table 15-31) determine the length of the data delay for the receive frame.
Table 15-31. Register Bits Used to Set the Receive Data Delay
Register
Bit
Name
Function
Type
Reset
Value
RCR2
1-0
RDATDLY
Receive data delay
R/W
00
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
RDATDLY = 00
0-bit data delay
RDATDLY = 01
1-bit data delay
RDATDLY = 10
2-bit data delay
Multichannel Buffered Serial Port (McBSP) 979
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-31. Register Bits Used to Set the Receive Data Delay (continued)
Register
Bit
Name
Function
Type
RDATDLY = 11
Reset
Value
Reserved
15.8.12.1 Data Delay
The start of a frame is defined by the first clock cycle in which frame synchronization is found to be active.
The beginning of actual data reception or transmission with respect to the start of the frame can be
delayed if required. This delay is called data delay.
RDATDLY specifies the data delay for reception. The range of programmable data delay is zero to two bitclocks (RDATDLY = 00b-10b), as described in Table 15-31 and shown in Figure 15-46. In this figure, the
data transferred is an 8-bit value with bits labeled B7, B6, B5, and so on. Typically a 1-bit delay is
selected, because data often follows a 1-cycle active frame-synchronization pulse.
15.8.12.2 0-Bit Data Delay
Normally, a frame-synchronization pulse is detected or sampled with respect to an edge of internal serial
clock CLK(R/X). Thus, on the following cycle or later (depending on the data delay value), data may be
received or transmitted. However, in the case of 0-bit data delay, the data must be ready for reception
and/or transmission on the same serial clock cycle.
For reception, this problem is solved because receive data is sampled on the first falling edge of MCLKR
where an active-high internal FSR is detected. However, data transmission must begin on the rising edge
of the internal CLKX clock that generated the frame synchronization. Therefore, the first data bit is
assumed to be present in XSR1, and thus on DX. The transmitter then asynchronously detects the framesynchronization signal (FSX) going active high and immediately starts driving the first bit to be transmitted
on the DX pin.
Figure 15-46. Range of Programmable Data Delay
CLK(R/X)
FS(R/X)
Á
Á
Á ÁÁ
Á ÁÁ Á
ÁÁ
ÁÁ Á
Á
Á
0-bit delay
D(R/X)
Data delay 0
B7
B6
B5
B4
B3
B6
B5
B4
B7
B6
B5
1-bit delay
D(R/X)
Data delay 1
B7
2-bit delay
D(R/X)
Data delay 2
15.8.12.3 2-Bit Data Delay
A data delay of two bit periods allows the serial port to interface to different types of T1 framing devices
where the data stream is preceded by a framing bit. During reception of such a stream with data delay of
two bits (framing bit appears after a 1-bit delay and data appears after a 2-bit delay), the serial port
essentially discards the framing bit from the data stream, as shown in Figure 15-47. In this figure, the data
transferred is an 8-bit value with bits labeled B7, B6, B5, and so on.
980
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Figure 15-47. 2-Bit Data Delay Used to Skip a Framing Bit
CLKR
ÁÁ
ÁÁ
ÁÁ
ÁÁ
FSR
2-bit delay
DR
Framing bit
B7
B6
B5
15.8.13 Set the Receive Sign-Extension and Justification Mode
The RJUST bits (see Table 15-32) determine whether data received by the McBSP is sign-extended and
how it is justified.
Table 15-32. Register Bits Used to Set the Receive Sign-Extension and Justification Mode
Register
SPCR1
Bit
Name
14-13 RJUST
Function
Type
Reset
Value
R/W
00
Receive sign-extension and justification mode
RJUST = 00
Right justify data and zero fill MSBs in DRR[1,2]
RJUST = 01
Right justify data and sign extend it into the MSBs in
DRR[1,2]
RJUST = 10
Left justify data and zero fill LSBs in DRR[1,2]
RJUST = 11
Reserved
15.8.13.1 Sign-Extension and the Justification
RJUST in SPCR1 selects whether data in RBR[1,2] is right- or left-justified (with respect to the MSB) in
DRR[1,2] and whether unused bits in DRR[1,2] are filled with zeros or with sign bits.
Table 15-33 and Table 15-34 show the effects of various RJUST values. The first table shows the effect
on an example 12-bit receive-data value ABCh. The second table shows the effect on an example 20-bit
receive-data value ABCDEh.
Table 15-33. Example: Use of RJUST Field With 12-Bit Data Value ABCh
RJUST
Justification
Extension
Value in
DRR2
Value in
DRR1
00b
Right
Zero fill MSBs
0000h
0ABCh
01b
Right
Sign extend data into MSBs
FFFFh
FABCh
10b
Left
Zero fill LSBs
0000h
ABC0h
11b
Reserved
Reserved
Reserved
Reserved
Table 15-34. Example: Use of RJUST Field With 20-Bit Data Value ABCDEh
RJUST
Justification
Extension
Value in
DRR2
Value in
DRR1
00b
Right
Zero fill MSBs
000Ah
BCDEh
01b
Right
Sign extend data into MSBs
FFFAh
BCDEh
10b
Left
Zero fill LSBs
ABCDh
E000h
11b
Reserved
Reserved
Reserved
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
981
Receiver Configuration
www.ti.com
15.8.14 Set the Receive Interrupt Mode
The RINTM bits (see Table 15-35) determine which event generates a receive interrupt request to the
CPU.
The receive interrupt (RINT) informs the CPU of changes to the serial port status. Four options exist for
configuring this interrupt. The options are set by the receive interrupt mode bits, RINTM, in SPCR1.
Table 15-35. Register Bits Used to Set the Receive Interrupt Mode
Register
Bit
Name
Function
SPCR1
5-4
RINTM
Receive interrupt mode
RINTM = 00
RINT generated when RRDY changes from 0 to 1. Interrupt on
every serial word by tracking the RRDY bit in SPCR1.
Regardless of the value of RINTM, RRDY can be read to
detect the RRDY = 1 condition.
RINTM = 01
RINT generated by an end-of-block or end-of-frame condition
in the receive multichannel selection mode. In the multichannel
selection mode, interrupt after every 16-channel block
boundary has been crossed within a frame and at the end of
the frame. For details, see Section 15.6.7.3, Using Interrupts
Between Block Transfers. In any other serial transfer case, this
setting is not applicable and, therefore, no interrupts are
generated.
RINTM = 10
RINT generated by a new receive frame-synchronization pulse.
Interrupt on detection of receive frame-synchronization pulses.
This generates an interrupt even when the receiver is in its
reset state. This is done by synchronizing the incoming framesynchronization pulse to the CPU clock and sending it to the
CPU via RINT.
RINTM = 11
RINT generated when RSYNCERR is set. Interrupt on framesynchronization error. Regardless of the value of RINTM,
RSYNCERR can be read to detect this condition. For
information on using RSYNCERR, see Section 15.5.3,
Unexpected Receive Frame-Synchronization Pulse.
Type
Reset
Value
R/W
00
15.8.15 Set the Receive Frame-Synchronization Mode
The bits described in Table 15-36 determine the source for receive frame synchronization and the function
of the FSR pin.
15.8.15.1 Receive Frame-Synchronization Modes
Table 15-37 shows how you can select various sources to provide the receive frame-synchronization
signal and the effect on the FSR pin. The polarity of the signal on the FSR pin is determined by the FSRP
bit.
In digital loopback mode (DLB = 1), the transmit frame-synchronization signal is used as the receive
frame-synchronization signal.
Also in the clock stop mode, the internal receive clock signal (MCLKR) and the internal receive framesynchronization signal (FSR) are internally connected to their transmit counterparts, CLKX and FSX.
Table 15-36. Register Bits Used to Set the Receive Frame Synchronization Mode
Register
Bit
Name
Function
PCR
10
FSRM
Receive frame-synchronization mode
982 Multichannel Buffered Serial Port (McBSP)
FSRM = 0
Receive frame synchronization is supplied by an
external source via the FSR pin.
FSRM = 1
Receive frame synchronization is supplied by
the sample rate generator. FSR is an output pin
reflecting internal FSR, except when GSYNC = 1
in SRGR2.
Type
Reset
Value
R/W
0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-36. Register Bits Used to Set the Receive Frame Synchronization Mode (continued)
Register
Bit
Name
Function
Type
Reset
Value
SRGR2
15
GSYNC
Sample rate generator clock synchronization mode
R/W
0
R/W
0
R/W
00
If the sample rate generator creates a frame-synchronization signal
(FSG) that is derived from an external input clock, the GSYNC bit
determines whether FSG is kept synchronized with pulses on the FSR
pin.
SPCR1
SPCR1
15
12-11
DLB
GSYNC = 0
No clock synchronization is used: CLKG
oscillates without adjustment, and FSG pulses
every (FPER + 1) CLKG cycles.
GSYNC = 1
Clock synchronization is used. When a pulse is
detected on the FSR pin:
• CLKG is adjusted as necessary so that it is
synchronized with the input clock on the
MCLKR pin.
• FSG pulses FSG only pulses in response
to a pulse on the FSR pin. The framesynchronization period defined in FPER is
ignored.
For more details, see Section 15.4.3,
Synchronizing Sample Rate Generator Outputs
to an External Clock.
Digital loopback mode
CLKSTP
DLB = 0
Digital loopback mode is disabled.
DLB = 1
Digital loopback mode is enabled. The receive
signals, including the receive framesynchronization signal, are connected internally
through multiplexers to the corresponding
transmit signals.
Clock stop mode
CLKSTP = 0Xb
Clock stop mode disabled; normal clocking for
non-SPI mode.
CLKSTP = 10b
Clock stop mode enabled without clock delay.
The internal receive clock signal (MCLKR) and
the internal receive frame-synchronization signal
(FSR) are internally connected to their transmit
counterparts, CLKX and FSX.
CLKSTP = 11b
Clock stop mode enabled with clock delay. The
internal receive clock signal (MCLKR) and the
internal receive frame-synchronization signal
(FSR) are internally connected to their transmit
counterparts, CLKX and FSX.
Table 15-37. Select Sources to Provide the Receive Frame-Synchronization Signal and the Effect
on the FSR Pin
Source of Receive Frame
Synchronization
DLB
FSRM
GSYNC
0
0
0 or 1
0
1
0
Internal FSR is driven by the sample rate
generator frame-synchronization signal
(FSG).
Output. FSG is inverted as determined by
FSRP before being driven out on the
FSR pin.
0
1
1
Internal FSR is driven by the sample rate
generator frame-synchronization signal
(FSG).
Input. The external frame-synchronization
input on the FSR pin is used to
synchronize CLKG and generate FSG
pulses.
1
0
0
Internal FSX drives internal FSR.
High impedance
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
FSR Pin Status
An external frame-synchronization signal Input
enters the McBSP through the FSR pin.
The signal is then inverted as determined
by FSRP before being used as internal
FSR.
Multichannel Buffered Serial Port (McBSP) 983
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-37. Select Sources to Provide the Receive Frame-Synchronization Signal and the Effect
on the FSR Pin (continued)
Source of Receive Frame
Synchronization
DLB
FSRM
GSYNC
1
0 or 1
1
Internal FSX drives internal FSR.
FSR Pin Status
Input. If the sample rate generator is
running, external FSR is used to
synchronize CLKG and generate FSG
pulses.
1
1
0
Internal FSX drives internal FSR.
Output. Receive (same as transmit)
frame synchronization is inverted as
determined by FSRP before being driven
out on the FSR pin.
15.8.16 Set the Receive Frame-Synchronization Polarity
The FSRP bit (see Table 15-38) determines whether frame-synchronization pulses are active high or
active low on the FSR pin.
Table 15-38. Register Bit Used to Set Receive Frame-Synchronization Polarity
Register
PCR
Bit
Name
Function
2
FSRP
Receive frame-synchronization polarity
FSRP = 0
Frame-synchronization pulse FSR is active high.
FSRP = 1
Frame-synchronization pulse FSR is active low.
Type
Reset
Value
R/W
0
15.8.16.1 Frame-Synchronization Pulses, Clock Signals, and Their Polarities
Receive frame-synchronization pulses can be generated internally by the sample rate generator (see
Section 15.4.2) or driven by an external source. The source of frame synchronization is selected by
programming the mode bit, FSRM, in PCR. FSR is also affected by the GSYNC bit in SRGR2. For
information about the effects of FSRM and GSYNC, see Section 15.8.15, Set the Receive FrameSynchronization Mode. Similarly, receive clocks can be selected to be inputs or outputs by programming
the mode bit, CLKRM, in the PCR (see Section 15.8.17, Set the Receive Clock Mode).
When FSR and FSX are inputs (FSXM = FSRM= 0, external frame-synchronization pulses), the McBSP
detects them on the internal falling edge of clock, internal MCLKR, and internal CLKX, respectively. The
receive data arriving at the DR pin is also sampled on the falling edge of internal MCLKR. These internal
clock signals are either derived from an external source via CLK(R/X) pins or driven by the sample rate
generator clock (CLKG) internal to the McBSP.
When FSR and FSX are outputs, implying that they are driven by the sample rate generator, they are
generated (transition to their active state) on the rising edge of the internal clock, CLK(R/X). Similarly, data
on the DX pin is output on the rising edge of internal CLKX.
FSRP, FSXP, CLKRP, and CLKXP in the pin control register (PCR) configure the polarities of the FSR,
FSX, MCLKR, and CLKX signals, respectively. All frame-synchronization signals (internal FSR, internal
FSX) that are internal to the serial port are active high. If the serial port is configured for external frame
synchronization (FSR/FSX are inputs to McBSP), and FSRP = FSXP = 1, the external active-low framesynchronization signals are inverted before being sent to the receiver (internal FSR) and transmitter
(internal FSX). Similarly, if internal synchronization (FSR/FSX are output pins and GSYNC = 0) is
selected, the internal active-high frame-synchronization signals are inverted, if the polarity bit FS(R/X)P =
1, before being sent to the FS(R/X) pin.
On the transmit side, the transmit clock polarity bit, CLKXP, sets the edge used to shift and clock out
transmit data. Data is always transmitted on the rising edge of internal CLKX. If CLKXP = 1 and external
clocking is selected (CLKXM = 0 and CLKX is an input), the external falling-edge triggered input clock on
CLKX is inverted to a rising-edge triggered clock before being sent to the transmitter. If CLKXP = 1, and
internal clocking selected (CLKXM = 1 and CLKX is an output pin), the internal (rising-edge triggered)
clock, internal CLKX, is inverted before being sent out on the MCLKX pin.
984
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Similarly, the receiver can reliably sample data that is clocked with a rising edge clock (by the transmitter).
The receive clock polarity bit, CLKRP, sets the edge used to sample received data. The receive data is
always sampled on the falling edge of internal MCLKR. Therefore, if CLKRP = 1 and external clocking is
selected (CLKRM = 0 and MCLKR is an input pin), the external rising-edge triggered input clock on
MCLKR is inverted to a falling-edge triggered clock before being sent to the receiver. If CLKRP = 1 and
internal clocking is selected (CLKRM = 1), the internal falling-edge triggered clock is inverted to a risingedge triggered clock before being sent out on the MCLKR pin.
MCLKRP = CLKXP in a system where the same clock (internal or external) is used to clock the receiver
and transmitter. The receiver uses the opposite edge as the transmitter to ensure valid setup and hold of
data around this edge. Figure 15-48 shows how data clocked by an external serial device using a rising
edge can be sampled by the McBSP receiver on the falling edge of the same clock.
Figure 15-48. Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a
Falling Edge
Internal
CLKR
Á
Á
Á
Á
DR
Data setup
Data hold
B7
B6
Set the SRG Frame-Synchronization Period and Pulse Width.
15.8.16.2 Frame-Synchronization Period and the Frame-Synchronization Pulse Width
The sample rate generator can produce a clock signal, CLKG, and a frame-synchronization signal, FSG. If
the sample rate generator is supplying receive or transmit frame synchronization, you must program the
bit fields FPER and FWID.
On FSG, the period from the start of a frame-synchronization pulse to the start of the next pulse is (FPER
+ 1) CLKG cycles. The 12 bits of FPER allow a frame-synchronization period of 1 to 4096 CLKG cycles,
which allows up to 4096 data bits per frame. When GSYNC = 1, FPER is a don't care value.
Each pulse on FSG has a width of (FWID + 1) CLKG cycles. The eight bits of FWID allow a pulse width of
1 to 256 CLKG cycles. It is recommended that FWID be programmed to a value less than the
programmed word length.
The values in FPER and FWID are loaded into separate down-counters. The 12-bit FPER counter counts
down the generated clock cycles from the programmed value (4095 maximum) to 0. The 8-bit FWID
counter counts down from the programmed value (255 maximum) to 0. Table 15-39 shows settings for
FPER and FWID.
Figure 15-49 shows a frame-synchronization period of 16 CLKG periods (FPER = 15 or 00001111b) and a
frame-synchronization pulse with an active width of 2 CLKG periods (FWID = 1).
Table 15-39. Register Bits Used to Set the SRG Frame-Synchronization Period and Pulse Width
Register
Bit
Name
Function
Type
Reset Value
SRGR2
11-0
FPER
Sample rate generator frame-synchronization period
R/W
0000 0000 0000
R/W
0000 0000
For the frame-synchronization signal FSG, (FPER + 1)
determines the period from the start of a framesynchronization pulse to the start of the next framesynchronization pulse.
Range for (FPER + 1):
1 to 4096 CLKG cycles
SRGR1
15-8
FWID
Sample rate generator frame-synchronization pulse width
This field plus 1 determines the width of each framesynchronization pulse on FSG.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP) 985
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-39. Register Bits Used to Set the SRG Frame-Synchronization Period and Pulse
Width (continued)
Register
Bit
Name
Function
Type
Reset Value
Range for (FWID + 1):
1 to 256 CLKG cycles
Figure 15-49. Frame of Period 16 CLKG Periods and Active Width of 2 CLKG Periods
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLKG
Frame-synchronization period: (FPER+1) x CLKG
Frame-synchronization pulse width: (FWID + 1) x CLKG
FSG
When the sample rate generator comes out of reset, FSG is in its inactive state. Then, when GRST = 1
and FSGM = 1, a frame-synchronization pulse is generated. The frame width value (FWID + 1) is counted
down on every CLKG cycle until it reaches 0, at which time FSG goes low. At the same time, the frame
period value (FPER + 1) is also counting down. When this value reaches 0, FSG goes high, indicating a
new frame.
15.8.17 Set the Receive Clock Mode
Table 15-40 shows the settings for bits used to set receive clock mode.
Table 15-40. Register Bits Used to Set the Receive Clock Mode
Register
PCR
Bit
8
Name
Function
Type
Reset
Value
CLKRM
Receive clock mode
R/W
0
R/W
00
Case 1: Digital loopback mode not set (DLB = 0) in SPCR1.
CLKRM = 0
The MCLKR pin is an input pin that supplies the
internal receive clock (MCLKR).
CLKRM = 1
Internal MCLKR is driven by the sample rate
generator of the McBSP. The MCLKR pin is an
output pin that reflects internal MCLKR.
Case 2: Digital loopback mode set (DLB = 1) in SPCR1.
SPCR1
15
DLB
CLKRM = 0
The MCLKR pin is in the high impedance state.
The internal receive clock (MCLKR) is driven by
the internal transmit clock (CLKX). Internal
CLKX is derived according to the CLKXM bit of
PCR.
CLKRM = 1
Internal MCLKR is driven by internal CLKX. The
MCLKR pin is an output pin that reflects internal
MCLKR. Internal CLKX is derived according to
the CLKXM bit of PCR.
Digital loopback mode
986 Multichannel Buffered Serial Port (McBSP)
DLB = 0
Digital loopback mode is disabled.
DLB = 1
Digital loopback mode is enabled. The receive
signals, including the receive framesynchronization signal, are connected internally
through multiplexers to the corresponding
transmit signals.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-40. Register Bits Used to Set the Receive Clock Mode (continued)
Register
SPCR1
Bit
12-11
Name
Function
CLKSTP
Clock stop mode
CLKSTP = 0Xb
Clock stop mode disabled; normal clocking for
non-SPI mode.
CLKSTP = 10b
Clock stop mode enabled without clock delay.
The internal receive clock signal (MCLKR) and
the internal receive frame-synchronization signal
(FSR) are internally connected to their transmit
counterparts, CLKX and FSX.
CLKSTP = 11b
Clock stop mode enabled with clock delay. The
internal receive clock signal (MCLKR) and the
internal receive frame-synchronization signal
(FSR) are internally connected to their transmit
counterparts, CLKX and FSX.
Type
Reset
Value
R/W
00
15.8.17.1 Selecting a Source for the Receive Clock and a Data Direction for the MCLKR Pin
Table 15-41 shows how you can select various sources to provide the receive clock signal and affect the
MCLKR pin. The polarity of the signal on the MCLKR pin is determined by the CLKRP bit.
In the digital loopback mode (DLB = 1), the transmit clock signal is used as the receive clock signal.
Also, in the clock stop mode, the internal receive clock signal (MCLKR) and the internal receive framesynchronization signal (FSR) are internally connected to their transmit counterparts, CLKX and FSX.
Table 15-41. Receive Clock Signal Source Selection
DLB in
SPCR1
CLKRM in
PCR
Source of Receive Clock
MCLKR Pin Status
0
0
The MCLKR pin is an input driven by an
external clock. The external clock signal is
inverted as determined by CLKRP before
being used.
Input
0
1
The sample rate generator clock (CLKG)
drives internal MCLKR.
Output. CLKG, inverted as determined by CLKRP,
is driven out on the MCLKR pin.
1
0
Internal CLKX drives internal MCLKR. To
configure CLKX, see Section 15.9.18, Set the
Transmit Clock Mode.
High impedance
1
1
Internal CLKX drives internal MCLKR. To
configure CLKX, see Section 15.9.18, Set the
Transmit Clock Mode.
Output. Internal MCLKR (same as internal CLKX)
is inverted as determined by CLKRP before being
driven out on the MCLKR pin.
15.8.18 Set the Receive Clock Polarity
Table 15-42. Register Bit Used to Set Receive Clock Polarity
Register
PCR
Bit
0
Name
Function
CLKRP
Receive clock polarity
CLKRP = 0
Receive data sampled on falling edge of MCLKR
CLKRP = 1
Receive data sampled on rising edge of MCLKR
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Type
Reset
Value
R/W
0
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
987
Receiver Configuration
www.ti.com
15.8.18.1 Frame Synchronization Pulses, Clock Signals, and Their Polarities
Receive frame-synchronization pulses can be generated internally by the sample rate generator (see
Section 15.4.2) or driven by an external source. The source of frame synchronization is selected by
programming the mode bit, FSRM, in PCR. FSR is also affected by the GSYNC bit in SRGR2. For
information about the effects of FSRM and GSYNC, see Section 15.8.15, Set the Receive FrameSynchronization Mode. Similarly, receive clocks can be selected to be inputs or outputs by programming
the mode bit, CLKRM, in the PCR (see Section 15.8.17, Set the Receive Clock Mode).
When FSR and FSX are inputs (FSXM = FSRM= 0, external frame-synchronization pulses), the McBSP
detects them on the internal falling edge of clock, internal MCLKR, and internal CLKX, respectively. The
receive data arriving at the DR pin is also sampled on the falling edge of internal MCLKR. These internal
clock signals are either derived from external source via CLK(R/X) pins or driven by the sample rate
generator clock (CLKG) internal to the McBSP.
When FSR and FSX are outputs, implying that they are driven by the sample rate generator, they are
generated (transition to their active state) on the rising edge of internal clock, CLK(R/X). Similarly, data on
the DX pin is output on the rising edge of internal CLKX.
FSRP, FSXP, CLKRP, and CLKXP in the pin control register (PCR) configure the polarities of the FSR,
FSX, MCLKR, and CLKX signals, respectively. All frame-synchronization signals (internal FSR, internal
FSX) that are internal to the serial port are active high. If the serial port is configured for external frame
synchronization (FSR/FSX are inputs to McBSP) and FSRP = FSXP = 1, the external active-low framesynchronization signals are inverted before being sent to the receiver (internal FSR) and transmitter
(internal FSX). Similarly, if internal synchronization (FSR/FSX are output pins and GSYNC = 0) is
selected, the internal active-high frame-synchronization signals are inverted, if the polarity bit FS(R/X)P =
1, before being sent to the FS(R/X) pin.
On the transmit side, the transmit clock polarity bit, CLKXP, sets the edge used to shift and clock out
transmit data. Data is always transmitted on the rising edge of internal CLKX. If CLKXP = 1 and external
clocking is selected (CLKXM = 0 and CLKX is an input), the external falling-edge triggered input clock on
CLKX is inverted to a rising-edge triggered clock before being sent to the transmitter. If CLKXP = 1 and
internal clocking is selected (CLKXM = 1 and CLKX is an output pin), the internal (rising-edge triggered)
clock, internal CLKX, is inverted before being sent out on the MCLKX pin.
Similarly, the receiver can reliably sample data that is clocked with a rising edge clock (by the transmitter).
The receive clock polarity bit, CLKRP, sets the edge used to sample received data. The receive data is
always sampled on the falling edge of internal MCLKR. Therefore, if CLKRP = 1 and external clocking is
selected (CLKRM = 0 and MCLKR is an input pin), the external rising-edge triggered input clock on
MCLKR is inverted to a falling-edge triggered clock before being sent to the receiver. If CLKRP = 1 and
internal clocking is selected (CLKRM = 1), the internal falling-edge triggered clock is inverted to a risingedge triggered clock before being sent out on the MCLKR pin.
CLKRP = CLKXP in a system where the same clock (internal or external) is used to clock the receiver and
transmitter. The receiver uses the opposite edge as the transmitter to ensure valid setup and hold of data
around this edge. Figure 15-50 shows how data clocked by an external serial device using a rising edge
can be sampled by the McBSP receiver on the falling edge of the same clock.
Figure 15-50. Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a
Falling Edge
Internal
CLKR
Á
Á
Á
Á
DR
988
Multichannel Buffered Serial Port (McBSP)
Data setup
Data hold
B7
B6
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
15.8.19 Set the SRG Clock Divide-Down Value
Table 15-43. Register Bits Used to Set the Sample Rate Generator (SRG) Clock Divide-Down Value
Register
Bit
Name
Function
Type
Reset Value
SRGR1
7-0
CLKGDV
Sample rate generator clock divide-down value
R/W
0000 0001
The input clock of the sample rate generator is divided by
(CLKGDV + 1) to generate the required sample rate generator
clock frequency. The default value of CLKGDV is 1 (divide input
clock by 2).
15.8.19.1 Sample Rate Generator Clock Divider
The first divider stage generates the serial data bit clock from the input clock. This divider stage utilizes a
counter, preloaded by CLKGDV, that contains the divide ratio value.
The output of the first divider stage is the data bit clock, which is output as CLKG and which serves as the
input for the second and third stages of the divider.
CLKG has a frequency equal to 1/(CLKGDV + 1) of sample rate generator input clock. Thus, the sample
generator input clock frequency is divided by a value between 1 and 256. When CLKGDV is odd or equal
to 0, the CLKG duty cycle is 50%. When CLKGDV is an even value, 2p, representing an odd divide-down,
the high-state duration is p + 1 cycles and the low-state duration is p cycles.
15.8.20 Set the SRG Clock Synchronization Mode
For more details on using the clock synchronization feature, see Section 15.4.3, Synchronizing Sample
Rate Generator Outputs to an External Clock.
Table 15-44. Register Bit Used to Set the SRG Clock Synchronization Mode
Register
Bit
Name
Function
Type
Reset
Value
SRGR2
15
GSYNC
Sample rate generator clock synchronization
R/W
0
GSYNC is used only when the input clock source for the sample rate
generator is external—on the MCLKR or MCLKX pin.
GSYNC = 0
The sample rate generator clock (CLKG) is free
running. CLKG oscillates without adjustment, and
FSG pulses every (FPER + 1) CLKG cycles.
GSYNC = 1
Clock synchronization is performed. When a
pulse is detected on the FSR pin:
• CLKG is adjusted as necessary so that it is
synchronized with the input clock on the
MCLKR or MCLKX pin.
• FSG pulses. FSG only pulses in response to
a pulse on the FSR pin. The framesynchronization period defined in FPER is
ignored.
15.8.21 Set the SRG Clock Mode (Choose an Input Clock)
Table 15-45. Register Bits Used to Set the SRG Clock Mode (Choose an Input Clock)
Register
Bit
Name
Function
Sample rate generator clock mode
PCR
7
SCLKME
SRGR2
13
CLKSM
SCLKME = 0
CLKSM = 0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Type
Reset
Value
R/W
0
R/W
1
Reserved
Multichannel Buffered Serial Port (McBSP) 989
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
Table 15-45. Register Bits Used to Set the SRG Clock Mode (Choose an Input Clock) (continued)
Register
Bit
Name
Function
SCLKME = 0
Type
Reset
Value
Sample rate generator clock derived from
LSPCLK (default)
CLKSM = 1
SCLKME = 1
CLKSM = 0
SCLKME = 1
CLKSM = 1
Sample rate generator clock derived from MCLKR
pin
Sample rate generator clock derived from MCLKX
pin
15.8.21.1 SRG Clock Mode
The sample rate generator can produce a clock signal (CLKG) for use by the receiver, the transmitter, or
both, but CLKG is derived from an input clock. Table 15-45 shows the four possible sources of the input
clock. For more details on generating CLKG, see Section 15.4.1.1, Clock Generation in the Sample Rate
Generator.
990
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Receiver Configuration
www.ti.com
15.8.22 Set the SRG Input Clock Polarity
Table 15-46. Register Bits Used to Set the SRG Input Clock Polarity
Register
PCR
Bit
Name
Function
Type
Reset
Value
1
CLKXP
MCLKX pin polarity
R/W
0
R/W
0
CLKXP determines the input clock polarity when the MCLKX pin
supplies the input clock (SCLKME = 1 and CLKSM = 1).
PCR
0
CLKRP
CLKXP = 0
Rising edge on MCLKX pin generates transitions
on CLKG and FSG.
CLKXP = 1
Falling edge on MCLKX pin generates transitions
on CLKG and FSG.
MCLKR pin polarity
CLKRP determines the input clock polarity when the MCLKR pin
supplies the input clock (SCLKME = 1 and CLKSM = 0).
CLKRP = 0
Falling edge on MCLKR pin generates transitions
on CLKG and FSG.
CLKRP = 1
Rising edge on MCLKR pin generates transitions
on CLKG and FSG.
15.8.22.1 Using CLKXP/CLKRP to Choose an Input Clock Polarity
The sample rate generator can produce a clock signal (CLKG) and a frame-synchronization signal (FSG)
for use by the receiver, the transmitter, or both. To produce CLKG and FSG, the sample rate generator
must be driven by an input clock signal derived from the CPU clock or from an external clock on the CLKX
or MCLKR pin. If you use a pin, choose a polarity for that pin by using the appropriate polarity bit (CLKXP
for the MCLKX pin, CLKRP for the MCLKR pin). The polarity determines whether the rising or falling edge
of the input clock generates transitions on CLKG and FSG.
15.9 Transmitter Configuration
To
1.
2.
3.
configure the McBSP transmitter, perform the following procedure:
Place the McBSP/transmitter in reset (see Section 15.9.2).
Program the McBSP registers for the desired transmitter operation (see Section 15.9.1).
Take the transmitter out of reset (see Section 15.9.2).
15.9.1 Programming the McBSP Registers for the Desired Transmitter Operation
The following is a list of important tasks to be performed when you are configuring the McBSP transmitter.
Each task corresponds to one or more McBSP register bit fields.
• Global behavior:
– Set the transmitter pins to operate as McBSP pins.
– Enable/disable the digital loopback mode.
– Enable/disable the clock stop mode.
– Enable/disable transmit multichannel selection.
•
Data behavior:
– Choose 1 or 2 phases for the transmit frame.
– Set the transmit word length(s).
– Set the transmit frame length.
– Enable/disable the transmit frame-synchronization ignore function.
– Set the transmit companding mode.
– Set the transmit data delay.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
991
Transmitter Configuration
•
•
www.ti.com
– Set the transmit DXENA mode.
– Set the transmit interrupt mode.
Frame-synchronization behavior:
– Set the transmit frame-synchronization mode.
– Set the transmit frame-synchronization polarity.
– Set the SRG frame-synchronization period and pulse width.
Clock behavior:
– Set the transmit clock mode.
– Set the transmit clock polarity.
– Set the SRG clock divide-down value.
– Set the SRG clock synchronization mode.
– Set the SRG clock mode (choose an input clock).
– Set the SRG input clock polarity.
15.9.2 Resetting and Enabling the Transmitter
The first step of the transmitter configuration procedure is to reset the transmitter, and the last step is to
enable the transmitter (to take it out of reset). Table 15-47 describes the bits used for both of these steps.
Table 15-47. Register Bits Used to Place Transmitter in Reset Field Descriptions
Register
Bit
Field
SPCR2
7
FRST
SPCR2
SPCR2
6
0
Value
Description
Frame-synchronization logic reset
0
Frame-synchronization logic is reset. The sample rate generator does not generate framesynchronization signal FSG, even if GRST = 1.
1
Frame-synchronization is enabled. If GRST = 1, frame-synchronization signal FSG is
generated after (FPER + 1) number of CLKG clock cycles; all frame counters are loaded
with their programmed values.
GRST
Sample rate generator reset
0
Sample rate generator is reset. If GRST = 0 due to a device reset, CLKG is driven by the
CPU clock divided by 2, and FSG is driven low (inactive). If GRST = 0 due to program
code, CLKG and FSG are both driven low (inactive).
1
Sample rate generator is enabled. CLKG is driven according to the configuration
programmed in the sample rate generator registers (SRGR[1,2]). If FRST = 1, the
generator also generates the frame-synchronization signal FSG as programmed in the
sample rate generator registers.
XRST
Transmitter reset
0
The serial port transmitter is disabled and in the reset state.
1
The serial port transmitter is enabled.
15.9.2.1 Reset Considerations
The serial port can be reset in the following two ways:
1. A DSP reset (XRS signal driven low) places the receiver, transmitter, and sample rate generator in
reset. When the device reset is removed, GRST = FRST = RRST = XRST = 0, keeping the entire
serial port in the reset state.
2. The serial port transmitter and receiver can be reset directly using the RRST and XRST bits in the
serial port control registers. The sample rate generator can be reset directly using the GRST bit in
SPCR2.
3. When using the DMA, the order in which McBSP events must occur is important. DMA channel and
peripheral interrupts must be configured prior to releasing the McBSP transmitter from reset.
The reason for this is that an XRDY is fired when XRST = 1. The XRDY signals the DMA to start
copying data from the buffer into the transmit register. If the McBSP transmitter is released from reset
before the DMA channel and peripheral interrupts are configured, the XRDY signals before the DMA
channel can receive the signal; therefore, the DMA does not move the data from the buffer to the
992
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
transmit register. The DMA PERINTFLG is edge-sensitive and will fail to recognize the XRDY, which is
continuously high.
For more details about McBSP reset conditions and effects, see Section 15.10.2, Resetting and Initializing
a McBSP.
15.9.3 Set the Transmitter Pins to Operate as McBSP Pins
To configure a pin for its McBSP function , you should configure the bits of the GPxMUXn register
appropriately. In addition to this, bits 12 and 13 of the PCR register must be set to 0. These bits are
defined as reserved.
15.9.4 Enable/Disable the Digital Loopback Mode
The DLB bit determines whether the digital loopback mode is on. DLB is described in Table 15-48.
Table 15-48. Register Bit Used to Enable/Disable the Digital Loopback Mode
Register
Bit
Name
Function
SPCR1
15
DLB
Digital loopback mode
DLB = 0
Digital loopback mode is disabled.
DLB = 1
Digital loopback mode is enabled.
Type
Reset
Value
R/W
0
15.9.4.1 Digital Loopback Mode
In the digital loopback mode, the receive signals are connected internally through multiplexers to the
corresponding transmit signals, as shown in Table 15-49. This mode allows testing of serial port code with
a single DSP device; the McBSP receives the data it transmits.
Table 15-49. Receive Signals Connected to Transmit Signals in Digital Loopback Mode
This Receive Signal
Is Fed Internally by
This Transmit Signal
DR (receive data)
DX (transmit data)
FSR (receive frame synchronization)
FSX (transmit frame synchronization)
MCLKR (receive clock)
CLKX (transmit clock)
15.9.5 Enable/Disable the Clock Stop Mode
The CLKSTP bits determine whether the clock stop mode is on. CLKSTP is described in Table 15-50.
Table 15-50. Register Bits Used to Enable/Disable the Clock Stop Mode
Register
SPCR1
Bit
12-11
Name
Function
Type
Reset
Value
CLKSTP
Clock stop mode
R/W
00
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
CLKSTP = 0Xb
Clock stop mode disabled; normal clocking for
non-SPI mode.
CLKSTP = 10b
Clock stop mode enabled without clock delay
CLKSTP = 11b
Clock stop mode enabled with clock delay
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
993
Transmitter Configuration
www.ti.com
15.9.5.1 Clock Stop Mode
The clock stop mode supports the SPI master-slave protocol. If you do not plan to use the SPI protocol,
you can clear CLKSTP to disable the clock stop mode.
In the clock stop mode, the clock stops at the end of each data transfer. At the beginning of each data
transfer, the clock starts immediately (CLKSTP = 10b) or after a half-cycle delay (CLKSTP = 11b). The
CLKXP bit determines whether the starting edge of the clock on the MCLKX pin is rising or falling. The
CLKRP bit determines whether receive data is sampled on the rising or falling edge of the clock shown on
the MCLKR pin.
Table 15-51 summarizes the impact of CLKSTP, CLKXP, and CLKRP on serial port operation. In the clock
stop mode, the receive clock is tied internally to the transmit clock, and the receive frame-synchronization
signal is tied internally to the transmit frame-synchronization signal.
Table 15-51. Effects of CLKSTP, CLKXP, and CLKRP on the Clock Scheme
Bit Settings
Clock Scheme
CLKSTP = 00b or 01b
Clock stop mode disabled. Clock enabled for non-SPI mode.
CLKXP = 0 or 1
CLKRP = 0 or 1
CLKSTP = 10b
CLKXP = 0
Low inactive state without delay: The McBSP transmits data on the rising edge of CLKX and
receives data on the falling edge of MCLKR.
CLKRP = 0
CLKSTP = 11b
CLKXP = 0
Low inactive state with delay: The McBSP transmits data one-half cycle ahead of the rising
edge of CLKX and receives data on the rising edge of MCLKR.
CLKRP = 1
CLKSTP = 10b
CLKXP = 1
High inactive state without delay: The McBSP transmits data on the falling edge of CLKX and
receives data on the rising edge of MCLKR.
CLKRP = 0
CLKSTP = 11b
CLKXP = 1
High inactive state with delay: The McBSP transmits data one-half cycle ahead of the falling
edge of CLKX and receives data on the falling edge of MCLKR.
CLKRP = 1
15.9.6 Enable/Disable Transmit Multichannel Selection
For more details, see Section 15.6.7, Transmit Multichannel Selection Modes.
994
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
Table 15-52. Register Bits Used to Enable/Disable Transmit Multichannel Selection
Register
Bit
Name
Function
Type
Reset
Value
MCR2
1-0
XMCM
Transmit multichannel selection
R/W
00
XMCM = 00b
No transmit multichannel selection mode is on. All
channels are enabled and unmasked. No channels can
be disabled or masked.
XMCM = 01b
All channels are disabled unless they are selected in the
appropriate transmit channel enable registers (XCERs).
If enabled, a channel in this mode is also unmasked.
The XMCME bit determines whether 32 channels or 128
channels are selectable in XCERs.
XMCM = 10b
All channels are enabled, but they are masked unless
they are selected in the appropriate transmit channel
enable registers (XCERs).
The XMCME bit determines whether 32 channels or 128
channels are selectable in XCERs.
XMCM = 11b
This mode is used for symmetric transmission and
reception.
All channels are disabled for transmission unless they
are enabled for reception in the appropriate receive
channel enable registers (RCERs). Once enabled, they
are masked unless they are also selected in the
appropriate transmit channel enable registers (XCERs).
The XMCME bit determines whether 32 channels or 128
channels are selectable in RCERs and XCERs.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
995
Transmitter Configuration
www.ti.com
15.9.7 Choose One or Two Phases for the Transmit Frame
Table 15-53. Register Bit Used to Choose 1 or 2 Phases for the Transmit Frame
Register
Bit
Name
Function
Type
Reset
Value
XCR2
15
XPHASE
Transmit phase number
R/W
0
Specifies whether the transmit frame has 1 or 2 phases.
XPHASE = 0
Single-phase frame
XPHASE = 1
Dual-phase frame
15.9.8 Set the Transmit Word Length(s)
Table 15-54. Register Bits Used to Set the Transmit Word Length(s)
Register
Bit
Name
Function
Type
Reset
Value
XCR1
7-5
XWDLEN1
Transmit word length of frame phase 1
R/W
000
R/W
000
XCR2
7-5
XWDLEN2
XWDLEN1 = 000b
8 bits
XWDLEN1 = 001b
12 bits
XWDLEN1 = 010b
16 bits
XWDLEN1 = 011b
20 bits
XWDLEN1 = 100b
24 bits
XWDLEN1 = 101b
32 bits
XWDLEN1 = 11Xb
Reserved
Transmit word length of frame phase 2
XWDLEN2 = 000b
8 bits
XWDLEN2 = 001b
12 bits
XWDLEN2 = 010b
16 bits
XWDLEN2 = 011b
20 bits
XWDLEN2 = 100b
24 bits
XWDLEN2 = 101b
32 bits
XWDLEN2 = 11Xb
Reserved
15.9.8.1 Word Length Bits
Each frame can have one or two phases, depending on the value that you load into the RPHASE bit. If a
single-phase frame is selected, XWDLEN1 selects the length for every serial word transmitted in the
frame. If a dual-phase frame is selected, XWDLEN1 determines the length of the serial words in phase 1
of the frame, and XWDLEN2 determines the word length in phase 2 of the frame.
996
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
15.9.9 Set the Transmit Frame Length
Table 15-55. Register Bits Used to Set the Transmit Frame Length
Register
XCR1
Bit
14-8
Name
Function
Type
Reset Value
XFRLEN1
Transmit frame length 1
R/W
000 0000
R/W
000 0000
(XFRLEN1 + 1) is the number of serial words in phase 1 of the
transmit frame.
XCR2
14-8
XFRLEN2
XFRLEN1 = 000 0000
1 word in phase 1
XFRLEN1 = 000 0001
2 words in phase 1
|
|
|
|
XFRLEN1 = 111 1111
128 words in phase 1
Transmit frame length 2
If a dual-phase frame is selected, (XFRLEN2 + 1) is the
number of serial words in phase 2 of the transmit frame.
XFRLEN2 = 000 0000
1 word in phase 2
XFRLEN2 = 000 0001
2 words in phase 2
|
|
|
|
XFRLEN2 = 111 1111
128 words in phase 2
15.9.9.1 Selected Frame Length
The transmit frame length is the number of serial words in the transmit frame. Each frame can have one or
two phases, depending on the value that you load into the XPHASE bit.
If a single-phase frame is selected (XPHASE = 0), the frame length is equal to the length of phase 1. If a
dual-phase frame is selected (XPHASE = 1), the frame length is the length of phase 1 plus the length of
phase 2.
The 7-bit XFRLEN fields allow up to 128 words per phase. See Table 15-56 for a summary of how to
calculate the frame length. This length corresponds to the number of words or logical time slots or
channels per frame-synchronization pulse.
NOTE: Program the XFRLEN fields with [w minus 1], where w represents the number of words per
phase. For example, if you want a phase length of 128 words in phase 1, load 127 into
XFRLEN1.
Table 15-56. How to Calculate Frame Length
XPHASE
XFRLEN1
XFRLEN2
Frame Length
0
1
0 ≤ XFRLEN1 ≤ 127
Don't care
(XFRLEN1 + 1) words
0 ≤ XFRLEN1 ≤ 127
0 ≤ XFRLEN2 ≤ 127
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
(XFRLEN1 + 1) + (XFRLEN2 + 1) words
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
997
Transmitter Configuration
www.ti.com
15.9.10 Enable/Disable the Transmit Frame-Synchronization Ignore Function
Table 15-57. Register Bit Used to Enable/Disable the Transmit Frame-Synchronization Ignore
Function
Register
XCR2
Bit
Name
Function
2
XFIG
Transmit frame-synchronization ignore
XFIG = 0
An unexpected transmit frame-synchronization
pulse causes the McBSP to restart the frame
transfer.
XFIG = 1
The McBSP ignores unexpected transmit framesynchronization pulses.
Type
Reset
Value
R/W
0
15.9.10.1 Unexpected Frame-Synchronization Pulses and Frame-Synchronization Ignore
If a frame-synchronization pulse starts the transfer of a new frame before the current frame is fully
transmitted, this pulse is treated as an unexpected frame-synchronization pulse.
When XFIG = 1, normal transmission continues with unexpected frame-synchronization signals ignored.
When XFIG = 0 and an unexpected frame-synchronization pulse occurs, the serial port:
1. Aborts the present transmission
2. Sets XSYNCERR to 1 in SPCR2
3. Reinitiates transmission of the current word that was aborted
For more details about the frame-synchronization error condition, see Section 15.5.5, Unexpected
Transmit Frame-Synchronization Pulse.
15.9.10.2 Examples Showing the Effects of XFIG
Figure 15-51 shows an example in which word B is interrupted by an unexpected frame-synchronization
pulse when (R/X)FIG = 0. In the case of transmission, the transmission of B is aborted (B is lost). This
condition is a transmit synchronization error, which sets the XSYNCERR bit. No new data has been
written to DXR[1,2]; therefore, the McBSP transmits B again.
Figure 15-51. Unexpected Frame-Synchronization Pulse With (R/X) FIG = 0
CLK(R/X)
FS(R/X)
DR
A0
B7
B6
C7
DX
A0
B7
B6
B7
Frame synchronization aborts current transfer
New data received
C6
C5
C4
C3
C2
C1
C0
Current data retransmitted
B6
B5
B4
B3
B2
B1
B0
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
D7
D6
C7
C6
(R/X)SYNCERR
In contrast with Figure 15-51, Figure 15-52 shows McBSP operation when unexpected framesynchronization signals are ignored (when (R/X)FIG = 1). Here, the transfer of word B is not affected by
an unexpected frame-synchronization pulse.
Figure 15-52. Unexpected Frame-Synchronization Pulse With (R/X) FIG = 1
CLK(R/X)
Frame synchronization ignored
FS(R/X)
D(R/X)
A0
B7
B6
B5
B4
B3
B2
B1
B0
(R/X)SYNCERR
998
Multichannel Buffered Serial Port (McBSP)
C7
C6
C5
C4
Á
ÁÁ
Á
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
15.9.11 Set the Transmit Companding Mode
Table 15-58. Register Bits Used to Set the Transmit Companding Mode
Register
Bit
Name
Function
Type
Reset
Value
XCR2
4-3
XCOMPAND
Transmit companding mode
R/W
00
Modes other than 00b are enabled only when the appropriate
XWDLEN is 000b, indicating 8-bit data.
XCOMPAND = 00b
No companding, any size data, MSB
transmitted first
XCOMPAND = 01b
No companding, 8-bit data, LSB
transmitted first (for details, see
Section 15.8.11.4, Option to Receive
LSB First)
XCOMPAND = 10b
μ-law companding, 8-bit data, MSB
transmitted first
XCOMPAND = 11b
A-law companding, 8-bit data, MSB
transmitted first
15.9.11.1 Companding
Companding (COMpressing and exPANDing) hardware allows compression and expansion of data in
either μ-law or A-law format. The companding standard employed in the United States and Japan is μ-law.
The European companding standard is referred to as A-law. The specifications for μ-law and A-law log
PCM are part of the CCITT G.711 recommendation.
A-law and μ-law allow 13 bits and 14 bits of dynamic range, respectively. Any values outside this range
are set to the most positive or most negative value. Thus, for companding to work best, the data
transferred to and from the McBSP via the CPU or DMA controller must be at least 16 bits wide.
The μ-law and A-law formats both encode data into 8-bit code words. Companded data is always 8 bits
wide; the appropriate word length bits (RWDLEN1, RWDLEN2, XWDLEN1, XWDLEN2) must therefore be
set to 0, indicating an 8-bit wide serial data stream. If companding is enabled and either of the frame
phases does not have an 8-bit word length, companding continues as if the word length is 8 bits.
Figure 15-53 illustrates the companding processes. When companding is chosen for the transmitter,
compression occurs during the process of copying data from DXR1 to XSR1. The transmit data is
encoded according to the specified companding law (A-law or μ-law). When companding is chosen for the
receiver, expansion occurs during the process of copying data from RBR1 to DRR1. The receive data is
decoded to twos-complement format.
Figure 15-53. Companding Processes for Reception and for Transmission
DR
RSR1
DX
RBR1
XSR1
8
16
Expand
8
Compress
16
DRR1
To CPU or DMA controller
DXR1
From CPU or DMA controller
15.9.11.2 Format for Data To Be Compressed
For transmission using μ-law compression, make sure the 14 data bits are left-justified in DXR1, with the
remaining two low-order bits filled with 0s as shown in Figure 15-54.
Figure 15-54. μ-Law Transmit Data Companding Format
15-2
µ-law format in DXR1
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
1-0
Value
00
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
999
Transmitter Configuration
www.ti.com
For transmission using A-law compression, make sure the 13 data bits are left-justified in DXR1, with the
remaining three low-order bits filled with 0s as shown in Figure 15-55.
Figure 15-55. A-Law Transmit Data Companding Format
A-law format in DXR1
15-3
2-0
Value
000
15.9.11.3 Capability to Compand Internal Data
If the McBSP is otherwise unused (the serial port transmit and receive sections are reset), the
companding hardware can compand internal data. See Section 15.1.5.2, Capability to Compand Internal
Data.
15.9.11.4 Option to Transmit LSB First
Normally, the McBSP transmit or receives all data with the most significant bit (MSB) first. However,
certain 8-bit data protocols (that do not use companded data) require the least significant bit (LSB) to be
transferred first. If you set XCOMPAND = 01b in XCR2, the bit ordering of 8-bit words is reversed (LSB
first) before being sent from the serial port. Similar to companding, this feature is enabled only if the
appropriate word length bits are set to 0, indicating that 8-bit words are to be transferred serially. If either
phase of the frame does not have an 8-bit word length, the McBSP assumes the word length is eight bits
and LSB-first ordering is done.
15.9.12 Set the Transmit Data Delay
Table 15-59. Register Bits Used to Set the Transmit Data Delay
Register
Bit
Name
Function
XCR2
1-0
XDATDLY
Transmitter data delay
XDATDLY = 00
0-bit data delay
XDATDLY = 01
1-bit data delay
XDATDLY = 10
2-bit data delay
XDATDLY = 11
Reserved
Type
Reset
Value
R/W
00
15.9.12.1 Data Delay
The start of a frame is defined by the first clock cycle in which frame synchronization is found to be active.
The beginning of actual data reception or transmission with respect to the start of the frame can be
delayed if necessary. This delay is called data delay.
XDATDLY specifies the data delay for transmission. The range of programmable data delay is zero to two
bit-clocks (XDATDLY = 00b-10b), as described in Table 15-59 and Figure 15-56. In this figure, the data
transferred is an 8-bit value with bits labeled B7, B6, B5, and so on. Typically a 1-bit delay is selected,
because data often follows a 1-cycle active frame-synchronization pulse.
1000
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
Figure 15-56. Range of Programmable Data Delay
CLK(R/X)
FS(R/X)
ÁÁ
ÁÁ
ÁÁ ÁÁ
ÁÁ ÁÁ Á
ÁÁ
ÁÁ Á
Á
Á
0-bit delay
D(R/X)
Data delay 0
B7
B6
B5
B4
B3
B6
B5
B4
B7
B6
B5
1-bit delay
D(R/X)
Data delay 1
B7
2-bit delay
D(R/X)
Data delay 2
15.9.12.2 0-Bit Data Delay
Normally, a frame-synchronization pulse is detected or sampled with respect to an edge of serial clock
internal CLK(R/X). Thus, on the following cycle or later (depending on the data delay value), data can be
received or transmitted. However, in the case of 0-bit data delay, the data must be ready for reception
and/or transmission on the same serial clock cycle.
For reception this problem is solved because receive data is sampled on the first falling edge of MCLKR
where an active-high internal FSR is detected. However, data transmission must begin on the rising edge
of the internal CLKX clock that generated the frame synchronization. Therefore, the first data bit is
assumed to be present in XSR1, and thus DX. The transmitter then asynchronously detects the frame
synchronization, FSX, going active high and immediately starts driving the first bit to be transmitted on the
DX pin.
15.9.12.3 2-Bit Data Delay
A data delay of two bit-periods allows the serial port to interface to different types of T1 framing devices
where the data stream is preceded by a framing bit. During reception of such a stream with data delay of
two bits (framing bit appears after a 1-bit delay and data appears after a 2-bit delay), the serial port
essentially discards the framing bit from the data stream, as shown in the following figure. In this figure,
the data transferred is an 8-bit value with bits labeled B7, B6, B5, and so on.
Figure 15-57. 2-Bit Data Delay Used to Skip a Framing Bit
CLKR
ÁÁ
Á
Á
FSR
2-bit delay
DR
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Framing bit
B7
B6
B5
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1001
Transmitter Configuration
www.ti.com
15.9.13 Set the Transmit DXENA Mode
Table 15-60. Register Bit Used to Set the Transmit DXENA (DX Delay Enabler) Mode
Register
SPCR1
Bit
7
Name
Function
DXENA
DX delay enabler mode
DXENA = 0
DX delay enabler is off.
DXENA = 1
DX delay enabler is on.
Type
Reset
Value
R/W
0
15.9.13.1 DXENA Mode
The DXENA bit controls the delay enabler on the DX pin. Set DXENA to enable an extra delay for turn-on
time. This bit does not control the data itself, so only the first bit is delayed.
If you tie together the DX pins of multiple McBSPs, make sure DXENA = 1 to avoid having more than one
McBSP transmit on the data line at one time.
15.9.14 Set the Transmit Interrupt Mode
The transmitter interrupt (XINT) signals the CPU of changes to the serial port status. Four options exist for
configuring this interrupt. The options are set by the transmit interrupt mode bits, XINTM, in SPCR2.
Table 15-61. Register Bits Used to Set the Transmit Interrupt Mode
1002
Register
Bit
Name
Function
SPCR2
5-4
XINTM
Transmit interrupt mode
XINTM = 00
XINT generated when XRDY changes from 0 to 1.
XINTM = 01
XINT generated by an end-of-block or end-of-frame
condition in a transmit multichannel selection mode. In
any of the transmit multichannel selection modes,
interrupt after every 16-channel block boundary has
been crossed within a frame and at the end of the frame.
For details, see Section 15.6.7.3, Using Interrupts
Between Block Transfers. In any other serial transfer
case, this setting is not applicable and, therefore, no
interrupts are generated.
XINTM = 10
XINT generated by a new transmit framesynchronization pulse. Interrupt on detection of each
transmit frame-synchronization pulse. This generates an
interrupt even when the transmitter is in its reset state.
This is done by synchronizing the incoming framesynchronization pulse to the CPU clock and sending it to
the CPU via XINT.
XINTM = 11
XINT generated when XSYNCERR is set. Interrupt on
frame-synchronization error. Regardless of the value of
XINTM, XSYNCERR can be read to detect this
condition. For more information on using XSYNCERR,
see Section 15.5.5, Unexpected Transmit FrameSynchronization Pulse.
Multichannel Buffered Serial Port (McBSP)
Type
Reset
Value
R/W
00
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
15.9.15 Set the Transmit Frame-Synchronization Mode
Table 15-62. Register Bits Used to Set the Transmit Frame-Synchronization Mode
Register
Bit
Name
Function
PCR
11
FSXM
Transmit frame-synchronization mode
SRGR2
12
FSGM
FSXM = 0
Transmit frame synchronization is supplied by an
external source via the FSX pin.
FSXM = 1
Transmit frame synchronization is supplied by the
McBSP, as determined by the FSGM bit of SRGR2.
Sample rate generator transmit frame-synchronization mode
Type
Reset
Value
R/W
0
R/W
0
Used when FSXM = 1 in PCR.
FSGM = 0
The McBSP generates a transmit framesynchronization pulse when the content of DXR[1,2] is
copied to XSR[1,2].
FSGM = 1
The transmitter uses frame-synchronization pulses
generated by the sample rate generator. Program the
FWID bits to set the width of each pulse. Program the
FPER bits to set the frame-synchronization period.
15.9.15.1 Transmit Frame-Synchronization Modes
Table 15-63 shows how FSXM and FSGM select the source of transmit frame-synchronization pulses. The
three choices are:
• External frame-synchronization input
• Sample rate generator frame-synchronization signal (FSG)
• Internal signal that indicates a DXR-to-XSR copy has been made
Table 15-63 also shows the effect of each bit setting on the FSX pin. The polarity of the signal on the FSX
pin is determined by the FSXP bit.
Table 15-63. How FSXM and FSGM Select the Source of Transmit Frame-Synchronization Pulses
FSXM
FSGM
0
0 or 1
1
1
Source of Transmit Frame
Synchronization
FSX Pin Status
An external frame-synchronization signal enters the
McBSP through the FSX pin. The signal is then
inverted by FSXP before being used as internal FSX.
Input
1
Internal FSX is driven by the sample rate generator
frame-synchronization signal (FSG).
Output. FSG is inverted by FSXP before being driven
out on FSX pin.
0
A DXR-to-XSR copy causes the McBSP to generate a Output. The generated frame-synchronization pulse is
transmit frame-synchronization pulse that is 1 cycle
inverted as determined by FSXP before being driven
wide.
out on FSX pin.
15.9.15.2 Other Considerations
If the sample rate generator creates a frame-synchronization signal (FSG) that is derived from an external
input clock, the GSYNC bit determines whether FSG is kept synchronized with pulses on the FSR pin. For
more details, see Section 15.4.3, Synchronizing Sample Rate Generator Outputs to an External Clock.
In the clock stop mode (CLKSTP = 10b or 11b), the McBSP can act as a master or as a slave in the SPI
protocol. If the McBSP is a master and must provide a slave-enable signal (SPISTE) on the FSX pin,
make sure that FSXM = 1 and FSGM = 0 so that FSX is an output and is driven active for the duration of
each transmission. If the McBSP is a slave, make sure that FSXM = 0 so that the McBSP can receive the
slave-enable signal on the FSX pin.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1003
Transmitter Configuration
www.ti.com
15.9.16 Set the Transmit Frame-Synchronization Polarity
Table 15-64. Register Bit Used to Set Transmit Frame-Synchronization Polarity
Register
PCR
Bit
Name
Function
3
FSXP
Transmit frame-synchronization polarity
FSXP = 0
Frame-synchronization pulse FSX is active high.
FSXP = 1
Frame-synchronization pulse FSX is active low.
Type
Reset
Value
R/W
0
15.9.16.1 Frame Synchronization Pulses, Clock Signals, and Their Polarities
Transmit frame-synchronization pulses can be generated internally by the sample rate generator (see
Section 15.4.2) or driven by an external source. The source of frame synchronization is selected by
programming the mode bit, FSXM, in PCR. FSX is also affected by the FSGM bit in SRGR2. For
information about the effects of FSXM and FSGM, see Section 15.9.15, Set the Transmit FrameSynchronization Mode). Similarly, transmit clocks can be selected to be inputs or outputs by programming
the mode bit, CLKXM, in the PCR (see Section 15.9.18, Set the Transmit Clock Mode).
When FSR and FSX are inputs (FSXM = FSRM= 0, external frame-synchronization pulses), the McBSP
detects them on the internal falling edge of clock, internal MCLKR, and internal CLKX, respectively. The
receive data arriving at the DR pin is also sampled on the falling edge of internal MCLKR. These internal
clock signals are either derived from external source via CLK(R/X) pins or driven by the sample rate
generator clock (CLKG) internal to the McBSP.
When FSR and FSX are outputs, implying that they are driven by the sample rate generator, they are
generated (transition to their active state) on the rising edge of internal clock, CLK(R/X). Similarly, data on
the DX pin is output on the rising edge of internal CLKX.
FSRP, FSXP, CLKRP, and CLKXP in the pin control register (PCR) configure the polarities of the FSR,
FSX, MCLKR, and CLKX signals, respectively. All frame-synchronization signals (internal FSR, internal
FSX) that are internal to the serial port are active high. If the serial port is configured for external frame
synchronization (FSR/FSX are inputs to McBSP) and FSRP = FSXP = 1, the external active-low framesynchronization signals are inverted before being sent to the receiver (internal FSR) and transmitter
(internal FSX). Similarly, if internal synchronization (FSR/FSX are output pins and GSYNC = 0) is selected
and the polarity bit FS(R/X)P = 1, the internal active-high frame-synchronization signals are inverted
before being sent to the FS(R/X) pin.
On the transmit side, the transmit clock polarity bit, CLKXP, sets the edge used to shift and clock out
transmit data. Data is always transmitted on the rising edge of internal CLKX. If CLKXP = 1 and external
clocking is selected (CLKXM = 0 and CLKX is an input), the external falling-edge triggered input clock on
CLKX is inverted to a rising-edge triggered clock before being sent to the transmitter. If CLKXP = 1, and
internal clocking selected (CLKXM = 1 and CLKX is an output pin), the internal (rising-edge triggered)
clock, internal CLKX, is inverted before being sent out on the MCLKX pin.
Similarly, the receiver can reliably sample data that is clocked with a rising edge clock (by the transmitter).
The receive clock polarity bit, CLKRP, sets the edge used to sample received data. The receive data is
always sampled on the falling edge of internal MCLKR. Therefore, if CLKRP = 1 and external clocking is
selected (CLKRM = 0 and MCLKR is an input pin), the external rising-edge triggered input clock on
MCLKR is inverted to a falling-edge triggered clock before being sent to the receiver. If CLKRP = 1 and
internal clocking is selected (CLKRM = 1), the internal falling-edge triggered clock is inverted to a risingedge triggered clock before being sent out on the MCLKR pin.
CLKRP = CLKXP in a system where the same clock (internal or external) is used to clock the receiver and
transmitter. The receiver uses the opposite edge as the transmitter to ensure valid setup and hold of data
around this edge. Figure 15-58 shows how data clocked by an external serial device using a rising edge
can be sampled by the McBSP receiver on the falling edge of the same clock.
1004
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
Figure 15-58. Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a
Falling Edge
Internal
CLKR
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Data setup
DR
Data hold
B7
B6
15.9.17 Set the SRG Frame-Synchronization Period and Pulse Width
Table 15-65. Register Bits Used to Set SRG Frame-Synchronization Period and Pulse Width
Register
Bit
Name
Function
Type
Reset Value
SRGR2
11-0
FPER
Sample rate generator frame-synchronization period
R/W
0000 0000 0000
R/W
0000 0000
For the frame-synchronization signal FSG, (FPER + 1)
determines the period from the start of a framesynchronization pulse to the start of the next framesynchronization pulse.
Range for (FPER + 1):
SRGR1
15-8
FWID
1 to 4096 CLKG cycles.
Sample rate generator frame-synchronization pulse width
This field plus 1 determines the width of each framesynchronization pulse on FSG.
Range for (FWID + 1):
1 to 256 CLKG cycles.
15.9.17.1 Frame-Synchronization Period and Frame-Synchronization Pulse Width
The sample rate generator can produce a clock signal, CLKG, and a frame-synchronization signal, FSG. If
the sample rate generator is supplying receive or transmit frame synchronization, you must program the
bit fields FPER and FWID.
On FSG, the period from the start of a frame-synchronization pulse to the start of the next pulse is (FPER
+ 1) CLKG cycles. The 12 bits of FPER allow a frame-synchronization period of 1 to 4096 CLKG cycles,
which allows up to 4096 data bits per frame. When GSYNC = 1, FPER is a don't care value.
Each pulse on FSG has a width of (FWID + 1) CLKG cycles. The eight bits of FWID allow a pulse width of
1 to 256 CLKG cycles. It is recommended that FWID be programmed to a value less than the
programmed word length.
The values in FPER and FWID are loaded into separate down-counters. The 12-bit FPER counter counts
down the generated clock cycles from the programmed value (4095 maximum) to 0. The 8-bit FWID
counter counts down from the programmed value (255 maximum) to 0.
Figure 15-59 shows a frame-synchronization period of 16 CLKG periods (FPER = 15 or 00001111b) and a
frame-synchronization pulse with an active width of 2 CLKG periods (FWID = 1).
Figure 15-59. Frame of Period 16 CLKG Periods and Active Width of 2 CLKG Periods
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLKG
Frame-synchronization period: (FPER+1) x CLKG
Frame-synchronization pulse width: (FWID + 1) x CLKG
FSG
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1005
Transmitter Configuration
www.ti.com
When the sample rate generator comes out of reset, FSG is in its inactive state. Then, when GRST = 1
and FSGM = 1, a frame-synchronization pulse is generated. The frame width value (FWID + 1) is counted
down on every CLKG cycle until it reaches 0, at which time FSG goes low. At the same time, the frame
period value (FPER + 1) is also counting down. When this value reaches 0, FSG goes high, indicating a
new frame.
15.9.18 Set the Transmit Clock Mode
Table 15-66. Register Bit Used to Set the Transmit Clock Mode
Register
Bit
PCR
9
Name
Function
CLKXM
Transmit clock mode
CLKXM = 0
The transmitter gets its clock signal from an
external source via the MCLKX pin.
CLKXM = 1
The MCLKX pin is an output pin driven by the
sample rate generator of the McBSP.
Type
Reset
Value
R/W
0
15.9.18.1 Selecting a Source for the Transmit Clock and a Data Direction for the MCLKX pin
Table 15-67 shows how the CLKXM bit selects the transmit clock and the corresponding status of the
MCLKX pin. The polarity of the signal on the MCLKX pin is determined by the CLKXP bit.
Table 15-67. How the CLKXM Bit Selects the Transmit Clock and the Corresponding Status of the
MCLKX pin
CLKXM in
PCR
Source of Transmit Clock
MCLKX pin Status
0
Internal CLKX is driven by an external clock on the MCLKX pin. Input
CLKX is inverted as determined by CLKXP before being used.
1
Internal CLKX is driven by the sample rate generator clock,
CLKG.
Output. CLKG, inverted as determined by CLKXP,
is driven out on CLKX.
15.9.18.2 Other Considerations
If the sample rate generator creates a clock signal (CLKG) that is derived from an external input clock, the
GSYNC bit determines whether CLKG is kept synchronized with pulses on the FSR pin. For more details,
see Section 15.4.3, Synchronizing Sample Rate Generator Outputs to an External Clock.
In the clock stop mode (CLKSTP = 10b or 11b), the McBSP can act as a master or as a slave in the SPI
protocol. If the McBSP is a master, make sure that CLKXM = 1 so that CLKX is an output to supply the
master clock to any slave devices. If the McBSP is a slave, make sure that CLKXM = 0 so that CLKX is an
input to accept the master clock signal.
15.9.19 Set the Transmit Clock Polarity
Table 15-68. Register Bit Used to Set Transmit Clock Polarity
Register
PCR
1006
Bit
Name
Function
1
CLKXP
Transmit clock polarity
CLKXP = 0
Transmit data sampled on rising edge of CLKX.
CLKXP = 1
Transmit data sampled on falling edge of CLKX.
Multichannel Buffered Serial Port (McBSP)
Type
Reset
Value
R/W
0
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Transmitter Configuration
www.ti.com
15.9.19.1 Frame Synchronization Pulses, Clock Signals, and Their Polarities
Transmit frame-synchronization pulses can be either generated internally by the sample rate generator
(see Section 15.4.2) or driven by an external source. The source of frame synchronization is selected by
programming the mode bit, FSXM, in PCR. FSX is also affected by the FSGM bit in SRGR2. For
information about the effects of FSXM and FSGM, see Section 15.9.15, Set the Transmit FrameSynchronization Mode). Similarly, transmit clocks can be selected to be inputs or outputs by programming
the mode bit, CLKXM, in the PCR (see Section 15.9.18, Set the Transmit Clock Mode).
When FSR and FSX are inputs (FSXM = FSRM= 0, external frame-synchronization pulses), the McBSP
detects them on the internal falling edge of clock, internal MCLKR, and internal CLKX, respectively. The
receive data arriving at the DR pin is also sampled on the falling edge of internal MCLKR. These internal
clock signals are either derived from external source via CLK(R/X) pins or driven by the sample rate
generator clock (CLKG) internal to the McBSP.
When FSR and FSX are outputs, implying that they are driven by the sample rate generator, they are
generated (transition to their active state) on the rising edge of internal clock, CLK(R/X). Similarly, data on
the DX pin is output on the rising edge of internal CLKX.
FSRP, FSXP, CLKRP, and CLKXP in the pin control register (PCR) configure the polarities of the FSR,
FSX, MCLKR, and CLKX signals, respectively. All frame-synchronization signals (internal FSR, internal
FSX) that are internal to the serial port are active high. If the serial port is configured for external frame
synchronization (FSR/FSX are inputs to McBSP), and FSRP = FSXP = 1, the external active-low framesynchronization signals are inverted before being sent to the receiver (internal FSR) and transmitter
(internal FSX). Similarly, if internal synchronization (FSR/FSX are output pins and GSYNC = 0) is
selected, the internal active-high frame-synchronization signals are inverted, if the polarity bit FS(R/X)P =
1, before being sent to the FS(R/X) pin.
On the transmit side, the transmit clock polarity bit, CLKXP, sets the edge used to shift and clock out
transmit data. Data is always transmitted on the rising edge of internal CLKX. If CLKXP = 1 and external
clocking is selected (CLKXM = 0 and CLKX is an input), the external falling-edge triggered input clock on
CLKX is inverted to a rising-edge triggered clock before being sent to the transmitter. If CLKXP = 1 and
internal clocking is selected (CLKXM = 1 and CLKX is an output pin), the internal (rising-edge triggered)
clock, internal CLKX, is inverted before being sent out on the MCLKX pin.
Similarly, the receiver can reliably sample data that is clocked with a rising edge clock (by the transmitter).
The receive clock polarity bit, CLKRP, sets the edge used to sample received data. The receive data is
always sampled on the falling edge of internal MCLKR. Therefore, if CLKRP = 1 and external clocking is
selected (CLKRM = 0 and CLKR is an input pin), the external rising-edge triggered input clock on CLKR is
inverted to a falling-edge triggered clock before being sent to the receiver. If CLKRP = 1 and internal
clocking is selected (CLKRM = 1), the internal falling-edge triggered clock is inverted to a rising-edge
triggered clock before being sent out on the MCLKR pin.
CLKRP = CLKXP in a system where the same clock (internal or external) is used to clock the receiver and
transmitter. The receiver uses the opposite edge as the transmitter to ensure valid setup and hold of data
around this edge (see Figure 15-58).
Figure 15-60 shows how data clocked by an external serial device using a rising edge can be sampled by
the McBSP receiver on the falling edge of the same clock.
Figure 15-60. Data Clocked Externally Using a Rising Edge and Sampled by the McBSP Receiver on a
Falling Edge
Internal
CLKR
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Data setup
DR
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Data hold
B7
B6
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1007
Emulation and Reset Considerations
www.ti.com
15.10 Emulation and Reset Considerations
This section covers the following topics:
• How to program McBSP response to a breakpoint in the high-level language debugger (see
Section 15.10.1)
• How to reset and initialize the various parts of the McBSP (see Section 15.10.2)
15.10.1 McBSP Emulation Mode
FREE and SOFT are special emulation bits in SPCR2 that determine the state of the McBSP when a
breakpoint is encountered in the high-level language debugger. If FREE = 1, the clock continues to run
upon a software breakpoint and data is still shifted out. When FREE = 1, the SOFT bit is a don't care.
If FREE = 0, the SOFT bit takes effect. If SOFT = 0 when breakpoint occurs, the clock stops immediately,
aborting a transmission. If SOFT = 1 and a breakpoint occurs while transmission is in progress, the
transmission continues until completion of the transfer and then the clock halts. These options are listed in
Table 15-69.
The McBSP receiver functions in a similar fashion. If a mode other than the immediate stop mode (SOFT
= FREE = 0) is chosen, the receiver continues running and an overrun error is possible.
Table 15-69. McBSP Emulation Modes Selectable with FREE and SOFT Bits of SPCR2
FREE
SOFT
McBSP Emulation Mode
0
0
Immediate stop mode (reset condition)
The transmitter or receiver stops immediately in response to a breakpoint.
0
1
Soft stop mode
When a breakpoint occurs, the transmitter stops after completion of the current word. The receiver is
not affected.
1
0 or 1
Free run mode
The transmitter and receiver continue to run when a breakpoint occurs.
15.10.2 Resetting and Initializing McBSP
15.10.2.1 McBSP Pin States: DSP Reset Versus Receiver/Transmitter Reset
Table 15-70 shows the state of McBSP pins when the serial port is reset due to direct receiver or
transmitter reset on the device.
Table 15-70. Reset State of Each McBSP Pin
Pin
Possible State(s) (1)
State Forced by Device
Reset
State Forced by
Receiver/Transmitter Reset
Receiver reset (RRST = 0 and GRST = 1)
MDRx
I
GPIO-input
Input
MCLKRx
I/O/Z
GPIO-input
Known state if input; MCLKR running if output
MFSRx
I/O/Z
GPIO-input
Known state if input; FSRP inactive state if output
Transmitter reset (XRST = 0 and GRST = 1)
MDXx
O/Z
GPIO Input
High impedance
MCLKXx
I/O/Z
GPIO-input
Known state if input; CLKX running if output
MFSXx
I/O/Z
GPIO-input
Known state if input; FSXP inactive state if output
(1)
1008
In Possible State(s) column, I = Input, O = Output, Z = High impedance. In the 28x family, at device reset, all I/Os default to
GPIO function and generally as inputs.
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Emulation and Reset Considerations
www.ti.com
15.10.2.2 Device Reset, McBSP Reset, and Sample Rate Generator Reset
When the McBSP is reset in either of the above two ways, the machine is reset to its initial state, including
reset of all counters and status bits. The receive status bits include RFULL, RRDY, and RSYNCERR. The
transmit status bits include XEMPTY, XRDY, and XSYNCERR.
• Device reset. When the whole DSP is reset (XRS signal is driven low), all McBSP pins are in GPIO
mode. When the device is pulled out of reset, the clock to the McBSP modules remains disabled.
• McBSP reset. When the receiver and transmitter reset bits, RRST and XRST, are loaded with 0s, the
respective portions of the McBSP are reset and activity in the corresponding section of the serial port
stops. Input-only pins such as MDRx, and all other pins that are configured as inputs are in a known
state. The MFSRx and MFSXx pins are driven to their inactive state if they are not outputs. If the
MCLKR and MCLKX pins are programmed as outputs, they are driven by CLKG, provided that GRST
= 1. Lastly, the MDXx pin is in the high-impedance state when the transmitter and/or the device is
reset.
During normal operation, the sample rate generator is reset if the GRST bit is cleared. GRST must be
0 only when neither the transmitter nor the receiver is using the sample rate generator. In this case,
the internal sample rate generator clock (CLKG) and its frame-synchronization signal (FSG) are driven
inactive low.
When the sample rate generator is not in the reset state (GRST = 1), pins MFSRx and MFSXx are in
an inactive state when RRST = 0 and XRST = 0, respectively, even if they are outputs driven by FSG.
This ensures that when only one portion of the McBSP is in reset, the other portion can continue
operation when GRST = 1 and its frame synchronization is driven by FSG.
• Sample rate generator reset. The sample rate generator is reset when GRST is loaded with 0.
When neither the transmitter nor the receiver is fed by CLKG and FSG, you can reset the sample rate
generator by clearing GRST. In this case, CLKG and FSG are driven inactive low. If you then set
GRST, CLKG starts and runs as programmed. Later, if GRST = 1, FSG pulses active high after the
programmed number of CLKG cycles has elapsed.
15.10.2.3 McBSP Initialization Procedure
The serial port initialization procedure is as follows:
1. Make XRST = RRST = GRST = 0 in SPCR[1,2]. If coming out of a device reset, this step is not
required.
2. While the serial port is in the reset state, program only the McBSP configuration registers (not the data
registers) as required.
3. Wait for two clock cycles. This ensures proper internal synchronization.
4. Set up data acquisition as required (such as writing to DXR[1,2]).
5. Make XRST = RRST = 1 to enable the serial port. Make sure that as you set these reset bits, you do
not modify any of the other bits in SPCR1 and SPCR2. Otherwise, you change the configuration you
selected in step 2.
6. Set FRST = 1, if internally generated frame synchronization is required.
7. Wait two clock cycles for the receiver and transmitter to become active.
Alternatively, on either write (step 1 or 5), the transmitter and receiver can be placed in or taken out of
reset individually by modifying the desired bit.
The above procedure for reset/initialization can be applied in general when the receiver or transmitter
must be reset during its normal operation and when the sample rate generator is not used for either
operation.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1009
Data Packing Examples
www.ti.com
NOTE:
1.
2.
3.
4.
The necessary duration of the active-low period of XRST or RRST is at least two
MCLKR/CLKX cycles.
The appropriate bits in serial port configuration registers SPCR[1,2], PCR, RCR[1,2],
XCR[1,2], and SRGR[1,2] must only be modified when the affected portion of the serial
port is in its reset state.
In most cases, the data transmit registers (DXR[1,2]) must be loaded by the CPU or by
the DMA controller only when the transmitter is enabled (XRST = 1). An exception to
this rule is when these registers are used for companding internal data (see
Section 15.1.5.2, Capability to Compand Internal Data).
The bits of the channel control registers—MCR[1,2], RCER[A-H], XCER[A-H]—can be
modified at any time as long as they are not being used by the current
reception/transmission in a multichannel selection mode.
15.10.2.4 Resetting the Transmitter While the Receiver is Running
Example 5 shows values in the control registers that reset and configure the transmitter while the receiver
is running.
Equation 5: Resetting and Configuring McBSP Transmitter While McBSP Receiver Running
SPCR1 = 0001h SPCR2 = 0030h
; The receiver is running with the receive interrupt (RINT) triggered by the
; receiver ready bit (RRDY). The transmitter is in its reset state
. The transmit interrupt (XINT) will be triggered by the transmit frame-sync
; error bit (XSYNCERR). PCR = 0900h
; Transmit frame synchronization is generated internally according to the
; FSGM bit of SRGR2.
; The transmit clock is driven by an external source.
; The receive clock continues to be driven by sample rate generator. The input clock
; of the sample rate generator is supplied by the CPU clock SRGR1 = 0001h SRGR2 = 2000h
; The CPU clock is the input clock for the sample rate generator. The sample
; rate generator divides the CPU clock by 2 to generate its output clock (CLKG).
; Transmit frame synchronization is tied to the automatic copying of data from
; the DXR(s) to the XSR(s). XCR1 = 0740h XCR2 = 8321h
; The transmit frame has two phases. Phase 1 has eight 16-bit words. Phase 2
; has four 12-bit words. There is 1-bit data delay between the start of a
; frame-sync pulse and the first data bit
; transmitted. SPCR2 = 0031h
; The transmitter is taken out of reset.
15.11 Data Packing Examples
This section shows two ways to implement data packing in the McBSP.
15.11.1 Data Packing Using Frame Length and Word Length
Frame length and word length can be manipulated to effectively pack data. For example, consider a
situation where four 8-bit words are transferred in a single-phase frame as shown in Figure 15-61. In this
case:
• (R/X)PHASE = 0: Single-phase frame
• (R/X)FRLEN1 = 0000011b: 4-word frame
• (R/X)WDLEN1 = 000b: 8-bit words
Four 8-bit data words are transferred to and from the McBSP by the CPU or by the DMA controller. Thus,
four reads from DRR1 and four writes to DXR1 are necessary for each frame.
1010
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Data Packing Examples
www.ti.com
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁÁÁ
Á
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
Á
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
Á
Á
Á
Á
Á
Á
Figure 15-61. Four 8-Bit Data Words Transferred To/From the McBSP
Word 1
CLKR
FSR
DR
RSR1 to RBR1 copy
CLKX
FSX
DX
Word 3
Word 2
DXR1 to XSR1 copy
RSR1 to RBR1 copy
DXR1 to XSR1 copy
Word 4
RSR1 to RBR1 copy
DXR1 to XSR1 copy
RSR1 to RBR1 copy
DXR1 to XSR1 copy
This data can also be treated as a single-phase frame consisting of one 32-bit data word, as shown in
Figure 15-62. In this case:
• (R/X)PHASE = 0: Single-phase frame
• (R/X)FRLEN1 = 0000000b: 1-word frame
• (R/X)WDLEN1 = 101b: 32-bit word
Two 16-bit data words are transferred to and from the McBSP by the CPU or DMA controller. Thus, two
reads, from DRR2 and DRR1, and two writes, to DXR2 and DXR1, are necessary for each frame. This
results in only half the number of transfers compared to the previous case. This manipulation reduces the
percentage of bus time required for serial port data movement.
NOTE: When the word length is larger than 16 bits, make sure you access DRR2/DXR2 before you
access DRR1/DXR1. McBSP activity is tied to accesses of DRR1/DXR1. During the
reception of 24-bit or 32-bit words, read DRR2 and then read DRR1. Otherwise, the next
RBR[1,2]-to-DRR[1,2] copy occurs before DRR2 is read. Similarly, during the transmission of
24-bit or 32-bit words, write to DXR2 and then write to DXR1. Otherwise, the next DXR[1,2]to-XSR[1,2] copy occurs before DXR2 is loaded with new data.
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
Á
ÁÁ
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
Á
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
Á
ÁÁ
Á
ÁÁ
Figure 15-62. One 32-Bit Data Word Transferred To/From the McBSP
Word 1
CLKR
FSR
DR
RBR2 to DRR2 copy
RBR1 to DRR1 copy
CLKX
FSX
DX
DXR2 to XSR2 copy
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
DXR1 to XSR1 copy
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1011
Data Packing Examples
www.ti.com
15.11.2 Data Packing Using Word Length and the Frame-Synchronization Ignore Function
When there are multiple words per frame, you can implement data packing by increasing the word length
(defining a serial word with more bits) and by ignoring frame-synchronization pulses. First, consider
Figure 15-63, which shows the McBSP operating at the maximum packet frequency. Here, each frame
only has a single 8-bit word. Notice the frame-synchronization pulse that initiates each frame transfer for
reception and for transmission. For reception, this configuration requires one read operation for each
word. For transmission, this configuration requires one write operation for each word.
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁÁÁ
Á
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁÁÁ
Á
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁÁÁ
Á
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
ÁÁÁÁÁÁ
Á
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
Á
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
Á
Á
Á
Á
Á
Figure 15-63. 8-Bit Data Words Transferred at Maximum Packet Frequency
Word 1
Word 3
Word 2
Word 4
CLKR
FSR
DR
RBR1 to DRR1 copy
RBR1 to DRR1 copy
RBR1 to DRR1 copy
RBR1 to DRR1 copy
CLKX
FSX
DX
DXR1 to XSR1 copy
DXR1 to XSR1 copy
DXR1 to XSR1 copy
DXR1 to XSR1 copy
Figure 15-64 shows the McBSP configured to treat this data stream as a continuous 32-bit word. In this
example, the McBSP responds to an initial frame-synchronization pulse. However, (R/X)FIG = 1 so that
the McBSP ignores subsequent pulses. Only two read transfers or two write transfers are needed every
32 bits. This configuration effectively reduces the required bus bandwidth to half the bandwidth needed to
transfer four 8-bit words.
ÁÁÁÁ
ÁÁ
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
Á
Á
Á
ÁÁ
ÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁÁÁÁ
ÁÁ
ÁÁÁÁÁ
ÁÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
ÁÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
Á
ÁÁ
ÁÁ
ÁÁ
ÁÁ
Á
Á
Á
Á
Á
Á
Figure 15-64. Configuring the Data Stream of Figure 15-63 as a Continuous 32-Bit Word
Word 1
CLKR
FSR
DR
Frame ignored
Frame ignored
RBR2 to DRR2 copy
CLKX
FSX
DX
Frame ignored
DXR2 to XSR2 copy
Frame ignored
RBR1 to DRR1 copy
Frame ignored
Frame ignored
DXR1 to XSR1 copy
15.12 McBSP Registers
This section describes the McBSP registers.
Table 15-71 shows the registers accessible on each McBSP. Section 15.12.2 through Section 15.12.11
describe the register bits.
15.12.1 Register Summary
1012
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-71. McBSP Register Summary
Name
McBSP-A
Address
McBSP-B
Address
Type
Reset Value Description
Data Registers, Receive, Transmit
DRR2
0x5000
0x5040
R
0x0000
McBSP Data Receive Register 2
DRR1
0x5001
0x5041
R
0x0000
McBSP Data Receive Register 1
DXR2
0x5002
0x5042
W
0x0000
McBSP Data Transmit Register 2
DXR1
0x5003
0x5043
W
0x0000
McBSP Data Transmit Register 1
McBSP Control Registers
SPCR2
0x5004
0x5044
R/W
0x0000
McBSP Serial Port Control Register 2
SPCR1
0x5005
0x5045
R/W
0x0000
McBSP Serial Port Control Register 1
RCR2
0x5006
0x5046
R/W
0x0000
McBSP Receive Control Register 2
RCR1
0x5007
0x5047
R/W
0x0000
McBSP Receive Control Register 1
XCR2
0x5008
0x5048
R/W
0x0000
McBSP Transmit Control Register 2
XCR1
0x5009
0x5049
R/W
0x0000
McBSP Transmit Control Register 1
SRGR2
0x500A
0x504A
R/W
0x0000
McBSP Sample Rate Generator Register 2
SRGR1
0x500B
0x504B
R/W
0x0000
McBSP Sample Rate Generator Register 1
Multichannel Control Registers
MCR2
0x500C
0x504C
R/W
0x0000
McBSP Multichannel Register 2
MCR1
0x500D
0x504D
R/W
0x0000
McBSP Multichannel Register 1
RCERA
0x500E
0x504E
R/W
0x0000
McBSP Receive Channel Enable Register Partition A
RCERB
0x500F
0x504F
R/W
0x0000
McBSP Receive Channel Enable Register Partition B
XCERA
0x5010
0x5050
R/W
0x0000
McBSP Transmit Channel Enable Register Partition A
XCERB
0x5011
0x5051
R/W
0x0000
McBSP Transmit Channel Enable Register Partition B
PCR
0x5012
0x5052
R/W
0x0000
McBSP Pin Control Register
RCERC
0x5013
0x5053
R/W
0x0000
McBSP Receive Channel Enable Register Partition C
RCERD
0x5014
0x5054
R/W
0x0000
McBSP Receive Channel Enable Register Partition D
XCERC
0x5015
0x5055
R/W
0x0000
McBSP Transmit Channel Enable Register Partition C
XCERD
0x5016
0x5056
R/W
0x0000
McBSP Transmit Channel Enable Register Partition D
RCERE
0x5017
0x5057
R/W
0x0000
McBSP Receive Channel Enable Register Partition E
RCERF
0x5018
0x5058
R/W
0x0000
McBSP Receive Channel Enable Register Partition F
XCERE
0x5019
0x5059
R/W
0x0000
McBSP Transmit Channel Enable Register Partition E
XCERF
0x501A
0x505A
R/W
0x0000
McBSP Transmit Channel Enable Register Partition F
RCERG
0x501B
0x505B
R/W
0x0000
McBSP Receive Channel Enable Register Partition G
RCERH
0x501C
0x505C
R/W
0x0000
McBSP Receive Channel Enable Register Partition H
XCERG
0x501D
0x505D
R/W
0x0000
McBSP Transmit Channel Enable Register Partition G
XCERH
0x501E
0x505E
R/W
0x0000
McBSP Transmit Channel Enable Register Partition H
MFFINT
0x5023
0x5063
R/W
0x0000
McBSP Interrupt Enable Register
15.12.2 Data Receive Registers (DRR[1,2])
The CPU or the DMA controller reads received data from one or both of the data receive registers (see
Figure 15-65). If the serial word length is 16 bits or smaller, only DRR1 is used. If the serial length is larger
than 16 bits, both DRR1 and DRR2 are used and DRR2 holds the most significant bits. Each frame of
receive data in the McBSP can have one phase or two phases, each with its own serial word length.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1013
McBSP Registers
www.ti.com
Figure 15-65. Data Receive Registers (DRR2 and DRR1)
DDR2
15
0
High part of receive data (for 20-, 24- or 32-bit data)
R/W-0
DDR1
15
0
Receive data (for 8-, 12-, or 16-bit data) or low part of receive data (for 20-, 24- or 32-bit data)
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
15.12.2.1 Data Travel From Data Receive Pins to the Registers
If the serial word length is 16 bits or smaller, receive data on the MDRx pin is shifted into receive shift
register 1 (RSR1) and then copied into receive buffer register 1 (RBR1). The content of RBR1 is then
copied to DRR1, which can be read by the CPU or by the DMA controller. The RSRs and RBRs are not
accessible to the user.
If the serial word length is larger than 16 bits, receive data on the MDRx pin is shifted into both of the
receive shift registers (RSR2, RSR1) and then copied into both of the receive buffer registers (RBR2,
RBR1). The content of the RBRs is then copied into both of the DRRs, which can be read by the CPU or
by the DMA controller.
If companding is used during the copy from RBR1 to DRR1 (RCOMPAND = 10b or 11b), the 8-bit
compressed data in RBR1 is expanded to a left-justified 16-bit value in DRR1. If companding is disabled,
the data copied from RBR[1,2] to DRR[1,2] is justified and bit filled according to the RJUST bits.
15.12.3 Data Transmit Registers (DXR[1,2])
For transmission, the CPU or the DMA controller writes data to one or both of the data transmit registers
(see Figure 15-66). If the serial word length is 16 bits or smaller, only DXR1 is used. If the word length is
larger than 16 bits, both DXR1 and DXR2 are used and DXR2 holds the most significant bits. Each frame
of transmit data in the McBSP can have one phase or two phases, each with its own serial word length.
Figure 15-66. Data Transmit Registers (DXR2 and DXR1)
DXR2
15
0
High part of transmit data (for 20-, 24- or 32-bit data)
R/W-0
DXR1
15
0
Transmit data (for 8-, 12-, or 16-bit data) or low part of receive data (for 20-, 24- or 32-bit data)
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
15.12.3.1 Data Travel From Registers to Data Transmit (DX) Pins
If the serial word length is 16 bits or fewer, data written to DXR1 is copied to transmit shift register 1
(XSR1). From XSR1, the data is shifted onto the DX pin one bit at a time. The XSRs are not accessible.
If the serial word length is more than 16 bits, data written to DXR1 and DXR2 is copied to both transmit
shift registers (XSR2, XSR1). From the XSRs, the data is shifted onto the DX pin one bit at a time.
If companding is used during the transfer from DXR1 to XSR1 (XCOMPAND = 10b or 11b), the McBSP
compresses the 16-bit data in DXR1 to 8-bit data in the μ-law or A-law format in XSR1. If companding is
disabled, the McBSP passes data from the DXR(s) to the XSR(s) without modification.
1014
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
15.12.4 Serial Port Control Registers (SPCR[1,2])
Each McBSP has two serial port control registers, SPCR1 (Table 15-72) and SPCR2 (Table 15-73). These
registers enable you to:
• Control various McBSP modes: digital loopback mode (DLB), sign-extension and justification mode for
reception (RJUST), clock stop mode (CLKSTP), interrupt modes (RINTM and XINTM), emulation mode
(FREE and SOFT)
• Turn on and off the DX-pin delay enabler (DXENA)
• Check the status of receive and transmit operations (RSYNCERR, XSYNCERR, RFULL, XEMPTY,
RRDY, XRDY)
• Reset portions of the McBSP (RRST, XRST, FRST, GRST)
15.12.4.1 Serial Port Control 1 Register (SPCR1)
The serial port control 1 register (SPCR1) is shown in Figure 15-67 and described in Table 15-72.
Figure 15-67. Serial Port Control 1 Register (SPCR1)
15
14
13
12
11
10
8
DLB
RJUST
CLKSTP
Reserved
R/W-0
R/W-0
R/W-0
R-0
7
6
3
2
1
0
DXENA
Reserved
5
RINTM
4
RSYNCERR
RFULL
RRDY
RRST
R/W-0
R/W-0
R/W-0
R/W-0
R-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-72. Serial Port Control 1 Register (SPCR1) Field Descriptions
Bit
Field
15
DLB
Value
Description
Digital loopback mode bit. DLB disables or enables the digital loopback mode of the McBSP:
0
Disabled
Internal DR is supplied by the MDRx pin. Internal FSR and internal MCLKR can be supplied by their
respective pins or by the sample rate generator, depending on the mode bits FSRM and CLKRM.
Internal DX is supplied by the MDXx pin. Internal FSX and internal CLKX are supplied by their
respective pins or are generated internally, depending on the mode bits FSXM and CLKXM.
1
Enabled
Internal receive signals are supplied by internal transmit signals:
MDRx connected to MDXx
MFSRx connected to MFSXx
MCLKR connected to MCLKXx
This mode allows you to test serial port code with a single DSP. The McBSP transmitter directly
supplies data, frame synchronization, and clocking to the McBSP receiver.
14-13
RJUST
0-3h
Receive sign-extension and justification mode bits. During reception, RJUST determines how data
is justified and bit filled before being passed to the data receive registers (DRR1, DRR2).
RJUST is ignored if you enable a companding mode with the RCOMPAND bits. In a companding
mode, the 8-bit compressed data in RBR1 is expanded to left-justified 16-bit data in DRR1.
For more details about the effects of RJUST, see Section 15.8.13, Set the Receive Sign-Extension
and Justification Mode
0
Right justify the data and zero fill the MSBs.
1h
Right justify the data and sign-extend the data into the MSBs.
2h
Left justify the data and zero fill the LSBs.
3h
Reserved (do not use)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1015
McBSP Registers
www.ti.com
Table 15-72. Serial Port Control 1 Register (SPCR1) Field Descriptions (continued)
Bit
12-11
Field
CLKSTP
Value
0-3h
Description
Clock stop mode bits. CLKSTP allows you to use the clock stop mode to support the SPI masterslave protocol. If you will not be using the SPI protocol, you can clear CLKSTP to disable the clock
stop mode.
In the clock stop mode, the clock stops at the end of each data transfer. At the beginning of each
data transfer, the clock starts immediately (CLKSTP = 10b) or after a half-cycle delay (CLKSTP =
11b).
For more details, see Section 15.8.5, Enable/Disable the Clock Stop.
0-1h
10-8
7
6
5-4
Reserved
Clock stop mode, without clock delay
3h
Clock stop mode, with half-cycle clock delay
0
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
DXENA
Reserved
RINTM
Clock stop mode is disabled.
2h
DX delay enabler mode bit. DXENA controls the delay enabler for the DX pin. The enabler creates
an extra delay for turn-on time (for the length of the delay, see the device-specific data sheet). For
more details about the effects of DXENA, see Section 15.9.13, Set the Transmit DXENA Mode.
0
DX delay enabler off
1
DX delay enabler on
0
Reserved
0-3h
Receive interrupt mode bits. RINTM determines which event in the McBSP receiver generates a
receive interrupt (RINT) request. If RINT is properly enabled inside the CPU, the CPU services the
interrupt request; otherwise, the CPU ignores the request.
0
The McBSP sends a receive interrupt (RINT) request to the CPU when the RRDY bit changes from
0 to 1, indicating that receive data is ready to be read (the content of RBR[1,2] has been copied to
DRR[1,2]):
Regardless of the value of RINTM, you can check RRDY to determine whether a word transfer is
complete.
The McBSP sends a RINT request to the CPU when 16 enabled bits have been received on the DR
pin.
1h
In the multichannel selection mode, the McBSP sends a RINT request to the CPU after every 16channel block is received in a frame.
Outside of the multichannel selection mode, no interrupt request is sent.
2h
The McBSP sends a RINT request to the CPU when each receive frame-synchronization pulse is
detected. The interrupt request is sent even if the receiver is in its reset state.
3h
The McBSP sends a RINT request to the CPU when the RSYNCERR bit is set, indicating a receive
frame-synchronization error.
Regardless of the value of RINTM, you can check RSYNCERR to determine whether a receive
frame-synchronization error occurred.
3
2
1016
RSYNCERR
Receive frame-sync error bit. RSYNCERR is set when a receive frame-sync error is detected by the
McBSP. If RINTM = 11b, the McBSP sends a receive interrupt (RINT) request to the CPU when
RSYNCERR is set. The flag remains set until you write a 0 to it or reset the receiver.
0
No error
1
Receive frame-synchronization error. For more details about this error, see Section 15.5.3,
Unexpected Receive Frame-Synchronization Pulse.
RFULL
Receiver full bit. RFULL is set when the receiver is full with new data and the previously received
data has not been read (receiver-full condition). For more details about this condition, see
Section 15.5.2, Overrun in the Receiver.
0
No receiver-full condition
1
Receiver-full condition: RSR[1,2] and RBR[1,2] are full with new data, but the previous data in
DRR[1,2] has not been read.
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-72. Serial Port Control 1 Register (SPCR1) Field Descriptions (continued)
Bit
Field
1
RRDY
Value
Description
Receiver ready bit. RRDY is set when data is ready to be read from DRR[1,2]. Specifically, RRDY
is set in response to a copy from RBR1 to DRR1.
If the receive interrupt mode is RINTM = 00b, the McBSP sends a receive interrupt request to the
CPU when RRDY changes from 0 to 1.
Also, when RRDY changes from 0 to 1, the McBSP sends a receive synchronization event (REVT)
signal to the DMA controller.
0
Receiver not ready
When the content of DRR1 is read, RRDY is automatically cleared.
1
Receiver ready: New data can be read from DRR[1,2].
Important: If both DRRs are required (word length larger than 16 bits), the CPU or the DMA
controller must read from DRR2 first and then from DRR1. As soon as DRR1 is read, the next
RBR-to-DRR copy is initiated. If DRR2 is not read first, the data in DRR2 is lost.
0
RRST
Receiver reset bit. You can use RRST to take the McBSP receiver into and out of its reset state.
This bit has a negative polarity; RRST = 0 indicates the reset state.
To read about the effects of a receiver reset, see Section 15.10.2, Resetting and Initializing a
McBSP.
0
If you read a 0, the receiver is in its reset state.
If you write a 0, you reset the receiver.
1
If you read a 1, the receiver is enabled.
If you write a 1, you enable the receiver by taking it out of its reset state.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1017
McBSP Registers
www.ti.com
15.12.4.2 Serial Port Control 2 Register (SPCR2)
The serial port control 2 register (SPCR2) is shown in Figure 15-68 and described in Table 15-73.
Figure 15-68. Serial Port Control 2 Register (SPCR2)
15
10
9
8
Reserved
FREE
SOFT
R-0
R/W-0
R/W-0
7
6
3
2
1
0
FRST
GRST
5
XINTM
4
XSYNCERR
XEMPTY
XRDY
XRST
R/W-0
R/W-0
R/W-0
R/W-0
R-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-73. Serial Port Control 2 Register (SPCR2) Field Descriptions
Bit
15-10
Field
Reserved
Value
0
Description
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
9
FREE
Free run bit. When a breakpoint is encountered in the high-level language debugger, FREE determines
whether the McBSP transmit and receive clocks continue to run or whether they are affected as
determined by the SOFT bit. When one of the clocks stops, the corresponding data transfer
(transmission or reception) stops.
8
SOFT
Soft stop bit. When FREE = 0, SOFT determines the response of the McBSP transmit and receive
clocks when a breakpoint is encountered in the high-level language debugger. When one of the clocks
stops, the corresponding data transfer (transmission or reception) stops.
7
FRST
Frame-synchronization logic reset bit. The sample rate generator of the McBSP includes framesynchronization logic to generate an internal frame-synchronization signal. You can use FRST to take
the frame-synchronization logic into and out of its reset state. This bit has a negative polarity; FRST =
0 indicates the reset state.
0
If you read a 0, the frame-synchronization logic is in its reset state.
If you write a 0, you reset the frame-synchronization logic.
In the reset state, the frame-synchronization logic does not generate a frame-synchronization signal
(FSG).
1
If you read a 1, the frame-synchronization logic is enabled.
If you write a 1, you enable the frame-synchronization logic by taking it out of its reset state.
When the frame-synchronization logic is enabled (FRST = 1) and the sample rate generator as a
whole is enabled (GRST = 1), the frame-synchronization logic generates the frame-synchronization
signal FSG as programmed.
6
GRST
Sample rate generator reset bit. You can use GRST to take the McBSP sample rate generator into and
out of its reset state. This bit has a negative polarity; GRST = 0 indicates the reset state.
To read about the effects of a sample rate generator reset, see Section 15.10.2, Resetting and
Initializing a McBSP.
0
If you read a 0, the sample rate generator is in its reset state.
If you write a 0, you reset the sample rate generator.
If GRST = 0 due to a reset, CLKG is driven by the CPU clock divided by 2, and FSG is driven low
(inactive). If GRST = 0 due to program code, CLKG and FSG are both driven low (inactive).
1
If you read a 1, the sample rate generator is enabled.
If you write a 1, you enable the sample rate generator by taking it out of its reset state.
When enabled, the sample rate generator generates the clock signal CLKG as programmed in the
sample rate generator registers. If FRST = 1, the generator also generates the frame-synchronization
signal FSG as programmed in the sample rate generator registers.
1018
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-73. Serial Port Control 2 Register (SPCR2) Field Descriptions (continued)
Bit
Field
5-4
XINTM
Value
Description
0-3h
Transmit interrupt mode bits. XINTM determines which event in the McBSP transmitter generates a
transmit interrupt (XINT) request. If XINT is properly enabled, the CPU services the interrupt request;
otherwise, the CPU ignores the request.
0
The McBSP sends a transmit interrupt (XINT) request to the CPU when the XRDY bit changes from 0
to 1, indicating that transmitter is ready to accept new data (the content of DXR[1,2] has been copied
to XSR[1,2]).
Regardless of the value of XINTM, you can check XRDY to determine whether a word transfer is
complete.
The McBSP sends an XINT request to the CPU when 16 enabled bits have been transmitted on the
DX pin.
1h
In the multichannel selection mode, the McBSP sends an XINT request to the CPU after every 16channel block is transmitted in a frame.
Outside of the multichannel selection mode, no interrupt request is sent.
2h
The McBSP sends an XINT request to the CPU when each transmit frame-synchronization pulse is
detected. The interrupt request is sent even if the transmitter is in its reset state.
3h
The McBSP sends an XINT request to the CPU when the XSYNCERR bit is set, indicating a transmit
frame-synchronization error.
Regardless of the value of XINTM, you can check XSYNCERR to determine whether a transmit framesynchronization error occurred.
3
XSYNCERR
Transmit frame-synchronization error bit. XSYNCERR is set when a transmit frame-synchronization
error is detected by the McBSP. If XINTM = 11b, the McBSP sends a transmit interrupt (XINT) request
to the CPU when XSYNCERR is set. The flag remains set until you write a 0 to it or reset the
transmitter.
If XINTM = 11b, writing a 1 to XSYNCERR triggers a transmit interrupt just as if a transmit framesynchronization error occurred.
For details about this error see Section 15.5.5, Unexpected Transmit Frame-Synchronization Pulse.
2
0
No error
1
Transmit frame-synchronization error
XEMPTY
Transmitter empty bit. XEMPTY is cleared when the transmitter is ready to send new data but no new
data is available (transmitter-empty condition). This bit has a negative polarity; a transmitter-empty
condition is indicated by XEMPTY = 0.
0
Transmitter-empty condition
Typically this indicates that all the bits of the current word have been transmitted but there is no new
data in DXR1. XEMPTY is also cleared if the transmitter is reset and then restarted.
For more details about this error condition, see Section 15.5.4.3, Underflow in the Transmitter.
1
1
XRDY
No transmitter-empty condition
Transmitter ready bit. XRDY is set when the transmitter is ready to accept new data in DXR[1,2].
Specifically, XRDY is set in response to a copy from DXR1 to XSR1.
If the transmit interrupt mode is XINTM = 00b, the McBSP sends a transmit interrupt (XINT) request to
the CPU when XRDY changes from 0 to 1.
Also, when XRDY changes from 0 to 1, the McBSP sends a transmit synchronization event (XEVT)
signal to the DMA controller.
0
Transmitter not ready
When DXR1 is loaded, XRDY is automatically cleared.
1
Transmitter ready: DXR[1,2] is ready to accept new data.
If both DXRs are needed (word length larger than 16 bits), the CPU or the DMA controller must load
DXR2 first and then load DXR1. As soon as DXR1 is loaded, the contents of both DXRs are copied to
the transmit shift registers (XSRs), as described in the next step. If DXR2 is not loaded first, the
previous content of DXR2 is passed to the XSR2.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1019
McBSP Registers
www.ti.com
Table 15-73. Serial Port Control 2 Register (SPCR2) Field Descriptions (continued)
Bit
Field
0
XRST
Value
Description
Transmitter reset bit. You can use XRST to take the McBSP transmitter into and out of its reset state.
This bit has a negative polarity; XRST = 0 indicates the reset state.
To read about the effects of a transmitter reset, see Section 15.10.2, Resetting and Initializing a
McBSP.
0
If you read a 0, the transmitter is in its reset state.
If you write a 0, you reset the transmitter.
1
If you read a 1, the transmitter is enabled.
If you write a 1, you enable the transmitter by taking it out of its reset state.
15.12.5 Receive Control Registers (RCR[1, 2])
Each McBSP has two receive control registers, RCR1 (Table 15-74) and RCR2 (Table 15-76). These
registers enable you to:
• Specify one or two phases for each frame of receive data (RPHASE)
• Define two parameters for phase 1 and (if necessary) phase 2: the serial word length (RWDLEN1,
RWDLEN2) and the number of words (RFRLEN1, RFRLEN2)
• Choose a receive companding mode, if any (RCOMPAND)
• Enable or disable the receive frame-synchronization ignore function (RFIG)
• Choose a receive data delay (RDATDLY)
15.12.5.1 Receive Control Register 1 (RCR1)
The receive control register 1 (RCR1) is shown in Figure 15-69 and described in Table 15-74.
Figure 15-69. Receive Control Register 1 (RCR1)
15
14
8
Reserved
RFRLEN1
R-0
R/W-0
7
5
4
0
RWDLEN1
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-74. Receive Control Register 1 (RCR1) Field Descriptions
Bit
Field
Value
15
Reserved
0
14-8
RFRLEN1
0-7Fh
Description
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
Receive frame length 1 (1 to 128 words). Each frame of receive data can have one or two phases,
depending on value that you load into the RPHASE bit. If a single-phase frame is selected, RFRLEN1 in
RCR1 selects the number of serial words (8, 12, 16, 20, 24, or 32 bits per word) in the frame. If a dualphase frame is selected, RFRLEN1 determines the number of serial words in phase 1 of the frame, and
RFRLEN2 in RCR2 determines the number of words in phase 2 of the frame. The 7-bit RFRLEN fields
allow up to 128 words per phase. See Table 15-75 for a summary of how you determine the frame
length. This length corresponds to the number of words or logical time slots or channels per framesynchronization period.
Program the RFRLEN fields with [w minus 1], where w represents the number of words per phase. For
example, if you want a phase length of 128 words in phase 1, load 127 into RFRLEN1.
1020
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-74. Receive Control Register 1 (RCR1) Field Descriptions (continued)
Bit
Field
7-5
RWDLEN1
Value
0-7h
Receive word length 1. Each frame of receive data can have one or two phases, depending on the
value that you load into the RPHASE bit. If a single-phase frame is selected, RWDLEN1 in RCR1
selects the length for every serial word received in the frame. If a dual-phase frame is selected,
RWDLEN1 determines the length of the serial words in phase 1 of the frame, and RWDLEN2 in RCR2
determines the word length in phase 2 of the frame.
0
8 bits
1h
12 bits
2h
16 bits
3h
20 bits
4h
24 bits
5h
32 bits
6h-7h
4-0
Description
Reserved
0
Reserved (do not use)
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
Table 15-75. Frame Length Formula for Receive Control 1 Register (RCR1)
RPHASE
RFRLEN1
RFRLEN2
Frame Length
0
0 ≤ RFRLEN1 ≤ 127
Not used
(RFRLEN1 + 1) words
1
0 ≤ RFRLEN1 ≤ 127
0 ≤ RFRLEN2 ≤ 127
(RFRLEN1 + 1) + (RFRLEN2 + 1) words
15.12.5.2 Receive Control Register 2 (RCR2)
The receive control register 2 (RCR2) is shown in Figure 15-70 and described in Table 15-76.
Figure 15-70. Receive Control Register 2 (RCR2)
15
14
8
RPHASE
RFRLEN2
R/W-0
R/W-0
7
5
4
3
2
1
0
RWDLEN2
RCOMPAND
RFIG
RDATDLY
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-76. Receive Control Register 2 (RCR2) Field Descriptions
Bit
Field
15
RPHASE
Value
Description
Receive phase number bit. RPHASE determines whether the receive frame has one phase or two
phases. For each phase you can define the serial word length and the number of serial words in the
phase. To set up phase 1, program RWDLEN1 (word length) and RFRLEN1 (number of words). To set
up phase 2 (if there are two phases), program RWDLEN2 and RFRLEN2.
0
Single-phase frame
The receive frame has only one phase, phase 1.
1
Dual-phase frame
The receive frame has two phases, phase 1 and phase 2.
14-8
0-7Fh
Receive frame length 2 (1 to 128 words). Each frame of receive data can have one or two phases,
depending on value that you load into the RPHASE bit. If a single-phase frame is selected, RFRLEN1
in RCR1 selects the number of serial words (8, 12, 16, 20, 24, or 32 bits per word) in the frame. If a
dual-phase frame is selected, RFRLEN1 determines the number of serial words in phase 1 of the
frame, and RFRLEN2 in RCR2 determines the number of words in phase 2 of the frame. The 7-bit
RFRLEN fields allow up to 128 words per phase. See Table 15-77 for a summary of how to determine
the frame length. This length corresponds to the number of words or logical time slots or channels per
frame-synchronization period.
Program the RFRLEN fields with [w minus 1], where w represents the number of words per phase. For
example, if you want a phase length of 128 words in phase 2, load 127 into RFRLEN2.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1021
McBSP Registers
www.ti.com
Table 15-76. Receive Control Register 2 (RCR2) Field Descriptions (continued)
Bit
Field
7-5
RWDLEN2
4-3
Value
RCOMPAND
0-7h
Description
Receive word length 2. Each frame of receive data can have one or two phases, depending on the
value that you load into the RPHASE bit. If a single-phase frame is selected, RWDLEN1 in RCR1
selects the length for every serial word received in the frame. If a dual-phase frame is selected,
RWDLEN1 determines the length of the serial words in phase 1 of the frame, and RWDLEN2 in RCR2
determines the word length in phase 2 of the frame.
0
8 bits
1h
12 bits
2h
16 bits
3h
20 bits
4h
24 bits
5h
32 bits
6h-7h
Reserved (do not use)
0-3h
Receive companding mode bits. Companding (COMpress and exPAND) hardware allows compression
and expansion of data in either μ-law or A-law format.
RCOMPAND allows you to choose one of the following companding modes for the McBSP receiver:
For more details about these companding modes, see Section 15.1.5, Companding (Compressing and
Expanding) Data.
2
0
No companding, any size data, MSB received first
1h
No companding, 8-bit data, LSB received first
2h
μ-law companding, 8-bit data, MSB received first
3h
A-law companding, 8-bit data, MSB received first
RFIG
Receive frame-synchronization ignore bit. If a frame-synchronization pulse starts the transfer of a new
frame before the current frame is fully received, this pulse is treated as an unexpected framesynchronization pulse. For more details about the frame-synchronization error condition, see
Section 15.5.3, Unexpected Receive Frame-Synchronization Pulse.
Setting RFIG causes the serial port to ignore unexpected frame-synchronization signals during
reception. For more details on the effects of RFIG, see Section 15.8.10.1, Enable/Disable the Receive
Frame-Synchronization Ignore Function.
0
Frame-synchronization detect. An unexpected FSR pulse causes the receiver to discard the contents
of RSR[1,2] in favor of the new incoming data. The receiver:
1.
2.
3.
1
1-0
RDATDLY
0-3h
Aborts the current data transfer
Sets RSYNCERR in SPCR1
Begins the transfer of a new data word
Frame-synchronization ignore. An unexpected FSR pulse is ignored. Reception continues
uninterrupted.
Receive data delay bits. RDATDLY specifies a data delay of 0, 1, or 2 receive clock cycles after framesynchronization and before the reception of the first bit of the frame. For more details, see
Section 15.8.12, Set the Receive Data Delay.
0
0-bit data delay
1h
1-bit data delay
2h
2-bit data delay
3h
Reserved (do not use)
Table 15-77. Frame Length Formula for Receive Control 2 Register (RCR2)
RPHASE
RFRLEN1
RFRLEN2
Frame Length
0
0 ≤ RFRLEN1 ≤ 127
Not used
(RFRLEN1 + 1) words
1
0 ≤ RFRLEN1 ≤ 127
0 ≤ RFRLEN2 ≤ 127
(RFRLEN1 + 1) + (RFRLEN2 + 1) words
15.12.6 Transmit Control Registers (XCR1 and XCR2)
Each McBSP has two transmit control registers, XCR1 (Table 15-78) and XCR2 (Table 15-80). These
registers enable you to:
1022
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
•
•
•
•
•
Specify one or two phases for each frame of transmit data (XPHASE)
Define two parameters for phase 1 and (if necessary) phase 2: the serial word length (XWDLEN1,
XWDLEN2) and the number of words (XFRLEN1, XFRLEN2)
Choose a transmit companding mode, if any (XCOMPAND)
Enable or disable the transmit frame-sync ignore function (XFIG)
Choose a transmit data delay (XDATDLY)
15.12.6.1 Transmit Control 1 Register (XCR1)
The transmit control 1 register (XCR1) is shown in Figure 15-71 and described in Table 15-78.
Figure 15-71. Transmit Control 1 Register (XCR1)
15
14
8
Reserved
XFRLEN1
R-0
R/W-0
7
5
4
0
XWDLEN1
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-78. Transmit Control 1 Register (XCR1) Field Descriptions
Bit
Field
Value
15
Reserved
0
14-8
XFRLEN1
0-7Fh
Description
Reserved bit. Read-only; returns 0 when read.
Transmit frame length 1 (1 to 128 words). Each frame of transmit data can have one or two phases,
depending on value that you load into the XPHASE bit. If a single-phase frame is selected, XFRLEN1
in XCR1 selects the number of serial words (8, 12, 16, 20, 24, or 32 bits per word) in the frame. If a
dual-phase frame is selected, XFRLEN1 determines the number of serial words in phase 1 of the
frame and XFRLEN2 in XCR2 determines the number of words in phase 2 of the frame. The 7-bit
XFRLEN fields allow up to 128 words per phase. See Table 15-79 for a summary of how you
determine the frame length. This length corresponds to the number of words or logical time slots or
channels per frame-synchronization period.
Program the XFRLEN fields with [w minus 1], where w represents the number of words per phase. For
example, if you want a phase length of 128 words in phase 1, load 127 into XFRLEN1.
7-5
XWDLEN1
0-3h
0
8 bits
1h
12 bits
2h
16 bits
3h
20 bits
4h
24 bits
5h
32 bits
6h-7h
4-0
Reserved
Transmit word length 1. Each frame of transmit data can have one or two phases, depending on the
value that you load into the XPHASE bit. If a single-phase frame is selected, XWDLEN1 in XCR1
selects the length for every serial word transmitted in the frame. If a dual-phase frame is selected,
XWDLEN1 determines the length of the serial words in phase 1 of the frame and XWDLEN2 in XCR2
determines the word length in phase 2 of the frame.
0
Reserved (do not use)
Reserved bits. They are read-only bits and return 0s when read.
Table 15-79. Frame Length Formula for Transmit Control 1 Register (XCR1)
XPHASE
XFRLEN1
XFRLEN2
Frame Length
0
0 ≤ XFRLEN1 ≤ 127
Not used
(XFRLEN1 + 1) words
1
0 ≤ XFRLEN1 ≤ 127
0 ≤ XFRLEN2 ≤ 127
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
(XFRLEN1 + 1) + (XFRLEN2 + 1) words
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1023
McBSP Registers
www.ti.com
15.12.6.2 Transmit Control 2 Register (XCR2)
The transmit control 2 register (XCR2) is shown in Figure 15-72 and described in Table 15-80.
Figure 15-72. Transmit Control 2 Register (XCR2)
15
14
8
XPHASE
XFRLEN2
R/W-0
R/W-0
7
5
4
3
2
1
0
XWDLEN2
XCOMPAND
XFIG
XDATDLY
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-80. Transmit Control 2 Register (XCR2) Field Descriptions
Bit
Field
15
XPHASE
Value
Description
Transmit phase number bit. XPHASE determines whether the transmit frame has one phase or two
phases. For each phase you can define the serial word length and the number of serial words in the
phase. To set up phase 1, program XWDLEN1 (word length) and XFRLEN1 (number of words). To set
up phase 2 (if there are two phases), program XWDLEN2 and XFRLEN2.
0
Single-phase frame
The transmit frame has only one phase, phase 1.
1
Dual-phase frame
The transmit frame has two phases, phase 1 and phase 2.
14-8
XFRLEN2
0-7Fh
Transmit frame length 2 (1 to 128 words). Each frame of transmit data can have one or two phases,
depending on value that you load into the XPHASE bit. If a single-phase frame is selected, XFRLEN1 in
XCR1 selects the number of serial words (8, 12, 16, 20, 24, or 32 bits per word) in the frame. If a dualphase frame is selected, XFRLEN1 determines the number of serial words in phase 1 of the frame and
XFRLEN2 in XCR2 determines the number of words in phase 2 of the frame. The 7-bit XFRLEN fields
allow up to 128 words per phase. See Table 15-81 for a summary of how to determine the frame length.
This length corresponds to the number of words or logical time slots or channels per framesynchronization period.
Program the XFRLEN fields with [w minus 1], where w represents the number of words per phase. For
example, if you want a phase length of 128 words in phase 1, load 127 into XFRLEN1.
7-5
4-3
XWDLEN2
XCOMPAN
D
0-7h
Transmit word length 2. Each frame of transmit data can have one or two phases, depending on the
value that you load into the XPHASE bit. If a single-phase frame is selected, XWDLEN1 in XCR1
selects the length for every serial word transmitted in the frame. If a dual-phase frame is selected,
XWDLEN1 determines the length of the serial words in phase 1 of the frame and XWDLEN2 in XCR2
determines the word length in phase 2 of the frame.
0
8 bits
1h
12 bits
2h
16 bits
3h
20 bits
4h
24 bits
5h
32 bits
6h-7h
Reserved (do not use)
0-3h
Transmit companding mode bits. Companding (COMpress and exPAND) hardware allows compression
and expansion of data in either μ-law or A-law format. For more details, see Section 15.1.5.
XCOMPAND allows you to choose one of the following companding modes for the McBSP transmitter.
For more details about these companding modes, see Section 15.1.5 .
1024
0
No companding, any size data, MSB transmitted first
1h
No companding, 8-bit data, LSB transmitted first
2h
μ-law companding, 8-bit data, MSB transmitted first
3h
A-law companding, 8-bit data, MSB transmitted first
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-80. Transmit Control 2 Register (XCR2) Field Descriptions (continued)
Bit
Field
2
XFIG
Value
Description
Transmit frame-synchronization ignore bit. If a frame-synchronization pulse starts the transfer of a new
frame before the current frame is fully transmitted, this pulse is treated as an unexpected framesynchronization pulse. For more details about the frame-synchronization error condition, see
Section 15.5.5.
Setting XFIG causes the serial port to ignore unexpected frame-synchronization pulses during
transmission. For more details on the effects of XFIG, see Section 15.9.10.
0
Frame-synchronization detect. An unexpected FSX pulse causes the transmitter to discard the content
of XSR[1,2]. The transmitter:
1.
2.
3.
1
1-0
XDATDLY
Aborts the present transmission
Sets XSYNCERR in SPCR2
Begins a new transmission from DXR[1,2]. If new data was written to DXR[1,2] since the last
DXR[1,2]-to-XSR[1,2] copy, the current value in XSR[1,2] is lost. Otherwise, the same data is
transmitted.
Frame-synchronization ignore. An unexpected FSX pulse is ignored. Transmission continues
uninterrupted.
0-3h
Transmit data delay bits. XDATDLY specifies a data delay of 0, 1, or 2 transmit clock cycles after frame
synchronization and before the transmission of the first bit of the frame. For more details, see
Section 15.9.12.
0
0-bit data delay
1h
1-bit data delay
2h
2-bit data delay
3h
Reserved (do not use)
Table 15-81. Frame Length Formula for Transmit Control 2 Register (XCR2)
XPHASE
XFRLEN1
XFRLEN2
Frame Length
0
0 ≤ XFRLEN1 ≤ 127
Not used
(XFRLEN1 + 1) words
1
0 ≤ XFRLEN1 ≤ 127
0 ≤ XFRLEN2 ≤ 127
(XFRLEN1 + 1) + (XFRLEN2 + 1) words
15.12.7 Sample Rate Generator Registers (SRGR1 and SRGR2)
Each McBSP has two sample rate generator registers, SRGR1 (Table 15-82) and SRGR2 (Table 15-83).
The sample rate generator can generate a clock signal (CLKG) and a frame-synchronization signal (FSG).
The registers SRGR1 and SRGR2 enable you to:
• Select the input clock source for the sample rate generator (CLKSM, in conjunction with the SCLKME
bit of PCR)
• Divide down the frequency of CLKG (CLKGDV)
• Select whether internally-generated transmit frame-synchronization pulses are driven by FSG or by
activity in the transmitter (FSGM).
• Specify the width of frame-synchronization pulses on FSG (FWID) and specify the period between
those pulses (FPER)
When an external source (via the MCLKR or MCLKX pin) provides the input clock source for the sample
rate generator:
• If the CLKX/MCLKR pin is used, the polarity of the input clock is selected with CLKXP/CLKRP of PCR.
• The GSYNC bit of SRGR2 allows you to make CLKG synchronized to an external framesynchronization signal on the FSR pin, so that CLKG is kept in phase with the input clock.
15.12.7.1 Sample Rate Generator 1 Register (SRGR1)
The sample rate generator 1 register is shown in Figure 15-73 and described in Table 15-82.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1025
McBSP Registers
www.ti.com
Figure 15-73. Sample Rate Generator 1 Register (SRGR1)
15
8
FWID
R/W-0
7
0
CLKGDV
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-82. Sample Rate Generator 1 Register (SRGR1) Field Descriptions
Bit
Field
Value
Description
15-8
FWID
0-FFh
Frame-synchronization pulse width bits for FSG
The sample rate generator can produce a clock signal, CLKG, and a frame-synchronization
signal, FSG. For frame-synchronization pulses on FSG, (FWID + 1) is the pulse width in CLKG
cycles. The eight bits of FWID allow a pulse width of 1 to 256 CLKG cycles:
0 ≤ FWID ≤ 255
1 ≤ (FWID + 1) ≤ 256 CLKG cycles
The period between the frame-synchronization pulses on FSG is defined by the FPER bits.
7-0
CLKGDV
0-FFh
Divide-down value for CLKG. The sample rate generator can accept an input clock signal and
divide it down according to CLKGDV to produce an output clock signal, CLKG. The frequency
of CLKG is:
CLKG frequency = (Input clock frequency)/ (CLKGDV + 1)
The input clock is selected by the SCLKME and CLKSM bits:
SCLKME
CLKSM
Input Clock For
Sample Rate Generator
0
0
Reserved
0
1
LSPCLK
1
0
Signal on MCLKR pin
1
1
Signal on MCLKX pin
15.12.7.2 Sample Rate Generator 2 Register (SRGR2)
The sample rate generator 2 register (SRGR2) is shown in Figure 15-74 and described in Table 15-83.
Figure 15-74. Sample Rate Generator 2 Register (SRGR2)
15
14
13
12
GSYNC
Reserved
CLKSM
FSGM
11
FPER
8
R/W-0
R/W-0
R/W-1
R/W-0
R/W-0
7
0
FPER
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
1026
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-83. Sample Rate Generator 2 Register (SRGR2) Field Descriptions
Bit
Field
15
GSYNC
Value
Description
Clock synchronization mode bit for CLKG. GSYNC is used only when the input clock source
for the sample rate generator is external—on the MCLKR pin.
When GSYNC = 1, the clock signal (CLKG) and the frame-synchronization signal (FSG)
generated by the sample rate generator are made dependent on pulses on the FSR pin.
0
No clock synchronization
CLKG oscillates without adjustment, and FSG pulses every (FPER + 1) CLKG cycles.
1
Clock synchronization
• CLKG is adjusted as necessary so that it is synchronized with the input clock on the
MCLKR pin.
• FSG pulses. FSG only pulses in response to a pulse on the FSR pin.
The frame-synchronization period defined in FPER is ignored.
For more details, see Section 15.4.3, Synchronizing Sample Rate Generator Outputs to an
External Clock.
14
Reserved
13
CLKSM
Reserved
0
Sample rate generator input clock mode bit. The sample rate generator can accept an input
clock signal and divide it down according to CLKGDV to produce an output clock signal,
CLKG. The frequency of CLKG is:)
CLKG frequency = (input clock frequency)/ (CLKGDV + 1
CLKSM is used in conjunction with the SCLKME bit to determine the source for the input
clock.
A reset selects the CPU clock as the input clock and forces the CLKG frequency to ½ the
LSPCLK frequency.
The input clock for the sample rate generator is taken from the MCLKR pin, depending on
the value of the SCLKME bit of PCR:
1
12
FSGM
11-0
FPER
SCLKME
CLKSM
Input Clock For
Sample Rate Generator
0
0
Reserved
1
0
Signal on MCLKR pin
The input clock for the sample rate generator is taken from the LSPCLK or from the MCLKX
pin, depending on the value of the SCLKME bit of PCR:
SCLKME
CLKSM
Input Clock For
Sample Rate Generator
0
1
LSPCLK
1
1
Signal on MCLKX pin
Sample rate generator transmit frame-synchronization mode bit. The transmitter can get
frame synchronization from the FSX pin (FSXM = 0) or from inside the McBSP (FSXM = 1).
When FSXM = 1, the FSGM bit determines how the McBSP supplies frame-synchronization
pulses.
0
If FSXM = 1, the McBSP generates a transmit frame-synchronization pulse when the content
of DXR[1,2] is copied to XSR[1,2].
1
If FSXM = 1, the transmitter uses frame-synchronization pulses generated by the sample
rate generator. Program the FWID bits to set the width of each pulse. Program the FPER bits
to set the period between pulses.
0-FFFh
Frame-synchronization period bits for FSG. The sample rate generator can produce a clock
signal, CLKG, and a frame-synchronization signal, FSG. The period between framesynchronization pulses on FSG is (FPER + 1) CLKG cycles. The 12 bits of FPER allow a
frame-synchronization period of 1 to 4096 CLKG cycles:
0 ≤ FPER ≤ 4095
1 ≤ (FPER + 1) ≤ 4096 CLKG cycles
The width of each frame-synchronization pulse on FSG is defined by the FWID bits.
15.12.8 Multichannel Control Registers (MCR[1,2])
Each McBSP has two multichannel control registers. MCR1 (Table 15-84) has control and status bits (with
an R prefix) for multichannel selection operation in the receiver. MCR2 (Table 15-85) contains the same
type of bits (bit with an X prefix) for the transmitter. These registers enable you to:
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1027
McBSP Registers
•
•
•
www.ti.com
Enable all channels or only selected channels for reception (RMCM)
Choose which channels are enabled/disabled and masked/unmasked for transmission (XMCM)
Specify whether two partitions (32 channels at a time) or eight partitions (128 channels at a time) can
be used (RMCME for reception, XMCME for transmission)
Assign blocks of 16 channels to partitions A and B when the 2-partition mode is selected (RPABLK and
RPBBLK for reception, XPABLK and XPBBLK for transmission)
Determine which block of 16 channels is currently involved in a data transfer (RCBLK for reception,
XCBLK for transmission)
•
•
15.12.8.1 Multichannel Control 1 Register (MCR1)
The multichannel control 1 register (MCR1) is shown in Figure 15-75 and described in Table 15-84.
Figure 15-75. Multichannel Control 1 Register (MCR1)
15
10
7
6
9
8
Reserved
RMCME
RPBBLK
R-0
R/W-0
R/W-0
1
0
RPBBLK
RPABLK
5
4
RCBLK
2
Reserved
RMCM
R/W-0
R/W-0
R-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-84. Multichannel Control 1 Register (MCR1) Field Descriptions
Bit
Field
15-10
Reserved
9
RMCME
Value
0
Description
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
Receive multichannel partition mode bit. RMCME is only applicable if channels can be individually
enabled or disabled for reception (RMCM = 1).
RMCME determines whether only 32 channels or all 128 channels are to be individually selectable.
0
2-partition mode
Only partitions A and B are used. You can control up to 32 channels in the receive multichannel
selection mode (RMCM = 1).
Assign 16 channels to partition A with the RPABLK bits.
Assign 16 channels to partition B with the RPBBLK bits.
You control the channels with the appropriate receive channel enable registers:
RCERA: Channels in partition A
RCERB: Channels in partition B
1
8-partition mode
All partitions (A through H) are used. You can control up to 128 channels in the receive
multichannel selection mode. You control the channels with the appropriate receive channel enable
registers:
RCERA: Channels 0 through 15
RCERB: Channels 16 through 31
RCERC: Channels 32 through 47
RCERD: Channels 48 through 63
RCERE: Channels 64 through 79
RCERF: Channels 80 through 95
RCERG: Channels 96 through 111
RCERH: Channels 112 through 127
1028
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-84. Multichannel Control 1 Register (MCR1) Field Descriptions (continued)
Bit
Field
8-7
RPBBLK
Value
0-3h
Description
Receive partition B block bits
RPBBLK is only applicable if channels can be individually enabled or disabled (RMCM = 1) and the
2-partition mode is selected (RMCME = 0). Under these conditions, the McBSP receiver can accept
or ignore data in any of the 32 channels that are assigned to partitions A and B of the receiver.
The 128 receive channels of the McBSP are divided equally among 8 blocks (0 through 7). When
RPBBLK is applicable, use RPBBLK to assign one of the odd-numbered blocks (1, 3, 5, or 7) to
partition B. Use the RPABLK bits to assign one of the even-numbered blocks (0, 2, 4, or 6) to
partition A.
If you want to use more than 32 channels, you can change block assignments dynamically. You
can assign a new block to one partition while the receiver is handling activity in the other partition.
For example, while the block in partition A is active, you can change which block is assigned to
partition B. The RCBLK bits are regularly updated to indicate which block is active.
When XMCM = 11b (for symmetric transmission and reception), the transmitter uses the receive
block bits (RPABLK and RPBBLK) rather than the transmit block bits (XPABLK and XPBBLK).
6-5
RPABLK
0
Block 1: channels 16 through 31
1h
Block 3: channels 48 through 63
2h
Block 5: channels 80 through 95
3h
Block 7: channels 112 through 127
0-3h
Receive partition A block bits
RPABLK is only applicable if channels can be individually enabled or disabled (RMCM = 1) and the
2-partition mode is selected (RMCME = 0). Under these conditions, the McBSP receiver can accept
or ignore data in any of the 32 channels that are assigned to partitions A and B of the receiver. See
the description for RPBBLK (bits 8-7) for more information about assigning blocks to partitions A
and B.
4-2
RCBLK
1
Reserved
0
RMCM
0
Block 0: channels 0 through 15
1h
Block 2: channels 32 through 47
2h
Block 5: channels 64 through 79
3h
Block 7: channels 96 through 111
0-7h
Receive current block indicator. RCBLK indicates which block fo 16 channels is involved in the
current McBSP reception:
0
Block 0: channels 0 through 15
1h
Block 1: channels 16 through 31
2h
Block 2: channels 32 through 47
3h
Block 3: channels 48 through 63
4h
Block 4: channels 64 through 79
5h
Block 5: channels 80 through 95
6h
Block 6: channels 96 through 111
7h
Block 7: channels 112 through 127
0
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
Receive multichannel selection mode bit. RMCM determines whether all channels or only selected
channels are enabled for reception:
0
All 128 channels are enabled.
1
Multichanneled selection mode. Channels can be individually enabled or disabled.
The only channels enabled are those selected in the appropriate receive channel enable registers
(RCERs). The way channels are assigned to the RCERs depends on the number of receive
channel partitions (2 or 8), as defined by the RMCME bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1029
McBSP Registers
www.ti.com
15.12.8.2 Multichannel Control 2 Register (MCR2)
The multichannel control 2 register (MCR2) is shown in Figure 15-76 and described in Table 15-85.
Figure 15-76. Multichannel Control 2 Register (MCR2)
15
10
7
6
9
8
Reserved
XMCME
XPBBLK
R-0
R/W-0
R/W-0
5
4
2
1
0
XPBBLK
XPABLK
XCBLK
XMCM
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-85. Multichannel Control 2 Register (MCR2) Field Descriptions
Bit
Field
15-10
Reserved
9
XMCME
Value
0
Description
Reserved bits (not available for your use). They are read-only bits and return 0s when read.
Transmit multichannel partition mode bit. XMCME determines whether only 32 channels or all 128
channels are to be individually selectable. XMCME is only applicable if channels can be individually
disabled/enabled or masked/unmasked for transmission (XMCM is nonzero).
0
2-partition mode. Only partitions A and B are used. You can control up to 32 channels in the
transmit multichannel selection mode selected with the XMCM bits.
If XMCM = 01b or 10b, assign 16 channels to partition A with the XPABLK bits. Assign 16 channels
to partition B with the XPBBLK bits.
If XMCM = 11b(for symmetric transmission and reception), assign 16 channels to receive partition A
with the RPABLK bits. Assign 16 channels to receive partition B with the RPBBLK bits.
You control the channels with the appropriate transmit channel enable registers:
XCERA: Channels in partition A
XCERB: Channels in partition B
1
8-partition mode. All partitions (A through H) are used. You can control up to 128 channels in the
transmit multichannel selection mode selected with the XMCM bits.
You control the channels with the appropriate transmit channel enable registers:
XCERA: Channels 0 through 15
XCERB: Channels 16 through 31
XCERC: Channels 32 through 47
XCERD: Channels 48 through 63
XCERE: Channels 64 through 79
XCERF: Channels 80 through 95
XCERG: Channels 96 through 111
XCERH: Channels 112 through 127
1030
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-85. Multichannel Control 2 Register (MCR2) Field Descriptions (continued)
Bit
Field
8-7
XPBBLK
Value
0-3h
Description
Transmit partition B block bits
XPBBLK is only applicable if channels can be individually disabled/enabled and masked/unmasked
(XMCM is nonzero) and the 2-partition mode is selected (XMCME = 0). Under these conditions, the
McBSP transmitter can transmit or withhold data in any of the 32 channels that are assigned to
partitions A and B of the transmitter.
The 128 transmit channels of the McBSP are divided equally among 8 blocks (0 through 7). When
XPBBLK is applicable, use XPBBLK to assign one of the odd-numbered blocks (1, 3, 5, or 7) to
partition B, as shown in the following table. Use the XPABLK bit to assign one of the evennumbered blocks (0, 2, 4, or 6) to partition A.
If you want to use more than 32 channels, you can change block assignments dynamically. You
can assign a new block to one partition while the transmitter is handling activity in the other
partition. For example, while the block in partition A is active, you can change which block is
assigned to partition B. The XCBLK bits are regularly updated to indicate which block is active.
When XMCM = 11b (for symmetric transmission and reception), the transmitter uses the receive
block bits (RPABLK and RPBBLK) rather than the transmit block bits (XPABLK and XPBBLK).
6-5
4-2
1-0
0
Block 1: channels 16 through 31
1h
Block 3: channels 48 through 63
2h
Block 5: channels 80 through 95
3h
Block 7: channels 112 through 127
XPABLK
Transmit partition A block bits. XPABLK is only applicable if channels can be individually
disabled/enabled and masked/unmasked (XMCM is nonzero) and the 2-partition mode is selected
(XMCME = 0). Under these conditions, the McBSP transmitter can transmit or withhold data in any
of the 32 channels that are assigned to partitions A and B of the transmitter. See the description for
XPBBLK (bits 8-7) for more information about assigning blocks to partitions A and B.
0
Block 0: channels 0 through 15
1h
Block 2: channels 32 through 47
2h
Block 4: channels 64 through 79
3h
Block 6: channels 96 through 111
XCBLK
XMCM
Transmit current block indicator. XCBLK indicates which block of 16 channels is involved in the
current McBSP transmission:
0
Block 0: channels 0 through 15
1h
Block 1: channels 16 through 31
2h
Block 2: channels 32 through 47
3h
Block 3: channels 48 through 63
4h
Block 4: channels 64 through 79
5h
Block 5: channels 80 through 95
6h
Block 6: channels 96 through 111
7h
Block 7: channels 112 through 127
0-3h
Transmit multichannel selection mode bits. XMCM determines whether all channels or only selected
channels are enabled and unmasked for transmission. For more details on how the channels are
affected, see Section 15.6.7 Transmit Multichannel Selection Modes.
0
No transmit multichannel selection mode is on. All channels are enabled and unmasked. No
channels can be disabled or masked.
1h
All channels are disabled unless they are selected in the appropriate transmit channel enable
registers (XCERs). If enabled, a channel in this mode is also unmasked.
The XMCME bit determines whether 32 channels or 128 channels are selectable in XCERs.
2h
All channels are enabled, but they are masked unless they are selected in the appropriate transmit
channel enable registers (XCERs).
The XMCME bit determines whether 32 channels or 128 channels are selectable in XCERs.
3h
This mode is used for symmetric transmission and reception.
All channels are disabled for transmission unless they are enabled for reception in the appropriate
receive channel enable registers (RCERs). Once enabled, they are masked unless they are also
selected in the appropriate transmit channel enable registers (XCERs).
The XMCME bit determines whether 32 channels or 128 channels are selectable in RCERs and
XCERs.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1031
McBSP Registers
www.ti.com
15.12.9 Pin Control Register (PCR)
Each McBSP has one pin control register (PCR). Table 15-86 describes the bits of PCR. This register
enables you to:
• Choose a frame-synchronization mode for the transmitter (FSXM) and for the receiver (FSRM)
• Choose a clock mode for transmitter (CLKXM) and for the receiver (CLKRM)
• Select the input clock source for the sample rate generator (SCLKME, in conjunction with the CLKSM
bit of SRGR2)
• Choose whether frame-synchronization signals are active low or active high (FSXP for transmission,
FSRP for reception)
• Specify whether data is sampled on the falling edge or the rising edge of the clock signals (CLKXP for
transmission, CLKRP for reception)
The pin control register (PCR) is shown in Figure 15-77 and described in Table 15-86.
Figure 15-77. Pin Control Register (PCR)
15
12
7
11
10
9
8
Reserved
FSXM
FSRM
CLKXM
CLKRM
R-0
R/W-0
R/W-0
R/W-0
R/W-0
3
2
1
0
SCLKME
6
Reserved
4
FSXP
FSRP
CLKXP
CLKRP
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-86. Pin Control Register (PCR) Field Descriptions
Bit
Field
15:12
11
10
1032
Reserved
Value
0
FSXM
Description
Reserved bit (not available for your use). It is a read-only bit and returns a 0 when read.
Transmit frame-synchronization mode bit. FSXM determines whether transmit framesynchronization pulses are supplied externally or internally. The polarity of the signal on the
FSX pin is determined by the FSXP bit.
0
Transmit frame synchronization is supplied by an external source via the FSX pin.
1
Transmit frame synchronization is generated internally by the Sample Rate generator, as
determined by the FSGM bit of SRGR2.
FSRM
Receive frame-synchronization mode bit. FSRM determines whether receive framesynchronization pulses are supplied externally or internally. The polarity of the signal on the
FSR pin is determined by the FSRP bit.
0
Receive frame synchronization is supplied by an external source via the FSR pin.
1
Receive frame synchronization is supplied by the sample rate generator. FSR is an output pin
reflecting internal FSR, except when GSYNC = 1 in SRGR2.
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-86. Pin Control Register (PCR) Field Descriptions (continued)
Bit
9
Field
Value
CLKXM
Description
Transmit clock mode bit. CLKXM determines whether the source for the transmit clock is
external or internal, and whether the MCLKX pin is an input or an output. The polarity of the
signal on the MCLKX pin is determined by the CLKXP bit.
In the clock stop mode (CLKSTP = 10b or 11b), the McBSP can act as a master or as a slave
in the SPI protocol. If the McBSP is a master, make sure that CLKX is an output. If the McBSP
is a slave, make sure that CLKX is an input.
Not in clock stop mode (CLKSTP = 00b or 01b):
0
The transmitter gets its clock signal from an external source via the MCLKX pin.
1
Internal CLKX is driven by the sample rate generator of the McBSP. The MCLKX pin is an
output pin that reflects internal CLKX.
In clock stop mode (CLKSTP = 10b or 11b):
8
0
The McBSP is a slave in the SPI protocol. The internal transmit clock (CLKX) is driven by the
SPI master via the MCLKX pin. The internal receive clock (MCLKR) is driven internally by
CLKX, so that both the transmitter and the receiver are controlled by the external master clock.
1
The McBSP is a master in the SPI protocol. The sample rate generator drives the internal
transmit clock (CLKX). Internal CLKX is reflected on the MCLKX pin to drive the shift clock of
the SPI-compliant slaves in the system. Internal CLKX also drives the internal receive clock
(MCLKR), so that both the transmitter and the receiver are controlled by the internal master
clock.
CLKRM
Receive clock mode bit. The role of CLKRM and the resulting effect on the MCLKR pin depend
on whether the McBSP is in the digital loopback mode (DLB = 1).
The polarity of the signal on the MCLKR pin is determined by the CLKRP bit.
Not in digital loopback mode (DLB = 0):
0
The MCLKR pin is an input pin that supplies the internal receive clock (MCLKR).
1
Internal MCLKR is driven by the sample rate generator of the McBSP. The MCLKR pin is an
output pin that reflects internal MCLKR.
In digital loopback mode (DLB = 1):
7
0
The MCLKR pin is in the high impedance state. The internal receive clock (MCLKR) is driven
by the internal transmit clock (CLKX). CLKX is derived according to the CLKXM bit.
1
Internal MCLKR is driven by internal CLKX. The MCLKR pin is an output pin that reflects
internal MCLKR. CLKX is derived according to the CLKXM bit.
SCLKME
Sample rate generator input clock mode bit. The sample rate generator can produce a clock
signal, CLKG. The frequency of CLKG is:
CLKG freq. = (Input clock frequency) / (CLKGDV + 1)
SCLKME is used in conjunction with the CLKSM bit to select the input clock.
SCLKME
CLKSM
Input Clock For
Sample Rate Generator
0
0
Reserved
0
1
LSPCLK
The input clock for the sample rate generator is taken from the MCLKR pin or from the MCLKX
pin, depending on the value of the CLKSM bit of SRGR2:
6-4
3
2
SCLKME
CLKSM
Input Clock For
Sample Rate Generator
1
0
Signal on MCLKR pin
1
1
Signal on MCLKX pin
Reserved
Reserved
FSXP
Transmit frame-synchronization polarity bit. FSXP determines the polarity of FSX as seen on
the FSX pin.
0
Transmit frame-synchronization pulses are active high.
1
Transmit frame-synchronization pulses are active low.
FSRP
Receive frame-synchronization polarity bit. FSRP determines the polarity of FSR as seen on
the FSR pin.
0
Receive frame-synchronization pulses are active high.
1
Receive frame-synchronization pulses are active low.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1033
McBSP Registers
www.ti.com
Table 15-86. Pin Control Register (PCR) Field Descriptions (continued)
Bit
Field
1
Value
Description
CLKXP
0
Transmit clock polarity bit. CLKXP determines the polarity of CLKX as seen on the MCLKX pin.
0
Transmit data is sampled on the rising edge of CLKX.
1
Transmit data is sampled on the falling edge of CLKX.
CLKRP
Receive clock polarity bit. CLKRP determines the polarity of CLKR as seen on the MCLKR pin.
0
Receive data is sampled on the falling edge of MCLKR.
1
Receive data is sampled on the rising edge of MCLKR.
Table 15-87. Pin Configuration
Pin
Selected as Output When …
Selected as Input When …
CLKX
CLKXM = 1
CLKXM = 0
FSX
FSXM = 1
FSXM = 0
CLKR
CLKRM = 1
CLKRM = 0
FSR
FSRM = 1
FSRM = 0
15.12.10 Receive Channel Enable Registers (RCERA, RCERB, RCERC, RCERD, RCERE,
RCERF, RCERG, RCERH)
Each McBSP has eight receive channel enable registers of the format shown in Figure 15-78. There is
one enable register for each of the receive partitions: A, B, C, D, E, F, G, and H. Table 15-88 provides a
summary description that applies to any bit x of a receive channel enable register.
These memory-mapped registers are only used when the receiver is configured to allow individual
enabling and disabling of the channels (RMCM = 1). For more details about the way these registers are
used, see Section 15.12.10.1, RCERs Used in the Receive Multichannel Selection Mode.
The receive channel enable registers (RCERA...RCERH) are shown in Figure 15-78 and described in
Table 15-88.
Figure 15-78. Receive Channel Enable Registers (RCERA...RCERH)
15
14
13
12
11
10
9
8
RCE15
RCE14
RCE13
RCE12
RCE11
RCE10
RCE9
RCE8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
RCE7
RCE6
RCE5
RCE4
RCE3
RCE2
RCE1
RCE0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-88. Receive Channel Enable Registers (RCERA...RCERH) Field Descriptions
Bit
Field
15-0
RCEx
Value
Description
Receive channel enable bit.
For receive multichannel selection mode (RMCM = 1):
0
Disable the channel that is mapped to RCEx.
1
Enable the channel that is mapped to RCEx.
15.12.10.1 RCERs Used in the Receive Multichannel Selection Mode
For multichannel selection operation, the assignment of channels to the RCERs depends on whether 32
or 128 channels are individually selectable, as defined by the RMCME bit. For each of these two cases,
Table 15-89 shows which block of channels is assigned to each of the RCERs used. For each RCER, the
table shows which channel is assigned to each of the bits.
1034
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-89. Use of the Receive Channel Enable Registers
Number of
Selectable
Channels
32
(RMCME = 0)
Block Assignments
RCERx
Block Assigned
Bit in RCERx
Channel Assigned
RCERA
Channels n to (n + 15)
RCE0
Channel n
RCE1
Channel (n + 1)
RCE2
Channel (n + 2)
:
:
RCERB
128
(RMCME = 1)
Channel Assignments
RCERA
RCERB
The block of channels is chosen with RCE15
the RPABLK bits.
Channel (n + 15)
Channels m to (m + 15)
RCE0
Channel m
RCE1
Channel (m + 1)
RCE2
Channel (m + 2)
:
:
The block of channels is chosen with RCE15
the RPBBLK bits.
Channel (m + 15)
Block 0
RCE0
Channel 0
RCE1
Channel 1
RCE2
Channel 2
:
:
RCE15
Channel 15
RCE0
Channel 16
RCE1
Channel 17
RCE2
Channel 18
:
:
RCE15
Channel 31
RCE0
Channel 32
RCE1
Channel 33
RCE2
Channel 34
:
:
RCE15
Channel 47
RCE0
Channel 48
RCE1
Channel 49
RCE2
Channel 50
:
:
RCE15
Channel 63
RCE0
Channel 64
RCE1
Channel 65
RCE2
Channel 66
:
:
RCE15
Channel 79
RCE0
Channel 80
RCE1
Channel 81
RCE2
Channel 82
:
:
RCE15
Channel 95
RCE0
Channel 96
RCE1
Channel 97
RCE2
Channel 98
:
:
RCE15
Channel 111
Block 1
RCERC
Block 2
RCERD
Block 3
RCERE
Block 4
RCERF
Block 5
RCERG
Block 6
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP) 1035
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-89. Use of the Receive Channel Enable Registers (continued)
Number of
Selectable
Channels
Block Assignments
Channel Assignments
RCERx
Block Assigned
Bit in RCERx
Channel Assigned
RCERH
Block 7
RCE0
Channel 112
RCE1
Channel 113
RCE2
Channel 114
:
:
RCE15
Channel 127
15.12.11 Transmit Channel Enable Registers (XCERA, XCERB, XCERC, XCERD, XCERE,
XCERF, XCERG, XCERH)
Each McBSP has eight transmit channel enable registers of the form shown in Figure 15-79. There is one
for each of the transmit partitions: A, B, C, D, E, F, G, and H. Table 15-90 provides a summary description
that applies to each bit XCEx of a transmit channel enable register.
The XCERs are only used when the transmitter is configured to allow individual disabling/enabling and
masking/unmasking of the channels (XMCM is nonzero).
The transmit channel enable registers (XCERA...XCERH) are shown in Figure 15-79 and described in
Table 15-90.
Figure 15-79. Transmit Channel Enable Registers (XCERA...XCERH)
15
14
13
12
11
10
9
8
XCE15
XCE14
XCE13
XCE12
XCE11
XCE10
XCE9
XCE8
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
7
6
5
4
3
2
1
0
XCE7
XCE6
XCE5
XCE4
XCE3
XCE2
XCE1
XCE0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-90. Transmit Channel Enable Registers (XCERA...XCERH) Field Descriptions
Bit
Field
15-0
XCEx
Value
Description
Transmit channel enable bit. The role of this bit depends on which transmit multichannel selection
mode is selected with the XMCM bits.
For multichannel selection when XMCM = 01b
(all channels disabled unless selected):
0
Disable and mask the channel that is mapped to XCEx.
1
Enable and unmask the channel that is mapped to XCEx.
For multichannel selection when XMCM = 10b
(all channels enabled but masked unless selected):
0
Mask the channel that is mapped to XCEx.
1
Unmask the channel that is mapped to XCEx.
For multichannel selection when XMCM = 11b
(all channels masked unless selected):
1036
0
Mask the channel that is mapped to XCEx. Even if the channel is enabled by the corresponding
receive channel enable bit, this channel's data cannot appear on the DX pin.
1
Unmask the channel that is mapped to XCEx. If the channel is also enabled by the corresponding
receive channel enable bit, full transmission can occur.
Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
15.12.11.1 XCERs Used in a Transmit Multichannel Selection Mode
For multichannel selection operation, the assignment of channels to the XCERs depends on whether 32 or
128 channels are individually selectable, as defined by the XMCME bit. These two cases are shown in
Table 15-91. The table shows which block of channels is assigned to each XCER that is used. For each
XCER, the table shows which channel is assigned to each of the bits.
NOTE: When XMCM = 11b (for symmetric transmission and reception), the transmitter uses the
receive channel enable registers (RCERs) to enable channels and uses the XCERs to
unmask channels for transmission.
Table 15-91. Use of the Transmit Channel Enable Registers
Number of
Selectable
Channels
32
(XMCME = 0)
Block Assignments
XCERx
Block Assigned
Bit in XCERx
Channel Assigned
XCERA
Channels n to (n + 15)
XCE0
Channel n
XCE1
Channel (n + 1)
XCE2
Channel (n + 2)
:
:
When XMCM = 01b or 10b, the block
of channels is chosen with the
XPABLK bits. When XMCM = 11b,
the block is chosen with the RPABLK
bits.
XCE15
Channel (n + 15)
Channels m to (m + 15)
XCE0
Channel m
XCE1
Channel (m + 1)
XCE2
Channel (m + 2)
:
:
When XMCM = 01b or 10b, the block
of channels is chosen with the
XPBBLK bits. When XMCM = 11b,
the block is chosen with the RPBBLK
bits.
XCE15
Channel (m + 15)
Block 0
XCE0
Channel 0
XCE1
Channel 1
XCE2
Channel 2
:
:
XCE15
Channel 15
XCE0
Channel 16
XCE1
Channel 17
XCE2
Channel 18
:
:
XCE15
Channel 31
XCE0
Channel 32
XCE1
Channel 33
XCE2
Channel 34
:
:
XCE15
Channel 47
XCE0
Channel 48
XCE1
Channel 49
XCE2
Channel 50
:
:
XCE15
Channel 63
XCERB
128
(XMCME = 1)
Channel Assignments
XCERA
XCERB
Block 1
XCERC
Block 2
XCERD
Block 3
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP) 1037
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-91. Use of the Transmit Channel Enable Registers (continued)
Number of
Selectable
Channels
Block Assignments
Channel Assignments
XCERx
Block Assigned
Bit in XCERx
Channel Assigned
XCERE
Block 4
XCE0
Channel 64
XCE1
Channel 65
XCE2
Channel 66
:
:
XCE15
Channel 79
XCE0
Channel 80
XCE1
Channel 81
XCE2
Channel 82
:
:
XCE15
Channel 95
XCE0
Channel 96
XCE1
Channel 97
XCE2
Channel 98
:
:
XCE15
Channel 111
XCE0
Channel 112
XCE1
Channel 113
XCE2
Channel 114
:
:
XCE15
Channel 127
XCERF
Block 5
XCERG
Block 6
XCERH
Block 7
15.12.12 Interrupt Generation
McBSP registers can be programmed to receive and transmit data through DRR2/DRR1 and DXR2/DXR1
registers, respectively. The CPU can directly access these registers to move data from memory to these
registers. Interrupt signals will be based on these register pair contents and its related flags.MRINT/MXINT
will generate CPU interrupts for receive and transmit conditions.
15.12.12.1 McBSP Receive Interrupt Generation
In the McBSP module, data receive and error conditions generate two sets of interrupt signals. One set is
used for the CPU and the other set is for DMA.
Figure 15-80. Receive Interrupt Generation
00
01
10
11
RRDY
EOBR condition
FSR detected
RSYNCERR
RINT
RINTENA
MRINT
RINTM bits
Table 15-92. Receive Interrupt Sources and Signals
McBSP
Interrupt
Signal
Interrupt Flags
Interrupt Enables
in SPCR1
Interrupt Enables
Type of Interrupt
Interrupt Line
RINTM
Bits
1038Multichannel Buffered Serial Port (McBSP)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-92. Receive Interrupt Sources and Signals (continued)
McBSP
Interrupt
Signal
Interrupt Flags
Interrupt Enables
in SPCR1
Interrupt Enables
Type of Interrupt
Interrupt Line
RINT
RRDY
0
RINTENA
Every word receive
MRINT
EOBR
1
RINTENA
Every 16 channel
block boundary
FSR
10
RINTENA
On every FSR
RSYNCERR
11
RINTENA
Frame sync error
NOTE: Since X/RINT, X/REVTA, and X/RXFFINT share the same CPU interrupt, it is recommended
that all applications use one of the above selections for interrupt generation. If multiple
interrupt enables are selected at the same time, there is a likelihood of interrupts being
masked or not recognized.
15.12.12.2 McBSP Transmit Interrupt Generation
McBSP module data transmit and error conditions generate two sets of interrupt signals. One set is used
for the CPU and the other set is for DMA.
Figure 15-81. Transmit Interrupt Generation
00
01
10
11
XRDY
EOBX condition
FSX detected
XSYNCERR
XINT
XINTENA
MXINT
XINTM bits
Table 15-93. Transmit Interrupt Sources and Signals
McBSP
Interrupt
Signal
Interrupt
Flags
Interrupt
Enables in
SPCR2
Interrupt
Enables
Type of Interrupt
Interrupt
Line
XINTM Bits
XINT
XRDY
0
XINTENA
Every word transmit
EOBX
1
XINTENA
Every 16-channel block boundary
FSX
10
XINTENA
On every FSX
XSYNCERR
11
XINTENA
Frame sync error
MXINT
15.12.12.3 Error Flags
The McBSP has several error flags both on receive and transmit channel. Table 15-94 explains the error
flags and their meaning.
Table 15-94. Error Flags
Error Flags
Function
RFULL
Indicates DRR2/DRR1 are not read and RXR register is overwritten
RSYNCERR
Indicates unexpected frame-sync condition, current data reception will abort and restart. Use RINTM
bit 11 for interrupt generation on this condition.
XSYNCERR
Indicates unexpected frame-sync condition, current data transmission will abort and restart. Use
XINTM bit 11 for interrupt generation on this condition.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1039
McBSP Registers
www.ti.com
15.12.12.4 McBSP Interrupt Enable Register
Figure 15-82. McBSP Interrupt Enable Register (MFFINT)
15
8
Reserved
R-0
7
3
2
1
0
Reserved
RINT ENA
Reserved
XINT ENA
R-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 15-95. McBSP Interrupt Enable Register (MFFINT) Field Descriptions
Bit
Field
Value
15:3
Reserved
2
RINT ENA
1
Reserved
0
XINT ENA
Description
Reserved
Enable for Receive Interrupt
0
Receive interrupt on RRDY is disabled.
1
Receive interrupt on RRDY is enabled.
Enable for transmit Interrupt
0
Transmit interrupt on XRDY is disabled.
1
Transmit interrupt on XRDY is enabled.
15.12.12.5 McBSP Modes
McBSP, in its normal mode, communicates with various types of Codecs with variable word size. Apart
from this mode, the McBSP uses time-division multiplexed (TDM) data stream while communicating with
other McBSPs or serial devices. The multichannel mode provides flexibility while transmitting/receiving
selected channels or all the channels in a TDM stream.
Table 15-96 provides a quick reference to McBSP mode selection.
Table 15-96. McBSP Mode Selection
Register Bits Used for Mode Selection
MCR1 bit 9,0
No.
McBSP
Word Size
MCR2 bit 9,1,0
RMCME
RMCM
XMCME
XMCM
0
0
0
0
Mode and Function Description
Normal Mode
1
8/12/16/20/24/32
bit words
All types of Codec interface will use this
selection
Multichannel Mode
2
8-bit words
2 Partition or 32-channel Mode
0
1
0
1
0
1
0
10
All channels are disabled,unless selected in
X/RCERA/B
All channels are enabled,but masked unless
selected in X/RCERA/B
0
1
0
11
Symmetric transmit, receive
8 Partition or 128 Channel Mode Transmit/
Receive
Channels selected by X/RCERA to
X/RCERH bits
Multichannel Mode is ON
1
1
1040Multichannel Buffered Serial Port (McBSP)
1
1
All channels are disabled,unless selected in
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
McBSP Registers
www.ti.com
Table 15-96. McBSP Mode Selection (continued)
Register Bits Used for Mode Selection
MCR1 bit 9,0
No.
McBSP
Word Size
MCR2 bit 9,1,0
RMCME
RMCM
XMCME
XMCM
1
1
1
10
1
1
1
11
Mode and Function Description
XCERs
All channels are enabled,but masked unless
selected in XCERs
Symmetric transmit, receive
Continuous Mode - Transmit
1
0
1
0
Multi-Channel Mode is OFF
All 128 channels are active and enabled
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Multichannel Buffered Serial Port (McBSP)
Copyright © 2011–2017, Texas Instruments Incorporated
1041
Chapter 16
SPRUH18G – January 2011 – Revised April 2017
Enhanced Controller Area Network (eCAN)
The enhanced Controller Area Network (eCAN) module implemented in the C28x DSP is a full-CAN
controller and is compatible with the CAN 2.0B standard (active). It uses established protocol to
communicate serially with other controllers in electrically noisy environments. With 32 fully configurable
mailboxes and time−stamping feature, the eCAN module provides a versatile and robust serial
communication interface.
The eCAN module described in this reference guide is a Type 2 eCAN. Refer to theTMS320x28xx, 28xxx
DSP Peripheral Reference Guide (SPRU566) for a list of other devices with a eCAN module of the same
type, to determine the differences between types, and for a list of device-specific differences within a type.
For a given CAN module, the same address space is used for the module registers in all 28xx /28xxx
devices.
Topic
...........................................................................................................................
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
1042
CAN Overview ................................................................................................
The CAN Network and Module ..........................................................................
eCAN Controller Overview ...............................................................................
Message Objects ............................................................................................
Message Mailbox ............................................................................................
eCAN Registers ..............................................................................................
Timer Management Unit ...................................................................................
Mailbox Layout ...............................................................................................
Acceptance Filter ............................................................................................
CAN Module Initialization................................................................................
Steps to Configure eCAN ................................................................................
Handling of Remote Frame Mailboxes ..............................................................
Interrupts ......................................................................................................
CAN Power-Down Mode .................................................................................
Enhanced Controller Area Network (eCAN)
Page
1043
1045
1046
1051
1051
1054
1084
1090
1094
1095
1100
1102
1103
1108
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CAN Overview
www.ti.com
16.1 CAN Overview
Figure 16-1 shows the major blocks of the eCAN and the interface circuits.
16.1.1 Features
The eCAN module has the following features:
• Fully compliant with CAN protocol, version 2.0B
• Supports data rates up to 1 Mbps
• Thirty-two mailboxes, each with the following properties:
– Configurable as receive or transmit
– Configurable with standard or extended identifier
– Has a programmable acceptance filter mask
– Supports data and remote frame
– Supports 0 to 8 bytes of data
– Uses a 32-bit time stamp on received and transmitted message
– Protects against reception of new message
– Allows dynamically programmable priority of transmit message
– Employs a programmable interrupt scheme with two interrupt levels
– Employs a programmable interrupt on transmission or reception time-out
• Low−power mode
• Programmable wake−up on bus activity
• Automatic reply to a remote request message
• Automatic retransmission of a frame in case of loss of arbitration or error
• 32-bit time-stamp counter synchronized by a specific message (communication in conjunction with
mailbox 16)
• Self−test mode
– Operates in a loopback mode receiving its own message. A “dummy” acknowledge is provided,
thereby eliminating the need for another node to provide the acknowledge bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1043
CAN Overview
www.ti.com
16.1.2 Block Diagram
Figure 16-1. eCAN Block Diagram and Interface Circuit
ECAN0INT
ECAN1INT
Controls
Address
Data
32
Enhanced CAN Controller
Message Controller
Memory Management
Unit
32−Message
Mailbox RAM
4 X 32−Bit Words
for each mailbox)
32
CPU Interface,
Receive Control Unit,
Timer Management Unit
Control and status
registers
32
8
Communication
buffers
A
SN65HVD23x
3.3−V CAN Transceiver
CAN Bus
A
The communication buffers are transparent to the user and are not accessible by user code.
16.1.3 eCAN Compatibility With Other TI CAN Modules
The eCAN module is identical to the High-end CAN Controller (HECC) used in the TMS470 series of
microcontrollers from Texas Instruments with some minor changes. The eCAN module features several
enhancements (such as increased number of mailboxes with individual acceptance masks, time stamping,
and so on) over the CAN module featured in 240x series of DSPs. For this reason, code written for 240x
CAN modules cannot be directly ported to eCAN. However, eCAN follows the same register bit-layout
structure and bit functionality as that of 240x CAN (for registers that exist in both devices) that is, many
registers and bits perform exactly identical functions across these two platforms. This makes code
migration a relatively easy task, more so with code written in C language.
1044
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
The CAN Network and Module
www.ti.com
16.2 The CAN Network and Module
The controller area network (CAN) uses a serial multimaster communication protocol that efficiently
supports distributed real-time control, with a very high level of security, and a communication rate of up to
1 Mbps. The CAN bus is ideal for applications operating in noisy and harsh environments, such as in the
automotive and other industrial fields that require reliable communication.
Prioritized messages of up to eight bytes in data length can be sent on a multimaster serial bus using an
arbitration protocol and an error-detection mechanism for a high level of data integrity.
16.2.1 CAN Protocol Overview
The CAN protocol supports four different frame types for communication:
• Data frames that carry data from a transmitter node to the receiver nodes
• Remote frames that are transmitted by a node to request the transmission of a data frame with the
same identifier
• Error frames that are transmitted by any node on a bus-error detection
• Overload frames that provide an extra delay between the preceding and the succeeding data frames or
remote frames.
In addition, CAN specification version 2.0B defines two different formats that differ in the length of the
identifier field: standard frames with an 11-bit identifier and extended frames with 29-bit identifier.
CAN standard data frames contain from 44 to 108 bits and CAN extended data frames contain 64 to 128
bits. Furthermore, up to 23 stuff bits can be inserted in a standard data frame, and up to 28 stuff bits in an
extended data frame, depending on the data-stream coding. The overall maximum data frame length is
then 131 bits for a standard frame and 156 bits for an extended frame.
The bit fields that make up standard/extended data frames, along with their position as shown in
Figure 16-2 include the following:
• Start of frame
• Arbitration field containing the identifier and the type of message being sent
• Control field indicating the number of bytes being transmitted.
• Up to 8 bytes of data
• Cyclic redundancy check (CRC)
• Acknowledgment
• End-of-frame bits
Figure 16-2. CAN Data Frame
Bit length
1
Start bit
12 or 32
6
16
0-8 bytes
2
Control bits
7
End
Data field
Arbitration field which contains:
– 11-bit identifier + RTR bit for standard frame format
– 29-bit identifier + SRR bit + IDE bit + RTR bit for extended frame format
Where: RTR = Remote Transmission Request
SRR = Substitute Remote Request
IDE = Identifier Extension
CRC bits
Acknowledge
Note: Unless otherwise noted, numbers are amount of bits in field.
The eCAN controller provides the CPU with full functionality of the CAN protocol, version 2.0B. The CAN
controller minimizes the CPU’s load in communication overhead and enhances the CAN standard by
providing additional features.
The architecture of eCAN module, shown in Figure 16-3, is composed of a CAN protocol kernel (CPK) and
a message controller.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1045
eCAN Controller Overview
www.ti.com
Figure 16-3. Architecture of the eCAN Module
CPU
CAN controller
Message Controller
A
Receive Buffer
A
Transmit Buffer
CAN Protocol Kernel (CPK)
RX
TX
CAN Transceiver
CAN Bus
A
The receive and transmit buffers are transparent to the user and are not accessible by user code.
Two functions of the CPK are to decode all messages received on the CAN bus according to the CAN
protocol and to transfer these messages into a receive buffer. Another CPK function is to transmit
messages on the CAN bus according to the CAN protocol.
The message controller of a CAN controller is responsible for determining if any message received by the
CPK must be preserved for the CPU use or be discarded. At the initialization phase, the CPU specifies to
the message controller all message identifiers used by the application. The message controller is also
responsible for sending the next message to transmit to the CPK according to the message’s priority.
16.3 eCAN Controller Overview
The eCAN is a CAN controller with an internal 32-bit architecture.
The eCAN module consists of:
• The CAN protocol kernel (CPK)
• The message controller comprising:
– The memory management unit (MMU), including the CPU interface and the receive control unit
(acceptance filtering), and the timer management unit
– Mailbox RAM enabling the storage of 32 messages
– Control and status registers
After the reception of a valid message by the CPK, the receive control unit of the message controller
determines if the received message must be stored into one of the 32 message objects of the mailbox
RAM. The receive control unit checks the state, the identifier, and the mask of all message objects to
determine the appropriate mailbox location. The received message is stored into the first mailbox passing
the acceptance filtering. If the receive control unit could not find any mailbox to store the received
message, the message is discarded.
1046
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Controller Overview
www.ti.com
A message is composed of an 11- or 29-bit identifier, a control field, and up to 8 bytes of data.
When a message must be transmitted, the message controller transfers the message into the transmit
buffer of the CPK in order to start the message transmission at the next bus-idle state. When more than
one message must be transmitted, the message with the highest priority that is ready to be transmitted is
transferred into the CPK by the message controller. If two mailboxes have the same priority, then the
mailbox with the higher number is transmitted first.
The timer management unit comprises a time-stamp counter and apposes a time stamp to all messages
received or transmitted. It generates an interrupt when a message has not been received or transmitted
during an allowed period of time (time-out). The time-stamping feature is available in eCAN mode only.
To initiate a data transfer, the transmission request bit (TRS.n) has to be set in the corresponding control
register. The entire transmission procedure and possible error handling are then performed without any
CPU involvement. If a mailbox has been configured to receive messages, the CPU easily reads its data
registers using CPU read instructions. The mailbox may be configured to interrupt the CPU after every
successful message transmission or reception.
16.3.1 Standard CAN Controller (SCC) Mode
The SCC Mode is a reduced functionality mode of the eCAN. Only 16 mailboxes (0 through 15) are
available in this mode. The time stamping feature is not available and the number of acceptance masks
available is reduced. This mode is selected by default. The SCC mode or the full featured eCAN mode is
selected using the SCB bit (CANMC.13).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1047
eCAN Controller Overview
www.ti.com
16.3.2 Memory Map
The eCAN module has two different address segments mapped in the memory. The first segment is used
to access the control registers, the status registers, the acceptance masks, the time stamp, and the timeout of the message objects. The access to the control and status registers is limited to 32-bit wide
accesses. The local acceptance masks, the time stamp registers, and the time-out registers can be
accessed 8-bit, 16-bit and 32-bit wide. The second address segment is used to access the mailboxes.
This memory range can be accessed 8-bit, 16-bit and 32-bit wide. Each of these two memory blocks,
shown in Figure 16-4, uses 512 bytes of address space.
The message storage is implemented by a RAM that can be addressed by the CAN controller or the CPU.
The CPU controls the CAN controller by modifying the various mailboxes in the RAM or the additional
registers. The contents of the various storage elements are used to perform the functions of the
acceptance filtering, message transmission, and interrupt handling.
The mailbox module in the eCAN provides 32 message mailboxes of 8-byte data length, a 29-bit identifier,
and several control bits. Each mailbox can be configured as either transmit or receive. In the eCAN mode,
each mailbox has its individual acceptance mask.
NOTE: LAMn, MOTSn and MOTOn registers and mailboxes not used in an application (disabled in
the CANME register) may be used as general-purpose data memory by the CPU.
16.3.2.1 32-bit Access to Control and Status Registers
As indicated in Section 16.3.2, only 32-bit accesses are allowed to the Control and Status registers. 16-bit
access to these registers could potentially corrupt the register contents or return false data. The DSP
header files released by TI employs a shadow register structure that aids in 32-bit access. Following are a
few examples of how the shadow register structure may be employed to perform 32-bit reads/writes:
Example 16-1. Modifying a bit in a register
ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; // Step 1 ECanaShadow.CANTIOC.bit.TXFUNC = 1; //
Step 2 ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all; // Step 3
Step 1: Perform a 32-bit read to copy the entire register to its shadow
Step 2: Modify the needed bit(s) in the shadow
Step 3: Perform a 32-bit write to copy the modified shadow to the original register.
NOTE:
Some bits like TAn and RMPn are cleared by writing a 1 to it. Care should be taken not to
clear bits inadvertently.
Example 16-2. Checking the value of a bit in a register
do { ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; }while(ECanaShadow.CANTA.bit.TA25 == 0); // Wait
for TA5 bit to be set..
In the above example, the value of TA25 bit needs to be checked. This is done by first copying the entire
CANTA register to its shadow (using a 32-bit read) and then checking the relevant bit, repeating this
operation until that condition is satisfied. TA25 bit should NOT be checked with the following statement:
while(ECanaRegs.CANTA.bit.TA25 == 0);
1048
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Controller Overview
www.ti.com
Figure 16-4. eCAN-A Memory Map
eCAN−A Control and Status Registers
Mailbox Enable − CANME
Mailbox Direction − CANMD
Transmission Request Set − CANTRS
Transmission Request Reset − CANTRR
Transmission Acknowledge − CANTA
eCAN−A Registers (512 Bytes)
6000h
Abort Acknowledge − CANAA
Received Message Pending − CANRMP
Control and Status Registers
Received Message Lost − CANRML
603Fh
6040h
607Fh
6080h
60BFh
60C0h
60FFh
Remote Frame Pending − CANRFP
Local Acceptance Masks (LAM)
(32 × 32−Bit RAM)
Global Acceptance Mask − CANGAM
Message Object Time Stamps (MOTS)
(32 × 32−Bit RAM)
Bit−Timing Configuration − CANBTC
Master Control − CANMC
Error and Status − CANES
Message Object Time−Out (MOTO)
(32 × 32−Bit RAM)
Transmit Error Counter − CANTEC
Receive Error Counter − CANREC
Global Interrupt Flag 0 − CANGIF0
Global Interrupt Mask − CANGIM
Global Interrupt Flag 1 − CANGIF1
eCAN−A Mailbox RAM (512 Bytes)
6100h−6107h
Mailbox 0
6108h−610Fh
Mailbox 1
6110h−6117h
Mailbox 2
6118h−611Fh
Mailbox 3
6120h−6127h
Mailbox 4
Mailbox Interrupt Mask − CANMIM
Mailbox Interrupt Level − CANMIL
Overwrite Protection Control − CANOPC
TX I/O Control − CANTIOC
RX I/O Control − CANRIOC
Time−Stamp Counter − CANTSC
Time−Out Control − CANTOC
Time−Out Status − CANTOS
61E0h−61E7h
Mailbox 28
61E8h−61EFh
Mailbox 29
61F0h−61F7h
Mailbox 30
61F8h−61FFh
Mailbox 31
Reserved
Message Mailbox (16 Bytes)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
61E8h−61E9h
Message Identifier − MSGID (32 bits)
61EAh−61EBh
Message Control − MSGCTRL (32 bits)
61ECh−61EDh
Message Data Low − CANMDL (4 bytes)
61EEh−61EFh
Message Data High − CANMDH (4 bytes)
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1049
eCAN Controller Overview
www.ti.com
16.3.3 eCAN Control and Status Registers
The eCAN registers listed below are used by the CPU to configure and control the CAN controller and the
message objects.
Table 16-1. Register Map
REGISTER NAME
ECAN-A
SIZE
ADDRESS
(x32)
DESCRIPTION
CANME
0x6000
1
Mailbox enable
CANMD
0x6002
1
Mailbox direction
CANTRS
0x6004
1
Transmit request set
CANTRR
0x6006
1
Transmit request reset
CANTA
0x6008
1
Transmission acknowledge
CANAA
0x600A
1
Abort acknowledge
CANRMP
0x600C
1
Receive message pending
CANRML
0x600E
1
Receive message lost
CANRFP
0x6010
1
Remote frame pending
CANGAM
0x6012
1
Global acceptance mask
CANMC
0x6014
1
Master control
CANBTC
0x6016
1
Bit-timing configuration
CANES
0x6018
1
Error and status
CANTEC
0x601A
1
Transmit error counter
CANREC
0x601C
1
Receive error counter
CANGIF0
0x601E
1
Global interrupt flag 0
CANGIM
0x6020
1
Global interrupt mask
CANGIF1
0x6022
1
Global interrupt flag 1
CANMIM
0x6024
1
Mailbox interrupt mask
CANMIL
0x6026
1
Mailbox interrupt level
CANOPC
0x6028
1
Overwrite protection control
CANTIOC
0x602A
1
TX I/O control
CANRIOC
0x602C
1
RX I/O control
CANTSC
0x602E
1
Time stamp counter (Reserved in SCC mode)
CANTOC
0x6030
1
Time-out control (Reserved in SCC mode)
CANTOS
0x6032
1
Time-out status (Reserved in SCC mode)
NOTE: Only 32-bit accesses are allowed to the control and status registers. This restriction does not
apply to the mailbox RAM area. See Section 16.3.2.1 for more information.
1050
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Message Objects
www.ti.com
16.4 Message Objects
The eCAN module has 32 different message objects (mailboxes).
Each message object can be configured to either transmit or receive. Each message object has its
individual acceptance mask.
A
•
•
•
•
•
•
message object consists of a message mailbox with:
The 29-bit message identifier
The message control register
8 bytes of message data
A 29-bit acceptance mask
A 32-bit time stamp
A 32-bit time-out value
Furthermore, corresponding control and status bits located in the registers allow control of the message
objects.
16.5 Message Mailbox
The message mailboxes are the RAM area where the CAN messages are actually stored after they are
received or before they are transmitted.
The CPU may use the RAM area of the message mailboxes that are not used for storing messages as
normal memory.
Each mailbox contains:
• The message identifier
– 29 bits for extended identifier
– 11 bits for standard identifier
• The identifier extension bit, IDE (MSGID.31)
• The acceptance mask enable bit, AME (MSGID.30)
• The auto answer mode bit, AAM (MSGID.29)
• The transmit priority level, TPL (MSGCTRL.12-8)
• The remote transmission request bit, RTR (MSGCTRL.4)
• The data length code, DLC (MSGCTRL.3-0)
• Up to eight bytes for the data field
Each of the mailboxes can be configured as one of four message object types. Transmit and receive
message objects are used for data exchange between one sender and multiple receivers (1 to n
communication link), whereas request and reply message objects are used to set up a one-to-one
communication link. Table 16-2 lists the mailbox RAM layout.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN) 1051
Copyright © 2011–2017, Texas Instruments Incorporated
Message Mailbox
www.ti.com
Table 16-2. eCAN-A Mailbox RAM Layout
Mailbox
MSGID
MSGIDL-MSGIDH
MSGCTRL
MSGCTRL-Rsvd
CANMDL
CANMDL_L- CANMDL_H
CANMDH
CANMDH_L- CANMDH_H
0
6100-6101h
6102-6103h
6104-6105h
6106-6107h
1
6108-6109h
610A-610Bh
610C-610Dh
610E-610Fh
2
6110 - 6111h
6112-6113h
6114-6115h
6116-6117h
3
6118-6119h
611A-611Bh
611C-611Dh
611E-611Fh
4
6120-6121h
6122-6123h
6124-6125h
6126-6127h
5
6128-6129h
612A-612Bh
612C-612Dh
612E-612Fh
6
6130-6131h
6132-6133h
6134-6135h
6136-6137h
7
6138-6139h
613A-613Bh
613C-613Dh
613E-613Fh
8
6140-6141h
6142-6143h
6144-6145h
6146-6147h
9
6148-6149h
614A-614Bh
614C-614Dh
614E-614Fh
10
6150-6151h
6152-6153h
6154-6155h
6156-6157h
11
6158-6159h
615A-615Bh
615C-615Dh
615E-615Fh
12
6160-6161h
6162-6163h
6164-6165h
6166-6167h
13
6168-6169h
616A-616Bh
616C-616Dh
616E-616Fh
14
6170-6171h
6172-6173h
6174-6175h
6176-6177h
15
6178-6179h
617A-617Bh
617C-617Dh
617E-617Fh
16
6180-6181h
6182-6183h
6184-6185h
6186-6187h
17
6188-6189h
618A-618Bh
618C-618Dh
618E-618Fh
18
6190-6191h
6192-6193h
6194-6195h
6196-6197h
19
6198-6199h
619A-619Bh
619C-619Dh
619E-619Fh
20
61A0-61A1h
61A2-61A3h
61A4-61A5h
61A6-61A7h
21
61A8-61A9h
61AA-61ABh
61AC-61ADh
61AE-61AFh
22
61B0-61B1h
61B2-61B3h
61B4-61B5h
61B6-61B7h
23
61B8-61B9h
61BA-61BBh
61BC-61BDh
61BE-61BFh
24
61C0-61C1h
61C2-61C3h
61C4-61C5h
61C6-61C7h
25
61C8-61C9h
61CA-61CBh
61CC-61CDh
61CE-61CFh
26
61D0-61D1h
61D2-61D3h
61D4-61D5h
61D6-61D7h
27
61D8-61D9h
61DA-61DBh
61DC-61DDh
61DE-61DFh
28
61E0-61E1h
61E2-61E3h
61E4-61E5h
61E6-61E7h
29
61E8-61E9h
61EA-61EBh
61EC-61EDh
61EE-61EFh
30
61F0-61F1h
61F2-61F3h
61F4-61F5h
61F6-61F7h
31
61F8-61F9h
61FA-61FBh
61FC-61FDh
61FE-61FFh
1052Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Message Mailbox
www.ti.com
Table 16-3. Addresses of LAM, MOTS and MOTO registers for mailboxes (eCAN-A)
Mailbox
LAM
MOTS
MOT0
0
6040h-6041h
6080h-6081h
60C0h-60C1h
1
6042h-6043h
6082h-6083h
60C2h-60C3h
2
6044h-6045h
6084h-6085h
60C4h-60C5h
3
6046h-6047h
6086h-6087h
60C6h-60C7h
4
6048h-6049h
6088h-6089h
60C8h-60C9h
5
604Ah-604Bh
608Ah-608Bh
60CAh-60CBh
6
604Ch-604Dh
608Ch-608Dh
60CCh-60CDh
7
604Eh-604Fh
608Eh-608Fh
60CEh-60CFh
8
6050h-6051h
6090h-6091h
60D0h-60D1h
9
6052h-6053h
6092h-6093h
60D2h-60D3h
10
6054h-6055h
6094h-6095h
60D4h-60D5h
11
6056h-6057h
6096h-6097h
60D6h-60D7h
12
6058h-6059h
6098h-6099h
60D8h-60D9h
13
605Ah-605Bh
609Ah-609Bh
60DAh-60DBh
14
605Ch-605Dh
609Ch-609Dh
60DCh-60DDh
15
605Eh-605Fh
609Eh-609Fh
60DEh-60DFh
16
6060h-6061h
60A0h-60A1h
60E0h-60E1h
17
6062h-6063h
60A2h-60A3h
60E2h-60E3h
18
6064h-6065h
60A4h-60A5h
60E4h-60E5h
19
6066h-6067h
60A6h-60A7h
60E6h-60E7h
20
6068h-6069h
60A8h-60A9h
60E8h-60E9h
21
606Ah-606Bh
60AAh-60ABh
60EAh-60EBh
22
606Ch-606Dh
60ACh-60ADh
60ECh-60EDh
23
606Eh-606Fh
60AEh-60AFh
60EEh-60EFh
24
6070h-6071h
60B0h-60B1h
60F0h-60F1h
25
6072h-6073h
60B2h-60B3h
60F2h-60F3h
26
6074h-6075h
60B4h-60B5h
60F4h-60F5h
27
6076h-6077h
60B6h-60B7h
60F6h-60F7h
28
6078h-6079h
60B8h-60B9h
60F8h-60F9h
29
607Ah-607Bh
60BAh-60BBh
60FAh-60FBh
30
607Ch-607Dh
60BCh-60BDh
60FCh-60FDh
31
607Eh-607Fh
60BEh-60BFh
60FEh-60FFh
Table 16-4. Message Object Behavior Configuration
Message Object Behavior
Mailbox Direction Register
(CANMD)
Auto-Answer Mode Bit
(AAM)
Remote Transmission
Request Bit (RTR)
Transmit message object
0
0
0
Receive message object
1
0
0
Request message object
1
0
1
Reply message object
0
1
0
16.5.1 Transmit Mailbox
The CPU stores the data to be transmitted in a mailbox configured as transmit mailbox. After writing the
data and the identifier into the RAM, the message is sent if the corresponding TRS[n] bit has been set,
provided the mailbox is enabled by setting the corresponding the CANME.n bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1053
Message Mailbox
www.ti.com
If more than one mailbox is configured as transmit mailbox and more than one corresponding TRS[n] is
set, the messages are sent one after another in falling order beginning with the mailbox with the highest
priority.
In the SCC-compatibility mode, the priority of the mailbox transmission depends on the mailbox number.
The highest mailbox number (=15) comprises the highest transmit priority.
In the eCAN mode, the priority of the mailbox transmission depends on the setting of the TPL field in the
message control field (MSGCTRL) register. The mailbox with the highest value in the TPL is transmitted
first. Only when two mailboxes have the same value in the TPL is the higher numbered mailbox
transmitted first.
If a transmission fails due to a loss of arbitration or an error, the message transmission will be
reattempted. Before reattempting the transmission, the CAN module checks if other transmissions are
requested and then transmits the mailbox with the highest priority.
16.5.2 Receive Mailbox
The identifier of each incoming message is compared to the identifiers held in the receive mailboxes using
the appropriate mask. When equality is detected, the received identifier, the control bits, and the data
bytes are written into the matching RAM location. At the same time, the corresponding receive-messagepending bit, RMP[n] (RMP.31-0), is set and a receive interrupt is generated if enabled. If no match is
detected, the message is not stored.
When a message is received, the message controller starts looking for a matching identifier at the mailbox
with the highest mailbox number. Mailbox 15 of the eCAN in SCC compatible mode has the highest
receive priority; mailbox 31 has the highest receive priority of the eCAN in eCAN mode.
RMP[n] (RMP.31-0) has to be reset by the CPU after reading the data. If a second message has been
received for this mailbox and the receive-message-pending bit is already set, the corresponding messagelost bit (RML[n] (RML.31-0)) is set. In this case, the stored message is overwritten with the new data if the
overwrite-protection bit OPC[n] (OPC.31-0) is cleared; otherwise, the next mailboxes are checked.
If a mailbox is configured as a receive mailbox and the RTR bit is set for it, the mailbox can send a remote
frame. Once the remote frame is sent, the TRS bit of the mailbox is cleared by the CAN module.
16.5.3 CAN Module Operation in Normal Configuration
If the CAN module is being used in normal configuration (i.e., not in self-test mode), there should be at
least one more CAN module on the network, configured for the same bit rate. The other CAN module
need NOT be configured to actually receive messages from the transmitting node. But, it should be
configured for the same bit rate. This is because a transmitting CAN module expects at least one node in
the CAN network to acknowledge the proper reception of a transmitted message. Per CAN protocol
specification, any CAN node that received a message will acknowledge (unless the acknowledge
mechanism has been explicitly turned off), irrespective of whether it has been configured to store the
received message or not. It is not possible to turn off the acknowledge mechanism in C28x DSPs.
The requirement of another node does not exist for the self-test mode (STM). In this mode, a transmitting
node generates its own acknowledge signal. The only requirement is that the node be configured for any
valid bit-rate. That is, the bit timing registers should not contain a value that is not permitted by the CAN
protocol.
It is not possible to achieve a direct digital loopback externally by connecting the CANTX and CANRX pins
together (as is possible with SCI/SPI/McBSP modules). An internal loopback is possible in the self-test
mode (STM).
16.6 eCAN Registers
16.6.1 Mailbox Enable Register (CANME)
This register is used to enable/disable individual mailboxes.
1054
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
Figure 16-5. Mailbox-Enable Register (CANME)
31
0
CANME[31:0]
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-5. Mailbox-Enable Register (CANME) Field Descriptions
Bit
31:0
Field
Value
CANME[31:0]
Description
Mailbox enable bits. After power-up, all bits in CANME are cleared. Disabled mailboxes can be
used as additional memory for the CPU.
1
The corresponding mailbox is enabled for the CAN module. The mailbox must be disabled before
writing to the contents of any identifier field. If the corresponding bit in CANME is set, the write
access to the identifier of a mailbox is denied.
0
The corresponding mailbox RAM area is disabled for the eCAN; however, it is accessible to the
CPU as normal RAM.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1055
eCAN Registers
www.ti.com
16.6.2 Mailbox-Direction Register (CANMD)
This register is used to configure a mailbox for transmit or receive operation.
Figure 16-6. Mailbox-Direction Register (CANMD)
31
0
CANMD[31:0]
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-6. Mailbox-Direction Register (CANMD) Field Descriptions
Bit
31:0
1056
Field
Value
CANMD[31:0]
Description
Mailbox direction bits. After power-up, all bits are cleared.
1
The corresponding mailbox is configured as a receive mailbox.
0
The corresponding mailbox is configured as a transmit mailbox.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.3 Transmission-Request Set Register (CANTRS)
When mailbox n is ready to be transmitted, the CPU should set the TRS[n] bit to 1 to start the
transmission.
These bits are normally set by the CPU and cleared by the CAN module logic. The CAN module can set
these bits for a remote frame request. These bits are reset when a transmission is successful or aborted.
If a mailbox is configured as a receive mailbox, the corresponding bit in CANTRS is ignored unless the
receive mailbox is configured to handle remote frames. The TRS[n] bit of a receive mailbox is not ignored
if the RTR bit is set. Therefore, a receive mailbox (whose RTR is set) can send a remote frame if its TRS
bit is set. Once the remote frame is sent, the TRS[n] bit is cleared by the CAN module. Therefore, the
same mailbox can be used to request a data frame from another mode. If the CPU tries to set a bit while
the eCAN module tries to clear it, the bit is set.
Setting CANTRS[n] causes the particular message n to be transmitted. Several bits can be set
simultaneously. Therefore, all messages with the TRS bit set are transmitted in turn, starting with the
mailbox having the highest mailbox number (= highest priority), unless TPL bits dictate otherwise.
The bits in CANTRS are set by writing a 1 from the CPU. Writing a 0 has no effect. After power up, all bits
are cleared.
Figure 16-7. Transmission-Request Set Register (CANTRS)
31
0
TRS[31:0]
RS-0
LEGEND: RS = Read/Set; -n = value after reset
Table 16-7. Transmission-Request Set Register (CANTRS) Field Descriptions
Bit
31:0
Field
Value
TRS[31:0]
Description
Transmit-request-set bits
1
Setting TRSn transmits the message in that mailbox. Several bits can be set simultaneously with all
messages transmitted in turn.
0
No operation
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1057
eCAN Registers
www.ti.com
16.6.4 Transmission-Request-Reset Register (CANTRR)
These bits can only be set by the CPU and reset by the internal logic. These bits are reset when a
transmission is successful or is aborted. If the CPU tries to set a bit while the CAN tries to clear it, the bit
is set.
Setting the TRR[n] bit of the message object n cancels a transmission request if it was initiated by the
corresponding bit (TRS[n]) and is not currently being processed. If the corresponding message is currently
being processed, the bit is reset when a transmission is successful (normal operation) or when an aborted
transmission due to a lost arbitration or an error condition is detected on the CAN bus line. When a
transmission is aborted, the corresponding status bit (AA.31-0) is set. When a transmission is successful,
the status bit (TA.31-0) is set. The status of the transmission request reset can be read from the TRS.31-0
bit.
The bits in CANTRR are set by writing a 1 from the CPU.
Figure 16-8. Transmission-Request-Reset Register (CANTRR)
31
0
TRR[31:0]
RS-0
LEGEND: RS = Read/Set; -n = value after reset
Table 16-8. Transmission-Request-Reset Register (CANTRR) Field Descriptions
Bit
31:0
1058
Field
Value
TRR[31:0]
Description
Transmit-request-reset bits
1
Setting TRRn cancels a transmission request
0
No operation
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.5 Transmission-Acknowledge Register (CANTA)
If the message of mailbox n was sent successfully, the bit TA[n] is set. This also sets the GMIF0/GMIF1
(GIF0.15/GIF1.15) bit if the corresponding interrupt mask bit in the CANMIM register is set. The
GMIF0/GMIF1 bit initiates an interrupt.
The CPU resets the bits in CANTA by writing a 1. This also clears the interrupt if an interrupt has been
generated. Writing a 0 has no effect. If the CPU tries to reset the bit while the CAN tries to set it, the bit is
set. After power-up, all bits are cleared.
Figure 16-9. Transmission-Acknowledge Register (CANTA)
31
0
TA[31:0]
RC-0
LEGEND: RC = Read/Clear; -n = value after reset
Table 16-9. Transmission-Acknowledge Register (CANTA) Field Descriptions
Bit
31:0
Field
Value
TA[31:0]
Description
Transmit-acknowledge bits
1
If the message of mailbox n is sent successfully, the bit n of this register is set.
0
The message is not sent.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1059
eCAN Registers
www.ti.com
16.6.6 Abort-Acknowledge Register (CANAA)
If the transmission of the message in mailbox n was aborted, the bit AA[n] is set and the AAIF (GIF.14) bit
is set, which may generate an interrupt if enabled.
The bits in CANAA are reset by writing a 1 from the CPU. Writing a 0 has no effect. If the CPU tries to
reset a bit and the CAN tries to set the bit at the same time, the bit is set. After power-up all bits are
cleared.
Figure 16-10. Abort-Acknowledge Register (CANAA)
31
0
AA[31:0]
RC-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 16-10. Abort-Acknowledge Register (CANAA) Field Descriptions
Bit
31-0
1060
Field
Value
AA[31:0]
Description
Abort-acknowledge bits
0
If the transmission of the message in mailbox n is aborted, the bit n of this register is set.
1
The transmission is not aborted.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.7 Received-Message-Pending Register (CANRMP)
If mailbox n contains a received message, the bit RMP[n] of this register is set. These bits can be reset
only by the CPU and set by the internal logic. A new incoming message overwrites the stored one if the
OPC[n](OPC.31-0) bit is cleared, otherwise the next mailboxes are checked for a matching ID. If a mailbox
is overwritten, the corresponding status bit RML[n] is set. The bits in the CANRMP and the CANRML
registers are cleared by a write to register CANRMP, with a 1 at the corresponding bit location. If the CPU
tries to reset a bit and the CAN tries to set the bit at the same time, the bit is set.
The bits in the CANRMP register can set GMIF0/GMIF1 (GIF0.15/GIF1.15) if the corresponding interrupt
mask bit in the CANMIM register is set. The GMIF0/GMIF1 bit initiates an interrupt.
Figure 16-11. Received-Message-Pending Register (CANRMP)
31
0
RMP[31:0]
RC-0
LEGEND: RC = Read/Clear; -n = value after reset
Table 16-11. Received-Message-Pending Register (CANRMP) Field Descriptions
Bit
31:0
Field
Value
RMP[31:0]
Description
Received-message-pending bits
1
If mailbox n contains a received message, bit RMP[n] of this register is set.
0
The mailbox does not contain a message.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1061
eCAN Registers
www.ti.com
16.6.8 Received-Message-Lost Register (CANRML)
An RML[n] bit is set if an old message has been overwritten by a new one in mailbox n. These bits can
only be reset by the CPU, and set by the internal logic. The bits can be cleared by a write access to the
CANRMP register with a 1 at the corresponding bit location. If the CPU tries to reset a bit and the CAN
tries to set the bit at the same time, the bit is set. The CANRML register is not changed if the OPC[n]
(OPC.31-0) bit is set.
If one or more of the bits in the CANRML register are set, the RMLIF (GIF0.11/ GIF1.11) bit is also set.
This can initiate an interrupt if the RMLIM (GIM.11) bit is set.
Figure 16-12. Received-Message-Lost Register (CANRML)
31
0
RML[31:0]
R-0
LEGEND: R = Read; -n = value after reset
Table 16-12. Received-Message-Lost Register (CANRML) Field Descriptions
Bit
31:0
Field
Value
RML[31:0]
Description
Received-message-lost bits
1
An old unread message has been overwritten by a new one in that mailbox.
0
No message was lost.
Note: The RMLn bit is cleared by clearing the set RMPn bit.
1062
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.9 Remote-Frame-Pending Register (CANRFP)
Whenever a remote frame request is received by the CAN module, the corresponding bit RFP[n] in the
remote frame pending register is set. If a remote frame is stored in a receive mailbox (AAM=0,
CANMD=1), the RFPn bit will not be set.
To prevent an auto-answer mailbox from replying to a remote frame request, the CPU has to clear the
RFP[n] flag and the TRS[n] bit by setting the corresponding transmission request reset bit TRR[n]. The
AAM bit can also be cleared by the CPU to stop the module from sending the message.
If the CPU tries to reset a bit and the CAN module tries to set the bit at the same time, the bit is not set.
The CPU cannot interrupt an ongoing transfer.
Figure 16-13. Remote-Frame-Pending Register (CANRFP)
31
0
RFP.31:0
RC-0
LEGEND: RC = Read/Clear; -n = value after reset
Table 16-13. Remote-Frame-Pending Register (CANRFP) Field Descriptions
Bit
31:0
Field
Value
RFP.31:0
Description
Remote-frame-pending register.
For a receive mailbox, RFPn is set if a remote frame is received and TRSn is not affected.
For a transmit mailbox, RFPn is set if a remote frame is received and TRSn is set if AAM of the
mailbox is 1. The ID of the mailbox must match the remote frame ID.
1
A remote-frame request was received by the module.
0
No remote-frame request was received. The register is cleared by the CPU.
16.6.9.1 Handling of Remote Frames
If a remote frame is received (the incoming message has RTR (MSGCTRL.4) = 1), the CAN module
compares the identifier to all identifiers of the mailboxes using the appropriate masks starting at the
highest mailbox number in descending order.
In the case of a matching identifier (with the message object configured as send mailbox and AAM
(MSGID.29) in this message object set) this message object is marked as to be sent (TRS[n] is set).
In case of a matching identifier with the mailbox configured as a send mailbox and bit AAM in this mailbox
is not set, this message is not received in that mailbox.
After finding a matching identifier in a send mailbox no further compare is done.
With a matching identifier and the message object configured as receive mailbox, this message is handled
like a data frame and the corresponding bit in the receive message pending (CANRMP) register is set.
The CPU then has to decide how to handle this situation. For information about the CANRMP register, see
Section 16.6.7.
For the CPU to change the data in a mailbox that is configured as a remote frame mailbox (AAM set) it
has to set the mailbox number and the change data request bit (CDR [MC.8]) in the MCR first. The CPU
can then do the access and clear the CDR bit to tell the eCAN that the access is finished. Until the CDR
bit is cleared, the transmission of this mailbox is not permitted. Therefore, the newest data is sent.
To change the identifier in that mailbox, the mailbox must be disabled first (CANMEn = 0).
For the CPU to request data from another node it configures the mailbox as a receive mailbox and sets
the TRS bit. In this case the module sends a remote frame request and receives the data frame in the
same mailbox that sent the request. Therefore, only one mailbox is necessary to do a remote request.
Note that the CPU must set RTR (MSGCTRL.4) to enable a remote frame transmission. Once the remote
frame is sent, the TRS bit of the mailbox is cleared by CAN. In this case, bit TAn will not be set for that
mailbox.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1063
eCAN Registers
www.ti.com
The behavior of the message object n is configured with CANMD[n] (CANMD.31-0), the AAM (MSGID.29),
and RTR (MSGCTRL.4). It shows how to configure a message object according to the desired behavior.
To
1.
2.
3.
summarize, a message object can be configured with four different behaviors:
A transmit message object is only able to transmit messages.
A receive message object is only able to receive messages.
A request message object is able to transmit a remote request frame and to wait for the corresponding
data frame.
4. A reply message object is able to transmit a data frame whenever a remote request frame is received
for the corresponding identifier.
NOTE: When a remote transmission request is successfully transmitted with a message object
configured in request mode, the CANTA register is not set and no interrupt is generated.
When the remote reply message is received, the behavior of the message object is the same
as a message object configured in receive mode.
1064
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.10 Global Acceptance Mask Register (CANGAM)
The global-acceptance mask is used by the eCAN in SCC mode. The global-acceptance mask is used for
the mailboxes 6 to 15 if the AME bit (MSGID.30) of the corresponding mailbox is set. A received message
is only stored in the first mailbox with a matching identifier.
The global-acceptance mask is used for the mailboxes 6 to 15 of the SCC.
Figure 16-14. Global Acceptance Mask Register (CANGAM)
31
30
29
28
16
AMI
Reserved
GAM[28:16]
RWI-0
R-0
RWI-0
15
0
GAM[28:16]
RWI-0
LEGEND: RWI = Read at any time, write during initialization mode only; -n = value after reset
Table 16-14. Global Acceptance Mask Register (CANGAM) Field Descriptions
Bit
Field
31
AMI
Value
Description
Acceptance-mask-identifier extension bit
1
Standard and extended frames can be received. In case of an extended frame, all 29 bits of the
identifier are stored in the mailbox and all 29 bits of global acceptance mask register are used for
the filter. In case of a standard frame, only the first eleven bits (bit 28 to 18) of the identifier and the
global acceptance mask are used.
The IDE bit of the receive mailbox is a "don't care" and is overwritten by the IDE bit of the
transmitted message. The filtering criterion must be satisfied in order to receive a message. The
number of bits to be compared is a function of the value of the IDE bit of the transmitted message.
0
The identifier extension bit stored in the mailbox determines which messages shall be received.
The IDE bit of the receive mailbox determines the number of bits to be compared.
30-29
Reserved
Reads are undefined and writes have no effect.
28-0
GAM 28:0
Global-acceptance mask. These bits allow any identifier bits of an incoming message to be
masked.
1
Accept a 0 or a 1 (don't care) for the corresponding bit of the received identifier.
0
Received identifier bit value must match the corresponding identifier bit of the MSGID register.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1065
eCAN Registers
www.ti.com
16.6.11 Master Control Register (CANMC)
This register is used to control the settings of the CAN module. Some bits of the CANMC register are
EALLOW protected. For read/write operations, only 32-bit access is supported.
Figure 16-15. Master Control Register (CANMC)
31
17
16
Reserved
SUSP
R-0
R/W-0
15
14
13
12
11
10
9
8
MBCC
TCC
SCB
CCR
PDR
DBO
WUBA
CDR
R/WP-0
SP-x
R/WP-0
R/WP-1
R/WP-0
R/WP-0
R/WP-0
R/WP-0
4
7
6
5
ABO
STM
SRES
MBNR
0
R/WP-0
R/WP-0
R/S-0
R/W-0
LEGEND: R = Read, WP = Write in EALLOW mode only, S = Set in EALLOW mode only; -n = value after reset; x = Indeterminate
Note: eCAN only, reserved in the SCC
Table 16-15. Master Control Register (CANMC) Field Descriptions
Bit
31-17
16
15
14
13
12
Field
Value
Description
Reserved
Reads are undefined and writes have no effect.
SUSP
SUSPEND. This bit determines the action of the CAN module in SUSPEND (emulation stop such
as breakpoint or single stepping).
1
FREE mode. The peripheral continues to run in SUSPEND. The node would participate in CAN
communication normally (sending acknowledge, generating error frames, transmitting/receiving
data) while in SUSPEND.
0
SOFT mode. The peripheral shuts down during SUSPEND after the current transmission is
complete.
MBCC
Mailbox timestamp counter clear bit. This bit is reserved in SCC mode and it is EALLOW protected.
1
The time stamp counter is reset to 0 after a successful transmission or reception of mailbox 16.
0
The time stamp counter is not reset.
TCC
Time stamp counter MSB clear bit. This bit is reserved in SCC mode and it is EALLOW protected.
1
The MSB of the time stamp counter is reset to 0. The TCC bit is reset after one clock cycle by the
internal logic.
0
The time stamp counter is not changed.
SCB
SCC compatibility bit. This bit is reserved in SCC mode and it is EALLOW protected.
1
Select eCAN mode.
0
The eCAN is in SCC mode. Only mailboxes 15 to 0 can be used.
CCR
Change-configuration request. This bit is EALLOW protected.
1
The CPU requests write access to the configuration register CANBTC and the acceptance mask
registers (CANGAM, LAM[0], and LAM[3]) of the SCC. After setting this bit, the CPU must wait until
the CCE flag of CANES register is at 1 before proceeding to the CANBTC register.
The CCR bit will also be set upon a bus-off condition, if the ABO bit is not set. The BO condition
can be exited by clearing this bit (after 128 * 11 consecutive recessive bits on the bus).
0
11
PDR
The CPU requests normal operation. This can be done only after the configuration register
CANBTC was set to the allowed values. It also exits the bus-off state after the obligatory bus-off
recovery sequence.
Power down mode request. This bit is automatically cleared by the eCAN module upon wakeup
from low-power mode. This bit is EALLOW protected.
1
The local power-down mode is requested.
0
The local power-down mode is not requested (normal operation).
Note: If an application sets the TRSn bit for a mailbox and then immediately sets the PDR bit, the
CAN module goes into LPM without transmitting the data frame. This is because it takes about 80
CPU cycles for the data to be transferred from the mailbox RAM to the transmit buffer. Therefore,
the application has to ensure that any pending transmission has been completed before writing to
the PDR bit. The TAn bit could be polled to ensure completion of transmission.
1066
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
Table 16-15. Master Control Register (CANMC) Field Descriptions (continued)
Bit
Field
10
DBO
9
8
Value
Description
Data byte order. This bit selects the byte order of the message data field. This bit is EALLOW
protected.
1
The data is received or transmitted least significant byte first.
0
The data is received or transmitted most significant byte first.
WUBA
Wake up on bus activity. This bit is EALLOW protected.
1
The module leaves the power-down mode after detecting any bus activity.
0
The module leaves the power-down mode only after writing a 0 to the PDR bit.
CDR
Change data field request. This bit allows fast data message update.
1
The CPU requests write access to the data field of the mailbox specified by the MBNR.4:0 field
(MC.4-0). The CPU must clear the CDR bit after accessing the mailbox. The module does not
transmit that mailbox content while the CDR is set. This is checked by the state machine before
and after it reads the data from the mailbox to store it in the transmit buffer.
Note: Once the TRS bit is set for a mailbox and then data is changed in the mailbox using the CDR
bit, the CAN module fails to transmit the new data and transmits the old data instead. To avoid this,
reset transmission in that mailbox using the TRRn bit and set the TRSn bit again. The new data is
then transmitted.
0
7
6
ABO
The CPU requests normal operation.
Auto bus on. This bit is EALLOW protected.
1
After the bus-off state, the module goes back automatically into bus-on state after 128 * 11
recessive bits have been monitored.
0
The bus-off state may only be exited after 128 * 11 consecutive recessive bits on the bus and after
having cleared the CCR bit.
STM
Self test mode. This bit is EALLOW protected.
1
The module is in self-test mode. In this mode, the CAN module generates its own acknowledge
(ACK) signal, thus enabling operation without a bus connected to the module. The message is not
sent, but read back and stored in the appropriate mailbox. The MSGID of the received frame is not
stored in the MBR in STM.
Note: In STM, if no MBX has been configured to receive a transmitted frame, then that frame will
be stored in MBX0, even if MBX0 has not been configured for receive operations. If LAMs are
configured such that some mailboxes can receive and store data frames, then a data frame that
does not satisfy the acceptance mask filtering criterion for any receive mailbox will be lost.
0
5
4-
SRES
The module is in normal mode.
This bit can only be written and is always read as zero.
1
A write access to this register causes a software reset of the module (all parameters, except the
protected registers, are reset to their default values). The mailbox contents and the error counters
are not modified. Pending and ongoing transmissions are canceled without perturbing the
communication.
0
0 No effect
MBNR 4:0
Mailbox number
1
The bit MBNR.4 is for eCAN only, and is reserved in the SCC.
0
Number of mailbox, for which the CPU requests a write access to the data field. This field is used in
conjunction with the CDR bit.
16.6.11.1 CAN Module Action in SUSPEND
1. If there is no traffic on the CAN bus and SUSPEND mode is requested, the node goes into SUSPEND
mode.
2. If there is traffic on the CAN bus and SUSPEND mode is requested, the node goes into SUSPEND
mode when the ongoing frame is over.
3. If the node was transmitting, when SUSPEND is requested, it goes to SUSPEND state after it gets the
acknowledgment. If it does not get an acknowledgment or if there are some other errors, it transmits an
error frame and then goes to SUSPEND state. The TEC is modified accordingly. In the second case,
i.e., it is suspended after transmitting an error frame, the node re-transmits the original frame after
coming out of suspended state. The TEC is modified after transmission of the frame accordingly.
4. If the node was receiving, when SUSPEND is requested, it goes to SUSPEND state after transmitting
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1067
eCAN Registers
www.ti.com
the acknowledgment bit. If there is any error, the node sends an error frame and go to SUSPEND
state. The REC is modified accordingly before going to SUSPEND state.
5. If there is no traffic on the CAN bus and SUSPEND removal is requested, the node comes out of
SUSPEND state.
6. If there is traffic on the CAN bus and SUSPEND removal is requested, the node comes out after the
bus goes to idle. Therefore, a node does not receive any "partial" frame, which could lead to
generation of error frames.
7. When the node is suspended, it does not participate in transmitting or receiving any data. Thus neither
acknowledgment bit nor any error frame is sent. TEC and REC are not modified during SUSPEND
state.
1068
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.12 Bit-Timing Configuration Register (CANBTC)
The CANBTC register is used to configure the CAN node with the appropriate network-timing parameters.
This register must be programmed before using the CAN module.
This register is write-protected in user mode and can only be written in initialization mode (see Section
3.6.1).
NOTE: To avoid unpredictable behavior of the CAN module, the CANBTC register should never be
programmed with values not allowed by the CAN protocol specification and by the bit timing
rules listed in Section 3.1.1.
Figure 16-16. Bit-Timing Configuration Register (CANBTC)
31
24
23
16
Reserved
BRPreg
R-x
RWPI-0
15
10
9
8
7
6
3
2
0
Reserved
SJWreg
SAM
TSEG1reg
TSEG2reg
R-0
RWPI-0
RWPI0
RWPI-0
RWPI-0
LEGEND: RWPI = Read in all modes, write in EALLOW mode during initialization mode only; -n = value after reset
Table 16-16. Bit-Timing Configuration Register (CANBTC) Field Descriptions
Bit
Field
Value
Description
31:24
Reserved
Reads are undefined and writes have no effect.
23:16
BRPreg.7:0
Baud rate prescaler. This register sets the prescaler for the baud rate settings. The length of one
TQ is defined by:
TQ =
1
´ (BRPreg + 1)
SYSCLKOUT / 2
where SYSCLKOUT /2 is the frequency of the CAN module clock.
BRPreg denotes the "register value" of the prescaler; i.e., value written into bits 23:16 of the
CANBTC register. This value is automatically enhanced by 1 when the CAN module accesses it.
The enhanced value is denoted by the symbol BRP (BRP = BRPreg + 1). BRP is programmable
from 1 to 256.
Note: For the special case of BRP = 1, the Information Processing Time (IPT) is equal to 3 time
quanta (TQ). This is not compliant to the ISO 11898 Standard, where the IPT is defined to be less
than or equal to 2 TQ. Thus the usage of this mode (BRPreg = 0) is not allowed.
15-10
Reserved
Reserved. Must be written with all-zeros only.
9:8
SJWreg 1:0
Synchronization jump width. The parameter SJW indicates, by how many units of TQ a bit is
allowed to be lengthened or shortened when resynchronizing.
SJWreg denotes the "register value" of the "resynchronization jump width;" i.e., the value written into
bits 9:8 of the CANBTC register. This value is automatically enhanced by 1 when the CAN module
accesses it. This enhanced value is denoted by the symbol SJW.
SJW = SJWreg + 1
SJW is programmable from 1 to 4 TQ. The maximum value of SJW is determined by the minimum
value of TSEG2 and 4 TQ.
SJW(max) = min [4 TQ, TSEG2]
7
SAM
This parameter sets the number of samples used by the CAN module to determine the actual level
of the CAN bus. When the SAM bit is set, the level determined by the CAN bus corresponds to the
result from the majority decision of the last three values. The sampling points are at the samplepoint and twice before with a distance of ½ TQ.
1 The CAN module samples three times and make a majority decision. The triple sample mode
shall be selected only for bit rate prescale values greater than 4 (BRP > 4).
0 The CAN module samples only once at the sampling point.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1069
eCAN Registers
www.ti.com
Table 16-16. Bit-Timing Configuration Register (CANBTC) Field Descriptions (continued)
Bit
Field
6:3
TSEG1 3:0
Value
Description
Time segment 1. The length of a bit on the CAN bus is determined by the parameters TSEG1,
TSEG2, and BRP. All controllers on the CAN bus must have the same baud rate and bit length. For
different clock frequencies of the individual controllers, the baud rate has to be adjusted by the said
parameters.
This parameter specifies the length of the TSEG1 segment in TQ units. TSEG1 combines
PROP_SEG and PHASE_SEG1 segments:
TSEG1 = PROP_SEG + PHASE_SEG1
where PROP_SEG and PHASE_SEG1 are the length of these two segments in TQ units.
TSEG1reg denotes the "register value" of "time segment 1;" i.e., the value written into bits 6:3 of the
CANBTC register. This value is automatically enhanced by 1 when the CAN module accesses it.
This enhanced value is denoted by the symbol TSEG1.
TSEG1 = TSEG1reg + 1
TSEG1 value should be chosen such that TSEG1 is greater than or equal to TSEG2 and IPT. For
more information on IPT, see Section 3.1.1.
2:0
TSEG2reg
Time Segment 2. TSEG2 defines the length of PHASE_SEG2 segment in TQ units:
TSEG2 is programmable in the range of 1 TQ to 8 TQ and has to fulfill the following timing rule:
TSEG2 must be smaller than or equal to TSEG1 and must be greater than or equal to IPT.
TSEG2reg denotes the "register value" of "time segment 2;" i.e., the value written into bits 2:0 of the
CANBTC register. This value is automatically enhanced by 1 when the CAN module accesses it.
This enhanced value is denoted by the symbol TSEG2.
TSEG2 = TSEG2reg + 1
1070
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.13 Error and Status Register (CANES)
The status of the CAN module is shown by the Error and Status Register (CANES) and the error counter
registers, which are described in this section.
The error and status register comprises information about the actual status of the CAN module and
displays bus error flags as well as error status flags. If one of these error flags is set, then the current
state of all other error flags is frozen. i.e. Only the first error is stored. In order to update the CANES
register subsequently, the error flag which is set has to be acknowledged by writing a 1 to it. This action
also clears the flag bit.
Figure 16-17. Error and Status Register (CANES)
31
25
24
23
22
21
20
19
18
17
16
Reserved
FE
BE
SA1
CRCE
SE
ACKE
BO
EP
EW
R-0
RC-0
RC-0
R-1
RC-0
RC-0
RC-0
RC-0
RC-0
RC-0
15
5
4
3
2
1
0
Reserved
6
SMA
CCE
PDA
Rsvd
RM
TM
R-0
R-0
R-1
R-0
R-0
R-0
R-0
LEGEND: R = Read; C = Clear; -n = value after reset
Table 16-17. Error and Status Register (CANES) Field Descriptions
Bit
31:25
24
23
22
21
20
19
18
17
Field
Value
Reserved
Description
Reads are undefined and writes have no effect.
FE
Form error flag
1
A form error occurred on the bus. This means that one or more of the fixed-form bit fields had the
wrong level on the bus.
0
No form error detected; the CAN module was able to send and receive correctly.
BE
Bit error flag
1
The received bit does not match the transmitted bit outside of the arbitration field or during
transmission of the arbitration field, a dominant bit was sent but a recessive bit was received.
0
No bit error detected.
SA1
Stuck at dominant error. The SA1 bit is always at 1 after a hardware reset, a software reset, or a
Bus-Off condition. This bit is cleared when a recessive bit is detected on the bus.
1
The CAN module never detected a recessive bit.
0
The CAN module detected a recessive bit.
CRCE
CRC error.
1
The CAN module received a wrong CRC.
0
The CAN module never received a wrong CRC.
SE
Stuff error.
1
A stuff bit error occurred.
0
No stuff bit error occurred.
ACKE
Acknowledge error.
1
The CAN module received no acknowledge.
0
All messages have been correctly acknowledged.
BO
Bus-off status. The CAN module is in bus-off state.
1
There is an abnormal rate of errors on the CAN bus. This condition occurs when the transmit error
counter (CANTEC) has reached the limit of 256. During Bus Off, no messages can be received or
transmitted. The bus-off state can be exited by clearing the CCR bit in CANMC register or if the
Auto Bus On (ABO) (CANMC.7) bit is set, after 128 * 11 receive bits have been received. After
leaving Bus Off, the error counters are cleared.
0
Normal operation
EP
Error-passive state
1
The CAN module is in error-passive mode. CANTEC has reached 128.
0
The CAN module is in error-active mode.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1071
eCAN Registers
www.ti.com
Table 16-17. Error and Status Register (CANES) Field Descriptions (continued)
Bit
Field
16
EW
15:6
5
4
Value
Description
Warning status
1
One of the two error counters (CANREC or CANTEC) has reached the warning level of 96.
0
Values of both error counters (CANREC and CANTEC) are less than 96.
Reserved
Reads are undefined and writes have no effect.
SMA
Suspend mode acknowledge. This bit is set after a latency of one clock cycle—up to the length of
one frame—after the suspend mode was activated. The suspend mode is activated with the
debugger tool when the circuit is not in run mode. During the suspend mode, the CAN module is
frozen and cannot receive or transmit any frame. However, if the CAN module is transmitting or
receiving a frame when the suspend mode is activated, the module enters suspend mode only at
the end of the frame. Run mode is when SOFT mode is activated (CANMC.16 = 1).
1
The module has entered suspend mode.
0
The module is not in suspend mode.
CCE
Change configuration enable. This bit displays the configuration access right. This bit is set after a
latency of one clock cycle.
1
The CPU has write access to the configuration registers.
0
The CPU is denied write access to the configuration registers.
Note: The reset state of the CCE bit is 1. That is, upon reset, you can write to the bit timing
registers. However, once the CCE bit is cleared (as part of the module initialization), the CANRX
pin must be sensed high before you can set the CCE bit to 1 again.
3
PDA
Power-down mode acknowledge
1
The CAN module has entered the power-down mode.
0
Normal operation
2
Reserved
Reads are undefined and writes have no effect.
1
RM
Receive mode. The CAN module is in receive mode. This bit reflects what the CAN module is
actually doing regardless of mailbox configuration.
0
1072
1
The CAN module is receiving a message.
0
The CAN module is not receiving a message.
TM
Transmit mode. The CAN module is in transmit mode. This bit reflects what the CAN module is
actually doing regardless of mailbox configuration.
1
The CAN module is transmitting a message.
0
The CAN module is not transmitting a message.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.14 CAN Error Counter Registers (CANTEC/CANREC)
The CAN module contains two error counters: the receive error counter (CANREC) and the transmit error
counter (CANTEC). The values of both counters can be read via the CPU interface. These counters are
incremented or decremented according to the CAN protocol specification version 2.0.
Figure 16-18. Transmit-Error-Counter Register (CANTEC)
31
8
7
0
Reserved
TEC
R-x
R-0
LEGEND: R = Read only; -n = value after reset
Figure 16-19. Receive-Error-Counter Register (CANREC)
31
8
7
0
Reserved
REC
R-x
R-0
LEGEND: R = Read only; -n = value after reset
After reaching or exceeding the error passive limit (128), the receive error counter will not be increased
anymore. When a message was received correctly, the counter is set again to a value between 119 and
127 (compare with CAN specification).
After reaching the bus-off state, the transmit error counter is undefined while the receive error counter
changes its function. After reaching the bus-off state, the receive error counter is cleared. It is then
incremented after every 11 consecutive recessive bits on the bus. These 11 bits correspond to the gap
between two frames on the bus. If the counter reaches 128, the module automatically changes back to the
bus-on status if this feature is enabled (Auto Bus On bit (ABO) (MC.7) set). All internal flags are reset and
the error counters are cleared. After leaving initialization mode, the error counters are cleared.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1073
eCAN Registers
www.ti.com
16.6.15 Interrupt Registers
Interrupts are controlled by the interrupt flag registers, interrupt mask registers and mailbox interrupt level
registers. These registers are described in the following subsections.
16.6.15.1 Global Interrupt Flag Registers (CANGIF0/CANGIF1)
These registers allow the CPU to identify the interrupt source.
The interrupt flag bits are set if the corresponding interrupt condition did occur. The global interrupt flags
are set depending on the setting of the GIL bit in the CANGIM register. If that bit is set, the global
interrupts set the bits in the CANGIF1 register; otherwise, in the CANGIF0 register. This also applies to
the Interrupt Flags AAIF and RMLIF. These bits are set according to the setting of the appropriate GIL bit
in the CANGIM register.
The following bits are set regardless of the corresponding interrupt mask bits in the CANGIM register:
MTOFn, WDIFn, BOIFn, TCOFn, WUIFn, EPIFn, AAIFn, RMLIFn, and WLIFn.
For any mailbox, the GMIFn bit is set only when the corresponding mailbox interrupt mask bit (in the
CANMIM register) is set.
If all interrupt flags are cleared and a new interrupt flag is set the interrupt output line is activated when the
corresponding interrupt mask bit is set. The interrupt line stays active until the interrupt flag is cleared by
the CPU by writing a 1 to the appropriate bit or by clearing the interrupt-causing condition.
The GMIFx flags must be cleared by writing a 1 to the appropriate bit in the CANTA register or the
CANRMP register (depending on mailbox configuration) and cannot be cleared in the CANGIFx register.
After clearing one or more interrupt flags and one or more interrupt flags still set, a new interrupt is
generated. The interrupt flags are cleared by writing a 1 to the corresponding bit location. If the GMIFx is
set the Mailbox Interrupt Vector MIVx indicates the mailbox number of the mailbox that caused the setting
of the GMIFx. In case more than one mailbox interrupt is pending, it always displays the highest mailbox
interrupt vector assigned to that interrupt line.
1074
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
Figure 16-20. Global Interrupt Flag 0 Register (CANGIF0)
31
24
Reserved
R-x
23
17
16
Reserved
18
MTOF0
TCOF0
R-x
R-0
RC-0
15
14
13
12
11
10
9
8
GMIF0
AAIF0
WDIF0
WUIF0
RMLIF0
BOIF0
EPIF0
WLIF0
R/W-0
R-0
RC-0
RC-0
R-0
RC-0
RC-0
RC-0
7
4
3
2
1
0
Reserved
5
MIV0.4
MIV0.3
MIV0.2
MIV0.1
MIV0.0
R/W-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read; C = Clear; -n = value after reset
Figure 16-21. Global Interrupt Flag 1 Register (CANGIF1)
31
24
Reserved
R-x
23
17
16
Reserved
18
MTOF1
TCOF1
R-x
R-0
RC-0
15
14
13
12
11
10
9
8
GMIF1
AAIF1
WDIF1
WUIF1
RMLIF1
BOIF1
EPIF1
WLIF1
R/W-0
R-0
RC-0
RC-0
R-0
RC-0
RC-0
RC-0
7
4
3
2
1
0
Reserved
5
MIV0.4
MIV0.3
MIV0.2
MIV0.1
MIV0.0
R/W-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read; C = Clear; -n = value after reset
Note: eCAN only, reserved in the SCC
NOTE: The following bit descriptions are applicable to both the CANGIF0 and CANGIF1 registers.
For the following interrupt flags, whether they are set in the CANGIF0 or the CANGIF1
register is determined by the value of the GIL bit in the CANGIM register: TCOFn, AAIFn,
WDIFn, WUIFn, RMLIFn, BOIFn, EPIFn, and WLIFn.
If GIL = 0, these flags are set in the CANGIF0 register; if GIL = 1, they are set in the
CANGIF1 register.
Similarly, the choice of the CANGIF0 and CANGIF1 register for the MTOFn and GMIFn bits
is determined by the MILn bit in the CANMIL register.
Table 16-18. Global Interrupt Flag Registers (CANGIF0/CANGIF1) Field Descriptions
Bit
Field
31:18
Reserved
17
MTOF0/1
Value
Description
Reserved. Reads are undefined and writes have no effect.
Mailbox time-out flag. This bit is not available in the SCC mode.
1
One of the mailboxes did not transmit or receive a message within the specified time frame.
0
No time out for the mailboxes occurred.
Note: Whether the MTOFn bit gets set in CANGIF0 or CANGIF1 depends on the value of MILn.
MTOFn gets cleared when TOSn is cleared. The TOSn bit will be cleared upon (eventual)
successful transmission/reception.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1075
eCAN Registers
www.ti.com
Table 16-18. Global Interrupt Flag Registers (CANGIF0/CANGIF1) Field Descriptions (continued)
Bit
Field
16
TCOF0/1
15
14
Value
Description
Time stamp counter overflow flag.
1
The MSB of the time stamp counter has changed from 0 to 1.
0
The MSB of the time stamp counter is 0. That is, it has not changed from 0 to 1.
GMIF0/1
Global mailbox interrupt flag. This bit is set only when the corresponding mailbox interrupt mask bit
in the CANMIM register is set.
1
One of the mailboxes transmitted or received a message successfully.
0
No message has been transmitted or received.
AAIF0/1
Abort-acknowledge interrupt flag
1
A send transmission request has been aborted.
0
No transmission has been aborted.
Note: The AAIFn bit is cleared by clearing the set AAn bit.
13
12
11
WDIF0/WDIF1
Write-denied interrupt flag
1
The CPU write access to a mailbox was not successful. The WDIF interrupt is asserted when the
identifier field of a mailbox is written to, while it is enabled. Before writing to the MSGID field of a
MBX, it should be disabled. If you try this operation when the MBX is still enabled, the WDIF bit will
be set and a CAN interrupt asserted.
0
The CPU write access to the mailbox was successful.
WUIF0/WUIF1
Wake-up interrupt flag
1
During local power down, this flag indicates that the module has left sleep mode.
0
The module is still in sleep mode or normal operation
RMLIF0/1
Receive-message-lost interrupt flag
1
At least for one of the receive mailboxes, an overflow condition has occurred and the corresponding
bit in the MILn register is cleared.
0
No message has been lost.
Note: The RMLIFn bit is cleared by clearing the set RMPn bit.
10
9
8
BOIF0/BOIF1
Bus off interrupt flag
1
The CAN module has entered bus-off mode.
0
The CAN module is still in bus-on mode.
EPIF0/EPIF1
Error passive interrupt flag
1
The CAN module has entered error-passive mode.
0
The CAN module is not in error-passive mode.
WLIF0/WLIF1
Warning level interrupt flag
1
At least one of the error counters has reached the warning level.
0
None of the error counters has reached the warning level.
7:5
Reserved
Reads are undefined and writes have no effect.
4:0
MIV0.4:0/MIV1.4:
0
Mailbox interrupt vector. Only bits 3:0 are available in SCC mode.
This vector indicates the number of the mailbox that set the global mailbox interrupt flag. It keeps
that vector until the appropriate MIFn bit is cleared or when a higher priority mailbox interrupt
occurred. Then the highest interrupt vector is displayed, with mailbox 31 having the highest priority.
In the SCC mode, mailbox 15 has the highest priority. Mailboxes 16 to 31 are not recognized.
If no flag is set in the TA/RMP register and GMIF1 or GMIF0 also cleared, this value is undefined.
16.6.15.2 Global Interrupt Mask Register (CANGIM)
The set up for the interrupt mask register is the same as for the interrupt flag register. If a bit is set, the
corresponding interrupt is enabled. This register is EALLOW protected.
1076
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
Figure 16-22. Global Interrupt Mask Register (CANGIM)
31
18
17
16
Reserved
MTOM TCOM
R-0
R/WP- R/WP0
0
15
14
13
12
11
10
9
8
Reserved
AAIM
WDIM
WUIM
RMLIM
BOIM
EPIM
WLIM
R-0
R/WP-0
R/WP-0
R/WP-0
R/WP-0
R/WP-0
R/WP-0
R/WP-0
3
2
1
0
7
Reserved
GIL
I1EN
I0EN
R-0
R/WP-0
R/WP-0
R/WP-0
LEGEND: R = Read; W = Write; WP = Write in EALLOW mode only; -n = value after reset
Table 16-19. Global Interrupt Mask Register (CANGIM) Field Descriptions
Bit
31:18
17
16
Field
Reserved
Reserved
AAIM
12
11
10
9
8
7:3
2
Mailbox time-out interrupt mask
1
Enabled
0
Disabled
TCOM
14
Description
Reads are undefined and writes have no effect.
MTOM
15
13
Value
Time stamp counter overflow mask
1
Enabled
0
Disabled
Reads are undefined and writes have no effect.
Abort Acknowledge Interrupt Mask.
1
Enabled
0
Disabled
WDIM
Write denied interrupt mask
1
Enabled
0
Disabled
WUIM
Wake-up interrupt mask
1
Enabled
0
Disabled
RMLIM
Received-message-lost interrupt mask
1
Enabled
0
Disabled
BOIM
Bus-off interrupt mask
1
Enabled
0
Disabled
EPIM
Error-passive interrupt mask
1
Enabled
0
Disabled
WLIM
Warning level interrupt mask
1
Enabled
0
Disabled
Reserved
Reads are undefined and writes have no effect.
GIL
Global interrupt level for the interrupts TCOF, WDIF, WUIF, BOIF, EPIF, RMLIF, AAIF and WLIF.
1
All global interrupts are mapped to the ECAN1INT interrupt line.
0
All global interrupts are mapped to the ECAN0INT interrupt line.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1077
eCAN Registers
www.ti.com
Table 16-19. Global Interrupt Mask Register (CANGIM) Field Descriptions (continued)
Bit
Field
1
I1EN
0
Value
Description
Interrupt 1 enable
1
This bit globally enables all interrupts for the ECAN1INT line if the corresponding masks are set.
0
The ECAN1INT interrupt line is disabled.
I0EN
Interrupt 0 enable
1
This bit globally enables all interrupts for the ECAN0INT line if the corresponding masks are set.
0
The ECAN0INT interrupt line is disabled.
The GMIF has no corresponding bit in the CANGIM because the mailboxes have individual mask bits in
the CANMIM register.
1078
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.15.3 Mailbox Interrupt Mask Register (CANMIM)
There is one interrupt flag available for each mailbox. This can be a receive or a transmit interrupt
depending on the configuration of the mailbox. This register is EALLOW protected.
Figure 16-23. Mailbox Interrupt Mask Register (CANMIM)
31
0
MIM.31:0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-20. Mailbox Interrupt Mask Register (CANMIM) Field Descriptions
Bit
31:0
Field
Value
MIM.31:0
Description
Mailbox interrupt mask. After power up all interrupt mask bits are cleared and the interrupts are
disabled. These bits allow any mailbox interrupt to be masked individually.
1
Mailbox interrupt is enabled. An interrupt is generated if a message has been transmitted
successfully (in case of a transmit mailbox) or if a message has been received without any error (in
case of a receive mailbox).
0
Mailbox interrupt is disabled.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1079
eCAN Registers
www.ti.com
16.6.15.4 Mailbox Interrupt Level Register (CANMIL)
Each of the 32 mailboxes may initiate an interrupt on one of the two interrupt lines. Depending on the
setting in the mailbox interrupt level register (CANMIL), the interrupt is generated on ECAN0INT (MILn =
0) or on line ECAN1INT (MIL[n] = 1).
Figure 16-24. Mailbox Interrupt Level Register (CANMIL)
31
0
MIL.31:0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-21. Mailbox Interrupt Level Register (CANMIL) Field Descriptions
Bit
31:0
1080
Field
Value
MIL.31:0
Description
Mailbox interrupt level. These bits allow any mailbox interrupt level to be selected individually.
1
The mailbox interrupt is generated on interrupt line 1.
0
The mailbox interrupt is generated on interrupt line 0.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
16.6.16 Overwrite Protection Control Register (CANOPC)
If there is an overflow condition for mailbox n (RMP[n] is set to 1 and a new receive message would fit for
mailbox n), the new message is stored depending on the settings in the CANOPC register. If the
corresponding bit OPC[n] is set to 1, the old message is protected against being overwritten by the new
message; thus, the next mailboxes are checked for a matching ID. If no other mailbox is found, the
message is lost without further notification. If the bit OPC[n] is cleared to 0, the old message is overwritten
by the new one. This is notified by setting the receive message lost bit RML[n].
For read/write operations, only 32-bit access is supported.
Figure 16-25. Overwrite Protection Control Register (CANOPC)
31
0
OPC.31:0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-22. Overwrite Protection Control Register (CANOPC) Field Descriptions
Bit
31:0
Field
Value
OPC.31:0
Description
Overwrite protection control bits
1
1 If the bit OPC[n] is set to 1, an old message stored in that mailbox is protected against being
overwritten by the new message.
0
0 If the bit OPC[n] is not set, the old message can be overwritten by a new one.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1081
eCAN Registers
www.ti.com
16.6.17 eCAN I/O Control Registers (CANTIOC, CANRIOC)
The CANTX and CANRX pins should be configured for CAN use. This is done using the CANTIOC and
CANRIOC registers.
Figure 16-26. TX I/O Control Register (CANTIOC)
31
16
Reserved
R-0
15
4
3
Reserved
TXFU
NC
R-0
RWP0
2
0
Reserved
LEGEND: RWP = Read in all modes, write in EALLOW-mode only; R = Read only; -n = value after reset
Table 16-23. TX I/O Control Register (CANTIOC) Field Descriptions
Bit
Field
Value
Description
31:4
Reserved
Reads are undefined and writes have no effect.
3
TXFUNC
This bit must be set for CAN module function.
2:0
1082
Reserved
1
The CANTX pin is used for the CAN transmit functions.
0
Reserved
Reserved
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
eCAN Registers
www.ti.com
Figure 16-27. RX I/O Control Register (CANRIOC)
31
16
Reserved
R-x
15
4
3
Reserved
RXFU
NC
R-0
RWP0
2
0
Reserved
LEGEND: RWP = Read in all modes, write in EALLOW-mode only; R = Read only; -n = value after reset; x = indeterminate
Table 16-24. RX I/O Control Register (CANRIOC) Field Descriptions
Bit
Field
31:4
Reserved
3
RXFUNC
2:0
Reserved
Value
Description
Reads are undefined and writes have no effect.
This bit must be set for CAN module function.
1
The CANRX pin is used for the CAN receive functions.
0
Reserved
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1083
Timer Management Unit
www.ti.com
16.7 Timer Management Unit
Several functions are implemented in the eCAN to monitor the time when messages are
transmitted/received. A separate state machine is included in the eCAN to handle the time-control
functions. This state machine has lower priority when accessing the registers than the CAN state machine
has. Therefore, the time-control functions may be delayed by other ongoing actions.
16.7.1 Time Stamp Functions
To get an indication of the time of reception or transmission of a message, a free-running 32-bit timer
(TSC) is implemented in the module. Its content is written into the time stamp register of the
corresponding mailbox (Message Object Time Stamp [MOTS]) when a received message is stored or a
message has been transmitted.
The counter is driven from the bit clock of the CAN bus line. The timer is stopped during the initialization
mode or if the module is in sleep or suspend mode. After power-up reset, the free-running counter is
cleared.
The most significant bit of the TSC register is cleared by writing a 1 to TCC (CANMC.14). The TSC
register can also be cleared when mailbox 16 transmitted or received (depending on the setting of
CANMD.16 bit) a message successfully. This is enabled by setting the MBCC bit (CANMC.15). Therefore,
it is possible to use mailbox 16 for global time synchronization of the network. The CPU can read and
write the counter.
Overflow of the counter is detected by the TSC-counter-overflow-interrupt flag (TCOFn-CANGIFn.16). An
overflow occurs when the highest bit of the TSC counter changes to 1. Therefore, the CPU has enough
time to handle this situation.
1084
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Timer Management Unit
www.ti.com
16.7.1.1 Time-Stamp Counter Register (CANTSC)
This register holds the time-stamp counter value at any instant of time. This is a free-running 32-bit timer
which is clocked by the bit clock of the CAN bus. For example, at a bit rate of 1 Mbps, CANTSC would
increment every 1 μs.
Figure 16-28. Time-Stamp Counter Register (CANTSC)
31
0
TSC31:0
R/WP-0
LEGEND: R = Read; WP = Write in EALLOW enabled mode only; -n = value after reset
Note: eCAN mode only, reserved in the SCC
Table 16-25. Time-Stamp Counter Register (CANTSC) Field Descriptions
Bit
31:0
Field
TSC31:0
Value
Description
Time-stamp counter register. Value of the local network time counter used for the time-stamp and
the time-out functions.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1085
Timer Management Unit
www.ti.com
16.7.1.2 Message Object Time Stamp Registers (MOTS)
This register holds the value of the TSC when the corresponding mailbox data was successfully
transmitted or received. Each mailbox has its own MOTS register.
Figure 16-29. Message Object Time Stamp Registers (MOTS)
31
0
MOTS31:0
R/W-x
LEGEND: R/W = Read/Write; -n = value after reset; x = indeterminate
Table 16-26. Message Object Time Stamp Registers (MOTS) Field Descriptions
Bit
31:0
1086
Field
MOTS31:0
Value
Description
Message object time stamp register. Value of the time stamp counter (TSC) when the message has
been actually received or transmitted.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Timer Management Unit
www.ti.com
16.7.2 Time-Out Functions
To ensure that all messages are sent or received within a predefined period, each mailbox has its own
time-out register. If a message has not been sent or received by the time indicated in the time-out register
and the corresponding bit TOC[n] is set in the TOC register, a flag is set in the time-out status register
(TOS).
For transmit mailboxes the TOS[n] flag is cleared when the TOC[n] bit is cleared or when the
corresponding TRS[n] bit is cleared, no matter whether due to successful transmission or abortion of the
transmit request. For receive mailboxes, the TOS[n] flag is cleared when the corresponding TOC[n] bit is
cleared.
The CPU can also clear the time-out status register flags by writing a 1 into the time-out status register.
The message object time-out registers (MOTO) are implemented as a RAM. The state machine scans all
the MOTO registers and compares them to the TSC counter value. If the value in the TSC register is
equal to or greater than the value in the time-out register, and the corresponding TRS bit (applies to
transmit mailboxes only) is set, and the TOC[n] bit is set, the appropriate bit TOS[n] is set. Since all the
time-out registers are scanned sequentially, there can be a delay before the TOS[n] bit is set.
16.7.2.1 Message-Object Time-Out Registers (MOTO)
This register holds the time-out value of the TSC by which the corresponding mailbox data should be
successfully transmitted or received. Each mailbox has its own MOTO register.
Figure 16-30. Message-Object Time-Out Registers (MOTO)
31
0
MOTO31:0
R/W-x
LEGEND: R/W = Read/Write; -n = value after reset; x = indeterminate
Table 16-27. Message-Object Time-Out Registers (MOTO) Field Descriptions
Bit
31:0
Field
MOTO31:0
Value
Description
Message object time-out register. Limit-value of the time-stamp counter (TSC) to actually transmit
or receive the message.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1087
Timer Management Unit
www.ti.com
16.7.2.2 Time-Out Control Register (CANTOC)
This register controls whether or not time-out functionality is enabled for a given mailbox.
Figure 16-31. Time-Out Control Register (CANTOC)
31
0
TOC31:0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 16-28. Time-Out Control Register (CANTOC) Field Descriptions
Bit
31:0
1088
Field
Value
TOC31:0
Description
Time-out control register
1
The TOC[n] bit must be set by the CPU to enable the time-out function for mailbox n. Before setting
the TOC[n] bit, the corresponding MOTO register should be loaded with the time-out value relative
to TSC.
0
The time-out function is disabled. The TOS[n] flag is never set.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Timer Management Unit
www.ti.com
16.7.2.3 Time-Out Status Register (CANTOS)
This register holds the status information of mailboxes that have timed out.
Figure 16-32. Time-Out Status Register (CANTOS)
31
0
TOS31:0
R/C-0
LEGEND: R/C = Read/Clear; -n = value after reset
Table 16-29. Time-Out Status Register (CANTOS) Field Descriptions
Bit
31:0
Field
Value
TOS 31:0
Description
Time-out status register
1
Mailbox[n] has timed out. The value in the TSC register is larger or equal to the value in the timeout register that corresponds to mailbox n and the TOC[n] bit is set.
0
No time-out occurred or it is disabled for that mailbox.
The TOSn bit is set when all three of the following conditions are met:
1. The TSC value is greater than or equal to the value in the time-out register (MOTOn).
2. The TOCn bit is set.
3. The TRSn bit is set.
The time-out registers are implemented as a RAM. The state machine scans all the time-out registers and
compares them to the time stamp counter value. Since all the time out registers are scanned sequentially,
it is possible that even though a transmit mailbox has timed out, the TOSn bit is not set. This can happen
when the mailbox succeeded in transmitting and clearing the TRSn bit before the state machine scans the
time-out register of that mailbox. This is true for the receive mailbox as well. In this case, the RMPn bit
can be set to 1 by the time the state machine scans the time-out register of that mailbox. However, the
receive mailbox probably did not receive the message before the time specified in the time-out register.
16.7.3 Behavior/Usage of MTOF0/1 Bit in User Applications
The MTOF0/1 bit is automatically cleared by the CPK (along with the TOSn bit) upon
transmission/reception by the mailbox, which asserted this flag in the first place. It can also be cleared by
the user (via the CPU). On a time-out condition, the MTOF0/1 bit (and the TOS.n bit) is set. On an
(eventual) successful communication, these bits are automatically cleared by the CPK. Following are the
possible behaviors/usage for the MTOF0/1 bit:
1. Time-out condition occurs. Both MTOF0/1 bit and TOS.n bits are set. Communication is never
successful; i.e., the frame was never transmitted (or received). An interrupt is asserted. Application
handles the issue and eventually clears both MTOF0/1 bit and TOS.n bit.
2. Time-out condition occurs. Both MTOF0/1 bit and TOS.n bits are set. However, communication is
eventually successful; i.e., the frame gets transmitted (or received). Both MTOF0/1 bit and TOS.n bits
are cleared automatically by the CPK. An interrupt is still asserted because, the interrupt occurrence
was recorded in the PIE module. When the ISR scans the GIF register, it doesn't see the MTOF0/1 bit
set. This is the phantom interrupt scenario. Application merely returns to the main code.
3. Time-out condition occurs. Both MTOF0/1 bit and TOS.n bits are set. While executing the ISR
pertaining to time-out, communication is successful. This situation must be handled carefully. The
application should not re-transmit a mailbox if the mailbox is sent between the time the interrupt is
asserted and the time the ISR is attempting to take corrective action. One way of doing this is to poll
the TM/RM bits in the GSR register. These bits indicate if the CPK is currently transmitting/receiving. If
that is the case, the application should wait till the communication is over and then check the TOS.n bit
again. If the communication is still not successful, then the application should take the corrective
action.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1089
Mailbox Layout
www.ti.com
16.8 Mailbox Layout
The following four 32-bit registers comprise each mailbox:
• MSGID − Stores the message ID
• MSGCTRL − Defines number of bytes, transmission priority and remote frames
• CANMDL − 4 bytes of data
• CANMDH − 4 bytes of data
16.8.1 Message Identifier Register (MSGID)
This register contains the message ID and other control bits for a given mailbox.
Figure 16-33. Message Identifier Register (MSGID) Register
31
30
29
28
IDE
AME
AAM
ID[28:0]
0
R/W-x
R/W-x
R/W-x
R/W-x
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset; x = indeterminate
Note: This register can be written only when mailbox n is disabled (CANME[n] (CANME.31-0) = 0). The reset-state of IDE, AME & AAM bits
are undefined. As part of module initialization, these bits must be initialized as appropriate. Otherwise, they may assume random values
and lead to improper operation of the mailboxes.
Table 16-30. Message Identifier Register (MSGID) Field Descriptions
Bit
Field
31
IDE
Value
Description
Identifier extension bit. The characteristics of the IDE bit changes according to the value of the AMI
bit.
When AMI = 1:
1.
2.
3.
The IDE bit of the receive mailbox is a "don't care." The IDE bit of the receive mailbox is
overwritten by the IDE bit of the transmitted message.
The filtering criterion must be satisfied in order to receive a message.
The number of bits to be compared is a function of the value of the IDE bit of the transmitted
message.
When AMI = 0:
1.
2.
The IDE bit of the receive mailbox determines the number of bits to be compared.
Filtering is not applicable. The MSGIDs must match bit-for-bit in order to receive a message.
When AMI = 1:
IDE = 1: The RECEIVED message had an extended identifier
IDE = 0: The RECEIVED message had a standard identifier
When AMI = 0:
IDE = 1: The message TO BE RECEIVED must have an extended identifier
IDE = 0: The message TO BE RECEIVED must have a standard identifier.
30
29
AME
Acceptance mask enable bit. AME is only used for receive mailboxes. It must not be set for
automatic reply (AAM[n]=1, CANMD[n]=0) mailboxes, otherwise the mailbox behavior is undefined.
This bit is not modified by a message reception.
1
The corresponding acceptance mask is used.
0
No acceptance mask is used, all identifier bits must match to receive the message
AAM
Auto answer mode bit. This bit is only valid for message mailboxes configured as transmit. For
receive mailboxes, this bit has no effect: the mailbox is always configured for normal receive
operation.
This bit is not modified by a message reception.
1090
1
Auto answer mode. If a matching remote request is received, the CAN module answers to the
remote request by sending the contents of the mailbox.
0
Normal transmit mode. The mailbox does not reply to remote requests. The reception of a remote
request frame has no effect on the message mailbox.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Mailbox Layout
www.ti.com
Table 16-30. Message Identifier Register (MSGID) Field Descriptions (continued)
Bit
28:0
Field
Value
ID[28:0]
Description
Message identifier
1
In standard identifier mode, if the IDE bit (MSGID.31) = 0, the message identifier is stored in bits
ID.28:18. In this case, bits ID.17:0 have no meaning.
0
In extended identifier mode, if the IDE bit (MSGID.31) = 1, the message identifier is stored in bits
ID.28:0.
16.8.2 CPU Mailbox Access
Write accesses to the identifier can only be accomplished when the mailbox is disabled (CANME[n]
(CANME.31-0) = 0). During access to the data field, it is critical that the data does not change while the
CAN module is reading it. Hence, a write access to the data field is disabled for a receive mailbox.
For send mailboxes, an access is usually denied if the TRS (TRS.31-0) or the TRR (TRR.31-0) flag is set.
In these cases, an interrupt can be asserted. A way to access those mailboxes is to set CDR (MC.8)
before accessing the mailbox data.
After the CPU access is finished, the CPU must clear the CDR flag by writing a 0 to it. The CAN module
checks for that flag before and after reading the mailbox. If the CDR flag is set during those checks, the
CAN module does not transmit the message but continues to look for other transmit requests. The setting
of the CDR flag also stops the write-denied interrupt (WDI) from being asserted.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1091
Mailbox Layout
www.ti.com
16.8.3 Message-Control Register (MSGCTRL)
For a transmit mailbox, this register specifies the number of bytes to be transmitted and the transmission
priority. It also specifies the remote-frame operation.
NOTE: As part of the CAN module initialization process, all the bits of the MSGCTRLn registers
must first be initialized to zero before proceeding to initialize the various bit fields to the
desired values.
Figure 16-34. Message-Control Register (MSGCTRL)
31
16
Reserved
R-0
15
13
12
8
7
5
4
3
0
Reserved
TPL
Reserved
RTR
DLC
R-0
RW-x
R-0
RW-x
RW-x
LEGEND: RW = Read any time, write when mailbox is disabled or configured for transmission; -n = value after reset; x = indeterminate
Note: The register MSGCTRL(n) can only be written if mailbox n is configured for transmission (CANMD[n] (CANMD.31-0)=0) or if the
mailbox is disabled (CANME[n] (CANME.31-0) =0).
Table 16-31. Message-Control Register (MSGCTRL) Field Descriptions
Bit
Field
Value
Description
31:13
Reserved
Reserved
12:8
TPL.4:0
Transmit-priority level. This 5-bit field defines the priority of this mailbox as compared to the other
31 mailboxes. The highest number has the highest priority. When two mailboxes have the same
priority, the one with the higher mailbox number is transmitted. TPL applies only for transmit
mailboxes. TPL is not used in SCC-mode.
7:5
Reserved
Reserved
4
RTR
Remote-transmission-request bit
1
For receive mailbox: If the TRS flag is set, a remote frame is transmitted and the corresponding
data frame is received in the same mailbox. Once the remote frame is sent, the TRS bit of the
mailbox is cleared by CAN.
For transmit mailbox: If the TRS flag is set, a remote frame is transmitted, but the corresponding
data frame has to be received in another mailbox.
0
3:0
1092
DLC 3:0
No remote frame is requested.
Data-length code. The number in these bits determines how many data bytes are sent or received.
Valid value range is from 0 to 8. Values from 9 to 15 are not allowed.
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Mailbox Layout
www.ti.com
16.8.4 Message Data Registers (CANMDL, CANMDH)
Eight bytes of the mailbox are used to store the data field of a CAN message. The setting of DBO (MC.10)
determines the ordering of stored data. The data is transmitted or received from the CAN bus, starting with
byte 0.
• When DBO (MC.10) = 1, the data is stored or read starting with the least significant byte of the
CANMDL register and ending with the most significant byte of the CANMDH register.
• When DBO (MC.10) = 0, the data is stored or read starting with the most significant byte of the
CANMDL register and ending with the least significant byte of the CANMDH register.
The registers CANMDL(n) and CANMDH(n) can be written only if mailbox n is configured for transmission
(CANMD[n] (CANMD.31-0)=0) or the mailbox is disabled (CANME[n] (CANME.31-0)=0). If TRS[n]
(TRS.31-0)=1, the registers CANMDL(n) and CANMDH(n) cannot be written, unless CDR (MC.8)=1, with
MBNR (MC.4-0) set to n. These settings also apply for a message object configured in reply mode (AAM
(MSGID.29)=1).
Figure 16-35. Message-Data-Low Register With DBO = 0 (CANMDL)
31
24 23
16 15
Byte 0
Byte 1
8
7
Byte 2
0
Byte 3
Figure 16-36. Message-Data-High Register With DBO = 0 (CANMDH)
31
24 23
16 15
Byte 4
Byte 5
8
7
Byte 6
0
Byte 7
Figure 16-37. Message-Data-Low Register With DBO = 1 (CANMDL)
31
24 23
16 15
Byte 3
Byte 2
8
7
Byte 1
0
Byte 0
Figure 16-38. Message-Data-High Register With DBO = 1 (CANMDH)
31
24 23
16 15
Byte 7
Byte 6
8
Byte 5
7
0
Byte 4
NOTE: The data field beyond the valid received data is modified by any message reception and is
indeterminate.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1093
Acceptance Filter
www.ti.com
16.9 Acceptance Filter
The identifier of the incoming message is first compared to the message identifier of the mailbox (which is
stored in the mailbox). Then, the appropriate acceptance mask is used to mask out the bits of the identifier
that should not be compared.
In the SCC-compatible mode, the global acceptance mask (GAM) is used for the mailboxes 6 to 15. An
incoming message is stored in the highest numbered mailbox with a matching identifier. If there is no
matching identifier in mailboxes 15 to 6, the incoming message is compared to the identifier stored in
mailboxes 5 to 3 and then 2 to 0.
The mailboxes 5 to 3 use the local-acceptance mask LAM(3) of the SCC registers. The mailboxes 2 to 0
use the local-acceptance mask LAM(0) of the SCC registers. For specific uses, see Figure 16-39.
To modify the global acceptance mask register (CANGAM) and the two local-acceptance mask registers
of the SCC, the CAN module must be set in the initialization mode (see Section 3.1).
Each of the 32 mailboxes of the eCAN has its own local-acceptance mask LAM(0) to LAM(31). There is
no global-acceptance mask in the eCAN.
The selection of the mask to be used for the comparison depends on which mode (SCC or eCAN) is used.
16.9.1 Local-Acceptance Masks (CANLAM)
The local-acceptance filtering allows the user to locally mask (don't care) any identifier bits of the incoming
message.
In the SCC, the local-acceptance-mask register LAM(0) is used for mailboxes 2 to 0. The localacceptance-mask register LAM(3) is used for mailboxes 5 to 3. For the mailboxes 6 to 15, the globalacceptance-mask (CANGAM) register is used.
After a hardware or a software reset of the SCC module, CANGAM is reset to zero. After a reset of the
eCAN, the LAM registers are not modified.
In the eCAN, each mailbox (0 to 31) has its own mask register, LAM(0) to LAM(31). An incoming message
is stored in the highest numbered mailbox with a matching identifier.
1094
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CAN Module Initialization
www.ti.com
Figure 16-39. Local-Acceptance-Mask Register (LAMn)
31
30
29
28
16
LAMI
Reserved
LAMn[28:16]
R/W-x
R/W-x
R/W-x
15
0
LAMn[15:0]
R/W-x
LEGEND: R/W = Read/Write; -n = value after reset (x: Undefined)
Table 16-32. Local-Acceptance-Mask Register (LAMn) Field Descriptions
Bit
Field
31
LAMI
30:29
Reserved
28:0
LAM[28:0]
Value
Description
Local-acceptance-mask identifier extension bit
1
Standard and extended frames can be received. In case of an extended frame, all 29 bits of the
identifier are stored in the mailbox and all 29 bits of the local-acceptance mask register are used for
the filter. In case of a standard frame, only the first eleven bits (bits 28 to 18) of the identifier and
the local-acceptance mask are used.
0
The identifier extension bit stored in the mailbox determines which messages shall be received.
Reads are undefined and writes have no effect.
These bits enable the masking of any identifier bit of an incoming message.
1
Accept a 0 or a 1 (don't care) for the corresponding bit of the received identifier.
0
Received identifier bit value must match the corresponding identifier bit of the MSGID register.
You can locally mask any identifier bits of the incoming message. A 1 value means "don't care" or accept
either a 0 or 1 for that bit position. A 0 value means that the incoming bit value must match identically to
the corresponding bit in the message identifier.
If the local-acceptance mask identifier extension bit is set (LAMI = 1 => don't care) standard and extended
frames can be received. An extended frame uses all 29 bits of the identifier stored in the mailbox and all
29 bits of local-acceptance mask register for the filter. For a standard frame only the first eleven bits (bit
28 to 18) of the identifier and the local-acceptance mask are used.
If the local-acceptance mask identifier extension bit is reset (LAMI = 0), the identifier extension bit stored
in the mailbox determines the messages that are received.
16.10 CAN Module Initialization
The CAN module must be initialized before the utilization. Initialization is only possible if the module is in
initialization mode. Figure 16-40 is a flow chart showing the process.
Programming CCR (CANMC.12) = 1 sets the initialization mode. The initialization can be performed only
when CCE (CANES.4) = 1. Afterwards, the configuration registers can be written.
SCC mode only:
In order to modify the global acceptance mask register (CANGAM) and the two local acceptance mask
registers [LAM(0) and LAM(3)], the CAN module also must be set in the initialization mode.
The module is activated again by programming CCR(CANMC.12) = 0.
After hardware reset, the initialization mode is active.
NOTE: If the CANBTC register is programmed with a zero value, or left with the initial value, the
CAN module never leaves the initialization mode, i.e. CCE (CANES.4) bit remains at 1 when
clearing the CCR bit.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1095
CAN Module Initialization
www.ti.com
Figure 16-40. Initialization Sequence
Normal mode
(CCR = 0)
(CCE = 0)
Changing of bit timing
parameters enabled
Configuration mode requested
(CCR = 1)
(CCE = 0)
Wait for configuration mode
(CCR = 1)
(CCE = 0)
CCE = 0
Normal mode requested
(CCR = 0)
CCE = 1
Wait for normal mode
(CCR = 0)
(CCE = 1)
CCE = 1
Configuration mode active
(CCR = 1)
(CCE = 1)
Initialization complete
Normal mode
NOTE: The transition between initialization mode and normal mode and vice-versa is performed in
synchronization with the CAN network. That is, the CAN controller waits until it detects a bus
idle sequence (= 11 recessive bits) before it changes the mode. In the event of a stuck-todominant bus error, the CAN controller cannot detect a bus-idle condition and therefore is
unable to perform a mode transition.
16.10.1 CAN Bit-Timing Configuration
The CAN protocol specification partitions the nominal bit time into four different time segments:
SYNC_SEG: This part of bit time is used to synchronize the various nodes on the bus. An edge is
expected to lie within this segment. This segment is always 1 TIME QUANTUM (TQ).
PROP_SEG: This part of the bit time is used to compensate for the physical delay times within the
network. It is twice the sum of the signal’s propagation ‘time on the bus line, the input comparator delay,
and the output driver delay. This segment is programmable from 1 to 8 TIME QUANTA (TQ).
PHASE_SEG1: This phase is used to compensate for positive edge phase error. This segment is
programmable from 1 to 8 TIME QUANTA (TQ) and can be lengthened by resynchronization.
PHASE_SEG2: This phase is used to compensate for negative edge phase error. This segment is
programmable from 2 to 8 TIME QUANTA (TQ) and can be shortened by resynchronization.
In the eCAN module, the length of a bit on the CAN bus is determined by the parameters TSEG1 (BTC.63), TSEG2 (BTC.2-0), and BRP (BTC.23.16).
TSEG1 combines the two time segments PROP_SEG and PHASE_SEG1 as defined by the CAN
protocol. TSEG2 defines the length of the time segment PHASE_SEG2.
IPT (information processing time) corresponds to the time necessary for the processing of the bit read. IPT
corresponds to two units of TQ.
The following bit timing rules must be fulfilled when determining the bit segment values:
• TSEG1(min) ≥ TSEG2
1096
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CAN Module Initialization
www.ti.com
•
•
•
•
•
IPT ≤ TSEG1 ≤ 16 TQ
IPT ≤ TSEG2 ≤ 8 TQ
IPT = 3/BRP (the resulting IPT has to be rounded up to the next integer value)
1 TQ ≤ SJW min[4 TQ, TSEG2] (SJW = Synchronization jump width)
To utilize three-time sampling mode, BRP ≥ 5 has to be selected
Figure 16-41. CAN Bit Timing
Nominal bit time
SYNCSEG
SJW
SJW
TSEG1
TSEG2
1 TQ
Sample point
Transmit point
A
TSEG1 can be lengthened or TSEG2 shortened by the SJW
16.10.2 CAN Bit Rate Calculation
Bit-rate is calculated in bits per second as follows:
Bit rate =
SYSCLKOUT / 2
BRP ´ Bit Time
Where bit-time is the number of time quanta (TQ) per bit. SYSCLKOUT is the CAN module system clock
frequency, which is the same as the CPU clock frequency. BRP is the value of BRPreg + 1 (CANBTC.2316).
Bit-time is defined as follows:
Bit-time = (TSEG1reg + 1) + (TSEG2reg + 1) + 1
In the above equation TESG1reg and TSEG2reg represent the actual values written in the corresponding
fields in the CANBTC register. The parameters TSEG1reg, TSEG2reg, SJWreg, and BRPreg are automatically
enhanced by 1 when the CAN module accesses these parameters. TSEG1, TSEG2 and SJW, represent
the values as applicable per Figure 16-41.
Bit-time = TSEG1 + TSEG2 + 1
16.10.3 Bit Configuration Parameters for 30 -MHz CAN Clock
This section provides example values for the CANBTC bit fields for various CAN module clocks, bit rates
and sampling points. Note that these values are for illustrative purposes only. In a real-world application,
the propagation delay introduced by various entities such as the network cable, transceivers/ isolators
must be taken into account before choosing the timing parameters.
Table 16-33 shows how the BRPreg field may be changed to achieve different bit rates with a BT of 15 for
an 80% SP.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1097
CAN Module Initialization
www.ti.com
Table 16-33. BRP Field for Bit Rates (BT = 15, TSEG1reg = 10, TSEG2reg = 2, Sampling Point = 80%)
CAN Bus Speed
BRP
1 Mbps
BRPreg +1 = 2
CAN Module Clock
15 MHz
500 kbps
BRPreg +1 = 4
7.5 MHz
250 kbps
BRPreg +1 = 8
3.75 MHz
125 kbps
BRPreg +1 = 16
1.875 MHz
100 kbps
BRPreg +1 = 20
1.5 MHz
50 kbps
BRPreg +1 = 40
0.75 MHz
Table 16-34 shows how to achieve different sampling points with a BT of 15.
Table 16-34. Achieving Different Sampling Points With a BT of 15
TSEG1reg
TSEG2reg
SP
10
2
80%
9
3
73%
8
4
66%
7
5
60%
Table 16-35 shows how BRPreg field may be changed to achieve different bit rates with a BT of 10 for an
80% sampling point.
Table 16-35. BRP Field for Bit Rates (BT = 10, TSEG1reg = 6, TSEG2reg = 1, Sampling Point = 80%)
CAN Bus Speed
BRP
CAN Module Clock
1 Mbps
BRPreg +1 = 3
10 MHz
500 kbps
BRPreg +1 = 6
5 MHz
250 kbps
BRPreg +1 = 12
2.5 MHz
125 kbps
BRPreg +1 = 24
1.25 MHz
100 kbps
BRPreg +1 = 30
1 MHz
50 kbps
BRPreg +1 = 60
0.5 MHz
16.10.4 Bit Configuration Parameters for 100 -MHz CAN Clock
Table 16-36 shows how the BRPreg field may be changed to achieve different bit rates with a BT of 10 for
an 80% SP.
Table 16-36. BRP Field for Bit Rates (BT = 10, TSEG1reg = 6, TSEG2reg = 1, Sampling Point = 80%)
CAN Bus Speed
BRP
CAN Module Clock
1 Mbps
BRPreg +1 = 10
10 MHz
500 kbps
BRPreg +1 = 20
5 MHz
250 kbps
BRPreg +1 = 40
2.5 MHz
125 kbps
BRPreg +1 = 80
1.25 MHz
100 kbps
BRPreg +1 = 100
1 MHz
50 kbps
BRPreg +1 = 200
0.5 MHz
Table 16-37 shows how to achieve different sampling points with a BT of 20.
Table 16-37. Achieving Different Sampling Points With a BT of 20
TSEG1reg
TSEG2reg
SP
15
2
85%
14
3
80%
1098Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CAN Module Initialization
www.ti.com
Table 16-37. Achieving Different Sampling Points With a BT of 20 (continued)
TSEG1reg
TSEG2reg
SP
13
4
75%
12
5
70%
11
6
65%
10
7
60%
NOTE: For a SYSCLKOUT of 60 MHz, the lowest bit-rate that can be achieved is 4.687 kbps.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1099
CAN Module Initialization
www.ti.com
16.10.5 EALLOW Protection
To protect against inadvertent modification, some critical registers/bits of the eCAN module are EALLOW
protected. These registers/bits can be changed only if the EALLOW protection has been disabled.
Following are the registers/ bits that are EALLOW protected in the eCAN module:
• CANMC[15..9] & MCR[7..6]
• CANBTC
• CANGIM
• MIM[31..0]
• TSC[31..0]
• IOCONT1[3]
• IOCONT2[3]
16.11 Steps to Configure eCAN
NOTE: This sequence must be done with EALLOW enabled.
The following steps must be performed to configure the eCAN for operation:
Step 1. Enable clock to the CAN module.
Step 2. Set the CANTX and the CANRX pins to CAN functions:
(a) Write CANTIOC.3:0 = 0x08
(b) Write CANRIOC.3:0 = 0x08
Step 3. After a reset, bit CCR (CANMC.12) and bit CCE (CANES.4) are set to 1. This allows the user
to configure the bit-timing configuration register (CANBTC).
If the CCE bit is set (CANES.4 = 1), proceed to next step; otherwise, set the CCR bit
(CANMC.12 = 1) and wait until CCE bit is set (CANES.4 = 1).
Step 4. Program the CANBTC register with the appropriate timing values. Make sure that the values
TSEG1 and TSEG2 are not 0. If they are 0, the module does not leave the initialization mode.
Step 5. For the SCC, program the acceptance masks now. For example:
Write LAM(3) = 0x3C0000
Step 6. Program the master control register (CANMC) as follows:
(a) Clear CCR (CANMC.12) = 0
(b) Clear PDR (CANMC.11) = 0
(c) Clear DBO (CANMC.10) = 0
(d) Clear WUBA (CANMC.9)= 0
(e) Clear CDR (CANMC.8) = 0
(f) Clear ABO (CANMC.7) = 0
(g) Clear STM (CANMC.6) = 0
(h) Clear SRES (CANMC.5) = 0
(i) Clear MBNR (CANMC.4-0) = 0
Step 7. Initialize all bits of MSGCTRLn registers to zero.
Step 8. Verify the CCE bit is cleared (CANES.4 = 0), indicating that the CAN module has been
configured.
This completes the setup for the basic functionality.
1100
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Steps to Configure eCAN
www.ti.com
16.11.1 Configuring a Mailbox for Transmit
To transmit a message, the following steps need to be performed (in this example, for mailbox 1):
1. Clear the appropriate bit in the CANTRS register to 0:
Clear CANTRS.1 = 0 (Writing a 0 to TRS has no effect; instead, set TRR.1 and wait until TRS.1
clears.) If the RTR bit is set, the TRS bit can send a remote frame. Once the remote frame is sent, the
TRS bit of the mailbox is cleared by the CAN module. The same node can be used to request a data
frame from another node.
2. Disable the mailbox by clearing the corresponding bit in the mailbox enable (CANME) register.
Clear CANME.filter1 = 0
3. Load the message identifier (MSGID) register of the mailbox. Clear the AME (MSGID.30) and AAM
(MSGID.29) bits for a normal send mailbox (MSGID.30 = 0 and MSGID.29 = 0). This register is usually
not modified during operation. It can only be modified when the mailbox is disabled. For example:
(a) Write MSGID(1) = 0x15AC0000
(b) Write the data length into the DLC field of the message control field register (MSGCTRL.3:0). The
RTR flag is usually cleared (MSGCTRL.4 = 0).
(c) Set the mailbox direction by clearing the corresponding bit in the CANMD register.
(d) Clear CANMD.1 = 0
4. Set the mailbox enable by setting the corresponding bit in the CANME register
Set CANME.1 = 1
This configures mailbox 1 for transmit mode.
16.11.2 Transmitting a Message
To start a transmission (in this example, for mailbox:
1. Write the message data into the mailbox data field.
(a) Since DBO (MC.10) is set to zero in the configuration section and MSGCTRL(1) is set to 2, the
data are stored in the 2 MSBytes of CANMDL(1).
(b) Write CANMDL(1) = xxxx0000h
2. Set the corresponding flag in the transmit request register (CANTRS.1 = 1) to start the transmission of
the message. The CAN module now handles the complete transmission of the CAN message.
3. Wait until the transmit-acknowledge flag of the corresponding mailbox is set (TA.1 = 1). After a
successful transmission, this flag is set by the CAN module.
4. The TRS flag is reset to 0 by the module after a successful or aborted transmission (TRS.1 = 0).
5. The transmit acknowledge must be cleared for the next transmission (from the same mailbox).
(a) Set TA.1 = 1
(b) Wait until read TA.1 is 0
6. To transmit another message in the same mailbox, the mailbox RAM data must be updated. Setting
the TRS.1 flag starts the next transmission. Writing to the mailbox RAM can be half-word (16 bits) or
full word (32 bits) but the module always returns 32-bit from even boundary. The CPU must accept all
the 32 bits or part of it.
16.11.3 Configuring Mailboxes for Receive
To configure a mailbox to receive messages, the following steps must be performed (in this example,
mailbox 3):
1. Disable the mailbox by clearing the corresponding bit in the mailbox enable (CANME) register.
Clear CANME.3 = 0
2. Write the selected identifier into the corresponding MSGID register. The identifier extension bit must be
configured to fit the expected identifier. If the acceptance mask is used, the acceptance mask enable
(AME) bit must be set (MSGID.30 = 1). For example:
Write MSGID(3) = 0x4f780000
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1101
Steps to Configure eCAN
www.ti.com
3. If the AME bit is set to 1, the corresponding acceptance mask must be programmed.
Write LAM(3) = 0x03c0000.
4. Configure the mailbox as a receive mailbox by setting the corresponding flag in the mailbox direction
register (CANMD.3 = 1). Make sure no other bits in this register are affected by this operation.
5. If data in the mailbox is to be protected, the overwrite protection control register (CANOPC) should be
programmed now. This protection is useful if no message must be lost. If OPC is set, the software has
to make sure that an additional mailbox (buffer mailbox) is configured to store ’overflow’ messages.
Otherwise messages can be lost without notification.
Write OPC.3 = 1
6. Enable the mailbox by setting the appropriate flag in the mailbox enable register (CANME). This should
be done by reading CANME, and writing back (CANME |= 0x0008) to make sure no other flag has
changed accidentally.
The object is now configured for the receive mode. Any incoming message for that object is handled
automatically.
16.11.4 Receiving a Message
This example uses mailbox 3. When a message is received, the corresponding flag in the receive
message pending register (CANRMP) is set to 1 and an interrupt can be initiated. The CPU can then read
the message from the mailbox RAM. Before the CPU reads the message from the mailbox, it should first
clear the RMP bit (RMP.3 = 1). The CPU should also check the receive message lost flag RML.3 = 1.
Depending on the application, the CPU has to decide how to handle this situation.
After reading the data, the CPU needs to check that the RMP bit has not been set again by the module. If
the RMP bit has been set to 1, the data may have been corrupted. The CPU needs to read the data again
because a new message was received while the CPU was reading the old one.
16.11.5 Handling of Overload Situations
If the CPU is not able to handle important messages fast enough, it may be advisable to configure more
than one mailbox for that identifier. Here is an example where the objects 3, 4, and 5 have the same
identifier and share the same mask. For the SCC, the mask is LAM(3). For the eCAN, each object has its
own LAM: LAM(3), LAM(4), and LAM(5), all of which need to be programmed with the same value.
To make sure that no message is lost, set the OPC flag for objects 4 and 5, which prevents unread
messages from being overwritten. If the CAN module must store a received message, it first checks
mailbox 5. If the mailbox is empty, the message is stored there. If the RMP flag of object 5 is set (mailbox
occupied), the CAN module checks the condition of mailbox 4. If that mailbox is also busy, the module
checks in mailbox 3 and stores the message there since the OPC flag is not set for mailbox 3. If mailbox 3
contents have not been previously read, it sets the RML flag of object 3, which can initiate an interrupt.
It is also advisable to have object 4 generate an interrupt telling the CPU to read mailboxes 4 and 5 at
once. This technique is also useful for messages that require more than 8 bytes of data (i.e., more than
one message). In this case, all data needed for the message can be collected in the mailboxes and be
read at once.
16.12 Handling of Remote Frame Mailboxes
There are two functions for remote frame handling. One is a request by the module for data from another
node, the other is a request by another node for data that the module needs to answer.
16.12.1 Requesting Data From Another Node
In order to request data from another node, the object is configured as receive mailbox. Using object 3 for
this example, the CPU needs to do the following:
1. Set the RTR bit in the message control field register (CANMSGCTRL) to 1.
Write MSGCTRL(3) = 0x12
2. Write the correct identifier into the message identifier register (MSGID).
Write MSGID(3) = 0x4F780000
1102
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Handling of Remote Frame Mailboxes
www.ti.com
3. Set the CANTRS flag for that mailbox. Since the mailbox is configured as receive, it only sends a
remote request message to the other node.
Set CANTRS.3 = 1
4. The module stores the answer in that mailbox and sets the RMP bit when it is received. This action
can initiate an interrupt. Also, make sure no other mailbox has the same ID.
Wait for RMP.3 = 1
5. Read the received message.
16.12.2 Answering a Remote Request
1. Configure the object as as a transmit mailbox.
2. Set the auto answer mode (AAM) (MSGID.29) bit in the MSGID register before the mailbox is enabled.
MSGID(1) = 0x35AC0000
3. Update the data field.
MDL, MDH(1) = xxxxxxxxh
4. Enable the mailbox by setting the CANME flag to 1.
CANME.1 = 1
When a remote request is received from another node, the TRS flag is set automatically and the data
is transmitted to that node. The identifier of the received message and the transmitted message are
the same.
After transmission of the data, the TA flag is set. The CPU can then update the data.
Wait for TA.1 = 1
16.12.3 Updating the Data Field
To update the data of an object that is configured in auto answer mode, the following steps need to be
performed. This sequence can also be used to update the data of an object configured in normal
transmission with TRS flag set.
1. Set the change data request (CDR) (MC.8) bit and the mailbox number (MBNR) of that object in the
master control register (CANMC). This tells the CAN module that the CPU wants to change the data
field. For example, for object 1:
Write MC = 0x0000101
2. Write the message data into the mailbox data register. For example:
Write CANMDL(1) = xxxx0000h
3. Clear the CDR bit (MC.8) to enable the object.
Write MC = 0x00000000
16.13 Interrupts
There are two different types of interrupts. One type of interrupt is a mailbox related interrupt, for example,
the receive-message-pending interrupt or the abort-acknowledge interrupt. The other type of interrupt is a
system interrupt that handles errors or system-related interrupt sources, for example, the error-passive
interrupt or the wake-up interrupt. See Figure 16-42.
The following events can initiate one of the two interrupts:
• Mailbox interrupts
– Message reception interrupt: a message was received
– Message transmission interrupt: a message was transmitted successfully
– Abort-acknowledge interrupt: a pending transmission was aborted
– Received-message-lost interrupt: an old message was overwritten by a new one (before the old
message was read)
– Mailbox timeout interrupt (eCAN mode only): one of the messages was not transmitted or received
within a predefined time frame
• System interrupts
– Write-denied interrupt: the CPU tried to write to a mailbox but was not allowed to
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1103
Interrupts
www.ti.com
–
–
–
–
–
Wake-up interrupt: this interrupt is generated after a wake up
Bus-off interrupt: the CAN module enters the bus-off state
Error-passive interrupt: the CAN module enters the error-passive mode
Warning level interrupt: one or both error counters are greater than or equal to 96
Time-stamp counter overflow interrupt (eCAN only): the time-stamp counter had an overflow
Figure 16-42. Interrupts Scheme
CANMIM
MIM[0]
CANMIL
I0EN
0
I1EN
TA [0]
RMP[0]
32 transmit
or receive
mailboxes
CANGIM
MIL[0]
ECAN0INT
ECAN1INT
1
MIM[n]
MIL[n]
0
TA [n]
RMP[n]
1
MIM[31]
CANGIF0
GMIF0
0
TA [31]
RMP[31]
Message
objects
CANGIF1
MIL[31]
GMIF1
1
MIV0[4:0]
CANGIM
MTOM
MIV1[4:0]
MIL[n]
MTOF0
0
Mailbox Timeout
MTOF1
1
Abort
acknowledge
AAIM
Receive
RMLIF
message lost
AAIF0
0
AAIF
AAIF1
1
RMLIM
RMLIF0
0
RMLIF1
1
WDIM
Write
denied
Error
passive
Warning
level
Timer
overflow
WUIF1
1
BOIF0
0
BOIF
System
WUIF0
0
WUIF
BOIM
Bus off
WDIF1
1
WUIM
Wake-up
WDIF0
0
WDIF
BOIF1
1
EPIM
EPIF0
0
EPIF
WLIM
1
0
TCOIM
1
WLIF
EPIF1
WLIF0
WLIF1
TCOIF0
0
TCOIF
TCOIF1
1
GIL
Interrupt
sources
1104
Interrupt
masks
Enhanced Controller Area Network (eCAN)
Interrupt level
select
Interrupt
level 0 flags
Interrupt
level 1 flags
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Interrupts
www.ti.com
16.13.1 Interrupts Scheme
The interrupt flags are set if the corresponding interrupt condition occurred. The system interrupt flags are
set depending on the setting of GIL (CANGIM.2). If set, the global interrupts set the bits in the CANGIF1
register, otherwise they set in the CANGIF0 register.
The GMIF0/GMIF1(CANGIF0.15/CANGIF1.15) bit is set depending on the setting of the MIL[n] bit that
corresponds to the mailbox originating that interrupt. If the MIL[n] bit is set, the corresponding mailbox
interrupt flag MIF[n] sets the GMIF1 flag in the CANGIF1 register, otherwise, it sets the GMIF0 flag.
If all interrupt flags are cleared and a new interrupt flag is set, the CAN module interrupt output line
(ECAN0INT or ECAN1INT) is activated if the corresponding interrupt mask bit is set. The interrupt line
stays active until the interrupt flag is cleared by the CPU by writing a 1 to the appropriate bit.
The GMIF0 (CANGIF0.15) or GMIF1 (CANGIF0.15) bit must be cleared by writing a 1 to the appropriate
bit in the CANTA register or the CANRMP register (depending on mailbox configuration) and cannot be
cleared in the CANGIF0/CANGIF1 register.
After clearing one or more interrupt flags, and one or more interrupt flags are still pending, a new interrupt
is generated. The interrupt flags are cleared by writing a 1 to the corresponding bit location. If the GMIF0
or GMIF1 bit is set, the mailbox interrupt vector MIV0 (CANGIF0.4-0) or MIV1 (CANGIF1.4-0) indicates the
mailbox number of the mailbox that caused the setting of the GMIF0/1. It always displays the highest
mailbox interrupt vector assigned to that interrupt line.
16.13.2 Mailbox Interrupt
Each of the 32 mailboxes in the eCAN or the 16 mailboxes in the SCC can initiate an interrupt on one of
the two interrupt output lines 1 or 0. These interrupts can be receive or transmit interrupts depending on
the mailbox configuration.
There is one interrupt mask bit (MIM[n]) and one interrupt level bit (MIL[n]) dedicated to each mailbox. To
generate a mailbox interrupt upon a receive/transmit event, the MIM bit has to be set. If a CAN message
is received (RMP[n]=1) in a receive mailbox or transmitted (TA[n]=1) from a transmit mailbox, an interrupt
is asserted. If a mailbox is configured as remote request mailbox (CANMD[n]=1, MSGCTRL.RTR=1), an
interrupt occurs upon reception of the reply frame. A remote reply mailbox generates an interrupt upon
successful transmission of the reply frame (CANMD[n]=0, MSGID.AAM=1).
The setting of the RMP[n] bit or the TA[n] bit also sets the GMIF0/GMIF1 (GIF0.15/GIF1.15) flag in the
GIF0/GIF1 register if the corresponding interrupt mask bit is set. The GMIF0/GMIF1 flag then generates
an interrupt and the corresponding mailbox vector (= mailbox number) can be read from the bit field
MIV0/MIV1 in the GIF0/GIF1 register. If more than one mailbox interrupts are pending, the actual value of
MIV0/MIV1 reflects the highest priority interrupt vector. The interrupt generated depends on the setting in
the mailbox interrupt level (MIL) register.
The abort acknowledge flag (AA[n]) and the abort acknowledge interrupt flag (AAIF) in the GIF0/GIF1
register are set when a transmit message is aborted by setting the TRR[n] bit. An interrupt is asserted
upon transmission abortion if the mask bit AAIM in the GIM register is set. Clearing the AA[n] flag(s) clears
the AAIF0/AAIF1 flag.
A lost receive message is notified by setting the receive message lost flag RML[n] and the receive
message lost interrupt flag RMLIF0/RMLIF1in the GIF0/GIF1 register. If an interrupt shall be generated
upon the lost receive message event, the receive message lost interrupt mask bit (RMLIM) in the GIM
register has to be set. Clearing the RML[n] flag does not reset the RMLIF0/RMLIF1 flag. The interrupt flag
has to be cleared separately.
Each mailbox of the eCAN (in eCAN mode only) is linked to a message- object, time-out register (MOTO).
If a time-out event occurs (TOS[n] = 1), a mailbox timeout interrupt is asserted to one of the two interrupt
lines if the mailbox timeout interrupt mask bit (MTOM) in the CANGIM register is set. The interrupt line for
mailbox timeout interrupt is selected in accordance with the mailbox interrupt level (MIL[n]) of the
concerned mailbox.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1105
Interrupts
www.ti.com
16.13.3 Interrupt Handling
The CPU is interrupted by asserting one of the two interrupt lines. After handling the interrupt, which
should generally also clear the interrupt source, the interrupt flag must be cleared by the CPU. To do this,
the interrupt flag must be cleared in the CANGIF0 or CANGIF1 register. This is generally done by writing a
1 to the interrupt flag. There are some exceptions to this as stated in Table 16-38. This also releases the
interrupt line if no other interrupt is pending.
Table 16-38. eCAN Interrupt Assertion/Clearing (1)
Interrupt
Flag
GIF0/GIF1
Interrupt Condition
Determination
Clearing Mechanism
WLIFn
One or both error counters are >= 96
GIL bit
Cleared by writing a 1 to it
EPIFn
CAN module has entered “error passive”
mode
GIL bit
Cleared by writing a 1 to it
BOIFn
CAN module has entered “bus-off” mode
GIL bit
Cleared by writing a 1 to it
An overflow condition has occurred in
GIL bit
Cleared by clearing the set RMPn
RMLIFn
one of the receive mailboxes.
bit.
WUIFn
CAN module has left the local power-down
mode
GIL bit
Cleared by writing a 1 to it
WDIFn
A write access to a mailbox was denied
GIL bit
Cleared by writing a 1 to it
AAIFn
A transmission request was aborted
GIL bit
Cleared by clearing the set AAn bit.
GMIFn
One of the mailboxes successfully
MILn bit
Cleared by appropriate handling of
transmitted/received a message
the interrupt causing condition. Cleared by
writing a 1 to the ap-propriate bit in CANTA
or CANRMP registers
TCOFn
The MSB of the the TSC has changed from GIL bit
0 to 1
Cleared by writing a 1 to it
MTOFn
One of the mailboxes did not
Cleared by clearing the set TOSn
MILn bit
transmit/receive within the specified time
frame.
(1)
bit.
Key to interpreting the table above:
1) Interrupt flag: This is the name of the interrupt flag bit as applicable to CANGIF0/CANGIF1 registers.
2) Interrupt condition: This column illustrates the conditions that cause the interrupt to be asserted.
3) GIF0/GIF1 determination: Interrupt flag bits can be set in either CANGIF0 or CANGIF1 registers. This is determined by either
the GIL bit in CANGIM register or MILn bit in the CANMIL register, depending on the interrupt under consideration. This column
illustrates whether a particular interrupt is dependant on GIL bit or MILn bit.
4) Clearing mechanism: This column explains how a flag bit can be cleared. Some bits are cleared by writing a 1 to it. Other bits
are cleared by manipulating some other bit in the CAN control register.
16.13.3.1 Configuring for Interrupt Handling
To configure for interrupt handling, the mailbox interrupt level register (CANMIL), the mailbox interrupt
mask register (CANMIM), and the global interrupt mask register (CANGIM) need to be configured. The
steps to do this are described below:
1. Write the CANMIL register. This defines whether a successful transmission asserts interrupt line 0 or 1.
For example, CANMIL = 0xFFFFFFFF sets all mailbox interrupts to level 1.
2. Configure the mailbox interrupt mask register (CANMIM) to mask out the mailboxes that should not
cause an interrupt. This register could be set to 0xFFFFFFFF, which enables all mailbox interrupts.
Mailboxes that are not used do not cause any interrupts anyhow.
3. Now configure the CANGIM register. The flags AAIM, WDIM, WUIM, BOIM, EPIM, and WLIM (GIM.149) should always be set (enabling these interrupts). In addition, the GIL (GIM.2) bit can be set to have
the global interrupts on another level than the mailbox interrupts. Both the I1EN (GIM.1) and I0EN
(GIM.0) flags should be set to enable both interrupt lines. The flag RMLIM (GIM.11) can also be set
depending on the load of the CPU.
1106
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Interrupts
www.ti.com
This configuration puts all mailbox interrupts on line 1 and all system interrupts on line 0. Thus, the CPU
can handle all system interrupts (which are always serious) with high priority, and the mailbox interrupts
(on the other line) with a lower priority. All messages with a high priority can also be directed to the
interrupt line 0.
16.13.3.2 Handling Mailbox Interrupts
There are three interrupt flags for mailbox interrupts. These are listed below:
GMIF0/GMIF1: One of the objects has received or transmitted a message. The number of the mailbox is
in MIV0/MIV1(GIF0.4-0/GIF1.4-0). The normal handling routine is as follows:
1. Do a half-word read on the GIF register that caused the interrupt. If the value is negative, a mailbox
caused the interrupt. Otherwise, check the AAIF0/AAIF1 (GIF0.14/GIF1.14) bit (abort-acknowledge
interrupt flag) or the RMLIF0/RMLIF1 (GIF0.11/GIF1.11) bit (receive-message-lost interrupt flag).
Otherwise, a system interrupt has occurred. In this case, each of the system-interrupt flags must be
checked.
2. If the RMLIF (GIF0.11) flag caused the interrupt, the message in one of the mailboxes has been
overwritten by a new one. This should not happen in normal operation. The CPU needs to clear that
flag by writing a 1 to it. The CPU must check the receive-message-lost register (RML) to find out which
mailbox caused that interrupt. Depending on the application, the CPU has to decide what to do next.
This interrupt comes together with an GMIF0/GMIF1 interrupt.
3. If the AAIF (GIF.14) flag caused the interrupt, a send transmission operation was aborted by the CPU.
The CPU should check the abort acknowledge register (AA.31-0) to find out which mailbox caused the
interrupt and send that message again if requested. The flag must be cleared by writing a 1 to it.
4. If the GMIF0/GMIF1 (GIF0.15/GIF1.15) flag caused the interrupt, the mailbox number that caused the
interrupt can be read from the MIV0/MIV1 (GIF0.4-0/GIF1.4-0) field. This vector can be used to jump to
a location where that mailbox is handled. If it is a receive mailbox, the CPU should read the data as
described above and clear the RMP.31-0 flag by writing a 1 to it. If it is a send mailbox, no further
action is required, unless the CPU needs to send more data. In this case, the normal send procedure
as described above is necessary. The CPU needs to clear the transmit acknowledge bit (TA.31-0) by
writing a 1 to it.
16.13.3.3 Interrupt Handling Sequence
In order for the CPU core to recognize and service CAN interrupts, the following must be done in any CAN
ISR:
1. The flag bit in the CANGIF0/CANGIF1 register which caused the interrupt in the first place must be
cleared. There are two kinds of bits in these registers:
(a) the very same bit that needs to be cleared. The following bits fall under this category: TCOFn,
WDIFn, WUIFn, BOIFn, EPIFn, WLIFn
(b) The second group of bits are cleared by writing to the corresponding bits in the associated
registers. The following bits fall under this category: MTOFn, GMIFn, AAIFn, RMLIFn
(i) The MTOFn bit is cleared by clearing the corresponding bit in the TOS register. For example, if
mailbox 27 caused a time-out condition due to which the MTOFn bit was set, the ISR (after
taking appropriate actions for the timeout condition) needs to clear the TOS27 bit in order to
clear the MTOFn bit.
(ii) The GMIFn bit is cleared by clearing the appropriate bit in TA or RMP register. For example, if
mailbox 19 has been configured as a transmit mailbox and has completed a transmission,
TA19 is set, which in turn sets GMIFn. The ISR (after taking appropriate actions) needs to clear
the TA19 bit in order to clear the GMIFn bit. If mailbox 8 has been configured as a receive
mailbox and has completed a reception, RMP8 is set, which in turn sets GMIFn. The ISR (after
taking appropriate actions) needs to clear the RMP8 bit in order to clear the GMIFn bit.
(iii) The AAIFn bit is cleared by clearing the corresponding bit in the AA register. For example, if
mailbox 13’s transmission was aborted due to which the AAIFn bit was set, the ISR needs to
clear the AA13 bit in order to clear the AAIFn bit.
(iv) The RMLIFn bit is cleared by clearing the corresponding bit in the RMP register. For example, if
mailbox 13’s message was overwritten due to which the RMLIFn bit was set, the ISR needs to
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1107
CAN Power-Down Mode
www.ti.com
clear the RMP13 bit in order to clear the RMLIFn bit.
2. The PIEACK bit corresponding to the CAN module must be written with a 1, which can be
accomplished with the following C language statement:
PieCtrlRegs.PIEACK.bit.ACK9 = 1; // Enables PIE to drive a pulse into the CPU
3. The interrupt line into the CPU corresponding to the CAN module must be enabled, which can be
accomplished with the following C language statement:
IER |= 0x0100; // Enable INT9
4. The CPU interrupts must be enabled globally by clearing the INTM bit.
16.14 CAN Power-Down Mode
A local power-down mode has been implemented where the CAN module internal clock is de-activated by
the CAN module itself.
16.14.1 Entering and Exiting Local Power-Down Mode
During local power-down mode, the clock of the CAN module is turned off (by the CAN module itself) and
only the wake-up logic is still active. The other peripherals continue to operate normally.
The local power-down mode is requested by writing a 1 to the PDR (CANMC.11) bit, allowing transmission
of any packet in progress to complete. After the transmission is completed, the status bit PDA (CANES.3)
is set. This confirms that the CAN module has entered the power-down mode.
The value read on the CANES register is 0x08 (PDA bit is set). All other register read accesses deliver the
value 0x00.
The module leaves the local power-down mode when the PDR bit is cleared or if any bus activity is
detected on the CAN bus line (if the wake-up-on bus activity is enabled).
The automatic wake-up-on bus activity can be enabled or disabled with the configuration bit WUBA of
CANMC register. If there is any activity on the CAN bus line, the module begins its power-up sequence.
The module waits until it detects 11 consecutive recessive bits on the CANRX pin and then it goes busactive.
NOTE: The first CAN message, which initiates the bus activity, cannot be received. This means that
the first message received in power-down and automatic wake-up mode is lost.
After leaving the sleep mode, the PDR and PDA bits are cleared. The CAN error counters remain
unchanged.
If the module is transmitting a message when the PDR bit is set, the transmission is continued until a
successful transmission, a lost arbitration, or an error condition on the CAN bus line occurs. Then, the
PDA bit is activated so the module causes no error condition on the CAN bus line.
To implement the local power-down mode, two separate clocks are used within the CAN module. One
clock stays active all the time to ensure power-down operation (i.e., the wake-up logic and the write and
read access to the PDA (CANES.3) bit). The other clock is enabled depending on the setting of the PDR
bit.
16.14.2 Precautions for Entering and Exiting Device Low-Power Modes (LPM)
The 28x DSP features two low-power modes, STANDBY and HALT, in which the peripheral clocks are
turned off. Since the CAN module is connected to multiple nodes across a network, you must take care
before entering and exiting device low-power modes such as STANDBY and HALT. A CAN packet must
be received in full by all the nodes; therefore, if transmission is aborted half-way through the process, the
aborted packet would violate the CAN protocol resulting in all the nodes generating error frames. The
node exiting LPM should do so unobtrusively. For example, if a node exits LPM when there is traffic on
the CAN bus it could “see” a truncated packet and disturb the bus with error frames.
The following points must be considered before entering a device low-power mode:
1. The CAN module has completed the transmission of the last packet requested.
1108
Enhanced Controller Area Network (eCAN)
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
CAN Power-Down Mode
www.ti.com
2. The CAN module has signaled to the CPU that it is ready to enter LPM.
In other words, device low-power modes should be entered into only after putting the CAN module in local
power-down mode.
16.14.3 Enabling/Disabling Clock to the CAN Module
The CAN module cannot be used unless the clock to the module is enabled. It is enabled or disabled by
using bit 14 of the PCLKCR register. This bit is useful in applications that do not use the CAN module at
all. In such applications, the CAN module clock can be permanently turned off, resulting in some power
saving. This bit is not intended to put the CAN module in low-power mode and should not be used for that
purpose. Like all other peripherals, clock to the CAN module is disabled upon reset.
16.14.4 Possible Failure Modes External to the CAN Controller Module
This section lists some potential failure modes in a CAN based system. The failure modes listed are
external to the CAN controller and hence, need to be evaluated at the system level.
• CAN_H and CAN_ L shorted together
• CAN_H and/or CAN_ L shorted to ground
• CAN_H and/or CAN_ L shorted to supply
• Failed CAN transceiver
• Electrical disturbance on CAN bus
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Enhanced Controller Area Network (eCAN)
Copyright © 2011–2017, Texas Instruments Incorporated
1109
Chapter 17
SPRUH18G – January 2011 – Revised April 2017
Universal Serial Bus (USB) Controller
This chapter discusses the features and functions of the universal serial bus (USB) controller.
Topic
17.1
17.2
17.3
17.4
17.5
17.6
1110
...........................................................................................................................
Introduction ...................................................................................................
Features ........................................................................................................
Functional Description ....................................................................................
Initialization and Configuration .........................................................................
Register Map ..................................................................................................
Register Descriptions ......................................................................................
Universal Serial Bus (USB) Controller
Page
1111
1111
1113
1123
1124
1129
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Introduction
www.ti.com
17.1 Introduction
The USB controller operates as a full-speed function controller during point-to-point communications with
the USB host device. The controller complies with the USB 2.0 standard, which includes SUSPEND and
RESUME signaling, eight endpoints comprised of two hard-wired for control transfers (one endpoint for IN
and one endpoint for OUT) plus six endpoints defined by firmware, along with a dynamic sizable FIFO
support multiple packet queueing. DMA access to the FIFO allows minimal interference from system
software. Software-controlled connect and disconnect allows flexibility during USB device startup.
17.2 Features
The USB module has the following features:
• Complies with USB-IF certification standards
• USB 2.0 full-speed (12 Mbps) operation in host and device modes as well as low-speed (1.5 Mbps)
operation in host mode
• Integrated PHY
• Four transfer types: Control, Interrupt, Bulk, and Isochronous
• Eight endpoints
– One dedicated control IN endpoint and one dedicated control OUT endpoint
– Three configurable IN endpoints and three configurable OUT endpoints
• Four KB dedicated endpoint memory: one endpoint may be defined for double-buffered 1023-byte
isochronous packet size
• Efficient transfers using direct memory access controller (DMA)
– All six endpoints can trigger separate DMA events
– Channel requests asserted when FIFO contains required amount of data
17.2.1 Block Diagram
The USB block diagram is shown in Figure 17-1.
Figure 17-1. USB Block Diagram
DMA
Requests
Endpoint Control
Transmit
EP0 –31
Control
Receive
CPU Interface
Combine
Endpoints
Interrupt
Control
Host
Transaction
Scheduler
Interrupts
EP Reg.
Decoder
USB PHY
USB FS/LS
PHY
UTM
Synchronization
Packet
Encode/Decode
Data Sync
Packet Encode
HNP/SRP
Packet Decode
Timers
CRC Gen/Check
Common
Regs
FIFO RAM
Controller
Rx
Rx
Buff
Buff
Tx
Buff
AHB bus–
Slave mode
Cycle
Control
Tx
Buff
FIFO
Decoder
Cycle Control
USB DataLines
D+ andD-
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1111
Features
www.ti.com
17.2.2 Signal Description
The USB controller requires a total of three signals (D+, D-, and VBus) to operate in device mode and two
signals (D+, D-) to operate in embedded host mode. Because of the high speed needed for USB, the pins
D+ and D- have special buffers to support USB. As such, their position on the chip is not user-selectable.
These pins at reset are, by default, GPIOs. They must be configured before being used as USB function
pins. The USBIOEN bit in the GPIO A Control 2 (GPACTRL2) register should be set to choose the USB
function. The signals USB bus voltage (VBUS), External power enable (EPEN), and Power fault (PFLT)
are not hardwired to any pin and some applications will require they be implemented in software via a
GPIO. Software that implements these signals is available in the USB software library.
17.2.3 Signal Pinout Tables
The signal pinouts are shown in the table below.
Table 17-1. Signal Pinouts
Package PIn
GPIO Number
Function
62
26
USB D+ Positive Differential Half of USB signal
61
27
USB D+ Negative Differential Half of USB signal
100 LQFP (PZ)
80 LQFP (PN)
78
77
17.2.4 VBus Recommendations
Most applications do not need to monitor VBus. Because of this, a dedicated VBus monitoring pin was not
included on this microcontroller. If you are designing a bus-powered device application or an embedded
host application, you do NOT need to monitor VBus. If you are designing a self-powered device, you will
need to actively monitor the state of the VBus pin in order to ensure compliance with the USB specification.
In Section 7.1.5 and Section 7.2.1 of the USB Specification Revision 2.0, it is stated respectively that:
• "The voltage source on the [speed identification] pull-up resistor must be derived from or controlled by
the power supplied on the USB cable such that when VBUS is removed, the pull-up resistor does not
supply current on the data line to which it is attached.
• When VBUS is removed, the device must remove power from the D+/D- pull-up resistor within 10
seconds.
• Later in the timing tables (Section 7.3.2) of the USB Specification 2.0 it is also stated that the D+/Dpull-up resistor should be applied within 100ms of VBus reaching a valid level."
Meeting the above specification is very easy because of the slow timing requirements. In this chapter we
will discuss the hardware part of the VBus monitoring solution. The corresponding software will be
discussed briefly, but for examples and an explanation, please consult the USB software guide.
The pins of this microprocessor are NOT 5V tolerant, and because of this the VBus signal cannot be directly
connected to a GPIO pin. Directly connecting 5V to a pin of the microcontroller WILL destroy the I/O buffer
of the pin and possibly more of the chip. The most cost-effective way of making any pin capable of reading
a 5V input is to use a series resistance in conjunction with the ESD diode clamps already present inside
the device on every pin. We recommend the use of a 100kΩ series resistance between the VBus signal and
the pin chosen to monitor it. A diagram of this setup is shown below.
1112
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Functional Description
www.ti.com
Figure 17-2. USB Scheme
+3V3
f2806xU
100 k
GPIOx
USB-DP/GPIO26
USB-DM/GPIO27
GND
P$1
P$3
P$2
P$4
VBUS
D+
D–
GND
GND
In the above diagram, if VBus is above or below 3.3V and 0V respectively, one of the ESD clamp diodes
will be forward-biased, allowing current to flow through the 100KΩ resistor. The purpose of the diode
clamps is to protect the pins of the microcontroller from very short overvoltage spikes of a high magnitude.
They do this by clamping the voltage excursion to one of the supply rails. We are effectively requiring the
ESD clamps to do the same thing they were designed to do, but instead of a short high magnitude pulse,
we are giving them a long low magnitude static value via the 100kΩ resistor.
Any pin that has digital input/output functionality could potentially be used to monitor VBus, but the use of
an interrupt capable GPIO is recommended. A pin that does not have external interrupt capability may
also be used, but the input state of the pin must be polled periodically by the application software to
ensure appropriate action is taken whenever VBus is applied or removed. If an interrupt capable GPIO is
chosen, it should be configured to generate an interrupt on both the rising and falling edge. More
information on external interrupts can be found in the System Control and Interrupts chapter. Example
code that implements VBus monitoring using external interrupts and takes the appropriate actions is
documented in the USB Software Guide and can be found in the associated USB software package.
17.3 Functional Description
The USB controller can be configured to act as either a dedicated host or device. However, when the USB
controller is acting as a self-powered device, a GPIO input or analog comparator input must be connected
to VBUS and configured to generate an interrupt when the VBUS level drops. This interrupt is used to disable
the pullup resistor on the USB0DP signal.
Note: When USB is used in the system, the minimum system frequency is 20 MHz.
17.3.1 Operation as a Device
This section describes how the USB controller performs when it is being used as a USB device. IN
endpoints, OUT endpoints, entry into and exit from SUSPEND mode, and recognition of start of frame
(SOF) are all described.
When in device mode, IN transactions are controlled by the endpoint transmit interface and uses the
transmit endpoint registers for the given endpoint. OUT transactions are handled with the endpoints
receive interface and uses the receive endpoint registers for the given endpoint. When configuring the size
of the FIFOs for endpoints, take into account the maximum packet size for an endpoint.
• Bulk. Bulk endpoints should be the size of the maximum packet (up to 64 bytes) or twice the maximum
packet size if double buffering is used (described further in the following section).
• Interrupt. Interrupt endpoints should be the size of the maximum packet (up to 64 bytes) or twice the
maximum packet size if double buffering is used.
• Isochronous. Isochronous endpoints are more flexible and can be up to 1023 bytes.
• Control. It is also possible to specify a separate control endpoint for a USB device. However, in most
cases the USB device should use the dedicated control endpoint on the USB controller’s endpoint 0.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1113
Functional Description
www.ti.com
17.3.1.1 Control and Configurable Endpoints
When operating as a device, the USB controller provides two dedicated control endpoints (IN and OUT)
and six configurable endpoints (three IN and three OUT) that can be used for communications with a host
controller. The endpoint number and direction associated with an endpoint is directly related to its register
designation. For example, when the Host is transmitting to endpoint 1, all configuration and data is in the
endpoint 1 transmit register interface. Endpoint 0 is a dedicated control endpoint used for all control
transactions to endpoint 0 during enumeration or when any other control requests are made to endpoint 0.
Endpoint 0 uses the first 64 bytes of the USB controller's FIFO RAM as a shared memory for both IN and
OUT transactions. The remaining six endpoints can be configured as control, bulk, interrupt, or
isochronous endpoints. They should be treated as three configurable IN and three configurable OUT
endpoints. The endpoint pairs are not required to have the same type for their IN and OUT endpoint
configuration. For example, the OUT portion of an endpoint pair could be a bulk endpoint, while the IN
portion of that endpoint pair could be an interrupt endpoint. The address and size of the FIFOs attached to
each endpoint can be modified to fit the application's needs.
17.3.1.1.1 IN Transactions as a Device
When operating as a USB device, data for IN transactions is handled through the FIFOs attached to the
transmit endpoints. The sizes of the FIFOs for the three configurable IN endpoints are determined by the
USB Transmit FIFO Start Address (USBTXFIFOADD) register. The maximum size of a data packet that
may be placed in a transmit endpoint’s FIFO for transmission is programmable and is determined by the
value written to the USB Maximum Transmit Data Endpoint n (USBTXMAXPn) register for that endpoint.
The endpoint’s FIFO can also be configured to use double-packet or single-packet buffering. When
double-packet buffering is enabled, two data packets can be buffered in the FIFO, which also requires that
the FIFO is at least two packets in size. When double-packet buffering is disabled, only one packet can be
buffered, even if the packet size is less than half the FIFO size.
Note: The maximum packet size set for any endpoint must not exceed the FIFO size. The USBTXMAXPn
register should not be written to while data is in the FIFO as unexpected results may occur.
Single-Packet Buffering
If the size of the transmit endpoint's FIFO is less than twice the maximum packet size for this endpoint (as
set in the USB Transmit Dynamic FIFO Sizing (USBTXFIFOSZ) register), only one packet can be buffered
in the FIFO and single-packet buffering is required. When each packet is completely loaded into the
transmit FIFO, the TXRDY bit in the USB Transmit Control and Status Endpoint n Low (USBTXCSRLn)
register must be set. If the AUTOSET bit in the USB Transmit Control and Status Endpoint n High
(USBTXCSRHn) register is set, the TXRDY bit is automatically set when a maximum-sized packet is
loaded into the FIFO. For packet sizes less than the maximum, the TXRDY bit must be set manually.
When the TXRDY bit is set, either manually or automatically, the packet is ready to be sent. When the
packet has been successfully sent, both TXRDY and FIFONE are cleared, and the appropriate transmit
endpoint interrupt signaled. At this point, the next packet can be loaded into the FIFO.
Double-Packet Buffering
If the size of the transmit endpoint's FIFO is at least twice the maximum packet size for this endpoint, two
packets can be buffered in the FIFO and double-packet buffering is allowed. As each packet is loaded into
the transmit FIFO, the TXRDY bit in the USBTXCSRLn register must be set. If the AUTOSET bit in the
USBTXCSRHn register is set, the TXRDY bit is automatically set when a maximum-sized packet is loaded
into the FIFO. For packet sizes less than the maximum, TXRDY must be set manually. When the TXRDY
bit is set, either manually or automatically, the packet is ready to be sent. After the first packet is loaded,
TXRDY is immediately cleared and an interrupt is generated. A second packet can now be loaded into the
transmit FIFO and TXRDY set again (either manually or automatically if the packet is the maximum size).
At this point, both packets are ready to be sent. After each packet has been successfully sent, TXRDY is
automatically cleared and the appropriate transmit endpoint interrupt signaled to indicate that another
packet can now be loaded into the transmit FIFO. The state of the FIFONE bit in the USBTXCSRLn
register at this point indicates how many packets may be loaded. If the FIFONE bit is set, then another
packet is in the FIFO and only one more packet can be loaded. If the FIFONE bit is clear, then no packets
are in the FIFO and two more packets can be loaded.
1114
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Functional Description
www.ti.com
Note: Double-packet buffering is disabled if an endpoint’s corresponding EPn bit is set in the USB
Transmit Double Packet Buffer Disable (USBTXDPKTBUFDIS) register. This bit is set by default, so it
must be cleared to enable double-packet buffering.
17.3.1.1.2 Out Transactions as a Device
When in device mode, OUT transactions are handled through the USB controller receive FIFOs. The sizes
of the receive FIFOs for the 3 configurable OUT endpoints are determined by the USB Receive FIFO Start
Address (USBRXFIFOADD) register. The maximum amount of data received by an endpoint in any packet
is determined by the value written to the USB Maximum Receive Data Endpoint n (USBRXMAXPn)
register for that endpoint. When double-packet buffering is enabled, two data packets can be buffered in
the FIFO. When double-packet buffering is disabled, only one packet can be buffered even if the packet is
less than half the FIFO size.
Note: In all cases, the maximum packet size must not exceed the FIFO size.
Single-Packet Buffering
If the size of the receive endpoint FIFO is less than twice the maximum packet size for an endpoint, only
one data packet can be buffered in the FIFO and single-packet buffering is required. When a packet is
received and placed in the receive FIFO, the RXRDY and FULL bits in the USB Receive Control and
Status Endpoint n Low (USBRXCSRL[n]) register are set and the appropriate receive endpoint is signaled,
indicating that a packet can now be unloaded from the FIFO. After the packet has been unloaded, the
RXRDY bit must be cleared in order to allow further packets to be received. This action also generates the
acknowledge signaling to the Host controller. If the AUTOCL bit in the USB Receive Control and Status
Endpoint n High (USBRXCSRH[n]) register is set and a maximum-sized packet is unloaded from the
FIFO, the RXRDY and FULL bits are cleared automatically. For packet sizes less than the maximum,
RXRDY must be cleared manually.
Double-Packet Buffering
If the size of the receive endpoint FIFO is at least twice the maximum packet size for the endpoint, two
data packets can be buffered and double-packet buffering can be used. When the first packet is received
and loaded into the receive FIFO, the RXRDY bit in the USBRXCSRL[n] register is set and the appropriate
receive endpoint interrupt is signaled to indicate that a packet can now be unloaded from the FIFO.
Note: The FULL bit in USBRXCSRL[n] is not set when the first packet is received. It is only set if a second
packet is received and loaded into the receive FIFO.
After each packet has been unloaded, the RXRDY bit must be cleared to allow further packets to be
received. If the AUTOCL bit in the USBRXCSRH[n] register is set and a maximum-sized packet is
unloaded from the FIFO, the RXRDY bit is cleared automatically. For packet sizes less than the maximum,
RXRDY must be cleared manually. If the FULL bit is set when RXRDY is cleared, the USB controller first
clears the FULL bit, then sets RXRDY again to indicate that there is another packet waiting in the FIFO to
be unloaded.
Note: Double-packet buffering is disabled if an endpoint’s corresponding EPn bit is set in the USB
Receive Double Packet Buffer Disable (USBRXDPKTBUFDIS) register. This bit is set by default, so it
must be cleared to enable double-packet buffering.
17.3.1.1.3 Scheduling
The device has no control over the scheduling of transactions as scheduling is determined by the Host
controller. The USB controller can set up a transaction at any time. The USB controller waits for the
request from the Host controller and generates an interrupt when the transaction is complete or if it was
terminated due to some error. If the Host controller makes a request and the device controller is not ready,
the USB controller sends a busy response (NAK) to all requests until it is ready.
17.3.1.1.4 Additional Actions
The USB controller responds automatically to certain conditions on the USB bus or actions by the Host
controller such as when the USB controller automatically stalls a control transfer or unexpected zero
length OUT data packets.
Stalled Control Transfer
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1115
Functional Description
www.ti.com
The USB controller automatically issues a STALL handshake to a control transfer under the following
conditions:
1. The Host sends more data during an OUT data phase of a control transfer than was specified in the
device request during the SETUP phase. This condition is detected by the USB controller when the
Host sends an OUT token (instead of an IN token) after the last OUT packet has been unloaded and
the DATAEND bit in the USB Control and Status Endpoint 0 Low (USBCSRL0) register has been set.
2. The Host requests more data during an IN data phase of a control transfer than was specified in the
device request during the SETUP phase. This condition is detected by the USB controller when the
Host sends an IN token (instead of an OUT token) after the CPU has cleared TXRDY and set
DATAEND in response to the ACK issued by the Host to what should have been the last packet.
3. The Host sends more than USBRXMAXPn bytes of data with an OUT data token.
4. The Host sends more than a zero length data packet for the OUT STATUS phase.
Zero Length OUT Data Packets
A zero-length OUT data packet is used to indicate the end of a control transfer. In normal operation, such
packets should only be received after the entire length of the device request has been transferred.
However, if the Host sends a zero-length OUT data packet before the entire length of device request has
been transferred, it is signaling the premature end of the transfer. In this case, the USB controller
automatically flushes any IN token ready for the data phase from the FIFO and sets the DATAEND bit in
the USBCSRL0 register.
Setting the Device Address
When a Host is attempting to enumerate the USB device, it requests that the device change its address
from zero to some other value. The address is changed by writing the value that the Host requested to the
USB Device Functional Address (USBFADDR) register. However, care should be taken when writing to
USBFADDR to avoid changing the address before the transaction is complete. This register should only
be set after the SET_ADDRESS command is complete. Like all control transactions, the transaction is
only complete after the device has left the STATUS phase. In the case of a SET_ADDRESS command,
the transaction is completed by responding to the IN request from the Host with a zero-byte packet. Once
the device has responded to the IN request, the USBFADDR register should be programmed to the new
value as soon as possible to avoid missing any new commands sent to the new address.
Note: If the USBFADDR register is set to the new value as soon as the device receives the OUT
transaction with the SET_ADDRESS command in the packet, it changes the address during the control
transfer. In this case, the device does not receive the IN request that allows the USB transaction to exit
the STATUS phase of the control transfer because it is sent to the old address. As a result, the Host does
not get a response to the IN request, and the Host fails to enumerate the device.
17.3.1.1.5 Device Mode Suspend
When no activity has occurred on the USB bus for 3 ms, the USB controller automatically enters
SUSPEND mode. If the SUSPEND interrupt has been enabled in the USB Interrupt Enable (USBIE)
register, an interrupt is generated at this time. When in SUSPEND mode, the PHY also goes into
SUSPEND mode. When RESUME signaling is detected, the USB controller exits SUSPEND mode and
takes the PHY out of SUSPEND. If the RESUME interrupt is enabled, an interrupt is generated. The USB
controller can also be forced to exit SUSPEND mode by setting the RESUME bit in the USB Power
(USBPOWER) register. When this bit is set, the USB controller exits SUSPEND mode and drives
RESUME signaling onto the bus. The RESUME bit must be cleared after 10 ms (a maximum of 15 ms) to
end RESUME signaling. To meet USB power requirements, the controller can be put into Deep Sleep
mode which keeps the controller in a static state.
1116
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Functional Description
www.ti.com
17.3.1.1.6 Start of Frame
When the USB controller is operating in device mode, it receives a Start-Of-Frame (SOF) packet from the
Host once every millisecond. When the SOF packet is received, the 11-bit frame number contained in the
packet is written into the USB Frame Value (USBFRAME) register, and an SOF interrupt is also signaled
and can be handled by the application. Once the USB controller has started to receive SOF packets, it
expects one every millisecond. If no SOF packet is received after 1.00358 ms, the packet is assumed to
have been lost, and the USBFRAME register is not updated. The USB controller continues and
resynchronizes these pulses to the received SOF packets when these packets are successfully received
again.
17.3.1.1.7 USB Reset
When the USB controller is in device mode and a RESET condition is detected on the USB bus, the USB
controller automatically performs the following actions:
• Clears the USBFADDR register
• Clears the USB Endpoint Index (USBEPIDX) register
• Flushes all endpoint FIFOs
• Clears all control/status registers
• Enables all endpoint interrupts
• Generates a RESET interrupt
17.3.1.1.8 Connect/Disconnect
The USB controller connection to the USB bus is handled by software. The USB PHY can be switched
between normal mode and non-driving mode by setting or clearing the SOFTCONN bit of the
USBPOWER register. When the SOFTCONN bit is set, the PHY is placed in its normal mode, and the
USB0DP/USB0DM lines of the USB bus are enabled. At the same time, the USB controller is placed into
a state, in which it does not respond to any USB signaling except a USB RESET. When the SOFTCONN
bit is cleared, the PHY is put into non-driving mode, USB0DP and USB0DM are tristated, and the USB
controller appears to other devices on the USB bus as if it has been disconnected. The non-driving mode
is the default so the USB controller appears disconnected until the SOFTCONN bit has been set. The
application software can then choose when to set the PHY into its normal mode. Systems with a lengthy
initialization procedure may use this to ensure that initialization is complete, and the system is ready to
perform enumeration before connecting to the USB bus. Once the SOFTCONN bit has been set, the USB
controller can be disconnected by clearing this bit.
Note: The USB controller does not generate an interrupt when the device is connected to the Host.
However, an interrupt is generated when the Host terminates a session.
17.3.2 Operation as a Host
When the USB controller is operating in Host mode, it can either be used for point-to-point
communications with another USB device or, when attached to a hub, for communication with multiple
devices. Full-speed and low-speed USB devices are supported, both for point-to-point communication and
for operation through a hub. The USB controller automatically carries out the necessary transaction
translation needed to allow a low-speed or full-speed device to be used with a USB 2.0 hub. Control, bulk,
isochronous, and interrupt transactions are supported. This section describes the USB controller's actions
when it is being used as a USB Host. Configuration of IN endpoints, OUT endpoints, entry into and exit
from SUSPEND mode, and RESET are all described.
When in Host mode, IN transactions are controlled by an endpoint’s receive interface. All IN transactions
use the receive endpoint registers and all OUT endpoints use the transmit endpoint registers for a given
endpoint. As in device mode, the FIFOs for endpoints should take into account the maximum packet size
for an endpoint.
• Bulk. Bulk endpoints should be the size of the maximum packet (up to 64 bytes) or twice the maximum
packet size if double buffering is used (described further in the following section).
• Interrupt. Interrupt endpoints should be the size of the maximum packet (up to 64 bytes) or twice the
maximum packet size if double buffering is used.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1117
Functional Description
•
•
www.ti.com
Isochronous. Isochronous endpoints are more flexible and can be up to 1023 bytes.
Control. It is also possible to specify a separate control endpoint to communicate with a device.
However, in most cases the USB controller should use the dedicated control endpoint to communicate
with a device’s endpoint 0.
17.3.2.1 Endpoint Registers
The endpoint registers are used to control the USB endpoint interfaces which communicate with device(s)
that are connected. The endpoints consist of a dedicated control IN endpoint, a dedicated control OUT
endpoint, 3 configurable OUT endpoints, and 3 configurable IN endpoints.
The dedicated control interface can only be used for control transactions to endpoint 0 of devices. These
control transactions are used during enumeration or other control functions that communicate using
endpoint 0 of devices. This control endpoint shares the first 64 bytes of the USB controller’s FIFO RAM for
IN and OUT transactions. The remaining IN and OUT interfaces can be configured to communicate with
control, bulk, interrupt, or isochronous device endpoints.
These USB interfaces can be used to simultaneously schedule as many as 3 independent OUT and 3
independent IN transactions to any endpoints on any device. The IN and OUT controls are paired in three
sets of registers. However, they can be configured to communicate with different types of endpoints and
different endpoints on devices. For example, the first pair of endpoint controls can be split so that the OUT
portion is communicating with a device’s bulk OUT endpoint 1, while the IN portion is communicating with
a device’s interrupt IN endpoint 2.
Before accessing any device, whether for point-to-point communications or for communications via a hub,
the relevant USB Receive Functional Address Endpoint n (USBRXFUNCADDRn) or USB Transmit
Functional Address Endpoint n (USBTXFUNCADDRn) registers must be set for each receive or transmit
endpoint to record the address of the device being accessed.
The USB controller also supports connections to devices through a USB hub by providing a register that
specifies the hub address and port of each USB transfer. The FIFO address and size are customizable
and can be specified for each USB IN and OUT transfer. Customization includes allowing one FIFO per
transaction, sharing a FIFO across transactions, and allowing for double-buffered FIFOs.
17.3.2.2 IN Transactions as a Host
IN transactions are handled in a similar manner to the way in which OUT transactions are handled when
the USB controller is in device mode except that the transaction first must be initiated by setting the
REQPKT bit in the USBCSRL0 register, indicating to the transaction scheduler that there is an active
transaction on this endpoint. The transaction scheduler then sends an IN token to the target device. When
the packet is received and placed in the receive FIFO, the RXRDY bit in the USBCSRL0 register is set,
and the appropriate receive endpoint interrupt is signaled to indicate that a packet can now be unloaded
from the FIFO.
When the packet has been unloaded, RXRDY must be cleared. The AUTOCL bit in the USBRXCSRHn
register can be used to have RXRDY automatically cleared when a maximum-sized packet has been
unloaded from the FIFO. The AUTORQ bit in USBRXCSRHn causes the REQPKT bit to be automatically
set when the RXRDY bit is cleared. The AUTOCL and AUTORQ bits can be used with DMA accesses to
perform complete bulk transfers without main processor intervention. When the RXRDY bit is cleared, the
controller sends an acknowledge to the device. When there is a known number of packets to be
transferred, the USB Request Packet Count in Block Transfer Endpoint n (USBRQPKTCOUNTn) register
associated with the endpoint should be configured to the number of packets to be transferred. The USB
controller decrements the value in the USBRQPKTCOUNTn register following each request. When the
USBRQPKTCOUNTn value decrements to 0, the AUTORQ bit is cleared to prevent any further
transactions being attempted. For cases where the size of the transfer is unknown, USBRQPKTCOUNTn
should be cleared. AUTORQ then remains set until cleared by the reception of a short packet (that is, less
than the MAXLOAD value in the USBRXMAXPn register) such as may occur at the end of a bulk transfer.
1118
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Functional Description
www.ti.com
If the device responds to a bulk or interrupt IN token with a NAK, the USB Host controller keeps retrying
the transaction until any NAK Limit that has been set has been reached. If the target device responds with
a STALL, however, the USB Host controller does not retry the transaction but sets the STALLED bit in the
USBCSRL0 register. If the target device does not respond to the IN token within the required time, or the
packet contained a CRC or bit-stuff error, the USB Host controller retries the transaction. If after three
attempts the target device has still not responded, the USB Host controller clears the REQPKT bit and
sets the ERROR bit in the USBCSRL0 register.
17.3.2.3 OUT Transactions as a Host
OUT transactions are handled in a similar manner to the way in which IN transactions are handled when
the USB controller is in device mode. The TXRDY bit in the USBTXCSRLn register must be set as each
packet is loaded into the transmit FIFO. Again, setting the AUTOSET bit in the USBTXCSRHn register
automatically sets TXRDY when a maximum-sized packet has been loaded into the FIFO. Furthermore,
AUTOSET can be used with the DMA controller to perform complete bulk transfers without software
intervention.
If the target device responds to the OUT token with a NAK, the USB Host controller keeps retrying the
transaction until the NAK Limit that has been set has been reached. However, if the target device
responds with a STALL, the USB controller does not retry the transaction but interrupts the main
processor by setting the STALLED bit in the USBTXCSRLn register. If the target device does not respond
to the OUT token within the required time, or the packet contained a CRC or bit-stuff error, the USB Host
controller retries the transaction. If after three attempts the target device has still not responded, the USB
controller flushes the FIFO and sets the ERROR bit in the USBTXCSRLn register.
17.3.2.4 Transaction Scheduling
Scheduling of transactions is handled automatically by the USB Host controller. The Host controller allows
configuration of the endpoint communication scheduling based on the type of endpoint transaction.
Interrupt transactions can be scheduled to occur in the range of every frame to every 255 frames in 1
frame increments. Bulk endpoints do not allow scheduling parameters, but do allow for a NAK timeout in
the event an endpoint on a device is not responding. Isochronous endpoints can be scheduled from every
frame to every 216 frames, in powers of 2.
The USB controller maintains a frame counter. If the target device is a full-speed device, the USB
controller automatically sends an SOF packet at the start of each frame and increments the frame counter.
If the target device is a low-speed device, a K state is transmitted on the bus to act as a keep-alive to stop
the low-speed device from going into SUSPEND mode.
After the SOF packet has been transmitted, the USB Host controller cycles through all the configured
endpoints looking for active transactions. An active transaction is defined as a receive endpoint for which
the REQPKT bit is set or a transmit endpoint for which the TXRDY bit and/or the FIFONE bit is set.
An isochronous or interrupt transaction is started if the transaction is found on the first scheduler cycle of a
frame and if the interval counter for that endpoint has counted down to zero. As a result, only one interrupt
or isochronous transaction occurs per endpoint every n frames, where n is the interval set via the USB
Host Transmit Interval Endpoint n (USBTXINTERVAL[n]) or USB Host Receive Interval Endpoint n
(USBRXINTERVAL[n]) register for that endpoint.
An active bulk transaction starts immediately, provided sufficient time is left in the frame to complete the
transaction before the next SOF packet is due. If the transaction must be retried (for example, because a
NAK was received or the target device did not respond), then the transaction is not retried until the
transaction scheduler has first checked all the other endpoints for active transactions. This process
ensures that an endpoint that is sending a lot of NAKs does not block other transactions on the bus. The
controller also allows the user to specify a limit to the length of time for NAKs to be received from a target
device before the endpoint times out.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1119
Functional Description
www.ti.com
17.3.2.5 USB Hubs
The following setup requirements apply to the USB Host controller only if it is used with a USB hub. When
a full- or low-speed device is connected to the USB controller via a USB 2.0 hub, details of the hub
address and the hub port also must be recorded in the corresponding USB Receive Hub Address
Endpoint n (USBRXHUBADDRn) and USB Receive Hub Port Endpoint n (USBRXHUBPORTn) or the
USB Transmit Hub Address Endpoint n (USBTXHUBADDRn) and USB Transmit Hub Port Endpoint n
(USBTXHUBPORTn) registers. In addition, the speed at which the device operates (full or low) must be
recorded in the USB Type Endpoint 0 (USBTYPE0) (endpoint 0), USB Host Configure Transmit Type
Endpoint n (USBTXTYPEn), or USB Host Configure Receive Type Endpoint n (USBRXTYPEn) registers
for each endpoint that is accessed by the device.
For hub communications, the settings in these registers record the current allocation of the endpoints to
the attached USB devices. To maximize the number of devices supported, the USB Host controller allows
this allocation to be changed dynamically by simply updating the address and speed information recorded
in these registers. Any changes in the allocation of endpoints to device functions must be made following
the completion of any on-going transactions on the endpoints affected.
17.3.2.6 Babble
The USB Host controller does not start a transaction until the bus has been inactive for at least the
minimum inter-packet delay. The controller also does not start a transaction unless it can be finished
before the end of the frame. If the bus is still active at the end of a frame, then the USB Host controller
assumes that the target device to which it is connected has malfunctioned, and the USB controller
suspends all transactions and generates a babble interrupt.
17.3.2.7 Host SUSPEND
If the SUSPEND bit in the USBPOWER register is set, the USB Host controller completes the current
transaction then stops the transaction scheduler and frame counter. No further transactions are started
and no SOF packets are generated.
To exit SUSPEND mode, set the RESUME bit and clear the SUSPEND bit. While the RESUME bit is set,
the USB Host controller generates RESUME signaling on the bus. After 20 ms, the RESUME bit must be
cleared, at which point the frame counter and transaction scheduler start. The Host supports the detection
of a remote wake-up.
17.3.2.8 USB RESET
If the RESET bit in the USBPOWER register is set, the USB Host controller generates USB RESET
signaling on the bus. The RESET bit must be set for at least 20 ms to ensure correct resetting of the
target device. After the CPU has cleared the bit, the USB Host controller starts its frame counter and
transaction scheduler.
17.3.2.9 Connect/Disconnect
A session is started by setting the SESSION bit in the USB device Control (USBDEVCTL) register,
enabling the USB controller to wait for a device to be connected. When a device is detected, a connect
interrupt is generated. The speed of the device that has been connected can be determined by reading
the USBDEVCTL register where the FSDEV bit is set for a full-speed device, and the LSDEV bit is set for
a low-speed device. The USB controller must generate a RESET to the device, and then the USB Host
controller can begin device enumeration. If the device is disconnected while a session is in progress, a
disconnect interrupt is generated.
17.3.3 DMA Operation
The USB peripheral provides an interface connected to the DMA controller with separate channels for 3
transmit endpoints and 3 receive endpoints. The DMA operation of the USB is enabled through the
USBTXCSRHn and USBRXCSRHn registers, for the TX and RX channels respectively. When DMA
operation is enabled, the USB asserts a DMA request on the enabled receive or transmit channel when
the associated FIFO can transfer data. When either FIFO can transfer data, the request for that channel is
1120
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Functional Description
www.ti.com
asserted. The size of the DMA transfer must be restricted to whole multiples of the size of the USB FIFO.
Both read and write transfers of the USB FIFOs using DMA must be configured in this manner. For
example, if the USB endpoint is configured with a FIFO size of 64 bytes, the DMA channel can be used to
transfer 64 bytes to or from the endpoint FIFO. If the number of bytes to transfer is less than 64, then a
programmed I/O method must be used to copy the data to or from the FIFO.
If the DMAMOD bit in the USBTXCSRHn/USBRXCSRHn register is clear, an interrupt is generated after
every packet is transferred, but the DMA continues transferring data. If the DMAMOD bit is set, an
interrupt is generated only when the entire DMA transfer is complete. The interrupt occurs on the USB
interrupt vector. Therefore, if interrupts are used for USB operation and the DMA is enabled, the USB
interrupt handler must be designed to handle the DMA completion interrupt.
Care must be taken when using the DMA to unload the receive FIFO as data is read from the receive
FIFO in 4 byte chunks regardless of value of the MAXLOAD field in the USBRXCSRHn register. The
RXRDY bit is cleared as follows.
To enable DMA operation for the endpoint receive channel, the DMAEN bit of the USBRXCSRH[n]
register should be set. To enable DMA operation for the endpoint transmit channel, the DMAEN bit of the
USBTXCSRH[n] register must be set.
See the Direct Memory Access (DMA)” Users Guide for more details about programming the DMA
controller.
17.3.4 Address/Data Bus Bridge
The USB controller on this device is the same controller that is on the Stellaris devices. This controller
was originally designed to connect to an ARM AHB bus, but has been modified in order to function with
the C28x device’s bus architecture. The modifications made are largely invisible to the user application,
but there are some things to note.
• The USB memory space is 8 bits wide, while the C28x memory space is 16 bits wide.
• 32 and 16 bit accesses (r/w) are completely transparent to the user application code, no changes need
be made.
• The C28x core only supports 8 bit accesses through a byte intrinsic type. This can be used to perform
8 bit reads or writes to the USB controller.
– int &__byte(int *array, unsigned int byte_index);
– *array = ptr to address to access, byte_index = always 0 (for USB)
See Table 17-2 for example.
– See the TMS320C28x Optimizing C/C++ Compiler User's Guide (SPRU514) and the TMS320C28x
Assembly Language Tools User's Guide (SPRU513)
• Because of the bridge, the memory view of the USB controller memory space in CCS isn’t a 1:1
representation of what is in the controller
– When the view mode is
• 32 bit or 16 bit, even address are effectively duplicated, ignore odd addresses.
• 8 bit, Even addresses from within the controller are duplicated into odd address in the view
window; old addresses from within the controller are not displayed.
See Table 17-3 for example.
Table 17-2. USB Memory Access From Software
USB Controller Memory
Address
C28x 8 Bit
Reg. Name
Data
Access
Data
0x00
FADDR
0x00
__byte((int *)0x00,0)
0x0000
0x01
POWER
0x11
__byte((int *)0x01,0)
0x0011
0x02
TXIS (LSB)
0x22
__byte((int *)0x02,0)
0x0022
0x03
TXIS (MSB)
0x33
__byte((int *)0x03,0)
0x0033
0x04
RXIS (LSB)
0x44
__byte((int *)0x04,0)
0x0044
0x05
RXIS (MSB)
0x55
__byte((int *)0x05,0)
0x0055
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Universal Serial Bus (USB) Controller 1121
Functional Description
www.ti.com
Table 17-2. USB Memory Access From Software (continued)
USB Controller Memory
C28x 8 Bit
0x06
TXIE (LSB)
0x66
__byte((int *)0x06,0)
0x0066
0x07
TXIE (MSB)
0x77
__byte((int *)0x07,0)
0x0077
0x08
RXIE (LSB)
0x88
__byte((int *)0x08,0)
0x0088
0x09
RXIE (MSB)
0x99
__byte((int *)0x09,0)
0x0099
0x0A
USBIS
0xAA
__byte((int *)0x0A,0)
0x00AA
0x0B
USBIE
0xBB
__byte((int *)0x0B,0)
0x00BB
0x0C
FRAME (LSB)
0xCC
__byte((int *)0x0C,0)
0x00CC
0x0D
FRAME (MSB)
0xDD
__byte((int *)0x0D,0)
0x00DD
0x0E
EPIDX
0xEE
__byte((int *)0x0E,0)
0x00EE
0x0F
TEST
0xFF
__byte((int *)0x0F,0)
0x00FF
C28x 16 Bit
C28x 32 Bit
Access
Data
Access
Data
(*((short *)(0x00)))
0x1100
(*((long *)(0x00)))
0x33221100
(*((short *)(0x01)))
0x1100
(*((long *)(0x01)))
0x33221100
(*((short *)(0x02)))
0x3322
(*((long *)(0x02)))
0x33221100
(*((short *)(0x03)))
0x3322
(*((long *)(0x03)))
0x33221100
(*((short *)(0x04)))
0x5544
(*((long *)(0x04)))
0x77665544
(*((short *)(0x05)))
0x5544
(*((long *)(0x05)))
0x77665544
(*((short *)(0x06)))
0x7766
(*((long *)(0x06)))
0x77665544
(*((short *)(0x07)))
0x7766
(*((long *)(0x07)))
0x77665544
(*((short *)(0x08)))
0x9988
(*((long *)(0x08)))
0xBBAA9988
(*((short *)(0x09)))
0x9988
(*((long *)(0x09)))
0xBBAA9988
(*((short *)(0x0A)))
0xBBAA
(*((long *)(0x0A)))
0xBBAA9988
(*((short *)(0x0B)))
0xBBAA
(*((long *)(0x0B)))
0xBBAA9988
(*((short *)(0x0C)))
0xDDCC
(*((long *)(0x0C)))
0xFFEEDDCC
(*((short *)(0x0D)))
0xDDCC
(*((long *)(0x0D)))
0xFFEEDDCC
(*((short *)(0x0E)))
0xFFEE
(*((long *)(0x0E)))
0xFFEEDDCC
(*((short *)(0x0F)))
0xFFEE
(*((long *)(0x0F)))
0xFFEEDDCC
Table 17-3. USB Memory Access From CCS
CCS 8 Bit
CCS 16 Bit
CCS 32 Bit
Address
Displayed Data
Address
Displayed Data
Address
Displayed Data
0x00
0x00
0x00
0x1100
0x00
0x11001100
0x01
0x00
0x01
0x1100
0x02
0x33223322
0x02
0x22
0x02
0x3322
0x04
0x55445544
0x03
0x22
0x03
0x3322
0x06
0x77667766
0x04
0x44
0x04
0x5544
0x08
0x99889988
0x05
0x44
0x05
0x5544
0x0A
0xBBAABBAA
0x06
0x66
0x06
0x7766
0x0C
0xDDCCDDCC
0x07
0x66
0x07
0x7766
0x0E
0xFFEEFFEE
0x08
0x88
0x08
0x9988
0x09
0x88
0x09
0x9988
0x0A
0xAA
0x0A
0xBBAA
0x0B
0xAA
0x0B
0xBBAA
0x0C
0xCC
0x0C
0xDDCC
0x0D
0xCC
0x0D
0xDDCC
1122Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Initialization and Configuration
www.ti.com
Table 17-3. USB Memory Access From CCS (continued)
CCS 8 Bit
CCS 16 Bit
CCS 32 Bit
0x0E
0xEE
0x0E
0xFFEE
0x0F
0xEE
0x0F
0xFFEE
17.4 Initialization and Configuration
To use the USB Controller, the clock for the USB controller must first be configured. USBCLK is driven via
the second PLL within the chip. The PLL should be configured to operate at 60MHz via the PLL2CTL,
PLL2MULT, PLL2STS registers. After the PLL is enabled and locked,the controller can be clocked by
enabling the peripheral in the PCLKCR3 register. In addition to the clock,the USB PHY must be enabled.
Configure the USBIOEN field in the GPACTRL2 register to enable USB functionality on the designated
pins. After the clock has been enabled and the USB PHY turned on the USB peripheral is ready for
operation and the associated software initialization routines may be called.
17.4.1 Pin Configuration
In order to give the user more flexabliity, the signals External Power Enable (EPEN) and Power Fault
(PFLT) were not implemented in hardware. Instead, it is left up to the user to implement these signals in
software. Examples of how to implement these signals in software can be found in the f2806x USB
Software Guide.
When using the device controller portion of the USB controller in a system that also provides Host
functionality, the power to VBUS must be disabled to allow the external Host controller to supply power.
Usually, the EPEN signal is used to control the external regulator and should be negated to avoid having
two devices driving the VBUS power pin on the USB connector.
When the USB controller is acting as a Host, it is in control of two signals that are attached to an external
voltage supply that provides power to VBUS. The Host controller uses the EPEN signal to enable or
disable power to the VBUS pin on the USB connector. An input pin, PFLT, provides feedback when there
has been a power fault on VBUS. The PFLT signal can be configured to either automatically negate the
EPEN signal to disable power, and/or it can generate an interrupt to the interrupt controller to allow
software to handle the power fault condition. The polarity and actions related to both EPEN and PFLT are
fully configurable in the USB controller. The controller also provides interrupts on device insertion and
removal to allow the Host controller code to respond to these external events.
17.4.2 Endpoint Configuration
To start communication in Host or device mode, the endpoint registers must first be configured. In Host
mode, this configuration establishes a connection between an endpoint register and an endpoint on a
device. In device mode, an endpoint must be configured before enumerating to the Host controller.
In both cases, the endpoint 0 configuration is limited because it is a fixed-function, fixed-FIFO-size
endpoint. In device and Host modes, the endpoint requires little setup but does require a software-based
state machine to progress through the setup, data, and status phases of a standard control transaction. In
device mode, the configuration of the remaining endpoints is done once before enumerating and then only
changed if an alternate configuration is selected by the Host controller. In Host mode, the endpoints must
be configured to operate as control, bulk, interrupt or isochronous mode. Once the type of endpoint is
configured, a FIFO area must be assigned to each endpoint. In the case of bulk, control and interrupt
endpoints, each has a maximum of 64 bytes per transaction. Isochronous endpoints can have packets
with up to 1023 bytes per packet. In either mode, the maximum packet size for the given endpoint must be
set prior to sending or receiving data.
Configuring each endpoint’s FIFO involves reserving a portion of the overall USB FIFO RAM to each
endpoint. The total FIFO RAM available is 4 Kbytes with the first 64 bytes reserved for endpoint 0. The
endpoint’s FIFO must be at least as large as the maximum packet size. The FIFO can also be configured
as a double-buffered FIFO so that interrupts occur at the end of each packet and allow filling the other half
of the FIFO.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1123
Register Map
www.ti.com
If operating as a device, the USB device controller's soft connect must be enabled when the device is
ready to start communications, indicating to the host controller that the device is ready to start the
enumeration process. If operating as a Host controller, the device soft connect must be disabled and
power must be provided to VBUS via the USB0EPEN signal.
17.5 Register Map
Table 17-4 lists the registers. All addresses given are relative to the USB base address of 0x4000. Note
that the USB controller clock must be enabled before the registers can be programmed (see System
Control module).
Table 17-4. Universal Serial Bus (USB) Controller Register Map
Offset
0x000
Name
USBFADDR
(1)
Type
Reset
Description
Location
R/W
0x00
USB Device
Functional Address
Section 17.6.1
0x001
USBPOWER(1)(2)
R/W
0x20
USB Power
Section 17.6.2
0x002
USBTXIS(1)(2)
RO
0x0000
USB Transmit
Interrupt Status
Section 17.6.3
0x004
USBRXIS(1)(2)
RO
0x0000
USB Receive
Interrupt Status
Section 17.6.4
0x006
USBTXIE(1)(2)
R/W
0xFFFF
USB Transmit
Interrupt Enable
Section 17.6.5
0x008
USBRXIE(1)(2)
R/W
0xFFFE
USB Receive
Interrupt Enable
Section 17.6.6
0x00A
USBIS(1)(2)
RO
0x00
USB General
Interrupt Status
Section 17.6.7
0x00B
USBIE(1)(2)
R/W
0x06
USB Interrupt Enable
Section 17.6.8
0x00C
USBFRAME(1)(2)
RO
0x0000
USB Frame Value
Section 17.6.9
(1)(2)
0x00E
USBEPIDX
R/W
0x00
USB Endpoint Index
Section 17.6.10
0x00F
USBTEST(1)(2)
R/W
0x00
USB Test Mode
Section 17.6.11
0x020
USBFIFO0(1)(2)
R/W
0x0000.0000
USB FIFO Endpoint 0
Section 17.6.12
0x024
(1)(2)
R/W
0x0000.0000
USB FIFO Endpoint 1
Section 17.6.12
0x028
(1)(2)
USBFIFO2
R/W
0x0000.0000
USB FIFO Endpoint 2
Section 17.6.12
0x02C
USBFIFO3(1)(2)
R/W
0x0000.0000
USB FIFO Endpoint 3
Section 17.6.12
0x060
(2)
R/W
0x80
USB Device Control
Section 17.6.13
0x062
(1)(2)
USBTXFIFOSZ
R/W
0x00
USB Transmit
Dynamic FIFO Sizing
Section 17.6.14
0x063
USBRXFIFOSZ(1)(2)
R/W
0x00
USB Receive
Dynamic FIFO Sizing
Section 17.6.15
0x064
USBTXFIFOADD(1)(2)
R/W
0x0000
USB Transmit FIFO
Start Address
Section 17.6.16
0x066
USBRXFIFOADD(1)(2)
R/W
0x0000
USB Receive FIFO
Start Address
Section 17.6.17
0x07A
USBCONTIM(1)(2)
R/W
0x5C
USB Connect Timing
Section 17.6.18
0x07D
USBFSEOF(1)(2)
R/W
0x77
USB Full-Speed Last
Transaction to End of
Frame Timing
Section 17.6.19
0x07E
USBLSEOF(1)(2)
R/W
0x72
USB Low-Speed Last
Transaction to End of
Frame Timing
Section 17.6.20
0x080
USBTXFUNCADDR0(
R/W
0x00
USB Transmit
Functional Address
Endpoint 0
Section 17.6.21
USBFIFO1
USBDEVCTL
2)
1124
0x082
USBTXHUBADDR0(2)
R/W
0x00
USB Transmit Hub
Address Endpoint 0
Section 17.6.22
0x083
USBTXHUBPORT0(2)
R/W
0x00
USB Transmit Hub
Port Endpoint 0
Section 17.6.23
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Map
www.ti.com
Table 17-4. Universal Serial Bus (USB) Controller Register Map (continued)
Offset
Name
Type
Reset
Description
Location
0x088
USBTXFUNCADDR1(
R/W
0x00
USB Transmit
Functional Address
Endpoint 1
Section 17.6.21
2)
0x08A
USBTXHUBADDR1(2)
R/W
0x00
USB Transmit Hub
Address Endpoint 1
Section 17.6.22
0x08B
USBTXHUBPORT1(2)
R/W
0x00
USB Transmit Hub
Port Endpoint 1
Section 17.6.23
0x08C
USBRXFUNCADDR1
R/W
0x00
USB Receive
Functional Address
Endpoint 1
Section 17.6.24
(2)
0x08E
USBRXHUBADDR1(2)
R/W
0x00
USB Receive Hub
Address Endpoint 1
Section 17.6.25
0x08F
USBRXHUBPORT1(2)
R/W
0x00
USB Receive Hub
Port Endpoint 1
Section 17.6.26
0x090
USBTXFUNCADDR2(
R/W
0x00
USB Transmit
Functional Address
Endpoint 2
Section 17.6.21
2)
0x092
USBTXHUBADDR2(2)
R/W
0x00
USB Transmit Hub
Address Endpoint 2
Section 17.6.22
0x093
USBTXHUBPORT2(2)
R/W
0x00
USB Transmit Hub
Port Endpoint 2
Section 17.6.23
0x094
USBRXFUNCADDR2
R/W
0x00
USB Receive
Functional Address
Endpoint 2
Section 17.6.24
(2)
0x096
USBRXHUBADDR2(2)
R/W
0x00
USB Receive Hub
Address Endpoint 2
Section 17.6.25
0x097
USBRXHUBPORT2(2)
R/W
0x00
USB Receive Hub
Port Endpoint 2
Section 17.6.26
0x098
USBTXFUNCADDR3(
R/W
0x00
USB Transmit
Functional Address
Endpoint 3
Section 17.6.21
2)
0x09A
USBTXHUBADDR3(2)
R/W
0x00
USB Transmit Hub
Address Endpoint 3
Section 17.6.22
0x09B
USBTXHUBPORT3(2)
R/W
0x00
USB Transmit Hub
Port Endpoint 3
Section 17.6.23
0x09C
USBRXFUNCADDR3
R/W
0x00
USB Receive
Functional Address
Endpoint 3
Section 17.6.24
(2)
0x09E
USBRXHUBADDR3(2)
R/W
0x00
USB Receive Hub
Address Endpoint 3
Section 17.6.25
0x09F
USBRXHUBPORT3(2)
R/W
0x00
USB Receive Hub
Port Endpoint 3
Section 17.6.26
0x102
USBCSRL0(1)(2)
W1C
0x00
USB Control and
Status Endpoint 0
Low
Section 17.6.28
0x103
USBCSRH0(1)(2)
W1C
0x00
USB Control and
Status Endpoint 0
High
Section 17.6.29
0x108
USBCOUNT0(1)(2)
R/o
0x00
USB Receive Byte
Count Endpoint 0
Section 17.6.30
0x10A
USBTYPE0(2)
R/W
0x00
USB Type Endpoint 0
Section 17.6.31
R/W
0x00
USB NAK Limit
Section 17.6.32
0x10B
USBNAKLMT
(2)
0x110
USBTXMAXP1(1)(2)
R/W
0x0000
USB Maximum
Transmit Data
Endpoint 1
Section 17.6.27
0x112
USBTXCSRL1(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 1 Low
Section 17.6.33
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1125
Register Map
www.ti.com
Table 17-4. Universal Serial Bus (USB) Controller Register Map (continued)
1126
Offset
Name
Type
Reset
Description
Location
0x113
USBTXCSRH1(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 1 High
Section 17.6.34
0x114
USBRXMAXP1(1)(2)
R/W
0x0000
USB Maximum
Receive Data
Endpoint 1
Section 17.6.35
0x116
USBRXCSRL1(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
1 Low
Section 17.6.36
0x117
USBRXCSRH1(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
1 High
Section 17.6.37
0x118
USBRXCOUNT1(1)(2)
RO
0x0000
USB Receive Byte
Count Endpoint 1
Section 17.6.38
0x11A
USBTXTYPE1(2)
R/W
0x00
USB Host Transmit
Configure Type
Endpoint 1
Section 17.6.39
0x11B
USBTXINTERVAL1(2)
R/W
0x00
USB Host Transmit
Interval Endpoint 1
Section 17.6.40
0x11C
USBRXTYPE1(2)
R/W
0x00
USB Host Configure
Receive Type
Endpoint 1
Section 17.6.41
0x11D
USBRXINTERVAL1(2)
R/W
0x00
USB Host Receive
Polling Interval
Endpoint 1
Section 17.6.42
0x120
USBTXMAXP2(1)(2)
R/W
0x0000
USB Maximum
Transmit Data
Endpoint 2
Section 17.6.27
0x122
USBTXCSRL2(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 2 Low
Section 17.6.33
0x123
USBTXCSRH2(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 2 High
Section 17.6.34
0x124
USBRXMAXP2(1)(2)
R/W
0x0000
USB Maximum
Receive Data
Endpoint 2
Section 17.6.35
0x126
USBRXCSRL2(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
2 Low
Section 17.6.36
0x127
USBRXCSRH2(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
2 High
Section 17.6.37
0x128
USBRXCOUNT2(1)(2)
RO
0x0000
USB Receive Byte
Count Endpoint 2
Section 17.6.38
0x12A
USBTXTYPE2(2)
R/W
0x00
USB Host Transmit
Configure Type
Endpoint 2
Section 17.6.39
0x12B
USBTXINTERVAL2(2)
R/W
0x00
USB Host Transmit
Interval Endpoint 2
Section 17.6.40
0x12C
USBRXTYPE2(2)
R/W
0x00
USB Host Configure
Receive Type
Endpoint 2
Section 17.6.41
0x12D
USBRXINTERVAL2(2)
R/W
0x00
USB Host Receive
Polling Interval
Endpoint 2
Section 17.6.42
0x130
USBTXMAXP3(1)(2)
R/W
0x0000
USB Maximum
Transmit Data
Endpoint 3
Section 17.6.27
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Map
www.ti.com
Table 17-4. Universal Serial Bus (USB) Controller Register Map (continued)
Offset
Name
Type
Reset
Description
Location
0x132
USBTXCSRL3(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 3 Low
Section 17.6.33
0x133
USBTXCSRH3(1)(2)
R/W
0x00
USB Transmit
Control and Status
Endpoint 3 High
0x134
(1)(2)
USBRXMAXP3
R/W
0x0000
USB Maximum
Receive Data
Endpoint 3
Section 17.6.35
0x136
USBRXCSRL3(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
3 Low
Section 17.6.33
0x137
USBRXCSRH3(1)(2)
R/W
0x00
USB Receive Control
and Status Endpoint
3 High
Section 17.6.36
0x138
USBRXCOUNT3(1)(2)
RO
0x0000
USB Receive Byte
Count Endpoint 3
Section 17.6.38
0x13A
USBTXTYPE3(2)
R/W
0x00
USB Host Transmit
Configure Type
Endpoint 3
Section 17.6.39
0x13B
USBTXINTERVAL3(2)
R/W
0x00
USB Host Transmit
Interval Endpoint 3
Section 17.6.40
0x13C
USBRXTYPE3(2)
R/W
0x00
USB Host Configure
Receive Type
Endpoint 3
Section 17.6.41
0x13D
USBRXINTERVAL3(2)
R/W
0x00
USB Host Receive
Polling Interval
Endpoint 3
Section 17.6.42
0x304
USBRQPKTCOUNT1
R/W
0x0000 1
USB Request Packet
Count in Block
Transfer Endpoint 1
Section 17.6.43
R/W
0x0000
USB Request Packet
Count in Block
Transfer Endpoint 2
Section 17.6.43
R/W
0x0000
USB Request Packet
Count in Block
Transfer Endpoint 3
Section 17.6.43
Section 17.6.34
(2)
0x308
USBRQPKTCOUNT2
(2)
0x30C
USBRQPKTCOUNT3
(2)
0x340
USBRXDPKTBUFDI
S(1)(2)
R/W
0x0000
USB Receive Double
Packet Buffer Disable
Section 17.6.44
0x342
USBTXDPKTBUFDIS
R/W
0x0000
USB Transmit Double
Packet Buffer Disable
Section 17.6.45
(1)(2)
0x400
USBEPC(1)(2)
R/W
0x0000.0000
USB External Power
Control
Section 17.6.46
0x404
USBEPCRIS(1)(2)
RO
0x0000.0000
USB External Power
Control Raw Interrupt
Status
Section 17.6.47
0x408
USBEPCIM(2)(1)
R/W
0x0000.0000
USB External Power
Control Interrupt
Mask
Section 17.6.48
0x40C
USBEPCISC(1)(2)
R/W
0x0000.0000
USB External Power
Control Interrupt
Status and Clear
Section 17.6.49
0x410
USBDRRIS(1)(2)
RO
0x0000.0000
USB Device
RESUME Raw
Interrupt Status
Section 17.6.50
0x414
USBDRIM(1)(2)
R/W
0x0000.0000
USB Device
RESUME Interrupt
Mask
Section 17.6.51
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1127
Register Map
www.ti.com
Table 17-4. Universal Serial Bus (USB) Controller Register Map (continued)
Offset
Name
Type
Reset
Description
Location
0x418
USBDRISC(1)(2)
W1C
0x0000.0000
USB Device
RESUME Interrupt
Status and Clear
Section 17.6.52
0x41C
USBGPCS(1)(2)
R/W
0x0000.0000
USB GeneralPurpose Control and
Status
Section 17.6.53
0x450
USBDMASEL(1)(2)
R/W
0x0033.2211
USB DMA Select
Section 17.6.54
(1) This register is used in Device mode. Some registers are used for both Host and Device mode and may have different bit
definitions depending on the mode.
(2) This register is used in Host mode. Some registers are used for both Host and Device mode and may have different bit
definitions depending on the mode. The USB controller is in Device mode upon reset, so the reset values shown for these
registers apply to the Device mode definition.
1128
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6 Register Descriptions
17.6.1 USB Device Functional Address Register (USBFADDR), offset 0x000
The USB function address 8-bit register (USBFADDR) contains the 7-bit address of the device part of the
transaction.
When the USB controller is being used in device mode (the HOST bit in the USBDEVCTL register is
clear), this register must be written with the address received through a SET_ADDRESS command, which
is then used for decoding the function address in subsequent token packets.
Mode(s):
Device
For special considerations when writing this register, see the Setting the Device Address in
Section 17.3.1.1.4.
USBFADDR is shown in Figure 17-3 and described in Table 17-5.
Figure 17-3. Function Address Register (USBFADDR)
7
6
0
Reserved
FUNCADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-5. Function Address Register (USBFADDR) Field Descriptions
Bit
7
6-0
Field
Reserved
FUNCADDR
Value
0
0-7Fh
Description
Reserved
Function Address of Device as received through SET_ADDRESS.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1129
Register Descriptions
www.ti.com
17.6.2 USB Power Management Register (USBPOWER), offset 0x001
The power management 8-bit register (USBPOWER) is used for controlling SUSPEND and RESUME
signaling, and some basic operational aspects of the USB controller.
Mode(s):
Host
Device
USBPOWER in Host Mode is shown in Figure 17-4 and described in Table 17-6.
Figure 17-4. Power Management Register (USBPOWER) in Host Mode
7
4
3
2
1
0
Reserved
RESET
RESUME
SUSPEND
PWRDNPHY
R-0
R/W-0
R/W-0
R/W-1S
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-6. Power Management Register (USBPOWER) in Host Mode Field Descriptions
Bit
Field
7-4
Reserved
3
Value
0
RESET
2
RESET signaling.
Ends RESET signaling on the bus.
1
Enables RESET signaling on the bus.
RESUME signaling. The bit should be cleared by software 20 ms after being set.
0
Ends RESUME signaling on the bus.
1
Enables RESUME signaling when the Device is in SUSPEND mode.
SUSPEND
0
Reserved
0
RESUME
1
Description
SUSPEND mode
0
No effect
1
Enables SUSPEND mode.
PWRDNPHY
Power Down PHY
0
No effect
1
Powers down the internal USB PHY.
USBPOWER in Device Mode is shown in Figure 17-5 and described in Table 17-7.
Figure 17-5. Power Management Register (USBPOWER) in Device Mode
7
6
5
ISOUPDATE
SOFTCONN
R/W-0
R/W-0
4
3
2
1
0
Reserved
RESET
RESUME
SUSPEND
PWRDNPHY
R-0
R/W-0
R/W-0
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-7. Power Management Register (USBPOWER) in Device Mode Field Descriptions
Bit
7
6
5-4
1130
Field
Value
ISOUPDATE
Isochronous Update
0
No effect
1
The USB controller waits for an SOF token from the time the TXRDY bit is set in the USBTXCSRLn
register before sending the packet. If an IN token is received before an SOF token, then a zerolength data packet is sent.
SOFTCONN
Reserved
Description
Soft Connect/Disconnect
0
The USB D+/D- lines are tri-stated.
1
The USB D+/D- lines are enabled.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 17-7. Power Management Register (USBPOWER) in Device Mode Field Descriptions (continued)
Bit
3
2
1
0
Field
Value
RESET
Description
RESET signaling
0
Ends RESET signaling on the bus.
1
Enables RESET signaling on the bus.
RESUME
RESUME signaling. The bit should be cleared by software 10 ms (a maximum of 15 ms) after being
set.
0
Ends RESUME signaling on the bus.
1
Enables RESUME signaling when the Device is in SUSPEND mode.
SUSPEND
SUSPEND mode.
0
This bit is cleared when software reads the interrupt register or sets the RESUME bit above.
1
The USB controller is in SUSPEND mode.
PWRDNPHY
Power Down PHY
0
No effect
1
Powers down the internal USB PHY.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1131
Register Descriptions
www.ti.com
17.6.3 USB Transmit Interrupt Status Register (USBTXIS), offset 0x002
NOTE: Use caution when reading this register. Performing a read may change bit status.
The USB transmit interrupt status 16-bit read-only register (USBTXIS) indicates which interrupts are
currently active for endpoint 0 and the transmit endpoints 1–3. The meaning of the EPn bits in this register
is based on the mode of the device. The EP1 through EP3 bits always indicate that the USB controller is
sending data; however, in Host mode, the bits refer to OUT endpoints; while in Device mode, the bits refer
to IN endpoints. The EP0 bit is special in Host and Device modes and indicates that either a control IN or
control OUT endpoint has generated an interrupt.
Mode(s):
Host
Device
USBTXIS is shown in Figure 17-6 and described in Table 17-8.
Figure 17-6. USB Transmit Interrupt Status Register (USBTXIS)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
EP0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset sho
Table 17-8. USB Transmit Interrupt Status Register (USBTXIS) Field Descriptions
Bit
15-4
3
2
1
0
1132
Field
Value
Reserved
Description
Reserved
EP3
TX Endpoint 3 Interrupt
0
No interrupt
1
The Endpoint 3 transmit interrupt is asserted.
EP2
TX Endpoint 2 Interrupt
0
No interrupt
1
The Endpoint 2 transmit interrupt is asserted.
EP1
TX Endpoint 1 Interrupt
0
No interrupt
1
The Endpoint 1 transmit interrupt is asserted.
EP0
TX and RX Endpoint 0 Interrupt
0
No interrupt
1
The Endpoint 0 transmit and receive interrupt is asserted.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.4 USB Receive Interrupt Status Register (USBRXIS), offset 0x004
NOTE: Use caution when reading this register. Performing a read may change bit status.
The USB receive interrupt status 16-bit read-only register (USBRXIS) indicates which interrupts are
currently active for receive endpoints 1–3.
Note: Bits relating to endpoints that have not been configured always return 0. All active interrupts are
cleared when this register is read.
Mode(s):
Host
Device
USBRXIS is shown in Figure 17-7 and described in Table 17-9.
Figure 17-7. USB Receive Interrupt Status Register (USBRXIS)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
Rsvd
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-9. USB Receive Interrupt Status Register (USBRXIS) Field Descriptions
Bit
15-4
3
2
1
0
Field
Value
Reserved
Reserved
EP3
RX Endpoint 3 Interrupt
0
No interrupt
1
The Endpoint 3 receive interrupt is asserted.
EP2
RX Endpoint 2 Interrupt
0
No interrupt
1
The Endpoint 2 receive interrupt is asserted.
EP1
Reserved
Description
RX Endpoint 1 Interrupt
0
No interrupt
1
The Endpoint 1 receive interrupt is asserted.
0
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1133
Register Descriptions
www.ti.com
17.6.5 USB Transmit Interrupt Enable Register (USBTXIE), offset 0x006
The USB transmit interrupt enable 16-bit register (USBTXIE) provides interrupt enable bits for the
interrupts in the USBTXIS register. When a bit is set, the USB interrupt is asserted to the interrupt
controller when the corresponding interrupt bit in the USBTXIS register is set. When a bit is cleared, the
interrupt in the USBTXIS register is still set but the USB interrupt to the interrupt controller is not asserted.
On reset, all interrupts are enabled.
Mode(s):
Host
Device
USBTXIS is shown in Figure 17-8 and described in Table 17-10.
Figure 17-8. USB Transmit Interrupt Status Enable Register (USBTXIE)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
EP0
R-0
R/W-1
R/W-1
R/W-1
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-10. USB Transmit Interrupt Status Register (USBTXIE) Field Descriptions
Bit
15-4
3
Field
Value
Reserved
Reserved
EP3
Description
0
TX Endpoint 3 Interrupt Enable
The EP3 transmit interrupt is suppressed and not sent to the interrupt controller.
1
2
1
0
1134
EP2
An interrupt is sent to the interrupt controller when the EP3 bit in the USBTXIS register is set.
TX Endpoint 2 Interrupt Enable
0
The EP2 transmit interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the EP2 bit in the USBTXIS register is set.
EP1
TX Endpoint 1 Interrupt Enable
0
The EP1 transmit interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the EP1 bit in the USBTXIS register is set.
EP0
TX and RX Endpoint 0 Interrupt Enable
0
The EP0 transmit and receive interrupt is suppressed and not sent to the interupt controller.
1
An interrupt is sent to the interrupt controller when the EP0 bit in the USBTXIS register is set.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.6 USB Receive Interrupt Enable Register (USBRXIE), offset 0x008
The USB receive interrupt enable 16-bit register (USBTXIE) provides interrupt enable bits for the interrupts
in the USBRXIS register. When a bit is set, the USB interrupt is asserted to the interrupt controller when
the corresponding interrupt bit in the USBRXIS register is set. When a bit is cleared, the interrupt in the
USBRXIS register is still set but the USB interrupt to the interrupt controller is not asserted. On reset, all
interrupts are enabled.
Mode(s):
Host
Device
USBRXIE is shown in Figure 17-8 and described in Table 17-10.
Figure 17-9. USB Receive Interrupt Enable Register (USBRXIE)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
Rsvd
R-0
R/W-1
R/W-1
R/W-1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-11. USB Receive Interrupt Register (USBRXIE) Field Descriptions
Bit
15-4
3
2
1
0
Field
Value
Reserved
Reserved
EP3
RX Endpoint 3 Interrupt Enable
0
The EP3 receive interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the EP3 bit in the USBRXIS register is set.
EP2
RX Endpoint 2 Interrupt Enable
0
The EP2 receive interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the EP2 bit in the USBRXIS register is set.
EP1
Reserved
Description
RX Endpoint 1 Interrupt Enable
0
The EP1 receive interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the EP1 bit in the USBRXIS register is set.
0
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1135
Register Descriptions
www.ti.com
17.6.7 USB General Interrupt Status Register (USBIS), offset 0x00A
NOTE: Use caution when reading this register. Performing a read may change bit status.
The USB general interrupt status 8-bit read-only register (USBIS) indicates which USB interrupts are
currently active. All active interrupts are cleared when this register is read.
Mode(s):
Host
Device
USBIS in Host Mode is shown in Figure 17-10 and described in Table 17-12.
Figure 17-10. USB General Interrupt Status Register (USBIS) in Host Mode
7
6
5
4
3
2
1
0
VBUSERR
SESREQ
DISCON
CONN
SOF
BABBLE
RESUME
Reserved
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-12. USB General Interrupt Status Register (USBIS) in Host Mode Field Descriptions
Bit
7
6
5
4
3
2
1
0
1136
Field
Value
VBUSERR
VBUS Error
0
No interrupt
1
VBUS has dropped below the VBUS Valid threshold during a session.
SESREQ
Session Request
0
No interrupt
1
SESSION REQUEST signaling has been detected.
DISCON
Session Disconnect
0
No interrupt
1
A Device disconnect has been detected.
CONN
Session Connect
0
No interrupt
1
A Device connection has been detected.
SOF
Start of Frame
0
No interrupt
1
A new frame has started.
BABBLE
Babble Detected
0
No interrupt
1
Babble has been detected. This interrupt is active only after the first SOF has been sent.
RESUME
Reserved
Description
RESUME Signaling Detected. This interrupt can only be used if the USB controller's system clock is
enabled. If the user disables the clock programming, the USBDRRIS, USBDRIM, and USBDRISC
registers should be used.
0
No effect
1
RESUME signaling has been detected on the bus while the USB controller is in SUSPEND mode.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
USBIS in Device Mode is shown in Figure 17-11 and described in Table 17-13.
Figure 17-11. USB General Interrupt Status Register (USBIS) in Device Mode
7
5
4
3
2
1
0
Reserved
6
DISCON
Reserved
SOF
RESET
RESUME
SUSPEND
R-0
R-0
R-0
R-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-13. USB General Interrupt Status Register (USBIS) in Device Mode Field Descriptions
Bit
Field
7-6
Reserved
5
DISCON
4
Reserved
3
SOF
2
1
0
Value
0
Description
Reserved
Session Disconnect
0
No interrupt
1
The device has been disconnected from the host.
0
Reserved
Start of frame
0
No interrupt
1
A new frame has started.
RESET
RESET Signaling Detected
0
No interrupt
1
RESET signaling has been detected on the bus.
RESUME
RESUME Signaling Detected. This interrupt can only be used if the USB controller's system clock is
enabled. If the user disables the clock programming, the USBDRRIS, USBDRIM, and USBDRISC
registers should be used.
0
No interrupt
1
RESUME signaling has been detected on the bus while the USB controller is in SUSPEND mode.
SUSPEND
SUSPEND Signaling Detected
0
No interrupt
1
SUSPEND signaling has been detected on the bus.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1137
Register Descriptions
www.ti.com
17.6.8 USB Interrupt Enable Register (USBIE), offset 0x00B
NOTE: Use caution when reading this register. Performing a read may change bit status.
The USB interrupt enable 8-bit register (USBIE) provides interrupt enable bits for each of the interrupts in
USBIS. At reset interrupts 1 and 2 are enabled in device mode.
Mode(s):
Host
Device
USBIE in Host Mode is shown in Figure 17-12 and described in Table 17-14.
Figure 17-12. USB Interrupt Enable Register (USBIE) in Host Mode
7
6
5
4
3
2
1
0
VBUSERR
SESREQ
DISCON
CONN
SOF
BABBLE
RESUME
Reserved
R-W
R-W
R-W
R-W
R-W
R-W
R-W
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-14. USB Interrupt Enable Register (USBIE) in Host Mode Field Descriptions
Bit
7
6
5
4
3
2
1
0
1138
Field
Value
VBUSERR
Enable VBUS Error Interrupt
0
The VBUSERR interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the VBUSERR bit in the USBIS register is set.
SESREQ
Enable Session Request
0
The SESREQ interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the SESREEQ bit in the USBIS register is set.
DISCON
Enable Disconnect Interrupt
0
The DISCON interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the DISCON bit in the USBIS register is set.
CONN
Enable Connect Interrupt
0
The CONN interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the CONN bit in the USBIS register is set.
SOF
Start of Frame
0
The SOF interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the SOF bit in the USBIS register is set.
BABBLE
Babble Detected
0
The BABBLE interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the BABBLE bit in the USBIS register is set.
RESUME
Reserved
Description
RESUME Signaling Detected. This interrupt can only be used if the USB controller's system clock is
enabled. If the user disables the clock programming, the USBDRRIS, USBDRIM, and USBDRISC
registers should be used.
0
The RESUME interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the RESUME bit in the USBIS register is set.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
USBIE in Device Mode is shown in Figure 17-11 and described in Table 17-13.
Figure 17-13. USB Interrupt Enable Register (USBIE) in Device Mode
7
6
5
4
3
2
1
0
Reserved
DISCON
Reserved
SOF
RESET
RESUME
SUSPEND
R-0
R/W-0
R-0
R/W-0
R/W-1
RW-1
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-15. USB Interrupt Enable Register (USBIE) in Device Mode Field Descriptions
Bit
Field
7-6
Reserved
5
DISCON
4
Reserved
3
SOF
2
1
0
Value
0
Description
Reserved
Enable Disconnect Interrupt
0
The DISCON interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the DISCON bit in the USBIS register is set.
0
Reserved
Start of frame
0
The SOF interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the SOF bit in the USBIS register is set.
RESET
RESET Signaling Detected
0
The RESET interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the RESET bit in the USBIS register is set.
RESUME
RESUME Signaling Detected. This interrupt can only be used if the USB controller's system clock is
enabled. If the user disables the clock programming, the USBDRRIS, USBDRIM, and USBDRISC
registers should be used.
0
The RESUME interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the RESUME bit in the USBIS register is set.
SUSPEND
SUSPEND Signaling Detected
0
The SUSPEND interrupt is suppressed and not sent to the interrupt controller.
1
An interrupt is sent to the interrupt controller when the DISCON bit in the USBIS register is set.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1139
Register Descriptions
www.ti.com
17.6.9 USB Frame Value Register (USBFRAME), offset 0x00C
The frame number 16-bit read-only register (USBFRAME) holds the last received frame number.
Mode(s):
Host
Device
USBFRAME is shown in Figure 17-14 and described in Table 17-16.
Figure 17-14. Frame Number Register (FRAME)
15
11
10
0
Reserved
FRAME
R-0
R-0
LEGEND: R = Read only; -n = value after reset
Table 17-16. Frame Number Register (FRAME) Field Descriptions
Bit
Field
15-11
Reserved
10-0
FRAME
Value
0
Description
Reserved
0-7FFh Last received frame number
17.6.10 USB Endpoint Index Register (USBEPIDX), offset 0x00E
Each endpoint buffer can be accessed by configuring a FIFO size and starting address. The endpoint
index 16-bit register (USBEPIDX) is used with the USBTXFIFOSZ, USBRXFIFOSZ, USBTXFIFOADD,
and USBRXFIFOADD registers.
Mode(s):
Host
Device
USBEPIDX is shown in Figure 17-15 and described in Table 17-17.
Figure 17-15. USB Endpoint Index Register (USBEPIDX)
7
4
3
0
Reserved
EPIDX
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-17. USB Endpoint Index Register (USBEPIDX) Field Descriptions
Bit
Field
7-4
Reserved
3-0
EPIDX
1140
Value
0
0-4h
Description
Reserved
Endpoint Index. This bit field configures which endpoint is accessed when reading or writing to one of
the USB controller's indexed registers. A value of 0x0 corresponds to Endpoint 0 and a value of 0xF
corresponds to Endpoint 15.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.11 USB Test Mode Register (USBTEST), offset 0x00F
The USB test mode 8-bit register (USBTEST) is primarily used to put the USB controller into one of the
four test modes for operation described in the USB Specification 2.0 , in response to a SET FEATURE:
USBTESTMODE command. This register is not used in normal operation.
Note: Only one of these bits should be set at any time.
Mode(s):
Host
Device
USBTEST in Host Mode is shown in Figure 17-16 and described in Table 17-18.
Figure 17-16. USB Test Mode Register (USBTEST) in Host Mode
7
6
5
FORCEH
FIFOACC
FORCEFS
R/W-0
R/W1S-0
R/W-0
4
0
Reserved
R-0
LEGEND: R/W = Read/Write; W = Write only; -n = value after reset
Table 17-18. USB Test Mode Register (USBTEST) in Host Mode Field Descriptions
Bit
Field
7
Value
FORCEH
6
Force Host Mode. While in this mode, status of the bus connection may be read using the DEV
bit of the USBDEVCTL register. The operating speed is determined from the FORCEFS bit.
0
No effect
1
Forces the USB controller to enter Host mode when the SESSION bit is set, regardless of
whether the USB controller is connected to any peripheral. The state of the USB0DP and
USB0DM signals is ignored. The USB controller then remains in Host mode until the SESSION
bit is cleared, even if a Device is disconnected. If the FORCEH bit remains set, the USB
controller re-enters Host mode the next time the SESSION bit is set.
FIFOACC
5
FIFO Access
0
No effect
1
Transfers the packet in the endpoint 0 transmit FIFO to the endpoint 0 receive FIFO.
FORCEFS
4-0
Description
Force Full-Speed Mode
Reserved
0
The USB controller operates at Low Speed.
1
Forces the USB controller into Full-Speed mode upon receiving a USB RESET.
0
Reserved
USBTEST in Device Mode is shown in Figure 17-17 and described in Table 17-19.
Figure 17-17. USB Test Mode Register (USBTEST) in Device Mode
7
6
5
Reserved
FIFOACC
FORCEFS
R-0
R/W1S-0
R/W-0
4
0
Reserved
R-0
LEGEND: R/W = Read/Write; W = Write only; -n = value after reset
Table 17-19. USB Test Mode Register (USBTEST) in Device Mode Field Descriptions
Bit
Field
7
Reserved
6
FIFOACC
Value
Description
Force Host Mode. While in this mode, status of the bus connection may be read using the DEV
bit of the USBDEVCTL register. The operating speed is determined from the FORCEFS bit.
FIFO Access
0
No effect
1
Transfers the packet in the endpoint 0 transmit FIFO to the endpoint 0 receive FIFO.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1141
Register Descriptions
www.ti.com
Table 17-19. USB Test Mode Register (USBTEST) in Device Mode Field Descriptions (continued)
Bit
5
4-0
1142
Field
Value
FORCEFS
Reserved
Description
Force Full-Speed Mode
0
The USB controller operates at Low Speed.
1
Forces the USB controller into Full-Speed mode upon receiving a USB RESET.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.12 USB FIFO Endpoint n Register (USBFIFO[0]-USBFIFO[3])
NOTE: Use caution when reading these registers. Performing a read may change bit status.
The USB FIFO endpoint n 32-bit registers (USBFIFO[n]) provide an address for CPU access to the FIFOs
for each endpoint. Writing to these addresses loads data into the Transmit FIFO for the corresponding
endpoint. Reading from these addresses unloads data from the Receive FIFO for the corresponding
endpoint.
Transfers to and from FIFOs can be 8-bit, 16-bit or 32-bit as required, and any combination of accesses is
allowed provided the data accessed is contiguous. All transfers associated with one packet must be of the
same width so that the data is consistently byte-, halfword- or word-aligned. However, the last transfer
may contain fewer bytes than the previous transfers in order to complete an odd-byte or odd-word
transfer.
Depending on the size of the FIFO and the expected maximum packet size, the FIFOs support either
single-packet or double-packet buffering (see Single-Packet Buffering in Section 17.3.1.1.2). Burst writing
of multiple packets is not supported as flags must be set after each packet is written.
Following a STALL response or a transmit error on endpoint 1–3, the associated FIFO is completely
flushed.
For the specific offset for each FIFO register see Table 17-4.
Mode(s):
Host
Device
USBFIFO0-3 are shown in Figure 17-18 and described in Table 17-20.
Figure 17-18. USB FIFO Endpoint n Register (USBFIFO[n])
31
0
EPDATA
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-20. USB FIFO Endpoint n Register (USBFIFO[n]) Field Descriptions
Bit
31-0
Field
EPDATA
Reset
0x0000.0000
Description
Endpoint Data. Writing to this register loads the data into the Transmit FIFO and reading
unloads data from the Receive FIFO.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1143
Register Descriptions
www.ti.com
17.6.13 USB Device Control Register (USBDEVCTL), offset 0x060
The USB device control 8-bit register (USBDEVCTL) is used for controlling and monitoring the USB VBUS
line. If the PHY is suspended, no PHY clock is received and the VBUS is not sampled. In addition, in Host
mode, USBDEVCTL provides the status information for the current operating mode (Host or Device) of the
USB controller. If the USB controller is in Host mode, this register also indicates if a full- or low-speed
Device has been connected.
Mode(s):
Host
Device
USBDEVCTL is shown in Figure 17-19 and described in Table 17-21.
Figure 17-19. USB Device Control Register (USBDEVCTL)
7
6
5
2
1
0
DEV
FSDEV
LSDEV
4
VBUS
3
HOSTMODE
HOSTREQ
SESSION
R-1
R-0
R-0
R-0
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-21. USB Device Control Register (USBDEVCTL) Field Descriptions
Bit
Field
7
DEV
Value
Description
Device mode
0
The USB controller is operating on the OTG A side of the cable.
1
The USB controller is operating on the OTG B side of the cable.
Only valid while a session is in progress.
6
5
4-3
2
FSDEV
Full-Speed Device Detected
0
A full-speed Device has not been detected on the port.
1
A full-speed Device has been detected on the port.
LSDEV
VBUS
Low-Speed Device Detected
0
A low-speed Device has not been detected on the port.
1
A low-speed Device has been detected on the port.
0-3h
These read-only bits encode the current VBus level as follows:
0
Below Session End. VBUS is detected as under 0.5 V.
1h
Above Session End, below AValid. VBUS is detected as above 0.5 V and under 1.5 V.
2h
Above AValid, below VBusValid. VBUS is detected as above 1.5 V and below 4.75 V.
3h
Above VBusValid. VBUS is detected as above 4.75 V.
HOSTMODE
This read-only bit is set when the USB controller is acting as a Host.
0
The USB controller is acting as a Device.
1
The USB controller is acting as a Host.
Only valid while a session is in progress.
1
1144
HOSTREQ
When set, the USB controller will initiate the Host Negotiation when Suspend mode is entered. It is
cleared when Host Negotiation is completed.
0
No effect
1
Initiates the Host Negotiation when SUSPENDmode is entered.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 17-21. USB Device Control Register (USBDEVCTL) Field Descriptions (continued)
Bit
0
Field
Value
SESSION
Description
Session Start/End
When operating as a Host:
0
When cleared by software, this bit ends a session.
1
When set by software, this bit starts a session.
When operating as a Device:
0
The USB controller has ended a session. When the USB controller is in SUSPEND mode, this bit
may be cleared by software to perform a software disconnect.
1
The USB controller has started a session. When set by software, the Session Request Protocol is
initiated.
Clearing this bit when the USB controller is not suspended results in undefined behavior.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1145
Register Descriptions
www.ti.com
17.6.14 USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ), offset 0x062
The USB transmit dynamic FIFO sizing 8-bit register (USBTXFIFOSZ) allows the selected TX endpoint
FIFOs to be dynamically sized. USBEPIDX is used to configure each transmit endpoint's FIFO size.
Mode(s):
Host
Device
USBTXFIFOSZ is shown in Figure 17-20 and described in Table 17-22.
Figure 17-20. USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ)
7
5
4
3
0
Reserved
DPB
SZ
R-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-22. USB Transmit Dynamic FIFO Sizing Register (USBTXFIFOSZ) Field Descriptions
Bit
Field
7-5
Reserved
4
3-0
Value
0
DPB
Reserved
Double Packet Buffering Support
0
Single packet buffering is supported.
1
Double packet buffering is enabled.
SZ
Maximum packet size to be allowed. If DPB = 0, the FIFO also is this size; if DPB = 1, the FIFO is twice
this size. Packet size in bytes:
0h
8
1h
16
2h
32
3h
64
4h
128
5h
256
6h
512
7h
1024
8h
2048
9-Fh
1146
Description
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.15 USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ), offset 0x063
The USB receive dynamic FIFO sizing 8-bit register (USBRXFIFOSZ) allows the selected RX endpoint
FIFOs to be dynamically sized.
Mode(s):
Host
Device
USBRXFIFOSZ is shown in Figure 17-21 and described in Table 17-23.
Figure 17-21. USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ)
7
5
4
3
0
Reserved
DPB
SZ
R-0
R/W-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-23. USB Receive Dynamic FIFO Sizing Register (USBRXFIFOSZ) Field Descriptions
Bit
Field
7-5
Reserved
4
3-0
Value
0
DPB
Description
Reserved
Double Packet Buffering Support
0
Single packet buffering is supported.
1
Double packet buffering is enabled.
SZ
Maximum packet size to be allowed. If DPB = 0, the FIFO also is this size; if DPB = 1, the FIFO is twice
this size. Packet size in bytes:
0h
8
1h
16
2h
32
3h
64
4h
128
5h
256
6h
512
7h
1024
8h
2048
9-Fh
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1147
Register Descriptions
www.ti.com
17.6.16 USB Transmit FIFO Start Address Register (USBTXFIFOADD), offset 0x064
The USB transmit FIFO start address 16-bit register (USBTXFIFOADD) controls the start address of the
selected transmit endpoint FIFOs.
Mode(s):
Host
Device
USBTXFIFOADDR is shown in Figure 17-22 and described in Table 17-24.
Figure 17-22. USB Transmit FIFO Start Address Register (USBTXFIFOADDR])
15
9
8
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-24. USB Transmit FIFO Start Address Register (USBTXFIFOADDR) Field Descriptions
Bit
Field
15-9
Reserved
8-0
ADDR
Value
0
Reserved
Start Address of the endpoint FIFO in units of 8 bytes.
0h
0
1h
8
2h
16
3h
24
4h
32
5h
40
6h
48
7h
56
8h
64
..
..
1FFh
1148
Description
4095
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.17 USB Receive FIFO Start Address Register (USBRXFIFOADD), offset 0x066
The USB receive FIFO start address 16-bit register (USBRXFIFOADD) controls the start address of the
selected receive endpoint FIFOs.
Mode(s):
Host
Device
USBRXFIFOADDR is shown in Figure 17-23 and described in Table 17-25.
Figure 17-23. USB Receive FIFO Start Address Register (USBRXFIFOADDR)
15
9
8
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-25. USB Receive FIFO Start Address Register (USBRXFIFOADDR) Field Descriptions
Bit
Field
15-9
Reserved
8-0
ADDR
Value
0
Description
Reserved
Start Address of the endpoint FIFO in units of 8 bytes.
0h
0
1h
8
2h
16
3h
24
4h
32
5h
40
6h
48
7h
56
8h
64
..
..
1FFh
4095
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1149
Register Descriptions
www.ti.com
17.6.18 USB Connect Timing Register (USBCONTIM), offset 0x07A
The USB connect timing 8-bit configuration register (USBCONTIM) specifies connection and negotiation
delays.
Mode(s):
Host
Device
USBCONTIM is shown in Figure 17-24 and described in Table 17-26.
Figure 17-24. USB Connect Timing Register (USBCONTIM)
7
4
3
0
WTCON
WTID
R/W-1
R/W-1
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-26. USB Connect Timing Register (USBCONTIM) Field Descriptions
Bit
Field
7-4
WTCON
5h
The connect wait field configures the wait required to allow for the user’s connect/disconnect filter, in
units of 533.3 ns. The default corresponds to 2.667 μs.
3-0
WTID
Ch
The wait ID field configures the delay required from the enable of the ID detection to when the ID value
is valid, in units of 4.369 ms. The default corresponds to 52.43 ms.
1150
Value
Description
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.19 USB Full-Speed Last Transaction to End of Frame Timing Register (USBFSEOF),
offset 0x07D
USB full-speed last transaction to end of frame timing 8-bit configuration register (USBFSEOF) specifies
the minimum time gap allowed between the start of the last transaction and the EOF for full-speed
transactions.
Mode(s):
Host
Device
USBFSEOF is shown in Figure 17-25 and described in Table 17-27.
Figure 17-25. USB Full-Speed Last Transaction to End of Frame Timing Register (USBFSEOF)
7
0
FSEOFG
R/W-0x77
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-27. USB Full-Speed Last Transaction to End of Frame Timing Register
(USBFSEOF) Field Descriptions
Bit
Field
7-0
FSEOFG
Reset
77h
Description
The full-speed end-of-frame gap field is used during full-speed transactions to configure the gap
between the last transaction and the End-of-Frame (EOF), in units of 533.3 ns. The default corresponds
to 63.46 μs.
17.6.20 USB Low-Speed Last Transaction to End of Frame Timing Register (USBLSEOF),
offset 0x07E
The USB low-speed last transaction to end of frame timing 8-bit configuration register (USBLSEOF)
specifies the minimum time gap that is to be allowed between the start of the last transaction and the EOF
for low-speed transactions.
Mode(s):
Host
Device
USBLSEOF is shown in Figure 17-26 and described in Table 17-28.
Figure 17-26. USB Low-Speed Last Transaction to End of Frame Timing Register (USBLSEOF)
7
0
LSEOFG
R/W-0x72
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-28. USB Low-Speed Last Transaction to End of Frame Timing Register
(USBLSEOF) Field Descriptions
Bit
Field
7-0
LSEOFG
Reset
72h
Description
The low-speed end-of-frame gap field is used during low-speed transactions to set the gap between the
last transaction and the End-of-Frame (EOF), in units of 1.067 μs. The default corresponds to 121.6 μs.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1151
Register Descriptions
www.ti.com
17.6.21 USB Transmit Functional Address Endpoint n Registers (USBTXFUNCADDR[0]USBTXFUNCADDR[3])
The transmit functional address endpoint n 8-bit registers (USBTXFUNCADDR[n]) record the address of
the target function to be accessed through the associated endpoint (EPn). USBTXFUNCADDRx must be
defined for each transmit endpoint that is used.
Note: USBTXFUNCADDR0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBTXFUNCADDR[n] registers are shown in Figure 17-27 and described in Table 17-29.
Figure 17-27. USB Transmit Functional Address Endpoint n Registers (USBTXFUNCADDR[n])
7
6
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-29. USB Transmit Functional Address Endpoint n Registers
(USBTXFUNCADDR[n]) Field Descriptions
Bit
7
6-0
1152
Field
Value
Description
Reserved
0
Reserved
ADDR
0
Device Address specifies the USB bus address for the target Device.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.22 USB Transmit Hub Address Endpoint n Registers (USBTXHUBADDR[0]USBTXHUBADDR[3])
The transmit hub address endpoint n 8-bit read/write registers (USBTXHUBADDR[n]), like
USBTXHUBPORT[n], must be written only when a USB device is connected to transmit endpoint EPn via
a USB 2.0 hub. This register records the address of the USB 2.0 hub through which the target associated
with the endpoint is accessed.
Note: USBTXHUBADDR0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBTXHUBADDR[n] registers are shown in Figure 17-27 and described in Table 17-29.
Figure 17-28. USB Transmit Hub Address Endpoint n Registers (USBTXHUBADDR[n])
7
6
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-30. USB Transmit Hub Address Endpoint n Registers(USBTXHUBADDR[n])
Field Descriptions
Bit
7
6-0
Field
Value
Description
Reserved
0
Reserved
ADDR
0
Device Address specifies the USB bus address for the target Device.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1153
Register Descriptions
www.ti.com
17.6.23 USB Transmit Hub Port Endpoint n Registers (USBTXHUBPORT[0]USBTXHUBPORT[3])
The transmit hub port endpoint n 8-bit read/write registers (USBTXHUBPORT[n]), like
USBTXHUBADDR[n], must be written only when a full- or low-speed Device is connected to transmit
endpoint EPn via a USB 2.0 hub. This register records the port of the USB 2.0 hub through which the
target associated with the endpoint is accessed.
Note: USBTXHUBPORT0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBTXHUBPORTn registers are shown in Figure 17-29 and described in Table 17-31.
Figure 17-29. USB Transmit Hub Port Endpoint n Registers (USBTXHUBPORT[n])
7
6
0
Reserved
PORT
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-31. USB Transmit Hub Port Endpoint n Registers(USBTXHUBPORT[n])
Field Descriptions
Bit
7
6-0
1154
Field
Value
Description
Reserved
0
Reserved
PORT
0
Hub Port specifies the USB hub port number.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.24 USB Receive Functional Address Endpoint n Registers (USBRXFUNCADDR[1]USBRXFUNCADDR[3)
The recieve functional address endpoint n 8-bit read/write registers (USBRXFUNCADDR[n]) record the
address of the target function to be accessed through the associated endpoint (EPn).
USBRXFUNCADDRx must be defined for each receive endpoint that is used.
Note: USBTXFUNCADDR0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRXFUNCADDR[n] registers are shown in Figure 17-30 and described in Table 17-32.
Figure 17-30. USB Receive Functional Address Endpoint n Registers (USBFIFO[n])
7
6
0
Reserved
ADDR
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-32. USB Recieve Functional Address Endpoint n Registers(USBFIFO[n])
Field Descriptions
Bit
7
6-0
Field
Value
Description
Reserved
0
Reserved
ADDR
0
Device Address specifies the USB bus address for the target Device.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1155
Register Descriptions
www.ti.com
17.6.25 USB Receive Hub Address Endpoint n Registers (USBRXHUBADDR[1]USBRXHUBADDR[3)
The receive hub address endpoint n 8-bit read/write registers (USBRXHUBADDR[n]), like [n], must be
written only when a full- or low-speed Device is connected to receive endpoint EPn via a USB 2.0 hub.
Each register records the address of the USB 2.0 hub through which the target associated with the
endpoint is accessed.
Note: USBTXHUBADDR0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRXHUBADDR[n] registers are shown in Figure 17-31 and described in Table 17-33.
Figure 17-31. USB Receive Hub Address Endpoint n Registers (USBRXHUBADDR[n])
7
6
0
MULTTRAN
ADDR
R/w-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-33. USB Receive Hub Address Endpoint n Registers(USBRXHUBADDR[n])
Field Descriptions
Bit
7
6-0
1156
Field
Value
MULTTRAN
ADDR
Description
Multiple Translators
0
Clear to indicate that the hub has a single transaction translator.
1
Set to indicate that the hub has multiple transaction translators.
0
Device Address specifies the USB bus address for the target Device.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.26 USB Receive Hub Port Endpoint n Registers (USBRXHUBPORT[1]USBRXHUBPORT[3])
The receive hub port endpoint n 8-bit read/write registers (USBRXHUBPORT[n]), like
USBRXHUBADDR[n], must be written only when a full- or low-speed device is connected to receive
endpoint EPn via a USB 2.0 hub. Each register records the port of the USB 2.0 hub through which the
target associated with the endpoint is accessed.
Note: USBTXHUBPORT0 is used for both receive and transmit for endpoint 0.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRXHUBPORTn registers are shown in Figure 17-32 and described in Table 17-34.
Figure 17-32. USB Transmit Hub Port Endpoint n Registers (USBRXHUBPORT[n])
7
6
0
Reserved
PORT
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-34. USB Transmit Hub Port Endpoint n Registers(USBRXHUBPORT[n])
Field Descriptions
Bit
7
6-0
Field
Value
Description
Reserved
0
Reserved
PORT
0
Hub Port specifies the USB hub port number.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1157
Register Descriptions
www.ti.com
17.6.27 USB Maximum Transmit Data Endpoint n Registers (USBTXMAXP[1]-USBTXMAXP[3])
The USB maximum transmit data endpoint n 16-bit registers (USBTXMAXP[n]) define the maximum
amount of data that can be transferred through the selected transmit endpoint in a single operation.
Bits 10:0 define (in bytes) the maximum payload transmitted in a single transaction. The value set can be
up to 1024 bytes but is subject to the constraints placed by the USB Specification on packet sizes for bulk,
interrupt and isochronous transfers in full-speed operation.
The total amount of data represented by the value written to this register must not exceed the FIFO size
for the transmit endpoint, and must not exceed half the FIFO size if double-buffering is required.
If this register is changed after packets have been sent from the endpoint, the transmit endpoint FIFO
must be completely flushed (using the FLUSH bit in USBTXCSRLn) after writing the new value to this
register.
Note: USBTXMAXP[n] must be set to an even number of bytes for proper interrupt generation in DMA
Basic Mode.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBTXMAXP[n] registers are shown in Figure 17-33 and described in Table 17-35.
Figure 17-33. USB Maximum Transmit Data Endpoint n Registers (USBTXMAXP[n])
15
11
10
0
Reserved
MAXLOAD
R-0
R/W-000
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-35. USB Maximum Transmit Data Endpoint n Registers(USBTXMAXP[n])
Field Descriptions
Bit
Field
15-11
Reserved
10-0
MAXLOAD
1158
Value
0
Description
Reserved
Maximum Payload specifies the maximum payload in bytes per transaction.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.28 USB Control and Status Endpoint 0 Low Register (USBCSRL0), offset 0x102
The USB control and status endpoint 0 low 8-bit register (USBCSRL0) provides control and status bits for
endpoint 0.
Mode(s):
Host
Device
USBCSRL0 in Host mode is shown in Figure 17-34 and described in Table 17-36.
Figure 17-34. USB Control and Status Endpoint 0 Low Register (USBCSRL0) in Host Mode
7
6
5
4
3
2
1
0
NAKTO
STATUS
REQPKT
ERROR
SETUP
STALLED
TXRDY
RXRDY
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-36. USB Control and Status Endpoint 0 Low Register(USBCSRL0)
in Host Mode Field Descriptions
Bit
7
6
Field
Value
NAKTO
Description
NAK Timeout. Software must clear this bit to allow the endpoint to continue.
0
No timeout
1
Indicates that endpoint 0 is halted following the receipt of NAK responses for longer than the time set by
the USBNAKLMT register.
STATUS
Status Packet. Setting this bit ensures that the DT bit is set in the USBCSRH0 register so that a DATA1
packet is used for the STATUS stage transaction.
0
No transaction
1
Initiates a STATUS stage transaction. This bit must be set at the same time as the TXRDY or REQPKT
bit is set.
This bit is automatically cleared when the STATUS stage is over.
5
4
3
2
1
0
REQPKT
Request Packet. This bit is cleared when the RXRDY bit is set.
0
No request
1
Requests an IN transaction.
ERROR
Error. Software must clear this bit.
0
No error
1
Three attempts have been made to perform a transaction with no response from the peripheral. The
EP0 bit in the USBTXIS register is also set in this situation.
SETUP
Setup Packet. Setting this bit always clears the DT bit in the USBCSRH0 register to send a DATA0
packet.
0
Sends an OUT token.
1
Sends a SETUP token instead of an OUT token for the transaction. This bit should be set at the same
time as the TXRDY bit is set.
STALLED
Endpoint Stalled. Software must clear this bit.
0
No handshake has been received.
1
A STALL handshake has been received.
TXRDY
Transmit Packet Ready. If both the TXRDY and SETUP bits are set, a setup packet is sent. If just
TXRDY is set, an OUT packet is sent.
0
No transmit packet is ready.
1
Software sets this bit after loading a data packet into the TX FIFO. The EP0 bit in the USBTXIS register
is also set in this situation.
RXRDY
Receive Packet Ready. Software must clear this bit after the packet has been read from the FIFO to
acknowledge that the data has been read from the FIFO.
0
No receive packet has been received.
1
Indicates that a data packet has been received in the RX FIFO. The EP0 bit in the USBTXIS register is
also set in this situation.
USBCSRL0 in Device mode is shown in Figure 17-35 and described in Table 17-37.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1159
Register Descriptions
www.ti.com
Figure 17-35. USB Control and Status Endpoint 0 Low Register (USBCSRL0) in Device Mode
7
6
5
4
3
2
1
0
SETENDC
RXRDYC
STALL
SETEND
DATAEND
STALLED
TXRDY
RXRDY
W1C-0
W1C-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-37. USB Control and Status Endpoint 0 Low Register
(USBCSRL0) in Device Mode Field Descriptions
Bit
7
6
5
Field
Value
SETENDC
Description
Setup End Clear
0
No effect
1
Writing a 1 to this bit clears the SETEND bit.
RXRDYC
RXRDY Clear
0
No effect
1
Writing a 1 to this bit clears the RXRDY bit.
STALL
Send Stall.
0
No effect
1
Terminates the current transaction and transmits the STALL handshake.
This bit is cleared automatically after the STALL handshake is transmitted.
4
SETEND
Setup end.
0
A control transaction has not ended or ended after the DATAEND bit was set.
1
A control transaction has ended before the DATAEND bit has been set. The EP0 bit in the USBTXIS
register is also set in this situation.
This bit is cleared by writing a 1 to the SETENDC bit.
3
DATAEND
Data end.
0
No effect
1
Set this bit in the following situations:
• When setting TXRDY for the last data packet
• When clearing RXRDY after unloading the last data packet
• When setting TXRDY for a zero-length data packet
This bit is cleared automatically.
2
1
0
STALLED
Endpoint Stalled. Software must clear this bit.
0
A STALL handshake has not been transmitted.
1
A STALL handshake has been transmitted.
TXRDY
Transmit Packet Ready. If both the TXRDY and SETUP bits are set, a setup packet is sent. If just
TXRDY is set, an OUT packet is sent.
0
No transmit packet is ready.
1
Software sets this bit after loading an IN data packet into the TX FIFO. The EP0 bit in the USBTXIS
register is also set in this situation.
RXRDY
Receive Packet Ready.
0
No receive packet has been received.
1
A data packet has been received. The EP0 bit in the USBTXIS register is also set in this situation.
This bit is cleared by writing a 1 to the RXRDYC bit.
1160
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.29 USB Control and Status Endpoint 0 High Register (USBCSRH0), offset 0x103
The USB control and status endpoint 0 high 8-bit register (USBCSRH0) provides control and status bits
for endpoint 0.
Mode(s):
Host
Device
USBCSRH0 in Host mode is shown in Figure 17-36 and described in Table 17-38.
Figure 17-36. USB Control and Status Endpoint 0 High Register (USBCSRH0) in Host Mode
7
3
2
1
0
Reserved
DTWE
DT
FLUSH
R-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-38. USB Control and Status Endpoint 0 High Register (USBCSRH0) in Host Mode Field
Descriptions
Bit
Field
7-3
Reserved
2
Value
0
DTWE
1
Description
Reserved
Data Toggle Write Enable. This bit is automatically cleared once the new value is written.
0
The DT bit cannot be written.
1
Enables the current state of the endpoint 0 data toggle to be written (see DT bit).
DT
Data Toggle. When read, this bit indicates the current state of the endpoint 0 data toggle.
If DTWE is set, this bit may be written with the required setting of the data toggle. If DTWE is Low, this
bit cannot be written. Care should be taken when writing to this bit as it should only be changed to
RESET USB endpoint 0.
0
FLUSH
Flush FIFO. This bit is automatically cleared after the flush is performed.
0
No effect
1
Flushes the next packet to be transmitted/read from the endpoint 0 FIFO. The FIFO pointer is reset and
the TXRDY/RXRDY bit is cleared.
Note: This bit should only be set when TXRDY/RXRDY is set. At other times, it may cause data to be
corrupted.
USBCSRH0 in Device mode is shown in Figure 17-37 and described in Table 17-39.
Figure 17-37. USB Control and Status Endpoint 0 High Register (USBCSRH0) in Device Mode
7
1
0
Reserved
FLUSH
R-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-39. USB Control and Status Endpoint 0 High Register (USBCSRH0) in Device Mode Field
Descriptions
Bit
Field
7-1
Reserved
0
Value
0
FLUSH
Description
Reserved
Flush FIFO. This bit is automatically cleared after the flush is performed.
0
No effect
1
Flushes the next packet to be transmitted/read from the endpoint 0 FIFO. The FIFO pointer is reset and
the TXRDY/RXRDY bit is cleared.
Note: This bit should only be set when TXRDY/RXRDY is set. At other times, it may cause data to be
corrupted.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1161
Register Descriptions
www.ti.com
17.6.30 USB Receive Byte Count Endpoint 0 Register (USBCOUNT0), offset 0x108
The USB receive byte count endpoint 0 8-bit read-only register (USBCOUNT0) indicates the number of
received data bytes in the endpoint 0 FIFO. The value returned changes as the contents of the FIFO
change and is only valid while the RXRDY bit is set.
Mode(s):
Host
Device
USBCOUNT0 is shown in Figure 17-38 and described in Table 17-29.
Figure 17-38. USB Receive Byte Count Endpoint 0 Register (USBCOUNT0)
7
6
0
Reserved
COUNT
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-40. USB Receive Byte Count Endpoint 0 Register (USBCOUNT0) Field Descriptions
Bit
Field
7
6-0
Value
Description
Reserved
0
Reserved
COUNT
0
FIFO Count. COUNT is a read-only value that indicates the number of received data bytes in the
endpoint 0 FIFO.
17.6.31 USB Type Endpoint 0 Register (USBTYPE0), offset 0x10A
The USB type endpoint 0 8-bit register (USBTYPE0) must be written with the operating speed of the
targeted Device being communicated with using endpoint 0.
Mode(s):
Host
USBTYPE0 is shown in Figure 17-39 and described in Table 17-41.
Figure 17-39. USB Type Endpoint 0 Register (USBTYPE0)
7
6
5
0
SPEED
Reserved
R/W-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-41. USB Type Endpoint 0 Register (USBTYPE0) Field Descriptions
Bit
Field
7-6
SPEED
Value
0
0-1h
5-0
1162
Reserved
Description
Operating Speed specifies the operating speed of the target Device. If selected, the target is assumed
to have the same connection speed as the USB controller.
Reserved
2h
Full
3h
Low
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.32 USB NAK Limit Register (USBNAKLMT), offset 0x10B
The USB NAK limit 8-bit read-only register (USBNAKLMT) sets the number of frames after which endpoint
0 should time out on receiving a stream of NAK responses. (Equivalent settings for other endpoints can be
made through their USBTXINTERVAL[n] and USBRXINTERVAL[n] registers.)
The number of frames selected is 2(m-1) (where m is the value set in the register, with valid values of
2–16). If the Host receives NAK responses from the target for more frames than the number represented
by the limit set in this register, the endpoint is halted.
Note: A value of 0 or 1 disables the NAK timeout function.
Mode(s):
Host
USBNAKLMT is shown in Figure 17-40 and described in Table 17-42.
Figure 17-40. USB NAK Limit Register (USBNAKLMT)
7
5
4
0
Reserved
NAKLMT
R-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-42. USB NAK Limit Register (USBNAKLMT) Field Descriptions
Bit
Field
7-5
Reserved
Value
0
Description
Reserved
4-0
NAKLMT
0
EP0 NAK Limit specifies the number of frames after receiving a stream of NAK responses.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1163
Register Descriptions
www.ti.com
17.6.33 USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[1]USBTXCSRL[3)
The USB transmit control and status endpoint n low 8-bit registers (USBTXCSRL[n]) provide control and
status bits for transfers through the currently selected transmit endpoint.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBTXCSRL[n] registers in Host Mode are shown in Figure 17-41 and described in Table 17-43.
Figure 17-41. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n]) in Host
Mode
7
6
5
4
3
2
1
0
NAKTO
CLRDT
STALLED
SETUP
FLUSH
ERROR
FIFONE
TXRDY
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-43. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n])
in Host Mode Field Descriptions
Bit
7
6
5
4
Field
Value
NAKTO
Description
NAK Timeout. Software must clear this bit to allow the endpoint to continue.
0
No timeout
1
Bulk endpoints only: Indicates that the transmit endpoint is halted following the receipt of NAK
responses for longer than the time set by the NAKLMT field in the USBTXINTERVAL[n] register.
CLRDT
Clear DataToggle
0
No effect
1
Writing a 1 to this bit clears the DT bit in the USBTXCSRH[n] register.
STALLED
Endpoint Stalled. Software must clear this bit.
0
A STALL handshake has not been received
1
Indicates that a STALL handshake has been received. When this bit is set, any DMA request that is in
progress is stopped, the FIFO is completely flushed, and the TXRDY bit is cleared.
SETUP
Setup Packet.
0
No SETUP token is sent.
1
Sends a SETUP token instead of an OUT token for the transaction. This bit should be set at the same
time as the TXRDY bit is set.
Note: Setting this bit also clears the DT bit in the USBTXCSRH[n] register.
3
FLUSH
Flush FIFO. This bit can be set simultaneously with the TXRDY bit to abort the packet that is currently
being loaded into the FIFO. Note that if the FIFO is double-buffered, FLUSH may have to be set twice
to completely clear the FIFO.
0
No effect
1
Flushes the latest packet from the endpoint transmit FIFO. The FIFO pointer is reset and the TXRDY bit
is cleared. The EPn bit in the USBTXIS register is also set in this situation.
Note: This bit should only be set when the TXRDY bit is set. At other times, it may cause data to be
corrupted.
2
ERROR
Error. Software must clear this bit.
0
No error
1
Three attempts have been made to send a packet and no handshake packet has been received. The
TXRDY bit is cleared, the EPn bit in the USBTXIS register is set, and the FIFO is completely flushed in
this situation.
Note: This bit is valid only when the endpoint is operating in Bulk or Interrupt mode.
1
1164
FIFONE
FIFO Not Empty
0
The FIFO is empty
1
At least one packet is in the transmit FIFO.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 17-43. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n])
in Host Mode Field Descriptions (continued)
Bit
Field
0
Value
TXRDY
Description
Transmit Packet Ready.
This bit is cleared automatically when a data packet has been transmitted. The EPn bit in the USBTXIS
register is also set at this point. TXRDY is also automatically cleared prior to loading a second packet
into a double-buffered FIFO.
0
No transmit packet is ready.
1
Software sets this bit after loading a data packet into the TX FIFO.
The USBTXCSRL[n] registers in Device Mode are shown in Table 17-43 and described in Figure 17-42.
Figure 17-42. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n])
in Device Mode
7
6
5
4
3
2
1
0
Reserved
CLRDT
STALLED
STALL
FLUSH
UNDRN
FIFONE
TXRDY
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-44. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n])
in Device Mode Field Descriptions
Bit
Field
7
Reserved
6
CLRDT
5
4
3
Value
0
Description
Reserved
Clear Data Toggle
0
No effect
1
Writing a 1 to this bit clears the DT bit in the USBTXCSRH[n] register.
STALLED
Endpoint Stalled. Software must clear this bit.
0
A STALL handshake has not been transmitted.
1
A STALL handshake has been transmitted. The FIFO is flushed and the TXRDY bit is cleared.
STALL
Send Stall. Software clears this bit to terminate the STALL condition.
Note: This bit has no effect in isochronous transfers.
0
No effect
1
Issues a STALL handshake to an IN token.
FLUSH
Flush FIFO. This bit may be set simultaneously with the TXRDY bit to abort the packet that is currently
being loaded into the FIFO. Note that if the FIFO is double-buffered, FLUSH may have to be set twice
to completely clear the FIFO.
Note: This bit should only be set when the TXRDY bit is set. At other times, it may cause data to be
corrupted.
0
No effect
1
Flushes the latest packet from the endpoint transmit FIFO. The FIFO pointer is reset and the TXRDY bit
is cleared. The EPn bit in the USBTXIS register is also set in this situation.
This bit is cleared automatically.
2
1
UNDRN
Underrun. Software must clear this bit.
0
No underrun
1
An IN token has been received when TXRDY is not set.
FIFONE
FIFO Not Empty
0
The FIFO is empty.
1
At least one packet is in the transmit FIFO.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1165
Register Descriptions
www.ti.com
Table 17-44. USB Transmit Control and Status Endpoint n Low Register (USBTXCSRL[n])
in Device Mode Field Descriptions (continued)
Bit
0
Field
Value
TXRDY
Description
Transmit Packet Ready.
This bit is cleared automatically when a data packet has been transmitted. The EPn bit in the USBTXIS
register is also set at this point. TXRDY is also automatically cleared prior to loading a second packet
into a double-buffered FIFO.
0
No transmit packet is ready.
1
Software sets this bit after loading a data packet into the TX FIFO.
This bit is cleared by writing a 1 to the RXRDYC bit.
1166
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.34 USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[1]USBTXCSRH[3])
The USB transmit control and status endpoint n high 8-bit registers (USBTXCSRH[n]) provide additional
control for transfers through the currently selected transmit endpoint.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBTXCSRH[n] registers in Host Mode are shown in Figure 17-43 and described in Table 17-45.
Figure 17-43. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n])
in Host Mode
7
6
5
4
3
2
1
0
AUTOSET
Reserved
MODE
DMAEN
FDT
DMAMOD
DTWE
DT
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-45. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n])
in Host Mode Field Descriptions
Bit
7
Field
AUTOSET
6
Reserved
5
MODE
4
3
Value
Description
Auto Set
0
The TXRDY bit must be set manually.
1
Enables the TXRDY bit to be automatically set when data of the maximum packet size (value in
USBTXMAXP[n]) is loaded into the transmit FIFO. If a packet of less than the maximum packet size is
loaded, then the TXRDY bit must be set manually.
0
Reserved
Mode
Note: This bit only has an effect when the same endpoint FIFO is used for both transmit and receive
transactions.
0
Enables the endpoint direction as RX.
1
Enables the endpoint direction as TX.
DMAEN
DMA Request Enable
Note: Three TX and three /RX endpoints can be connected to the DMA module. If this bit is set for a
particular endpoint, the DMAATX, DMABTX, or DMACTX field in the USB DMA Select (USBDMASEL)
register must be programmed correspondingly.
0
Disables the DMA request for the transmit endpoint.
1
Enables the DMA request for the transmit endpoint.
FDT
Force Data Toggle
0
No effect
1
Forces the endpoint DT bit to switch and the data packet to be cleared from the FIFO, regardless of
whether an ACK was received. This bit can be used by interrupt transmit endpoints that are used to
communicate rate feedback for isochronous endpoints.
Note: This bit should only be set when the TXRDY bit is set. At other times, it may cause data to be
corrupted.
2
DMAMOD
DMA Request Mode
Note: This bit must not be cleared either before or in the same cycle as the above DMAEN bit is
cleared.
0
An interrupt is generated after every DMA packet transfer.
1
An interrupt is generated only after the entire DMA transfer is complete.
Note: This bit is valid only when the endpoint is operating in Bulk or Interrupt mode.
1
DTWE
Data Toggle Write Enable. This bit is automatically cleared once the new value is written.
0
The DT bit cannot be written.
1
Enables the current state of the transmit endpoint data to be written (see DT bit).
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1167
Register Descriptions
www.ti.com
Table 17-45. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n])
in Host Mode Field Descriptions (continued)
Bit
Field
0
Value
DT
Description
Data Toggle. When read, this bit indicates the current state of the transmit endpoint data toggle.
If DTWE is High, this bit can be written with the required setting of the data toggle. If DTWE is Low, any
value written to this bit is ignored. Care should be taken when writing to this bit as it should only be
changed to RESET the transmit endpoint.
The USBTXCSRH[n] registers in Device Mode are shown in Figure 17-44 and described in Table 17-46.
Figure 17-44. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n])
in Device Mode
7
6
5
4
3
2
AUTOSET
ISO
MODE
DMAEN
FDT
DMAMOD
1
Reserved
0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-46. USB Transmit Control and Status Endpoint n High Register (USBTXCSRH[n])
in Device Mode Field Descriptions
Bit
7
6
5
4
3
2
0
1168
Field
Value
AUTOSET
Auto Set
0
The TXRDY bit must be set manually.
1
Enables the TXRDY bit to be automatically set when data of the maximum packet size (value in
USBTXMAXP[n]) is loaded into the transmit FIFO. If a packet of less than the maximum packet size is
loaded, then the TXRDY bit must be set manually.
ISO
Isochronous Transfers
0
Enables the transmit endpoint for bulk or interrupt transfers.
1
Enables the transmit endpoint for isochronous transfers.
MODE
Mode
Note: This bit only has an effect when the same endpoint FIFO is used for both transmit and receive
transactions.
0
Enables the endpoint direction as RX.
1
Enables the endpoint direction as TX.
DMAEN
DMA Request Enable
Note: Three TX and three /RX endpoints can be connected to the DMA module. If this bit is set for a
particular endpoint, the DMAATX, DMABTX, or DMACTX field in the USB DMA Select (USBDMASEL)
register must be programmed correspondingly.
0
Disables the DMA request for the transmit endpoint.
1
Enables the DMA request for the transmit endpoint.
FDT
Force Data Toggle
0
No effect
1
Forces the endpoint DT bit to switch and the data packet to be cleared from the FIFO, regardless of
whether an ACK was received. This bit can be used by interrupt transmit endpoints that are used to
communicate rate feedback for isochronous endpoints.
DMAMOD
Reserved
Description
DMA Request Mode
Note: This bit must not be cleared either before or in the same cycle as the above DMAEN bit is
cleared.
0
An interrupt is generated after every DMA packet transfer.
1
An interrupt is generated only after the entire DMA transfer is complete.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.35 USB Maximum Receive Data Endpoint n Registers (USBRXMAXP[1]-USBRXMAXP[3])
The USB maximum receive data endpoint n 16-bit registers (USBRXMAXP[n]) define the maximum
amount of data that can be transferred through the selected receive endpoint in a single operation.
Bits 10:0 define (in bytes) the maximum payload transmitted in a single transaction. The value set can be
up to 1024 bytes but is subject to the constraints placed by the USB Specification on packet sizes for bulk,
interrupt and isochronous transfers in full-speed operation.
The total amount of data represented by the value written to this register must not exceed the FIFO size
for the transmit endpoint, and must not exceed half the FIFO size if double-buffering is required.
Note: USBRXMAXP[n] must be set to an even number of bytes for proper interrupt generation in DMA
Basic Mode.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBRXMAXP[n] registers are shown in Figure 17-45 and described in Table 17-47.
Figure 17-45. USB Maximum Receive Data Endpoint n Registers (USBRXMAXP[n])
15
11
10
0
Reserved
MAXLOAD
R-0
R/W-000
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-47. USB Maximum Receive Data Endpoint n Registers (USBTXMAXP[n]) Field
Descriptions
Bit
Field
15-11
Reserved
10-0
MAXLOAD
Value
0
Description
Reserved
Maximum Payload specifies the maximum payload in bytes per transaction.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1169
Register Descriptions
www.ti.com
17.6.36 USB Receive Control and Status Endpoint n Low Register (USBRXCSRL[1]USBRXCSRL[3)
The USB receive control and status endpoint n low 8-bit register (USBCSRL[n]) provides control and
status bits for transfers through the currently selected receive endpoint.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBCSRL[n] registers in Host mode are shown in Figure 17-46 and described in Table 17-48.
Figure 17-46. USB Receive Control and Status Endpoint n Low Register (USBCSRL[n])
in Host Mode
7
6
5
4
3
2
1
0
CLRDT
STALLED
REQPKT
FLUSH
DATAERR /
NAKTO
ERROR
FULL
RXRDY
W1C-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-48. USB Control and Status Endpoint n Low Register(USBCSRL[n])
in Host Mode Field Descriptions
Bit
7
6
5
4
3
2
1
1170
Field
Value
NAKTO
Clear Data Toggle.
0
No effect
1
Writing a 1 to this bit clears the DT bit in the USBRXCSRH[n] register.
STALLED
Endpoint Stalled. Software must clear this bit.
0
No handshake has been received.
1
A STALL handshake has been received. The EPn bit in the USBRXIS register is also set.
REQPKT
Request Packet. This bit is cleared when the RXRDY bit is set.
0
No request
1
Requests an IN transaction.
FLUSH
DATAERR /
NAKTO
Description
Flush FIFO. If the FIFO is double-buffered, FLUSH may have to be set twice to completely clear the
FIFO.
Note:This bit should only be set when the RXRDY bit is set. At other times, it may cause data to be
corrupted.
0
No effect
1
Flushes the next packet to be read from the endpoint receive FIFO. The FIFO pointer is reset and the
RXRDY bit is cleared.
Data Error / NAK Timeout
0
Normal operation
1
Isochronous endpoints only: Indicates that RXRDY is set and the data packet has a CRC or bit-stuff
error. This bit is cleared when RXRDY is cleared.
Bulk endpoints only: Indicates that the receive endpoint is halted following the receipt of NAK responses
for longer than the time set by the NAKLMT field in the USBRXINTERVAL[n] register. Software must
clear this bit to allow the endpoint to continue.
ERROR
Error. Software must clear this bit.
Note: This bit is only valid when the receive endpoint is operating in Bulk or Interrupt mode. In
Isochronous mode, it always returns zero.
0
No error
1
Three attempts have been made to receive a packet and no data packet has been received. The EPn
bit in the USBRXIS register is set in this situation.
FULL
FIFO Full
0
The receive FIFO is not full.
1
No more packets can be loaded into the receive FIFO.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 17-48. USB Control and Status Endpoint n Low Register(USBCSRL[n])
in Host Mode Field Descriptions (continued)
Bit
Field
0
Value
RXRDY
Description
Receive Packet Ready.
If the AUTOCLR bit in the USBRXCSRH[n] register is set, then the this bit is automatically cleared when
a packet of USBRXMAXP[n] bytes has been unloaded from the receive FIFO. If the AUTOCLR bit is
clear, or if packets of less than the maximum packet size are unloaded, then software must clear this bit
manually when the packet has been unloaded from the receive FIFO.
0
No data packet has been received.
1
Indicates that a data packet has been received. The EPn bit in the USBTXIS register is also set in this
situation.
USBCSRL0 in Device mode is shown in Figure 17-47 and described in Table 17-49.
Figure 17-47. USB Control and Status Endpoint n Low Register (USBCSRL[n])
in Device Mode
7
6
5
4
3
2
1
0
CLRDT
STALLED
STALL
FLUSH
DATAERR
OVER
FULL
RXRDY
W1C-0
W1C-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-49. USB Control and Status Endpoint 0 Low Register(USBCSRL[n])
in Device Mode Field Descriptions
Bit
7
6
5
4
Field
Value
CLRDT
Description
Clear Data Toggle
0
No effect
1
Writing a 1 to this bit clears the DT bit in the USBRXCSRH[n] register.
STALLED
Endpoint Stalled. Software must clear this bit.
0
A STALL handshake has been transmitted.
1
A STALL handshake has been transmitted.
STALL
Send Stall. Software must clear this bit to terminate the STALL condition.
Note: This bit has no effect where the endpoint is being used for isochronous transfers.
0
No effect
1
Issues a STALL handshake.
FLUSH
Flush FIFO. The CPU writes a 1 to this bit to flush the next packet to be read from the endpoint receive
FIFO. The FIFO pointer is reset and the RXRDY bit is cleared. Note that if the FIFO is double-buffered,
FLUSH may have to be set twice to completely clear the FIFO.
0
No effect
1
Flushes the next packet from the endpoint receive FIFO. The FIFO pointer is reset and the RXRDY bit
is cleared.
Note: This bit should only be set when the RXRDY bit is set. At other times, it may cause data to be
corrupted.
3
DATAEND
Data error. This bit is cleared when RXRDY is cleared.
Note: This bit is only valid when the endpoint is operating in Isochronous mode. In Bulk mode, it always
returns zero.
0
Normal operation
1
Indicates that RXRDY is set and the data packet has a CRC or bit-stuff error.
This bit is cleared automatically.
2
OVER
Overrun. Software must clear this bit.
Note: This bit is only valid when the endpoint is operating in Isochronous mode. In Bulk mode, it always
returns zero.
0
No overrun error
1
Indicates an OUT packet cannot be loaded into the receive FIFO.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1171
Register Descriptions
www.ti.com
Table 17-49. USB Control and Status Endpoint 0 Low Register(USBCSRL[n])
in Device Mode Field Descriptions (continued)
Bit
Field
1
FULL
0
Value
Description
FIFO Full
0
The receive FIFO is not full.
1
No more packets can be loaded into the receive FIFO.
RXRDY
Receive Packet Ready.
If the AUTOCLR bit in the USBRXCSRH[n] register is set, then the this bit is automatically cleared when
a packet of USBRXMAXP[n] bytes has been unloaded from the receive FIFO. If the AUTOCLR bit is
clear, or if packets of less than the maximum packet size are unloaded, then software must clear this bit
manually when the packet has been unloaded from the receive FIFO.
0
No data packet has been received.
1
A data packet has been received. The EPn bit in the USBTXIS register is also set in this situation.
This bit is cleared by writing a 1 to the RXRDYC bit.
1172
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.37 USB Receive Control and Status Endpoint n High Register (USBRXCSRH[1]USBRXCSRH[3])
The USB receive control and status endpoint n high 8-bit register (USBCSRL[n]) provides additional
control and status bits for transfers through the currently selected receive endpoint.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBCSRH[n] registers in OTG A/Host mode are shown in Figure 17-48 and described in Table 1750.
Figure 17-48. USB Receive Control and Status Endpoint n High Register (USBCSRH[n]) in Host
Mode
7
6
5
4
3
2
1
0
AUTOCL
AUTORQ
DMAEN
PIDERR
DMAMOD
DTWE
DT
Reserved
W1C-0
R/W-0
R/W-0
R-0
R/W-0
R-0
R-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-50. USB Control and Status Endpoint n High Register (USBCSRH[n])
in Host Mode Field Descriptions
Bit
7
6
5
4
3
2
Field
Value
AUTOCL
Auto Clear
0
No effect
1
Enables the RXRDY bit to be automatically cleared when a packet of USBRXMAXP[n] bytes has been
unloaded from the receive FIFO. When packets of less than the maximum packet size are unloaded,
RXRDY must be cleared manually. Care must be taken when using DMA to unload the receive FIFO as
data is read from the receive FIFO in 4-byte chunks regardless of the value of the MAXLOAD field in
the USBRXMAXP[n] register, see Section 17.3.3.
AUTORQ
Auto Request
Note: This bit is automatically cleared when a short packet is received.
0
No effect
1
Enables the REQPKT bit to be automatically set when the RXRDY bit is cleared.
DMAEN
DMA Request Enable
Note: Three TX and three RX endpoints can be connected to the DMA module. If this bit is set for a
particular endpoint, the DMAARX, DMABRX, or DMACRX field in the USB DMA Select (USBDMASEL)
register must be programmed correspondingly.
0
Disables the DMA request for the receive endpoint.
1
Enables the DMA request for the receive endpoint.
PIDERR
PID Error. This bit is ignored in bulk or interrupt transactions.
0
No error
1
Indicates a PID error in the received packet of an isochronous transaction.
DMAMOD
DMAMOD
Note: This bit must not be cleared either before or in the same cycle as the above DMAEN bit is
cleared.
0
An interrupt is generated after every DMA packet transfer.
1
An interrupt is generated only after the entire DMA transfer is complete.
DTWE
1
DT
0
Reserved
Description
Data Toggle Write Enable. This bit is automatically cleared once the new value is written.
0
The DT bit cannot be written.
1
Enables the current state of the receive endpoint data to be written (see DT bit).
Data Toggle. When read, this bit indicates the current state of the receive data toggle.
If DTWE is High, this bit may be written with the required setting of the data toggle. If DTWE is Low, any
value written to this bit is ignored. Care should be taken when writing to this bit as it should only be
changed to RESET the receive endpoint.
0
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1173
Register Descriptions
www.ti.com
The USBCSRH[n] registers in Device mode are shown in Figure 17-49 and described in Table 17-51.
Figure 17-49. USB Control and Status Endpoint n High Register (USBCSRH[n]) in Device Mode
7
6
5
4
3
AUTOCL
ISO
DMAEN
DISNYET /
PIDERR
DMAMOD
2
Reserved
0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-51. USB Control and Status Endpoint 0 High Register(USBCSRH[n])
in Device Mode Field Descriptions
Bit
7
6
5
4
Field
Value
AUTOCL
Auto Clear
0
No effect
1
Enables the RXRDY bit to be automatically cleared when a packet of USBRXMAXP[n] bytes has been
unloaded from the receive FIFO. When packets of less than the maximum packet size are unloaded,
RXRDY must be cleared manually. Care must be taken when using DMA to unload the receive FIFO as
data is read from the receive FIFO in 4-byte chunks regardless of the value of the MAXLOAD field in
the USBRXMAXP[n] register, see Section 17.3.3.
ISO
Isochronous Transfers
0
Enables the receive endpoint for isochronous transfers.
1
Enables the receive endpoint for bulk/interrupt transfers.
DMAEN
DISNYET/PI
DERR
Description
DMA Request Enable
Note: Three TX and three RX endpoints can be connected to the DMA module. If this bit is set for a
particular endpoint, the DMAARX, DMABRX, or DMACRX field in the USB DMA Select (USBDMASEL)
register must be programmed correspondingly.
0
Disables the DMA request for the receive endpoint.
1
Enables the DMA request for the receive endpoint.
Disable NYET / PID Error
0
No effect
1
For bulk or interrupt transactions: Disables the sending of NYET handshakes. When this bit is set, all
successfully received packets are acknowledged, including at the point at which the FIFO becomes full.
For isochronous transactions: Indicates a PID error in the received packet.
3
0
1174
DMAMOD
Reserved
DMA Request Mode
Note: This bit must not be cleared either before or in the same cycle as the above DMAEN bit is
cleared.
0
An interrupt is generated after every DMA packet transfer.
1
An interrupt is generated only after the entire DMA transfer is complete.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.38 USB Receive Byte Count Endpoint n Registers (USBRXCOUNT[1]-USBRXCOUNT[3)
The USB receive byte count endpoint n 16-bit read-only registers hold the number of data bytes in the
packet currently in line to be read from the receive FIFO. If the packet is transmitted as multiple bulk
packets, the number given is for the combined packet.
Note: The value returned changes as the FIFO is unloaded and is only valid while the RXRDY bit in the
USBRXCSRLn register is set.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
Device
The USBRXCOUNT[n] registers are shown in Figure 17-50 and described in Table 17-52.
Figure 17-50. USB Maximum Receive Data Endpoint n Registers (USBRXCOUNT[n])
15
13
12
0
Reserved
COUNT
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-52. USB Maximum Receive Data Endpoint n Registers (USBRXCOUNT[n])
Field Descriptions
Bit
Field
15-13
Reserved
12-0
COUNT
Value
0
Description
Reserved
Receive Packet Count indicates the number of bytes in the receive packet.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1175
Register Descriptions
www.ti.com
17.6.39 USB Host Transmit Configure Type Endpoint n Register (USBTXTYPE[1]USBTXTYPE[3])
The USB host transmit configure type endpoint n 8-bit registers (USBTXTYPE[n]) must be written with the
endpoint number to be targeted by the endpoint, the transaction protocol to use for the currently selected
transmit endpoint, and its operating speed.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBTXTYPE[n] registers are shown in Figure 17-51 and described in Table 17-53.
Figure 17-51. USB Host Transmit Configure Type Endpoint n Register (USBTXTYPE[n])
7
6
5
4
3
0
SPEED
PROTO
TEP
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-53. USB Host Transmit Configure Type Endpoint n Register(USBTXTYPE[n])
Field Descriptions
Bit
Field
7-6
SPEED
5-4
3-0
1176
Value
Operating Speed. This bit field specifies the operating speed of the target Device:
0h
Default. The target is assumed to be using the same connection speed as the USB controller.
1h
Reserved
2h
Full
3h
Low
PROTO
TEP
Description
Protocol. Software must configure this bit field to select the required protocol for the transmit endpoint:
0h
Control
1h
Isochronous
2h
Bulk
3h
Interrupt
0
Target Endpoint Number. Software must configure this value to the endpoint number contained in the
transmit endpoint descriptor returned to the USB controller during Device enumeration.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.40 USB Host Transmit Interval Endpoint n Register
(USBTXINTERVAL[1]USBTXINTERVAL[3])
The USB host transmit interval endpoint n 8-bit registers (USBTXINTERVAL[n]), for interrupt and
isochronous transfers, define the polling interval for the currently selected transmit endpoint. For bulk
endpoints, this register defines the number of frames after which the endpoint should time out on receiving
a stream of NAK responses.
The USBTXINTERVAL[n] registers values define a number of frames, as follows:
Table 17-54. USBTXINTERVAL[n] Frame Numbers
Transfer Type
Speed
Valid Values (m)
Low-speed or Full-speed
0x01-0xFF
The polling interval is m frames.
Isochronous
Full-speed
0x01-0x10
The polling interval is 2(m-1) frames.
Bulk
Full-speed
0x02-0x10
The NAK Limit is 2(m-1) frames. A value of 0 or 1
disables the NAK timeout function.
Interrupt
Interpretation
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBTXINTERVAL[n] registers are shown in Figure 17-51 and described in Table 17-53.
Figure 17-52. USB Host Transmit Interval Endpoint n Register (USBTXINTERVAL[n])
7
0
TXPOLL / NAKLMT
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-55. USB Host Transmit Interval Endpoint n Register(USBTXINTERVAL[n])
Field Descriptions
Bit
Field
7-0
TXPOLL /
NAKLMT
Value
0
Description
TX Polling / NAK Limit The polling interval for interrupt/isochronous transfers; the NAK limit for bulk
transfers. See Table 17-54 for valid entries; other values are reserved.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1177
Register Descriptions
www.ti.com
17.6.41 USB Host Configure Receive Type Endpoint n Register (USBRXTYPE[1]USBRXTYPE[3])
The USB host configure receive type endpoint n 8-bit registers (USBRXTYPE[n]) must be written with the
endpoint number to be targeted by the endpoint, the transaction protocol to use for the currently selected
receive endpoint, and its operating speed.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRXTYPE[n] registers are shown in Figure 17-53 and described in Table 17-56.
Figure 17-53. USB Host Configure Receive Type Endpoint n Register (USBRXTYPE[n])
7
6
5
4
3
0
SPEED
PROTO
TEP
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-56. USB Host Configure Receive Type Endpoint n Register(USBRXTYPE[n])
Field Descriptions
Bit
Field
7-6
SPEED
5-4
3-0
1178
Value
Operating Speed. This bit field specifies the operating speed of the target Device:
0h
Default. The target is assumed to be using the same connection speed as the USB controller.
1h
Reserved
2h
Full
3h
Low
PROTO
TEP
Description
Protocol. Software must configure this bit field to select the required protocol for the receive endpoint:
0h
Control
1h
Isochronous
2h
Bulk
3h
Interrupt
0
Target Endpoint Number. Software must configure this value to the endpoint number contained in the
transmit endpoint descriptor returned to the USB controller during Device enumeration.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.42 USB Host Receive Polling Interval Endpoint n Register (USBRXINTERVAL[1]USBRXINTERVAL[3])
The USB host receive polling interval endpoint n 8-bit registers (USBRXINTERVAL[n]), for interrupt and
isochronous transfers, define the polling interval for the currently selected transmit endpoint. For bulk
endpoints, this register defines the number of frames after which the endpoint should time out on receiving
a stream of NAK responses.
The USBRXINTERVAL[n] registers values define a number of frames, as follows:
Table 17-57. USBRXINTERVAL[n] Frame Numbers
Transfer Type
Speed
Valid Values (m)
Low-speed or Full-speed
0x01-0xFF
The polling interval is m frames.
Isochronous
Full-speed
0x01-0x10
The polling interval is 2(m-1) frames.
Bulk
Full-speed
0x02-0x10
The NAK Limit is 2(m-1) frames. A value of 0 or 1
disables the NAK timeout function.
Interrupt
Interpretation
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRXINTERVAL[n] registers are shown in Figure 17-51 and described in Table 17-53.
Figure 17-54. USB Host Receive Polling Interval Endpoint n Register (USBRXINTERVAL[n])
7
0
TXPOLL / NAKLMT
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-58. USB Host Receive Polling Interval Endpoint n Register(USBRXINTERVAL[n])
Field Descriptions
Bit
Field
7-0
TXPOLL /
NAKLMT
Value
0
Description
TX Polling / NAK Limit The polling interval for interrupt/isochronous transfers; the NAK limit for bulk
transfers. See Table 17-57 for valid entries; other values are reserved.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1179
Register Descriptions
www.ti.com
17.6.43 USB Request Packet Count in Block Transfer Endpoint n Registers
(USBRQPKTCOUNT[1]-USBRQPKTCOUNT[3)
The USB receive packet count in block transfer endpoint n 16-bit read/writer registers are used in Host
mode to specify the number of packets that are to be transferred in a block transfer of one or more bulk
packets to receive endpoint n. The USB controller uses the value recorded in this register to determine the
number of requests to issue where the AUTORQ bit in the USBRXCSRH[n] register has been set. For
more information about IN transactions as a host, see Section 17.3.2.2.
Note: Multiple packets combined into a single bulk packet within the FIFO count as one packet.
For the specific offset for each register see Table 17-4.
Mode(s):
Host
The USBRQPKTCOUNT[n] registers are shown in Figure 17-55 and described in Table 17-59.
Figure 17-55. USB Request Packet Count in Block Transfer Endpoint n Registers
(USBRQPKTCOUNT[n])
15
13
12
0
Reserved
COUNT
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-59. USB Request Packet Count in Block Transfer Endpoint n Registers
(USBRQPKTCOUNT[n]) Field Descriptions
Bit
Field
15-13
Reserved
12-0
COUNT
1180
Value
0
Description
Reserved
Block Transfer Packet Count sets the number of packets of the size defined by the MAXLOAD bit field
that are to be transferred in a block transfer.
Note: This is only used in Host mode when AUTORQ is set. The bit has no effect in Device mode or
when AUTORQ is not set.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.44 USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS), offset
0x340
The USB receive double packet buffer disable 16-bit register (USBTXIE) indicates which of the receive
endpoints have disabled the double-packet buffer functionality (see Double-Packet Buffering in
Section 17.3.1.1.1).
Mode(s):
Host
Device
USBRXDPKTBUFDIS is shown in Figure 17-56 and described in Table 17-60.
Figure 17-56. USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
Rsvd
R-0
R/W-1
R/W-1
R/W-1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-60. USB Receive Double Packet Buffer Disable Register (USBRXDPKTBUFDIS) Field
Descriptions
Bit
15-4
3
2
1
0
Field
Value
Reserved
Reserved
EP3
EP3 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
EP2
EP2 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
EP1
Reserved
Description
EP1 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
0
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1181
Register Descriptions
www.ti.com
17.6.45 USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS), offset
0x342
The USB transmit double packet buffer disable 16-bit register (USBTXIE) indicates which of the transmit
endpoints have disabled the double-packet buffer functionality (see Double-Packet Buffering in
Section 17.3.1.1.1).
Mode(s):
Host
Device
USBTXDPKTBUFDIS is shown in Figure 17-57 and described in Table 17-61.
Figure 17-57. USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS)
15
3
2
1
0
Reserved
4
EP3
EP2
EP1
Rsvd
R-0
R/W-1
R/W-1
R/W-1
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-61. USB Transmit Double Packet Buffer Disable Register (USBTXDPKTBUFDIS)
Field Descriptions
Bit
15-4
3
2
1
0
1182
Field
Value
Reserved
Reserved
EP3
EP3 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
EP2
EP2 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
EP1
Reserved
Description
EP1 RX Double-Packet Buffer Disable
0
Disables double-packet buffering.
1
Enables double-packet buffering.
0
Reserved
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.46 USB External Power Control Register (USBEPC), offset 0x400
The USB external power control 32-bit register (USBEPC) specifies the function of the two-pin external
power interface (USB0EPEN and USB0PFLT). The assertion of the power fault input may generate an
automatic action, as controlled by the hardware configuration registers. The automatic action is necessary
because the fault condition may require a response faster than one provided by firmware.
Mode(s):
Host
Device
USBEPC is shown in Figure 17-58 and described in Table 17-62.
Figure 17-58. USB External Power Control Register (USBEPC)
31
16
Reserved
R-0
15
10
9
8
Reserved
PFLTACT
R-0
R/W-0
7
6
5
4
3
2
Reserved
PFLTAEN
PFLTSEN
PFLTEN
Reserved
EPENDE
1
EPEN
0
R-0
R/W-0
R/W-0
R/W-0
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; -n = value after reset
Table 17-62. USB External Power Control Register (USBEPC) Field Descriptions
Bit
Field
31-10
Reserved
9-8
PFLTACT
7
Reserved
6
PFLTAEN
5
4
3
Value
0
Reserved
Power Fault Action. This bit field specifies how the USB0EPEN signal is changed when detecting a
USB power fault.
0h
Unchanged. USB0EPEN is controlled by the combination of the EPEN and EPENDE bits.
1h
Tristate. USB0EPEN is undriven (tristate).
2h
Low. USB0EPEN is driven Low.
3h
High. USB0EPEN is driven High.
0
Reserved
Power Fault Action Enable. This bit specifies whether a USB power fault triggers any automatic
corrective action regarding the driven state of the USB0EPEN signal.
0
Disabled. USB0EPEN is controlled by the combination of the EPEN and EPENDE bits.
1
Enabled. The USB0EPEN output is automatically changed to the state specified by the PFLTACT field.
PFLTSEN
Power Fault Sense. This bit specifies the logical sense of the USB0PFLT input signal that indicates an
error condition.
The complementary state is the inactive state.
0
Low Fault. If USB0PFLT is driven Low, the power fault is signaled internally (if enabled by the PFLTEN
bit).
1
High Fault. If USB0PFLT is driven High, the power fault is signaled internally (if enabled by the PFLTEN
bit).
PFLTEN
Reserved
Description
Power Fault Input Enable. This bit specifies whether the USB0PFLT input signal is used in internal
logic.
0
Not Used. The USB0PFLT signal is ignored.
1
Used. The USB0PFLT signal is used internally
0
Reserved
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1183
Register Descriptions
www.ti.com
Table 17-62. USB External Power Control Register (USBEPC) Field Descriptions (continued)
Bit
2
1-0
1184
Field
Value
EPENDE
Description
EPEN Drive Enable. This bit specifies whether the USB0EPEN signal is driven or undriven (tristate).
When driven, the signal value is specified by the EPEN field. When not driven, the EPEN field is
ignored and the USB0EPEN signal is placed in a high-impedance state.
The USB0EPEN signal is undriven at reset because the sense of the external power supply enable is
unknown. By adding the high-impedance state, system designers can bias the power supply enable to
the disabled state using a large resistor (100 kΩ) and later configure and drive the output signal to
enable the power supply.
0
Not Driven. The USB0EPEN signal is high impedance.
1
Driven. The USB0EPEN signal is driven to the logical value specified by the value of the EPEN field.
EPEN
External Power Supply Enable Configuration. This bit field specifies and controls the logical value driven
on the USB0EPEN signal.
0h
Power Enable Active Low. The USB0EPEN signal is driven Low if the EPENDE bit is set.
1h
Power Enable Active High. The USB0EPEN signal is driven High if the EPENDE bit is set.
2h
Power Enable High if VBUS Low. The USB0EPEN signal is driven High when the A device is not
recognized.
3h
Power Enable High if VBUS High. The USB0EPEN signal is driven High when the A device is
recognized.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.47 USB External Power Control Raw Interrupt Status Register (USBEPCRIS), offset 0x404
The USB external power control raw interrupt status 32-bit register (USBEPCRIS) specifies the unmasked
interrupt status of the two-pin external power interface.
Mode(s):
Host
Device
USBEPCRIS is shown in Figure 17-59 and described in Table 17-63.
Figure 17-59. USB External Power Control Raw Interrupt Status Register (USBEPCRIS)
31
1
0
Reserved
PF
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-63. USB External Power Control Raw Interrupt Status Register (USBEPCRIS) Field
Descriptions
Bit
31-1
0
Field
Reserved
Value
0
PF
Description
Reserved
USB Power Fault Interrupt Status.
This bit is cleared by writing a 1 to the PF bit in the USBEPCISC register.
0
A Power Fault status has been detected.
1
An interrupt has not occurred.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1185
Register Descriptions
www.ti.com
17.6.48 USB External Power Control Interrupt Mask Register (USBEPCIM), offset 0x408
The USB external power control interrupt mask 32-bit register (USBEPCIM) specifies the interrupt mask of
the two-pin external power interface.
Mode(s):
Host
Device
USBEPCIM is shown in Figure 17-59 and described in Table 17-63.
Figure 17-60. USB External Power Control Interrupt Mask Register (USBEPCIM)
31
1
0
Reserved
PF
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-64. USB External Power Control Interrupt Mask Register (USBEPCIM) Field Descriptions
Bit
31-1
0
1186
Field
Reserved
Value
0
PF
Description
Reserved
USB Power Fault Interrupt Mask.
0
The raw interrupt signal from a detected power fault is sent to the interrupt controller.
1
A detected power fault does not affect the interrupt status.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.49 USB External Power Control Interrupt Status and Clear Register (USBEPCISC),
offset 0x40C
The USB external power control interrupt status and clear 32-bit register (USBEPCISC) specifies the
unmasked interrupt status of the two-pin external power interface.
Mode(s):
Host
Device
USBEPCISC is shown in Figure 17-61 and described in Table 17-65.
Figure 17-61. USB External Power Control Interrupt Status and Clear Register (USBEPCISC)
31
1
0
Reserved
PF
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-65. USB External Power Control Interrupt Status and
Clear Register (USBEPCISC) Field Descriptions
Bit
31-1
0
Field
Reserved
Value
0
PF
Description
Reserved. Reset is 0x0000.000.
USB Power Fault Interrupt Status and Clear.
This bit is cleared by writing a 1. Clearing this bit also clears the PF bit in the USBEPCISC register.
0
The PF bits in the USBEPCRIS and USBEPCIM registers are set, providing an interrupt to the interrupt
controller.
1
No interrupt has occurred or the interrupt is masked.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1187
Register Descriptions
www.ti.com
17.6.50 USB Device RESUME Raw Interrupt Status Register (USBDRRIS), offset 0x410
The USB device RESUME raw interrupt status register (USBDRRIS) is the raw interrupt status register.
On a read, this register gives the current raw status value of the corresponding interrupt prior to masking.
A write has no effect.
Mode(s):
Host
Device
USBDRRIS is shown in Figure 17-62 and described in Table 17-66.
Figure 17-62. USB Device RESUME Raw Interrupt Status Register (USBDRRIS)
31
1
0
Reserved
RESUME
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-66. USB Device RESUME Raw Interrupt
Status Register (USBDRRIS) Field Descriptions
Bit
31-1
0
1188
Field
Reserved
Value
0
PF
Description
Reserved. Reset is 0x0000.000.
RESUME Interrupt Status
This bit is cleared by writing a 1 to the RESUME bit in the USBDRISC register.
0
A RESUME status has been detected.
1
An interrupt has not occurred.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.51 USB Device RESUME Raw Interrupt Mask Register (USBDRIM), offset 0x414
The USB device RESUME raw interrupt status register (USBDRIM) is the masked interrupt status register.
On a read, this register gives the current masked status value of the corresponding interrupt. A write has
no effect.
Mode(s):
Host
Device
USBDRIM is shown in Figure 17-63 and described in Table 17-67.
Figure 17-63. USB Device RESUME Raw Interrupt Status Register (USBDRRIS)
31
1
0
Reserved
RESUME
R-0
R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-67. USB Device RESUME Raw Interrupt
Status Register (USBDRRIS) Field Descriptions
Bit
31-1
0
Field
Reserved
Value
0
PF
Description
Reserved. Reset is 0x0000.000.
RESUME Interrupt Mask
0
The raw interrupt signal from a detected RESUME is sent to the interrupt controller. This bit should only
be set when a SUSPEND has been detected (the SUSPEND bit in the USBIS register is set).
1
A detected RESUME does not affect the interrupt status.
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1189
Register Descriptions
www.ti.com
17.6.52 USB Device RESUME Interrupt Status and Clear Register (USBDRISC), offset 0x418
The USB device RESUME interrupt status and clear register (USBDRRIS) is the raw interrupt clear
register. On a write of 1, the corresponding interrupt is cleared. A write of 0 has no effect.
Mode(s):
Host
Device
USBDRISC is shown in Figure 17-64 and described in Table 17-68.
Figure 17-64. USB Device RESUME Interrupt Status and Clear Register (USBDRISC)
31
1
0
Reserved
RESUME
R-0
R/W1C
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-68. USB Device RESUME Interrupt Status and Clear Register (USBDRISC)
Field Descriptions
Bit
Field
31-1
Reserved
0
RESUME
1190
Value
0
Description
Reserved. Reset is 0x0000.000.
RESUME Interrupt Status and Clear.
This bit is cleared by writing a 1. Clearing this bit also clears the RESUME bit in the USBDRCRIS
register.
0
The RESUME bits in the USBDRRIS and USBDRCIM registers are set, providing an interrupt to the
interrupt controller.
1
No interrupt has occurred or the interrupt is masked.
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
17.6.53 USB General-Purpose Control and Status Register (USBGPCS), offset 0x41C
The USB general-purpose control and status register (USBGPCS) provides the state of the internal ID
signal.
When the USB controller is used as either a dedicated Host or Device, the DEVMODOTG and DEVMOD
bits in the USB General-Purpose Control and Status (USBGPCS) register should be used to connect the
ID inputs to fixed levels internally. For proper self-powered Device operation, the VBUS value must be
monitored to assure that if the Host removes VBUS, the self-powered Device disables the D+/D- pull-up
resistors. This function can be accomplished by connecting a standard GPIO to VBUS.
Mode(s):
Host
Device
USBGPCS is shown in Figure 17-65 and described in Table 17-69.
Figure 17-65. USB General-Purpose Control and Status Register (USBGPCS)
31
1
0
Reserved
2
DEVMODOTG
DEVMOD
R-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-69. USB General-Purpose Control and Status
Register (USBGPCS) Field Descriptions
Bit
31-2
1
0
Field
Reserved
Value
0
DEVMODOT
G
Description
Reserved. Reset is 0x0000.000.
Enable Device Mode. This bit enables the DEVMOD bit to control the state of the internal ID signal in
OTG mode.
0
The mode is specified by the state of the internal ID signal.
1
This bit enables the DEVMOD bit to control the internal ID signal.
DEVMOD
Device Mode This bit specifies the state of the internal ID signal in Host mode and in OTG mode when
the DEVMODOTG bit is set.
In Device mode this bit is ignored (assumed set).
0
Host mode
1
Device mode
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1191
Register Descriptions
www.ti.com
17.6.54 USB DMA Select Register (USBDMASEL), offset 0x450
The USB DMA select 32-bit register (USBDMASEL) specifies whether the unmasked interrupt status of
the ID value is valid.
Mode(s):
Host
Device
USBDMASEL is shown in Figure 17-66 and described in Table 17-70.
Figure 17-66. USB DMA Select Register (USBDMASEL)
31
24
15
23
20
19
16
Reserved
DMACTX
DMACRX
R/0
R/W-0
R/W-0
12
11
8
7
4
3
0
DMABTX
DMABRX
DMAATX
DMAARX
R/W-0
R/W-0
R/W-0
R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 17-70. USB DMA Select Register (USBDMASEL) Field Descriptions
Bit
Field
31-24
Reserved
23-20
DMACTX
19-16
15-12
11-8
7-4
1192
Value
0
Description
Reserved. Reset is 0x0000.000.
DMA C TX Select specifies the TX mapping of the third USB endpoint on DMA channel 5 (primary
assignment).
0h
Reserved
1h
Endpoint 1 TX
2h
Endpoint 2 TX
3h
Endpoint 3 TX
DMACRX
DMA C RX Select specifies the RX and TX mapping of the third USB endpoint on DMA channel 4
(primary assignment).
0h
Reserved
1h
Endpoint 1 RX
2h
Endpoint 2 RX
3h
Endpoint 3 RX
DMABTX
DMA B TX Select specifies the TX mapping of the second USB endpoint on DMA channel 3 (primary
assignment).
0h
Reserved
1h
Endpoint 1 TX
2h
Endpoint 2 TX
3h
Endpoint 3 TX
DMABRX
DMA B RX Select Specifies the RX mapping of the second USB endpoint on DMA channel 2 (primary
assignment).
0h
Reserved
1h
Endpoint 1 RX
2h
Endpoint 2 RX
3h
Endpoint 3 RX
DMAATX
DMA A TX Select specifies the TX mapping of the first USB endpoint on DMA channel 1 (primary
assignment).
0h
Reserved
1h
Endpoint 1 TX
2h
Endpoint 2 TX
3h
Endpoint 3 TX
Universal Serial Bus (USB) Controller
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Register Descriptions
www.ti.com
Table 17-70. USB DMA Select Register (USBDMASEL) Field Descriptions (continued)
Bit
Field
3-0
DMAARX
Value
Description
DMA A RX Select specifies the RX mapping of the first USB endpoint on DMA channel 0 (primary
assignment).
0h
Reserved
1h
Endpoint 1 RX
2h
Endpoint 2 RX
3h
Endpoint 3 RX
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Universal Serial Bus (USB) Controller
Copyright © 2011–2017, Texas Instruments Incorporated
1193
Revision History
www.ti.com
Revision History
Changes from April 1, 2016 to April 30, 2017 .................................................................................................................. Page
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Chapter 1:System Control and Interrupts .......................................................................................... 46
Table 1-17: Revised the descriptions in the table. .................................................................................. 73
Section 1.4.2.1: Revised this section. ................................................................................................. 75
Figure 1-19: Revised the figure. ....................................................................................................... 76
Section 1.4.2.1.1Removed the 'n' from the figure and table titles. ................................................................ 76
Section 1.4.2.1.2: Modified this section. .............................................................................................. 77
Section 1.4.2.2: Changed the title from "Configurng Input Clock" to "Configuring XCLKIN.." ................................. 77
Table 1-22: Revised the description for bit 15, NMIRESETSEL. .................................................................. 78
Section 1.4.2.3.1: Revised paragraph beginning "If OSCCLKSRC2..." .......................................................... 80
Section 1.4.2.3.2: Revvised the paragraph beginning "The second write..." .................................................... 80
Table 1-23: Revised the PLL Off row.................................................................................................. 81
Figure 1-26: For MCLKCLR, changed R/W-0 to W-0. .............................................................................. 84
Table 1-25: Modified bit 4 description. ................................................................................................ 85
Table 1-26: Modified the description in bit 15-0. ..................................................................................... 86
Figure 1-28: Changed PLLCLK to PLL2CLK. ........................................................................................ 87
Section 1.4.2.8: Revised the figure and text in this section. ....................................................................... 89
Section 1.4.2.9: Revised PLL by-pass mode section and deleted the PLL enabled mode paragraph. ..................... 91
Section 1.4.2.10: Revised this section. ............................................................................................... 93
Section 1.4.4.2: Revised the information in the Interrupt mode bullet. .......................................................... 103
Figure 1-90: For bit 30, changed R/W-1 to R/W-0. ................................................................................ 163
Table 1-122: Added the note to the PIEVECT description. ....................................................................... 182
Chapter 2: Boot ROM ................................................................................................................. 194
Figure 2-2: Changed 0x3F E8B6 to 0x3F E80C.................................................................................... 196
Table 2-3: Reversed the names for the last two locations. ....................................................................... 205
Chapter 3: Enhanced Pulse Width Modulator (ePWM) ........................................................................ 243
Table 3-12: In the Compare on Up_Count Event, changed CAD/CBD to CAU/CBU. ........................................ 273
Example 3-13: Revised EPwm1Regs.CMPA = 600 to EPwm1Regs.CMPA.half.CMPA = 600. ............................. 331
Chapter 4: High-Resolution Pulse Width Modulator (HRPWM) - No changes for this release. .......................... 373
Chapter 5: High Resolution Capture (HRCAP) .................................................................................. 405
Figure 5-2: Modified the figure. ....................................................................................................... 407
Figure 5-3: Revised the HRCAP Clocking section preceding the figure; revised the figure. ................................. 407
Table 5-2: Revised the description of values 0/1 for HCCAPCLKSEL. ......................................................... 412
Chapter 6: Enhanced Capture (eCAP) Module - No changes for this release. .............................................. 425
Chapter 7: Enhanced QEP (eQEP)- ................................................................................................ 454
Section 7.4.1.3: Removed the duplicate definition of First Index Marker, as already specified in Section 7.4.1.2. ....... 465
Table 7-7: Revised the bit description. .............................................................................................. 478
Chapter 8: Analog to Digital Converter and Comparator (ADC) ............................................................. 488
Section 8.1.5: Changed reset value from 32 to 16 in two sentences. ........................................................... 494
Figure 8-5: Changed the default for RRPOINTER from 32 to 16. ............................................................... 495
Figure 8-6: Changed the default for the RR pointer from 32 to 16............................................................... 496
Table 8-3: Revised the description for ADCSYCHN. .............................................................................. 502
Section 8.2.2: Revised Figure 8-39. ................................................................................................. 524
Section 8.2.5: Revised Figure 8-41. ................................................................................................ 525
Chapter 9: Control Law Accelerator (CLA) ....................................................................................... 532
Section 9.2.4: Added the last sentence to this list item. .......................................................................... 537
Chapter 10: Viterbi, Complex Math and CRC Unit (VCU)- No changes for this release ................................... 683
Chapter 11: Direct Memory Access (DMA) ...................................................................................... 808
Section 11.2: Changed ePWM1-6 ADCSOCA to ePWM2-7 ADCSOCA; added a note to bullet beginning "ePWM1-8 /
HRPWM1-8 " ............................................................................................................................ 809
1194
Revision History
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Revision History
www.ti.com
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Chapter 12: Serial Peripheral Interface (SPI) .................................................................................... 840
Section 12.1: In the four clocking schemes list, modified the text in the last 'rising edge' bullet. ........................... 841
Example 12-3: This example is explained in the sentence which precedes it.................................................. 849
Table 12-7: Revised the SPI SW RESET bit description.......................................................................... 864
Table 12-17: For RXFFOVF, value 1, changed "More than 16 words" to "More than 4 words." ............................ 871
Chapter 13: Serial Communications Interface (SCI) - No changes for this release. ....................................... 873
Chapter 14: Inter-Integrated Circuit Module (I2C) .............................................................................. 901
Table 14-1: Added the section including the bulleted lists, following the table. ................................................ 906
Chapter 15: Multichannel Buffered Serial Port (McBSP) - No changes for this release. .................................. 930
Chapter 16: Enhanced Controller Area Network (eCAN) .................................................................... 1042
Table 16-14: Reformatted bit 28-0. ................................................................................................. 1065
Table 16-16: Changed bit from 15 to 15-10. Added to the description - "'must be written with all zeroes."; Modified the
description of the SAM bit............................................................................................................ 1069
Figure 16-33: Added further description to the Note at the end of the register. .............................................. 1090
Chapter 17: Universal Serial Bus (USB) Controller - No changes for this release ....................................... 1110
SPRUH18G – January 2011 – Revised April 2017
Submit Documentation Feedback
Copyright © 2011–2017, Texas Instruments Incorporated
Revision History
1195
IMPORTANT NOTICE FOR TI DESIGN INFORMATION AND RESOURCES
Texas Instruments Incorporated (‘TI”) technical, application or other design advice, services or information, including, but not limited to,
reference designs and materials relating to evaluation modules, (collectively, “TI Resources”) are intended to assist designers who are
developing applications that incorporate TI products; by downloading, accessing or using any particular TI Resource in any way, you
(individually or, if you are acting on behalf of a company, your company) agree to use it solely for this purpose and subject to the terms of
this Notice.
TI’s provision of TI Resources does not expand or otherwise alter TI’s applicable published warranties or warranty disclaimers for TI
products, and no additional obligations or liabilities arise from TI providing such TI Resources. TI reserves the right to make corrections,
enhancements, improvements and other changes to its TI Resources.
You understand and agree that you remain responsible for using your independent analysis, evaluation and judgment in designing your
applications and that you have full and exclusive responsibility to assure the safety of your applications and compliance of your applications
(and of all TI products used in or for your applications) with all applicable regulations, laws and other applicable requirements. You
represent that, with respect to your applications, you have all the necessary expertise to create and implement safeguards that (1)
anticipate dangerous consequences of failures, (2) monitor failures and their consequences, and (3) lessen the likelihood of failures that
might cause harm and take appropriate actions. You agree that prior to using or distributing any applications that include TI products, you
will thoroughly test such applications and the functionality of such TI products as used in such applications. TI has not conducted any
testing other than that specifically described in the published documentation for a particular TI Resource.
You are authorized to use, copy and modify any individual TI Resource only in connection with the development of applications that include
the TI product(s) identified in such TI Resource. NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE TO
ANY OTHER TI INTELLECTUAL PROPERTY RIGHT, AND NO LICENSE TO ANY TECHNOLOGY OR INTELLECTUAL PROPERTY
RIGHT OF TI OR ANY THIRD PARTY IS GRANTED HEREIN, including but not limited to any patent right, copyright, mask work right, or
other intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information
regarding or referencing third-party products or services does not constitute a license to use such products or services, or a warranty or
endorsement thereof. Use of TI Resources 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.
TI RESOURCES ARE PROVIDED “AS IS” AND WITH ALL FAULTS. TI DISCLAIMS ALL OTHER WARRANTIES OR
REPRESENTATIONS, EXPRESS OR IMPLIED, REGARDING TI RESOURCES OR USE THEREOF, INCLUDING BUT NOT LIMITED TO
ACCURACY OR COMPLETENESS, TITLE, ANY EPIDEMIC FAILURE WARRANTY AND ANY IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL
PROPERTY RIGHTS.
TI SHALL NOT BE LIABLE FOR AND SHALL NOT DEFEND OR INDEMNIFY YOU AGAINST ANY CLAIM, INCLUDING BUT NOT
LIMITED TO ANY INFRINGEMENT CLAIM THAT RELATES TO OR IS BASED ON ANY COMBINATION OF PRODUCTS EVEN IF
DESCRIBED IN TI RESOURCES OR OTHERWISE. IN NO EVENT SHALL TI BE LIABLE FOR ANY ACTUAL, DIRECT, SPECIAL,
COLLATERAL, INDIRECT, PUNITIVE, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES IN CONNECTION WITH OR
ARISING OUT OF TI RESOURCES OR USE THEREOF, AND REGARDLESS OF WHETHER TI HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
You agree to fully indemnify TI and its representatives against any damages, costs, losses, and/or liabilities arising out of your noncompliance with the terms and provisions of this Notice.
This Notice applies to TI Resources. Additional terms apply to the use and purchase of certain types of materials, TI products and services.
These include; without limitation, TI’s standard terms for semiconductor products http://www.ti.com/sc/docs/stdterms.htm), evaluation
modules, and samples (http://www.ti.com/sc/docs/sampterms.htm).
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2017, Texas Instruments Incorporated
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Mode : UseOutlines Page Count : 1196 Modify Date : 2017:04:27 12:16:54-05:00 Producer : iText 2.1.7 by 1T3XT Keywords : SPRUH18, SPRUH18G Title : TMS320x2806x Piccolo Technical Reference Guide (Rev. G) Author : Texas Instruments, Incorporated [SPRUH18,G.] Create Date : 2017:04:27 12:16:54-05:00 Creator : TopLeaf 8.0.018 Subject : User's GuideEXIF Metadata provided by EXIF.tools