SWRU543B January   2019  – June 2025 CC3230S , CC3230SF , CC3235MODS , CC3235MODSF , CC3235S , CC3235SF

 

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

Cortex Registers

Table 3-3 lists the memory-mapped Cortex registers. All register offset addresses not listed in Table 3-3 should be considered as reserved locations and the register contents should not be modified.

The offset listed is a hexadecimal increment to the register's address, relative to the Core Peripherals base address of 0xE000.E000.

Note:

Register spaces that are not used are reserved for future or internal use. Software should not modify any reserved memory address.

Table 3-3 Cortex Registers
Offset Acronym Register Name Section
8h ACTLR Auxiliary Control Section 3.3.1.1
10h STCTRL SysTick Control and Status Register Section 3.3.1.2
14h STRELOAD SysTick Reload Value Register Section 3.3.1.3
18h STCURRENT SysTick Current Value Register Section 3.3.1.4
100h to 118h EN_0 to EN_6 Interrupt Set Enable Section 3.3.1.5
180h to 198h DIS_0 to DIS_6 Interrupt Clear Enable Section 3.3.1.6
200h to 218h PEND_0 to PEND_6 Interrupt Set Pending Section 3.3.1.7
280h to 298h UNPEND_0 to UNPEND_6 Interrupt Clear Pending Section 3.3.1.8
300h to 318h ACTIVE_0 to ACTIVE_6 Interrupt Active Bit Section 3.3.1.9
400h to 4C4h PRI_0 to PRI_49 Interrupt Priority Section 3.3.1.10
D00h CPUID CPU ID Base Section 3.3.1.11
D04h INTCTRL Interrupt Control and State Section 3.3.1.12
D08h VTABLE Vector Table Offset Section 3.3.1.13
D0Ch APINT Application Interrupt and Reset Control Section 3.3.1.14
D10h SYSCTRL System Control Section 3.3.1.15
D14h CFGCTRL Configuration Control Section 3.3.1.16
D18h SYSPRI1 System Handler Priority 1 Section 3.3.1.17
D1Ch SYSPRI2 System Handler Priority 2 Section 3.3.1.18
D20h SYSPRI3 System Handler Priority 3 Section 3.3.1.19
D24h SYSHNDCTRL System Handler Control and State Section 3.3.1.20
D28h FAULTSTAT Configurable Fault Status Section 3.3.1.21
D2Ch HFAULTSTAT Hard Fault Status Section 3.3.1.22
D38h FAULTDDR Bus Fault Address Section 3.3.1.23
F00h SWTRIG Software Trigger Interrupt Section 3.3.1.24

3.3.1.1 ACTLR Register (Offset = 8h) [reset = 0h]

ACTLR is shown in Figure 3-1 and described in Table 3-4.

Return to Summary Table.

The ACTLR register provides disable bits for IT folding, write buffer use for accesses to the default memory map, and interruption of multi-cycle instructions. By default, this register is set to provide optimum performance from the Cortex-M4 application processor in the CC32xx, and does not normally require modification.

Note:

This register can only be accessed from privileged mode.

Figure 3-1 ACTLR Register
31 30 29 28 27 26 25 24
RESERVED
R-0h
23 22 21 20 19 18 17 16
RESERVED
R-0h
15 14 13 12 11 10 9 8
RESERVED DISOOFP DISFPCA
R-0h R/W-0h R/W-0h
7 6 5 4 3 2 1 0
RESERVED DISFOLD DISWBUF DISMCYC
R-0h R/W-0h R/W-0h R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-4 ACTLR Register Field Descriptions
Bit Field Type Reset Description
31-10 RESERVED R 0h
9 DISOOFP R/W 0h

Disable out-of-order floating point

N/A for the CC32xx.

8 DISFPCA R/W 0h
7-3 RESERVED R 0h
2 DISFOLD R/W 0h

Disable IT Folding

In some situations, the processor can start executing the first instruction in an IT block while it is still executing the IT instruction. This behavior is called IT folding, and improves performance, However, IT folding can cause jitter in looping. If a task must avoid jitter, set the DISFOLD bit before executing the task, to disable IT folding.

0h = No effect.

1h = Disables IT folding.

1 DISWBUF R/W 0h

Disable IT Folding

In some situations, the processor can start executing the first instruction in an IT block while it is still executing the IT instruction. This behavior is called IT folding, and improves performance. However, IT folding can cause jitter in looping. If a task must avoid jitter, set the DISFOLD bit before executing the task, to disable IT folding.

0h = No effect.

1h = Disables IT folding.

0 DISMCYC R/W 0h

Disable Interrupts of Multiple Cycle Instructions

In this situation, the interrupt latency of the processor is increased because any LDM or STM must complete before the processor can stack the current state and enter the interrupt handler.

0h = No effect.

1h = Disables interruption of load multiple and store multiple instructions.

3.3.1.2 STCTRL Register (Offset = 10h) [reset = 0h]

STCTRL is shown in Figure 3-2 and described in Table 3-5.

Return to Summary Table.

The SysTick (STCTRL) register enables the SysTick features.

Note:

This register can only be accessed from privileged mode.

Figure 3-2 STCTRL Register
31 30 29 28 27 26 25 24
RESERVED
R-0h
23 22 21 20 19 18 17 16
RESERVED COUNT
R-0h R-0h
15 14 13 12 11 10 9 8
RESERVED
R-0h
7 6 5 4 3 2 1 0
RESERVED CLK_SRC INTEN ENABLE
R-0h R/W-0h R/W-0h R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-5 STCTRL Register Field Descriptions
Bit Field Type Reset Description
31-17 RESERVED R 0h
16 COUNT R 0h

Count Flag

This bit is cleared by a read of the register or if the STCURRENT register is written with any value. If read by the debugger using the DAP, this bit is cleared only if the MasterType bit in the AHB-AP Control Register is clear. Otherwise, the COUNT bit is not changed by the debugger read. See the ARM Debug Interface V5 Architecture Specification for more information on MasterType.

0h = The SysTick timer has not counted to 0 since the last time this bit was read.

1h = The SysTick timer has counted to 0 since the last time this bit was read.

15-3 RESERVED R 0h
2 CLK_SRC R/W 0h

Clock Source

0h = Precision internal oscillator (PIOSC) divided by 4

1h = System clock

1 INTEN R/W 0h

Interrupt Enable

0h = Interrupt generation is disabled. Software can use the COUNT bit to determine if the counter has ever reached 0.

1h = An interrupt is generated to the NVIC when SysTick counts to 0.

0 ENABLE R/W 0h

Enable

0h = The counter is disabled.

1h = Enables SysTick to operate in a multi-shot way. That is, the counter loads the RELOAD value and begins counting down. On reaching 0, the COUNT bit is set and an interrupt is generated if enabled by INTEN. The counter then loads the RELOAD value again and begins counting.

3.3.1.3 STRELOAD Register (Offset = 14h) [reset = 0h]

STRELOAD is shown in Figure 3-3 and described in Table 3-6.

Return to Summary Table.

The STRELOAD register specifies the start value to load into the SysTick Current Value (STCURRENT) register when the counter reaches 0. The start value can be between 0x1 and 0x00FF.FFFF. A start value of 0 is possible, but has no effect because the SysTick interrupt and the COUNT bit are activated when counting from 1 to 0. SysTick can be configured as a multi-shot timer, repeated over and over, firing every N+1 clock pulses, where N is any value from 1 to 0x00FF.FFFF. For example, if a tick interrupt is required every 100 clock pulses, 99 must be written into the RELOAD field. To access this register correctly, the system clock must be faster than 8 MHz.

Note:

This register can only be accessed from privileged mode.

Figure 3-3 STRELOAD Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESERVED RELOAD
R-0h R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-6 STRELOAD Register Field Descriptions
Bit Field Type Reset Description
31-24 RESERVED R 0h
23-0 RELOAD R/W 0h

Reload Value

Value to load into the SysTick Current Value (STCURRENT) register when the counter reaches 0.

3.3.1.4 STCURRENT Register (Offset = 18h) [reset = 0h]

STCURRENT is shown in Figure 3-4 and described in Table 3-7.

Return to Summary Table.

The STCURRENT register contains the current value of the SysTick counter.

Note:

This register can only be accessed from privileged mode.

Figure 3-4 STCURRENT Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESERVED CURRENT
R-0h R/WC-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-7 STCURRENT Register Field Descriptions
Bit Field Type Reset Description
31-24 RESERVED R 0h
23-0 CURRENT R/WC 0h

Current Value This field contains the current value at the time the register is accessed. No read-modify-write protection is provided, so change with care. This register is write-clear. Writing to it with any value clears the register. Clearing this register also clears the COUNT bit of the STCTRL register.

3.3.1.5 EN_0 to EN_6 Register (offset = 100h to 118h) [reset = 0h]

EN_0 to EN_6 is shown in Figure 3-5 and described in Table 3-8.

The ENn registers enable interrupts and show which interrupts are enabled. Bit 0 of EN0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of EN1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of EN2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of EN3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of EN4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of EN5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of EN6 corresponds to interrupt 192; bit 7 corresponds to interrupt 199. If a pending interrupt is enabled, the NVIC activates the interrupt based on its priority. If an interrupt is not enabled, asserting its interrupt signal changes the interrupt state to pending, but the NVIC never activates the interrupt, regardless of its priority.

Note:

This register can only be accessed from privileged mode.

Figure 3-5 EN_0 to EN_6 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-8 EN_0 to EN_6 Register Field Descriptions
Bit Field Type Reset Description
31-0 INT R/W 0h

Interrupt Enable

A bit can only be cleared by setting the corresponding INT[n] bit in the DISn register.

0h (W) = On a write, no effect.

0h (R) = On a read, indicates the interrupt is disabled.

1h (W) = On a write, enables the interrupt.

1h (R) = On a read, indicates the interrupt is enabled.

3.3.1.6 DIS_0 to DIS_6 Register (offset = 180h to 198h) [reset = 0h]

DIS_0 to DIS_6 is shown in Figure 3-6 and described in Table 3-9.

The DISn registers disable interrupts. Bit 0 of DIS0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of DIS1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of DIS2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of DIS3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of DIS4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of DIS5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of DIS6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.

Note:

This register can only be accessed from privileged mode.

Figure 3-6 DIS_0 to DIS_6 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-9 DIS_0 to DIS_6 Register Field Descriptions
Bit Field Type Reset Description
31-0 INT R/W 0h

Interrupt Disable EN5 (for DIS5) register; EN6 (for DIS6) register

0h (R) = On a read, indicates the interrupt is disabled.

1h (W) = On a write, no effect.

1h (R) = On a read, indicates the interrupt is enabled.

3.3.1.7 PEND_0 to PEND_6 Register (offset = 200h to 218h) [reset = 0h]

PEND_0 to PEND_6 is shown in Figure 3-7 and described in Table 3-10.

The PENDn registers force interrupts into the pending state and show which interrupts are pending. Bit 0 of PEND0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of PEND1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of PEND2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of PEND3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of PEND4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of PEND5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of PEND6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.

Note:

This register can only be accessed from privileged mode.

Figure 3-7 PEND_0 to PEND_6 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-10 PEND_0 to PEND_6 Register Field Descriptions
Bit Field Type Reset Description
31-0 INT R/W 0h

Interrupt Set Pending

If the corresponding interrupt is already pending, setting a bit has no effect. A bit can only be cleared by setting the corresponding INT[n] bit in the UNPEND0 (for PEND0 to PEND3) register.

UNPEND4 (for PEND4) register

UNPEND5 (for PEND5) register

UNPEND6 (for PEND6) register

0h (W) = On a write, no effect.

0h (R) = On a read, indicates that the interrupt is not pending.

1h (W) = On a write, the corresponding interrupt is set to pending even if it is disabled.

1h (R) = On a read, indicates that the interrupt is pending.

3.3.1.8 UNPEND_0 to UNPEND_6 Register (offset = 280h to 298h) [reset = 0h]

UNPEND_0 to UNPEND_6 is shown in Figure 3-8 and described in Table 3-11.

The UNPENDn registers show which interrupts are pending and remove the pending state from interrupts. Bit 0 of UNPEND0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of UNPEND1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of UNPEND2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of UNPEND3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of UNPEND4 corresponds to Interrupt 128; bit 10 corresponds to Interrupt 159. Bit 0 of UNPEND5 corresponds to Interrupt 160; bit 31 corresponds to interrupt 191. Bit 0 of UNPEND6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.

Note:

This register can only be accessed from privileged mode.

Figure 3-8 UNPEND_0 to UNPEND_6 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-11 UNPEND_0 to UNPEND_6 Register Field Descriptions
Bit Field Type Reset Description
31-0 INT R/W 0h

Interrupt Clear Pending

Setting a bit does not affect the active state of the corresponding interrupt.

0h (W) = On a write, no effect.

0h (R) = On a read, indicates that the interrupt is not pending.

1h (W) = On a write, clears the corresponding INT[n] bit in the PEND0 (for UNPEND0 to UNPEND3) register; PEND4 (for UNPEND4) register; PEND5 (for UNPEND5) register; PEND6 (for UNPEND6) register; so that interrupt [n] is no longer pending.

1h (R) = On a read, indicates that the interrupt is pending.

3.3.1.9 ACTIVE_0 to ACTIVE_6 Register (offset = 300h to 318h) [reset = 0h]

ACTIVE_0 to ACTIVE_6 is shown in Figure 3-9 and described in Table 3-12.

The UNPENDn registers indicate which interrupts are active. Bit 0 of ACTIVE0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of ACTIVE1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of ACTIVE2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of ACTIVE3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of ACTIVE4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of ACTIVE5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of ACTIVE6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.

CAUTION:

Do not manually set or clear the bits in this register.

Figure 3-9 ACTIVE_0 to ACTIVE_6 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-12 ACTIVE_0 to ACTIVE_6 Register Field Descriptions
Bit Field Type Reset Description
31-0 INT R 0h

Interrupt Active

0h = The corresponding interrupt is not active.

1h = The corresponding interrupt is active, or active and pending.

3.3.1.10 PRI_0 to PRI_49 Register (offset = 400h to 4C4h) [reset = 0h]

PRI_0 to PRI_49 is shown in Figure 3-10 and described in Table 3-13.

The PRIn registers provide 3-bit priority fields for each interrupt. These registers are byte accessible. Each register holds four priority fields that are assigned to interrupts as follows: bits 31 to 29 have interrupt [4n+3], bits 23 to 21 have interrupt [4n+2], bits 15 to 13 have interrupt [4n+1], and bits 7 to have interrupt [4n]. Each priority level can be split into separate group priority and subpriority fields. The PRIGROUP field in the Application Interrupt and Reset Control (APINT) register indicates the position of the binary point that splits the priority and subpriority fields.

Note:

This register can only be accessed from privileged mode.

Figure 3-10 PRI_0 to PRI_49 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
INTD RESERVED INTC RESERVED
R/W-0h R-0h R/W-0h R-0h
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INTB RESERVED INTA RESERVED
R/W-0h R-0h R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-13 PRI_0 to PRI_49 Register Field Descriptions
Bit Field Type Reset Description
31-29 INTD R/W 0h

Interrupt Priority for Interrupt [4n+3]

This field holds a priority value, 0-7, for the interrupt with the number [4n+3], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt.

28-24 RESERVED R 0h
23-21 INTC R/W 0h

Interrupt Priority for Interrupt [4n+2]

This field holds a priority value, 0-7, for the interrupt with the number [4n+2], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt.

20-16 RESERVED R 0h
15-13 INTB R/W 0h

Interrupt Priority for Interrupt [4n+1]

This field holds a priority value, 0-7, for the interrupt with the number [4n+1], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt.

12-8 RESERVED R 0h
7-5 INTA R/W 0h

Interrupt Priority for Interrupt [4n]

This field holds a priority value, 0-7, for the interrupt with the number [4n], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt.

4-0 RESERVED R 0h

3.3.1.11 CPUID Register (Offset = D00h) [reset = 410FC241h]

CPUID is shown in Figure 3-11 and described in Table 3-14.

Return to Summary Table.

The CPUID register contains the ARM Cortex-M4 processor part number, version, and implementation information.

Note:

This register can only be accessed from privileged mode.

Figure 3-11 CPUID Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IMP VAR CON PARTNO REV
R-41h R-0h R-Fh R-C24h R-1h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-14 CPUID Register Field Descriptions
Bit Field Type Reset Description
31-24 IMP R 41h

Implementer Code

41h = ARM

23-20 VAR R 0h

Variant Number

0h = The rn value in the rnpn product revision identifier, for example, the 0 in r0p0.

19-16 CON R Fh

Constant Value Description 0xF Always reads as 0xF.

15-4 PARTNO R C24h

Part Number

C24h = Cortex-M4 application processor in CC32xx.

3-0 REV R 1h

Revision Number

1h = The pn value in the rnpn product revision identifier; for example, the 1 in r0p1.

3.3.1.12 INTCTRL Register (Offset = D04h) [reset = 0h]

INTCTRL is shown in Figure 3-12 and described in Table 3-15.

Return to Summary Table.

Figure 3-12 INTCTRL Register
31 30 29 28 27 26 25 24
NMISET RESERVED PENDSV UNPENDSV PENDSTSET PENDSTCLR RESERVED
R/W-0h R-0h R/W-0h W-0h R/W-0h W-0h R-0h
23 22 21 20 19 18 17 16
ISRPRE ISRPEND RESERVED VECPEND
R-0h R-0h R-0h R-0h
15 14 13 12 11 10 9 8
VECPEND RETBASE RESERVED
R-0h R-0h R-0h
7 6 5 4 3 2 1 0
VECACT
R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-15 INTCTRL Register Field Descriptions
Bit Field Type Reset Description
31 NMISET R/W 0h

NMI Set Pending

Because NMI is the highest-priority exception, normally the processor enters the NMI exception handler as soon as it registers the setting of this bit, and clears this bit on entering the interrupt handler. A read of this bit by the NMI exception handler returns 1 only if the NMI signal is reasserted while the processor is executing that handler.

0h (W) = On a write, no effect.

0h (R) = On a read, indicates an NMI exception is not pending.

1h (W) = On a write, changes the NMI exception state to pending.

1h (R) = On a read, indicates an NMI exception is pending.

30-29 RESERVED R 0h
28 PENDSV R/W 0h

PendSV Set Pending

Setting this bit is the only way to set the PendSV exception state to pending. This bit is cleared by writing a 1 to the UNPENDSV bit.

0h (W) = On a write, no effect.

0h (R) = On a read, indicates a PendSV exception is not pending.

1h (W) = On a write, changes the PendSV exception state to pending.

1h (R) = On a read, indicates a PendSV exception is pending.

27 UNPENDSV W 0h

PendSV Clear Pending

This bit is write onl on a register read, its value is unknown.

0h = On a write, no effect.

1h = On a write, removes the pending state from the PendSV exception.

26 PENDSTSET R/W 0h

SysTick Set Pending

This bit is cleared by writing a 1 to the PENDSTCLR bit.

0h (W) = On a write, no effect.

0h (R) = On a read, indicates a SysTick exception is not pending.

1h (W) = On a write, changes the SysTick exception state to pending.

1h (R) = On a read, indicates a SysTick exception is pending.

25 PENDSTCLR W 0h

SysTick Clear Pending

This bit is write only on a register read, its value is unknown.

0h = On a write, no effect.

1h = On a write, removes the pending state from the SysTick exception.

24 RESERVED R 0h
23 ISRPRE R 0h

Debug Interrupt Handling

This bit is only meaningful in debug mode, and reads as zero when the processor is not in debug mode.

0h = The release from halt does not take an interrupt.

1h = The release from halt takes an interrupt.

22 ISRPEND R 0h

Interrupt Pending

This bit provides status for all interrupts excluding NMI and faults.

0h = No interrupt is pending.

1h = An interrupt is pending.

21-20 RESERVED R 0h
19-12 VECPEND R 0h

Interrupt Pending Vector Number

This field contains the exception number of the highest priority pending enabled exception. The value indicated by this field includes the effect of the BASEPRI and FAULTMASK registers, but not any effect of the PRIMASK register.

0h = No exceptions are pending

1h = Reserved

2h = NMI

3h = Hard fault

4h = Memory management fault

5h = Bus fault

6h = Usage fault

7h- Ah = Reserved

Bh = SVCall

Ch = Reserved for Debug

Dh = Reserved

Eh = PendSV

Fh = SysTick

10h = Interrupt Vector 0

11h = Interrupt Vector 1

...

D9h = Interrupt Vector 199

11 RETBASE R 0h

Return to Base

This bit provides status for all interrupts excluding NMI and faults. This bit only has meaning if the processor is currently executing an ISR (the Interrupt Program Status (IPSR) register is non-zero).

0h = There are preempted active exceptions to execute.

1h = There are no active exceptions, or the currently executing exception is the only active exception.

10-8 RESERVED R 0h
7-0 VECACT R 0h

Interrupt Pending Vector Number

This field contains the active exception number. The exception numbers can be found in the description for the VECPEND field. If this field is clear, the processor is in Thread mode.

This field contains the same value as the ISRNUM field in the IPSR register.

Subtract 16 from this value to obtain the IRQ number required to index into the Interrupt Set Enable (ENn), Interrupt Clear Enable (DISn), Interrupt Set Pending (PENDn), Interrupt Clear Pending (UNPENDn), and Interrupt Priority (PRIn) registers.

3.3.1.13 VTABLE Register (Offset = D08h) [reset = 0h]

VTABLE is shown in Figure 3-13 and described in Table 3-16.

Return to Summary Table.

The VTABLE register indicates the offset of the vector table base address from memory address 0x0000.0000.

Note:

This register can only be accessed from privileged mode.

Figure 3-13 VTABLE Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OFFSET RESERVED
R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-16 VTABLE Register Field Descriptions
Bit Field Type Reset Description
31-10 OFFSET R/W 0h

Vector Table Offset

When configuring the OFFSET field, the offset must be aligned to the number of exception entries in the vector table. Because there are 199 interrupts, the offset must be aligned on a 1024-byte boundary.

9-0 RESERVED R 0h

3.3.1.14 APINT Register (Offset = D0Ch) [reset = FA050000h]

APINT is shown in Figure 3-14 and described in Table 3-17.

Return to Summary Table.

The APINT register provides priority grouping control for the exception model, endian status for data accesses, and reset control of the system. To write to this register, 0x05FA must be written to the VECTKEY field, otherwise the write is ignored. The PRIGROUP field indicates the position of the binary point that splits the INTx fields in the Interrupt Priority (PRIx) registers into separate group priority and subpriority fields. The bit numbers in the Group Priority Field and Subpriority Field columns in the table refer to the bits in the INTA field. For the INTB field, the corresponding bits are 15:13; for INTC, 23:21; and for INTD, 31:29.

Note:

This register can only be accessed from privileged mode.

Note:

Determining preemption of an exception uses only the group priority field.

PRIGROUP Bit Field = Binary Point = Group Priority Field = Subpriority Field = Group Priorities = Subpriorities

0h-4h = bxxx = [7:5] = None = 8 = 1

5h = bxx.y = [7:6] = [5] = 4 = 2

6h = bx.yy = [7] = [6:5] = 2 = 4

7h = b.yyy = None = [7:5] = 1 = 8

INTx field showing the binary point. An x denotes a group priority field bit, and a y denotes a subpriority field bit.

Figure 3-14 APINT Register
31 30 29 28 27 26 25 24
VECTKEY
R/W-FA05h
23 22 21 20 19 18 17 16
VECTKEY
R/W-FA05h
15 14 13 12 11 10 9 8
ENDIANESS RESERVED PRIGROUP
R-0h R-0h R/W-0h
7 6 5 4 3 2 1 0
RESERVED SYSRESREQ VECTCLRACT VECTRESET
R-0h W-0h W-0h W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-17 APINT Register Field Descriptions
Bit Field Type Reset Description
31-16 VECTKEY R/W FA05h

Register Key

This field is used to guard against accidental writes to this register. 0x05FA must be written to this field in order to change the bits in this register. On a read, 0xFA05 is returned.

15 ENDIANESS R 0h

Data Endianess

The CC32xx implementation uses only little-endian mode, so this is cleared to 0.

14-11 RESERVED R 0h
10-8 PRIGROUP R/W 0h

Interrupt Priority Grouping

This field determines the split of group priority from subpriority

7-3 RESERVED R 0h
2 SYSRESREQ W 0h

System Reset Request

This bit is automatically cleared during the reset of the core and reads as 0.

0h = No effect.

1h = Resets the core and all on-chip peripherals except the Debug interface.

1 VECTCLRACT W 0h

Clear Active NMI / Fault

This bit is reserved for debug use and reads as 0. This bit must be written as a 0, otherwise behavior is unpredictable.

0 VECTRESET W 0h

System Reset

This bit is reserved for debug use and reads as 0. This bit must be written as a 0, otherwise behavior is unpredictable.

3.3.1.15 SYSCTRL Register (Offset = D10h) [reset = 0h]

SYSCTRL is shown in Figure 3-15 and described in Table 3-18.

Return to Summary Table.

The SYSCTRL register controls features of entry to and exit from low-power state.

Note:

This register can only be accessed from privileged mode.

Figure 3-15 SYSCTRL Register
31 30 29 28 27 26 25 24
RESERVED
R-0h
23 22 21 20 19 18 17 16
RESERVED
R-0h
15 14 13 12 11 10 9 8
RESERVED
R-0h
7 6 5 4 3 2 1 0
RESERVED SEVONPEND RESERVED SLEEPDEEP SLEEPEXIT RESERVED
R-0h R/W-0h R-0h R/W-0h R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-18 SYSCTRL Register Field Descriptions
Bit Field Type Reset Description
31-5 RESERVED R 0h
4 SEVONPEND R/W 0h

Wake Up on Pending

0h = Only enabled interrupts or events can wake up the processor; disabled interrupts are excluded.

1h = Enabled events and all interrupts, including disabled interrupts, can wake up the processor.

3 RESERVED R 0h
2 SLEEPDEEP R/W 0h

Deep Sleep Enable

0h = Use Sleep mode as the low power mode.

1h = Use Deep-sleep mode as the low power mode.

1 SLEEPEXIT R/W 0h

Sleep on ISR Exit

Setting this bit enables an interrupt-driven application to avoid returning to an empty main application.

0h = When returning from Handler mode to Thread mode, do not sleep when returning to Thread mode.

1h = When returning from Handler mode to Thread mode, enter sleep or deep sleep on return from an ISR.

0 RESERVED R 0h

3.3.1.16 CFGCTRL Register (Offset = D14h) [reset = 200h]

CFGCTRL is shown in Figure 3-16 and described in Table 3-19.

Return to Summary Table.

The CFGCTRL register controls entry to Thread mode and enables:

  • The handlers for NMI, hard fault and faults escalated by the FAULTMASK register to ignore bus faults
  • Trapping of divide by zero and unaligned accesses
  • Access to the SWTRIG register by unprivileged software.

Note:

This register can only be accessed from privileged mode.

Figure 3-16 CFGCTRL Register
31 30 29 28 27 26 25 24
RESERVED
R-0h
23 22 21 20 19 18 17 16
RESERVED
R-0h
15 14 13 12 11 10 9 8
RESERVED STKALIGN BFHFMIGN
R-0h R/W-1h R/W-0h
7 6 5 4 3 2 1 0
RESERVED DIV0 UNALIGNED RESERVED MANIPEND BASETHR
R-0h R/W-0h R/W-0h R-0h R/W-0h R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-19 CFGCTRL Register Field Descriptions
Bit Field Type Reset Description
31-10 RESERVED R 0h
9 STKALIGN R/W 1h

Stack Alignment on Exception Entry

On exception entry, the processor uses bit 9 of the stacked PSR to indicate the stack alignment. On return from the exception, it uses this stacked bit to restore the correct stack alignment.

0h = The stack is 4-byte aligned.

1h = The stack is 8-byte aligned.

8 BFHFMIGN R/W 0h

Ignore Bus Fault in NMI and Fault

This bit enables handlers with priority -1 or -2 to ignore data bus faults caused by load and store instructions. The setting of this bit applies to the hard fault, NMI, and FAULTMASK-escalated handlers. Set this bit only when the handler and its data are in absolutely safe memory. The normal use of this bit is to probe system devices and bridges to detect control path problems and fix them.

0h = Data bus faults caused by load and store instructions cause a lock-up.

1h = Handlers running at priority -1 and -2 ignore data bus faults caused by load and store instructions.

7-5 RESERVED R 0h
4 DIV0 R/W 0h

Trap on Divide by 0

This bit enables faulting or halting when the processor executes an SDIV or UDIV instruction with a divisor of 0.

0h = Do not trap on divide by 0. A divide by zero returns a quotient of 0.

1h = Trap on divide by 0.

3 UNALIGNED R/W 0h

Trap on Unaligned Access

Unaligned LDM, STM, LDRD, and STRD instructions always fault regardless of whether UNALIGNED is set.

0h = Do not trap on unaligned halfword and word accesses.

1h = Trap on unaligned halfword and word accesses. An unaligned access generates a usage fault.

2 RESERVED R 0h
1 MANIPEND R/W 0h

Allow Main Interrupt Trigger

0h = Disables unprivileged software access to the SWTRIG register.

1h = Enables unprivileged software access to the SWTRIG register.

0 BASETHR R/W 0h

Thread State Control

0h = The processor can enter Thread mode only when no exception is active.

1h = The processor can enter Thread mode from any level under the control of an EXC_RETURN value.

3.3.1.17 SYSPRI1 Register (Offset = D18h) [reset = 0h]

SYSPRI1 is shown in Figure 3-17 and described in Table 3-20.

Return to Summary Table.

The SYSPRI1 register configures the priority level, 0 to 7 of the usage fault, bus fault, and memory management fault exception handlers. This register is byte-accessible.

Note:

This register can only be accessed from privileged mode.

Figure 3-17 SYSPRI1 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
RESERVED USAGE RESERVED
R-0h R/W-0h R-0h
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUS RESERVED MEM RESERVED
R/W-0h R-0h R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-20 SYSPRI1 Register Field Descriptions
Bit Field Type Reset Description
31-24 RESERVED R 0h
23-21 USAGE R/W 0h

Usage Fault Priority

This field configures the priority level of the usage fault. Configurable priority values are in the range 0-7, with lower values having higher priority.

20-16 RESERVED R 0h
15-13 BUS R/W 0h

Bus Fault Priority

This field configures the priority level of the bus fault. Configurable priority values are in the range 0-7, with lower values having higher priority.

12-8 RESERVED R 0h
7-5 MEM R/W 0h

Memory Management Fault Priority

This field configures the priority level of the memory management fault. Configurable priority values are in the range 0-7, with lower values having higher priority.

4-0 RESERVED R 0h

3.3.1.18 SYSPRI2 Register (Offset = D1Ch) [reset = 0h]

SYSPRI2 is shown in Figure 3-18 and described in Table 3-21.

Return to Summary Table.

The SYSPRI2 register configures the priority level, 0 to 7 of the SVCall handler. This register is byte-accessible.

Note:

This register can only be accessed from privileged mode.

Figure 3-18 SYSPRI2 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SVC RESERVED
R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-21 SYSPRI2 Register Field Descriptions
Bit Field Type Reset Description
31-29 SVC R/W 0h

SVCall Priority

This field configures the priority level of SVCall. Configurable priority values are in the range 0-7, with lower values having higher priority.

28-0 RESERVED R 0h

3.3.1.19 SYSPRI3 Register (Offset = D20h) [reset = 0h]

SYSPRI3 is shown in Figure 3-19 and described in Table 3-22.

Return to Summary Table.

The SYSPRI3 register configures the priority level, 0 to 7 of the SysTick exception and PendSV handlers. This register is byte-accessible.

Note:

This register can only be accessed from privileged mode.

Figure 3-19 SYSPRI3 Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
TICK RESERVED PENDSV RESERVED
R/W-0h R-0h R/W-0h R-0h
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESERVED DEBUG RESERVED
R-0h R/W-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-22 SYSPRI3 Register Field Descriptions
Bit Field Type Reset Description
31-29 TICK R/W 0h

SysTick Exception Priority

This field configures the priority level of the SysTick exception. Configurable priority values are in the range 0-7, with lower values having higher priority.

28-24 RESERVED R 0h
23-21 PENDSV R/W 0h

PendSV Priority

This field configures the priority level of PendSV. Configurable priority values are in the range 0-7, with lower values having higher priority.

20-8 RESERVED R 0h
7-5 DEBUG R/W 0h

Debug Priority

This field configures the priority level of Debug. Configurable priority values are in the range 0-7, with lower values having higher priority.

4-0 RESERVED R 0h

3.3.1.20 SYSHNDCTRL Register (Offset = D24h) [reset = 0h]

SYSHNDCTRL is shown in Figure 3-20 and described in Table 3-23.

Return to Summary Table.

The SYSHNDCTRL register enables the system handlers and indicates the pending status of the usage fault, bus fault, memory management fault, and SVC exceptions, as well as the active status of the system handlers. If a system handler is disabled and the corresponding fault occurs, the processor treats the fault as a hard fault. This register can be modified to change the pending or active status of system exceptions. An OS kernel can write to the active bits to perform a context switch that changes the current exception type.

Note:

This register can only be accessed from privileged mode.

CAUTION:

Software that changes the value of an active bit in this register without correct adjustment to the stacked content can cause the processor to generate a fault exception. Ensure software that writes to this register retains and subsequently restores the current active status. If the value of a bit in this register must be modified after enabling the system handlers, a read-modify-write procedure must be used to ensure that only the required bit is modified.

Figure 3-20 SYSHNDCTRL Register
31 30 29 28 27 26 25 24
RESERVED
R-0h
23 22 21 20 19 18 17 16
RESERVED USAGE BUS MEM
R-0h R/W-0h R/W-0h R/W-0h
15 14 13 12 11 10 9 8
SVC BUSP MEMP USAGEP TICK PNDSV RESERVED MON
R/W-0h R/W-0h R/W-0h R/W-0h R/W-0h R/W-0h R-0h R/W-0h
7 6 5 4 3 2 1 0
SVCA RESERVED USGA RESERVED BUSA MEMA
R/W-0h R-0h R/W-0h R-0h R/W-0h R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-23 SYSHNDCTRL Register Field Descriptions
Bit Field Type Reset Description
31-19 RESERVED R 0h
18 USAGE R/W 0h

Usage Fault Enable

0h = Disables the usage fault exception.

1h = Enables the usage fault exception.

17 BUS R/W 0h

Bus Fault Enable

0h = Disables the bus fault exception.

1h = Enables the bus fault exception.

16 MEM R/W 0h

Memory Management Fault Enable

0h = Disables the memory management fault exception.

1h = Enables the memory management fault exception.

15 SVC R/W 0h

SVC Call Pending

This bit can be modified to change the pending status of the SVC call exception.

0h = An SVC call exception is not pending.

1h = An SVC call exception is pending.

14 BUSP R/W 0h

Bus Fault Pending

This bit can be modified to change the pending status of the bus fault exception.

0h = A bus fault exception is not pending.

1h = A bus fault exception is pending.

13 MEMP R/W 0h

Memory Management Fault Pending

This bit can be modified to change the pending status of the memory management fault exception.

0h = A memory management fault exception is not pending.

1h = A memory management fault exception is pending.

12 USAGEP R/W 0h

Usage Fault Pending

This bit can be modified to change the pending status of the usage fault exception.

0h = A usage fault exception is not pending.

1h = A usage fault exception is pending.

11 TICK R/W 0h

SysTick Exception Active

This bit can be modified to change the active status of the SysTick exception, however, see the Caution above before setting this bit.

0h = A SysTick exception is not active.

1h = A SysTick exception is active.

10 PNDSV R/W 0h

PendSV Exception Active

This bit can be modified to change the active status of the PendSV exception, however, see the Caution above before setting this bit.

0h = A PendSV exception is not active.

1h = A PendSV exception is active.

9 RESERVED R 0h
8 MON R/W 0h

Debug Monitor Active

0h = The Debug monitor is not active.

1h = The Debug monitor is active.

7 SVCA R/W 0h

SVC Call Active

This bit can be modified to change the active status of the SVC call exception, however, see the Caution above before setting this bit.

0h = SVC call is not active.

1h = SVC call is active.

6-4 RESERVED R 0h
3 USGA R/W 0h

Usage Fault Active

This bit can be modified to change the active status of the usage fault exception, however, see the Caution above before setting this bit.

0h = Usage fault is not active.

1h = Usage fault is active.

2 RESERVED R 0h
1 BUSA R/W 0h

Bus Fault Active

This bit can be modified to change the active status of the bus fault exception, however, see the Caution above before setting this bit.

0h = Bus fault is not active.

1h = Bus fault is active.

0 MEMA R/W 0h

Memory Management Fault Active

This bit can be modified to change the active status of the memory management fault exception, however, see the Caution above before setting this bit.

0h = Memory management fault is not active.

1h = Memory management fault is active.

3.3.1.21 FAULTSTAT Register (Offset = D28h) [reset = 0h]

FAULTSTAT is shown in Figure 3-21 and described in Table 3-24.

Return to Summary Table.

The FAULTSTAT register indicates the cause of a memory management fault, bus fault, or usage fault. Each of these functions is assigned to a subregister as follows:

  • Usage Fault Status (UFAULTSTAT), bits 31:16
  • Bus Fault Status (BFAULTSTAT), bits 15:8
  • Memory Management Fault Status (MFAULTSTAT), bits 7:0 (Not applicable for CC32xx)
FAULTSTAT is byte-accessible.

FAULTSTAT or its subregisters can be accessed as follows:

  • The complete FAULTSTAT register, with a word access to offset 0xD28
  • The MFAULTSTAT, with a byte access to offset 0xD28
  • The MFAULTSTAT and BFAULTSTAT, with a halfword access to offset 0xD28
  • The BFAULTSTAT, with a byte access to offset 0xD29
  • The UFAULTSTAT, with a halfword access to offset 0xD2A
Bits are cleared by writing a 1 to them.

In a fault handler, the true faulting address can be determined by:

  1. Read and save the Memory Management Fault Address (MMADDR) or Bus Fault Address (FAULTADDR) value.
  2. Read the MMARV bit in MFAULTSTAT, or the BFARV bit in BFAULTSTAT to determine if the MMADDR or FAULTADDR contents are valid.
Software must follow this sequence because another higher priority exception might change the MMADDR or FAULTADDR value. For example, if a higher priority handler preempts the current fault handler, the other fault might change the MMADDR or FAULTADDR value.

Note:

This register can only be accessed from privileged mode.

Figure 3-21 FAULTSTAT Register
31 30 29 28 27 26 25 24
RESERVED DIV0 UNALIGN
R-0h R/W1C-0h R/W1C-0h
23 22 21 20 19 18 17 16
RESERVED NOCP INVPC INVSTAT UNDEF
R-0h R/W1C-0h R/W1C-0h R/W1C-0h R/W1C-0h
15 14 13 12 11 10 9 8
BFARV RESERVED BLSPERR BSTKE BUSTKE IMPRE PRECISE IBUS
R/W1C-0h R-0h R/W1C-0h R/W1C-0h R/W1C-0h R/W1C-0h R/W1C-0h R/W1C-0h
7 6 5 4 3 2 1 0
MMARV RESERVED MLSPERR MSTKE MUSTKE RESERVED DERR IERR
R/W1C-0h R-0h R/W1C-0h R/W1C-0h R/W1C-0h R-0h R/W1C-0h R/W1C-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-24 FAULTSTAT Register Field Descriptions
Bit Field Type Reset Description
31-26 RESERVED R 0h
25 DIV0 R/W1C 0h

Divide-by-Zero Usage Fault

When this bit is set, the PC value stacked for the exception return points to the instruction that performed the divide by zero. Trapping on divide-by-zero is enabled by setting the DIV0 bit in the Configuration and Control (CFGCTRL) register. This bit is cleared by writing a 1 to it.

0h = No divide-by-zero fault has occurred, or divide-by-zero trapping is not enabled.

1h = The processor has executed an SDIV or UDIV instruction with a divisor of 0.

24 UNALIGN R/W1C 0h

Unaligned Access Usage Fault

Unaligned LDM, STM, LDRD, and STRD instructions always fault regardless of the configuration of this bit. Trapping on unaligned access is enabled by setting the UNALIGNED bit in the CFGCTRL register. This bit is cleared by writing a 1 to it.

0h = No unaligned access fault has occurred, or unaligned access trapping is not enabled.

1h = The processor has made an unaligned memory access.

23-20 RESERVED R 0h
19 NOCP R/W1C 0h

No Coprocessor Usage Fault

This bit is cleared by writing a 1 to it.

0h = A usage fault has not been caused by attempting to access a coprocessor.

1h = The processor has attempted to access a coprocessor.

18 INVPC R/W1C 0h

Invalid PC Load Usage Fault

When this bit is set, the PC value stacked for the exception return points to the instruction that tried to perform the illegal load of the PC. This bit is cleared by writing a 1 to it.

0h = A usage fault has not been caused by attempting to load an invalid PC value.

1h = The processor has attempted an illegal load of EXC_RETURN to the PC as a result of an invalid context or an invalid EXC_RETURN value.

17 INVSTAT R/W1C 0h

Invalid State Usage Fault

When this bit is set, the PC value stacked for the exception return points to the instruction that attempted the illegal use of the Execution Program Status Register (EPSR) register. This bit is not set if an undefined instruction uses the EPSR register. This bit is cleared by writing a 1 to it.

0h = A usage fault has not been caused by an invalid state.

1h = The processor has attempted to execute an instruction that makes illegal use of the EPSR register.

16 UNDEF R/W1C 0h

Undefined Instruction Usage Fault

When this bit is set, the PC value stacked for the exception return points to the undefined instruction. An undefined instruction is an instruction that the processor cannot decode. This bit is cleared by writing a 1 to it.

0h = A usage fault has not been caused by an undefined instruction.

1h = The processor has attempted to execute an undefined instruction.

15 BFARV R/W1C 0h

Bus Fault Address Register Valid

This bit is set after a bus fault, where the address is known. Other faults can clear this bit, such as a memory management fault occurring later. If a bus fault occurs and is escalated to a hard fault because of priority, the hard fault handler must clear this bit. This action prevents problems if returning to a stacked active bus fault handler whose FAULTADDR register value has been overwritten. This bit is cleared by writing a 1 to it.

0h = The value in the Bus Fault Address (FAULTADDR) register is not a valid fault address.

1h = The FAULTADDR register is holding a valid fault address.

14 RESERVED R 0h
13 BLSPERR R/W1C 0h

N/A

12 BSTKE R/W1C 0h

Stack Bus Fault

When this bit is set, the SP is still adjusted but the values in the context area on the stack might be incorrect. A fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it.

0h = No bus fault has occurred on stacking for exception entry.

1h = Stacking for an exception entry has caused one or more bus faults.

11 BUSTKE R/W1C 0h

Unstack Bus Fault

This fault is chained to the handler. Thus, when this bit is set, the original return stack is still present. The SP is not adjusted from the failing return, a new save is not performed, and a fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it.

0h = No bus fault has occurred on unstacking for a return from exception.

1h = Unstacking for a return from exception has caused one or more bus faults.

10 IMPRE R/W1C 0h

Imprecise Data Bus Error

When this bit is set, a fault address is not written to the FAULTADDR register. This fault is asynchronous. Therefore, if the fault is detected when the priority of the current process is higher than the bus fault priority, the bus fault becomes pending and becomes active only when the processor returns from all higher-priority processes. If a precise fault occurs before the processor enters the handler for the imprecise bus fault, the handler detects that both the IMPRE bit is set and one of the precise fault status bits is set. This bit is cleared by writing a 1 to it.

0h = An imprecise data bus error has not occurred.

1h = A data bus error has occurred, but the return address in the stack frame is not related to the instruction that caused the error.

9 PRECISE R/W1C 0h

Precise Data Bus Error

When this bit is set, the fault address is written to the FAULTADDR register. This bit is cleared by writing a 1 to it.

0h = A precise data bus error has not occurred.

1h = A data bus error has occurred, and the PC value stacked for the exception return points to the instruction that caused the fault.

8 IBUS R/W1C 0h

Instruction Bus Error

The processor detects the instruction bus error on prefetching an instruction, but sets this bit only if it attempts to issue the faulting instruction. When this bit is set, a fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it.

0h = An instruction bus error has not occurred.

1h = An instruction bus error has occurred.

7 MMARV R/W1C 0h

Memory Management Fault Address Register Valid

If a memory management fault occurs and is escalated to a hard fault because of priority, the hard fault handler must clear this bit. This action prevents problems if returning to a stacked active memory management fault handler whose MMADDR register value has been overwritten.

0h = The This bit is cleared by writing a 1 to it. value in the Memory Management Fault Address (MMADDR) register is not a valid fault address.

1h = The MMADDR register is holding a valid fault address.

6 RESERVED R 0h
5 MLSPERR R/W1C 0h

N/A

4 MSTKE R/W1C 0h

Stack Access Violation

When this bit is set, the SP is still adjusted but the values in the context area on the stack might be incorrect. A fault address is not written to the MMADDR register. This bit is cleared by writing a 1 to it.

0h = No memory management fault has occurred on stacking for exception entry.

1h = Stacking for an exception entry has caused one or more access violations.

3 MUSTKE R/W1C 0h

Unstack Access Violation

This fault is chained to the handler. Thus, when this bit is set, the original return stack is still present. The SP is not adjusted from the failing return, a new save is not performed, and a fault address is not written to the MMADDR register. This bit is cleared by writing a 1 to it.

0h = No memory management fault has occurred on unstacking for a return from exception.

1h = Unstacking for a return from exception has caused one or more access violations.

2 RESERVED R 0h
1 DERR R/W1C 0h

Data Access Violation

When this bit is set, the PC value stacked for the exception return points to the faulting instruction and the address of the attempted access is written to the MMADDR register. This bit is cleared by writing a 1 to it.

0h = A data access violation has not occurred.

1h = The processor attempted a load or store at a location that does not permit the operation.

0 IERR R/W1C 0h

Instruction Access Violation

This fault occurs on any access to an XN region. When this bit is set, the PC value stacked for the exception return points to the faulting instruction and the address of the attempted access is not written to the MMADDR register. This bit is cleared by writing a 1 to it.

0h = An instruction access violation has not occurred.

1h = The processor attempted an instruction fetch from a location that does not permit execution.

3.3.1.22 HFAULTSTAT Register (Offset = D2Ch) [reset = 0h]

HFAULTSTAT is shown in Figure 3-22 and described in Table 3-25.

Return to Summary Table.

The HFAULTSTAT register gives information about events that activate the hard fault handler. Bits are cleared by writing a 1 to them.

Note:

This register can only be accessed from privileged mode.

Figure 3-22 HFAULTSTAT Register
31 30 29 28 27 26 25 24
DBG FORCED RESERVED
R/W1C-0h R/W1C-0h R-0h
23 22 21 20 19 18 17 16
RESERVED
R-0h
15 14 13 12 11 10 9 8
RESERVED
R-0h
7 6 5 4 3 2 1 0
RESERVED VECT RESERVED
R-0h R/W1C-0h R-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-25 HFAULTSTAT Register Field Descriptions
Bit Field Type Reset Description
31 DBG R/W1C 0h

Debug Event

This bit is reserved for debug use. This bit must be written as a 0, otherwise behavior is unpredictable.

30 FORCED R/W1C 0h

Forced Hard Fault

When this bit is set, the hard fault handler must read the other fault status registers to find the cause of the fault. This bit is cleared by writing a 1 to it.

0h = No forced hard fault has occurred.

1h = A forced hard fault has been generated by escalation of a fault with configurable priority that cannot be handled, either because of priority or because it is disabled.

29-2 RESERVED R 0h
1 VECT R/W1C 0h

Vector Table Read Fault

This error is always handled by the hard fault handler. When this bit is set, the PC value stacked for the exception return points to the instruction that was preempted by the exception. This bit is cleared by writing a 1 to it.

0h = No bus fault has occurred on a vector table read.

1h = A bus fault occurred on a vector table read.

0 RESERVED R 0h

3.3.1.23 FAULTDDR Register (Offset = D38h) [reset = 0h]

FAULTDDR is shown in Figure 3-23 and described in Table 3-26.

Return to Summary Table.

The FAULTADDR register contains the address of the location that generated a bus fault. When an unaligned access faults, the address in the FAULTADDR register is the one requested by the instruction, even if it is not the address of the fault. Bits in the Bus Fault Status (BFAULTSTAT) register indicate the cause of the fault and whether the value in the FAULTADDR register is valid.

Note:

This register can only be accessed from privileged mode.

Figure 3-23 FAULTDDR Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADDR
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-26 FAULTDDR Register Field Descriptions
Bit Field Type Reset Description
31-0 ADDR R/W 0h

Fault Address

When the FAULTADDRV bit of BFAULTSTAT is set, this field holds the address of the location that generated the bus fault.

3.3.1.24 SWTRIG Register (Offset = F00h) [reset = 0h]

SWTRIG is shown in Figure 3-24 and described in Table 3-27.

Return to Summary Table.

Writing an interrupt number to the SWTRIG register generates a software-generated interrupt (SGI). When the MAINPEND bit in the Configuration and Control (CFGCTRL) register is set, unprivileged software can access the SWTRIG register.

Note:

Only privileged software can enable unprivileged access to the SWTRIG register.

Figure 3-24 SWTRIG Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESERVED INTID
R-0h W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 3-27 SWTRIG Register Field Descriptions
Bit Field Type Reset Description
31-8 RESERVED R 0h
7-0 INTID W 0h

Interrupt ID

This field holds the interrupt ID of the required SGI. For example, a value of 0x3 generates an interrupt on IRQ3.