?? rtl8019.h
字號:
#define R3_CONFIG0_REV1 0x02 /* 保留位,總為0 */
#define R3_CONFIG0_REV0 0x01 /* 保留位,總為0 */
/* ............................................................................................ */
#define RW3_CONFIG1 0x04 /* 配置寄存器1.page3 位7讀寫,其余讀 */
/* 以下為狀態位 */
#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 + -