📄 enc28j60.h
字号:
/*********************************************************************
*
* ENC28J60 registers/bits
*
*********************************************************************
* FileName: ENC28J60.h
* Description: Include file for ENC28J60 control registers
* Company: Microchip Technology, Inc.
*
* Software License Agreement
*
* This software is owned by Microchip Technology Inc. ("Microchip")
* and is supplied to you for use exclusively as described in the
* associated software agreement. This software is protected by
* software and other intellectual property laws. Any use in
* violation of the software license may subject the user to criminal
* sanctions as well as civil liability. Copyright 2006 Microchip
* Technology Inc. All rights reserved.
*
* This software is provided "AS IS." MICROCHIP DISCLAIMS ALL
* WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED
* TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
* INFRINGEMENT. Microchip shall in no event be liable for special,
* incidental, or consequential damages.
*
*
* Author Date Comment
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Howard Schlunder 06/01/04 Original
* Howard Schlunder 06/29/04 Fixed byte boundary problems on a
* couple of PHY register structs.
* Howard Schlunder 09/29/04 Matched with data sheet
* Howard Schlunder 01/04/06 Matched with new data sheet
* Howard Schlunder 06/29/06 Changed MACON3.PHDRLEN to PHDREN
* Howard Schlunder 07/21/06 Several bits removed to match now
* reserved bits in rev. B data sheet
* (DS39662B)
********************************************************************/
#ifndef ENC28J60_H
#define ENC28J60_H
typedef union {
BYTE v[7];
struct {
WORD ByteCount;
unsigned CollisionCount:4;
unsigned CRCError:1;
unsigned LengthCheckError:1;
unsigned LengthOutOfRange:1;
unsigned Done:1;
unsigned Multicast:1;
unsigned Broadcast:1;
unsigned PacketDefer:1;
unsigned ExcessiveDefer:1;
unsigned MaximumCollisions:1;
unsigned LateCollision:1;
unsigned Giant:1;
unsigned Underrun:1;
WORD BytesTransmittedOnWire;
unsigned ControlFrame:1;
unsigned PAUSEControlFrame:1;
unsigned BackpressureApplied:1;
unsigned VLANTaggedFrame:1;
unsigned Zeros:4;
} bits;
} TXSTATUS;
typedef union {
BYTE v[4];
struct {
WORD ByteCount;
unsigned PreviouslyIgnored:1;
unsigned RXDCPreviouslySeen:1;
unsigned CarrierPreviouslySeen:1;
unsigned CodeViolation:1;
unsigned CRCError:1;
unsigned LengthCheckError:1;
unsigned LengthOutOfRange:1;
unsigned ReceiveOk:1;
unsigned Multicast:1;
unsigned Broadcast:1;
unsigned DribbleNibble:1;
unsigned ControlFrame:1;
unsigned PauseControlFrame:1;
unsigned UnsupportedOpcode:1;
unsigned VLANType:1;
unsigned Zero:1;
} bits;
} RXSTATUS;
/******************************************************************************
* Register locations
******************************************************************************/
// Bank 0 registers --------
#define ERDPTL 0x00
#define ERDPTH 0x01
#define EWRPTL 0x02
#define EWRPTH 0x03
#define ETXSTL 0x04
#define ETXSTH 0x05
#define ETXNDL 0x06
#define ETXNDH 0x07
#define ERXSTL 0x08
#define ERXSTH 0x09
#define ERXNDL 0x0A
#define ERXNDH 0x0B
#define ERXRDPTL 0x0C
#define ERXRDPTH 0x0D
#define ERXWRPTL 0x0E
#define ERXWRPTH 0x0F
#define EDMASTL 0x10
#define EDMASTH 0x11
#define EDMANDL 0x12
#define EDMANDH 0x13
#define EDMADSTL 0x14
#define EDMADSTH 0x15
#define EDMACSL 0x16
#define EDMACSH 0x17
//#define 0x18
//#define 0x19
//#define r 0x1A
#define EIE 0x1B
#define EIR 0x1C
#define ESTAT 0x1D
#define ECON2 0x1E
#define ECON1 0x1F
// Bank 1 registers -----
#define EHT0 0x100
#define EHT1 0x101
#define EHT2 0x102
#define EHT3 0x103
#define EHT4 0x104
#define EHT5 0x105
#define EHT6 0x106
#define EHT7 0x107
#define EPMM0 0x108
#define EPMM1 0x109
#define EPMM2 0x10A
#define EPMM3 0x10B
#define EPMM4 0x10C
#define EPMM5 0x10D
#define EPMM6 0x10E
#define EPMM7 0x10F
#define EPMCSL 0x110
#define EPMCSH 0x111
//#define 0x112
//#define 0x113
#define EPMOL 0x114
#define EPMOH 0x115
//#define r 0x116
//#define r 0x117
#define ERXFCON 0x118
#define EPKTCNT 0x119
//#define r 0x11A
//#define EIE 0x11B
//#define EIR 0x11C
//#define ESTAT 0x11D
//#define ECON2 0x11E
//#define ECON1 0x11F
// Bank 2 registers -----
#define MACON1 0x200
//#define r 0x201
#define MACON3 0x202
#define MACON4 0x203
#define MABBIPG 0x204
//#define 0x205
#define MAIPGL 0x206
#define MAIPGH 0x207
#define MACLCON1 0x208
#define MACLCON2 0x209
#define MAMXFLL 0x20A
#define MAMXFLH 0x20B
//#define r 0x20C
//#define r 0x20D
//#define r 0x20E
//#define 0x20F
//#define r 0x210
//#define r 0x211
#define MICMD 0x212
//#define r 0x213
#define MIREGADR 0x214
//#define r 0x215
#define MIWRL 0x216
#define MIWRH 0x217
#define MIRDL 0x218
#define MIRDH 0x219
//#define r 0x21A
//#define EIE 0x21B
//#define EIR 0x21C
//#define ESTAT 0x21D
//#define ECON2 0x21E
//#define ECON1 0x21F
// Bank 3 registers -----
#define MAADR5 0x300
#define MAADR6 0x301
#define MAADR3 0x302
#define MAADR4 0x303
#define MAADR1 0x304
#define MAADR2 0x305
#define EBSTSD 0x306
#define EBSTCON 0x307
#define EBSTCSL 0x308
#define EBSTCSH 0x309
#define MISTAT 0x30A
//#define 0x30B
//#define 0x30C
//#define 0x30D
//#define 0x30E
//#define 0x30F
//#define 0x310
//#define 0x311
#define EREVID 0x312
//#define 0x313
//#define 0x314
#define ECOCON 0x315
//#define 0x316
#define EFLOCON 0x317
#define EPAUSL 0x318
#define EPAUSH 0x319
//#define r 0x31A
//#define EIE 0x31B
//#define EIR 0x31C
//#define ESTAT 0x31D
//#define ECON2 0x31E
//#define ECON1 0x31F
// Structures
typedef union _REG
{
BYTE Val;
// EIE bits ----------
struct {
unsigned char RXERIE:1;
unsigned char TXERIE:1;
unsigned char :1;
unsigned char TXIE:1;
unsigned char LINKIE:1;
unsigned char DMAIE:1;
unsigned char PKTIE:1;
unsigned char INTIE:1;
} EIEbits;
// EIR bits ----------
struct {
unsigned char RXERIF:1;
unsigned char TXERIF:1;
unsigned char :1;
unsigned char TXIF:1;
unsigned char LINKIF:1;
unsigned char DMAIF:1;
unsigned char PKTIF:1;
unsigned char :1;
} EIRbits;
// ESTAT bits ---------
struct {
unsigned char CLKRDY:1;
unsigned char TXABRT:1;
unsigned char RXBUSY:1;
unsigned char :1;
unsigned char LATECOL:1;
unsigned char :1;
unsigned char BUFER:1;
unsigned char INT:1;
} ESTATbits;
// ECON2 bits --------
struct {
unsigned char :3;
unsigned char VRPS:1;
unsigned char :1;
unsigned char PWRSV:1;
unsigned char PKTDEC:1;
unsigned char AUTOINC:1;
} ECON2bits;
// ECON1 bits --------
struct {
unsigned char BSEL0:1;
unsigned char BSEL1:1;
unsigned char RXEN:1;
unsigned char TXRTS:1;
unsigned char CSUMEN:1;
unsigned char DMAST:1;
unsigned char RXRST:1;
unsigned char TXRST:1;
} ECON1bits;
// ERXFCON bits ------
struct {
unsigned char BCEN:1;
unsigned char MCEN:1;
unsigned char HTEN:1;
unsigned char MPEN:1;
unsigned char PMEN:1;
unsigned char CRCEN:1;
unsigned char ANDOR:1;
unsigned char UCEN:1;
} ERXFCONbits;
// MACON1 bits --------
struct {
unsigned char MARXEN:1;
unsigned char PASSALL:1;
unsigned char RXPAUS:1;
unsigned char TXPAUS:1;
unsigned char :4;
} MACON1bits;
// MACON3 bits --------
struct {
unsigned char FULDPX:1;
unsigned char FRMLNEN:1;
unsigned char HFRMEN:1;
unsigned char PHDREN:1;
unsigned char TXCRCEN:1;
unsigned char PADCFG0:1;
unsigned char PADCFG1:1;
unsigned char PADCFG2:1;
} MACON3bits;
struct {
unsigned char FULDPX:1;
unsigned char FRMLNEN:1;
unsigned char HFRMEN:1;
unsigned char PHDREN:1;
unsigned char TXCRCEN:1;
unsigned char PADCFG:3;
} MACON3bits2;
// MACON4 bits --------
struct {
unsigned char :4;
unsigned char NOBKOFF:1;
unsigned char BPEN:1;
unsigned char DEFER:1;
unsigned char :1;
} MACON4bits;
// MICMD bits ---------
struct {
unsigned char MIIRD:1;
unsigned char MIISCAN:1;
unsigned char :6;
} MICMDbits;
// EBSTCON bits -----
struct {
unsigned char BISTST:1;
unsigned char TME:1;
unsigned char TMSEL0:1;
unsigned char TMSEL1:1;
unsigned char PSEL:1;
unsigned char PSV0:1;
unsigned char PSV1:1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -