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

📄 rtl8019.h

📁 RTL8019以太网开发板资料
💻 H
📖 第 1 页 / 共 2 页
字号:
#define R3_CONFIG0_REV1   0x02    /* 保留位,总为0 */
#define R3_CONFIG0_REV0   0x01    /* 保留位,总为0 */
/* ............................................................................................ */
#define RW3_CONFIG1       0x04    /* 配置寄存器1.page3 位7读写,其余读 */

#define RW3_CONFIG1_IRQEN 0x80    /* 1:中断引脚使能.上电时为1(改变需要EEM1=EEM0=1) */ 
/* 以下为状态位 */
#define R3_CONFIG1_IRQS2  0x40    /* 中断引脚选择 */
#define R3_CONFIG1_IRQS1  0x20    /* IRQS2~IRQS0为外部引脚 */
#define R3_CONFIG1_IRQS0  0x10

#define R3_CONFIG1_IOS3   0x08    /* I/O口地址状态 */
#define R3_CONFIG1_IOS2   0x04    /* IOS3~IOS0为外部引脚 */
#define R3_CONFIG1_IOS1   0x02
#define R3_CONFIG1_IOS0   0x01
/* ............................................................................................ */
#define RW3_CONFIG2       0x05    /* 配置寄存器2.page3 位7,6,5读写,其余读 */

#define RW3_CONFIG2_PL1   0x80    /* 选择网络媒体类型 */
#define RW3_CONFIG2_PL0   0x40    /* 00:TP/CX 自动检测; 01:10BaseT with link test disabled
                                           10:10Base5;        11:10Base2   */
#define RW3_CONFIG2_BSELB 0x20    /* 1:disable BROM. 上电为0(改变需要EEM1=EEM0=1) */

#define R3_CONFIG2_BS4    0x10    /* 选择BROM大小和地址 */
#define R3_CONFIG2_BS3    0x08
#define R3_CONFIG2_BS2    0x04
#define R3_CONFIG2_BS1    0x02
#define R3_CONFIG2_BS0    0x01
/* ............................................................................................ */
#define RW3_CONFIG3       0x06    /* 配置寄存器3.page3 位2,1读写,其余读 */

#define R3_CONFIG3_PNP    0x80    /* 置1:在非跳线模式下,表示工作在PNP模式.当pnp引脚为高或者9346里的pnp位设置为非跳线模式时置1 */
                                  /* 在跳线模式此位被忽略 */
#define R3_CONFIG3_FUDUP  0x40    /* 置1:when 处于全速双工模式. */
#define R3_CONFIG3_LEDS1  0x20    /* 0:LED_RX(LED1),LED_TX(LED2);1:LED_CRS(LED1),MCSB(LED2) */
#define R3_CONFIG3_LEDS0  0x10    /* 0:LED_COL; 1:LED_LINK */
#define R3_CONFIG3_REV3   0x08    /* 保留位,总为1 */

#define RW3_CONFIG3_SLEEP 0x04    /* 置1:进入睡眠模式.上电为0(改变需要EEM1=EEM0=1)
                                           除了LEDBNC外,其余全部熄灭;发送接收处理照常进行 */
#define RW3_CONFIG3_PWRDN 0x02    /* 1:关机模式,根据HLTCLK寄存器提供2种模式:
                                           one:时钟不停,two:时钟停止;在两种模式下接收和发送都禁止了.
                                           除了LEDBNC,其余全部熄灭.除了HLTCLK,所有寄存器不可以访问.
                                           改变需要EEM1=EEM0=1. */

#define R3_CONFIG3_ACTIVEB 0x01   /* PnP Activate register位0取反 */
/* ............................................................................................ */
#define R3_CONFIG4        0x0d    /* 配置寄存器4.page3 位0读,其余保留 */

#define R3_CONFIG4_REV7   0x80    /* 保留 */
#define R3_CONFIG4_REV6   0x40    /* 保留 */
#define R3_CONFIG4_REV5   0x20    /* 保留 */
#define R3_CONFIG4_REV4   0x10    /* 保留 */
#define R3_CONFIG4_REV3   0x08    /* 保留 */
#define R3_CONFIG4_REV2   0x04    /* 保留 */
#define R3_CONFIG4_REV1   0x02    /* 保留 */

#define R3_CONFIG4_IOMS   0x01    /* 1:I/O地址范围SA15~SA0; 0:I/O地址范围SA9~SA0 */
/* ............................................................................................ */
#define R3_CSNSAV         0X08    /* PnP CSN寄存器的备份 */
/* ............................................................................................ */
#define W3_HLTCLK         0x09    /* 时钟寄存器,只能在关机模式下操作.page3 写
                                     写入0x52时钟运行,写入0x48时钟停止.其余无效 */
