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

📄 halrtl8019as.h

📁 包含8139
💻 H
字号:
 ***************************************************************************//* * 修改记录: * *//** * @file * @brief *	<li>功能:</li> *  <li>设计思想:</li> * @date */#ifndef _HAL_RTL8019AS#define _HAL_RTL8019AS#ifdef __cplusplusextern "C" {#endif  /* __cplusplus *//**************************** 引用部分 *****************************************/#include <bspPubInfo.h>			/// 使用BSP公共信息#include "dllNetEther.h"			/// 引用以太网络DLL的宏定义/**************************** 声明部分 *****************************************/T_BOOL RTL8019AS_Find(T_VOID *vpHalDevData);T_BOOL RTL8019AS_GetResource(T_VOID *vpHalDevData);T_BOOL RTL8019AS_ReleaseResource(T_VOID *vpHalDevData);T_BOOL RTL8019AS_Start(T_VOID *vpHalDevData);T_BOOL RTL8019AS_Stop(T_VOID *vpHalDevData);T_BOOL RTL8019AS_SendPkt(T_VOID *vpHalDevData, T_BYTE *bpKtBuf, T_WORD wWtLen);T_BOOL RTL8019AS_ChipIntEnable(T_VOID *vpHalDevData);T_BOOL RTL8019AS_ChipIntDisable(T_VOID *vpHalDevData);T_UWORD RTL8019AS_GetIntType(T_VOID *vpHalDevData, T_UWORD uwVector, T_WORD *wpIntInfo);T_BOOL RTL8019AS_GetPktLen(T_VOID *vpHalDevData, T_WORD *wpKtLen);T_BOOL RTL8019AS_GetPktData(T_VOID *vpHalDevData, T_BYTE *bpKtBuf, T_WORD wKtLen);T_BOOL RTL8019AS_HandleOtherIsrType(T_VOID *vpHalDevData, T_WORD wIntInfo);T_BOOL RTL8019AS_ReadMacAddr(T_VOID *vpHalDevData, T_BYTE *bpMacAddr);T_BOOL RTL8019AS_LineCheck(T_VOID *vpHalDevData, T_WORD *wplineStatus);T_BOOL RTL8019AS_AddMultiAddr( T_VOID *vpHalDevData, T_CHAR *bMacAddr, T_VOID *vMultiMacChain);T_BOOL RTL8019AS_DelMultiAddr( T_VOID *vpHalDevData, T_CHAR *bMacAddr, T_VOID *vMultiMacChain);T_BOOL RTL8019AS_GetMacAddr(T_VOID *vpHalDevData, T_CHAR *cpMacAddr);T_BOOL RTL8019AS_SetMacAddr(T_VOID *vpHalDevData, T_CHAR *cpMacAddr);/**************************** 定义部分 *****************************************/#define ETHERNET_DEBUG           1        //打印调试信息(0不打印)。#define ETHERNET_DMA_WORD        1        //16位(word)DMA(0为8位DMA)。#define TX_START_PAGE            0x40     //发送缓冲区首地址。#define RX_START_PAGE            0x46     //接收FIFO缓冲队列开始页。#define RX_STOP_PAGE             0x80     //接收FIFO缓冲队列停止页。#define EN_CMD                   0x00	  //网卡指令寄存器。//0页寄存器偏移值。#define EN0_CLDALO      0x01    //当前本地DMA数据地址(低8位)。(只读)#define EN0_STARTPG     0x01    //接收FIFO缓冲队列开始页。#define EN0_CLDAHI      0x02    //当前本地DMA数据地址(高8位)。(只读)#define EN0_STOPPG      0x02    //接收FIFO缓冲队列停止页。(不包括此页)#define EN0_BOUNDARY    0x03    //接收FIFO缓冲队列读页指针。#define EN0_TSR         0x04    //传输状态寄存器。(只读)#define EN0_TPSR        0x04    //发送缓冲区首地址。#define EN0_NCR         0x05    //冲突数寄存器。(只读)#define EN0_TCNTLO      0x05    //本地DMA数据发送长度低位。#define EN0_FIFO        0x06    //FIFO寄存器。(只读)#define EN0_TCNTHI      0x06    //本地DMA数据发送长度高位。#define EN0_ISR         0x07    //中断状态寄存器。#define EN0_CRDALO      0x08    //当前远端DMA数据地址(低8位)。(只读)#define EN0_RSARLO      0x08    //远端DMA数据起始地址(低8位)。#define EN0_CRDAHI      0x09    //当前远端DMA数据地址(高8位)。(只读)#define EN0_RSARHI      0x09    //远端DMA数据起始地址(高8位)。#define EN0_ID0         0x0a    //网卡芯片ID寄存器。(存放ASCII‘P')#define EN0_RCNTLO      0x0a    //远端DMA数据长度低位。#define EN0_ID1         0x0b    //网卡芯片ID寄存器。(存放ASCII‘p')#define EN0_RCNTHI      0x0b    //远端DMA数据长度高位。#define EN0_RSR         0x0c    //接收状态寄存器。(只读)#define EN0_RXCR        0x0c    //接收结构寄存器。#define EN0_TXCR        0x0d    //传输配置寄存器。#define EN0_COUNTER0    0x0d    //帧同步错误记数寄存器。(只读)#define EN0_DCFG        0x0e    //数据结构寄存器。#define EN0_COUNTER1    0x0e    //CRC错误记录寄存器。(只读)#define EN0_IMR         0x0f    //中断屏蔽寄存器(设置某一位会使相应中断打开)。#define EN0_COUNTER2    0x0f    //遗失数据包数记录寄存器。(只读)//0页寄存器偏移值。#define EN1_PHYS        0x01    //网卡物理MAC地址寄存器(PAR0—PAR5)。#define EN1_CURPAG      0x07	//当前页地址。#define EN1_MULT        0x08	//Multicast filter mask array (8 bytes) RD WR#define EN_DATAPORT     0x10    //远端DMA Port//EN0_RXCR(接收结构寄存器)配置:#define ENRXCR_RXCONFIG 0x0c    //EN0_RXCR:接收数据包,包括普通包和广播包。#define ENRXCR_RXOFF    0x20	//EN0_RXCR: 不接收数据包。//EN0_TXCR(传输配置寄存器)配置:#define ENTXCR_TXCONFIG 0x10	//EN0_TXCR: 使能冲突补偿。#define ENTXCR_TXLOOKL  0x02	//EN0_TXCR: 内部lookback。//EN_CMD(网卡指令寄存器):#define ENCMD_STOP      0x01    //网卡停止收发数据。#define ENCMD_START     0x02    //网卡执行命令/开始收发数据包。#define ENCMD_TXP       0x04    //启动本地DMA数据发送(网卡――>以太网)。#define ENCMD_RREAD     0x08    //启动远端DMA数据读(网卡——>CPU)。#define ENCMD_RWRITE    0x10    //启动远端DMA数据写(网卡<――CPU)。#define ENCMD_SEND      0x18    //发送数据包命令。#define ENCMD_NODMA     0x20    //停止DMA操作。#define ENCMD_PAGE0     0x00    //选择第0页(要先选页,再读写该页寄存器)。#define ENCMD_PAGE1     0x40    //选择第1页。#define ENCMD_PAGE2     0x80    //选择第2页。#define ENCMD_PAGE3     0xC0    //选择第3页。//EN0_ISR(中断状态寄存器):#define ENISR_PRX       0x01    //正确接收数据包中断。#define ENISR_PTX       0x02    //正确发送数据包中断。#define ENISR_RXE       0x04    //接收数据包出错。#define ENISR_TXE       0x08    //由于冲突次数过多,发送出错。做重发处理#define ENISR_OVW       0x10    //网卡内存溢出。做软件重启网络芯片处理。#define ENISR_CNT       0x20    //出错计数器中断。#define ENISR_RDC       0x40    //远端DMA结束中断。#define ENISR_RST       0x80    //网络芯片Reset。#define ENISR_ALL       0x3f    //所有中断。#define ENISR_PART      0x35    //屏蔽发送中断。//DCR(数据结构寄存器):#define DCR_FT    (0x02 << 5)	//FIFO片选。#define DCR_NO    (0x01 << 3)	//无Loopback正常模式。#define DCR_WTS   (0x01 << 0)	//宽字DMA传送。//EN0_RSR(接收状态寄存器)和接受包:#define ENRSR_RXOK       0x01   //接收到一个好包。#define ENRSR_CRL        0x02   //CRC错误。#define ENRSR_FAE        0x04   //frame alignment错误。#define ENRSR_MPA        0x10   //丢包。#define ENRSR_PHY        0x20   //physical/multicase地址。#define ENRSR_DIS        0x40   //关闭接收,监视模式。#define ENRSR_DFR        0x80   //deferring//EN0_TSR(传送状态寄存器):#define ENTSR_PTX        0x01	//数据包传送无错误。#define ENTSR_ND         0x02#define ENTSR_COL        0x04	//传送时候发生传播冲突。#define ENTSR_ABT        0x08	//因为超频的冲突而导致NIC失败的传送。#define ENTSR_CRS        0x10	//传送器在传送过程中丢失数据包。#define ENTSR_FU         0x20	//传送时发生 "FIFO underrun"。#define ENTSR_CDH        0x40	//发生"heartbeat" 传送器传送信号失败。#define ENTSR_OWC        0x80	//发生out-of-window collision。///设备接口函数表宏#define HAL_RTL8019AS_DLL_NETETHER_INTERFACE {RTL8019AS_Find,\												  RTL8019AS_GetResource,\												  RTL8019AS_ReleaseResource,\												  RTL8019AS_Start,\												  RTL8019AS_Stop,\												  RTL8019AS_SendPkt,\												  RTL8019AS_ChipIntEnable,\												  RTL8019AS_ChipIntDisable,\												  RTL8019AS_GetIntType,\												  RTL8019AS_GetPktLen,\												  RTL8019AS_GetPktData,\												  RTL8019AS_HandleOtherIsrType,\												  RTL8019AS_GetMacAddr,\												  RTL8019AS_SetMacAddr,\												  RTL8019AS_LineCheck,\												  RTL8019AS_AddMultiAddr,\												  RTL8019AS_DelMultiAddr}///设备数据表结构typedef struct{	/// 第一部分:设备公共信息	T_BSP_DEV_PUB_DATA pub;	/// 第二部分:HAL私有的,需要用户配置的信息	T_WORD IoBaseAddr;		 //基地址	/// 第三部分:HAL私有的,不需要用户配置的信息	T_UWORD word16:1;        //16位(word)DMA(0为8位DMA)。	T_UBYTE txStartPage;	T_UBYTE rxStartPage;	T_UBYTE stopPage;	T_UBYTE currentPage;	T_UWORD curOffset;	T_UWORD rxingPage;	T_UWORD flag;	T_UBYTE status;          //接收到的数据包状态。	T_UBYTE next;            //接收到的数据包的下一页或者下一个包。	T_UWORD count;           //接收到的数据包(加包头)的长度。	T_UWORD headSize;        //数据包包头长度。	T_UBYTE	macaddr[6];       //存储MAC地址数组}T_HAL_RTL8019AS_DEV_DATA;typedef struct{	T_UBYTE  status;         //接收到的数据包状态。	T_UBYTE  next;           //接收到的数据包的下一页或者下一个包。	T_UHWORD count;          //接收到的数据包(加包头)的长度。}EN_PKTHEADER_T;              //用于存放包头信息。#ifdef __cplusplus}#endif  /* __cplusplus */#endif

⌨️ 快捷键说明

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