enc28j60_driver.h File Reference

ENC28J60 Ethernet controller. More...

#include "core/nic.h"

Go to the source code of this file.

Data Structures

struct  Enc28j60Context
 ENC28J60 driver context. More...
 

Macros

#define ENC28J60_FULL_DUPLEX_SUPPORT   ENABLED
 
#define ENC28J60_ETH_RX_BUFFER_SIZE   1536
 
#define ENC28J60_RX_BUFFER_START   0x0000
 
#define ENC28J60_RX_BUFFER_STOP   0x17FF
 
#define ENC28J60_TX_BUFFER_START   0x1800
 
#define ENC28J60_TX_BUFFER_STOP   0x1FFF
 
#define ENC28J60_CMD_RCR   0x00
 
#define ENC28J60_CMD_RBM   0x3A
 
#define ENC28J60_CMD_WCR   0x40
 
#define ENC28J60_CMD_WBM   0x7A
 
#define ENC28J60_CMD_BFS   0x80
 
#define ENC28J60_CMD_BFC   0xA0
 
#define ENC28J60_CMD_SRC   0xFF
 
#define ETH_REG_TYPE   0x0000
 
#define MAC_REG_TYPE   0x1000
 
#define MII_REG_TYPE   0x2000
 
#define PHY_REG_TYPE   0x3000
 
#define BANK_0   0x0000
 
#define BANK_1   0x0100
 
#define BANK_2   0x0200
 
#define BANK_3   0x0300
 
#define REG_TYPE_MASK   0xF000
 
#define REG_BANK_MASK   0x0F00
 
#define REG_ADDR_MASK   0x001F
 
#define ENC28J60_ERDPTL   (ETH_REG_TYPE | BANK_0 | 0x00)
 
#define ENC28J60_ERDPTH   (ETH_REG_TYPE | BANK_0 | 0x01)
 
#define ENC28J60_EWRPTL   (ETH_REG_TYPE | BANK_0 | 0x02)
 
#define ENC28J60_EWRPTH   (ETH_REG_TYPE | BANK_0 | 0x03)
 
#define ENC28J60_ETXSTL   (ETH_REG_TYPE | BANK_0 | 0x04)
 
#define ENC28J60_ETXSTH   (ETH_REG_TYPE | BANK_0 | 0x05)
 
#define ENC28J60_ETXNDL   (ETH_REG_TYPE | BANK_0 | 0x06)
 
#define ENC28J60_ETXNDH   (ETH_REG_TYPE | BANK_0 | 0x07)
 
#define ENC28J60_ERXSTL   (ETH_REG_TYPE | BANK_0 | 0x08)
 
#define ENC28J60_ERXSTH   (ETH_REG_TYPE | BANK_0 | 0x09)
 
#define ENC28J60_ERXNDL   (ETH_REG_TYPE | BANK_0 | 0x0A)
 
#define ENC28J60_ERXNDH   (ETH_REG_TYPE | BANK_0 | 0x0B)
 
#define ENC28J60_ERXRDPTL   (ETH_REG_TYPE | BANK_0 | 0x0C)
 
#define ENC28J60_ERXRDPTH   (ETH_REG_TYPE | BANK_0 | 0x0D)
 
#define ENC28J60_ERXWRPTL   (ETH_REG_TYPE | BANK_0 | 0x0E)
 
#define ENC28J60_ERXWRPTH   (ETH_REG_TYPE | BANK_0 | 0x0F)
 
#define ENC28J60_EDMASTL   (ETH_REG_TYPE | BANK_0 | 0x10)
 
#define ENC28J60_EDMASTH   (ETH_REG_TYPE | BANK_0 | 0x11)
 
#define ENC28J60_EDMANDL   (ETH_REG_TYPE | BANK_0 | 0x12)
 
#define ENC28J60_EDMANDH   (ETH_REG_TYPE | BANK_0 | 0x13)
 
#define ENC28J60_EDMADSTL   (ETH_REG_TYPE | BANK_0 | 0x14)
 
#define ENC28J60_EDMADSTH   (ETH_REG_TYPE | BANK_0 | 0x15)
 
#define ENC28J60_EDMACSL   (ETH_REG_TYPE | BANK_0 | 0x16)
 
#define ENC28J60_EDMACSH   (ETH_REG_TYPE | BANK_0 | 0x17)
 
#define ENC28J60_EIE   (ETH_REG_TYPE | BANK_0 | 0x1B)
 
#define ENC28J60_EIR   (ETH_REG_TYPE | BANK_0 | 0x1C)
 
#define ENC28J60_ESTAT   (ETH_REG_TYPE | BANK_0 | 0x1D)
 
#define ENC28J60_ECON2   (ETH_REG_TYPE | BANK_0 | 0x1E)
 
#define ENC28J60_ECON1   (ETH_REG_TYPE | BANK_0 | 0x1F)
 
#define ENC28J60_EHT0   (ETH_REG_TYPE | BANK_1 | 0x00)
 
#define ENC28J60_EHT1   (ETH_REG_TYPE | BANK_1 | 0x01)
 
#define ENC28J60_EHT2   (ETH_REG_TYPE | BANK_1 | 0x02)
 
#define ENC28J60_EHT3   (ETH_REG_TYPE | BANK_1 | 0x03)
 
#define ENC28J60_EHT4   (ETH_REG_TYPE | BANK_1 | 0x04)
 
#define ENC28J60_EHT5   (ETH_REG_TYPE | BANK_1 | 0x05)
 
#define ENC28J60_EHT6   (ETH_REG_TYPE | BANK_1 | 0x06)
 
#define ENC28J60_EHT7   (ETH_REG_TYPE | BANK_1 | 0x07)
 
#define ENC28J60_EPMM0   (ETH_REG_TYPE | BANK_1 | 0x08)
 
#define ENC28J60_EPMM1   (ETH_REG_TYPE | BANK_1 | 0x09)
 
#define ENC28J60_EPMM2   (ETH_REG_TYPE | BANK_1 | 0x0A)
 
#define ENC28J60_EPMM3   (ETH_REG_TYPE | BANK_1 | 0x0B)
 
#define ENC28J60_EPMM4   (ETH_REG_TYPE | BANK_1 | 0x0C)
 
#define ENC28J60_EPMM5   (ETH_REG_TYPE | BANK_1 | 0x0D)
 
#define ENC28J60_EPMM6   (ETH_REG_TYPE | BANK_1 | 0x0E)
 
#define ENC28J60_EPMM7   (ETH_REG_TYPE | BANK_1 | 0x0F)
 
#define ENC28J60_EPMCSL   (ETH_REG_TYPE | BANK_1 | 0x10)
 
#define ENC28J60_EPMCSH   (ETH_REG_TYPE | BANK_1 | 0x11)
 
#define ENC28J60_EPMOL   (ETH_REG_TYPE | BANK_1 | 0x14)
 
#define ENC28J60_EPMOH   (ETH_REG_TYPE | BANK_1 | 0x15)
 
#define ENC28J60_EWOLIE   (ETH_REG_TYPE | BANK_1 | 0x16)
 
#define ENC28J60_EWOLIR   (ETH_REG_TYPE | BANK_1 | 0x17)
 
#define ENC28J60_ERXFCON   (ETH_REG_TYPE | BANK_1 | 0x18)
 
#define ENC28J60_EPKTCNT   (ETH_REG_TYPE | BANK_1 | 0x19)
 
#define ENC28J60_MACON1   (MAC_REG_TYPE | BANK_2 | 0x00)
 
#define ENC28J60_MACON2   (MAC_REG_TYPE | BANK_2 | 0x01)
 
#define ENC28J60_MACON3   (MAC_REG_TYPE | BANK_2 | 0x02)
 
#define ENC28J60_MACON4   (MAC_REG_TYPE | BANK_2 | 0x03)
 
#define ENC28J60_MABBIPG   (MAC_REG_TYPE | BANK_2 | 0x04)
 
#define ENC28J60_MAIPGL   (MAC_REG_TYPE | BANK_2 | 0x06)
 
#define ENC28J60_MAIPGH   (MAC_REG_TYPE | BANK_2 | 0x07)
 
#define ENC28J60_MACLCON1   (MAC_REG_TYPE | BANK_2 | 0x08)
 
#define ENC28J60_MACLCON2   (MAC_REG_TYPE | BANK_2 | 0x09)
 
#define ENC28J60_MAMXFLL   (MAC_REG_TYPE | BANK_2 | 0x0A)
 
#define ENC28J60_MAMXFLH   (MAC_REG_TYPE | BANK_2 | 0x0B)
 
#define ENC28J60_MAPHSUP   (MAC_REG_TYPE | BANK_2 | 0x0D)
 
#define ENC28J60_MICON   (MII_REG_TYPE | BANK_2 | 0x11)
 
#define ENC28J60_MICMD   (MII_REG_TYPE | BANK_2 | 0x12)
 
#define ENC28J60_MIREGADR   (MII_REG_TYPE | BANK_2 | 0x14)
 
#define ENC28J60_MIWRL   (MII_REG_TYPE | BANK_2 | 0x16)
 
#define ENC28J60_MIWRH   (MII_REG_TYPE | BANK_2 | 0x17)
 
#define ENC28J60_MIRDL   (MII_REG_TYPE | BANK_2 | 0x18)
 
#define ENC28J60_MIRDH   (MII_REG_TYPE | BANK_2 | 0x19)
 
#define ENC28J60_MAADR1   (MAC_REG_TYPE | BANK_3 | 0x00)
 
#define ENC28J60_MAADR0   (MAC_REG_TYPE | BANK_3 | 0x01)
 
#define ENC28J60_MAADR3   (MAC_REG_TYPE | BANK_3 | 0x02)
 
#define ENC28J60_MAADR2   (MAC_REG_TYPE | BANK_3 | 0x03)
 
#define ENC28J60_MAADR5   (MAC_REG_TYPE | BANK_3 | 0x04)
 
#define ENC28J60_MAADR4   (MAC_REG_TYPE | BANK_3 | 0x05)
 
#define ENC28J60_EBSTSD   (ETH_REG_TYPE | BANK_3 | 0x06)
 
#define ENC28J60_EBSTCON   (ETH_REG_TYPE | BANK_3 | 0x07)
 
#define ENC28J60_EBSTCSL   (ETH_REG_TYPE | BANK_3 | 0x08)
 
#define ENC28J60_EBSTCSH   (ETH_REG_TYPE | BANK_3 | 0x09)
 
#define ENC28J60_MISTAT   (MII_REG_TYPE | BANK_3 | 0x0A)
 
#define ENC28J60_EREVID   (ETH_REG_TYPE | BANK_3 | 0x12)
 
#define ENC28J60_ECOCON   (ETH_REG_TYPE | BANK_3 | 0x15)
 
#define ENC28J60_EFLOCON   (ETH_REG_TYPE | BANK_3 | 0x17)
 
