📄 uart.h
字号:
/******************************************************************************************/
/*name: uart.h */
/*note: cs89712 uart macros and data structures */
/*time: 2001.8.29 */
/*writer: Leon */
/******************************************************************************************/
#ifndef UART_H
#define UART_H
#include "std.h"
//#include "ipport.h" /* To get the defination USE_WIRELESS_GPRS_MODEM */
#ifndef USE_WIRELESS_GPRS_MODEM
#define baudrate 9600 /* 115200bps UART baudrate */
#else
#define baudrate 9600 /* 9600bps UART baudrate */
#endif
#define baudrate1 9600 /* 57600bps UART baudrate */
#define UartTxLisr 0
#define UartRxErrLisr 1
/***********************************************************
* CONTROL REGISTER BIT DEFINITIONS *
***********************************************************/
/* bit 0-1 : Receive mode */
#define UCON 0xff /* mask bit */
#define UCON_RXM_OFF 0x00 /* receive disabled */
#define UCON_RXM_INTREQ 0x01 /* interrupt request */
#define UCON_RXM_GDMA0REQ 0x02 /* GDMA channel 0 req. */
#define UCON_RXM_GDMA1REQ 0x03 /* GDMA channel 1 req. */
/* bit 2 : Rx status interrupt enable */
#define UCON_RXSTAT_INT 0x04 /* generate rx status interrupt */
/* bit 3-4 : Transmit mode selection */
#define UCON_TXM_OFF 0x00 /* transmit disabled */
#define UCON_TXM_INTREQ 0x08 /* interrupt request */
#define UCON_TXM_GDMA0REQ 0x10 /* GDMA channel 0 req. */
#define UCON_TXM_GDMA1REQ 0x18 /* GDMA channel 1 req. */
/* bit 5 : Data Set Ready */
#define UCON_DSR 0x20 /* Assert DSR output(nUADSR)*/
/* bit 6 : Send Break */
#define UCON_SEND_BREAK 0x40 /* Send break */
/* bit 7 : Loop-back enable */
#define UCON_LOOPBACK 0x80 /* for test only */
/***********************************************************
* Status Register Bit Definitions *
***********************************************************/
#define USTAT 0xff /* mask bits */
#define USTAT_BREAK 0x08 /* break interrupt */
#define USTAT_DTR_LOW 0x10 /* data terminal ready */
#define USTAT_RCV_READY 0x01 /* receive data ready */
#define USTAT_TX_READY 0x02
#define USTAT_OVERRUN 0x20 /* overrun error */
#define USTAT_PARITY 0x80 /* parity error */
#define USTAT_FRAME 0x40 /* frame error */
#define USTAT_TXB_EMPTY 0x0200 /* tx buffer empty */
#define USTAT_TX_COMPLET 0x10 /* transmit complete */
#define USTAT_ERROR (USTAT_OVERRUN|USTAT_PARITY|USTAT_FRAME)
/************************************************************************/
/* LINE CONTROL REGISTER BIT DEFINITIONS */
/************************************************************************/
/* bit 0-1 : Word length */
#define ULCON_WL5 0x00
#define ULCON_WL6 0x01
#define ULCON_WL7 0x02
#define ULCON_WL8 0x03
/* bit 2 : Number of stop bits */
#define ULCON_STOP_2 0x04 /* default one stop bit */
/* bit 3-5 : Parity mode */
#define ULCON_PMD_NO 0x00 /* no parity */
#define ULCON_PMD_ODD 0x20 /* odd parity */
#define ULCON_PMD_EVEN 0x28 /* even parity */
#define ULCON_PMD_CHK1 0x30 /* parity is forced,checked as a 1 */
#define ULCON_PMD_CHK0 0x38 /* parity is forced,checked as a 0 */
/* bit 6 : Serial Clock Selection */
#define ULCON_UCLK 0x40 /* for external UART clock */
/* bit 7 : Infra-red mode */
#define ULCON_INFRA_RED 0x80
#define ULCON 0xff /* mask bits */
/* bit 8 : receive fifo enable */
#define UN_FIFO 0x100 /* Disable uart Rx FIFO */
/************************************************************************/
/* SET SERIAL DEVICE PARAMETER */
/************************************************************************/
#define NUM_OF_SERIAL_DEV 2 /* Number of serial device */
//#define SERIAL_DEV0 0
//#define SERIAL_DEV1 1
#define SERIAL_DEV0 1
#define SERIAL_DEV1 0
#define CONSOLE SERIAL_DEV0 /* default console channel */
/********************************************************************/
/* UART MACRO FUNCTIONS */
/********************************************************************/
#define U_TX_COMPLETE(c) (c? (US1_CSR&USTAT_TX_COMPLET): \
(US0_CSR&USTAT_TX_COMPLET))
#define U_BUFF_EMPTY(c) (c? (US1_CSR& USTAT_TXB_EMPTY): \
(US0_CSR & USTAT_TXB_EMPTY))
/***********************************************************
* UART DATA STRUCTURES *
***********************************************************/
#define ERROR 0
#define SUCCESS1 1
/* Transmit & Receive Que data structure */
#define MAXEVENT 2000 /* 4Kbyte buffer */
typedef struct
{
char buff[MAXEVENT]; /* data buffer */
int wptr; /* write pointer */
int rptr; /* read pointer */
} UART_BUFFER;
/* Define UART initialize structure */
typedef struct SERIAL_INIT_STRUCT
{
uint32 com_port; /* means UART channel number */
uint32 baud_rate; /* default is defined at sysconf.h*/
uint32 data_mode; /* interrupt or poll mode */
uint32 parity; /* default no parity */
uint32 stop_bits; /* default 1bit */
uint32 data_bits; /* default 8bit */
uint32 clk_sel; /* external UART clock or not */
} SERIAL_DEV;
#define BAUD_TABLE 5 /* No of baud rate table */
typedef struct
{
uint32 baud;
uint32 div;
}BaudTable;
/********************************************************************/
/* UART INITIALIZE FUNCTIONS */
/********************************************************************/
extern uint32 UART_Initialize(int uart_port);
extern uint32 UART_Init(SERIAL_DEV *);
extern void TxQInit(uint32 /*channel*/);
extern void RxQInit(uint32 /*channel*/);
/********************************************************************/
/* UART INTERRUPT SERVICE ROUTINES & CONTROL FUNCTIONS */
/********************************************************************/
extern void Uart0TxLisr(void);
extern void Uart0RxErrLisr(void);
extern void Uart1TxLisr(void);
extern void Uart1RxErrLisr(void);
extern void UARTTxIntOn(uint32 /*channel*/);
extern void UARTTxIntOff(uint32 /*channel*/);
extern void UARTRxIntOn(uint32 /*channel*/);
extern void UARTRxIntOff(uint32 /*channel*/);
/********************************************************************/
/* UART TX,RX QUE WRITE AND READ FUNCTIONS */
/********************************************************************/
extern uint32 TxQWr(uint32 /*channel*/,uint8 /*data*/);
extern uint16 RxQRd(uint32 /*channel*/);
/********************************************************************/
/* UART BAUD RATE TABLE REFERENCE FUNCTIONS */
/********************************************************************/
extern uint32 BaudRateVal(uint32 /*baud rate*/);
/********************************************************************/
/* UART STANDARD I/O FUNCTIONS FOR INTERRUPT */
/********************************************************************/
extern void dputchar(int ch);
extern int getch( void );
extern int i_getc(uint32 /*channel*/);
extern int i_putc(uint32 /*channel*/, uint8 /*ch*/);
/********************************************************************/
/* UART STANDARD I/O LIBRARY FUNCTIONS */
/********************************************************************/
extern int kbhit(void);
extern void Uart0isr(void);
extern void Uart1isr(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -