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

📄 uart.h

📁 uc/fs文件系统
💻 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 + -