📄 halposdm9000a.h
字号:
/*
* 修改记录:
* 20060310 创建文件。
*
*/
/**
* @file halPOSDM9000A.h
* @brief
* <li>功能: POSDM9000A设备HAL相关数据和宏等</li>
* <li>设计思想:</li>
* @date 20060310
*/
#ifndef _POSDM9000A_H
#define _POSDM9000A_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************** 引用部分 *********************************/
#include "dllNetEther.h"
/****************************** 声明部分 *********************************/
T_BOOL POSDM9000A_Find( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_GetResource( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_ReleaseResource( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_Start( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_Stop( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_SendPkt( T_VOID *vpEtherDevData, T_UBYTE * pktBuf, T_WORD wWtLen );
T_BOOL POSDM9000A_ChipIntEnable( T_VOID *vpEtherDevData );
T_BOOL POSDM9000A_ChipIntDisable( T_VOID *vpEtherDevData );
T_UWORD POSDM9000A_GetIntType( T_VOID *vpEtherDevData, T_UWORD uwVector, T_WORD *wpIntInfo );
T_BOOL POSDM9000A_GetPktLen( T_VOID *vpEtherDevData, T_WORD *pktLen);
T_BOOL POSDM9000A_GetPktData( T_VOID *vpEtherDevData, T_CHAR * bpKtBuf, T_WORD wKtLen );
T_BOOL POSDM9000A_HandleOtherIsrType( T_VOID *vpEtherDevData, T_WORD wIntInfo);
T_BOOL POSDM9000A_GetMacAddr( T_VOID *vpEtherDevData, T_CHAR *bpmacAddr );
T_BOOL POSDM9000A_SetMacAddr( T_VOID *vpEtherDevData, T_CHAR *bpmacAddr );
T_BOOL POSDM9000A_LineCheck( T_VOID *vpEtherDevData, T_WORD *wplineStatus);
T_BOOL POSDM9000A_AddMultiAddr( T_VOID * vpEtherDevData, T_CHAR *bMacAddr, T_VOID * vMultiMacChain);
T_BOOL POSDM9000A_DelMultiAddr( T_VOID * vpEtherDevData, T_CHAR *bMacAddr, T_VOID * vMultiMacChain);
/****************************** 定义部分 *********************************/
#define DMFE_TX_TIMEOUT 2000
//POSDM9000A寄存器描述.
#define NCR 0x00 // Network Control Register
#define NSR 0x01 // Network Status Register
#define TCR 0x02 // TX Control Register
#define TSR1 0x03 // TX Status Register 1, mainly including various error states
#define TSR2 0x04 // TX Status Register 2, mainly including various error states
#define RCR 0x05 // RX Control Register
#define RSR 0x06 // RX Status Register
#define ROCR 0x07 // Receive Overflow Count Register
#define BPTR 0x08 // Back Pressure Threshold Register
#define FCTR 0x09 // Flow Control Threshold Register
#define FCR 0x0a // RX/TX Flow Control Register
#define EPCR 0x0b // EEPROM & PHY Control Register
#define EPAR 0x0c // EEPROM & PHY Word Address Register
#define EPDRL 0x0d // EEPROM & PHY Low-byte Data Register
#define EPDRH 0x0e // EEPROM & PHY High-byte Data Register
#define WCR 0x0f // Wake Up Control Register
#define PAR 0x10 // Physical Address Register
#define MAR 0x16 // Multicast Address Register
#define GPCR 0x1e // General Purpose Control Register
#define GPR 0x1f // General Purpose Register
#define TRPAL 0x22 // TX SRAM Read Pointer Address Low Byte
#define TRPAH 0x23 // TX SRAM Read Pointer Address High Byte
#define RWPAL 0x24 // RX SRAM Write Pointer Address Low Byte
#define RWPAH 0x25 // RX SRAM Write Pointer Address High Byte
#define VID 0x28 // Vendor ID
#define VID_L 0x28 // Vendor ID Low Byte
#define VID_H 0x29 // Vendor ID High Byte
#define PID 0x2a // Product ID
#define PID_L 0x2a // Product ID Low Byte
#define PID_H 0x2b // Product ID High Byte
#define CHIPR 0x2c // CHIP Revision
#define SMCR 0x2f // Special Mode Control Register
#define MRCMDX 0xf0 // Memory Data Read Command Without Address Increment Register
#define MRCMD 0xf2 // Memory Data Read Command With Address Increment Register
#define MRRL 0xf4 // Memory Data Read Address Register Low Byte
#define MRRH 0xf5 // Memory Data Read Address Register High Byte
#define MWCMDX 0xf6 // Memory Data Write Command Without Address Increment Register
#define MWCMD 0xf8 // Memory Data Write Command With Address Increment Register
#define MWRL 0xfa // Memory Data Write Address Register Low Byte
#define MWRH 0xfb // Memory Data Write Address Register High Byte
#define TXPLL 0xfc // TX Packet Length Low Byte Register
#define TXPLH 0xfd // TX Packet Length Low Byte Register
#define ISR 0xfe // Interrupt Status Register
#define IMR 0xff // Interrupt Mask Register
#define POSDM9000A_ID 0x90000A46l
#define POSDM9000A_REG00 0x00
#define POSDM9000A_REG05 0x30 // SKIP_CRC/SKIP_LONG
#define POSDM9000A_REG08 0x27
#define POSDM9000A_REG09 0x38
#define POSDM9000A_REG0A 0x08
#define POSDM9000A_REGFF 0x83 // 83 2 81 wangz 040524
//NCR command bits
#define MSK_RESET 0x01 //software reset
//ISR and TSR status bits
#define MSK_PRX 0x01 // rx with no error
#define MSK_PTX 0x02 // tx with no error
#define MSK_OVF 0x04 // rx overflow
#define POSDM9000A_PHY 0x40 // PHY address 0x01
#define POSDM9000A_PKT_MAX 1536 // Received packet max size
#define POSDM9000A_PKT_RDY 0x01 // Packet ready to receive
#define POSDM9000A_INT_MII 0x00
#define POSDM9000A_EXT_MII 0x81
#define POSDM9000A_VID_L 0x28
#define POSDM9000A_VID_H 0x29
#define POSDM9000A_PID_L 0x2A
#define POSDM9000A_PID_H 0x2B
#define EPCR_EPOS 0x08
#define EPCR_EPRD 0x04
#define EPCR_EPWE 0x02
#define EPCR_EPST 0x01
#define HAL_POSDM9000A_DLL_NETETHER_INTERFACE {POSDM9000A_Find,\
POSDM9000A_GetResource,\
POSDM9000A_ReleaseResource,\
POSDM9000A_Start,\
POSDM9000A_Stop,\
POSDM9000A_SendPkt,\
POSDM9000A_ChipIntEnable,\
POSDM9000A_ChipIntDisable,\
POSDM9000A_GetIntType,\
POSDM9000A_GetPktLen,\
POSDM9000A_GetPktData,\
POSDM9000A_HandleOtherIsrType,\
POSDM9000A_GetMacAddr,\
POSDM9000A_SetMacAddr,\
POSDM9000A_LineCheck,\
POSDM9000A_AddMultiAddr,\
POSDM9000A_DelMultiAddr}
typedef struct
{
T_UDWORD rx_packets;
T_UDWORD tx_packets;
T_UDWORD rx_errors;
T_UDWORD tx_errors;
T_UDWORD rx_length_errors;
T_UDWORD runt_length_errors;
T_UDWORD long_length_errors;
T_UDWORD rx_fifo_errors;
T_UDWORD rx_crc_errors;
} T_EnetStatistics;
typedef struct
{
T_UDWORD trans_start;
//T_UHWORD op_mode;
T_UHWORD io_mode;
T_UHWORD tx_pkt_cnt;
T_UDWORD queue_pkt_len;
T_UHWORD reg0;
T_UHWORD reg5;
T_UHWORD reg8;
T_UHWORD reg9;
T_UHWORD rega;
T_UBYTE local_mac_address[6];
T_BYTE tbusy;
T_BYTE interrupt;
T_BYTE start;
T_EnetStatistics stat;
} T_EiDevice;
typedef struct{
//-------------------------系统统一要求的配置项
T_BSP_DEV_PUB_DATA pub;
//--------------------------HAL本身需要配置的部分,该部分由HAL设计
T_VBYTE *vbpPOSDM9000AAddr;
T_UHWORD op_mode;
T_BYTE mac0;
T_BYTE mac1;
T_BYTE mac2;
T_BYTE mac3;
T_BYTE mac4;
T_BYTE mac5;
//--------------------------HAL本身不需要配置的部分
T_EiDevice tEiStatus; //设备信息结构
}T_HAL_POSDM9000A_DEV_DATA;
enum POSDM9000A_PHY_mode {POSDM9000A_10MHD = 0, POSDM9000A_100MHD = 1, POSDM9000A_10MFD = 4,
POSDM9000A_100MFD = 5, POSDM9000A_AUTO = 8, POSDM9000A_1M_HPNA =0x10 };
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif //#ifndef _POSDM9000A_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -