📄 ethernetinit.h
字号:
#ifndef __ETHERNET_INIT__
#define __ETHERNET_INIT__
#define MACLEN 6
#define CRCLEN 4
#define BROADCASTADDR (0xff, 0xff, 0xff, 0xff, 0xff, 0xff)
#define MAXFRAMELENHARD 1518
#define MINFRAMELENHARD 64
#define MAXFRAMELEN 1514
#define MINFRAMELEN 60
#define ETHERNETDATALEN (MAXFRAMELEN - sizeof(ETHERNETHEADER))
#define RTL8019_Base 0x08000000 //Bank4 0x08000000~0x0c000000
#define DATAPORT (*(volatile unsigned char*)(RTL8019_Base + 0x1000)) //1 byte//0x10
#define DATAPORTW (*(volatile unsigned short*)(RTL8019_Base + 0x1000))//2 byte//0x10
#define RTLRESET (*(volatile unsigned char*)(RTL8019_Base + 0x1800))//0x18
/* page0 register offsets */
#define CMDR (*(volatile unsigned char*)(RTL8019_Base + 0x0000))//0x00 /* command register for read & write */
#define PSTART (*(volatile unsigned char*)(RTL8019_Base + 0x0100))//0x01 /* page start register for write */
#define PSTOP (*(volatile unsigned char*)(RTL8019_Base + 0x0200))//0x02 /* page stop register for write */
#define BNRY (*(volatile unsigned char*)(RTL8019_Base + 0x0300))//0x03 /* boundary reg for rd and wr */
#define TPSR (*(volatile unsigned char*)(RTL8019_Base + 0x0400))//0x04 /* tx start page start reg for wr */
#define TBCR0 (*(volatile unsigned char*)(RTL8019_Base + 0x0500))//0x05 /* tx byte count 0 reg for wr */
#define TBCR1 (*(volatile unsigned char*)(RTL8019_Base + 0x0600))//0x06 /* tx byte count 1 reg for wr */
#define ISR (*(volatile unsigned char*)(RTL8019_Base + 0x0700))//0x07 /* interrupt status reg for rd and wr */
#define RSAR0 (*(volatile unsigned char*)(RTL8019_Base + 0x0800))//0x08 /* low byte of remote start addr */
#define RSAR1 (*(volatile unsigned char*)(RTL8019_Base + 0x0900))//0x09 /* hi byte of remote start addr */
#define RBCR0 (*(volatile unsigned char*)(RTL8019_Base + 0x0a00))//0x0A /* remote byte count reg 0 for wr */
#define RBCR1 (*(volatile unsigned char*)(RTL8019_Base + 0x0b00))//0x0B /* remote byte count reg 1 for wr */
#define RCR (*(volatile unsigned char*)(RTL8019_Base + 0x0c00))//0x0C /* rx configuration reg for wr */
#define TCR (*(volatile unsigned char*)(RTL8019_Base + 0x0d00))//0x0D /* tx configuration reg for wr */
#define DCR (*(volatile unsigned char*)(RTL8019_Base + 0x0e00))//0x0E /* data configuration reg for wr */
#define IMR (*(volatile unsigned char*)(RTL8019_Base + 0x0f00))//0x0F /* interrupt mask reg for wr */
/* page 1 register offsets */
#define PAR0 RTL8019_REG_1//0x01 /* physical addr reg 0 for rd and wr */
#define PAR1 RTL8019_REG_2//0x02
#define PAR2 RTL8019_REG_3//0x03
#define PAR3 RTL8019_REG_4//0x04
#define PAR4 RTL8019_REG_5//0x05
#define PAR5 RTL8019_REG_6//0x06
#define CURR RTL8019_REG_7//0x07 /* current page reg for rd and wr */
#define MAR0 RTL8019_REG_8//0x08 /* multicast addr reg 0 for rd and WR */
#define MAR1 RTL8019_REG_9//0x08
#define MAR2 RTL8019_REG_A//0x08
#define MAR3 RTL8019_REG_B//0x08
#define MAR4 RTL8019_REG_C//0x08
#define MAR5 RTL8019_REG_D//0x08
#define MAR6 RTL8019_REG_E//0x08
#define MAR7 RTL8019_REG_F//0x08
/* Buffer Length and Field Definition */
#define TXSTART 0x40 /* Tx buffer start page */
#define TXPAGES 6 /* Pages for Tx buffer */
#define RXSTART (TXSTART+TXPAGES) /* Rx buffer start page */
#define RXSTOP 0x5f /* Ditto for byte mode */
#define DCRVAL 0x48
#define STARHACK 0 /* Set non-zero to enable Starlan length hack */
typedef struct
{
BYTE destination[MACLEN];
BYTE source[MACLEN];
WORD datatype;
}ETHERNETHEADER;
typedef struct
{
ETHERNETHEAD head;
BYTE data[ETHERNETDATALEN];
DWORD crc;
}ETHERNETFRAME;
void EthernetReset(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -