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

📄 uartexpd.h

📁 网卡cs8900的源代码
💻 H
字号:
/*************************************************************************/
/*                                                                       */
/* 文件名:UARTEXPD.H                                                    */
/*                                                                       */
/* 硬件支持:s3c2410x   SC28L92                                          */
/*                                                                       */
/*                                                                       */
/*                                                                       */
/* 版本:Ver1.0                                                          */
/*                                                                       */
/* 作者:杨天池                                                          */
/*                                                                       */
/* 时间:2004年10月12日                                                  */
/*                                                                       */
/*                                                                       */
/*                                                                       */
/*                                                                       */
/*************************************************************************/

//chip 1 address, after MMU,read mode
#ifndef _XW_XCOM1_SYS     
  #define _XW_XCOM1_SYS 

#ifdef          __cplusplus
  extern  "C" {                   // C声明在 C++ 程序中
#endif

#define  rMRXA_C1           (*(volatile unsigned char *)0X84000e00)
#define  rSRA_C1            (*(volatile unsigned char *)0X84000e02)
#define  rRXFIFOA_C1        (*(volatile unsigned char *)0X84000e06)
#define  rIPCR_C1           (*(volatile unsigned char *)0X84000e08)
#define  rISR_C1            (*(volatile unsigned char *)0X84000e0A)
#define  rCTU_C1            (*(volatile unsigned char *)0X84000e0C)
#define  rCTL_C1            (*(volatile unsigned char *)0X84000e0E)
#define  rMRXB_C1           (*(volatile unsigned char *)0X84000e10)
#define  rSRB_C1            (*(volatile unsigned char *)0X84000e12)
#define  rRXFIFOB_C1        (*(volatile unsigned char *)0X84000e16)
#define  rIV68K_C1          (*(volatile unsigned char *)0X84000e18)
#define  rMISC_C1           (*(volatile unsigned char *)0X84000e1A)
#define  rIPR_C1            (*(volatile unsigned char *)0X84000e1C)
#define  rSTARTCC_C1        (*(volatile unsigned char *)0X84000e1E)
#define  rSTOPCC_C1         (*(volatile unsigned char *)0X84000e20)
//chip 1 address, after MMU,write mode
#define  rCSRA_C1           (*(volatile unsigned char *)0X84000e02)
#define  rCRA_C1            (*(volatile unsigned char *)0X84000e04)
#define  rTXFIFOA_C1        (*(volatile unsigned char *)0X84000e06)
#define  rACR_C1            (*(volatile unsigned char *)0X84000e08)
#define  rIMR_C1            (*(volatile unsigned char *)0X84000e0A)
#define  rCTPU_C1           (*(volatile unsigned char *)0X84000e0C)
#define  rCTPL_C1           (*(volatile unsigned char *)0X84000e0E)
#define  rCSRB_C1           (*(volatile unsigned char *)0X84000e12)
#define  rCRB_C1            (*(volatile unsigned char *)0X84000e14)
#define  rTXFIFOB_C1        (*(volatile unsigned char *)0X84000e16)
#define  rOPCR_C1           (*(volatile unsigned char *)0X84000e1C)
#define  rSOPR_C1           (*(volatile unsigned char *)0X84000e1E)
#define  rROPR_C1           (*(volatile unsigned char *)0X84000e20)
//chip 2 address, after MMU,read mode
#define  rMRXA_C2           (*(volatile unsigned char *)0X84000F00)
#define  rSRA_C2            (*(volatile unsigned char *)0X84000F02)
#define  rRXFIFOA_C2        (*(volatile unsigned char *)0X84000F06)
#define  rIPCR_C2           (*(volatile unsigned char *)0X84000F08)
#define  rISR_C2            (*(volatile unsigned char *)0X84000F0A)
#define  rCTU_C2            (*(volatile unsigned char *)0X84000F0C)
#define  rCTL_C2            (*(volatile unsigned char *)0X84000F0E)
#define  rMRXB_C2           (*(volatile unsigned char *)0X84000F10)
#define  rSRB_C2            (*(volatile unsigned char *)0X84000F12)
#define  rRXFIFOB_C2        (*(volatile unsigned char *)0X84000F16)
#define  rIV68K_C2          (*(volatile unsigned char *)0X84000F18)
#define  rMISC_C2           (*(volatile unsigned char *)0X84000F1A)
#define  rIPR_C2            (*(volatile unsigned char *)0X84000F1C)
#define  rSTARTCC_C2        (*(volatile unsigned char *)0X84000F1E)
#define  rSTOPCC_C2         (*(volatile unsigned char *)0X84000F20)
//chip 2 address, after MMU,write mode
#define  rCSRA_C2           (*(volatile unsigned char *)0X84000F02)
#define  rCRA_C2            (*(volatile unsigned char *)0X84000F04)
#define  rTXFIFOA_C2        (*(volatile unsigned char *)0X84000F06)
#define  rACR_C2            (*(volatile unsigned char *)0X84000F08)
#define  rIMR_C2            (*(volatile unsigned char *)0X84000F0A)
#define  rCTPU_C2           (*(volatile unsigned char *)0X84000F0C)
#define  rCTPL_C2           (*(volatile unsigned char *)0X84000F0E)
#define  rCSRB_C2           (*(volatile unsigned char *)0X84000F12)
#define  rCRB_C2            (*(volatile unsigned char *)0X84000F14)
#define  rTXFIFOB_C2        (*(volatile unsigned char *)0X84000F16)
#define  rOPCR_C2           (*(volatile unsigned char *)0X84000F1C)
#define  rSOPR_C2           (*(volatile unsigned char *)0X84000F1E)
#define  rROPR_C2           (*(volatile unsigned char *)0X84000F20)

//UART communication mode
//rx controls RTS
#define CC_NO_RTS              (0X0<<7)
#define CC_WITH_RTS            (0X1<<7)
//rx int bit1
#define CC_RXRDY               (0X0<<6)
#define CC_FFULL               (0X1<<6)
//error mode
#define CC_ERRCHAR             (0X0<<5)
#define CC_ERRBLOCK            (0X1<<5)
//parity mode
#define CC_WITH_PARITY         (0X0<<3)
#define CC_FORCE_PARITY        (0X1<<3)
#define CC_NO_PARITY           (0X2<<3)
#define CC_MLTI_DROP           (0X3<<3)
//parity type
#define CC_EVEN                (0X0<<2)
#define CC_ODD                 (0X1<<2)
//mode
#define NORMAL                 (0X0)
#define EXTENDI                (0X1)
#define EXTENDII               (0X4)
//data 
#define CC_DATA_5BIT           (0x0)
#define CC_DATA_6BIT           (0x1)
#define CC_DATA_7BIT           (0x2)
#define CC_DATA_8BIT           (0x3)

//chip control command
//only use in CRx register config
#define SET_MR1                (0X1<<4)
#define RST_RECV               (0X2<<4) 
#define RST_TRANS              (0X3<<4)
#define RST_ERRSTAT            (0X4<<4)
#define RST_CHA                (0X5<<4)
#define START_BREAK            (0X6<<4)
#define STOP_BREAK             (0X7<<4)
#define ASST_RTSN              (0X8<<4)
#define NEG_RTSN               (0X9<<4)
#define TIMEOUT_ON             (0XA<<4)
#define SET_MR0                (0XB<<4)
#define TIMEOUT_OFF            (0XC<<4)
#define PWRDOWN_ON             (0XE<<4)
#define PWRDOWN_OFF            (0XF<<4)

#define DISABLE_TX             (0X2<<2)
#define ENABLE_TX              (0X1<<2)
#define DISABLE_RX             (0X2)
#define ENABLE_RX              (0X1)

//baud rate set,all in normal mode,ACR[7]=0
#define BUD1200                (0X66)
#define BUD9600                (0XBB)
#define BUD38400               (0XCC)
#define BUD1XA                 (0XFF)
#define BUD1XB                 (0XEE)

//IMR signal
#define INPORT_CHANGE          (0X1<<7)
#define DELTA_BREAKB           (0X1<<6)
#define RX_FFULLB              (0X1<<5)
#define TX_RDYB                (0X1<<4)
#define CNT_RDY                (0X1<<3)
#define DELTA_BREAKA           (0X1<<2)
#define RX_FFULLA              (0X1<<1)
#define TX_RDYA                (0X1)

//int vector
#define CS1_INT_VECTOR          (0X0+8)
#define CS2_INT_VECTOR          (0X1+8)

//mr0
#define ENABLE_UWTD            (0X1<<7)
#define FIFO_SIZE16B           (0X1<<3)              

//isr status
#define IN_PORT_CHG            (0X1<<7)
#define DEL_BRK_B              (0X1<<6)
#define RX_FFULL_B             (0X1<<5)
#define TX_RDY_B               (0X1<<4)
#define CNT_RDY                (0X1<<3)
#define DEL_BRK_A              (0X1<<2)
#define RX_FFULL_A             (0X1<<1)
#define TX_RDY_A               (0X1)


//发送和接收的底层操作函数
#define COM16_TXFIFO_FULL()   (!(rSRA_C1&0x4))
#define COM16_SEND_DATA(c)    (rTXFIFOA_C1 = (c))
#define COM16_RXFIFO_EMPTY()  (!(rSRA_C1&0x1))
#define COM16_FIFO_RXDATA()   (rRXFIFOA_C1)

//HISR的优先级
#define CS1_HISR_PRI          (2)
#define CS2_HISR_PRI          (2)
//com device status
#define DEV_ALREADY_OPEN       (0X200)
#define DEV_NOT_EXIST          (0X201)
#define DEV_ERR_MALLCOMEM      (0X202)
//
#define XCOM_FIRST_OPER		0x100
#define XCOM_READ_STATE		0x101	//读状态
#define XCOM_WRITE_COMMD	0x102	//写命令
#define XCOM_READ_DATA		0x103	//读数据
#define XCOM_WRITE_DATA		0x104	//写数据
#define XCOM_ENABLE_COM		0x105	//使串口有效
#define XCOM_DISABLE_COM	0x106	//使串口无效
#define XCOM_LAST_OPER		0x110


//事件标志
#define COM16_TX_EVENT      0X1
#define COM16_RX_EVENT      0X2

//=======================================================================================
//队列处理
//COM16队列
#define COM16_DATA_IN_TXQ()	   ( ( (COM16_TXQ_SIZE) + (com16_send_wp) - (com16_send_rp) ) % (COM16_TXQ_SIZE) )
#define COM16_TXQ_FULL()           ( ( (com16_send_wp+1) % (COM16_TXQ_SIZE) ) == com16_send_rp )
#define COM16_TXQ_ENQ( c )                                                \
{                                                                         \
	(pCOM16TX[com16_send_wp]) = (c);                                  \
	(com16_send_wp) = ( com16_send_wp +1 ) % (COM16_TXQ_SIZE);        \
}
#define COM16_TXQ_DEQ( c )	                                          \
{						                          \
	(c) = (pCOM16TX[com16_send_rp]);	                          \
	(com16_send_rp) = ( com16_send_rp + 1 ) % (COM16_TXQ_SIZE);       \
}
#define COM16_TXQ_EMPTY( ) ((com16_send_wp)==(com16_send_rp))


#define COM16_DATA_IN_RXQ( )	( ( (COM16_RXQ_SIZE) + (com16_recv_wp) - (com16_recv_rp) ) % (COM16_RXQ_SIZE) )
#define COM16_RXQ_DEQ( c )	                                          \
{						                          \
	(c) = (pCOM16RX[(com16_recv_rp)]);                                \
	(com16_recv_rp) = ( (com16_recv_rp) + 1 ) % (COM16_RXQ_SIZE);     \
}
#define COM16_RXQ_EMPTY()		( (com16_recv_rp) == (com16_recv_wp) )
#define COM16_RXQ_ENQ( c )	                                          \
{						                          \
	(pCOM16RX[(com16_recv_wp)]) = (c);	                          \
	(com16_recv_wp) = ( (com16_recv_wp) + 1 ) % (COM16_RXQ_SIZE);     \
}
#define COM16_RXQ_FULL(driver)	( ( ((com16_recv_wp)+1) % (COM16_RXQ_SIZE) ) == (com16_recv_rp) )

#define  FIQ_CTRL_SET()         (rGPHDAT |= 0X10)
#define  FIQ_CTRL_CLR()         (rGPHDAT &= 0X7EF)

extern unsigned char cC1IMSK;

//fuction
void SCL_Init(void);
void CS1_EN_INT(void);
void * UART_OpenDev(char *szComNo, unsigned long dwBaudRate, unsigned long dwMode,
			     unsigned long dwRecvBufeSize, unsigned long dwSendBufSize);
// 结束 C 定义 
#ifdef __cplusplus
 }
#endif

#endif   
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -