Skip to content
Juraj Andrassy edited this page Dec 18, 2021 · 10 revisions

EthernetENC is the Ethernet library for Microchip's ENC28J60 network controller. The documentation of Arduino Ethernet library applies for class and functions descriptions.

EthernetENC is a modern version of the UIPEthernet library. The modernization includes:

  • support of many Arduino architectures by using the architecture specific Arduino SPI library
  • SPI transactions to share the SPI bus with devices with different communication settings
  • requested SPI speed is 20 MHz - maximum for the ENC. The SPI library evaluates the speed according to MCU capabilities. For example for a 16 MHz AVR it is 8 MHz, for a SAMD21 it is 12 MHz.
  • in blocking functions calls yield() for scheduling libraries or RTOS
  • functions added for Ethernet 2.0 API
    • Ethernet.init() to set the CS pin
    • Ethernt.hardwareStatus() and linkStatus()
    • EthernetServer.accept()
  • implements availableForWrite() for EthernetClient
  • implements EthernetClient.flush() to send the packet immediately
  • has UDP backlog to receive more than one message at time
  • compatible include file names Ethernet.h, EthernetClient.h, EthernatServer.h and EthernetUdp.h. Including EthernetENC.h in main ino file ensures EtnernetENC library is used. Libraries including Ethernet.h will use EthernetENC instead of Ethernet library.
  • Arduino 1.5 library format built with dot_a_linkage option for optimal build result

EthernetENC is larger than the Arduino Ethernet library, because it must handle the TCP stack (Wiznet chips have the TCP stack in firmware). It takes more flash and more dynamic memory, but it still can be used on Uno/Nano and Leonardo/Micro. If UDP, DHCP and DNS are not required there is a setting which makes the library smaller. There are some other settings to set the balance between performance and memory consumption.

Clone this wiki locally