CM Panel technical documentation Buy

How to add an SPI ethernet interface

How to wire and configure an SPI Ethernet adapter based on the Microchip ENC28J60 like the Mikroe ETH click board or TZT ethernet adapter.

Mikroe ETH click board

Wirings

ENC28J60  |  CM3-Panel  
----------|-----------------
     RST# | NC
     INT# | GPIO40
      CS# | SPI0_CE0 (GPIO36)
      SCK | SPI0_SCLK (GPIO39)
      SDO | SPI0_MISO (GPIO37)
      SDI | SPI0_MOSI (GPIO38)
      3V3 | 3V3
      GND | GND

Save this file in /boot/overlays/enc28j60-cm3panel.dts:

// Overlay for the Microchip ENC28J60 Ethernet Controller
// Acme Systems CM3-Panel 
// http://www.acmesystems.it/CM3-PANEL

/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2708";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            /* needed to avoid dtc warning */
            #address-cells = <1>;
            #size-cells = <0>;

            status = "okay";

            eth1: enc28j60@0{
                compatible = "microchip,enc28j60";
                reg = <0>; /* CE0 */
                pinctrl-names = "default";
                pinctrl-0 = <&eth1_pins>;
                interrupt-parent = <&gpio>;
                interrupts = <40 0x2>; /* falling edge */
                spi-max-frequency = <12000000>;
                status = "okay";
            };
        };
    };

    fragment@1 {
        target = <&spidev0>;
        __overlay__ {
            status = "disabled";
        };
    };

    fragment@2 {
        target = <&gpio>;
        __overlay__ {
            eth1_pins: eth1_pins {
                brcm,pins = <40>;
                brcm,function = <0>; /* in */
                brcm,pull = <0>; /* none */
            };
        };
    };

    __overrides__ {
        int_pin = <&eth1>, "interrupts:0",
                  <&eth1_pins>, "brcm,pins:0";
        speed   = <&eth1>, "spi-max-frequency:0";
    };
};

Compile it by typing:

sudo dtc -@ -I dts -O dtb -o /boot/overlays/enc28j60-cm3panel.dtbo /boot/overlays/enc28j60-cm3panel.dts 

Add this line in /boot/config.txt and reboot:

dtoverlay=spi-gpio35-39
dtoverlay=enc28j60-cm3panel

Disadvantages of this solution

The Microchip ENC28J60 doesn't have a MAC address so you have to configure it by software. To avoid this problem the right chip is ENC424J600.

Sergio Tanzilli
Systems designer, webmaster of www.acmesystems.it and founder of Acme Systems srl

Personal email: tanzilli@acmesystems.it
Web pages: https://www.acmesystems.it --- https://www.acmestudio.it
Github repositories: https://github.com/tanzilli --- https://github.com/acmesystems
Telegram group dedicated to the Acme Systems boards: https://t.me/acmesystemssrl

Home page CM Panel technical documentation Buy