Skip to content
Juraj Andrassy edited this page Sep 5, 2020 · 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, but for ARM MCUs it is the requested 20 MHz.
  • heavy buffering of sent TCP data in ENC memory with flush() function to send the last buffer
  • functions added for Ethernet 2.0 API
    • Ethernet.init() to set the CS pin
    • Ethernt.hardwareStatus() and linkStatus()
    • EthernetServer.accept()
  • implements availableForWrite() for EthernetClient

EthernetENC is larger then 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