rp2040/driver/inc/uart.h

89 lines
2.2 KiB
C
Raw Normal View History

2025-03-19 15:59:12 +08:00
#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 {
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);
2025-03-19 15:59:12 +08:00
uint32_t uart_int_get_mask_status(uint8_t uart_id);
#ifdef __cplusplus
}
#endif
#endif /* __UART_H__ */