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

📄 rtl8019.h

📁 RTL8019以太网开发板资料
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef RTL8019_H_
#define RTL8019_H_

#define RTL_BASE_ADDR           0xc000       /* 网片基地址 */
#define RTL8019AS_ID0           0x50         /* 8019as id */
#define RTL8019AS_ID1           0x70

/************************************************************************/
/* NE2000兼容寄存器定义 */
/* page0的寄存器定义 */
/************************************************************************/
#define RW0_CR        0x00    /* 控制寄存器,page0~3皆可读写 */
                              /* 选择寄存器页,使能/禁止远程DMA,发布命令 */
#define RW0_CR_CS1    0x80    /* CS1,CS0页选择位. */
#define RW0_CR_CS0    0x40    /* 00:page 0; 01:page 1; 10:page 2; 11:page 3 */
                                    /* 0,1,2页NE2000兼容,3页RTL8019AS增强功能 */
#define RW0_CR_RD2    0x20    /* RD2,RD1,RD0远端DMA读写控制 */
#define RW0_CR_RD1    0x10    /* 000:保留; 001:远程DMA读; 010:远程DMA写 */
#define RW0_CR_RD0    0x08    /* 011:发包; 1**:异常终止/完成远程DMA操作 */

#define RW0_CR_TXP    0x04    /* 1:使能发送包,异常终止/完成自动清零; 写0:无效果 */

#define RW0_CR_STA    0x02    /* STA,STP为数据包接收发送控制.上电为01 */
#define RW0_CR_STP    0x01    /* 10:接收发送数据; 01:停止收发送数据 */
/* ............................................................................................ */
#define R0_CLDA0      0x01    /* CLDA0,CLDA1为只读,page0 */
#define R0_CLDA1      0x02    /* 当前本地DMA寄存器,读此寄存器可以得到当前本地DMA的地址,16位 */
/* ............................................................................................ */
#define W0_PSTART     0x01    /* 接收缓冲区开始页指针,设置接收缓冲区开始页地址.page0 写 */
#define W0_PSTOP      0x02    /* 接收缓冲区停止页指针,设置接收缓冲区停止页地址.page0 写 */
/* ............................................................................................ */
#define RW0_BNRY      0x03    /* 指向最后一个已读取的页,防止接收缓冲区重写.page0 读写. */
/* ............................................................................................ */
#define W0_TPSR       0x04    /* 向以太网发送的缓冲区开始页指针.page0 写  */
/* ............................................................................................ */
#define R0_TSR        0x04    /* 发送状态寄存器,指示包发送过程中的状态.page0 读 */

#define R0_TSR_OWC    0x80    /* 置1:一个时隙(51.2us)后检测到了一个冲突,正常后重新发起发送 */
#define R0_TSR_CDH    0x40    /* 置1:收发器发送CD Heartbeat signal失败 */
#define R0_TSR_REV5   0x20    /* 保留位,总为1 */
#define R0_TSR_CRS    0x10    /* 置1:发送数据包过程中载波丢失 */
#define R0_TSR_ABT    0x08    /* 置1:因为过度冲突(16次)NIC终止了发送 */
#define R0_TSR_COL    0x04    /* 置1:与其它网络上的station有冲突 */
#define R0_TSR_REV1   0x02    /* 保留位,总为1 */
#define R0_TSR_PTX    0x01    /* 置1:发送完成没有错误产生 */
/* ............................................................................................ */
#define W0_TBCR0      0x05    /* 设置网卡将要向以太网发送的字节数. page0 写 */
#define W0_TBCR1      0x06
/* ............................................................................................ */
#define R0_NCR        0x05    /* 记录一个节点在发送包过程中冲突的次数.page0 读 */
/* ............................................................................................ */
#define R0_FIFO       0x06    /* 环回测试时读取数据.page0 读 */
/* ............................................................................................ */
#define RW0_ISR       0x07    /* 中断状态寄存器,反映了NIC的状态(相应位写"1"清零,复位后必须清零). page0 读写 */
                                      
#define RW0_ISR_RST   0x80    /* 1. 置1:NIC处于复位状态,start command之后自动清零
                                 2. 置1:接收缓冲溢出,一个或多个数据包读出后自动清零 */
#define RW0_ISR_RDC   0x40    /* 置1:远程DMA操作结束 */
#define RW0_ISR_CNT   0x20    /* 置1:一个或多个网络计数器最高位置位 */
#define RW0_ISR_OVW   0x10    /* 置1:接收缓冲用完,但还没有溢出 */
#define RW0_ISR_TXE   0x08    /* 置1:一个数据包在发送过程中由于过度冲突而终止 */
#define RW0_ISR_RXE   0x04    /* 置1:接收数据出现: 1. CRC错误  2. 帧排列错误  3. 包丢失 */
#define RW0_ISR_PTX   0x02    /* 置1:数据包发送没有错误 */
#define RW0_ISR_PRX   0x01    /* 置1:数据包接收没有错误 */
/* ............................................................................................ */
#define W0_RSAR0      0x08    /* 设置远程DMA起始地址,设置CR进行DMA读写操作.page0 写 */
#define W0_RSAR1      0x09
/* ............................................................................................ */
#define R0_CRDA0      0x08    /* 当前远程DMA地址.page0 读 */
#define R0_CRDA1      0x09
/* ............................................................................................ */
#define W0_RBCR0      0x0a    /* 远程DMA将要读/写的字节数. page0 写 */
#define W0_RBCR1      0x0b
/* ............................................................................................ */
#define R0_ID0        0x0a    /* RTL8019AS芯片ID号. 50H,page0 读 */
#define R0_ID1        0x0b    /* RTL8019AS芯片ID号. 70H */
/* ............................................................................................ */
#define W0_RCR        0x0c    /* 接收配置寄存器.page0 写 */

#define W0_RCR_REV1   0x80    /* 保留位,总为1 */
#define W0_RCR_REV0   0x40    /* 保留位,总为1 */
#define W0_RCR_MON    0x20    /* 监视模式.1:接收到的正确数据包不存储,0:要存储 */
#define W0_RCR_PRO    0x10    /* 1:接收所有带有物理目的地址的数据包 
                                 0:接收物理目的地址必须与节点地址PAR0~5相符合的数据包 */
#define W0_RCR_AM     0x08    /* 1:接收在组播范围内的数据; 0:拒绝组播数据 */ 
#define W0_RCR_AB     0x04    /* 1:接收广播数据包; 0:拒绝广播数据包 */
#define W0_RCR_AR     0x02    /* 1:接收数据长度小于64字节的数据包; 0:拒绝 */
#define W0_RCR_SEP    0x01    /* 1:接收有错误的数据包; 0:拒绝有错误的数据包 */
/* ............................................................................................ */
#define R0_RSR        0x0c    /* 接收状态寄存器.page0 读 */

#define R0_RSR_DFR    0x80    /* 置1:检测到了载波或者冲突 */
#define R0_RSR_DIS    0x40    /* 置1:NIC进入了监视模式,接收禁止 置0:NIC离开了监视模式,允许接收 */
#define R0_RSR_PHY    0x20    /* 置1:接收到的数据包有组播或广播地址 置0:有目的地址 */
#define R0_RSR_MPA    0x10    /* 置1:丢失了数据包因为接收缓冲不够或者处于监视模式.CNTR2加1 */
#define R0_RSR_REV    0x08    /* 保留位,总为1 */
#define R0_RSR_FAE    0x04    /* 置1:帧错误,CRC错误.CNTR0加1 */
#define R0_RSR_CRC    0x02    /* 置1:CRC错误.CNTR1加1 */
#define R0_RSR_PRX    0x01    /* 置1:接收到的数据包没有错误 */
/* ............................................................................................ */
#define W0_TCR        0x0d    /* 发送配置寄存器.page0 写 */

#define W0_TCR_REV7   0x80    /* 保留位,总为1 */
#define W0_TCR_REV6   0x40    /* 保留位,总为1 */
#define W0_TCR_REV5   0x20    /* 保留位,总为1 */
#define W0_TCR_OFST   0x10    /* 1:冲突偏置使能 */
#define W0_TCR_ATD    0x08    /* 0:正常操作; 1:组播地址控制,用作流控 */

#define W0_TCR_LB1    0x04    /* 环回测试.00:正常操作; 01:内部环回(NIC) */
#define W0_TCR_LB0    0x02    /* 10:外部环回(ENDEC); 11:外部环回(Coax) */

#define W0_TCR_CRC    0x01    /* 正常模式: 0:CRC检测和产生使能 1:CRC产生禁止,检测使能
                                 环回模式: 0:CRC产生使能,检测禁止  1:CRC产生禁止,检测使能 */
/* ............................................................................................ */
#define R0_CNTR0      0x0d    /* 帧排列错误计数器.page0 读 */
/* ............................................................................................ */
#define W0_DCR        0x0e    /* 数据配置寄存器.page0 写 */

#define W0_DCR_REV7   0x80    /* 保留位,总为1 */

#define W0_DCR_FT1    0x40    /* FIFO门限选择 */
#define W0_DCR_FT0    0x20

#define W0_DCR_ARM    0x10    /* 自动初始化远程DMA. 0:发送包命令不执行; 1:发送包命令执行 */
#define W0_DCR_LS     0x08    /* 0:环回选择(需要TCR的配合); 1:正常操作 */
#define W0_DCR_LAS    0x04    /* 必须为0(上电时为1) */
#define W0_DCR_BOS    0x02    /* 字节排序选择. 0:高字节-低字节; 1:低字节-高字节 */
#define W0_DCR_WTS    0x01    /* DMA传输选择. 0:字节传输; 1:字传输 */
/* ............................................................................................ */
#define R0_CNTR1      0x0e    /* CRC错误计数器.page0 读 */
/* ............................................................................................ */
#define W0_IMR        0x0f    /* 中断屏蔽寄存器,上电清零.page0 写 */
/* ............................................................................................ */
#define R0_CNTR2      0x0f    /* 数据包丢失计数器.page0 读 */
/* ............................................................................................ */
/************************************************************************************************/
            /* page1的寄存器定义 */
#define RW1_PAR0      0x01    /* 以太网节点物理地址寄存器,用于比较输入数据包的目的地址 */
#define RW1_PAR1      0x02    /* 此6个寄存器page1 读写 */
#define RW1_PAR2      0x03
#define RW1_PAR3      0x04
#define RW1_PAR4      0x05
#define RW1_PAR5      0x06
/* ............................................................................................ */
#define RW1_CURR      0x07    /* 指向当前正在写的下一页,网卡写完接收缓冲区一页,就将这个页地址加一.page1 读写 */
/* ............................................................................................ */
#define RW1_MAR0      0x08    /* 组播地址过虑,跟CRC的逻辑有关.page1读写 */
#define RW1_MAR1      0x09
#define RW1_MAR2      0x0a
#define RW1_MAR3      0x0b
#define RW1_MAR4      0x0c
#define RW1_MAR5      0x0d
#define RW1_MAR6      0x0e
#define RW1_MAR7      0x0f
/************************************************************************************************/
         /* page2的寄存器定义 */
#define R2_PSTART     0x01    /* 接收缓冲区开始页指针,设置接收缓冲区开始页地址.page2 读 */
#define R2_PSTOP      0x02    /* 接收缓冲区停止页指针,设置接收缓冲区停止页地址.page2 读 */
/* ............................................................................................ */
#define R2_TPSR       0x04    /* 向以太网发送的缓冲区开始页指针.page2 读  */
/* ............................................................................................ */
#define R2_RCR        0x0c    /* 接收配置寄存器.page2 读 */

#define R2_RCR_REV1   0x80    /* 保留位,总为1 */
#define R2_RCR_REV0   0x40    /* 保留位,总为1 */
#define R2_RCR_MON    0x20    /* 监视模式.1:接收到的正确数据包不存储,0:要存储 */
#define R2_RCR_PRO    0x10    /* 1:接收所有带有物理目的地址的数据包 
                                 0:接收物理目的地址必须与节点地址PAR0~5相符合的数据包 */
#define R2_RCR_AM     0x08    /* 1:接收在组播范围内的数据; 0:拒绝组播数据 */ 
#define R2_RCR_AB     0x04    /* 1:接收广播数据包; 0:拒绝广播数据包 */
#define R2_RCR_AR     0x02    /* 1:接收数据长度小于64字节的数据包; 0:拒绝 */
#define R2_RCR_SEP    0x01    /* 1:接收有错误的数据包; 0:拒绝有错误的数据包 */
/* ............................................................................................ */
#define R2_TCR        0x0d    /* 发送配置寄存器.page2 读 */

#define R2_TCR_REV7   0x80    /* 保留位,总为1 */
#define R2_TCR_REV6   0x40    /* 保留位,总为1 */
#define R2_TCR_REV5   0x20    /* 保留位,总为1 */
#define R2_TCR_OFST   0x10    /* 1:冲突偏置使能 */
#define R2_TCR_ATD    0x08    /* 0:正常操作; 1:组播地址控制,用作流控 */

#define R2_TCR_LB1    0x04    /* 环回测试.00:正常操作; 01:内部环回 */
#define R2_TCR_LB0    0x02    /* 10:外部环回(通过SNI); 11:外部环回(通过MAU) */

#define R2_TCR_CRC    0x01    /* CRC逻辑控制,跟模式有关 */
/* ............................................................................................ */
#define R2_DCR        0x0e    /* 数据配置寄存器.page2读 */

#define R2_DCR_REV7   0x80    /* 保留位,总为1 */

#define R2_DCR_FT1    0x40    /* FIFO门限选择 */
#define R2_DCR_FT0    0x20

#define R2_DCR_ARM    0x10    /* 自动初始化远程DMA. 0:发送包命令不执行; 1:发送包命令执行 */
#define R2_DCR_LS     0x08    /* 0:环回选择(需要TCR的配合); 1:正常操作 */
#define R2_DCR_LAS    0x04    /* 必须为0(上电时为1) */
#define R2_DCR_BOS    0x02    /* 字节排序选择. 0:高字节-低字节; 1:低字节-高字节 */
#define R2_DCR_WTS    0x01    /* DMA传输选择. 0:字节传输; 1:字传输 */
/* ............................................................................................ */
#define R2_IMR        0x0f    /* 中断屏蔽寄存器,上电清零.page2 读 */
/************************************************************************************************/
          /* RTL8019AS 特殊寄存器定义,page3 */
#define RW3_9346CR        0x01    /* 9346命令寄存器.page3 读写,位0只读 */

#define RW3_9346CR_EEM1   0x80    /* 选择工作模式. 00:正常模式; 01:自动装载9346中的内容 */
#define RW3_9346CR_EEM0   0x40    /* 10:9346编程模式; 11:配置寄存器写使能(CONFIG1-3) */

#define RW3_9346CR_REV5   0x20    /* 保留位,总为1 */
#define RW3_9346CR_REV4   0x10    /* 保留位,总为1 */

#define RW3_9346CR_EECS   0x08    /* 在auto_load和编程模式下,映射EECS, EESK, EEDI & EEDO引脚上的状态 */
#define RW3_9346CR_EESK   0x04
#define RW3_9346CR_EEDI   0x02
#define R3_9346CR_EEDO    0x01
/* ............................................................................................ */
#define RW3_BPAGE         0x02    /* BROM页寄存器 */
/* ............................................................................................ */
#define RW3_CONFIG0       0x03    /* 配置寄存器0.page3 位7,6读写,其余只读 */

#define RW3_CONFIG0_ID1   0x80    /* 在RTL8019AS可写,其余不行 */
#define RW3_CONFIG0_ID0   0x40
/* 以下为状态位 */
#define R3_CONFIG0_AUI    0x20    /* 置1:when 外部MAU作为AUI接口.(1)10Base5模式;(2)AUI输入为高 */
#define R3_CONFIG0_PNPJP  0x10    /* 置1:when pnp引脚被外部拉高,即插即用模式 */
#define R3_CONFIG0_JP     0x08    /* 置1:when 跳线模式 */
#define R3_CONFIG0_BNC    0x04    /* 置1:when BNC接口.(1)PL1=PL0=0 (auto-detect)和连接测试失败;(2) PL1=PL0=1 (10 Base 2) */

⌨️ 快捷键说明

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