Zephyr Project API 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018-2019 Nordic Semiconductor ASA
3 * Copyright (c) 2015 Wind River Systems, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
14#ifndef ZEPHYR_INCLUDE_DRIVERS_UART_H_
15#define ZEPHYR_INCLUDE_DRIVERS_UART_H_
16
27#include <stddef.h>
28
29#include <zephyr/device.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
43
78
87
95
104
118
129
142typedef void (*uart_irq_callback_user_data_t)(const struct device *dev,
143 void *user_data);
144
254
258 const uint8_t *buf;
260 size_t len;
261};
262
273 size_t offset;
275 size_t len;
276};
277
283
291
308
318typedef void (*uart_callback_t)(const struct device *dev,
319 struct uart_event *evt, void *user_data);
320
334__syscall int uart_err_check(const struct device *dev);
335
359__syscall int uart_poll_in(const struct device *dev, unsigned char *p_char);
360
380__syscall int uart_poll_in_u16(const struct device *dev, uint16_t *p_u16);
381
397__syscall void uart_poll_out(const struct device *dev,
398 unsigned char out_char);
399
414__syscall void uart_poll_out_u16(const struct device *dev, uint16_t out_u16);
415
434__syscall int uart_configure(const struct device *dev,
435 const struct uart_config *cfg);
436
451__syscall int uart_config_get(const struct device *dev,
452 struct uart_config *cfg);
453
479static inline int uart_fifo_fill(const struct device *dev, const uint8_t *tx_data, int size);
480
501static inline int uart_fifo_fill_u16(const struct device *dev, const uint16_t *tx_data, int size);
502
524static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data, const int size);
525
547static inline int uart_fifo_read_u16(const struct device *dev, uint16_t *rx_data, const int size);
548
554__syscall void uart_irq_tx_enable(const struct device *dev);
555
561__syscall void uart_irq_tx_disable(const struct device *dev);
562
583static inline int uart_irq_tx_ready(const struct device *dev);
584
590__syscall void uart_irq_rx_enable(const struct device *dev);
591
597__syscall void uart_irq_rx_disable(const struct device *dev);
598
618static inline int uart_irq_tx_complete(const struct device *dev);
619
640static inline int uart_irq_rx_ready(const struct device *dev);
641
647__syscall void uart_irq_err_enable(const struct device *dev);
648
654__syscall void uart_irq_err_disable(const struct device *dev);
655
666__syscall int uart_irq_is_pending(const struct device *dev);
667
693__syscall int uart_irq_update(const struct device *dev);
694
710static inline int uart_irq_callback_user_data_set(const struct device *dev,
712 void *user_data);
713
727static inline int uart_irq_callback_set(const struct device *dev,
729
754static inline int uart_callback_set(const struct device *dev,
755 uart_callback_t callback,
756 void *user_data);
757
775__syscall int uart_tx(const struct device *dev, const uint8_t *buf,
776 size_t len,
777 int32_t timeout);
778
796__syscall int uart_tx_u16(const struct device *dev, const uint16_t *buf,
797 size_t len, int32_t timeout);
798
811__syscall int uart_tx_abort(const struct device *dev);
812
834__syscall int uart_rx_enable(const struct device *dev, uint8_t *buf,
835 size_t len,
836 int32_t timeout);
837
859__syscall int uart_rx_enable_u16(const struct device *dev, uint16_t *buf,
860 size_t len, int32_t timeout);
861
882static inline int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf,
883 size_t len);
884
906static inline int uart_rx_buf_rsp_u16(const struct device *dev, uint16_t *buf,
907 size_t len);
908
924__syscall int uart_rx_disable(const struct device *dev);
925
942__syscall int uart_line_ctrl_set(const struct device *dev,
943 uint32_t ctrl, uint32_t val);
944
957__syscall int uart_line_ctrl_get(const struct device *dev, uint32_t ctrl,
958 uint32_t *val);
959
975__syscall int uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p);
976
977#ifdef __cplusplus
978}
979#endif
980
986#include <zephyr/syscalls/uart.h>
987
988#endif /* ZEPHYR_INCLUDE_DRIVERS_UART_H_ */
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition ft8xx_reference_api.h:153
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
int uart_rx_enable_u16(const struct device *dev, uint16_t *buf, size_t len, int32_t timeout)
Start receiving wide data through UART.
static int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf, size_t len)
Provide receive buffer in response to UART_RX_BUF_REQUEST event.
static int uart_rx_buf_rsp_u16(const struct device *dev, uint16_t *buf, size_t len)
Provide wide data receive buffer in response to UART_RX_BUF_REQUEST event.
void(* uart_callback_t)(const struct device *dev, struct uart_event *evt, void *user_data)
Define the application callback function signature for uart_callback_set() function.
Definition uart.h:318
int uart_rx_enable(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout)
Start receiving data through UART.
int uart_tx_abort(const struct device *dev)
Abort current TX transmission.
int uart_tx_u16(const struct device *dev, const uint16_t *buf, size_t len, int32_t timeout)
Send given number of datum from buffer through UART.
static int uart_callback_set(const struct device *dev, uart_callback_t callback, void *user_data)
Set event handler function.
uart_event_type
Types of events passed to callback in UART_ASYNC_API.
Definition uart.h:201
int uart_tx(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout)
Send given number of bytes from buffer through UART.
int uart_rx_disable(const struct device *dev)
Disable RX.
@ UART_RX_STOPPED
RX has stopped due to external event.
Definition uart.h:252
@ UART_TX_ABORTED
Transmitting aborted due to timeout or uart_tx_abort call.
Definition uart.h:211
@ UART_RX_BUF_REQUEST
Driver requests next buffer for continuous reception.
Definition uart.h:234
@ UART_TX_DONE
Whole TX buffer was transmitted.
Definition uart.h:203
@ UART_RX_RDY
Received data is ready for processing.
Definition uart.h:222
@ UART_RX_DISABLED
RX has been disabled and can be reenabled.
Definition uart.h:246
@ UART_RX_BUF_RELEASED
Buffer is no longer used by UART driver.
Definition uart.h:238
uart_line_ctrl
Line control signals.
Definition uart.h:36
int uart_err_check(const struct device *dev)
Check whether an error was detected.
int uart_config_get(const struct device *dev, struct uart_config *cfg)
Get UART configuration.
uart_config_flow_control
Hardware flow control options.
Definition uart.h:112
int uart_configure(const struct device *dev, const struct uart_config *cfg)
Set UART configuration.
int uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p)
Send extra command to driver.
int uart_line_ctrl_set(const struct device *dev, uint32_t ctrl, uint32_t val)
Manipulate line control for UART.
uart_config_parity
Parity modes.
Definition uart.h:80
uart_config_data_bits
Number of data bits.
Definition uart.h:97
uart_rx_stop_reason
Reception stop reasons.
Definition uart.h:50
uart_config_stop_bits
Number of stop bits.
Definition uart.h:89
int uart_line_ctrl_get(const struct device *dev, uint32_t ctrl, uint32_t *val)
Retrieve line control for UART.
@ UART_LINE_CTRL_DTR
Data Terminal Ready (DTR)
Definition uart.h:39
@ UART_LINE_CTRL_RTS
Request To Send (RTS)
Definition uart.h:38
@ UART_LINE_CTRL_BAUD_RATE
Baud rate.
Definition uart.h:37
@ UART_LINE_CTRL_DCD
Data Carrier Detect (DCD)
Definition uart.h:40
@ UART_LINE_CTRL_DSR
Data Set Ready (DSR)
Definition uart.h:41
@ UART_CFG_FLOW_CTRL_DTR_DSR
DTR/DSR flow control.
Definition uart.h:115
@ UART_CFG_FLOW_CTRL_NONE
No flow control.
Definition uart.h:113
@ UART_CFG_FLOW_CTRL_RS485
RS485 flow control.
Definition uart.h:116
@ UART_CFG_FLOW_CTRL_RTS_CTS
RTS/CTS flow control.
Definition uart.h:114
@ UART_CFG_PARITY_MARK
Mark parity.
Definition uart.h:84
@ UART_CFG_PARITY_NONE
No parity.
Definition uart.h:81
@ UART_CFG_PARITY_ODD
Odd parity.
Definition uart.h:82
@ UART_CFG_PARITY_SPACE
Space parity.
Definition uart.h:85
@ UART_CFG_PARITY_EVEN
Even parity.
Definition uart.h:83
@ UART_CFG_DATA_BITS_5
5 data bits
Definition uart.h:98
@ UART_CFG_DATA_BITS_8
8 data bits
Definition uart.h:101
@ UART_CFG_DATA_BITS_7
7 data bits
Definition uart.h:100
@ UART_CFG_DATA_BITS_6
6 data bits
Definition uart.h:99
@ UART_CFG_DATA_BITS_9
9 data bits
Definition uart.h:102
@ UART_ERROR_NOISE
Noise error.
Definition uart.h:76
@ UART_ERROR_OVERRUN
Overrun error.
Definition uart.h:52
@ UART_BREAK
Break interrupt.
Definition uart.h:64
@ UART_ERROR_PARITY
Parity error.
Definition uart.h:54
@ UART_ERROR_COLLISION
Collision error.
Definition uart.h:74
@ UART_ERROR_FRAMING
Framing error.
Definition uart.h:56
@ UART_CFG_STOP_BITS_1_5
1.5 stop bits
Definition uart.h:92
@ UART_CFG_STOP_BITS_0_5
0.5 stop bit
Definition uart.h:90
@ UART_CFG_STOP_BITS_1
1 stop bit
Definition uart.h:91
@ UART_CFG_STOP_BITS_2
2 stop bits
Definition uart.h:93
int uart_irq_is_pending(const struct device *dev)
Check if any IRQs is pending.
static int uart_fifo_read_u16(const struct device *dev, uint16_t *rx_data, const int size)
Read wide data from FIFO.
void uart_irq_rx_enable(const struct device *dev)
Enable RX interrupt.
static int uart_irq_tx_ready(const struct device *dev)
Check if UART TX buffer can accept bytes.
static int uart_irq_callback_set(const struct device *dev, uart_irq_callback_user_data_t cb)
Set the IRQ callback function pointer (legacy).
void uart_irq_err_enable(const struct device *dev)
Enable error interrupt.
static int uart_irq_tx_complete(const struct device *dev)
Check if UART TX block finished transmission.
void uart_irq_tx_enable(const struct device *dev)
Enable TX interrupt in IER.
void uart_irq_rx_disable(const struct device *dev)
Disable RX interrupt.
static int uart_fifo_fill_u16(const struct device *dev, const uint16_t *tx_data, int size)
Fill FIFO with wide data.
void uart_irq_err_disable(const struct device *dev)
Disable error interrupt.
static int uart_fifo_read(const struct device *dev, uint8_t *rx_data, const int size)
Read data from FIFO.
int uart_irq_update(const struct device *dev)
Start processing interrupts in ISR.
static int uart_irq_rx_ready(const struct device *dev)
Check if UART RX buffer has a received char.
void(* uart_irq_callback_user_data_t)(const struct device *dev, void *user_data)
Define the application callback function signature for uart_irq_callback_user_data_set() function.
Definition uart.h:142
static int uart_irq_callback_user_data_set(const struct device *dev, uart_irq_callback_user_data_t cb, void *user_data)
Set the IRQ callback function pointer.
void uart_irq_tx_disable(const struct device *dev)
Disable TX interrupt in IER.
static int uart_fifo_fill(const struct device *dev, const uint8_t *tx_data, int size)
Fill FIFO with data.
void uart_poll_out(const struct device *dev, unsigned char out_char)
Write a character to the device for output.
void uart_poll_out_u16(const struct device *dev, uint16_t out_u16)
Write a 16-bit datum to the device for output.
int uart_poll_in_u16(const struct device *dev, uint16_t *p_u16)
Read a 16-bit datum from the device for input.
int uart_poll_in(const struct device *dev, unsigned char *p_char)
Read a character from the device for input.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__INT32_TYPE__ int32_t
Definition stdint.h:74
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:510
UART controller configuration structure.
Definition uart.h:122
uint8_t stop_bits
Stop bits, use uart_config_stop_bits.
Definition uart.h:125
uint8_t parity
Parity bit, use uart_config_parity.
Definition uart.h:124
uint8_t data_bits
Data bits, use uart_config_data_bits.
Definition uart.h:126
uint32_t baudrate
Baudrate setting in bps.
Definition uart.h:123
uint8_t flow_ctrl
Flow control setting, use uart_config_flow_control.
Definition uart.h:127
UART RX buffer released event data.
Definition uart.h:279
uint8_t * buf
Pointer to buffer that is no longer in use.
Definition uart.h:281
UART RX stopped data.
Definition uart.h:285
struct uart_event_rx data
Last received data.
Definition uart.h:289
enum uart_rx_stop_reason reason
Reason why receiving stopped.
Definition uart.h:287
UART RX event data.
Definition uart.h:269
uint8_t * buf
Pointer to current buffer.
Definition uart.h:271
size_t len
Number of new bytes received.
Definition uart.h:275
size_t offset
Currently received data offset in bytes.
Definition uart.h:273
UART TX event data.
Definition uart.h:256
const uint8_t * buf
Pointer to current buffer.
Definition uart.h:258
size_t len
Number of bytes sent.
Definition uart.h:260
Structure containing information about current event.
Definition uart.h:293
union uart_event::uart_event_data data
enum uart_event_type type
Type of event.
Definition uart.h:295
Internal APIs for UART drivers.
Event data.
Definition uart.h:297
struct uart_event_tx tx
UART_TX_DONE and UART_TX_ABORTED events data.
Definition uart.h:299
struct uart_event_rx_stop rx_stop
UART_RX_STOPPED event data.
Definition uart.h:305
struct uart_event_rx_buf rx_buf
UART_RX_BUF_RELEASED event data.
Definition uart.h:303
struct uart_event_rx rx
UART_RX_RDY event data.
Definition uart.h:301