uartdrv.h File Reference

UARTDRV API definition.

Version
5.4.0

License

Copyright 2016 Silicon Laboratories, Inc, www.silabs.com

This file is licensed under the Silabs License Agreement. See the file "Silabs_License_Agreement.txt" for details. Before using this software for any purpose, you must agree to the terms of that agreement.

Definition in file uartdrv.h .

#include " em_device.h "
#include " em_usart.h "
#include " em_leuart.h "
#include " em_gpio.h "
#include " em_cmu.h "
#include " ecode.h "
#include "uartdrv_config.h"
#include " dmadrv.h "

Data Structures

struct UARTDRV_Buffer_FifoQueue_t
Transfer operation FIFO queue typedef.
struct UARTDRV_Buffer_t
UART transfer buffer.
struct UARTDRV_HandleData
struct UARTDRV_InitLeuart_t
struct UARTDRV_InitUart_t

Macros

#define DEFINE_BUF_QUEUE (qSize, qName)
#define ECODE_EMDRV_UARTDRV_ABORTED ( ECODE_EMDRV_UARTDRV_BASE | 0x00000009)
A UART transfer has been aborted.
#define ECODE_EMDRV_UARTDRV_BUSY ( ECODE_EMDRV_UARTDRV_BASE | 0x00000004)
The UART port is busy.
#define ECODE_EMDRV_UARTDRV_CLOCK_ERROR ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000F)
Unable to set a desired baudrate.
#define ECODE_EMDRV_UARTDRV_DMA_ALLOC_ERROR ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000E)
Unable to allocate DMA channels.
#define ECODE_EMDRV_UARTDRV_FRAME_ERROR ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000D)
A UART frame error. Data is ignored.
#define ECODE_EMDRV_UARTDRV_IDLE ( ECODE_EMDRV_UARTDRV_BASE | 0x00000008)
No UART transfer is in progress.
#define ECODE_EMDRV_UARTDRV_ILLEGAL_HANDLE ( ECODE_EMDRV_UARTDRV_BASE | 0x00000002)
An illegal UART handle.
#define ECODE_EMDRV_UARTDRV_ILLEGAL_OPERATION ( ECODE_EMDRV_UARTDRV_BASE | 0x00000005)
An illegal operation on the UART port.
#define ECODE_EMDRV_UARTDRV_OK ( ECODE_OK )
A successful return value.
#define ECODE_EMDRV_UARTDRV_PARAM_ERROR ( ECODE_EMDRV_UARTDRV_BASE | 0x00000003)
An illegal input parameter.
#define ECODE_EMDRV_UARTDRV_PARITY_ERROR ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000C)
A UART parity error frame. Data is ignored.
#define ECODE_EMDRV_UARTDRV_QUEUE_EMPTY ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000B)
A UART operation queue is empty.
#define ECODE_EMDRV_UARTDRV_QUEUE_FULL ( ECODE_EMDRV_UARTDRV_BASE | 0x0000000A)
A UART operation queue is full.
#define ECODE_EMDRV_UARTDRV_WAITING ( ECODE_EMDRV_UARTDRV_BASE | 0x00000001)
An operation is waiting in queue.
#define UARTDRV_STATUS_RXBLOCK (1 << 3)
The receiver is blocked; incoming frames will be discarded.
#define UARTDRV_STATUS_RXDATAV (1 << 7)
Data is available in the receive buffer.
#define UARTDRV_STATUS_RXEN (1 << 0)
The receiver is enabled.
#define UARTDRV_STATUS_RXFULL (1 << 8)
The receive buffer is full.
#define UARTDRV_STATUS_TXBL (1 << 6)
The transmit buffer is empty.
#define UARTDRV_STATUS_TXC (1 << 5)
A transmit operation is complete. No more data is available in the transmit buffer and shift register.
#define UARTDRV_STATUS_TXEN (1 << 1)
The transmitter is enabled.
#define UARTDRV_STATUS_TXIDLE (1 << 13)
The transmitter is idle.
#define UARTDRV_STATUS_TXTRI (1 << 4)
The transmitter is tristated.

Typedefs

typedef enum UARTDRV_AbortType UARTDRV_AbortType_t
Transfer abort type.
typedef void(* UARTDRV_Callback_t ) (struct UARTDRV_HandleData *handle, Ecode_t transferStatus, uint8_t *data, UARTDRV_Count_t transferCount)
UARTDRV transfer completion callback function.
typedef uint32_t UARTDRV_Count_t
A UART transfer count.
typedef enum UARTDRV_FlowControlState UARTDRV_FlowControlState_t
Flow Control state.
typedef enum UARTDRV_FlowControlType UARTDRV_FlowControlType_t
Flow Control method.
typedef UARTDRV_HandleData_t * UARTDRV_Handle_t
Handle pointer.
typedef struct UARTDRV_HandleData UARTDRV_HandleData_t
typedef uint32_t UARTDRV_Status_t
A UART status return type. Bitfield of UARTDRV_STATUS_* values.

