📄 8019.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 + -