#define ENC28J60_EPAUSL   (ETH_REG_TYPE | BANK_3 | 0x18)
 
#define ENC28J60_EPAUSH   (ETH_REG_TYPE | BANK_3 | 0x19)
 
#define ENC28J60_PHCON1   (PHY_REG_TYPE | 0x00)
 
#define ENC28J60_PHSTAT1   (PHY_REG_TYPE | 0x01)
 
#define ENC28J60_PHID1   (PHY_REG_TYPE | 0x02)
 
#define ENC28J60_PHID2   (PHY_REG_TYPE | 0x03)
 
#define ENC28J60_PHCON2   (PHY_REG_TYPE | 0x10)
 
#define ENC28J60_PHSTAT2   (PHY_REG_TYPE | 0x11)
 
#define ENC28J60_PHIE   (PHY_REG_TYPE | 0x12)
 
#define ENC28J60_PHIR   (PHY_REG_TYPE | 0x13)
 
#define ENC28J60_PHLCON   (PHY_REG_TYPE | 0x14)
 
#define ENC28J60_EIE_INTIE   0x80
 
#define ENC28J60_EIE_PKTIE   0x40
 
#define ENC28J60_EIE_DMAIE   0x20
 
#define ENC28J60_EIE_LINKIE   0x10
 
#define ENC28J60_EIE_TXIE   0x08
 
#define ENC28J60_EIE_WOLIE   0x04
 
#define ENC28J60_EIE_TXERIE   0x02
 
#define ENC28J60_EIE_RXERIE   0x01
 
#define ENC28J60_EIR_PKTIF   0x40
 
#define ENC28J60_EIR_DMAIF   0x20
 
#define ENC28J60_EIR_LINKIF   0x10
 
#define ENC28J60_EIR_TXIF   0x08
 
#define ENC28J60_EIR_WOLIF   0x04
 
#define ENC28J60_EIR_TXERIF   0x02
 
#define ENC28J60_EIR_RXERIF   0x01
 
#define ENC28J60_ESTAT_INT   0x80
 
#define ENC28J60_ESTAT_R6   0x40
 
#define ENC28J60_ESTAT_R5   0x20
 
#define ENC28J60_ESTAT_LATECOL   0x10
 
#define ENC28J60_ESTAT_RXBUSY   0x04
 
#define ENC28J60_ESTAT_TXABRT   0x02
 
#define ENC28J60_ESTAT_CLKRDY   0x01
 
#define ENC28J60_ECON2_AUTOINC   0x80
 
#define ENC28J60_ECON2_PKTDEC   0x40
 
#define ENC28J60_ECON2_PWRSV   0x20
 
#define ENC28J60_ECON2_VRPS   0x08
 
#define ENC28J60_ECON1_TXRST   0x80
 
#define ENC28J60_ECON1_RXRST   0x40
 
#define ENC28J60_ECON1_DMAST   0x20
 
#define ENC28J60_ECON1_CSUMEN   0x10
 
#define ENC28J60_ECON1_TXRTS   0x08
 
#define ENC28J60_ECON1_RXEN   0x04
 
#define ENC28J60_ECON1_BSEL1   0x02
 
#define ENC28J60_ECON1_BSEL0   0x01
 
#define ENC28J60_EWOLIE_UCWOLIE   0x80
 
#define ENC28J60_EWOLIE_AWOLIE   0x40
 
#define ENC28J60_EWOLIE_PMWOLIE   0x10
 
#define ENC28J60_EWOLIE_MPWOLIE   0x08
 
#define ENC28J60_EWOLIE_HTWOLIE   0x04
 
#define ENC28J60_EWOLIE_MCWOLIE   0x02
 
#define ENC28J60_EWOLIE_BCWOLIE   0x01
 
#define ENC28J60_EWOLIR_UCWOLIF   0x80
 
#define ENC28J60_EWOLIR_AWOLIF   0x40
 
#define ENC28J60_EWOLIR_PMWOLIF   0x10
 
#define ENC28J60_EWOLIR_MPWOLIF   0x08
 
#define ENC28J60_EWOLIR_HTWOLIF   0x04
 
#define ENC28J60_EWOLIR_MCWOLIF   0x02
 
#define ENC28J60_EWOLIR_BCWOLIF   0x01
 
#define ENC28J60_ERXFCON_UCEN   0x80
 
#define ENC28J60_ERXFCON_ANDOR   0x40
 
#define ENC28J60_ERXFCON_CRCEN   0x20
 
#define ENC28J60_ERXFCON_PMEN   0x10
 
#define ENC28J60_ERXFCON_MPEN   0x08
 
#define ENC28J60_ERXFCON_HTEN   0x04
 
#define ENC28J60_ERXFCON_MCEN   0x02
 
#define ENC28J60_ERXFCON_BCEN   0x01
 
#define ENC28J60_MACON1_LOOPBK   0x10
 
#define ENC28J60_MACON1_TXPAUS   0x08
 
#define ENC28J60_MACON1_RXPAUS   0x04
 
#define ENC28J60_MACON1_PASSALL   0x02
 
#define ENC28J60_MACON1_MARXEN   0x01
 
#define ENC28J60_MACON2_MARST   0x80
 
#define ENC28J60_MACON2_RNDRST   0x40
 
#define ENC28J60_MACON2_MARXRST   0x08
 
#define ENC28J60_MACON2_RFUNRST   0x04
 
#define ENC28J60_MACON2_MATXRST   0x02
 
#define ENC28J60_MACON2_TFUNRST   0x01
 
#define ENC28J60_MACON3_PADCFG   0xE0
 
#define ENC28J60_MACON3_PADCFG_NO   0x00
 
#define ENC28J60_MACON3_PADCFG_60_BYTES   0x20
 
#define ENC28J60_MACON3_PADCFG_64_BYTES   0x60
 
#define ENC28J60_MACON3_PADCFG_AUTO   0xA0
 
#define ENC28J60_MACON3_TXCRCEN   0x10
 
#define ENC28J60_MACON3_PHDRLEN   0x08
 
#define ENC28J60_MACON3_HFRMEN   0x04
 
#define ENC28J60_MACON3_FRMLNEN   0x02
 
#define ENC28J60_MACON3_FULDPX   0x01
 
#define ENC28J60_MACON4_DEFER   0x40
 
#define ENC28J60_MACON4_BPEN   0x20
 
#define ENC28J60_MACON4_NOBKOFF   0x10
 
#define ENC28J60_MACON4_LONGPRE   0x02
 
#define ENC28J60_MACON4_PUREPRE   0x01
 
#define ENC28J60_MABBIPG_DEFAULT_HD   0x12
 
#define ENC28J60_MABBIPG_DEFAULT_FD   0x15
 
#define ENC28J60_MAIPGL_DEFAULT   0x12
 
#define ENC28J60_MAIPGH_DEFAULT   0x0C
 
#define ENC28J60_MACLCON1_RETMAX   0x0F
 
#define ENC28J60_MACLCON2_COLWIN   0x3F
 
#define ENC28J60_MACLCON2_COLWIN_DEFAULT   0x37
 
#define ENC28J60_MAPHSUP_RSTINTFC   0x80
 
#define ENC28J60_MAPHSUP_R4   0x10
 
#define ENC28J60_MAPHSUP_RSTRMII   0x08
 
#define ENC28J60_MAPHSUP_R0   0x01
 
#define ENC28J60_MICON_RSTMII   0x80
 
#define ENC28J60_MICMD_MIISCAN   0x02
 
#define ENC28J60_MICMD_MIIRD   0x01
 
#define ENC28J60_MIREGADR_VAL   0x1F
 
#define ENC28J60_EBSTCON_PSV   0xE0
 
#define ENC28J60_EBSTCON_PSEL   0x10
 
#define ENC28J60_EBSTCON_TMSEL   0x0C
 
#define ENC28J60_EBSTCON_TMSEL_RANDOM   0x00
 
#define ENC28J60_EBSTCON_TMSEL_ADDR   0x04
 
#define ENC28J60_EBSTCON_TMSEL_PATTERN_SHIFT   0x08
 
#define ENC28J60_EBSTCON_TMSEL_RACE_MODE   0x0C
 
#define ENC28J60_EBSTCON_TME   0x02
 
#define ENC28J60_EBSTCON_BISTST   0x01
 
#define ENC28J60_MISTAT_R3   0x08
 
#define ENC28J60_MISTAT_NVALID   0x04
 
#define ENC28J60_MISTAT_SCAN   0x02
 
#define ENC28J60_MISTAT_BUSY   0x01
 
#define ENC28J60_EREVID_REV   0x1F
 
#define ENC28J60_EREVID_REV_B1   0x02
 
#define ENC28J60_EREVID_REV_B4   0x04
 
#define ENC28J60_EREVID_REV_B5   0x05
 
#define ENC28J60_EREVID_REV_B7   0x06
 
#define ENC28J60_ECOCON_COCON   0x07
 
#define ENC28J60_ECOCON_COCON_DISABLED   0x00
 
#define ENC28J60_ECOCON_COCON_DIV1   0x01
 
#define ENC28J60_ECOCON_COCON_DIV2   0x02
 
#define ENC28J60_ECOCON_COCON_DIV3   0x03
 
#define ENC28J60_ECOCON_COCON_DIV4   0x04
 
#define ENC28J60_ECOCON_COCON_DIV8   0x05
 
#define ENC28J60_EFLOCON_FULDPXS   0x04
 
#define ENC28J60_EFLOCON_FCEN   0x03
 
#define ENC28J60_EFLOCON_FCEN_OFF   0x00
 
#define ENC28J60_EFLOCON_FCEN_ON_HD   0x01
 
#define ENC28J60_EFLOCON_FCEN_ON_FD   0x02
 
#define ENC28J60_EFLOCON_FCEN_SEND_PAUSE   0x03
 
#define ENC28J60_PHCON1_PRST   0x8000
 
#define ENC28J60_PHCON1_PLOOPBK   0x4000
 
#define ENC28J60_PHCON1_PPWRSV   0x0800
 
#define ENC28J60_PHCON1_PDPXMD   0x0100
 
#define ENC28J60_PHSTAT1_PFDPX   0x1000
 
#define ENC28J60_PHSTAT1_PHDPX   0x0800
 
#define ENC28J60_PHSTAT1_LLSTAT   0x0004
 
#define ENC28J60_PHSTAT1_JBRSTAT   0x0002
 
#define ENC28J60_PHID1_PIDH   0xFFFF
 
#define ENC28J60_PHID1_PIDH_DEFAULT   0x0083
 
#define ENC28J60_PHID2_PIDL   0xFC00
 
#define ENC28J60_PHID2_PIDL_DEFAULT   0x1400
 
#define ENC28J60_PHID2_PPN   0x03F0
 
#define ENC28J60_PHID2_PPN_DEFAULT   0x0000
 
#define ENC28J60_PHID2_PREV   0x000F
 
#define ENC28J60_PHCON2_FRCLNK   0x4000
 