Enumerations

enum UARTDRV_AbortType {
uartdrvAbortTransmit = 1,
uartdrvAbortReceive = 2,
uartdrvAbortAll = 3
}
Transfer abort type.
enum UARTDRV_FlowControlState {
uartdrvFlowControlOn = 0,
uartdrvFlowControlOff = 1,
uartdrvFlowControlAuto = 2
}
Flow Control state.
enum UARTDRV_FlowControlType {
uartdrvFlowControlNone = 0,
uartdrvFlowControlSw = 1,
uartdrvFlowControlHw = 2,
uartdrvFlowControlHwUart = 3
}
Flow Control method.

Functions

Ecode_t UARTDRV_Abort ( UARTDRV_Handle_t handle, UARTDRV_AbortType_t type)
Abort ongoing UART transfers.
Ecode_t UARTDRV_DeInit ( UARTDRV_Handle_t handle)
Deinitialize a UART driver instance.
UARTDRV_FlowControlState_t UARTDRV_FlowControlGetPeerStatus ( UARTDRV_Handle_t handle)
Check the peer's flow control status.
UARTDRV_FlowControlState_t UARTDRV_FlowControlGetSelfStatus ( UARTDRV_Handle_t handle)
Check the self flow control status.
Ecode_t UARTDRV_FlowControlIgnoreRestrain ( UARTDRV_Handle_t handle)
Enable transmission when restrained by flow control.
Ecode_t UARTDRV_FlowControlSet ( UARTDRV_Handle_t handle, UARTDRV_FlowControlState_t state)
Set UART flow control state. Set nRTS pin if hardware flow control is enabled. Send XON/XOFF if software flow control is enabled.
Ecode_t UARTDRV_FlowControlSetPeerStatus ( UARTDRV_Handle_t handle, UARTDRV_FlowControlState_t state)
Set peer UART flow control state. Pause/resume transmit accordingly. Only for manual software flow control.
UARTDRV_Count_t UARTDRV_ForceReceive ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t maxLength)
Direct receive without interrupts or callback. This is a blocking function.
Ecode_t UARTDRV_ForceTransmit ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t count)
Direct transmit without interrupts or callback. This is a blocking function. that ignores flow control if enabled.
UARTDRV_Status_t UARTDRV_GetPeripheralStatus ( UARTDRV_Handle_t handle)
Return the status of the UART peripheral associated with a given handle.
uint8_t UARTDRV_GetReceiveDepth ( UARTDRV_Handle_t handle)
Return the number of queued receive operations.
UARTDRV_Status_t UARTDRV_GetReceiveStatus ( UARTDRV_Handle_t handle, uint8_t **buffer, UARTDRV_Count_t *bytesReceived, UARTDRV_Count_t *bytesRemaining)
Check the status of the UART and gather information about any ongoing receive operations.
uint8_t UARTDRV_GetTransmitDepth ( UARTDRV_Handle_t handle)
Returns the number of queued transmit operations.
UARTDRV_Status_t UARTDRV_GetTransmitStatus ( UARTDRV_Handle_t handle, uint8_t **buffer, UARTDRV_Count_t *bytesSent, UARTDRV_Count_t *bytesRemaining)
Check the status of the UART and gather information about any ongoing transmit operations.
__STATIC_INLINE Ecode_t UARTDRV_Init ( UARTDRV_Handle_t handle, UARTDRV_InitUart_t *initData)
Initialize a U(S)ART driver instance.
Ecode_t UARTDRV_InitLeuart ( UARTDRV_Handle_t handle, const UARTDRV_InitLeuart_t *initData)
Initialize a LEUART driver instance.
Ecode_t UARTDRV_InitUart ( UARTDRV_Handle_t handle, const UARTDRV_InitUart_t *initData)
Initialize a U(S)ART driver instance.
Ecode_t UARTDRV_PauseTransmit ( UARTDRV_Handle_t handle)
Pause an ongoing transmit operation.
Ecode_t UARTDRV_Receive ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t count, UARTDRV_Callback_t callback)
Start a non-blocking receive.
Ecode_t UARTDRV_ReceiveB ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t count)
Start a blocking receive.
Ecode_t UARTDRV_ResumeTransmit ( UARTDRV_Handle_t handle)
Resume a paused transmit operation.
Ecode_t UARTDRV_Transmit ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t count, UARTDRV_Callback_t callback)
Start a non-blocking transmit.
Ecode_t UARTDRV_TransmitB ( UARTDRV_Handle_t handle, uint8_t *data, UARTDRV_Count_t count)
Start a blocking transmit.