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

📄 rtl8019.h

📁 AVR单片机基础上的以太网协议编程
💻 H
字号:
/**************************************************************************
**
**    文件: RTL8019.h
**    描述: 该文件完成与以太网卡相关的宏定义
**
*************************************************************************/

#ifndef RTL8019_h
#define RTL8019_h

//软复位端口
#define RTL8019_RESET_PORT  PORTB
#define RTL8019_RESET_DDR   DDRB
#define RTL8019_RESET_PIN   PB7

#define ETHERNET_MIN_PACKET_LENGTH 0x3c //以太网包的最小长度60B
#define ETHERNET_HEADER_LENGTH     0x0e //以太网头长度14B

//以太网控制器寄存器定义
#define CR          0X0000           //命令寄存器
#define PSTART      0X0100           //页起始寄存器,写Page 0,读Page 2
#define PAR0        0X0100           //page1
#define CR9346      0X0100           //page3
#define PSTOP       0X0200           //页结束寄存器,写Page 0,读Page 2
#define PAR1        0X0200           //page1
#define BNRY        0X0300           //边界寄存器,读写Page 0
#define PAR2        0X0300           //page1
#define TSR         0X0400           //发送状态寄存器,读Page 0
#define PAR3        0X0400           //page1
#define TPSR        0X0400           //发送页面起始寄存器,写Page 0
#define TBCR0       0X0500           //发送字节计数器,写Page 0
#define PAR4        0X0500           //page1
#define NCR         0X0500           //page0r
#define TBCR1       0X0600           //发送字节计数器,写Page 0
#define PAR5        0X0600           //page1
#define ISR         0X0700           //中断状态寄存器,读写Page 0
#define CURR        0X0700           //当前页寄存器,读写Page 1
#define RSAR0       0X0800           //远程DMA起始地址,写Page 0
#define CRDA0       0X0800
#define RSAR1       0X0900           //远程DMA起始地址,写Page 0
#define CRDA1       0X0900
#define RBCR0       0X0A00          //远程字节计数器,写Page 0
#define RBCR1       0X0B00          //远程字节计数器,写Page 0
#define RSR         0X0C00          //接收状态寄存器,读Page 0
#define RCR         0X0C00          //接收配置寄存器,写Page 0,读Page 2
#define TCR         0X0D00          //发送配置寄存器,写Page 0,读Page 2
#define CNTR0       0X0D00
#define DCR         0X0E00          //数据配置寄存器,写Page 0,读Page 2
#define CNTR1       0X0E00
#define IMR         0X0F00          //中断屏蔽寄存器,写Page 0,读Page 2
#define CNTR2       0X0F00
#define RDMARORT    0X1000          //DMA数据端口
#define RSTPORT     0X1800
#define CONFIG1	    0x0400          //page3       

//ISR寄存器中各位
#define ISR_RST  7
#define ISR_OVW  4
#define ISR_PRX  0
#define ISR_RDC  6
#define ISR_PTX  1

//CR寄存器中各位
#define CR_TXP   2

#define TXSTART_INIT  0x40
#define RXSTART_INIT  0x4C
#define RXSTOP_INIT   0x80

#define packetStatus  0
#define nextblock     1
#define packetLenL    2
#define packetLenH    3

#define cbi(reg,bit)       (reg &= ~BIT(bit))
#define sbi(reg,bit)       (reg |= BIT(bit))
#define readRTL(reg)       (*(volatile unsigned char*)(0xA000+(reg)))//0xA000保证访问的是外部SRAM,实际最高三位不起作用,见电路图
#define writeRTL(reg,data) do{*(volatile unsigned char*)(0xA000+(reg))=(unsigned char)(data);}while(0)

#endif

/******************* End Of File **********************/

⌨️ 快捷键说明

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