chg-stn-motherboard-ti-mcu/Core/Include/ivec_mcal_uart.h

95 lines
2.9 KiB
C

#ifndef CORE_INCLUDE_IVEC_MCAL_UART_H_
#define CORE_INCLUDE_IVEC_MCAL_UART_H_
#include "ti_msp_dl_config.h"
#include "../utils/utils.h"
#include <stdint.h>
#include "ivec_mcal_common.h"
typedef enum {
IVEC_MCAL_UART_BAUD_AUTO = 0,
IVEC_MCAL_UART_BAUD_2400 = 2400,
IVEC_MCAL_UART_BAUD_4800 = 4800,
IVEC_MCAL_UART_BAUD_9600 = 9600,
IVEC_MCAL_UART_BAUD_14400 = 14400,
IVEC_MCAL_UART_BAUD_19200 = 19200,
IVEC_MCAL_UART_BAUD_28800 = 28800,
IVEC_MCAL_UART_BAUD_33600 = 33600,
IVEC_MCAL_UART_BAUD_38400 = 38400,
IVEC_MCAL_UART_BAUD_57600 = 57600,
IVEC_MCAL_UART_BAUD_115200 = 115200,
IVEC_MCAL_UART_BAUD_230400 = 230400,
IVEC_MCAL_UART_BAUD_460800 = 460800,
IVEC_MCAL_UART_BAUD_921600 = 921600,
IVEC_MCAL_UART_BAUD_1000000 = 1000000,
IVEC_MCAL_UART_BAUD_1843200 = 1843200,
IVEC_MCAL_UART_BAUD_2000000 = 2000000,
IVEC_MCAL_UART_BAUD_2100000 = 2100000,
IVEC_MCAL_UART_BAUD_3686400 = 3686400,
IVEC_MCAL_UART_BAUD_4000000 = 4000000,
IVEC_MCAL_UART_BAUD_4468750 = 4468750
} IVEC_McalUartBaudRate_e;
typedef enum {
IVEC_MCAL_UART_DATA_BIT_7 = 7,
IVEC_MCAL_UART_DATA_BIT_8 = 8
} IVEC_McalUartDataBit_e;
typedef enum {
IVEC_MCAL_UART_STOP_BIT_1 = 1,
IVEC_MCAL_UART_STOP_BIT_2 = 2
} IVEC_McalUartStopBit_e;
typedef enum {
IVEC_MCAL_UART_PARITY_NONE,
IVEC_MCAL_UART_PARITY_ODD,
IVEC_MCAL_UART_PARITY_EVEN
} IVEC_McalUartParityBit_e;
typedef enum {
IVEC_MCAL_UART_FC_NONE = 0,
IVEC_MCAL_UART_FC_HW
} IVEC_McalUartFlowCtrl_e;
typedef enum{
IVEC_MCAL_UART_PORT_1=0,
IVEC_MCAL_UART_PORT_2,
IVEC_MCAL_UART_PORT_3,
IVEC_MCAL_UART_PORT_4,
IVEC_MCAL_UART_PORT_MAX
}IVEC_McalUartPort_e;
typedef struct
{
IVEC_McalUartBaudRate_e eUartBaudrate;
IVEC_McalUartDataBit_e eUartDataBit;
IVEC_McalUartStopBit_e eUartStopBit;
IVEC_McalUartParityBit_e eUartParityBit;
IVEC_McalUartFlowCtrl_e eUartFlowCtrl;
}IVEC_McalUartConfig_s;
typedef enum {
IVEC_MCAL_UART_EVENT_RX_ARRIVED = 1, ///< Received new data
IVEC_MCAL_UART_EVENT_RX_OVERFLOW = 2, ///< Rx FIFO overflowed
IVEC_MCAL_UART_EVENT_TX_COMPLETE = 3 ///< All data had been sent
} IVEC_McalUartEvents_e;
typedef struct
{
IVEC_McalUartPort_e eUartPortNumber;
IVEC_McalUartConfig_s xUartConfig;
char* pcBuffer;
uint16_t u16Length;
void (*pvUartRecvCallback)(IVEC_McalUartPort_e, IVEC_McalUartEvents_e, char*, uint32_t);
} IVEC_McalUartHandle_s;
//#define IVEC_MCAL_UART_PORT_MAX 3
/* Function Prototypes */
IVEC_McalCommonErr_e xMCAL_UartInit(IVEC_McalUartHandle_s* pxUartHandle);
IVEC_McalCommonErr_e xMCAL_UartDeInit(IVEC_McalUartHandle_s* pxUartHandle);
IVEC_McalCommonErr_e xMCAL_UartRead(IVEC_McalUartHandle_s* pxUartHandle, uint8_t* pu8Data, uint32_t u32DataLength);
IVEC_McalCommonErr_e xMCAL_UartWrite(IVEC_McalUartHandle_s* pxUartHandle, uint8_t* pu8Data, uint32_t u32DataLength);
#endif /* CORE_INCLUDE_IVEC_MCAL_UART_H_ */