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

📄 8019.h

📁 rt8019的驱动程序源代码和驱动测试程序源代码
💻 H
字号:
#ifndef RTL8019_H
#define RTL8019_H			1
 
#include <absacc.h> 
#include "pubdef.h"

/*-------------------------------------------------------------------------------*/

#define RTL8019_BASE_ADD	  0xA000

/* RTL8019AS registers */

#define CR					  XBYTE[0xA000]

/* Gropu1 Page0, reading or R/W register */
#define PAGE0_CLDA0           XBYTE[0xA001]
#define PAGE0_CLDA1           XBYTE[0xA002]
#define PAGE0_BNRY            XBYTE[0xA003]
#define PAGE0_TSR             XBYTE[0xA004]
#define PAGE0_NCR             XBYTE[0xA005]
#define PAGE0_FIFO            XBYTE[0xA006]
#define PAGE0_ISR             XBYTE[0xA007]
#define PAGE0_CRDAO           XBYTE[0xA008]
#define PAGE0_CRDA1           XBYTE[0xA009]
#define PAGE0_8019ID0         XBYTE[0xA00A]
#define PAGE0_8019ID1         XBYTE[0xA00B]
#define PAGE0_RSR             XBYTE[0xA00C]
#define PAGE0_CNTR0           XBYTE[0xA00D]
#define PAGE0_CNTR1           XBYTE[0xA00E]
#define PAGE0_CNTR2           XBYTE[0xA00F]

/* Group1 Page0, writeing register */
#define PAGE0_PSTART          XBYTE[0xA001]
#define PAGE0_PSTOP           XBYTE[0xA002]
#define PAGE0_TPSR            XBYTE[0xA004]
#define PAGE0_TBCR0           XBYTE[0xA005]
#define PAGE0_TBCR1           XBYTE[0xA006]
#define PAGE0_RSAR0           XBYTE[0xA008]
#define PAGE0_RSAR1           XBYTE[0xA009]
#define PAGE0_RBCR0           XBYTE[0xA00A]
#define PAGE0_RBCR1           XBYTE[0xA00B]
#define PAGE0_RCR             XBYTE[0xA00C]
#define PAGE0_TCR             XBYTE[0xA00D]
#define PAGE0_DCR             XBYTE[0xA00E]
#define PAGE0_IMR             XBYTE[0xA00F]

/* Group1 Page1 */
#define PAGE1_PAR0            XBYTE[0xA001]
#define PAGE1_PAR1            XBYTE[0xA002]
#define PAGE1_PAR2            XBYTE[0xA003]
#define PAGE1_PAR3            XBYTE[0xA004]
#define PAGE1_PAR4            XBYTE[0xA005]
#define PAGE1_PAR5            XBYTE[0xA006]

#define PAGE1_CURR            XBYTE[0xA007]
#define PAGE1_MAR0            XBYTE[0xA008]
#define PAGE1_MAR1            XBYTE[0xA009]
#define PAGE1_MAR2            XBYTE[0xA00A]
#define PAGE1_MAR3            XBYTE[0xA00B]
#define PAGE1_MAR4            XBYTE[0xA00C]
#define PAGE1_MAR5            XBYTE[0xA00D]
#define PAGE1_MAR6            XBYTE[0xA00E]
#define PAGE1_MAR7            XBYTE[0xA00F]

/* Group1 Page2 */
#define PAGE2_PSTART          XBYTE[0xA001]
#define PAGE2_PSTOP           XBYTE[0xA002]
#define PAGE2_TPSR            XBYTE[0xA004]
#define PAGE2_RCR             XBYTE[0xA00C]
#define PAGE2_TCR             XBYTE[0xA00D]
#define PAGE2_DCR             XBYTE[0xA00E]
#define PAGE2_IMR             XBYTE[0xA00F]

/* Group1 page3 */
#define PAGE3_9346CR          XBYTE[0xA001]
#define PAGE3_BPAGE           XBYTE[0xA002]
#define PAGE3_CONFIG0         XBYTE[0xA003]
#define PAGE3_CONFIG1         XBYTE[0xA004]
#define PAGE3_CONFIG2         XBYTE[0xA005]
#define PAGE3_CONFIG3         XBYTE[0xA006]
#define PAGE3_TEST            XBYTE[0xA007]
#define PAGE3_CSNSAV          XBYTE[0xA008]
#define PAGE3_HLTCLK          XBYTE[0xA009]
#define PAGE3_INTR            XBYTE[0xA00B]
#define PAGE3_FMWP            XBYTE[0xA00C]
#define PAGE3_CONFIG4         XBYTE[0xA00D]

