UARTDriver
Description
Serial UART Interface driver.
Flexible UART driver implementation for communication with external devices.
This driver supports both blocking and non-blocking operation with LDMA backing the background transfers to support nonblocking. Additionally, support for hardware flow control is included.
Functions |
|
void | uart_init (void) |
void | uart_deinit (void) |
int32_t | uart_sendBuffer (uint8_t *buffer, size_t length, bool blocking) |
int32_t | uart_sendByte (uint8_t byte) |
bool | uart_isTxIdle (void) |
size_t | uart_getRxAvailableBytes (void) |
int32_t | uart_receiveBuffer (uint8_t *buffer, size_t requestedLength, size_t *receivedLength, bool blocking, uint32_t timeout) |
int32_t | uart_receiveByte (uint8_t *byte) |
int32_t | uart_receiveByteTimeout (uint8_t *byte, uint32_t timeout) |
int32_t | uart_flush (bool flushTx, bool flushRx) |
Function Documentation
void uart_init | ( | void |
|
) |
Initialize the configured USART peripheral for UART operation. Also sets up GPIO settings for TX, RX, and, if configured, flow control.
void uart_deinit | ( | void |
|
) |
Disable the configured USART peripheral for UART operation.
int32_t uart_sendBuffer | ( | uint8_t * |
buffer,
|
size_t |
length,
|
||
bool |
blocking
|
||
) |
Write a data buffer to the UART.
- Parameters
-
[in] buffer
The data buffer to send [in] length
Number of bytes in the buffer to send [in] blocking
Indicates whether this transfer can be offloaded to LDMA and return, or whether to wait on completion before returning.
- Returns
- BOOTLOADER_OK if successful, error code otherwise
int32_t uart_sendByte | ( | uint8_t |
byte
|
) |
Write one byte to the UART in a blocking fashion.
- Parameters
-
[in] byte
The byte to send
- Returns
- BOOTLOADER_OK if successful, error code otherwise
bool uart_isTxIdle | ( | void |
|
) |
Find out whether the UART can accept more data to send.
- Returns
- true if the UART is not currently transmitting
size_t uart_getRxAvailableBytes | ( | void |
|
) |
Get the number of bytes ready for reading.
- Returns
- Number of bytes in the receive buffer available for reading with uart_receiveBuffer
int32_t uart_receiveBuffer | ( | uint8_t * |
buffer,
|
size_t |
requestedLength,
|
||
size_t * |
receivedLength,
|
||
bool |
blocking,
|
||
uint32_t |
timeout
|
||
) |
Read from the UART into a data buffer
- Parameters
-
[out] buffer
The data buffer to receive into [in] requestedLength
Number of bytes to read [out] receivedLength
Number of bytes read [in] blocking
Indicates whether to wait for requestedLength bytes to be available and read before returning, or whether to read out data currently in the buffer and return. [in] timeout
Number of milliseconds to wait for data in blocking mode
- Returns
- BOOTLOADER_OK if successful, error code otherwise
int32_t uart_receiveByte | ( | uint8_t * |
byte
|
) |
Get one byte from the UART in a blocking fashion.
- Parameters
-
[out] byte
The byte to send
- Returns
- BOOTLOADER_OK if successful, error code otherwise
int32_t uart_receiveByteTimeout | ( | uint8_t * |
byte,
|
uint32_t |
timeout
|
||
) |
Get one byte from the UART in a blocking fashion.
- Parameters
-
[out] byte
The byte to send [in] timeout
Maximum timeout before aborting transfer
- Returns
- BOOTLOADER_OK if successful, error code otherwise
int32_t uart_flush | ( | bool |
flushTx,
|
bool |
flushRx
|
||
) |
Flush one or both UART buffers.
- Parameters
-
[in] flushTx
Flush the transmit buffer when true [in] flushRx
Flush the receive buffer when true
- Returns
- BOOTLOADER_OK