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

📄 net_nic.h

📁 DM9000A的网卡驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                               uC/TCP-IP
*                                       The Embedded TCP/IP Stack
*
*                          (c) Copyright 2003-2005; Micrium, Inc.; Weston, FL
*
*                   All rights reserved.  Protected by international copyright laws.
*                   Knowledge of the source code may not be used to write a similar
*                   product.  This file may only be used in accordance with a license
*                   and should not be redistributed in any way.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                        NETWORK INTERFACE CARD
*                                            Davicom DM9000A
*
* Filename      : net_nic.h
* Version       : V1.32
* Programmer(s) : EHS
*               : BAN
*********************************************************************************************************
* Note(s)    : (1) Supports EMAC section of Atmel's DM9000A microcontroller as described in
*
*                      Atmel Corporation (ATMEL; http://www.atmel.com).
*
*              (2) REQUIREs Ethernet Network Interface Layer located in the following network directory :
*
*                      \<Network Protocol Suite>\IF\Ether\
*
*                           where
*                                   <Network Protocol Suite>    directory path for network protocol suite.
*********************************************************************************************************
*/

#ifndef __NET_NIC_H__
#define __NET_NIC_H__


/*
*********************************************************************************************************
*                                                EXTERNS
*********************************************************************************************************
*/

#ifdef   NET_NIC_MODULE
#define  NET_NIC_EXT
#else
#define  NET_NIC_EXT  extern
#endif


/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                                DEFINES
*********************************************************************************************************
*/

#define DM9000A_10MHD                   0
#define DM9000A_100MHD                  1
#define DM9000A_10MFD                   4
#define DM9000A_100MFD                  5
#define DM9000A_AUTO                    8
#define DM9000A_1M_HPNA                16

#define DM9000A_IO_8_BITS               1
#define DM9000A_IO_16_BITS              2

#define DM9000A_QUEUE_ONE_PACKET        1
#define DM9000A_QUEUE_TWO_PACKETS       2

#define DM9000A_ID	         0x90000A46L
#define DM9000A_PKT_MAX	            1536                        /* Received packet max size                                 */
#define DM9000A_PKT_RDY	            0x01                        /* Packet ready to receive                                  */


/*
*********************************************************************************************************
*                                   DM9000A REGISTER ADDRESS DEFINES
*********************************************************************************************************
*/

#define DM9000A_NCR             0x00                            /* Network Control Register                                **/
#define DM9000A_NSR             0x01                            /* Network Status  Register                                **/
#define DM9000A_TCR             0x02                            /* TX Control Register                                     **/
#define DM9000A_TSR1            0x03                            /* TX Status  Register 1                                   **/
#define DM9000A_TSR2            0x04                            /* TX Status  Register 2                                   **/
#define DM9000A_RCR             0x05                            /* RX Control Register                                     **/
#define DM9000A_RSR             0x06                            /* RX Status  Register                                     **/
#define DM9000A_ROCR            0x07                            /* Receive Overflow Counter Register                        */
#define DM9000A_BPTR            0x08                            /* Back Pressure Threshold Register                         */
#define DM9000A_FCTR            0x09                            /* Flow Control  Threshold Resgister                        */
#define DM9000A_FCR             0x0A                            /* RX Flow Control Register                                 */

#define DM9000A_EPCR            0x0B                            /* EEPROM & PHY Control Register                           **/
#define DM9000A_EPAR            0x0C                            /* EEPROM & PHY Address Register                            */
#define DM9000A_EPDRL           0x0D                            /* EEPROM & PHY Low  Byte Data Register                     */
#define DM9000A_EPDRH           0x0E                            /* EEPROM & PHY High Byte Data Register                     */

#define DM9000A_WCR             0x0F                            /* Wake Up Control Register                        (8-bit)  */

#define DM9000A_PAR0            0x10                            /* Physical  Address Register, Byte 0                       */
#define DM9000A_PAR1            0x11                            /*    "         "        "   , Byte 1                       */
#define DM9000A_PAR2            0x12                            /*    "         "        "   , Byte 1                       */
#define DM9000A_PAR3            0x13                            /*    "         "        "   , Byte 1                       */
#define DM9000A_PAR4            0x14                            /*    "         "        "   , Byte 1                       */
#define DM9000A_PAR5            0x15                            /*    "         "        "   , Byte 1                       */
#define DM9000A_MAR0            0x16                            /* Multicast Address Register, Byte 0                       */
#define DM9000A_MAR1            0x17                            /*    "         "        "   , Byte 1                       */
#define DM9000A_MAR2            0x18                            /*    "         "        "   , Byte 2                       */
#define DM9000A_MAR3            0x19                            /*    "         "        "   , Byte 3                       */
#define DM9000A_MAR4            0x1A                            /*    "         "        "   , Byte 4                       */
#define DM9000A_MAR5            0x1B                            /*    "         "        "   , Byte 5                       */
#define DM9000A_MAR6            0x1C                            /*    "         "        "   , Byte 6                       */
#define DM9000A_MAR7            0x1D                            /*    "         "        "   , Byte 7                       */

#define DM9000A_GPCR	        0x1E                            /* General Purpose Control Register                (8-bit)  */
#define DM9000A_GPR             0x1F                            /* General Purpose Register                                 */
#define DM9000A_TRPAL           0x22                            /* TX SRAM Read  Pointer Address Low  Byte                  */
#define DM9000A_TRPAH           0x23                            /* TX SRAM Read  Pointer Address High Byte                  */
#define DM9000A_RWPAL           0x24                            /* RX SRAM Write Pointer Address Low  Byte                  */
#define DM9000A_RWPAH           0x25                            /* RX SRAM Write Pointer Address High Byte                  */

#define DM9000A_VIDL            0x28                            /* Vendor  ID Low  Byte                                     */
#define DM9000A_VIDH            0x29                            /* Vendor  ID High Byte                                     */
#define DM9000A_PIDL            0x2A                            /* Product ID Low  Byte                                     */
#define DM9000A_PIDH            0x2B                            /* Product ID High Byte                                     */
#define DM9000A_CHIPR           0x2C                            /* Chip Revision                                            */

#define DM9000A_TCR2            0x2D                            /* TX Control Register 2                                    */
#define DM9000A_OCR             0x2E                            /* Operation Control Register                               */
#define DM9000A_SMCR            0x2F                            /* Special Mode Control Register                            */
#define DM9000A_ETXCSR          0x30                            /* Early Transmit Control/Status Register                   */
#define DM9000A_TCSCR           0x31                            /* Transmit Check Sum Control Register                      */
#define DM9000A_RCSCSR          0x32                            /* Receive  Check Sum Control Status Register               */
#define DM9000A_MPAR            0x33                            /* MII PHY Address Register                                 */
#define DM9000A_LEDCR           0x34                            /* LED Pin Control Register                                 */
#define DM9000A_BUSCR           0x38                            /* Processor Bus Control Register                           */
#define DM9000A_INTCR           0x39                            /* INT Pin Control Register                                 */

#define DM9000A_PHY             0x40

#define DM9000A_SCCR            0x50                            /* System Clock Turn ON Control Register                    */
#define DM9000A_RSCCR           0x51                            /* Resume System Clock  Control Register                    */

#define DM9000A_MRCMDX          0xF0                            /* Memory Data Pre-Fetch Rd Cmd w/o Address Increment Reg.  */
#define DM9000A_MRCMDX1         0xF1                            /* Memory Data Read  Command with   Address Increment Reg.  */
#define DM9000A_MRCMD           0xF2                            /* Memory Data Read  Command with   Address Increment Reg.  */
#define DM9000A_MRRH            0xF4                            /* Memory Data Read  Address Register Low  Byte             */
#define DM9000A_MRRL            0xF5                            /* Memory Data Read  Address Register High Byte             */
#define DM9000A_MWCMDX	        0xF6                            /* Memory Data Write Command w/o    Address Increment Reg.  */
#define DM9000A_MWCMD           0xF8                            /* Memory Data Write Command with   Address Increment Reg.  */
#define DM9000A_MWRL            0xFA                            /* Memory Data Write Address Register Low  Byte             */
#define DM9000A_MWRH            0xFB                            /* Memory Data Write Address Register High Byte             */

#define DM9000A_TXPLL           0xFC                            /* TX Packet Length Low  Byte Register                      */
#define DM9000A_TXPLH           0xFD                            /* TX Packet Length High Byte Register                      */

#define DM9000A_ISR             0xFE                            /* Interrupt Status Register                               **/
#define DM9000A_IMR             0xFF                            /* Interrupt Mask   Register                               **/


/*
*********************************************************************************************************
*                      DM9000A PHY REGISTER ADDRESS DEFINES & REGISTER VALUE DEFINES
*********************************************************************************************************
*/

#define DM9000A_PHY_BMCR        0x00
#define DM9000A_PHY_BMSR        0x01
#define DM9000A_PHY_PHYID1      0x02
#define DM9000A_PHY_PHYID2      0x02
#define DM9000A_PHY_ANAR        0x04
#define DM9000A_PHY_ANLPAR      0x05
#define DM9000A_PHY_ANER        0x06
#define DM9000A_PHY_DSCR        0x10
#define DM9000A_PHY_DSCSR       0x11
#define DM9000A_PHY_10BTCSR     0x12
#define DM9000A_PHY_PWDOR       0x13
#define DM9000A_PHY_SPECCFG     0x17

                                                                /* Defines for PHY register [0x00]                          */
#define PHY_BMCR_RESET          (1 << 15)
#define PHY_BMCR_LBK_EN         (1 << 14)
#define PHY_BMCR_100MBPS        (1 << 13)
#define PHY_BMCR_10MBPS         (0 << 13)
#define PHY_BMCR_AN_EN          (1 << 12)
#define PHY_BMCR_PWR_DN         (1 << 11)
#define PHY_BMCR_ISOLATE        (1 << 10)
#define PHY_BMCR_AN_RESTART     (1 <<  9)
#define PHY_BMCR_FDX            (1 <<  8)
#define PHY_BMCR_COLL_EN        (1 <<  7)

                                                                /* Defines for PHY register [0x01]                          */
#define PHY_BMSR_T4             (1 << 15)
#define PHY_BMSR_TX_FDX         (1 << 14)
#define PHY_BMSR_TX_HDX         (1 << 13)
#define PHY_BMSR_10_FDX         (1 << 12)
#define PHY_BMSR_10_HDX         (1 << 11)
#define PHY_BMSR_MF             (1 <<  6)
#define PHY_BMSR_AN_COMP        (1 <<  5)
#define PHY_BMSR_FAULT          (1 <<  4)
#define PHY_BMSR_AN_ABLE        (1 <<  3)
#define PHY_BMSR_LINK           (1 <<  2)
#define PHY_BMSR_JABBER         (1 <<  1)
#define PHY_BMSR_EXT            (1 <<  0)

                                                                /* Defines for PHY register [0x04]                          */
#define PHY_ANAR_NP             (1 << 15)
#define PHY_ANAR_ACK            (1 << 14)
#define PHY_ANAR_RF             (1 << 13)
#define PHY_ANAR_FCS            (1 << 10)
#define PHY_ANAR_T4             (1 <<  9)
#define PHY_ANAR_TX_FDX         (1 <<  8)
#define PHY_ANAR_TX_HDX         (1 <<  7)
#define PHY_ANAR_10_FDX         (1 <<  6)
#define PHY_ANAR_10_HDX         (1 <<  5)


/*
*********************************************************************************************************
*                                     DM9000A REGISTER VALUE DEFINES
*********************************************************************************************************
*/
                                                                /* Defines for register [0x00]                              */
#define NCR_WAKEEN           (1 << 6)
#define NCR_FCOL             (1 << 4)
#define NCR_FDX              (1 << 3)
#define NCR_LBK_PHY          (2 << 1)
#define NCR_LBK_MAC          (1 << 1)
#define NCR_LBK_NORMAL       (0 << 1)
#define NCR_RST              (1 << 0)

                                                                /* Defines for register [0x01]                              */
#define NSR_SPEED            (1 << 7)
#define NSR_LINKST           (1 << 6)
#define NSR_WAKEST           (1 << 5)
#define NSR_TX2END           (1 << 3)
#define NSR_TX1END           (1 << 2)
#define NSR_RXOV             (1 << 1)

                                                                /* Defines for register [0x02]                              */
#define TCR_TJDIS            (1 << 6)
#define TCR_EXCECM           (1 << 5)
#define TCR_PAD_DIS2         (1 << 4)
#define TCR_CRC_DIS2         (1 << 3)
#define TCR_PAD_DIS1         (1 << 2)
#define TCR_CRC_DIS1         (1 << 1)
#define TCR_TXREQ            (1 << 0)

                                                                /* Defines for register [0x03]                              */
                                                                /* Defines for register [0x04]                              */
#define TSR_TJTO             (1 << 7)
#define TSR_LC               (1 << 6)
#define TSR_NC               (1 << 5)
#define TSR_LCOL             (1 << 4)
#define TSR_COL              (1 << 3)
#define TSR_EC               (1 << 2)
                                                                /* Defines for register [0x05]                              */
#define RCR_WTDIS            (1 << 6)
#define RCR_DIS_LONG         (1 << 5)

⌨️ 快捷键说明

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