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

📄 common.h

📁 ti的TMS320C64XEMAC应用源代码
💻 H
字号:
#ifndef _CSLR_COMMON_H_#define _CSLR_COMMON_H_#include "cslr.h"
#include "cslr_emac.h"#include "cslr_ectl.h"
#include "cslr_mdio.h"#include "cslr_dev.h"
/**************************************************************************\* Peripheral Base Address\**************************************************************************///EMAC and EMAC Control Module registers
#define ECTL_REGS                 ((CSL_EctlRegs *) 0x02C81000u)
#define MDIO_REGS                 ((CSL_MdioRegs *) 0x02C81800u)
#define EMAC_REGS                 ((CSL_EmacRegs *) 0x02C80000u)

#define DEV_REGS				  ((CSL_DevRegs *) 0x02A80000u)

/******************************************************************************\* EMAC Descriptor section\******************************************************************************/#define _EMAC_DSC_BASE_ADDR         0x02c82000u#define _EMAC_DSC_BASE_ADDR_L2      0x00900000u/* EMAC Descriptor Size and Element Count */#define _EMAC_DSC_SIZE              8192#define _EMAC_DSC_ENTRY_SIZE        16	/* Size of a buffer descriptor, in bytes */#define _EDMA_DSC_ENTRY_COUNT       (_EMAC_DSC_SIZE/_EMAC_DSC_ENTRY_SIZE)	/* 512 *//*// EMAC Descriptor//// The following is the format of a single buffer descriptor// on the EMAC.*/typedef struct _EMAC_Desc {  struct _EMAC_Desc *pNext;     /* Pointer to next descriptor in chain */  Uint8             *pBuffer;   /* Pointer to data buffer              */  Uint32            BufOffLen;  /* Buffer Offset(MSW) and Length(LSW)  */  Uint32            PktFlgLen;  /* Packet Flags(MSW) and Length(LSW)   */} EMAC_Desc;/* ------------------------ *//* DESCRIPTOR ACCESS MACROS *//* ------------------------ *//* Packet Flags */#define EMAC_DSC_FLAG_SOP                       0x80000000u#define EMAC_DSC_FLAG_EOP                       0x40000000u#define EMAC_DSC_FLAG_OWNER                     0x20000000u#define EMAC_DSC_FLAG_EOQ                       0x10000000u#define EMAC_DSC_FLAG_TDOWNCMPLT                0x08000000u#define EMAC_DSC_FLAG_PASSCRC                   0x04000000u/* The following flags are RX only */#define EMAC_DSC_FLAG_JABBER                    0x02000000u#define EMAC_DSC_FLAG_OVERSIZE                  0x01000000u#define EMAC_DSC_FLAG_FRAGMENT                  0x00800000u#define EMAC_DSC_FLAG_UNDERSIZED                0x00400000u#define EMAC_DSC_FLAG_CONTROL                   0x00200000u#define EMAC_DSC_FLAG_OVERRUN                   0x00100000u#define EMAC_DSC_FLAG_CODEERROR                 0x00080000u#define EMAC_DSC_FLAG_ALIGNERROR                0x00040000u#define EMAC_DSC_FLAG_CRCERROR                  0x00020000u#define EMAC_DSC_FLAG_NOMATCH                   0x00010000u/*-----------------------------------------------------------------------*\* PHY Control Register Macros** These MACROS provide an easy way to read/write PHY registers\*-----------------------------------------------------------------------*/#define PHYREG_read(regadr, phyadr)                             \            MDIO_REGS->USERACCESS0 =                            \                    CSL_FMK(MDIO_USERACCESS0_GO,1u)         |   \                    CSL_FMK(MDIO_USERACCESS0_REGADR,regadr) |   \                    CSL_FMK(MDIO_USERACCESS0_PHYADR,phyadr)#define PHYREG_write(regadr, phyadr, data)                      \            MDIO_REGS->USERACCESS0 =                            \                    CSL_FMK(MDIO_USERACCESS0_GO,1u)         |   \                    CSL_FMK(MDIO_USERACCESS0_WRITE,1)       |   \                    CSL_FMK(MDIO_USERACCESS0_REGADR,regadr) |   \                    CSL_FMK(MDIO_USERACCESS0_PHYADR,phyadr) |   \                    CSL_FMK(MDIO_USERACCESS0_DATA, data)#define PHYREG_wait()                                           \            while( CSL_FEXT(MDIO_REGS->USERACCESS0,MDIO_USERACCESS0_GO) )#define PHYREG_waitResults( results ) {                                                \            while( CSL_FEXT(MDIO_REGS->USERACCESS0,MDIO_USERACCESS0_GO) );             \            results = CSL_FEXT(MDIO_REGS->USERACCESS0,MDIO_USERACCESS0_DATA); }#define PHYREG_waitResultsAck( results, ack ) {                                        \            while( CSL_FEXT(MDIO_REGS->USERACCESS0,MDIO_USERACCESS0_GO) );             \            results = CSL_FEXT( MDIO_REGS->USERACCESS0,MDIO_USERACCESS0_DATA );		   \            ack = CSL_FEXT( MDIO_REGS->USERACCESS0, MDIO_USERACCESS0_ACK); }#endif

⌨️ 快捷键说明

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