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