UART driver implementation for a CC32XX UART controller, using the micro DMA controller.
============================================================================
The UART header file should be included in an application as follows:
Refer to UART.h for a complete description of APIs & example of use.
This header file contains pin mode definitions used to specify the UART TX and RX pin assignment in the UARTCC32XXDMA_HWAttrsV1 structure. Please refer to the CC32XX Techincal Reference Manual for details on pin multiplexing.
To enable Flow Control, the RTS and CTS pins must be assigned in the UARTCC32XX_HWAttrsV1.
#include <stdint.h>
#include <stdbool.h>
#include <ti/drivers/dpl/ClockP.h>
#include <ti/drivers/dpl/HwiP.h>
#include <ti/drivers/dpl/SemaphoreP.h>
#include <ti/drivers/Power.h>
#include <ti/drivers/power/PowerCC32XX.h>
#include <ti/drivers/UART.h>
#include <ti/drivers/dma/UDMACC32XX.h>
Go to the source code of this file.
Data Structures | |
struct | UARTCC32XXDMA_HWAttrsV1 |
UARTCC32XXDMA Hardware attributes. More... | |
struct | UARTCC32XXDMA_Object |
UARTCC32XXDMA Object. More... | |
Typedefs | |
typedef void(* | UARTCC32XXDMA_ErrorCallback) (UART_Handle handle, uint32_t error) |
The definition of an optional callback function used by the UART driver to notify the application when a receive error (FIFO overrun, parity error, etc) occurs. More... | |
typedef struct UARTCC32XXDMA_HWAttrsV1 | UARTCC32XXDMA_HWAttrsV1 |
UARTCC32XXDMA Hardware attributes. More... | |
typedef struct UARTCC32XXDMA_Object | UARTCC32XXDMA_Object |
UARTCC32XXDMA Object. More... | |
typedef struct UARTCC32XXDMA_Object * | UARTCC32XXDMA_Handle |
Variables | |
const UART_FxnTable | UARTCC32XXDMA_fxnTable |
#define UARTCC32XXDMA_PIN_UNASSIGNED 0xFFF |
Indicates a pin is not being used.
If hardware flow control is not being used, the UART CTS and RTS pins should be set to UARTCC32XX_PIN_UNASSIGNED.
#define UARTCC32XXDMA_PIN_01_UART1_TX 0x700 |
PIN 1 is used for UART1 TX
#define UARTCC32XXDMA_PIN_02_UART1_RX 0x701 |
PIN 2 is used for UART1 RX
#define UARTCC32XXDMA_PIN_03_UART0_TX 0x702 |
PIN 3 is used for UART0 TX
#define UARTCC32XXDMA_PIN_04_UART0_RX 0x703 |
PIN 4 is used for UART0 RX
#define UARTCC32XXDMA_PIN_07_UART1_TX 0x506 |
PIN 7 is used for UART1 TX
#define UARTCC32XXDMA_PIN_08_UART1_RX 0x507 |
PIN 8 is used for UART1 RX
#define UARTCC32XXDMA_PIN_16_UART1_TX 0x20F |
PIN 16 is used for UART1 TX
#define UARTCC32XXDMA_PIN_17_UART1_RX 0x210 |
PIN 17 is used for UART1 RX
#define UARTCC32XXDMA_PIN_45_UART0_RX 0x92C |
PIN 45 is used for UART0 RX
#define UARTCC32XXDMA_PIN_45_UART1_RX 0x22C |
PIN 45 is used for UART1 RX
#define UARTCC32XXDMA_PIN_53_UART0_TX 0x934 |
PIN 53 is used for UART0 TX
#define UARTCC32XXDMA_PIN_55_UART0_TX 0x336 |
PIN 55 is used for UART0 TX
#define UARTCC32XXDMA_PIN_55_UART1_TX 0x636 |
PIN 55 is used for UART1 TX
#define UARTCC32XXDMA_PIN_57_UART0_RX 0x338 |
PIN 57 is used for UART0 RX
#define UARTCC32XXDMA_PIN_57_UART1_RX 0x638 |
PIN 57 is used for UART1 RX
#define UARTCC32XXDMA_PIN_58_UART1_TX 0x639 |
PIN 58 is used for UART1 TX
#define UARTCC32XXDMA_PIN_59_UART1_RX 0x63A |
PIN 59 is used for UART1 RX
#define UARTCC32XXDMA_PIN_62_UART0_TX 0xB3D |
PIN 62 is used for UART0 TX
#define UARTCC32XXDMA_PIN_50_UART0_CTS 0xC31 |
PIN 50 is used for UART0 CTS
#define UARTCC32XXDMA_PIN_50_UART0_RTS 0x331 |
PIN 50 is used for UART0 RTS
#define UARTCC32XXDMA_PIN_50_UART1_RTS 0xA31 |
PIN 50 is used for UART1 RTS
#define UARTCC32XXDMA_PIN_52_UART0_RTS 0x633 |
PIN 52 is used for UART0 RTS
#define UARTCC32XXDMA_PIN_61_UART0_RTS 0x53C |
PIN 61 is used for UART0 RTS
#define UARTCC32XXDMA_PIN_61_UART0_CTS 0x63C |
PIN 61 is used for UART0 CTS
#define UARTCC32XXDMA_PIN_61_UART1_CTS 0x33C |
PIN 61 is used for UART1 CTS
#define UARTCC32XXDMA_PIN_62_UART0_RTS 0xA3D |
PIN 62 is used for UART0 RTS
#define UARTCC32XXDMA_PIN_62_UART1_RTS 0x33D |
PIN 62 is used for UART1 RTS
#define UARTCC32XXDMA_FLOWCTRL_NONE 0 |
No hardware flow control.
#define UARTCC32XXDMA_FLOWCTRL_HARDWARE 1 |
Hardware flow control.
typedef void(* UARTCC32XXDMA_ErrorCallback) (UART_Handle handle, uint32_t error) |
The definition of an optional callback function used by the UART driver to notify the application when a receive error (FIFO overrun, parity error, etc) occurs.
UART_Handle | UART_Handle |
error | The current value of the receive status register. Please refer to the device data sheet to interpret this value. |
typedef struct UARTCC32XXDMA_HWAttrsV1 UARTCC32XXDMA_HWAttrsV1 |
UARTCC32XXDMA Hardware attributes.
These fields, with the exception of intPriority, are used by driverlib APIs and therefore must be populated by driverlib macro definitions. For CC32XXWare these definitions are found in:
intPriority is the UART peripheral's interrupt priority, as defined by the underlying OS. It is passed unmodified to the underlying OS's interrupt handler creation code, so you need to refer to the OS documentation for usage. For example, for SYS/BIOS applications, refer to the ti.sysbios.family.arm.m3.Hwi documentation for SYS/BIOS usage of interrupt priorities. If the driver uses the ti.dpl interface instead of making OS calls directly, then the HwiP port handles the interrupt priority in an OS specific way. In the case of the SYS/BIOS port, intPriority is passed unmodified to Hwi_create().
A sample structure is shown below:
typedef struct UARTCC32XXDMA_Object UARTCC32XXDMA_Object |
UARTCC32XXDMA Object.
The application must not access any member variables of this structure!
typedef struct UARTCC32XXDMA_Object * UARTCC32XXDMA_Handle |
const UART_FxnTable UARTCC32XXDMA_fxnTable |