hal_mac.h
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C头文件 代码 · 共 574 行 · 第 1/2 页
H
574 行
//-----------------------------------------------------------------------------
// HAL_MAC
//-----------------------------------------------------------------------------
#ifndef HAL_MAC_H
#define HAL_MAC_H
#include "hal_map.h"
//-----------------------------------------------------------------------------
//* Defines for DMA_MAC - TX/RX DMA descriptors
//-----------------------------------------------------------------------------
#define RX_MAC_DESCR_NUM 16
#define TX_MAC_DESCR_NUM 16
//-----------------------------------------------------------------------------
//* Defines for Ethernet Frame format IEEE802.3
//-----------------------------------------------------------------------------
#define MAC_ADDR_LEN 6
#define ETHER_HEADER_LENGTH 14
#define ETHER_TYPE_LENGTH 2
#define MAC_MAX_FRAME_DATA_SZ 1500
#define MAC_MAX_FRAME_SZ 1514
//-----------------------------------------------------------------------------
//* Frame Descriptor table
//-----------------------------------------------------------------------------
typedef struct
{
u32 DmaMac_Cntl;
u32 DmaMac_Addr;
u32 DmaMac_Next;
u32 TxRx_Status;
u8 FrameBuf[MAC_MAX_FRAME_SZ];
} DmaMacDescr;
//-----------------------------------------------------------------------------
//* Ethernet Frame basic structure
//-----------------------------------------------------------------------------
typedef union
{
struct
{
u8 DstAddr[MAC_ADDR_LEN];
u8 SrcAddr[MAC_ADDR_LEN];
u16 Type; //Type or Length
u8 Data[MAC_MAX_FRAME_DATA_SZ];
} EthernetFrameBySegment;
u8 EthernetFrameByByte[MAC_MAX_FRAME_SZ];
}EthernetFrame;
//*****************************************************************************
//* *//
//* *//
//* *//
//* PHY STE100P *//
//* *//
//* *//
//* *//
//*****************************************************************************
//-----------------------------------------------------------------------------
//* Defines for the PHY controlled over MII
//-----------------------------------------------------------------------------
// Set the phy PHY_NUM according to your board settings
#define PHY_NUM 0x4
#define Phy_CtrlReg 0x00
#define Phy_Reset 0x8000
#define Phy_Loopback 0x4000
#define Phy_Speed_10Mbs 0x0000
#define Phy_Speed_100Mbs 0x2000
#define Phy_Speed_1000Mbs 0x0040
#define Phy_Speed_Msk 0x2040
#define Phy_AutoNego 0x1000
#define Phy_PowerDown 0x0800
#define Phy_Isolate 0x0400
#define Phy_AutoNegoRestart 0x0200
#define Phy_DuplexMode 0x0100
#define Phy_CollTest 0x0080
#define Phy_StatReg 0x01
#define Phy_AutoNego_Done 0x0020
#define Phy_ANADReg 0x04
#define Phy_Next_Page 0x8000
#define Phy_Remote_fault 0x4000
#define Phy_100Base_T4 0x0200
#define Phy_100Base_TX_Full 0x0100
#define Phy_100Base_TX_Half 0x0080
#define Phy_10Base_T_Full 0x0040
#define Phy_10Base_T_Half 0x0020
#define Phy_Selector 0x0001
#define Phy_ANLPAReg 0x5
#define Phy_ANEXReg 0x6
#define Phy_QPDSReg 0x11
//*****************************************************************************
//* *//
//* *//
//* *//
//* DMA MAC *//
//* *//
//* *//
//* *//
//*****************************************************************************
//-----------------------------------------------------------------------------
//* DMA_MAC Status & Control Register
//-----------------------------------------------------------------------------
//********* Masks
#define DmaMac_Stat_Msk 0xffffff03
#define DmaMac_Stat_Rst 0x4a4a0100
//********* Values
#define DmaMac_SRst 0x00000001
#define DmaMac_Loopb 0x00000002
#define DmaMac_RXBurst_16 0x00000000
#define DmaMac_RXBurst_08 0x00000010
#define DmaMac_RXBurst_04 0x00000020
#define DmaMac_RXBurst_01 0x00000030
#define DmaMac_TXBurst_16 0x00000000
#define DmaMac_TXBurst_08 0x00000040
#define DmaMac_TXBurst_04 0x00000080
#define DmaMac_TXBurst_01 0x000000C0
#define DmaMac_RevMsk 0x0000ff00
#define DmaMac_RevU 0x00000100
#define DmaMac_RxChStMsk 0x00030000 // RX_CHAN_STATUS
#define DmaMac_RxChSt_no 0x00000000
#define DmaMac_RxChSt_le 0x00010000
#define DmaMac_RxChSt_he 0x00020000
#define DmaMac_RxDataWMsk 0x000C0000 // RX_IO_DATA_WIDTH
#define DmaMac_RxDataW_8 0x00000000
#define DmaMac_RxDataW_16 0x00040000
#define DmaMac_RxDataW_32 0x00080000
#define DmaMac_RxFifoSzMsk 0x00F00000 // RX_FIFO_SIZE
#define DmaMac_RxFifoSz_2 0x00100000
#define DmaMac_RxFifoSz_4 0x00200000
#define DmaMac_RxFifoSz_8 0x00300000
#define DmaMac_RxFifoSz_16 0x00400000
#define DmaMac_RxFifoSz_32 0x00500000
#define DmaMac_TxChStMsk 0x03000000 // TX_CHAN_STATUS
#define DmaMac_TxChSt_no 0x00000000
#define DmaMac_TxChSt_le 0x01000000
#define DmaMac_TxChSt_he 0x02000000
#define DmaMac_TxDataWMsk 0x0C000000 // TX_IO_DATA_WIDTH
#define DmaMac_TxDataW_8 0x00000000
#define DmaMac_TxDataW_16 0x04000000
#define DmaMac_TxDataW_32 0x08000000
#define DmaMac_TxFifoSzMsk 0xF0000000 // TX_FIFO_SIZE
#define DmaMac_TxFifoSz_2 0x10000000
#define DmaMac_TxFifoSz_4 0x20000000
#define DmaMac_TxFifoSz_8 0x30000000
#define DmaMac_TxFifoSz_16 0x40000000
#define DmaMac_TxFifoSz_32 0x50000000
//-----------------------------------------------------------------------------
//* DMA_MAC Interrupt Sources Enable/Status Register
//-----------------------------------------------------------------------------
//********* Masks
#define DmaMac_IntEn_Msk 0x92ef82ef
#define DmaMac_IntEn_Rst 0x00000000
//********* Masks
#define DmaMac_IntStat_Msk 0x92ef82ef
#define DmaMac_IntStat_Rst 0x00050001
//********* Values
#define DmaMac_RxEmpty 0x00000001
#define DmaMac_RxFull 0x00000002
#define DmaMac_RxEntry 0x00000004
#define DmaMac_RxTo 0x00000008
#define DmaMac_PckLost 0x00000020
#define DmaMac_RxNext 0x00000040
#define DmaMac_RxDone 0x00000080
#define DmaMac_RxMErr 0x00000200
#define DmaMac_RxCurrDone 0x00008000
#define DmaMac_TxEmpty 0x00010000
#define DmaMac_TxFull 0x00020000
#define DmaMac_TxEntry 0x00040000
#define DmaMac_TxTo 0x00080000
//#define DmaMac_TxIOReq 0x00200000
#define DmaMac_TxNext 0x00400000
#define DmaMac_TxDone 0x00800000
#define DmaMac_TxMErr 0x02000000
#define DmaMac_MACInt 0x10000000
#define DmaMac_TxCurrDone 0x80000000
//-----------------------------------------------------------------------------
// DMA_MAC TX/RX DMA Start Register
//-----------------------------------------------------------------------------
//********* Masks
#define DmaMac_RxDMAStart_Msk 0x00ffffe5
#define DmaMac_RxDMAStart_Rst 0x00000000
//********* Masks
#define DmaMac_TxDMAStart_Msk 0x00ffffe5
#define DmaMac_TxDMAStart_Rst 0x00000000
//********* Values
#define DmaMac_DMAEn 0x00000001
#define DmaMac_StartFetch 0x00000004
#define DmaMac_TxPADDis 0x00000040 // TX only
#define DmaMac_TxAddCRCDis 0x00000080 // TX only
#define DmaMac_RxFilterFail 0x00000020 // RX only
#define DmaMac_RxRuntFrame 0x00000040 // RX only
#define DmaMac_RxCollSeen 0x00000080 // RX only
#define DmaMac_DFetchDlyMsk 0x00FFFF00
#define DmaMac_DFetchDlyU 0x00000100
//-----------------------------------------------------------------------------
// DMA_MAC TX/RX DMA Cntl Register
//-----------------------------------------------------------------------------
//********* Masks
#define DmaMac_RxDMACntl_Msk 0xffffdfff
#define DmaMac_RxDMACntl_Rst 0x00000000
//********* Masks
#define DmaMac_TxDMACntl_Msk 0xffffdfff
#define DmaMac_TxDMACntl_Rst 0x00000000
//********* Values
#define DmaMac_XferCntMsk 0x00000FFF
#define DmaMac_XferCntU 0x00000001
#define DmaMac_ContEn 0x00001000
#define DmaMac_NxtEn 0x00004000
#define DmaMac_DlyEn 0x00008000
#define DmaMac_Valid 0x00010000
#define DmaMac_EntryTrigMsk 0x003E0000
#define DmaMac_EntryTrigU 0x00020000
#define DmaMac_AddrWrapMsk 0xFFC00000
#define DmaMac_AddrWrapU 0x00400000
//*****************************************************************************
//* DMA_MAC TX/RX DMA Addr
//*****************************************************************************
//********* Mask
#define DmaMac_RxDMAAddr_Msk 0xffffffff
//********* Mask
#define DmaMac_TxDMAAddr_Msk 0xffffffff
//********* Values
#define DmaMac_WrapEn 0x00000001
#define DmaMac_FixAddr 0x00000002
#define DmaMac_DMAAddrMsk 0xFFFFFFFC
#define DmaMac_DMAAddrU 0x00000004
//-----------------------------------------------------------------------------
// DMA_MAC TX/RX DMA Next Address
//-----------------------------------------------------------------------------
//********* Mask
#define DmaMac_RxDMANext_Msk 0xffffffff
//********* Mask
#define DmaMac_TxDMANext_Msk 0xffffffff
//********* Values
#define DmaMac_NpolEn 0x00000001
#define DmaMac_DescrAddrMsk 0xFFFFFFFC
#define DmaMac_DescrAddrU 0x00000004
//-----------------------------------------------------------------------------
// DMA_MAC TX/RX DMA Current Address
//-----------------------------------------------------------------------------
//********* Mask
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?