/* ............................................................................................ */
#define R3_INTR           0x0b    /* 反应ISA总线上 INT7-0 引脚的状态.page3 读 */
/* ............................................................................................ */
#define W3_FMWP           0x0c    /* 闪存写保护.page3 写
                                           当EEM0=EEM1=1时顺序写入0x57,0xa8使能闪存写操作 */
/* ............................................................................................ */

#define RTL_REMOTE        0x10    /* Remote DMA Port */
/* ............................................................................................ */
#define RTL_RESET         0x18    /* Reset Port */

        /* 选择page0 */
#define Page0()                                 \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW0_CR] &= 0x3f;      \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
}

        /* 选择page1 */
#define Page1()                                 \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW0_CR] &= 0x3f;      \
    XBYTE[RTL_BASE_ADDR + RW0_CR] |= RW0_CR_CS0;\
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
}

        /* 选择page2 */
#define Page2()                                 \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW0_CR] &= 0x3f;      \
    XBYTE[RTL_BASE_ADDR + RW0_CR] |= RW0_CR_CS1;\
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
}

        /* 选择page3 */
#define Page3()                                 \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW0_CR] |= (RW0_CR_CS0 | RW0_CR_CS1);    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
    _nop_();                                    \
}

        /* 写入一个数据到RTL */
#define RTL8019asWrite(ucAddr,ucValue)            \     
{                                               \
    XBYTE[RTL_BASE_ADDR + ucAddr] = ucValue;    \
}

        /* 从RTL读一个数据 */
#define RTL8019asRead(ucAddr,ucValue)             \
{                                               \
    ucValue = XBYTE[RTL_BASE_ADDR + ucAddr];    \
}


        /* RTL8019AS配置使能 */
#define Rtl3ConfigEnable()                      \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_9346CR] |= (RW3_9346CR_EEM1|RW3_9346CR_EEM0);\
}

        /* RTL8019AS配置禁止 */
#define Rtl3ConfigDisable()                     \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_9346CR] &= (~(RW3_9346CR_EEM1|RW3_9346CR_EEM0));\
}

        /* RTL8019AS配置禁止 */
#define Rtl3ConfigDisable()                     \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_9346CR] &= (~(RW3_9346CR_EEM1|RW3_9346CR_EEM0));\
}

        /* 使能中断 */
#define Rtl3IntEnable()                         \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG1] |= RW3_CONFIG1_IRQEN;    \
}

        /* 禁止中断 */
#define Rtl3IntDisable()                         \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG1] &= (~RW3_CONFIG1_IRQEN);    \
}

        /* 自动选择网络媒介类型 */
#define Auto3DetectNMT()                        \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG2] &= (~(RW3_CONFIG2_PL1|RW3_CONFIG2_PL0));\
}

#define DisableBROM()                           \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG2] |=  RW3_CONFIG2_BSELB;   \
}

#define enableBROM()                            \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG2] &= (~ RW3_CONFIG2_BSELB);\
}

       /* LED0为LINK灯,LED1为收发灯 */
#define LEN_LINK_ACT()                          \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG3] |= (R3_CONFIG3_LEDS1|R3_CONFIG3_LEDS0); \
}

        /* 进入睡眠模式 */
#define Rtl3SleepMode()                         \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG3] |= RW3_CONFIG3_SLEEP;    \
}

        /* 进入PowerDown模式1 */
#define Rtl3PowerDownMode1()                    \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG3] |= RW3_CONFIG3_PWRDN;    \
    XBYTE[RTL_BASE_ADDR + W3_HLTCLK] = 0x52;    \
}

        /* 进入PowerDown模式2 */
#define Rtl3PowerDownMode2()                    \
{                                               \
    XBYTE[RTL_BASE_ADDR + RW3_CONFIG3] |= RW3_CONFIG3_PWRDN;    \
    XBYTE[RTL_BASE_ADDR + W3_HLTCLK] = 0x48;    \
}


extern void ConfigParameter(void);
extern UWORK8 If8019SendReady(void);
extern void InitPara(void);
extern UWORK8 RTL8019asCheck(void);
extern UWORK8 RTL8019asInit(void);
extern UWORK8 RTL8019asReset(void);
extern void ShowStatistic(void);

#endif

⌨️ 快捷键说明

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