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

📄 dm9k.h

📁 ARP协议,含ARP
💻 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 + -