#define ENC28J60_PHCON2_TXDIS   0x2000
 
#define ENC28J60_PHCON2_JABBER   0x0400
 
#define ENC28J60_PHCON2_HDLDIS   0x0100
 
#define ENC28J60_PHSTAT2_TXSTAT   0x2000
 
#define ENC28J60_PHSTAT2_RXSTAT   0x1000
 
#define ENC28J60_PHSTAT2_COLSTAT   0x0800
 
#define ENC28J60_PHSTAT2_LSTAT   0x0400
 
#define ENC28J60_PHSTAT2_DPXSTAT   0x0200
 
#define ENC28J60_PHSTAT2_PLRITY   0x0010
 
#define ENC28J60_PHIE_PLNKIE   0x0010
 
#define ENC28J60_PHIE_PGEIE   0x0002
 
#define ENC28J60_PHIR_PLNKIF   0x0010
 
#define ENC28J60_PHIR_PGIF   0x0004
 
#define ENC28J60_PHLCON_LACFG   0x0F00
 
#define ENC28J60_PHLCON_LACFG_TX   0x0100
 
#define ENC28J60_PHLCON_LACFG_RX   0x0200
 
#define ENC28J60_PHLCON_LACFG_COL   0x0300
 
#define ENC28J60_PHLCON_LACFG_LINK   0x0400
 
#define ENC28J60_PHLCON_LACFG_DUPLEX   0x0500
 
#define ENC28J60_PHLCON_LACFG_TX_RX   0x0700
 
#define ENC28J60_PHLCON_LACFG_ON   0x0800
 
#define ENC28J60_PHLCON_LACFG_OFF   0x0900
 
#define ENC28J60_PHLCON_LACFG_BLINK_FAST   0x0A00
 
#define ENC28J60_PHLCON_LACFG_BLINK_SLOW   0x0B00
 
#define ENC28J60_PHLCON_LACFG_LINK_RX   0x0C00
 
#define ENC28J60_PHLCON_LACFG_LINK_TX_RX   0x0D00
 
#define ENC28J60_PHLCON_LACFG_DUPLEX_COL   0x0E00
 
#define ENC28J60_PHLCON_LBCFG   0x00F0
 
#define ENC28J60_PHLCON_LBCFG_TX   0x0010
 
#define ENC28J60_PHLCON_LBCFG_RX   0x0020
 
#define ENC28J60_PHLCON_LBCFG_COL   0x0030
 
#define ENC28J60_PHLCON_LBCFG_LINK   0x0040
 
#define ENC28J60_PHLCON_LBCFG_DUPLEX   0x0050
 
#define ENC28J60_PHLCON_LBCFG_TX_RX   0x0070
 
#define ENC28J60_PHLCON_LBCFG_ON   0x0080
 
#define ENC28J60_PHLCON_LBCFG_OFF   0x0090
 
#define ENC28J60_PHLCON_LBCFG_BLINK_FAST   0x00A0
 
#define ENC28J60_PHLCON_LBCFG_BLINK_SLOW   0x00B0
 
#define ENC28J60_PHLCON_LBCFG_LINK_RX   0x00C0
 
#define ENC28J60_PHLCON_LBCFG_LINK_TX_RX   0x00D0
 
#define ENC28J60_PHLCON_LBCFG_DUPLEX_COL   0x00E0
 
#define ENC28J60_PHLCON_LFRQ   0x000C
 
#define ENC28J60_PHLCON_LFRQ_40_MS   0x0000
 
#define ENC28J60_PHLCON_LFRQ_73_MS   0x0004
 
#define ENC28J60_PHLCON_LFRQ_139_MS   0x0008
 
#define ENC28J60_PHLCON_STRCH   0x0002
 
#define ENC28J60_TX_CTRL_PHUGEEN   0x08
 
#define ENC28J60_TX_CTRL_PPADEN   0x04
 
#define ENC28J60_TX_CTRL_PCRCEN   0x02
 
#define ENC28J60_TX_CTRL_POVERRIDE   0x01
 
#define ENC28J60_RSV_VLAN_TYPE   0x4000
 
#define ENC28J60_RSV_UNKNOWN_OPCODE   0x2000
 
#define ENC28J60_RSV_PAUSE_CONTROL_FRAME   0x1000
 
#define ENC28J60_RSV_CONTROL_FRAME   0x0800
 
#define ENC28J60_RSV_DRIBBLE_NIBBLE   0x0400
 
#define ENC28J60_RSV_BROADCAST_PACKET   0x0200
 
#define ENC28J60_RSV_MULTICAST_PACKET   0x0100
 
#define ENC28J60_RSV_RECEIVED_OK   0x0080
 
#define ENC28J60_RSV_LENGTH_OUT_OF_RANGE   0x0040
 
#define ENC28J60_RSV_LENGTH_CHECK_ERROR   0x0020
 
#define ENC28J60_RSV_CRC_ERROR   0x0010
 
#define ENC28J60_RSV_CARRIER_EVENT   0x0004
 
#define ENC28J60_RSV_DROP_EVENT   0x0001
 

Functions

error_t enc28j60Init (NetInterface *interface)
 ENC28J60 controller initialization. More...
 
void enc28j60InitHook (NetInterface *interface)
 ENC28J60 custom configuration. More...
 
void enc28j60Tick (NetInterface *interface)
 ENC28J60 timer handler. More...
 
void enc28j60EnableIrq (NetInterface *interface)
 Enable interrupts. More...
 
void enc28j60DisableIrq (NetInterface *interface)
 Disable interrupts. More...
 
bool_t enc28j60IrqHandler (NetInterface *interface)
 ENC28J60 interrupt service routine. More...
 
void enc28j60EventHandler (NetInterface *interface)
 ENC28J60 event handler. More...
 
error_t enc28j60SendPacket (NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
 Send a packet. More...
 
error_t enc28j60ReceivePacket (NetInterface *interface)
 Receive a packet. More...
 
error_t enc28j60UpdateMacAddrFilter (NetInterface *interface)
 Configure MAC address filtering. More...
 
void enc28j60SoftReset (NetInterface *interface)
 ENC28J60 controller reset. More...
 
void enc28j60SelectBank (NetInterface *interface, uint16_t address)
 Bank selection. More...
 
void enc28j60WriteReg (NetInterface *interface, uint16_t address, uint8_t data)
 Write ENC28J60 register. More...
 
uint8_t enc28j60ReadReg (NetInterface *interface, uint16_t address)
 Read ENC28J60 register. More...
 
void enc28j60WritePhyReg (NetInterface *interface, uint16_t address, uint16_t data)
 Write PHY register. More...
 
uint16_t enc28j60ReadPhyReg (NetInterface *interface, uint16_t address)
 Read PHY register. More...
 
void enc28j60WriteBuffer (NetInterface *interface, const NetBuffer *buffer, size_t offset)
 Write SRAM buffer. More...
 
void enc28j60ReadBuffer (NetInterface *interface, uint8_t *data, size_t length)
 Read SRAM buffer. More...
 
void enc28j60SetBit (NetInterface *interface, uint16_t address, uint16_t mask)
 Set bit field. More...
 
void enc28j60ClearBit (NetInterface *interface, uint16_t address, uint16_t mask)
 Clear bit field. More...
 
uint32_t enc28j60CalcCrc (const void *data, size_t length)
 CRC calculation using the polynomial 0x4C11DB7. More...
 
void enc28j60DumpReg (NetInterface *interface)
 Dump registers for debugging purpose. More...
 
void enc28j60DumpPhyReg (NetInterface *interface)
 Dump PHY registers for debugging purpose. More...
 

Variables

const NicDriver enc28j60Driver
 ENC28J60 driver. More...
 

Detailed Description

ENC28J60 Ethernet controller.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file enc28j60_driver.h.

Macro Definition Documentation

◆ BANK_0

#define BANK_0   0x0000

Definition at line 73 of file enc28j60_driver.h.

◆ BANK_1

#define BANK_1   0x0100

Definition at line 74 of file enc28j60_driver.h.

◆ BANK_2

#define BANK_2   0x0200

Definition at line 75 of file enc28j60_driver.h.

◆ BANK_3

#define BANK_3   0x0300

Definition at line 76 of file enc28j60_driver.h.

◆ ENC28J60_CMD_BFC

#define ENC28J60_CMD_BFC   0xA0

Definition at line 63 of file enc28j60_driver.h.

◆ ENC28J60_CMD_BFS

#define ENC28J60_CMD_BFS   0x80

Definition at line 62 of file enc28j60_driver.h.

◆ ENC28J60_CMD_RBM

#define ENC28J60_CMD_RBM   0x3A

Definition at line 59 of file enc28j60_driver.h.

◆ ENC28J60_CMD_RCR

#define ENC28J60_CMD_RCR   0x00

Definition at line 58 of file enc28j60_driver.h.

◆ ENC28J60_CMD_SRC

#define ENC28J60_CMD_SRC   0xFF

Definition at line 64 of file enc28j60_driver.h.

◆ ENC28J60_CMD_WBM

#define ENC28J60_CMD_WBM   0x7A

Definition at line 61 of file enc28j60_driver.h.

◆ ENC28J60_CMD_WCR

#define ENC28J60_CMD_WCR   0x40

Definition at line 60 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON

#define ENC28J60_EBSTCON   (ETH_REG_TYPE | BANK_3 | 0x07)

Definition at line 163 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_BISTST

#define ENC28J60_EBSTCON_BISTST   0x01

Definition at line 332 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_PSEL

#define ENC28J60_EBSTCON_PSEL   0x10

Definition at line 325 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_PSV

#define ENC28J60_EBSTCON_PSV   0xE0

Definition at line 324 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TME

#define ENC28J60_EBSTCON_TME   0x02

Definition at line 331 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TMSEL

#define ENC28J60_EBSTCON_TMSEL   0x0C

Definition at line 326 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TMSEL_ADDR

#define ENC28J60_EBSTCON_TMSEL_ADDR   0x04

Definition at line 328 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TMSEL_PATTERN_SHIFT

#define ENC28J60_EBSTCON_TMSEL_PATTERN_SHIFT   0x08

Definition at line 329 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TMSEL_RACE_MODE

#define ENC28J60_EBSTCON_TMSEL_RACE_MODE   0x0C

Definition at line 330 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCON_TMSEL_RANDOM

#define ENC28J60_EBSTCON_TMSEL_RANDOM   0x00

Definition at line 327 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCSH

#define ENC28J60_EBSTCSH   (ETH_REG_TYPE | BANK_3 | 0x09)

Definition at line 165 of file enc28j60_driver.h.

◆ ENC28J60_EBSTCSL

#define ENC28J60_EBSTCSL   (ETH_REG_TYPE | BANK_3 | 0x08)

Definition at line 164 of file enc28j60_driver.h.

◆ ENC28J60_EBSTSD

#define ENC28J60_EBSTSD   (ETH_REG_TYPE | BANK_3 | 0x06)

Definition at line 162 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON

#define ENC28J60_ECOCON   (ETH_REG_TYPE | BANK_3 | 0x15)

Definition at line 168 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON

#define ENC28J60_ECOCON_COCON   0x07

Definition at line 348 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DISABLED

#define ENC28J60_ECOCON_COCON_DISABLED   0x00

Definition at line 349 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DIV1

#define ENC28J60_ECOCON_COCON_DIV1   0x01

Definition at line 350 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DIV2

#define ENC28J60_ECOCON_COCON_DIV2   0x02

Definition at line 351 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DIV3

#define ENC28J60_ECOCON_COCON_DIV3   0x03

Definition at line 352 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DIV4

#define ENC28J60_ECOCON_COCON_DIV4   0x04

Definition at line 353 of file enc28j60_driver.h.

◆ ENC28J60_ECOCON_COCON_DIV8

#define ENC28J60_ECOCON_COCON_DIV8   0x05

Definition at line 354 of file enc28j60_driver.h.

◆ ENC28J60_ECON1

#define ENC28J60_ECON1   (ETH_REG_TYPE | BANK_0 | 0x1F)

Definition at line 112 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_BSEL0

#define ENC28J60_ECON1_BSEL0   0x01

Definition at line 226 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_BSEL1

#define ENC28J60_ECON1_BSEL1   0x02

Definition at line 225 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_CSUMEN

#define ENC28J60_ECON1_CSUMEN   0x10

Definition at line 222 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_DMAST

#define ENC28J60_ECON1_DMAST   0x20

Definition at line 221 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_RXEN

#define ENC28J60_ECON1_RXEN   0x04

Definition at line 224 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_RXRST

#define ENC28J60_ECON1_RXRST   0x40

Definition at line 220 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_TXRST

#define ENC28J60_ECON1_TXRST   0x80

Definition at line 219 of file enc28j60_driver.h.

◆ ENC28J60_ECON1_TXRTS

#define ENC28J60_ECON1_TXRTS   0x08

Definition at line 223 of file enc28j60_driver.h.

◆ ENC28J60_ECON2

#define ENC28J60_ECON2   (ETH_REG_TYPE | BANK_0 | 0x1E)

Definition at line 111 of file enc28j60_driver.h.

◆ ENC28J60_ECON2_AUTOINC

#define ENC28J60_ECON2_AUTOINC   0x80

Definition at line 213 of file enc28j60_driver.h.

◆ ENC28J60_ECON2_PKTDEC

#define ENC28J60_ECON2_PKTDEC   0x40

Definition at line 214 of file enc28j60_driver.h.

◆ ENC28J60_ECON2_PWRSV

#define ENC28J60_ECON2_PWRSV   0x20

Definition at line 215 of file enc28j60_driver.h.

◆ ENC28J60_ECON2_VRPS

#define ENC28J60_ECON2_VRPS   0x08

Definition at line 216 of file enc28j60_driver.h.

◆ ENC28J60_EDMACSH

#define ENC28J60_EDMACSH   (ETH_REG_TYPE | BANK_0 | 0x17)

Definition at line 107 of file enc28j60_driver.h.

◆ ENC28J60_EDMACSL

#define ENC28J60_EDMACSL   (ETH_REG_TYPE | BANK_0 | 0x16)

Definition at line 106 of file enc28j60_driver.h.

◆ ENC28J60_EDMADSTH

#define ENC28J60_EDMADSTH   (ETH_REG_TYPE | BANK_0 | 0x15)

Definition at line 105 of file enc28j60_driver.h.

◆ ENC28J60_EDMADSTL

#define ENC28J60_EDMADSTL   (ETH_REG_TYPE | BANK_0 | 0x14)

Definition at line 104 of file enc28j60_driver.h.

◆ ENC28J60_EDMANDH

#define ENC28J60_EDMANDH   (ETH_REG_TYPE | BANK_0 | 0x13)

Definition at line 103 of file enc28j60_driver.h.

◆ ENC28J60_EDMANDL

#define ENC28J60_EDMANDL   (ETH_REG_TYPE | BANK_0 | 0x12)

Definition at line 102 of file enc28j60_driver.h.

◆ ENC28J60_EDMASTH

#define ENC28J60_EDMASTH   (ETH_REG_TYPE | BANK_0 | 0x11)

Definition at line 101 of file enc28j60_driver.h.

◆ ENC28J60_EDMASTL

#define ENC28J60_EDMASTL   (ETH_REG_TYPE | BANK_0 | 0x10)

Definition at line 100 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON

#define ENC28J60_EFLOCON   (ETH_REG_TYPE | BANK_3 | 0x17)

Definition at line 169 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FCEN

#define ENC28J60_EFLOCON_FCEN   0x03

Definition at line 358 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FCEN_OFF

#define ENC28J60_EFLOCON_FCEN_OFF   0x00

Definition at line 359 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FCEN_ON_FD

#define ENC28J60_EFLOCON_FCEN_ON_FD   0x02

Definition at line 361 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FCEN_ON_HD

#define ENC28J60_EFLOCON_FCEN_ON_HD   0x01

Definition at line 360 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FCEN_SEND_PAUSE

#define ENC28J60_EFLOCON_FCEN_SEND_PAUSE   0x03

Definition at line 362 of file enc28j60_driver.h.

◆ ENC28J60_EFLOCON_FULDPXS

#define ENC28J60_EFLOCON_FULDPXS   0x04

Definition at line 357 of file enc28j60_driver.h.

◆ ENC28J60_EHT0

#define ENC28J60_EHT0   (ETH_REG_TYPE | BANK_1 | 0x00)

Definition at line 113 of file enc28j60_driver.h.

◆ ENC28J60_EHT1

#define ENC28J60_EHT1   (ETH_REG_TYPE | BANK_1 | 0x01)

Definition at line 114 of file enc28j60_driver.h.

◆ ENC28J60_EHT2

#define ENC28J60_EHT2   (ETH_REG_TYPE | BANK_1 | 0x02)

Definition at line 115 of file enc28j60_driver.h.

◆ ENC28J60_EHT3

#define ENC28J60_EHT3   (ETH_REG_TYPE | BANK_1 | 0x03)

Definition at line 116 of file enc28j60_driver.h.

◆ ENC28J60_EHT4

#define ENC28J60_EHT4   (ETH_REG_TYPE | BANK_1 | 0x04)

Definition at line 117 of file enc28j60_driver.h.

◆ ENC28J60_EHT5

#define ENC28J60_EHT5   (ETH_REG_TYPE | BANK_1 | 0x05)

Definition at line 118 of file enc28j60_driver.h.

◆ ENC28J60_EHT6

#define ENC28J60_EHT6   (ETH_REG_TYPE | BANK_1 | 0x06)

Definition at line 119 of file enc28j60_driver.h.

◆ ENC28J60_EHT7

#define ENC28J60_EHT7   (ETH_REG_TYPE | BANK_1 | 0x07)

Definition at line 120 of file enc28j60_driver.h.

◆ ENC28J60_EIE

#define ENC28J60_EIE   (ETH_REG_TYPE | BANK_0 | 0x1B)

Definition at line 108 of file enc28j60_driver.h.

◆ ENC28J60_EIE_DMAIE

#define ENC28J60_EIE_DMAIE   0x20

Definition at line 187 of file enc28j60_driver.h.

◆ ENC28J60_EIE_INTIE

#define ENC28J60_EIE_INTIE   0x80

Definition at line 185 of file enc28j60_driver.h.

◆ ENC28J60_EIE_LINKIE

#define ENC28J60_EIE_LINKIE   0x10

Definition at line 188 of file enc28j60_driver.h.

◆ ENC28J60_EIE_PKTIE

#define ENC28J60_EIE_PKTIE   0x40

Definition at line 186 of file enc28j60_driver.h.

◆ ENC28J60_EIE_RXERIE

#define ENC28J60_EIE_RXERIE   0x01

Definition at line 192 of file enc28j60_driver.h.

◆ ENC28J60_EIE_TXERIE

#define ENC28J60_EIE_TXERIE   0x02

Definition at line 191 of file enc28j60_driver.h.

◆ ENC28J60_EIE_TXIE

#define ENC28J60_EIE_TXIE   0x08

Definition at line 189 of file enc28j60_driver.h.

◆ ENC28J60_EIE_WOLIE

#define ENC28J60_EIE_WOLIE   0x04

Definition at line 190 of file enc28j60_driver.h.

◆ ENC28J60_EIR

#define ENC28J60_EIR   (ETH_REG_TYPE | BANK_0 | 0x1C)

Definition at line 109 of file enc28j60_driver.h.

◆ ENC28J60_EIR_DMAIF

#define ENC28J60_EIR_DMAIF   0x20

Definition at line 196 of file enc28j60_driver.h.

◆ ENC28J60_EIR_LINKIF

#define ENC28J60_EIR_LINKIF   0x10

Definition at line 197 of file enc28j60_driver.h.

◆ ENC28J60_EIR_PKTIF

#define ENC28J60_EIR_PKTIF   0x40

Definition at line 195 of file enc28j60_driver.h.

◆ ENC28J60_EIR_RXERIF

#define ENC28J60_EIR_RXERIF   0x01

Definition at line 201 of file enc28j60_driver.h.

◆ ENC28J60_EIR_TXERIF

#define ENC28J60_EIR_TXERIF   0x02

Definition at line 200 of file enc28j60_driver.h.

◆ ENC28J60_EIR_TXIF

#define ENC28J60_EIR_TXIF   0x08

Definition at line 198 of file enc28j60_driver.h.

◆ ENC28J60_EIR_WOLIF

#define ENC28J60_EIR_WOLIF   0x04

Definition at line 199 of file enc28j60_driver.h.

◆ ENC28J60_EPAUSH

#define ENC28J60_EPAUSH   (ETH_REG_TYPE | BANK_3 | 0x19)

Definition at line 171 of file enc28j60_driver.h.

◆ ENC28J60_EPAUSL

#define ENC28J60_EPAUSL   (ETH_REG_TYPE | BANK_3 | 0x18)

Definition at line 170 of file enc28j60_driver.h.

◆ ENC28J60_EPKTCNT

#define ENC28J60_EPKTCNT   (ETH_REG_TYPE | BANK_1 | 0x19)

Definition at line 136 of file enc28j60_driver.h.

◆ ENC28J60_EPMCSH

#define ENC28J60_EPMCSH   (ETH_REG_TYPE | BANK_1 | 0x11)

Definition at line 130 of file enc28j60_driver.h.

◆ ENC28J60_EPMCSL

#define ENC28J60_EPMCSL   (ETH_REG_TYPE | BANK_1 | 0x10)

Definition at line 129 of file enc28j60_driver.h.

◆ ENC28J60_EPMM0

#define ENC28J60_EPMM0   (ETH_REG_TYPE | BANK_1 | 0x08)

Definition at line 121 of file enc28j60_driver.h.

◆ ENC28J60_EPMM1

#define ENC28J60_EPMM1   (ETH_REG_TYPE | BANK_1 | 0x09)

Definition at line 122 of file enc28j60_driver.h.

◆ ENC28J60_EPMM2

#define ENC28J60_EPMM2   (ETH_REG_TYPE | BANK_1 | 0x0A)

Definition at line 123 of file enc28j60_driver.h.

◆ ENC28J60_EPMM3

#define ENC28J60_EPMM3   (ETH_REG_TYPE | BANK_1 | 0x0B)

Definition at line 124 of file enc28j60_driver.h.

◆ ENC28J60_EPMM4

#define ENC28J60_EPMM4   (ETH_REG_TYPE | BANK_1 | 0x0C)

Definition at line 125 of file enc28j60_driver.h.

◆ ENC28J60_EPMM5

#define ENC28J60_EPMM5   (ETH_REG_TYPE | BANK_1 | 0x0D)

Definition at line 126 of file enc28j60_driver.h.

◆ ENC28J60_EPMM6

#define ENC28J60_EPMM6   (ETH_REG_TYPE | BANK_1 | 0x0E)

Definition at line 127 of file enc28j60_driver.h.

◆ ENC28J60_EPMM7

#define ENC28J60_EPMM7   (ETH_REG_TYPE | BANK_1 | 0x0F)

Definition at line 128 of file enc28j60_driver.h.

◆ ENC28J60_EPMOH

#define ENC28J60_EPMOH   (ETH_REG_TYPE | BANK_1 | 0x15)

Definition at line 132 of file enc28j60_driver.h.

◆ ENC28J60_EPMOL

#define ENC28J60_EPMOL   (ETH_REG_TYPE | BANK_1 | 0x14)

Definition at line 131 of file enc28j60_driver.h.

◆ ENC28J60_ERDPTH

#define ENC28J60_ERDPTH   (ETH_REG_TYPE | BANK_0 | 0x01)

Definition at line 85 of file enc28j60_driver.h.

◆ ENC28J60_ERDPTL

#define ENC28J60_ERDPTL   (ETH_REG_TYPE | BANK_0 | 0x00)

Definition at line 84 of file enc28j60_driver.h.

◆ ENC28J60_EREVID

#define ENC28J60_EREVID   (ETH_REG_TYPE | BANK_3 | 0x12)

Definition at line 167 of file enc28j60_driver.h.

◆ ENC28J60_EREVID_REV

#define ENC28J60_EREVID_REV   0x1F

Definition at line 341 of file enc28j60_driver.h.

◆ ENC28J60_EREVID_REV_B1

#define ENC28J60_EREVID_REV_B1   0x02

Definition at line 342 of file enc28j60_driver.h.

◆ ENC28J60_EREVID_REV_B4

#define ENC28J60_EREVID_REV_B4   0x04

Definition at line 343 of file enc28j60_driver.h.

◆ ENC28J60_EREVID_REV_B5

#define ENC28J60_EREVID_REV_B5   0x05

Definition at line 344 of file enc28j60_driver.h.

◆ ENC28J60_EREVID_REV_B7

#define ENC28J60_EREVID_REV_B7   0x06

Definition at line 345 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON

#define ENC28J60_ERXFCON   (ETH_REG_TYPE | BANK_1 | 0x18)

Definition at line 135 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_ANDOR

#define ENC28J60_ERXFCON_ANDOR   0x40

Definition at line 248 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_BCEN

#define ENC28J60_ERXFCON_BCEN   0x01

Definition at line 254 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_CRCEN

#define ENC28J60_ERXFCON_CRCEN   0x20

Definition at line 249 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_HTEN

#define ENC28J60_ERXFCON_HTEN   0x04

Definition at line 252 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_MCEN

#define ENC28J60_ERXFCON_MCEN   0x02

Definition at line 253 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_MPEN

#define ENC28J60_ERXFCON_MPEN   0x08

Definition at line 251 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_PMEN

#define ENC28J60_ERXFCON_PMEN   0x10

Definition at line 250 of file enc28j60_driver.h.

◆ ENC28J60_ERXFCON_UCEN

#define ENC28J60_ERXFCON_UCEN   0x80

Definition at line 247 of file enc28j60_driver.h.

◆ ENC28J60_ERXNDH

#define ENC28J60_ERXNDH   (ETH_REG_TYPE | BANK_0 | 0x0B)

Definition at line 95 of file enc28j60_driver.h.

◆ ENC28J60_ERXNDL

#define ENC28J60_ERXNDL   (ETH_REG_TYPE | BANK_0 | 0x0A)

Definition at line 94 of file enc28j60_driver.h.

◆ ENC28J60_ERXRDPTH

#define ENC28J60_ERXRDPTH   (ETH_REG_TYPE | BANK_0 | 0x0D)

Definition at line 97 of file enc28j60_driver.h.

◆ ENC28J60_ERXRDPTL

#define ENC28J60_ERXRDPTL   (ETH_REG_TYPE | BANK_0 | 0x0C)

Definition at line 96 of file enc28j60_driver.h.

◆ ENC28J60_ERXSTH

#define ENC28J60_ERXSTH   (ETH_REG_TYPE | BANK_0 | 0x09)

Definition at line 93 of file enc28j60_driver.h.

◆ ENC28J60_ERXSTL

#define ENC28J60_ERXSTL   (ETH_REG_TYPE | BANK_0 | 0x08)

Definition at line 92 of file enc28j60_driver.h.

◆ ENC28J60_ERXWRPTH

#define ENC28J60_ERXWRPTH   (ETH_REG_TYPE | BANK_0 | 0x0F)

Definition at line 99 of file enc28j60_driver.h.

◆ ENC28J60_ERXWRPTL

#define ENC28J60_ERXWRPTL   (ETH_REG_TYPE | BANK_0 | 0x0E)

Definition at line 98 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT

#define ENC28J60_ESTAT   (ETH_REG_TYPE | BANK_0 | 0x1D)

Definition at line 110 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_CLKRDY

#define ENC28J60_ESTAT_CLKRDY   0x01

Definition at line 210 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_INT

#define ENC28J60_ESTAT_INT   0x80

Definition at line 204 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_LATECOL

#define ENC28J60_ESTAT_LATECOL   0x10

Definition at line 207 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_R5

#define ENC28J60_ESTAT_R5   0x20

Definition at line 206 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_R6

#define ENC28J60_ESTAT_R6   0x40

Definition at line 205 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_RXBUSY

#define ENC28J60_ESTAT_RXBUSY   0x04

Definition at line 208 of file enc28j60_driver.h.

◆ ENC28J60_ESTAT_TXABRT

#define ENC28J60_ESTAT_TXABRT   0x02

Definition at line 209 of file enc28j60_driver.h.

◆ ENC28J60_ETH_RX_BUFFER_SIZE

#define ENC28J60_ETH_RX_BUFFER_SIZE   1536

Definition at line 46 of file enc28j60_driver.h.

◆ ENC28J60_ETXNDH

#define ENC28J60_ETXNDH   (ETH_REG_TYPE | BANK_0 | 0x07)

Definition at line 91 of file enc28j60_driver.h.

◆ ENC28J60_ETXNDL

#define ENC28J60_ETXNDL   (ETH_REG_TYPE | BANK_0 | 0x06)

Definition at line 90 of file enc28j60_driver.h.

◆ ENC28J60_ETXSTH

#define ENC28J60_ETXSTH   (ETH_REG_TYPE | BANK_0 | 0x05)

Definition at line 89 of file enc28j60_driver.h.

◆ ENC28J60_ETXSTL

#define ENC28J60_ETXSTL   (ETH_REG_TYPE | BANK_0 | 0x04)

Definition at line 88 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE

#define ENC28J60_EWOLIE   (ETH_REG_TYPE | BANK_1 | 0x16)

Definition at line 133 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_AWOLIE

#define ENC28J60_EWOLIE_AWOLIE   0x40

Definition at line 230 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_BCWOLIE

#define ENC28J60_EWOLIE_BCWOLIE   0x01

Definition at line 235 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_HTWOLIE

#define ENC28J60_EWOLIE_HTWOLIE   0x04

Definition at line 233 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_MCWOLIE

#define ENC28J60_EWOLIE_MCWOLIE   0x02

Definition at line 234 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_MPWOLIE

#define ENC28J60_EWOLIE_MPWOLIE   0x08

Definition at line 232 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_PMWOLIE

#define ENC28J60_EWOLIE_PMWOLIE   0x10

Definition at line 231 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIE_UCWOLIE

#define ENC28J60_EWOLIE_UCWOLIE   0x80

Definition at line 229 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR

#define ENC28J60_EWOLIR   (ETH_REG_TYPE | BANK_1 | 0x17)

Definition at line 134 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_AWOLIF

#define ENC28J60_EWOLIR_AWOLIF   0x40

Definition at line 239 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_BCWOLIF

#define ENC28J60_EWOLIR_BCWOLIF   0x01

Definition at line 244 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_HTWOLIF

#define ENC28J60_EWOLIR_HTWOLIF   0x04

Definition at line 242 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_MCWOLIF

#define ENC28J60_EWOLIR_MCWOLIF   0x02

Definition at line 243 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_MPWOLIF

#define ENC28J60_EWOLIR_MPWOLIF   0x08

Definition at line 241 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_PMWOLIF

#define ENC28J60_EWOLIR_PMWOLIF   0x10

Definition at line 240 of file enc28j60_driver.h.

◆ ENC28J60_EWOLIR_UCWOLIF

#define ENC28J60_EWOLIR_UCWOLIF   0x80

Definition at line 238 of file enc28j60_driver.h.

◆ ENC28J60_EWRPTH

#define ENC28J60_EWRPTH   (ETH_REG_TYPE | BANK_0 | 0x03)

Definition at line 87 of file enc28j60_driver.h.

◆ ENC28J60_EWRPTL

#define ENC28J60_EWRPTL   (ETH_REG_TYPE | BANK_0 | 0x02)

Definition at line 86 of file enc28j60_driver.h.

◆ ENC28J60_FULL_DUPLEX_SUPPORT

#define ENC28J60_FULL_DUPLEX_SUPPORT   ENABLED

Definition at line 39 of file enc28j60_driver.h.

◆ ENC28J60_MAADR0

#define ENC28J60_MAADR0   (MAC_REG_TYPE | BANK_3 | 0x01)

Definition at line 157 of file enc28j60_driver.h.

◆ ENC28J60_MAADR1

#define ENC28J60_MAADR1   (MAC_REG_TYPE | BANK_3 | 0x00)

Definition at line 156 of file enc28j60_driver.h.

◆ ENC28J60_MAADR2

#define ENC28J60_MAADR2   (MAC_REG_TYPE | BANK_3 | 0x03)

Definition at line 159 of file enc28j60_driver.h.

◆ ENC28J60_MAADR3

#define ENC28J60_MAADR3   (MAC_REG_TYPE | BANK_3 | 0x02)

Definition at line 158 of file enc28j60_driver.h.

◆ ENC28J60_MAADR4

#define ENC28J60_MAADR4   (MAC_REG_TYPE | BANK_3 | 0x05)

Definition at line 161 of file enc28j60_driver.h.

◆ ENC28J60_MAADR5

#define ENC28J60_MAADR5   (MAC_REG_TYPE | BANK_3 | 0x04)

Definition at line 160 of file enc28j60_driver.h.

◆ ENC28J60_MABBIPG

#define ENC28J60_MABBIPG   (MAC_REG_TYPE | BANK_2 | 0x04)

Definition at line 141 of file enc28j60_driver.h.

◆ ENC28J60_MABBIPG_DEFAULT_FD

#define ENC28J60_MABBIPG_DEFAULT_FD   0x15

Definition at line 292 of file enc28j60_driver.h.

◆ ENC28J60_MABBIPG_DEFAULT_HD

#define ENC28J60_MABBIPG_DEFAULT_HD   0x12

Definition at line 291 of file enc28j60_driver.h.

◆ ENC28J60_MACLCON1

#define ENC28J60_MACLCON1   (MAC_REG_TYPE | BANK_2 | 0x08)

Definition at line 144 of file enc28j60_driver.h.

◆ ENC28J60_MACLCON1_RETMAX

#define ENC28J60_MACLCON1_RETMAX   0x0F

Definition at line 301 of file enc28j60_driver.h.

◆ ENC28J60_MACLCON2

#define ENC28J60_MACLCON2   (MAC_REG_TYPE | BANK_2 | 0x09)

Definition at line 145 of file enc28j60_driver.h.

◆ ENC28J60_MACLCON2_COLWIN

#define ENC28J60_MACLCON2_COLWIN   0x3F

Definition at line 304 of file enc28j60_driver.h.

◆ ENC28J60_MACLCON2_COLWIN_DEFAULT

#define ENC28J60_MACLCON2_COLWIN_DEFAULT   0x37

Definition at line 305 of file enc28j60_driver.h.

◆ ENC28J60_MACON1

#define ENC28J60_MACON1   (MAC_REG_TYPE | BANK_2 | 0x00)

Definition at line 137 of file enc28j60_driver.h.

◆ ENC28J60_MACON1_LOOPBK

#define ENC28J60_MACON1_LOOPBK   0x10

Definition at line 257 of file enc28j60_driver.h.

◆ ENC28J60_MACON1_MARXEN

#define ENC28J60_MACON1_MARXEN   0x01

Definition at line 261 of file enc28j60_driver.h.

◆ ENC28J60_MACON1_PASSALL

#define ENC28J60_MACON1_PASSALL   0x02

Definition at line 260 of file enc28j60_driver.h.

◆ ENC28J60_MACON1_RXPAUS

#define ENC28J60_MACON1_RXPAUS   0x04

Definition at line 259 of file enc28j60_driver.h.

◆ ENC28J60_MACON1_TXPAUS

#define ENC28J60_MACON1_TXPAUS   0x08

Definition at line 258 of file enc28j60_driver.h.

◆ ENC28J60_MACON2

#define ENC28J60_MACON2   (MAC_REG_TYPE | BANK_2 | 0x01)

Definition at line 138 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_MARST

#define ENC28J60_MACON2_MARST   0x80

Definition at line 264 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_MARXRST

#define ENC28J60_MACON2_MARXRST   0x08

Definition at line 266 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_MATXRST

#define ENC28J60_MACON2_MATXRST   0x02

Definition at line 268 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_RFUNRST

#define ENC28J60_MACON2_RFUNRST   0x04

Definition at line 267 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_RNDRST

#define ENC28J60_MACON2_RNDRST   0x40

Definition at line 265 of file enc28j60_driver.h.

◆ ENC28J60_MACON2_TFUNRST

#define ENC28J60_MACON2_TFUNRST   0x01

Definition at line 269 of file enc28j60_driver.h.

◆ ENC28J60_MACON3

#define ENC28J60_MACON3   (MAC_REG_TYPE | BANK_2 | 0x02)

Definition at line 139 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_FRMLNEN

#define ENC28J60_MACON3_FRMLNEN   0x02

Definition at line 280 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_FULDPX

#define ENC28J60_MACON3_FULDPX   0x01

Definition at line 281 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_HFRMEN

#define ENC28J60_MACON3_HFRMEN   0x04

Definition at line 279 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PADCFG

#define ENC28J60_MACON3_PADCFG   0xE0

Definition at line 272 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PADCFG_60_BYTES

#define ENC28J60_MACON3_PADCFG_60_BYTES   0x20

Definition at line 274 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PADCFG_64_BYTES

#define ENC28J60_MACON3_PADCFG_64_BYTES   0x60

Definition at line 275 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PADCFG_AUTO

#define ENC28J60_MACON3_PADCFG_AUTO   0xA0

Definition at line 276 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PADCFG_NO

#define ENC28J60_MACON3_PADCFG_NO   0x00

Definition at line 273 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_PHDRLEN

#define ENC28J60_MACON3_PHDRLEN   0x08

Definition at line 278 of file enc28j60_driver.h.

◆ ENC28J60_MACON3_TXCRCEN

#define ENC28J60_MACON3_TXCRCEN   0x10

Definition at line 277 of file enc28j60_driver.h.

◆ ENC28J60_MACON4

#define ENC28J60_MACON4   (MAC_REG_TYPE | BANK_2 | 0x03)

Definition at line 140 of file enc28j60_driver.h.

◆ ENC28J60_MACON4_BPEN

#define ENC28J60_MACON4_BPEN   0x20

Definition at line 285 of file enc28j60_driver.h.

◆ ENC28J60_MACON4_DEFER

#define ENC28J60_MACON4_DEFER   0x40

Definition at line 284 of file enc28j60_driver.h.

◆ ENC28J60_MACON4_LONGPRE

#define ENC28J60_MACON4_LONGPRE   0x02

Definition at line 287 of file enc28j60_driver.h.

◆ ENC28J60_MACON4_NOBKOFF

#define ENC28J60_MACON4_NOBKOFF   0x10

Definition at line 286 of file enc28j60_driver.h.

◆ ENC28J60_MACON4_PUREPRE

#define ENC28J60_MACON4_PUREPRE   0x01

Definition at line 288 of file enc28j60_driver.h.

◆ ENC28J60_MAIPGH

#define ENC28J60_MAIPGH   (MAC_REG_TYPE | BANK_2 | 0x07)

Definition at line 143 of file enc28j60_driver.h.

◆ ENC28J60_MAIPGH_DEFAULT

#define ENC28J60_MAIPGH_DEFAULT   0x0C

Definition at line 298 of file enc28j60_driver.h.

◆ ENC28J60_MAIPGL

#define ENC28J60_MAIPGL   (MAC_REG_TYPE | BANK_2 | 0x06)

Definition at line 142 of file enc28j60_driver.h.

◆ ENC28J60_MAIPGL_DEFAULT

#define ENC28J60_MAIPGL_DEFAULT   0x12

Definition at line 295 of file enc28j60_driver.h.

◆ ENC28J60_MAMXFLH

#define ENC28J60_MAMXFLH   (MAC_REG_TYPE | BANK_2 | 0x0B)

Definition at line 147 of file enc28j60_driver.h.

◆ ENC28J60_MAMXFLL

#define ENC28J60_MAMXFLL   (MAC_REG_TYPE | BANK_2 | 0x0A)

Definition at line 146 of file enc28j60_driver.h.

◆ ENC28J60_MAPHSUP

#define ENC28J60_MAPHSUP   (MAC_REG_TYPE | BANK_2 | 0x0D)

Definition at line 148 of file enc28j60_driver.h.

◆ ENC28J60_MAPHSUP_R0

#define ENC28J60_MAPHSUP_R0   0x01

Definition at line 311 of file enc28j60_driver.h.

◆ ENC28J60_MAPHSUP_R4

#define ENC28J60_MAPHSUP_R4   0x10

Definition at line 309 of file enc28j60_driver.h.

◆ ENC28J60_MAPHSUP_RSTINTFC

#define ENC28J60_MAPHSUP_RSTINTFC   0x80

Definition at line 308 of file enc28j60_driver.h.

◆ ENC28J60_MAPHSUP_RSTRMII

#define ENC28J60_MAPHSUP_RSTRMII   0x08

Definition at line 310 of file enc28j60_driver.h.

◆ ENC28J60_MICMD

#define ENC28J60_MICMD   (MII_REG_TYPE | BANK_2 | 0x12)

Definition at line 150 of file enc28j60_driver.h.

◆ ENC28J60_MICMD_MIIRD

#define ENC28J60_MICMD_MIIRD   0x01

Definition at line 318 of file enc28j60_driver.h.

◆ ENC28J60_MICMD_MIISCAN

#define ENC28J60_MICMD_MIISCAN   0x02

Definition at line 317 of file enc28j60_driver.h.

◆ ENC28J60_MICON

#define ENC28J60_MICON   (MII_REG_TYPE | BANK_2 | 0x11)

Definition at line 149 of file enc28j60_driver.h.

◆ ENC28J60_MICON_RSTMII

#define ENC28J60_MICON_RSTMII   0x80

Definition at line 314 of file enc28j60_driver.h.

◆ ENC28J60_MIRDH

#define ENC28J60_MIRDH   (MII_REG_TYPE | BANK_2 | 0x19)

Definition at line 155 of file enc28j60_driver.h.

◆ ENC28J60_MIRDL

#define ENC28J60_MIRDL   (MII_REG_TYPE | BANK_2 | 0x18)

Definition at line 154 of file enc28j60_driver.h.

◆ ENC28J60_MIREGADR

#define ENC28J60_MIREGADR   (MII_REG_TYPE | BANK_2 | 0x14)

Definition at line 151 of file enc28j60_driver.h.

◆ ENC28J60_MIREGADR_VAL

#define ENC28J60_MIREGADR_VAL   0x1F

Definition at line 321 of file enc28j60_driver.h.

◆ ENC28J60_MISTAT

#define ENC28J60_MISTAT   (MII_REG_TYPE | BANK_3 | 0x0A)

Definition at line 166 of file enc28j60_driver.h.

◆ ENC28J60_MISTAT_BUSY

#define ENC28J60_MISTAT_BUSY   0x01

Definition at line 338 of file enc28j60_driver.h.

◆ ENC28J60_MISTAT_NVALID

#define ENC28J60_MISTAT_NVALID   0x04

Definition at line 336 of file enc28j60_driver.h.

◆ ENC28J60_MISTAT_R3

#define ENC28J60_MISTAT_R3   0x08

Definition at line 335 of file enc28j60_driver.h.

◆ ENC28J60_MISTAT_SCAN

#define ENC28J60_MISTAT_SCAN   0x02

Definition at line 337 of file enc28j60_driver.h.

◆ ENC28J60_MIWRH

#define ENC28J60_MIWRH   (MII_REG_TYPE | BANK_2 | 0x17)

Definition at line 153 of file enc28j60_driver.h.

◆ ENC28J60_MIWRL

#define ENC28J60_MIWRL   (MII_REG_TYPE | BANK_2 | 0x16)

Definition at line 152 of file enc28j60_driver.h.

◆ ENC28J60_PHCON1

#define ENC28J60_PHCON1   (PHY_REG_TYPE | 0x00)

Definition at line 174 of file enc28j60_driver.h.

◆ ENC28J60_PHCON1_PDPXMD

#define ENC28J60_PHCON1_PDPXMD   0x0100

Definition at line 368 of file enc28j60_driver.h.

◆ ENC28J60_PHCON1_PLOOPBK

#define ENC28J60_PHCON1_PLOOPBK   0x4000

Definition at line 366 of file enc28j60_driver.h.

◆ ENC28J60_PHCON1_PPWRSV

#define ENC28J60_PHCON1_PPWRSV   0x0800

Definition at line 367 of file enc28j60_driver.h.

◆ ENC28J60_PHCON1_PRST

#define ENC28J60_PHCON1_PRST   0x8000

Definition at line 365 of file enc28j60_driver.h.

◆ ENC28J60_PHCON2

#define ENC28J60_PHCON2   (PHY_REG_TYPE | 0x10)

Definition at line 178 of file enc28j60_driver.h.

◆ ENC28J60_PHCON2_FRCLNK

#define ENC28J60_PHCON2_FRCLNK   0x4000

Definition at line 388 of file enc28j60_driver.h.

◆ ENC28J60_PHCON2_HDLDIS

#define ENC28J60_PHCON2_HDLDIS   0x0100

Definition at line 391 of file enc28j60_driver.h.

◆ ENC28J60_PHCON2_JABBER

#define ENC28J60_PHCON2_JABBER   0x0400

Definition at line 390 of file enc28j60_driver.h.

◆ ENC28J60_PHCON2_TXDIS

#define ENC28J60_PHCON2_TXDIS   0x2000

Definition at line 389 of file enc28j60_driver.h.

◆ ENC28J60_PHID1

#define ENC28J60_PHID1   (PHY_REG_TYPE | 0x02)

Definition at line 176 of file enc28j60_driver.h.

◆ ENC28J60_PHID1_PIDH

#define ENC28J60_PHID1_PIDH   0xFFFF

Definition at line 377 of file enc28j60_driver.h.

◆ ENC28J60_PHID1_PIDH_DEFAULT

#define ENC28J60_PHID1_PIDH_DEFAULT   0x0083

Definition at line 378 of file enc28j60_driver.h.

◆ ENC28J60_PHID2

#define ENC28J60_PHID2   (PHY_REG_TYPE | 0x03)

Definition at line 177 of file enc28j60_driver.h.

◆ ENC28J60_PHID2_PIDL

#define ENC28J60_PHID2_PIDL   0xFC00

Definition at line 381 of file enc28j60_driver.h.

◆ ENC28J60_PHID2_PIDL_DEFAULT

#define ENC28J60_PHID2_PIDL_DEFAULT   0x1400

Definition at line 382 of file enc28j60_driver.h.

◆ ENC28J60_PHID2_PPN

#define ENC28J60_PHID2_PPN   0x03F0

Definition at line 383 of file enc28j60_driver.h.

◆ ENC28J60_PHID2_PPN_DEFAULT

#define ENC28J60_PHID2_PPN_DEFAULT   0x0000

Definition at line 384 of file enc28j60_driver.h.

◆ ENC28J60_PHID2_PREV

#define ENC28J60_PHID2_PREV   0x000F

Definition at line 385 of file enc28j60_driver.h.

◆ ENC28J60_PHIE

#define ENC28J60_PHIE   (PHY_REG_TYPE | 0x12)

Definition at line 180 of file enc28j60_driver.h.

◆ ENC28J60_PHIE_PGEIE

#define ENC28J60_PHIE_PGEIE   0x0002

Definition at line 403 of file enc28j60_driver.h.

◆ ENC28J60_PHIE_PLNKIE

#define ENC28J60_PHIE_PLNKIE   0x0010

Definition at line 402 of file enc28j60_driver.h.

◆ ENC28J60_PHIR

#define ENC28J60_PHIR   (PHY_REG_TYPE | 0x13)

Definition at line 181 of file enc28j60_driver.h.

◆ ENC28J60_PHIR_PGIF

#define ENC28J60_PHIR_PGIF   0x0004

Definition at line 407 of file enc28j60_driver.h.

◆ ENC28J60_PHIR_PLNKIF

#define ENC28J60_PHIR_PLNKIF   0x0010

Definition at line 406 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON

#define ENC28J60_PHLCON   (PHY_REG_TYPE | 0x14)

Definition at line 182 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG

#define ENC28J60_PHLCON_LACFG   0x0F00

Definition at line 410 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_BLINK_FAST

#define ENC28J60_PHLCON_LACFG_BLINK_FAST   0x0A00

Definition at line 419 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_BLINK_SLOW

#define ENC28J60_PHLCON_LACFG_BLINK_SLOW   0x0B00

Definition at line 420 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_COL

#define ENC28J60_PHLCON_LACFG_COL   0x0300

Definition at line 413 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_DUPLEX

#define ENC28J60_PHLCON_LACFG_DUPLEX   0x0500

Definition at line 415 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_DUPLEX_COL

#define ENC28J60_PHLCON_LACFG_DUPLEX_COL   0x0E00

Definition at line 423 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_LINK

#define ENC28J60_PHLCON_LACFG_LINK   0x0400

Definition at line 414 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_LINK_RX

#define ENC28J60_PHLCON_LACFG_LINK_RX   0x0C00

Definition at line 421 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_LINK_TX_RX

#define ENC28J60_PHLCON_LACFG_LINK_TX_RX   0x0D00

Definition at line 422 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_OFF

#define ENC28J60_PHLCON_LACFG_OFF   0x0900

Definition at line 418 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_ON

#define ENC28J60_PHLCON_LACFG_ON   0x0800

Definition at line 417 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_RX

#define ENC28J60_PHLCON_LACFG_RX   0x0200

Definition at line 412 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_TX

#define ENC28J60_PHLCON_LACFG_TX   0x0100

Definition at line 411 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LACFG_TX_RX

#define ENC28J60_PHLCON_LACFG_TX_RX   0x0700

Definition at line 416 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG

#define ENC28J60_PHLCON_LBCFG   0x00F0

Definition at line 424 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_BLINK_FAST

#define ENC28J60_PHLCON_LBCFG_BLINK_FAST   0x00A0

Definition at line 433 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_BLINK_SLOW

#define ENC28J60_PHLCON_LBCFG_BLINK_SLOW   0x00B0

Definition at line 434 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_COL

#define ENC28J60_PHLCON_LBCFG_COL   0x0030

Definition at line 427 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_DUPLEX

#define ENC28J60_PHLCON_LBCFG_DUPLEX   0x0050

Definition at line 429 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_DUPLEX_COL

#define ENC28J60_PHLCON_LBCFG_DUPLEX_COL   0x00E0

Definition at line 437 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_LINK

#define ENC28J60_PHLCON_LBCFG_LINK   0x0040

Definition at line 428 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_LINK_RX

#define ENC28J60_PHLCON_LBCFG_LINK_RX   0x00C0

Definition at line 435 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_LINK_TX_RX

#define ENC28J60_PHLCON_LBCFG_LINK_TX_RX   0x00D0

Definition at line 436 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_OFF

#define ENC28J60_PHLCON_LBCFG_OFF   0x0090

Definition at line 432 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_ON

#define ENC28J60_PHLCON_LBCFG_ON   0x0080

Definition at line 431 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_RX

#define ENC28J60_PHLCON_LBCFG_RX   0x0020

Definition at line 426 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_TX

#define ENC28J60_PHLCON_LBCFG_TX   0x0010

Definition at line 425 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LBCFG_TX_RX

#define ENC28J60_PHLCON_LBCFG_TX_RX   0x0070

Definition at line 430 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LFRQ

#define ENC28J60_PHLCON_LFRQ   0x000C

Definition at line 438 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LFRQ_139_MS

#define ENC28J60_PHLCON_LFRQ_139_MS   0x0008

Definition at line 441 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LFRQ_40_MS

#define ENC28J60_PHLCON_LFRQ_40_MS   0x0000

Definition at line 439 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_LFRQ_73_MS

#define ENC28J60_PHLCON_LFRQ_73_MS   0x0004

Definition at line 440 of file enc28j60_driver.h.

◆ ENC28J60_PHLCON_STRCH

#define ENC28J60_PHLCON_STRCH   0x0002

Definition at line 442 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT1

#define ENC28J60_PHSTAT1   (PHY_REG_TYPE | 0x01)

Definition at line 175 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT1_JBRSTAT

#define ENC28J60_PHSTAT1_JBRSTAT   0x0002

Definition at line 374 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT1_LLSTAT

#define ENC28J60_PHSTAT1_LLSTAT   0x0004

Definition at line 373 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT1_PFDPX

#define ENC28J60_PHSTAT1_PFDPX   0x1000

Definition at line 371 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT1_PHDPX

#define ENC28J60_PHSTAT1_PHDPX   0x0800

Definition at line 372 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2

#define ENC28J60_PHSTAT2   (PHY_REG_TYPE | 0x11)

Definition at line 179 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_COLSTAT

#define ENC28J60_PHSTAT2_COLSTAT   0x0800

Definition at line 396 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_DPXSTAT

#define ENC28J60_PHSTAT2_DPXSTAT   0x0200

Definition at line 398 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_LSTAT

#define ENC28J60_PHSTAT2_LSTAT   0x0400

Definition at line 397 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_PLRITY

#define ENC28J60_PHSTAT2_PLRITY   0x0010

Definition at line 399 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_RXSTAT

#define ENC28J60_PHSTAT2_RXSTAT   0x1000

Definition at line 395 of file enc28j60_driver.h.

◆ ENC28J60_PHSTAT2_TXSTAT

#define ENC28J60_PHSTAT2_TXSTAT   0x2000

Definition at line 394 of file enc28j60_driver.h.

◆ ENC28J60_RSV_BROADCAST_PACKET

#define ENC28J60_RSV_BROADCAST_PACKET   0x0200

Definition at line 456 of file enc28j60_driver.h.

◆ ENC28J60_RSV_CARRIER_EVENT

#define ENC28J60_RSV_CARRIER_EVENT   0x0004

Definition at line 462 of file enc28j60_driver.h.

◆ ENC28J60_RSV_CONTROL_FRAME

#define ENC28J60_RSV_CONTROL_FRAME   0x0800

Definition at line 454 of file enc28j60_driver.h.

◆ ENC28J60_RSV_CRC_ERROR

#define ENC28J60_RSV_CRC_ERROR   0x0010

Definition at line 461 of file enc28j60_driver.h.

◆ ENC28J60_RSV_DRIBBLE_NIBBLE

#define ENC28J60_RSV_DRIBBLE_NIBBLE   0x0400

Definition at line 455 of file enc28j60_driver.h.

◆ ENC28J60_RSV_DROP_EVENT

#define ENC28J60_RSV_DROP_EVENT   0x0001

Definition at line 463 of file enc28j60_driver.h.

◆ ENC28J60_RSV_LENGTH_CHECK_ERROR

#define ENC28J60_RSV_LENGTH_CHECK_ERROR   0x0020

Definition at line 460 of file enc28j60_driver.h.

◆ ENC28J60_RSV_LENGTH_OUT_OF_RANGE

#define ENC28J60_RSV_LENGTH_OUT_OF_RANGE   0x0040

Definition at line 459 of file enc28j60_driver.h.

◆ ENC28J60_RSV_MULTICAST_PACKET

#define ENC28J60_RSV_MULTICAST_PACKET   0x0100

Definition at line 457 of file enc28j60_driver.h.

◆ ENC28J60_RSV_PAUSE_CONTROL_FRAME

#define ENC28J60_RSV_PAUSE_CONTROL_FRAME   0x1000

Definition at line 453 of file enc28j60_driver.h.

◆ ENC28J60_RSV_RECEIVED_OK

#define ENC28J60_RSV_RECEIVED_OK   0x0080

Definition at line 458 of file enc28j60_driver.h.

◆ ENC28J60_RSV_UNKNOWN_OPCODE

#define ENC28J60_RSV_UNKNOWN_OPCODE   0x2000

Definition at line 452 of file enc28j60_driver.h.

◆ ENC28J60_RSV_VLAN_TYPE

#define ENC28J60_RSV_VLAN_TYPE   0x4000

Definition at line 451 of file enc28j60_driver.h.

◆ ENC28J60_RX_BUFFER_START

#define ENC28J60_RX_BUFFER_START   0x0000

Definition at line 52 of file enc28j60_driver.h.

◆ ENC28J60_RX_BUFFER_STOP

#define ENC28J60_RX_BUFFER_STOP   0x17FF

Definition at line 53 of file enc28j60_driver.h.

◆ ENC28J60_TX_BUFFER_START

#define ENC28J60_TX_BUFFER_START   0x1800

Definition at line 54 of file enc28j60_driver.h.

◆ ENC28J60_TX_BUFFER_STOP

#define ENC28J60_TX_BUFFER_STOP   0x1FFF

Definition at line 55 of file enc28j60_driver.h.

◆ ENC28J60_TX_CTRL_PCRCEN

#define ENC28J60_TX_CTRL_PCRCEN   0x02

Definition at line 447 of file enc28j60_driver.h.

◆ ENC28J60_TX_CTRL_PHUGEEN

#define ENC28J60_TX_CTRL_PHUGEEN   0x08

Definition at line 445 of file enc28j60_driver.h.

◆ ENC28J60_TX_CTRL_POVERRIDE

#define ENC28J60_TX_CTRL_POVERRIDE   0x01

Definition at line 448 of file enc28j60_driver.h.

◆ ENC28J60_TX_CTRL_PPADEN

#define ENC28J60_TX_CTRL_PPADEN   0x04

Definition at line 446 of file enc28j60_driver.h.

◆ ETH_REG_TYPE

#define ETH_REG_TYPE   0x0000

Definition at line 67 of file enc28j60_driver.h.

◆ MAC_REG_TYPE

#define MAC_REG_TYPE   0x1000

Definition at line 68 of file enc28j60_driver.h.

◆ MII_REG_TYPE

#define MII_REG_TYPE   0x2000

Definition at line 69 of file enc28j60_driver.h.

◆ PHY_REG_TYPE

#define PHY_REG_TYPE   0x3000

Definition at line 70 of file enc28j60_driver.h.

◆ REG_ADDR_MASK

#define REG_ADDR_MASK   0x001F

Definition at line 81 of file enc28j60_driver.h.

◆ REG_BANK_MASK

#define REG_BANK_MASK   0x0F00

Definition at line 80 of file enc28j60_driver.h.

◆ REG_TYPE_MASK

#define REG_TYPE_MASK   0xF000

Definition at line 79 of file enc28j60_driver.h.

Function Documentation

◆ enc28j60CalcCrc()

uint32_t enc28j60CalcCrc ( const void *  data,
size_t  length 
)

CRC calculation using the polynomial 0x4C11DB7.

Parameters
[in]dataPointer to the data over which to calculate the CRC
[in]lengthNumber of bytes to process
Returns
Resulting CRC value

Definition at line 970 of file enc28j60_driver.c.

◆ enc28j60ClearBit()

void enc28j60ClearBit ( NetInterface interface,
uint16_t  address,
uint16_t  mask 
)

Clear bit field.

Parameters
[in]interfaceUnderlying network interface
[in]addressRegister address
[in]maskBits to clear in the target register

Definition at line 948 of file enc28j60_driver.c.

◆ enc28j60DisableIrq()

void enc28j60DisableIrq ( NetInterface interface)

Disable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 275 of file enc28j60_driver.c.

◆ enc28j60DumpPhyReg()

void enc28j60DumpPhyReg ( NetInterface interface)

Dump PHY registers for debugging purpose.

Parameters
[in]interfaceUnderlying network interface

Definition at line 1065 of file enc28j60_driver.c.

◆ enc28j60DumpReg()

void enc28j60DumpReg ( NetInterface interface)

Dump registers for debugging purpose.

Parameters
[in]interfaceUnderlying network interface

Definition at line 1010 of file enc28j60_driver.c.

◆ enc28j60EnableIrq()

void enc28j60EnableIrq ( NetInterface interface)

Enable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 260 of file enc28j60_driver.c.

◆ enc28j60EventHandler()

void enc28j60EventHandler ( NetInterface interface)

ENC28J60 event handler.

Parameters
[in]interfaceUnderlying network interface

Definition at line 354 of file enc28j60_driver.c.

◆ enc28j60Init()

error_t enc28j60Init ( NetInterface interface)

ENC28J60 controller initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 71 of file enc28j60_driver.c.

◆ enc28j60InitHook()

void enc28j60InitHook ( NetInterface interface)

ENC28J60 custom configuration.

Parameters
[in]interfaceUnderlying network interface

Definition at line 240 of file enc28j60_driver.c.

◆ enc28j60IrqHandler()

bool_t enc28j60IrqHandler ( NetInterface interface)

ENC28J60 interrupt service routine.

Parameters
[in]interfaceUnderlying network interface
Returns
TRUE if a higher priority task must be woken. Else FALSE is returned

Definition at line 291 of file enc28j60_driver.c.

◆ enc28j60ReadBuffer()

void enc28j60ReadBuffer ( NetInterface interface,
uint8_t *  data,
size_t  length 
)

Read SRAM buffer.

Parameters
[in]interfaceUnderlying network interface
[out]dataBuffer where to store the incoming data
[in]lengthNumber of data to read

Definition at line 897 of file enc28j60_driver.c.

◆ enc28j60ReadPhyReg()

uint16_t enc28j60ReadPhyReg ( NetInterface interface,
uint16_t  address 
)

Read PHY register.

Parameters
[in]interfaceUnderlying network interface
[in]addressPHY register address
Returns
Register value

Definition at line 808 of file enc28j60_driver.c.

◆ enc28j60ReadReg()

uint8_t enc28j60ReadReg ( NetInterface interface,
uint16_t  address 
)

Read ENC28J60 register.

Parameters
[in]interfaceUnderlying network interface
[in]addressRegister address
Returns
Register value

Definition at line 746 of file enc28j60_driver.c.

◆ enc28j60ReceivePacket()

error_t enc28j60ReceivePacket ( NetInterface interface)

Receive a packet.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 495 of file enc28j60_driver.c.

◆ enc28j60SelectBank()

void enc28j60SelectBank ( NetInterface interface,
uint16_t  address 
)

Bank selection.

Parameters
[in]interfaceUnderlying network interface
[in]addressRegister address

Definition at line 668 of file enc28j60_driver.c.

◆ enc28j60SendPacket()

error_t enc28j60SendPacket ( NetInterface interface,
const NetBuffer buffer,
size_t  offset,
NetTxAncillary ancillary 
)

Send a packet.

Parameters
[in]interfaceUnderlying network interface
[in]bufferMulti-part buffer containing the data to send
[in]offsetOffset to the first data byte
[in]ancillaryAdditional options passed to the stack along with the packet
Returns
Error code

Definition at line 431 of file enc28j60_driver.c.

◆ enc28j60SetBit()

void enc28j60SetBit ( NetInterface interface,
uint16_t  address,
uint16_t  mask 
)

Set bit field.

Parameters
[in]interfaceUnderlying network interface
[in]addressRegister address
[in]maskBits to set in the target register

Definition at line 926 of file enc28j60_driver.c.

◆ enc28j60SoftReset()

void enc28j60SoftReset ( NetInterface interface)

ENC28J60 controller reset.

Parameters
[in]interfaceUnderlying network interface

Definition at line 649 of file enc28j60_driver.c.

◆ enc28j60Tick()

void enc28j60Tick ( NetInterface interface)

ENC28J60 timer handler.

Parameters
[in]interfaceUnderlying network interface

Definition at line 250 of file enc28j60_driver.c.

◆ enc28j60UpdateMacAddrFilter()

error_t enc28j60UpdateMacAddrFilter ( NetInterface interface)

Configure MAC address filtering.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 586 of file enc28j60_driver.c.

◆ enc28j60WriteBuffer()

void enc28j60WriteBuffer ( NetInterface interface,
const NetBuffer buffer,
size_t  offset 
)

Write SRAM buffer.

Parameters
[in]interfaceUnderlying network interface
[in]bufferMulti-part buffer containing the data to be written
[in]offsetOffset to the first data byte

Definition at line 842 of file enc28j60_driver.c.

◆ enc28j60WritePhyReg()

void enc28j60WritePhyReg ( NetInterface interface,
uint16_t  address,
uint16_t  data 
)

Write PHY register.

Parameters
[in]interfaceUnderlying network interface
[in]addressPHY register address
[in]dataRegister value

Definition at line 783 of file enc28j60_driver.c.

◆ enc28j60WriteReg()

void enc28j60WriteReg ( NetInterface interface,
uint16_t  address,
uint8_t  data 
)

Write ENC28J60 register.

Parameters
[in]interfaceUnderlying network interface
[in]addressRegister address
[in]dataRegister value

Definition at line 721 of file enc28j60_driver.c.

Variable Documentation

◆ enc28j60Driver

const NicDriver enc28j60Driver
extern

ENC28J60 driver.

Definition at line 44 of file enc28j60_driver.c.