⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.h

📁 realview下的一个arm9的bootloader烧录器.支持norflash读写
💻 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 + -