106 lines
1.6 KiB
C
106 lines
1.6 KiB
C
#ifndef UART_DEVICE_H__
|
|
#define UART_DEVICE_H__
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#define TX_MAX_FIFO_SIZE (8U)
|
|
#define RX_MAX_FIFO_SIZE (32U)
|
|
|
|
#define TX_BUFF_SIZE_POS (7U)
|
|
#define TX_BUFF_SIZE (1U << TX_BUFF_SIZE_POS)
|
|
|
|
#define RX_BUFF_SIZE RX_MAX_FIFO_SIZE
|
|
#define RX_FIFO_INT_SIZE (RX_MAX_FIFO_SIZE/2)
|
|
#define TX_FIFO_INT_SIZE (1U)
|
|
|
|
#define BAUDRATE_OSR_16MHZ_HIGH_SPEED (16U)
|
|
#define BAUDRATE_OSR_16MHZ (14U)
|
|
#define BAUDRATE_OSR_8MHZ (14U)
|
|
#define BAUDRATE_OSR_4MHZ (13U)
|
|
#define BAUDRATE_OSR_2MHZ (13U)
|
|
|
|
|
|
|
|
//typedef enum{
|
|
// BAUDRATE_9600 = 9600U,
|
|
// BAUDRATE_19200 = 19200U,
|
|
// BAUDRATE_38400 = 38400U,
|
|
// BAUDRATE_57600 = 57600U,
|
|
// BAUDRATE_115200 = 115200U,
|
|
// BAUDRATE_250000 = 250000U,
|
|
// BAUDRATE_500000 = 500000U,
|
|
// BAUDRATE_1000000 = 1000000U,
|
|
//}Baudrate_t;
|
|
|
|
typedef enum{
|
|
BITSIZE_7BITS = 2U,
|
|
BITSIZE_8BITS = 3U,
|
|
}BitSize_t;
|
|
|
|
/*!< Parity: 00: NONE, 01: ODD, 11: EVEN */
|
|
typedef enum{
|
|
PARITY_NONE = 0U,
|
|
PARITY_ODD = 1U,
|
|
PARITY_EVEN = 3U,
|
|
}Parity_t;
|
|
|
|
|
|
typedef enum{
|
|
STOPS_1BITS = 0U,
|
|
STOPS_2BITS,
|
|
}StopBits_t;
|
|
|
|
|
|
#define RX_DATA_SIZE (128U)
|
|
#define VALID_RX_PACKAGE_SIZE (81U)
|
|
|
|
typedef void (*uartRx_cb_func_t)(uint8_t* buff, uint8_t length);
|
|
typedef void (*uartTx_cb_func_t)(void);
|
|
|
|
|
|
int8_t UART_Init(uint32_t baudRate, BitSize_t bitSize, Parity_t parity,StopBits_t stopBits);
|
|
void UART_RegisterIRQ(uartRx_cb_func_t rxDowncallback);
|
|
void UART_UnRegisterIRQ(void);
|
|
int8_t UART_SendBuff(uint8_t *buff, uint16_t length);
|
|
uint8_t UART_ReadByte(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif |