SWRU543B
January 2019 – June 2025
1
Read This First
Audience
About This Manual
Register Bit Conventions
Glossary
Related Documentation
Community Resources
Trademarks
1
Architecture Overview
1.1
Introduction
1.2
Architecture Overview
1.3
Functional Overview
1.3.1
Processor Core
1.3.1.1
Arm® Cortex®-M4 Processor Core
1.3.1.2
System Timer (SysTick)
1.3.1.3
Nested Vector Interrupt Controller (NVIC)
1.3.1.4
System Control Block
1.3.2
Memory
1.3.2.1
On-Chip SRAM
1.3.2.2
ROM
1.3.2.3
Flash Memory
1.3.3
Micro-Direct Memory Access Controller (µDMA)
1.3.4
General-Purpose Timer (GPT)
1.3.5
Watchdog Timer (WDT)
1.3.6
Multichannel Audio Serial Port (McASP)
1.3.7
Serial Peripheral Interface (SPI)
1.3.8
Inter-Integrated Circuit (I2C) Interface
1.3.9
Universal Asynchronous Receiver/Transmitter (UART)
1.3.10
General-Purpose Input/Output (GPIO)
1.3.11
Analog-to-Digital Converter (ADC)
1.3.12
SD Card Host
1.3.13
Parallel Camera Interface
1.3.14
Debug Interface
1.3.15
Hardware Cryptography Accelerator
1.3.16
Clock, Reset, and Power Management
1.3.17
SimpleLink™ Subsystem
1.3.18
I/O Pads and Pin Multiplexing
2
Cortex®-M4 Processor
2.1
Overview
2.1.1
Block Diagram
2.1.2
System-Level Interface
2.1.3
Integrated Configurable Debug
2.1.4
Trace Port Interface Unit (TPIU)
2.1.5
Cortex®-M4 System Component Details
2.2
Functional Description
2.2.1
Programming Model
2.2.1.1
Processor Mode and Privilege Levels for Software Execution
2.2.1.2
Stacks
2.2.2
Register Description
2.2.2.1
Register Map
2.2.2.2
Register Descriptions
2.2.2.2.1
Stack Pointer (SP)
2.2.2.2.2
Link Register (LR)
2.2.2.2.3
Program Counter (PC)
2.2.2.2.4
Program Status Register (PSR)
2.2.2.2.5
Priority Mask Register (PRIMASK)
2.2.2.2.6
Fault Mask Register (FAULTMASK)
2.2.2.2.7
Base Priority Mask Register (BASEPRI)
2.2.2.2.8
Control Register (CONTROL)
2.2.2.3
Exceptions and Interrupts
2.2.2.4
Data Types
2.2.3
Memory Model
2.2.3.1
Bit-Banding
2.2.3.1.1
Directly Accessing an Alias Region
2.2.3.1.2
Directly Accessing a Bit-Band Region
2.2.3.2
Data Storage
2.2.3.3
Synchronization Primitives
2.2.4
Exception Model
2.2.4.1
Exception States
2.2.4.2
Exception Types
2.2.4.3
Exception Handlers
2.2.4.4
Vector Table
2.2.4.5
Exception Priorities
2.2.4.6
Interrupt Priority Grouping
2.2.4.7
Exception Entry and Return
2.2.4.7.1
Exception Entry
2.2.5
Fault Handling
2.2.5.1
Fault Types
2.2.5.2
Fault Escalation and Hard Faults
2.2.5.3
Fault Status Registers and Fault Address Registers
2.2.5.4
Lockup State
2.2.6
Power Management
2.2.7
Instruction Set Summary
3
Cortex®-M4 Peripherals
3.1
Overview
3.2
Functional Description
3.2.1
System Timer (SysTick)
3.2.2
Nested Vectored Interrupt Controller (NVIC)
3.2.2.1
Level-Sensitive and Pulse Interrupts
3.2.2.2
Hardware and Software Control of Interrupts
3.2.3
System Control Block (SCB)
3.3
Register Map
3.3.1
Cortex Registers
4
Direct Memory Access (DMA)
4.1
Overview
4.2
Functional Description
4.2.1
Channel Assignment
4.2.2
Priority
4.2.3
Arbitration Size
4.2.4
Channel Configuration
4.2.5
Transfer Mode
4.2.5.1
Stop Mode
4.2.5.2
Basic Mode
4.2.5.3
Auto Mode
4.2.5.4
Ping-Pong Mode
4.2.5.5
Memory Scatter-Gather Mode
4.2.5.6
Peripheral Scatter-Gather Mode
4.2.6
Transfer Size and Increment
4.2.7
Peripheral Interface
4.2.7.1
FIFO Peripherals
4.2.7.2
Trigger Peripherals
4.2.7.3
Software Request
4.2.8
Interrupts and Errors
4.3
Register Description
4.3.1
DMA Register Map
4.3.2
µDMA Channel Control Structure
4.3.3
DMA Registers
4.3.4
DMA_(OFFSET_FROM_DMA_BASE_ADDRESS) Registers
5
General-Purpose Input/Outputs (GPIOs)
5.1
Overview
5.2
Functional Description
5.2.1
Data Control
5.2.1.1
Data Direction Operation
5.2.1.2
Data Register Operation
5.3
Interrupt Control
5.3.1
µDMA Trigger Source
5.4
Initialization and Configuration
5.5
GPIO Registers
6
Universal Asynchronous Receivers/Transmitters (UARTs)
6.1
Overview
6.1.1
Block Diagram
6.2
Functional Description
6.2.1
Transmit and Receive Logic
6.2.2
Baud-Rate Generation
6.2.3
Data Transmission
6.2.3.1
Flow Control
6.2.3.1.1
Hardware Flow Control (RTS/CTS)
6.2.3.1.2
Software Flow Control (Modem Status Interrupts)
6.2.3.2
FIFO Operation
6.2.3.3
Interrupts
6.2.3.4
LoopbackOperation
6.2.3.5
DMA Operation
6.2.4
Initialization and Configuration
6.3
UART Registers
7
Inter-Integrated Circuit (I2C) Interface
7.1
Overview
7.1.1
Block Diagram
7.1.2
Signal Description
7.2
Functional Description
7.2.1
I2C Bus Functional Overview
7.2.1.1
START and STOP Conditions
7.2.1.2
Data Format With 7-Bit Address
7.2.1.3
Data Validity
7.2.1.4
Acknowledge
7.2.1.5
Repeated Start
7.2.1.6
Clock Low Time-out (CLTO)
7.2.1.7
Dual Address
7.2.1.8
Arbitration
7.2.2
Supported Speed Modes
7.2.2.1
Standard and Fast Modes
7.2.3
Interrupts
7.2.4
Loopback Operation
7.2.5
FIFO and µDMA Operation
7.2.5.1
Master Module Burst Mode
7.2.5.1.1
Master Module µDMA Functionality
7.2.5.1.2
Slave Module
7.2.6
Command Sequence Flow Charts
7.2.6.1
I2C Master Command Sequences
7.2.6.2
I2C Slave Command Sequences
7.2.7
Initialization and Configuration
7.3
I2C Registers
8
SPI (Serial Peripheral Interface)
8.1
Overview
8.1.1
Features
8.2
Functional Description
8.2.1
SPI
8.2.2
SPI Transmission
8.2.2.1
Two Data Pins Interface Mode
8.2.2.2
Transfer Formats
8.2.2.2.1
Programmable Word Length
8.2.2.2.2
Programmable SPI Enable (SPIEN)
8.2.2.2.3
Programmable SPI Clock (SPICLK)
8.2.2.2.4
Bit Rate
8.2.2.2.5
Polarity and Phase
8.2.2.2.5.1
Transfer Format With PHA = 0
8.2.2.2.5.2
Transfer Format With PHA = 1
8.2.3
Master Mode
8.2.3.1
Interrupt Events in Master Mode
8.2.3.1.1
TX_empty
8.2.3.1.2
TX_underflow
8.2.3.1.3
RX_ full
8.2.3.1.4
End-of-Word Count
8.2.3.2
Master Transmit and Receive Mode
8.2.3.3
SPI Enable Control in Master Mode
8.2.3.3.1
Keep SPIEN Active Mode (Force SPIEN)
8.2.3.4
Clock Ratio Granularity
8.2.3.4.1
FIFO Buffer Management
8.2.3.4.1.1
Split FIFO
8.2.3.4.1.2
Buffer Almost Full
8.2.3.4.1.3
Buffer Almost Empty
8.2.3.4.1.4
End of Transfer Management
8.2.3.4.1.5
3- or 4-Pin Mode
8.2.4
Slave Mode
8.2.4.1
Interrupts Events in Slave Mode
8.2.4.1.1
TX_empty
8.2.4.1.2
TX_underflow
8.2.4.1.3
RX_ full
8.2.4.1.4
RX_overflow
8.2.4.1.5
End-of-Word Count
8.2.4.2
Slave Transmit and Receive Mode
8.2.5
Interrupts
8.2.5.1
Interrupt-Driven Operation
8.2.5.2
Polling
8.2.6
DMA Requests
8.2.6.1
FIFO Buffer Enabled
8.2.7
Reset
8.3
Initialization and Configuration
8.3.1
Basic Initialization
8.3.2
Master Mode Operation Without Interrupt (Polling)
8.3.3
Slave Mode Operation With Interrupt
8.3.4
Generic Interrupt Handler Implementation
8.4
Access to Data Registers
8.5
Module Initialization
8.5.1
Common Transfer Sequence
8.5.2
End-of-Transfer Sequences
8.5.3
FIFO Mode
8.5.3.1
Common Transfer Sequence
8.5.3.2
Transmit Receive With Word Count
8.5.3.3
Transmit Receive Without Word Count
8.6
SPI Registers
9
General-Purpose Timers
9.1
Overview
9.2
Block Diagram
9.3
Functional Description
9.3.1
GPTM Reset Conditions
9.3.2
Timer Modes
9.3.2.1
One-Shot or Periodic Timer Mode
9.3.2.2
Input Edge-Count Mode
9.3.2.3
Input Edge-Time Mode
9.3.2.4
PWM Mode
9.3.3
DMA Operation
9.3.4
Accessing Concatenated 16/32-Bit GPTM Register Values
9.4
Initialization and Configuration
9.4.1
One-Shot and Periodic Timer Mode
9.4.2
Input Edge-Count Mode
9.4.3
Input Edge-Time Mode
9.4.4
PWM Mode
9.5
Timer Registers
10
Watchdog Timer
10.1
Overview
10.1.1
Block Diagram
10.2
Functional Description
10.2.1
Initialization and Configuration
10.3
WATCHDOG Registers
10.4
MCU Watchdog Controller Usage Caveats
10.4.1
System Watchdog
10.4.2
System Watchdog Recovery Sequence
11
SD Host Controller Interface
11.1
Overview
11.2
SD Host Features
11.3
1-Bit SD Interface
11.3.1
Clock and Reset Management
11.4
Initialization and Configuration Using Peripheral APIs
11.4.1
Basic Initialization and Configuration
11.4.2
Sending Command
11.4.3
Card Detection and Initialization
11.4.4
Block Read
11.4.5
Block Write
11.5
Performance and Testing
11.6
Peripheral Library APIs
11.7
SD-HOST Registers
12
Inter-Integrated Sound (I2S) Multichannel Audio Serial Port
12.1
Overview
12.1.1
I2S Format
12.2
Functional Description
12.3
Programming Model
12.3.1
Clock and Reset Management
12.3.2
I2S Data Port Interface
12.3.3
Initialization and Configuration
12.4
Peripheral Library APIs for I2S Configuration
12.4.1
Basic APIs for Enabling and Configuring the Interface
12.4.1.1
void I2SDisable (unsigned long ulBase)
12.4.1.2
void I2SEnable (unsigned long ulBase, unsigned long ulMode)
12.4.1.3
void I2SSerializerConfig (unsigned long ulBase, unsigned long ulDataLine, unsigned long ulSerMode, unsigned long ulInActState)
12.4.1.4
void I2SConfigSetExpClk (unsigned long ulBase, unsigned long ulI2SClk, unsigned long ulBitClk, unsigned long ulConfig)
12.4.2
APIs for Data Access if DMA is Not Used
12.4.2.1
void I2SDataGet (unsigned long ulBase, unsigned long ulDataLine, unsigned long * pulData)
12.4.2.2
long I2SDataGetNonBlocking (unsigned long ulBase, unsigned long ulDataLine, unsigned long * pulData)
12.4.2.3
void I2SDataPut (unsigned long ulBase, unsigned long ulDataLine, unsigned long ulData)
12.4.2.4
void I2SDataPut (unsigned long ulBase, unsigned long ulDataLine, unsigned long ulData)
12.4.3
APIs for Setting Up, Handling Interrupts, or Getting Status from I2S Peripheral
12.4.3.1
void I2SIntRegister (unsigned long ulBase, void(*)(void) pfnHandler)
12.4.3.2
void I2SIntEnable (unsigned long ulBase, unsigned long ulIntFlags)
12.4.3.3
void I2SIntDisable (unsigned long ulBase, unsigned long ulIntFlags)
12.4.3.4
unsigned long I2SIntStatus (unsigned long ulBase)
12.4.3.5
void I2SIntUnregister (unsigned long ulBase)
12.4.3.6
void I2SIntClear (unsigned long ulBase, unsigned long ulStatFlags)
12.4.3.7
Values that can be Passed to I2SIntEnable() and I2SIntDisable() as the ulIntFlags Parameter
12.4.3.8
Values that can be Passed to I2SIntClear() as the ulStatFlags Parameter and Returned from I2SIntStatus()
12.4.4
APIs to Control FIFO Structures Associated With I2S Peripheral
12.4.4.1
void I2SRxFIFODisable (unsigned long ulBase)
12.4.4.2
void I2SRxFIFOEnable (unsigned long ulBase, unsigned long ulRxLevel, unsigned long ulWordsPerTransfer)
12.4.4.3
unsigned long I2SRxFIFOStatusGet (unsigned long ulBase)
12.4.4.4
void I2STxFIFODisable (unsigned long ulBase)
12.4.4.5
void I2STxFIFOEnable (unsigned long ulBase, unsigned long ulTxLevel, unsigned long ulWordsPerTransfer)
12.4.4.6
unsigned long I2STxFIFOStatusGet (unsigned long ulBase)
12.5
I2S Registers
13
Analog-to-Digital Converter (ADC)
13.1
Overview
13.2
Key Features
13.3
ADC Register Mapping
13.4
ADC_MODULE Registers
13.5
Initialization and Configuration
13.6
Peripheral Library APIs for ADC Operation
13.6.1
Overview
13.6.2
Configuring the ADC Channels
13.6.3
Basic APIs for Enabling and Configuring the Interface
13.6.3.1
void ADCEnable (unsigned long ulBase)
13.6.3.2
void ADCDisable (unsigned long ulBase)
13.6.3.3
void ADCChannelEnable (unsigned long ulBase, unsigned long ulChannel)
13.6.3.4
void ADCChannelDisable (unsigned long ulBase, unsigned long ulChannel)
13.6.4
APIs for Data Transfer [Direct Access to FIFO and DMA Setup]
13.6.4.1
unsigned char ADCFIFOLvlGet (unsigned long ulBase, unsigned long ulChannel)
13.6.4.2
unsigned long ADCFIFORead (unsigned long ulBase, unsigned long ulChannel)
13.6.4.3
void ADCDMAEnable (unsigned long ulBase, unsigned long ulChannel)
13.6.4.4
void ADCDMADisable (unsigned long ulBase, unsigned long ulChannel)
13.6.5
APIs for Interrupt Usage
13.6.5.1
void ADCIntEnable (unsigned long ulBase, unsigned long ulChannel, unsigned long ulIntFlags)
13.6.5.2
void ADCIntDisable (unsigned long ulBase, unsigned long ulChannel, unsigned long ulIntFlags)
13.6.5.3
void ADCIntRegister (unsigned long ulBase, unsigned long ulChannel, void(*)(void) pfnHandler)
13.6.5.4
void ADCIntUnregister (unsigned long ulBase, unsigned long ulChannel)
13.6.5.5
unsigned long ADCIntStatus (unsigned long ulBase, unsigned long ulChannel)
13.6.5.6
void ADCIntClear (unsigned long ulBase, unsigned long ulChannel, unsigned long ulIntFlags)
13.6.6
APIs for Setting Up ADC Timer for Time-Stamping the Samples
13.6.6.1
void ADCTimerConfig (unsigned long ulBase, unsigned long ulValue)
13.6.6.2
void ADCTimerDisable (unsigned long ulBase)
13.6.6.3
void ADCTimerEnable (unsigned long ulBase)
13.6.6.4
void ADCTimerReset (unsigned long ulBase)
13.6.6.5
unsigned long ADCTimerValueGet (unsigned long ulBase)
14
Parallel Camera Interface Module
14.1
Overview
14.2
Image Sensor Interface
14.3
Functional Description
14.3.1
Modes of Operation
14.3.2
FIFO Buffer
14.3.3
Reset
14.3.4
Clock Generation
14.3.5
Interrupt Generation
14.3.6
DMA Interface
14.4
Programming Model
14.4.1
Camera Core Reset
14.4.2
Enable the Picture Acquisition
14.4.3
Disable the Picture Acquisition
14.5
Interrupt Handling
14.5.1
FIFO_OF_IRQ (FIFO Overflow)
14.5.2
FIFO_UF_IRQ (FIFO Underflow)
14.6
Camera Registers
14.7
Peripheral Library APIs
14.8
Developer’s Guide
14.8.1
Using Peripheral Driver APIs for Capturing an Image
14.8.2
Using Peripheral Driver APIs for Communicating With Image Sensors
15
Power, Reset, and Clock Management
15.1
Overview
15.1.1
Power Management Unit (PMU)
15.1.2
VBAT Wide-Voltage Connection
15.1.3
Supply Brownout and Blackout
15.1.4
Application Processor Power Modes
15.2
Power Management Control Architecture
15.2.1
Global Power-Reset-Clock Manager (GPRCM)
15.2.2
Application Reset-Clock Manager (ARCM)
15.3
PRCM APIs
15.3.1
MCU Initialization
15.3.2
Reset Control
15.3.3
Peripheral Reset
15.3.4
Reset Cause
15.3.5
Clock Control
15.3.6
Low-Power Modes
15.3.7
Sleep (SLEEP)
15.3.8
Low-Power Deep Sleep (LPDS)
15.3.9
Hibernate (HIB)
15.3.10
Slow Clock Counter
15.4
Peripheral Macros
15.5
Power Management Framework
15.6
PRCM Registers
16
I/O Pads and Pin Multiplexing
16.1
Overview
16.2
I/O Pad Electrical Specifications
16.3
Analog and Digital Pin Multiplexing
16.4
Special Analog/Digital Pins
16.4.1
Pins 45 and 52
16.4.2
Pins 29 and 30
16.4.3
Pins 57, 58, 59, and 60
16.5
Analog Mux Control Registers
16.6
Pins Available for Applications
16.7
Functional Pin Mux Configurations
16.8
Pin Mapping Recommendations
16.8.1
Pad Configuration Registers for Application Pins
16.8.1.1
Pad Mux and Electrical Configuration Register Bit Definitions
16.8.2
PAD Behavior During Reset and Hibernate
16.8.3
Control Architecture
16.8.4
CC32xx Pin-mux Examples
16.8.5
Wake on Pad
16.8.6
Sense on Power
17
Advance Encryption Standard Accelerator (AES)
17.1
AES Overview
17.2
AES Functional Description
17.2.1
AES Block Diagram
17.2.1.1
Interfaces
17.2.1.2
AES Wide-Bus Engine
17.2.2
AES Algorithm
17.2.3
AES Operating Modes
17.2.3.1
Supported Modes of Operation
17.2.3.2
Extended and Combined Modes of Operations
17.2.4
Hardware Requests
17.3
AES Module Programming Guide
17.3.1
AES Low-Level Programming Models
17.3.1.1
Global Initialization
17.3.1.2
Initialization Subsequence
17.3.1.3
Operational Modes Configuration
17.3.1.4
AES Events Servicing
17.4
AES Registers
18
Data Encryption Standard Accelerator (DES)
18.1
DES Functional Description
18.2
DES Block Diagram
18.2.1
µDMA Control
18.2.2
Interrupt Control
18.2.3
Register Interface
18.2.4
DES Enginer
18.2.4.1
Mode Control FSM
18.2.4.2
DES Feedback Mode Block
18.2.4.3
DES Cipher Core
18.3
DES-Supported Modes of Operation
18.3.1
ECB Feedback Mode
18.3.1.1
CBC Feedback Mode
18.3.1.2
CFB Feedback Mode
18.4
DES Module Programming Guide – Low-Level Programming Models
18.4.1
Surrounding Modules Global Initialization
18.4.1.1
Main Sequence – DES Global Initialization
18.4.1.2
Subsequence – Configure the DES Algorithm Type
18.4.1.3
Subsequence – Configure the 3DES Algorithm Type
18.4.2
Operational Modes Configuration
18.4.2.1
Main Sequence – DES Polling Mode
18.4.2.2
DES Interrupt Mode
18.4.2.3
DES Interrupt DMA Mode
18.4.3
DES Events Servicing
18.4.3.1
Interrupt Servicing
18.4.3.2
Context Input Event Servicing
18.5
DES Registers
19
SHA/MD5 Accelerator
19.1
SHA/MD5 Functional Description
19.1.1
SHA/MD5 Block Diagram
19.1.1.1
Configuration Registers
19.1.1.2
Hash/HMAC Engine
19.1.1.3
Hash Core Control
19.1.1.4
Host Interface Bank
19.1.2
µDMA and Interrupt Requests
19.1.3
Operation Description
19.1.3.1
SHA Mode
19.1.3.1.1
Starting a New Hash
19.1.3.1.2
Outer Digest Registers
19.1.3.1.3
Inner Digest Registers
19.1.3.1.4
Closing a Hash
19.1.3.2
MD5 Mode
19.1.3.2.1
Starting a New Hash
19.1.3.2.2
Closing a Hash
19.1.3.3
Generating a Software Interrupt
19.1.4
SHA/MD5 Programming Guide
19.1.4.1
Global Initialization
19.1.4.1.1
Surrounding Modules Global Initialization
19.1.4.1.2
Starting a New HMAC using the SHA-1 Hash Function and HMAC Key Processing
19.1.4.1.3
Subsequence - Continuing a Prior HMAC Using the SHA-1 Hash Function
19.1.4.1.4
Subsequence - Hashing a Key Bigger than 512 Bits with the SHA-1 Hash Function
19.1.4.1.5
Operational Modes Configuration
19.1.4.1.6
SHA/MD5 Event Servicing
19.1.4.1.6.1
Interrupt Servicing
19.2
SHA-MD5 Registers
20
Cyclical Redundancy Check (CRC)
20.1
Functional Description
20.1.1
CRC Support
20.1.1.1
CRC Checksum Engine
20.1.1.2
Data Size
20.1.1.3
Endian Configuration
20.2
Initialization and Configuration
20.2.1
CRC Initialization and Configuration
20.2.1.1
Data Endian Convention for the CRC Engine
20.3
CRC Registers
21
On-Chip Parallel Flash
21.1
Flash Memory Configuration
21.2
Interrupts
21.3
Flash Memory Programming
21.4
32-Word Flash Memory Write Buffer
21.5
Flash Registers
21.6
CC323xSF Boot Flow
21.7
Flash User Application and Memory Partition
21.8
Programming, Bootstrapping, and Updating the Flash User Application
21.9
Image Authentication and Integrity Check
21.10
Debugging Flash User Application Using JTAG
22
Revision History
A Software Development Kit Examples
B CC323x Device Miscellaneous Registers
24.1
DMA_IMR Register (offset = 8Ch) [reset = FF0Fh]
24.2
DMA_IMS Register (offset = 90h) [reset = 0h]
24.3
DMA_IMC Register (offset = 94h) [reset = 0h]
24.4
DMA_ICR Register (offset = 9Ch) [reset = 0h]
24.5
DMA_MIS Register (offset = A0h) [reset = 0h]
24.6
DMA_RIS Register (offset = A4h) [reset = 0h]
24.7
GPTTRIGSEL Register (offset = B0h) [reset = 0h]
19.1
SHA/MD5 Functional Description