2025-03-29 16:32:49 +08:00
|
|
|
#ifndef __HARDWARE_UART_H__
|
|
|
|
|
#define __HARDWARE_UART_H__
|
2025-03-19 15:59:12 +08:00
|
|
|
|
|
|
|
|
#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 {
|
2025-03-19 22:15:07 +08:00
|
|
|
uint32_t baudrate;
|
2025-03-19 15:59:12 +08:00
|
|
|
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);
|
2025-03-19 21:53:54 +08:00
|
|
|
void uart_int_enable(uint8_t uart_id, uint32_t int_type);
|
|
|
|
|
void uart_int_disable(uint8_t uart_id, uint32_t int_type);
|
2025-03-19 15:59:12 +08:00
|
|
|
uint32_t uart_int_get_mask_status(uint8_t uart_id);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-03-29 16:32:49 +08:00
|
|
|
#endif /* __HARDWARE_UART_H__ */
|