📄 dm9k.h
字号:
#ifndef _DM9K_H_
#define _DM9K_H_
#define DM9K_MULTICAST_BYTE_NUM 8
//外部存储器操作
#define DM9K_ADDR_PORT (*(volatile uc *)0x2000)
#define DM9K_DATA_PORT (*(volatile uc *)0x6000)
#define DM9K_RX_INTR 0
#define DM9K_RX_TICK 1
#define DM9K_PHY_OP 0x08
#define DM9K_PHY_READ 0x0C
#define DM9K_PHY_WRITE 0x0A
#define DM9K_PHY_OPERATING 0x01
#define DM9K_PHY_AD 0x40
//中断屏蔽位定义
#define DM9K_PRS 0x01
#define DM9K_PTS 0x02
#define DM9K_ROS 0x04
#define DM9K_ROOS 0x08
#define DM9K_UDRUN 0x10
#define DM9K_LNKCHG 0x20
#define DM9K_IMASK 0x2B
#define DM9K_PAR 0x80
//DM9000寄存器定义
#define NCR 0x00
#define NSR 0x01
#define TCR 0x02
#define TSR1 0x03
#define TSR2 0x04
#define RCR 0x05
#define RSR 0x06
#define ROCR 0x07
#define BPTR 0x08
#define FCTR 0x09
#define FCR 0x0A
#define EPCR 0x0B
#define EPAR 0x0C
#define EPDRL 0x0D
#define EPDRH 0x0E
#define WCR 0x0F
#define PAR 0x10
#define MAR 0x16
#define GPCR 0x1E
#define GPR 0x1F
#define TRPAL 0x22
#define TRPAH 0x23
#define RWPAL 0x24
#define RWPAH 0x25
#define DMVID 0x28
#define DMPID 0x2A
#define CHIPR 0x2C
#define TCR2 0x2D
#define OCR 0x2E
#define SMCR 0x2F
#define ETXCSR 0x30
#define TCSCR 0x31
#define RCSCSR 0x32
#define MRCMDX 0xF0
#define MRCMDN 0xF1
#define MRCMD 0xF2
#define MRRL 0xF4
#define MRRH 0xF5
#define MWCMDX 0xF6
#define MWCMD 0xF8
#define MWRL 0xFA
#define MWRH 0xFB
#define TXPLL 0xFC
#define TXPLH 0xFD
#define ISR 0xFE
#define IMR 0xFF
union _usc {
us n;
struct {
uc c1, c2;
};
};
#define DM9K_READ_BYTE(r,d) { \
DM9K_ADDR_PORT = (r); \
(d) = DM9K_DATA_PORT; \
}
#define DM9K_WRITE_BYTE(r,d) { \
DM9K_ADDR_PORT = (r); \
DM9K_DATA_PORT = (d); \
}
#define DM9K_READ_WORD(r,d) { \
DM9K_ADDR_PORT = (r); \
((d).c1) = DM9K_DATA_PORT; \
DM9K_ADDR_PORT = (r)+1; \
((d).c2) = DM9K_DATA_PORT; \
}
#define DM9K_WRITE_WORD(r,d) { \
DM9K_ADDR_PORT = (r); \
DM9K_DATA_PORT = ((d).c1); \
DM9K_ADDR_PORT = (r) + 1; \
DM9K_DATA_PORT = ((d).c2); \
}
void dm9k_init (void);
void dm9k_power_up (void);
void dm9k_power_down (void);
void dm9k_tick (void);
void dm9k_write (uc addr, uc data);
uc dm9k_read (uc addr);
void dm9k_write_word (uc addr, us data);
us dm9k_read_word (uc addr);
void dm9k_phy_write (uc addr, us data);
us dm9k_phy_read (uc addr);
bool dm9k_read_packet (struct _mem_block **ppm, us *plen);
void dm9k_ram_read (uc *data, us len);
void dm9k_ram_write (uc *data, us len);
void dm9k_init_mac_address (void);
void dm9k_init_multicast_table (void);
void dm9k_enable_phy (void);
void dm9k_disable_phy (void);
void dm9k_enable_rx_normal (void);
void dm9k_enable_rx_mis (void);
void dm9k_disable_rx (void);
void dm9k_set_tx_single (void);
void dm9k_set_tx_double (void);
void dm9k_enable_chksum (void);
void dm9k_disable_chksum (void);
bool dm9k_tx_idle (void);
uc dm9k_get_link_speed (void);
bool dm9k_link_up (void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -