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

📄 91x_enet.h

📁 STR912 arm9实现的以太网通信程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : 91x_enet.h
* Author             : MCD Application Team
* Version            : V2.0
* Date               : 12/07/2007
* Description        : ENET driver defines & functions prototypes.
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Define to prevent recursive inclusion ------------------------------------ */
#ifndef _ENET_H_
#define _ENET_H_


/* Includes ------------------------------------------------------------------*/
#include "91x_lib.h"

/* Exported variables --------------------------------------------------------*/

/*----------------------------------------------------------------------------*/
/*                                Constants                                   */
/*----------------------------------------------------------------------------*/

/* ENET Operating Mode */
/* Set the Operation Mode by Auto-Negotiation process */
#define AUTO_NEGOTIATION                 PHY_AutoNegotiation
/* Set the full/half-duplex mode at 100 Mb/s */
#define FULLDUPLEX_100M                  PHY_FULLDUPLEX_100M
#define HALFDUPLEX_100M                  PHY_HALFDUPLEX_100M
/* Set the full/half-duplex mode at 10 Mb/s */
#define FULLDUPLEX_10M                   PHY_FULLDUPLEX_10M
#define HALFDUPLEX_10M                   PHY_HALFDUPLEX_10M

/* AddressFilteringMode */
#define MAC_Perfect_Multicast_Perfect    0x0
#define MAC_Perfect_Muticast_Hash        (0x1<<17)
#define MAC_Hash_Multicast_Hash          (0x2<<17)
#define Inverse                          (0x3<<17)
#define Promiscuous                      (0x4<<17)
#define MAC_Perfect_Multicast_All        (0x5<<17)
#define MAC_Hash_Muticast_All            (0x6<<17)

/* VLANFilteringMode */
#define VLANFilter_VLTAG_VLID            0x1
#define VLANfilter_VLTAG                 0x0

/* VLAN 1 */
#define VLANID1                          0x0000
#define VLANTAG1                         0x8100

/* VLAN 2 */
#define VLANID2                          0x0000
#define VLANTAG2                         0x8100

/* MIIPrescaler */
#define MIIPrescaler_1                   0x0       /* Prescaler for MDC clock when HCLK < 50 MHz */
#define MIIPrescaler_2                   0x1       /* Precaler for MDC when HCLK > = 50 MHz */

/* MAC Address */  
#define MAC_ADDR0                        0x00
#define MAC_ADDR1                        0x02
#define MAC_ADDR2                        0x04
#define MAC_ADDR3                        0x08
#define MAC_ADDR4                        0x0A
#define MAC_ADDR5                        0x0D

/* Multicast Address */
#define MCAST_ADDR0                      0xFF
#define MCAST_ADDR1                      0x00
#define MCAST_ADDR2                      0xFF
#define MCAST_ADDR3                      0x00
#define MCAST_ADDR4                      0xFF
#define MCAST_ADDR5                      0x00

/* ENET Buffers setting */                                                    
#define ENET_MAX_PACKET_SIZE             1520
#define ENET_RXBUFNB                     6
#define ENET_TXBUFNB                     3

/* PHY Address */
#define PHY_ADDRESS                      0x15
                                                          
                                                                                                    
/*----------------------------------------------------------------------------*/
/*                        ENET registers description                          */
/*----------------------------------------------------------------------------*/
                                                                          
/* ENET_MCR */                                                       
#define ENET_MCR_RA                      0x80000000  /*  Received All */
#define ENET_MCR_EN                      0x40000000  /*  Endianity */
#define ENET_MCR_PS                      0x03000000  /*  Prescaler bits */
#define ENET_MCR_DRO                     0x00800000  /*  Disable Receive Own */
#define ENET_MCR_LM                      0x00200000  /*  Loopback Mode */
#define ENET_MCR_FDM                     0x00100000  /*  Full Duplex Mode */
#define ENET_MCR_AFM                     0x000E0000  /*  Address Filtering Mode */
#define ENET_MCR_PWF                     0x00010000  /*  Pass Wrong Frame */
#define ENET_MCR_VFM                     0x00008000  /*  VLAN Filtering Mode */
#define ENET_MCR_ELC                     0x00001000  /*  Enable Late Collision */
#define ENET_MCR_DBF                     0x00000800  /*  Disable Broadcast Frame */
#define ENET_MCR_DPR                     0x00000400  /*  Disable Packet Retry */
#define ENET_MCR_RVFF                    0x00000200  /*  VCI Rx Frame Filtering */
#define ENET_MCR_APR                     0x00000100  /*  Automatic Pad Removal */
#define ENET_MCR_BL                      0x000000C0  /*  Back-off Limit */
#define ENET_MCR_DCE                     0x00000020  /*  Deferral Check Enable */
#define ENET_MCR_RVBE                    0x00000010  /*  Reception VCI Burst Enable */
#define ENET_MCR_TE                      0x00000008  /*  Transmission Enable */
#define ENET_MCR_RE                      0x00000004  /*  Reception Enable */
#define ENET_MCR_RCFA                    0x00000001  /*  Reverse Control Frame Address */
                                        
/* ENET_MTS */                                                                                                
#define ENET_MTS_PR                      0x80000000  /*  Packet Retry */
#define ENET_MTS_BC                      0x7FFC0000  /*  Byte Count */
#define ENET_MTS_CC                      0x00003C00  /*  Collision Count */
#define ENET_MTS_LCO                     0x00000200  /*  Late Collision Observed */
#define ENET_MTS_DEF                     0x00000100  /*  Defferd */
#define ENET_MTS_UR                      0x00000080  /*  Under Run */
#define ENET_MTS_EC                      0x00000040  /*  Excessive Collision */
#define ENET_MTS_LC                      0x00000020  /*  Late Collision */
#define ENET_MTS_ED                      0x00000010  /*  Excessive Deferral */
#define ENET_MTS_LOC                     0x00000008  /*  Loss of Carrier */
#define ENET_MTS_NC                      0x00000004  /*  No Carrier */
#define ENET_MTS_FA                      0x00000001  /*  Frame Aborted */
                                        
/* ENET_MRS */                               
#define ENET_MRS_FA                      0x80000000  /*  Frame Aborted */
#define ENET_MRS_PF                      0x40000000  /*  Packet Filter */
#define ENET_MRS_FF                      0x20000000  /*  Filtering Fail */
#define ENET_MRS_BF                      0x10000000  /*  Broadcast Frame */
#define ENET_MRS_MCF                     0x08000000  /*  Multicast Frame */
#define ENET_MRS_UCF                     0x04000000  /*  Unsupported control Frame */
#define ENET_MRS_CF                      0x02000000  /*  Control Frame */
#define ENET_MRS_LE                      0x01000000  /*  Length Error */
#define ENET_MRS_VL2                     0x00800000  /*  Vlan2 Tag */
#define ENET_MRS_VL1                     0x00400000  /*  Vlan1 Tag */
#define ENET_MRS_CE                      0x00200000  /*  CRC Error */
#define ENET_MRS_EB                      0x00100000  /*  Extra Bit */
#define ENET_MRS_ME                      0x00080000  /*  MII Error */
#define ENET_MRS_FT                      0x00040000  /*  Frame Type */
#define ENET_MRS_LC                      0x00020000  /*  Late Collision */
#define ENET_MRS_OL                      0x00010000  /*  Over Length */
#define ENET_MRS_RF                      0x00008000  /*  Runt Frame */
#define ENET_MRS_WT                      0x00004000  /*  Watchdog Time-out */
#define ENET_MRS_FCI                     0x00002000  /*  False Carrier Indication */
#define ENET_MRS_FL                      0x000007FF  /*  Frame Length */
                                                                                                                                        
/* ENET_SCR */                               
#define ENET_SCR_SRESET                  0x00000001 /* Soft Reset (ENET DMA_SCR_RESET) */
#define ENET_SCR_LOOPB                   0x00000002 /* Loopback mode (ENET DMA_SCR_LOOPB) */
#define ENET_SCR_RX_MBSIZE               0x00000010 /* Max defined burst length in RX mode (ENET DMA_SCR_RX_MAX_BURST_...) */
#define ENET_SCR_TX_MBSIZE               0x000000C0 /* Max defined burst length in TX mode (ENET ENET DMA_SCR_TX_MAX_BURST_...) */
#define ENET_SCR_RX_MAX_BURST_SZ         ENET_SCR_RX_MBSIZE /* Maximum value of defined burst length in RX mode */
#define ENET_SCR_RX_MAX_BURST_SZ_VAL     0x00000000 /* Default value of burst length in RX mode */
#define ENET_SCR_TX_MAX_BURST_SZ         ENET_SCR_TX_MBSIZE /* Maximum value of defined burst length in TX mode */
#define ENET_SCR_TX_MAX_BURST_SZ_VAL     0x000000C0 /* Default value of burst length in TX mode */

/* ENET DMA_RX_START   */
#define ENET_RXSTR_DMA_EN                0x00000001 /* set = 0 by sw force a ENET DMA abort */
#define ENET_RXSTR_FETCH                 0x00000004 /* start fetching the 1st descriptor */
#define ENET_RXSTR_FILTER_FAIL           0x00000020 /* if = 1 the address filtering failed cond */
#define ENET_RXSTR_RUNT                  0x00000040 /* discard damaged RX frames from cpu charge */
#define ENET_RXSTR_COLLS_SEEN            0x00000080 /* Late Collision Seen Cond discard frame automat. */
#define ENET_RXSTR_DFETCH_DLY            0x00FFFF00 /* Descriptor Fetch Delay */
#define ENET_RXSTR_DFETCH_DEFAULT        0x00010000 /* Descriptor Fetch Delay default value */

/* ENET DMA_TX_START   */
#define ENET_TXSTR_DMA_EN                0x00000001 /* set = 0 by sw force a ENET DMA abort */
#define ENET_TXSTR_FETCH                 0x00000004 /* start fetching the 1st descriptor */
#define ENET_TXSTR_URUN                  0x00000020 /* Underrun Enable */
#define ENET_TXSTR_DFETCH_DLY            0x00FFFF00 /* Descriptor Fetch Delay */
#define ENET_TXSTR_DFETCH_DEFAULT        0x00010000 /* Descriptor Fetch Delay default value */
                                        
/* ENET DMA TX CTRL    */                  
#define ENET_TXCR_DLYEN                  0x00008000 /* ENET DMA trigger delay enable */
#define ENET_TXCR_NXTEN                  0x00004000 /* Next Descriptor Fetch Mode Enable */
#define ENET_TXCR_CONTEN                 0x00001000 /* Continuous Mode Enable */
#define ENET_TXCR_XFERCOUNT              0x00000FFF /* ENET DMA transfer count */

/* ENET DMA RX CTRL    */                  
#define ENET_RXCR_DLYEN                  0x00008000 /* ENET DMA trigger delay enable */
#define ENET_RXCR_NXTEN                  0x00004000 /* Next Descriptor Fetch Mode Enable */
#define ENET_RXCR_CONTEN                 0x00001000 /* Continuous Mode Enable */
#define ENET_RXCR_XFERCOUNT              0x00000FFF /* ENET DMA transfer count */

/* ENET DMA Tx Start Address */                  
#define ENET_TXSAR_TXADDR                0xFFFFFFFC /* for ENET DMA Start Address (32 bit Word Align) */
#define ENET_TXSAR_ADDR_FIX_ADDR         0x00000002 /* Disable incrementing of ENET DMA_ADDR */
#define ENET_TXSAR_WRAP_EN               0x00000001

/* ENET DMA Rx Start Address */                  
#define ENET_RXSAR_RXADDR                0xFFFFFFFC /* for ENET DMA Start Address (32 bit Word Align) */
#define ENET_RXSAR_ADDR_FIX_ADDR         0x00000002 /* Disable incrementing of ENET DMA_ADDR */
#define ENET_RXSAR_WRAP_EN               0x00000001


/* ENET DMA TX Next Descriptor Address */
#define ENET_TXNDAR_DSCRADDR             0xFFFFFFFC /* Points to Next descriptor starting address */
#define ENET_TXNDAR_NPOL_EN              0x00000001 /* Next Descriptor Polling Enable */

/* ENET DMA RX Next Descriptor Address */
#define ENET_RXNDAR_DSCRADDR             0xFFFFFFFC /* Points to Next descriptor starting address */
#define ENET_RXNDAR_NPOL_EN              0x00000001 /* Next Descriptor Polling Enable */
                                        
/* ENET DMA Descriptor Packet Status: TX */  
#define ENET_DSCR_TX_STATUS_FA_MSK       0x00000001 /* Frame Aborted */
#define ENET_DSCR_TX_STATUS_JTO_MSK      0x00000002 /* Jabber Timeout. */
#define ENET_DSCR_TX_STATUS_NOC_MSK      0x00000004 /* No Carrier */
#define ENET_DSCR_TX_STATUS_LOC_MSK      0x00000008 /* Loss of Carrier */
#define ENET_DSCR_TX_STATUS_EXCD_MSK     0x00000010 /* Excessive Deferral */
#define ENET_DSCR_TX_STATUS_LCOLL_MSK    0x00000020 /* Late Collision */
#define ENET_DSCR_TX_STATUS_ECOLL_MSK    0x00000040 /* Excessive Collisions */
#define ENET_DSCR_TX_STATUS_URUN_MSK     0x00000080 /* Under Run */
#define ENET_DSCR_TX_STATUS_DEFER_MSK    0x00000100 /* Deferred */
#define ENET_DSCR_TX_STATUS_LCOLLO_MSK   0x00000200 /* Late Collision Observed */
#define ENET_DSCR_TX_STATUS_CCNT_MSK     0x00003C00 /* Collision Count */
#define ENET_DSCR_TX_STATUS_HBFAIL_MSK   0x00004000 /* Heart Beat Fail */
#define ENET_DSCR_TX_STATUS_VALID_MSK    0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word belong */
#define ENET_DSCR_TX_STATUS_PKT_RTRY_MSK 0x80000000 /* Packet Retry */
#define ENET_DSCR_TX_STATUS_ORED_ERR_MSK 0x000003D7 /* for total number of errors */
                                        
/* ENET DMA Descriptor Packet Status: RX */  
#define ENET_DSCR_RX_STATUS_FLEN_MSK     0x000007ff /* 0x00003FFF * Frame Length (max 2047) */
#define ENET_DSCR_RX_STATUS_FTLONG_MSK   0x00001000 /* Over Lenght */
#define ENET_DSCR_RX_STATUS_FCI_MSK      0x00002000 /* Frame too Long */
#define ENET_DSCR_RX_STATUS_WDTO_MSK     0x00004000 /* Watchdog Timeout */
#define ENET_DSCR_RX_STATUS_RUNTFR_MSK   0x00008000 /* Runt Frame */
#define ENET_DSCR_RX_STATUS_VALID_MSK    0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word  */
#define ENET_DSCR_RX_STATUS_COLLSEEN_MSK 0x00020000 /* Collision Seen */
#define ENET_DSCR_RX_STATUS_FTYPE_MSK    0x00040000 /* Frame Type */
#define ENET_DSCR_RX_STATUS_MII_ERR_MSK  0x00080000 /* MII Error */
#define ENET_DSCR_RX_STATUS_DRBBIT_MSK   0x00100000 /* Dribbling Bit */
#define ENET_DSCR_RX_STATUS_CRC_ERR_MSK  0x00200000 /* CRC Error */
#define ENET_DSCR_RX_STATUS_VLAN1_FR_MSK 0x00400000 /* One-Level VLAN Frame */
#define ENET_DSCR_RX_STATUS_VLAN2_FR_MSK 0x00800000 /* Two-Level VLAN Frame */
#define ENET_DSCR_RX_STATUS_LEN_ERR_MSK  0x01000000 /* Length Error */
#define ENET_DSCR_RX_STATUS_CTL_FR_MSK   0x02000000 /* Control Frame */
#define ENET_DSCR_RX_STATUS_UCTRL_FR_MSK 0x04000000 /* Unsupported Control Frame */

⌨️ 快捷键说明

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