📄 uart.h
字号:
/*******************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained herein
* is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of Infomax Corp.
* * DESCRIPTION: Header file for UART driver * AUTHOR: Bo-Hung Wu * BEGIN DATE: Oct. 19, 2007 * LAST MODIFICATION: *****************************************************************************/ #ifndef UART_H#define UART_H/* Header files */#include "common_var_types.h"
#include "magic_env.h"/******************************************************************************* Constant/Marco *******************************************************************************/#define UART_BAUD_RATE_INPUT_CLK HCLK/* UART baud rates values */
#define UART_DIV_921600 0xE1000
#define UART_DIV_460800 0x70800
#define UART_DIV_230400 0x38400
#define UART_DIV_115200 0x1C200
#define UART_DIV_57600 0x0E100
#define UART_DIV_38400 0x09600
#define UART_DIV_19200 0x04B00
#define UART_DIV_9600 0x02580
#define UART_DIV_4800 0x012C0
#define UART_DIV_2400 0x00960
#define UART_DIV_1200 0x004B0
#define UART_DIV_300 0x0012C
#define UART_DIV_110 0x0006E
#define UART_IER_ERFTI (unsigned int) 0x00000001
#define UART_IER_ETFTI (unsigned int) 0x00000002
#define UART_IER_ELSRI (unsigned int) 0x00000004
#define UART_IER_EMSRI (unsigned int) 0x00000008
#define UART_IER_DISABLE_ALL (unsigned int) 0x00000000
#define UART_IIR_MSR (unsigned int)0x0
#define UART_IIR_NO_INT_PENDING (unsigned int)0x1
#define UART_IIR_TFT (unsigned int)0x2
#define UART_IIR_RFT (unsigned int)0x4
#define UART_IIR_LSR (unsigned int)0x6
#define UART_IIR_CAHR_TIME_OUT (unsigned int)0xC
#define UART_IIR_ALL_INTR_MASK (unsigned int)0xF
#define UART_FCR_FIFOENABLE (unsigned int) 0x00000001
#define UART_FCR_RCVRFIFORST (unsigned int) 0x00000002
#define UART_FCR_XMITFIFORST (unsigned int) 0x00000004
#define UART_FCR_DMAMODE (unsigned int) 0x00000008
#define UART_FCR_TXEMPT (unsigned int) 0x00000000 // 00 = TX empty FIFO
#define UART_FCR_TX2CHAR (unsigned int) 0x00000010 // 01 = TX 2 chars in FIFO
#define UART_FCR_TXQUARTER (unsigned int) 0x00000020 // 10 = TX FIFO 1/4 full
#define UART_FCR_TXHALF (unsigned int) 0x00000030 // 11 = TX FIFO 1/2 full
#define UART_FCR_RX1CHAR (unsigned int) 0x00000000 // 00 = RX 1 char in FIFO
#define UART_FCR_RXQUATER (unsigned int) 0x00000040 // 01 = RX 1/4 FIFO full
#define UART_FCR_RXHALF (unsigned int) 0x00000080 // 10 = RX 1/2 FIFO full
#define UART_FCR_RX2LESS (unsigned int) 0x000000C0 // 11 = RX FIFO 2 less full
#define UART_LCR_CLS (unsigned int) 0x00000003 // 11 = 8 bits
#define UART_LCR_STOP (unsigned int) 0x00000004
#define UART_LCR_PEN (unsigned int) 0x00000008
#define UART_LCR_EPS (unsigned int) 0x00000010
#define UART_LCR_SP (unsigned int) 0x00000020
#define UART_LCR_BREAK (unsigned int) 0x00000040
#define UART_LCR_DLAB (unsigned int) 0x00000080
#define UART_MCR_DTR (unsigned int) 0x00000001
#define UART_MCR_RTS (unsigned int) 0x00000002
#define UART_MCR_OUT1 (unsigned int) 0x00000004
#define UART_MCR_OUT2 (unsigned int) 0x00000008
#define UART_MCR_LOOPBACK (unsigned int) 0x00000010
#define UART_MCR_AFCE (unsigned int) 0x00000020
#define UART_MCR_SIRE (unsigned int) 0x00000040
#define UART_MCR_DATA_SRC (unsigned int) (0x1 << 7)
#define UART_LSR_DATAREADY (unsigned int) (0x1 << 0)
#define UART_LSR_OE (unsigned int) (0x1 << 1)
#define UART_LSR_PE (unsigned int) (0x1 << 2)
#define UART_LSR_FE (unsigned int) (0x1 << 3)
#define UART_LSR_BI (unsigned int) (0x1 << 4)
#define UART_LSR_THRE (unsigned int) (0x1 << 5)
#define UART_LSR_TEMT (unsigned int) (0x1 << 6)
#define UART_LSR_FERR (unsigned int) (0x1 << 7)
#define UART_MSR_DCTS (unsigned int) (0x1 << 0)
#define UART_MSR_DDSR (unsigned int) (0x1 << 1)
#define UART_MSR_TERI (unsigned int) (0x1 << 2)
#define UART_MSR_DDCD (unsigned int) (0x1 << 3)
#define UART_MSR_CTS (unsigned int) (0x1 << 4)
#define UART_MSR_DSR (unsigned int) (0x1 << 5)
#define UART_MSR_RI (unsigned int) (0x1 << 6)
#define UART_MSR_DCD (unsigned int) (0x1 << 7)
#define UART_DISABLE_ALL_INTS UART_IER_PTIME
#define UART_ENABLE_ALL_INTS (UART_IER_PTIME | UART_IER_ELSI | UART_IER_ERBFI)/******************************************************************************* Structure/Union/Enum/Typedef *******************************************************************************/ /**********************************************************\
number of data bits for serial communication
\**********************************************************/
typedef enum
{
UART_DATA_BITS_5,
UART_DATA_BITS_6,
UART_DATA_BITS_7,
UART_DATA_BITS_8,
UART_DATA_BITS_MAX
} uart_data_bits_t;
/**********************************************************\
number of stop bits period at end of word
\**********************************************************/
typedef enum
{
UART_STOP_BITS_1,
UART_STOP_BITS_2,
UART_STOP_BITS_MAX
} uart_stop_bits_t;
/**********************************************************\
parity bit types (optional) before end of word
\**********************************************************/
typedef enum
{
UART_PARITY_BIT_EVEN,
UART_PARITY_BIT_ODD,
UART_PARITY_BIT_STICK_1,
UART_PARITY_BIT_STICK_0,
UART_PARITY_BIT_NO_PARITY,
UART_PARITY_BIT_INVALID
} uart_parity_bit_t;
/**********************************************************\
baud rate (data transfer speed) for serial comm
\**********************************************************/
typedef enum
{
UART_BAUD_RATE_110,
UART_BAUD_RATE_300,
UART_BAUD_RATE_1200,
UART_BAUD_RATE_2400,
UART_BAUD_RATE_4800,
UART_BAUD_RATE_9600,
UART_BAUD_RATE_19200,
UART_BAUD_RATE_38400,
UART_BAUD_RATE_57600,
UART_BAUD_RATE_115200,
UART_BAUD_RATE_230400,
UART_BAUD_RATE_460800,
UART_BAUD_RATE_921600,
UART_BAUD_RATE_MAX
} uart_baud_rate_t;
/**********************************************************\
hardware support (CTS/RTS) on data transfer
\**********************************************************/
typedef enum
{
FLOW_CNTL_HARDWARE,
/*FLOW_CNTL_SOFTWARE,*/ /* Not supported */
FLOW_CNTL_INVALID
} uart_flow_control_t;
/**********************************************************\
operation mode - polling mode Vs. interrupt mode
\**********************************************************/
typedef enum
{
INTERRUPT_MODE_ENBALED,
INTERRUPT_MODE_DISBALED,
INTERRUPT_MODE_INVALID
} uart_intr_mode_t;
/**********************************************************\
Data source - application or tracer
\**********************************************************/
typedef enum
{
DATA_SRC_APPLICATION,
DATA_SRC_TRACER
} uart_data_src_t;
/**********************************************************\
uart port number. Fujitsu support 2 internal UART ports
\**********************************************************/
typedef enum
{
UART_PORT_0,
UART_PORT_1, UART_PORT_2,
UART_PORT_MAX
}uart_port_no_t;typedef struct
{
uart_data_bits_t data_bits;
uart_stop_bits_t stop_bits;
uart_parity_bit_t parity_bit;
uart_baud_rate_t baud_rate;
uart_flow_control_t flow_control;
uart_intr_mode_t intr_mode;
uart_data_src_t data_src_t;
} uart_defs_t;
/******************************************************************************* Function Prototypes *******************************************************************************/ /**
@Desc
Description for function_name
@Param parameter 1
Put parameter 1 description here
@Param parameter 2
Put parameter 2 description here
@Return Return value 1 and it description
@Return Return value 1 and it description
*/
void uart_init(const uart_port_no_t port_no, uart_defs_t *uart_defs_param_p);//void uart_receive(void);//void uart_transmit();void uart_tx(const uart_port_no_t port_no, UINT8 *tx_data_ptr, UINT32 tx_data_length);#endif /* #ifndef */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -