#ifndef __UART_H__ #define __UART_H__ #include "reg.h" #include "uart_reg.h" #define UART_ID_0 (0) #define UART_ID_1 (1) #define UART_INT_RI (1 << 0U) #define UART_INT_CTS (1 << 1U) #define UART_INT_DCD (1 << 2U) #define UART_INT_DSR (1 << 3U) #define UART_INT_RX (1 << 4U) #define UART_INT_TX (1 << 5U) #define UART_INT_RTO (1 << 6U) #define UART_INT_FE (1 << 7U) #define UART_INT_PE (1 << 8U) #define UART_INT_BE (1 << 9U) #define UART_INT_OE (1 << 10U) #define UART_INT_ALL ((1 << 11U) - 1) #define UART_MODE_NONE (0) #define UART_MODE_TX_ONLY (1) #define UART_MODE_RX_ONLY (2) #define UART_MODE_TX_RX (3) #define UART_DATABITS_5 (0) #define UART_DATABITS_6 (1) #define UART_DATABITS_7 (2) #define UART_DATABITS_8 (3) #define UART_PARITY_NONE (0) #define UART_PARITY_ODD (1) #define UART_PARITY_EVEN (2) #define UART_PARITY_MARK0 (3) #define UART_PARITY_MARK1 (4) #define UART_STOPBITS_1 (0) #define UART_STOPBITS_2 (1) #define UART_FIFO_LEVEL_1_8 (0) #define UART_FIFO_LEVEL_1_4 (1) #define UART_FIFO_LEVEL_1_2 (2) #define UART_FIFO_LEVEL_3_4 (3) #define UART_FIFO_LEVEL_7_8 (4) #define UART_FLAG_CTS (1 << 0U) #define UART_FLAG_DSR (1 << 1U) #define UART_FLAG_DCD (1 << 2U) #define UART_FLAG_BUSY (1 << 3U) #define UART_FLAG_RXFE (1 << 4U) #define UART_FLAG_TXFF (1 << 5U) #define UART_FLAG_RXFF (1 << 6U) #define UART_FLAG_TXFE (1 << 7U) #define UART_FLAG_RI (1 << 8U) struct uart_cfg_s { uint32_t baudrate; uint8_t mode; uint8_t data_bits; uint8_t parity; uint8_t stop_bits; uint8_t fifo_enable; uint8_t tx_fifo_level; uint8_t rx_fifo_level; }; #ifdef __cplusplus extern "C" { #endif void uart_init(uint8_t uart_id, struct uart_cfg_s *cfg); void uart_set_baudrate(uint8_t uart_id, uint32_t src_clk, uint32_t baudrate); uint32_t uart_get_flags(uint8_t uart_id); void uart_write_block(uint8_t uart_id, uint8_t *data, uint32_t length); uint32_t uart_int_get_raw_status(uint8_t uart_id); uint32_t uart_int_get_status(uint8_t uart_id); void uart_int_clear(uint8_t uart_id, uint32_t int_type); void uart_int_enable(uint8_t uart_id, uint32_t int_type); void uart_int_disable(uint8_t uart_id, uint32_t int_type); uint32_t uart_int_get_mask_status(uint8_t uart_id); #ifdef __cplusplus } #endif #endif /* __UART_H__ */