📄 rtl8019.h
字号:
#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 + -