MCUXpresso SDK API Reference Manual  Rev 2.12.1
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
UART_Adapter

Overview

Data Structures

struct  hal_uart_config_t
 UART configuration structure. More...
 
struct  hal_uart_transfer_t
 UART transfer structure. More...
 

Macros

#define UART_ADAPTER_NON_BLOCKING_MODE   (0U)
 Enable or disable UART adapter non-blocking mode (1 - enable, 0 - disable)
 
#define HAL_UART_ADAPTER_FIFO   (1U)
 Enable or disable uart hardware FIFO mode (1 - enable, 0 - disable)
 
#define HAL_UART_DMA_INIT_ENABLE   (0U)
 Enable or disable uart DMA adapter int mode (1 - enable, 0 - disable)
 
#define HAL_UART_DMA_IDLELINE_TIMEOUT   (1U)
 Definition of uart dma adapter software idleline detection timeout value in ms. More...
 
#define HAL_UART_HANDLE_SIZE   (8U + HAL_UART_ADAPTER_LOWPOWER * 16U + HAL_UART_DMA_ENABLE * 4U)
 Definition of uart adapter handle size. More...
 
#define UART_HANDLE_DEFINE(name)   uint32_t name[((HAL_UART_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]
 Definition of uart dma adapter handle size. More...
 
#define HAL_UART_TRANSFER_MODE   (0U)
 Whether enable transactional function of the UART. More...
 

Typedefs

typedef void * hal_uart_handle_t
 The handle of uart adapter. More...
 
typedef void * hal_uart_dma_handle_t
 The handle of uart dma adapter. More...
 
typedef void(* hal_uart_transfer_callback_t )(hal_uart_handle_t handle, hal_uart_status_t status, void *callbackParam)
 UART transfer callback function. More...
 

Enumerations

enum  hal_uart_status_t {
  kStatus_HAL_UartSuccess = kStatus_Success,
  kStatus_HAL_UartTxBusy = MAKE_STATUS(kStatusGroup_HAL_UART, 1),
  kStatus_HAL_UartRxBusy = MAKE_STATUS(kStatusGroup_HAL_UART, 2),
  kStatus_HAL_UartTxIdle = MAKE_STATUS(kStatusGroup_HAL_UART, 3),
  kStatus_HAL_UartRxIdle = MAKE_STATUS(kStatusGroup_HAL_UART, 4),
  kStatus_HAL_UartBaudrateNotSupport,
  kStatus_HAL_UartProtocolError,
  kStatus_HAL_UartError = MAKE_STATUS(kStatusGroup_HAL_UART, 7)
}
 UART status. More...
 
enum  hal_uart_parity_mode_t {
  kHAL_UartParityDisabled = 0x0U,
  kHAL_UartParityEven = 0x2U,
  kHAL_UartParityOdd = 0x3U
}
 UART parity mode. More...
 
enum  hal_uart_stop_bit_count_t {
  kHAL_UartOneStopBit = 0U,
  kHAL_UartTwoStopBit = 1U
}
 UART stop bit count. More...
 

Functions

hal_uart_status_t HAL_UartEnterLowpower (hal_uart_handle_t handle)
 Prepares to enter low power consumption. More...
 
hal_uart_status_t HAL_UartExitLowpower (hal_uart_handle_t handle)
 Restores from low power consumption. More...
 

Initialization and deinitialization

hal_uart_status_t HAL_UartInit (hal_uart_handle_t handle, const hal_uart_config_t *config)
 Initializes a UART instance with the UART handle and the user configuration structure. More...
 
hal_uart_status_t HAL_UartDeinit (hal_uart_handle_t handle)
 Deinitializes a UART instance. More...
 

Blocking bus Operations

hal_uart_status_t HAL_UartReceiveBlocking (hal_uart_handle_t handle, uint8_t *data, size_t length)
 Reads RX data register using a blocking method. More...
 
hal_uart_status_t HAL_UartSendBlocking (hal_uart_handle_t handle, const uint8_t *data, size_t length)
 Writes to the TX register using a blocking method. More...
 

Data Structure Documentation

struct hal_uart_config_t

Data Fields

uint32_t srcClock_Hz
 Source clock.
 
uint32_t baudRate_Bps
 Baud rate.
 
hal_uart_parity_mode_t parityMode
 Parity mode, disabled (default), even, odd.
 
hal_uart_stop_bit_count_t stopBitCount
 Number of stop bits, 1 stop bit (default) or 2 stop bits.
 
uint8_t enableRx
 Enable RX.
 
uint8_t enableTx
 Enable TX.
 
uint8_t enableRxRTS
 Enable RX RTS.
 
uint8_t enableTxCTS
 Enable TX CTS.
 
uint8_t instance
 Instance (0 - UART0, 1 - UART1, ...), detail information please refer to the SOC corresponding RM. More...
 

Field Documentation

uint8_t hal_uart_config_t::instance

Invalid instance value will cause initialization failure.

struct hal_uart_transfer_t

Data Fields

uint8_t * data
 The buffer of data to be transfer. More...
 
size_t dataSize
 The byte count to be transfer. More...
 

Field Documentation

uint8_t* hal_uart_transfer_t::data
size_t hal_uart_transfer_t::dataSize

Macro Definition Documentation

#define HAL_UART_DMA_IDLELINE_TIMEOUT   (1U)
#define HAL_UART_HANDLE_SIZE   (8U + HAL_UART_ADAPTER_LOWPOWER * 16U + HAL_UART_DMA_ENABLE * 4U)
#define UART_HANDLE_DEFINE (   name)    uint32_t name[((HAL_UART_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]

Defines the uart handle

This macro is used to define a 4 byte aligned uart handle. Then use "(hal_uart_handle_t)name" to get the uart handle.

The macro should be global and could be optional. You could also define uart handle by yourself.

This is an example,

* UART_HANDLE_DEFINE(uartHandle);
*
Parameters
nameThe name string of the uart handle.
#define HAL_UART_TRANSFER_MODE   (0U)

(0 - disable, 1 - enable)

Typedef Documentation

typedef void* hal_uart_handle_t
typedef void* hal_uart_dma_handle_t
typedef void(* hal_uart_transfer_callback_t)(hal_uart_handle_t handle, hal_uart_status_t status, void *callbackParam)

Enumeration Type Documentation

Enumerator
kStatus_HAL_UartSuccess 

Successfully.

kStatus_HAL_UartTxBusy 

TX busy.

kStatus_HAL_UartRxBusy 

RX busy.

kStatus_HAL_UartTxIdle 

HAL UART transmitter is idle.

kStatus_HAL_UartRxIdle 

HAL UART receiver is idle.

kStatus_HAL_UartBaudrateNotSupport 

Baudrate is not support in current clock source.

kStatus_HAL_UartProtocolError 

Error occurs for Noise, Framing, Parity, etc.

For transactional transfer, The up layer needs to abort the transfer and then starts again

kStatus_HAL_UartError 

Error occurs on HAL UART.

Enumerator
kHAL_UartParityDisabled 

Parity disabled.

kHAL_UartParityEven 

Parity even enabled.

kHAL_UartParityOdd 

Parity odd enabled.

Enumerator
kHAL_UartOneStopBit 

One stop bit.

kHAL_UartTwoStopBit 

Two stop bits.

Function Documentation

hal_uart_status_t HAL_UartInit ( hal_uart_handle_t  handle,
const hal_uart_config_t config 
)

This function configures the UART module with user-defined settings. The user can configure the configuration structure. The parameter handle is a pointer to point to a memory space of size HAL_UART_HANDLE_SIZE allocated by the caller. Example below shows how to use this API to configure the UART.

* UART_HANDLE_DEFINE(g_UartHandle);
* config.srcClock_Hz = 48000000;
* config.baudRate_Bps = 115200U;
* config.enableRx = 1;
* config.enableTx = 1;
* config.enableRxRTS = 0;
* config.enableTxCTS = 0;
* config.instance = 0;
* HAL_UartInit((hal_uart_handle_t)g_UartHandle, &config);
*
Parameters
handlePointer to point to a memory space of size HAL_UART_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: UART_HANDLE_DEFINE(handle); or uint32_t handle[((HAL_UART_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))];
configPointer to user-defined configuration structure.
Return values
kStatus_HAL_UartBaudrateNotSupportBaudrate is not support in current clock source.
kStatus_HAL_UartSuccessUART initialization succeed
hal_uart_status_t HAL_UartDeinit ( hal_uart_handle_t  handle)

This function waits for TX complete, disables TX and RX, and disables the UART clock.

Parameters
handleUART handle pointer.
Return values
kStatus_HAL_UartSuccessUART de-initialization succeed
hal_uart_status_t HAL_UartReceiveBlocking ( hal_uart_handle_t  handle,
uint8_t *  data,
size_t  length 
)

This function polls the RX register, waits for the RX register to be full or for RX FIFO to have data, and reads data from the RX register.

Note
The function HAL_UartReceiveBlocking and the function HAL_UartTransferReceiveNonBlocking cannot be used at the same time. And, the function HAL_UartTransferAbortReceive cannot be used to abort the transmission of this function.
Parameters
handleUART handle pointer.
dataStart address of the buffer to store the received data.
lengthSize of the buffer.
Return values
kStatus_HAL_UartErrorAn error occurred while receiving data.
kStatus_HAL_UartParityErrorA parity error occurred while receiving data.
kStatus_HAL_UartSuccessSuccessfully received all data.
hal_uart_status_t HAL_UartSendBlocking ( hal_uart_handle_t  handle,
const uint8_t *  data,
size_t  length 
)

This function polls the TX register, waits for the TX register to be empty or for the TX FIFO to have room and writes data to the TX buffer.

Note
The function HAL_UartSendBlocking and the function HAL_UartTransferSendNonBlocking cannot be used at the same time. And, the function HAL_UartTransferAbortSend cannot be used to abort the transmission of this function.
Parameters
handleUART handle pointer.
dataStart address of the data to write.
lengthSize of the data to write.
Return values
kStatus_HAL_UartSuccessSuccessfully sent all data.
hal_uart_status_t HAL_UartEnterLowpower ( hal_uart_handle_t  handle)

This function is used to prepare to enter low power consumption.

Parameters
handleUART handle pointer.
Return values
kStatus_HAL_UartSuccessSuccessful operation.
kStatus_HAL_UartErrorAn error occurred.
hal_uart_status_t HAL_UartExitLowpower ( hal_uart_handle_t  handle)

This function is used to restore from low power consumption.

Parameters
handleUART handle pointer.
Return values
kStatus_HAL_UartSuccessSuccessful operation.
kStatus_HAL_UartErrorAn error occurred.