// Remote DMA port : NIC internal adress 0x10
#define REMOTE_DMA_PORT		  XBYTE[0xA010]

/*-------------------------------------------------------------------------------*/

/* driver of NIC(RTL8019as) */

#define setNICRegPage(pageNum)			CR = (CR & 0x3f) | (pageNum << 6)				// select register pages

/* configuration for loopback mode */
#define setNICInLoopbackMode			PAGE0_DCR = PAGE0_DCR & 0xf7
#define selectLoopbackMode(n)			PAGE0_TCR = (PAGE0_TCR & 0xf9) | (0x01 << n)	// n = 1, 2, 3
#define selectInternalLoopbackMode		PAGE0_TCR = (PAGE0_TCR & 0xf9) | 0x02
#define selectENDECLoopbackMode			PAGE0_TCR = (PAGE0_TCR & 0xf9) | 0x04
#define selectCableLoopbackMode			PAGE0_TCR = (PAGE0_TCR & 0xf9) | 0x06

#define disableNICInLoopbackMode		PAGE0_DCR |= 0x08;	\
										PAGE0_TCR &= 0xf8								// clear bit LB1, LB0, CRC
										
#define enableCRCGenerator				PAGE0_TCR &= 0xfe;

#define sleepNIC						setNICRegPage(3);		\
										PAGE3_9346CR |= 0xc0;	\
										PAGE3_CONFIG3 |= 0x04;	\
										PAGE3_9346CR &= 0x3f
#define activeNIC						setNICRegPage(3);		\
										PAGE3_9346CR |= 0xc0;	\
										PAGE3_CONFIG3 &= 0xf8;	\
										PAGE3_9346CR &= 0x3f
										
/* configuration for debug */
#define setNIInMonitorMode						PAGE0_RCR |= 0x20
#define disableNIInMonitorMode					PAGE0_RCR &= 0xdf
#define rxFrameWithLengthLessThan64Bytes		PAGE0_RCR |= 0x02
#define rxFrameWithReceiveError					PAGE0_RCR |= 0x01
#define rejectFrameWithLengthLessThan64Bytes	PAGE0_RCR &= 0xfd
#define rejectFrameWithReceiveError				PAGE0_RCR &= 0xfe
										
#define RESET_NIC						P3_5 = 1;		\
										delayMsec(10);	\
										P3_5 = 0;		\
										delayMsec(10)

/* for LaoGu circuit */	
/*								
#define RESET_NIC						P3_4 = 1;		\
										delayMsec(10);	\
										P3_4 = 0;		\
										delayMsec(10)
*/
									
// bits of ISR(Interrupt Status Register)
#define ISR_RST							0x80
#define ISR_RomteDMAComplete			0x40
#define ISR_TallyCntMSBSet				0x20
#define ISR_RxBufferOverflow			0x10
#define ISR_ErrorOnTx					0x08
#define ISR_ErrorOnRx					0x04
#define ISR_TxComplete					0x02
#define ISR_RxComplete					0x01

/*-------------------------------------------------------------------------------*/

#define reg00   XBYTE[0xA000]
#define reg01   XBYTE[0xA001]
#define reg02   XBYTE[0xA002]
#define reg03   XBYTE[0xA003]
#define reg04   XBYTE[0xA004]
#define reg05   XBYTE[0xA005]
#define reg06   XBYTE[0xA006]
#define reg07   XBYTE[0xA007]
#define reg08   XBYTE[0xA008]
#define reg09   XBYTE[0xA009]
#define reg0a   XBYTE[0xA00A]
#define reg0b   XBYTE[0xA00B]
#define reg0c   XBYTE[0xA00C]
#define reg0d   XBYTE[0xA00D]
#define reg0e   XBYTE[0xA00E]
#define reg0f   XBYTE[0xA00F]
#define reg10   XBYTE[0xA010]


/*-------------------------------------------------------------------------------*/
#endif		/* end of #ifndef RTL8019_H */

⌨️ 快捷键说明

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