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

📄 halposdm9000a.h

📁 包含8139
💻 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 + -