![]() |
nRF51 SDK - S110 SoftDevice
|
UART module interface. More...
Data Structures | |
| struct | app_uart_comm_params_t |
| UART communication structure holding configuration settings for the peripheral. More... | |
| struct | app_uart_buffers_t |
| UART buffer for transmitting/receiving data. More... | |
| struct | app_uart_evt_t |
| Struct containing events from the UART module. More... | |
Macros | |
| #define | UART_PIN_DISCONNECTED 0xFFFFFFFF |
| #define | APP_UART_FIFO_INIT(P_COMM_PARAMS, RX_BUF_SIZE, TX_BUF_SIZE, EVT_HANDLER, IRQ_PRIO, ERR_CODE) |
| Macro for safe initialization of the UART module in a single user instance when using a FIFO together with UART. More... | |
| #define | APP_UART_INIT(P_COMM_PARAMS, EVT_HANDLER, IRQ_PRIO, ERR_CODE) |
| Macro for safe initialization of the UART module in a single user instance. More... | |
Typedefs | |
| typedef void(* | app_uart_event_handler_t )(app_uart_evt_t *p_app_uart_event) |
| Function for handling app_uart event callback. More... | |
Enumerations | |
| enum | app_uart_flow_control_t { APP_UART_FLOW_CONTROL_DISABLED, APP_UART_FLOW_CONTROL_ENABLED, APP_UART_FLOW_CONTROL_LOW_POWER } |
| UART Flow Control modes for the peripheral. More... | |
| enum | app_uart_connection_state_t { APP_UART_DISCONNECTED, APP_UART_CONNECTED } |
| Enumeration describing current state of the UART. More... | |
| enum | app_uart_evt_type_t { APP_UART_DATA_READY, APP_UART_FIFO_ERROR, APP_UART_COMMUNICATION_ERROR, APP_UART_TX_EMPTY, APP_UART_DATA } |
| Enumeration which defines events used by the UART module upon data reception or error. More... | |
Functions | |
| uint32_t | app_uart_init (const app_uart_comm_params_t *p_comm_params, app_uart_buffers_t *p_buffers, app_uart_event_handler_t error_handler, app_irq_priority_t irq_priority, uint16_t *p_uart_uid) |
| Function for initializing the UART module. Use this initialization when several instances of the UART module are needed. More... | |
| uint32_t | app_uart_get (uint8_t *p_byte) |
| Function for getting a byte from the UART. More... | |
| uint32_t | app_uart_put (uint8_t byte) |
| Function for putting a byte on the UART. More... | |
| uint32_t | app_uart_get_connection_state (app_uart_connection_state_t *p_connection_state) |
| Function for getting the current state of the UART. More... | |
| uint32_t | app_uart_flush (void) |
| Function for flushing the RX and TX buffers (Only valid if FIFO is used). This function does nothing if FIFO is not used. More... | |
| uint32_t | app_uart_close (uint16_t app_uart_id) |
| Function for closing the UART module. More... | |
UART module interface.
| #define APP_UART_FIFO_INIT | ( | P_COMM_PARAMS, | |
| RX_BUF_SIZE, | |||
| TX_BUF_SIZE, | |||
| EVT_HANDLER, | |||
| IRQ_PRIO, | |||
| ERR_CODE | |||
| ) |
Macro for safe initialization of the UART module in a single user instance when using a FIFO together with UART.
| [in] | P_COMM_PARAMS | Pointer to a UART communication structure: app_uart_comm_params_t |
| [in] | RX_BUF_SIZE | Size of desired RX buffer, must be a power of 2 or ZERO (No FIFO). |
| [in] | TX_BUF_SIZE | Size of desired TX buffer, must be a power of 2 or ZERO (No FIFO). |
| [in] | EVT_HANDLER | Event handler function to be called when an event occurs in the UART module. |
| [in] | IRQ_PRIO | IRQ priority, app_irq_priority_t, for the UART module irq handler. |
| [out] | ERR_CODE | The return value of the UART initialization function will be written to this parameter. |
| #define APP_UART_INIT | ( | P_COMM_PARAMS, | |
| EVT_HANDLER, | |||
| IRQ_PRIO, | |||
| ERR_CODE | |||
| ) |
Macro for safe initialization of the UART module in a single user instance.
| [in] | P_COMM_PARAMS | Pointer to a UART communication structure: app_uart_comm_params_t |
| [in] | EVT_HANDLER | Event handler function to be called when an event occurs in the UART module. |
| [in] | IRQ_PRIO | IRQ priority, app_irq_priority_t, for the UART module irq handler. |
| [out] | ERR_CODE | The return value of the UART initialization function will be written to this parameter. |
| #define UART_PIN_DISCONNECTED 0xFFFFFFFF |
Value indicating that no pin is connected to this UART register.
| typedef void(* app_uart_event_handler_t)(app_uart_evt_t *p_app_uart_event) |
Function for handling app_uart event callback.
Upon an event in the app_uart module this callback function will be called to notify the application about the event.
| [in] | p_app_uart_event | Pointer to UART event. |
Enumeration describing current state of the UART.
The connection state can be fetched by the application using the function call app_uart_get_connection_state. When hardware flow control is used
When no hardware flow control is used
| enum app_uart_evt_type_t |
Enumeration which defines events used by the UART module upon data reception or error.
The event type is used to indicate the type of additional information in the event app_uart_evt_t.
| Enumerator | |
|---|---|
| APP_UART_DATA_READY |
An event indicating that UART data has been received. The data is available in the FIFO and can be fetched using app_uart_get. |
| APP_UART_FIFO_ERROR |
An error in the FIFO module used by the app_uart module has occured. The FIFO error code is stored in app_uart_evt_t.data.error_code field. |
| APP_UART_COMMUNICATION_ERROR |
An communication error has occured during reception. The error is stored in app_uart_evt_t.data.error_communication field. |
| APP_UART_TX_EMPTY |
An event indicating that UART has completed transmission of all available data in the TX FIFO. |
| APP_UART_DATA |
An event indicating that UART data has been received, and data is present in data field. This event is only used when no FIFO is configured. |
UART Flow Control modes for the peripheral.
| uint32_t app_uart_close | ( | uint16_t | app_uart_id | ) |
Function for closing the UART module.
This function will close any on-going UART transmissions and disable itself in the GPTIO module.
| [in] | app_uart_id | User id for the UART module. The app_uart_uid must be identical to the UART id returned on initialization and which is currently in use. |
| NRF_SUCCESS | If successfully closed. |
| NRF_ERROR_INVALID_PARAM | If an invalid user id is provided or the user id differs from the current active user. |
| uint32_t app_uart_flush | ( | void | ) |
Function for flushing the RX and TX buffers (Only valid if FIFO is used). This function does nothing if FIFO is not used.
| NRF_SUCCESS | Flushing completed (Current implementation will always succeed). |
| uint32_t app_uart_get | ( | uint8_t * | p_byte | ) |
Function for getting a byte from the UART.
This function will get the next byte from the RX buffer. If the RX buffer is empty an error code will be returned and the app_uart module will generate an event upon reception of the first byte which is added to the RX buffer.
| [out] | p_byte | Pointer to an address where next byte received on the UART will be copied. |
| NRF_SUCCESS | If a byte has been received and pushed to the pointer provided. |
| NRF_ERROR_NOT_FOUND | If no byte is available in the RX buffer of the app_uart module. |
| uint32_t app_uart_get_connection_state | ( | app_uart_connection_state_t * | p_connection_state | ) |
Function for getting the current state of the UART.
If flow control is disabled, the state is assumed to always be APP_UART_CONNECTED.
When using flow control the state will be controlled by the CTS. If CTS is set active
by the remote side, or the app_uart module is in the process of transmitting a byte,
app_uart is in APP_UART_CONNECTED state. If CTS is set inactive by remote side app_uart
will not get into APP_UART_DISCONNECTED state until the last byte in the TXD register
is fully transmitted.
Internal states in the state machine are mapped to the general connected/disconnected
states in the following ways:
- UART_ON = CONNECTED
- UART_READY = CONNECTED
- UART_WAIT = CONNECTED
- UART_OFF = DISCONNECTED.
| [out] | p_connection_state | Current connection state of the UART. |
| NRF_SUCCESS | The connection state was succesfully retrieved. |
| uint32_t app_uart_init | ( | const app_uart_comm_params_t * | p_comm_params, |
| app_uart_buffers_t * | p_buffers, | ||
| app_uart_event_handler_t | error_handler, | ||
| app_irq_priority_t | irq_priority, | ||
| uint16_t * | p_uart_uid | ||
| ) |
Function for initializing the UART module. Use this initialization when several instances of the UART module are needed.
This initialization will return a UART user id for the caller. The UART user id must be used upon re-initialization of the UART or closing of the module for the user. If single instance usage is needed, the APP_UART_INIT() macro should be used instead.
| [in] | p_comm_params | Pin and communication parameters. |
| [in] | p_buffers | RX and TX buffers, NULL is FIFO is not used. |
| [in] | error_handler | Function to be called in case of an error. |
| [in] | irq_priority | Interrupt priority level. |
| [in,out] | p_uart_uid | User id for the UART module. The p_uart_uid must be used if re-initialization and/or closing of the UART module is needed. If the value pointed to by p_uart_uid is zero, this is considdered a first time initialization. Otherwise this is considered a re-initialization for the user with id *p_uart_uid. |
| NRF_SUCCESS | If successful initialization. |
| NRF_ERROR_INVALID_LENGTH | If a provided buffer is not a power of two. |
| NRF_ERROR_NULL | If one of the provided buffers is a NULL pointer. |
Those errors are propagated by the UART module to the caller upon registration when Hardware Flow Control is enabled. When Hardware Flow Control is not used, those errors cannot occur.
| NRF_ERROR_INVALID_STATE | The GPIOTE module is not in a valid state when registering the UART module as a user. |
| NRF_ERROR_INVALID_PARAM | The UART module provides an invalid callback function when registering the UART module as a user. Or the value pointed to by *p_uart_uid is not a valid GPIOTE number. |
| NRF_ERROR_NO_MEM | GPIOTE module has reached the maximum number of users. |
| uint32_t app_uart_put | ( | uint8_t | byte | ) |
Function for putting a byte on the UART.
This call is non-blocking.
| [in] | byte | Byte to be transmitted on the UART. |
| NRF_SUCCESS | If the byte was succesfully put on the TX buffer for transmission. |
| NRF_ERROR_NO_MEM | If no more space is available in the TX buffer. NRF_ERROR_NO_MEM may occur if flow control is enabled and CTS signal is high for a long period and the buffer fills up. |