From bottom: ENC28J60 SPI Ethernet Controller, Raspberry Pi 3 B and 5V 6A power module |
As is often the case it turned out it is easier to test the ENC28J60 using a Raspberry Pi. Usually because the software is easily available, but in this case because TheSpotShed has a great writeup on it. My board is a little different from his, but even so it worked first time, so for more details hie you hence to TheSpotShed.
Now a late-model Pi is far from a tiddly microcontroller, and we often forget that the Network Stack takes up more than one third of the 15-million plus lines of Linux kernel source code. It is a measure of how far we have come to even consider implementing networking in an embedded microcontroller system. Besides being a slam-dunk, implementing it for a Pi lets you gauge where the bottlenecks are: the SPI interface, the LAN controller or the microcontroller.
My ENC28J50 board had different pinout from the one in TheSpotShed, and it runs on 5V instead of 3.3V. There are a few spelling errors, e.g. LNT instead of INT, SL instead SI
I bought my ENC28J60 from lelong.com.my's enewground before it was removed from sale |
Pi ENC28J60 Colour
------------------------------------------------
+3V3 VCC Brown <--- Note my PCB is *5V*
GPIO10/MOSI SI Grey
GPIO9/MISO SO Green
GPIO11/SCLK SCK Purple
GND GND Red
GPIO25 INT Orange
CE0#/GPIO8 CS Black
Working from 5V also meant that my 10-way Molex header (SL Modular Connector, 70066 Series IDC/IDT 2.54mm) no longer sufficed. I had to run a couple of easyhooks to the top of the Raspberry Pi header for my 5V. Other than that, everything worked on the first try, so kudos to TheSpotShed.
First I checked for the enc28j60.dtbo overlay:
# mount /dev/mmcblk0p1 /mnt/flash
# ls -l /mnt/flash/overlays/enc*
-rwxr-xr-x 1 root root 1403 Nov 19 2018 /mnt/flash/overlays/enc28j60.dtbo
-rwxr-xr-x 1 root root 1279 Nov 19 2018 /mnt/flash/overlays/enc28j60-spi2.dtbo
It is not only there but very promisingly there looks to be provision for a second spi interface, spi2.
A quick edit of /boot/config.txt to add:
dtparam=spi=on
dtoverlay=enc28j60
And on reboot, it came up immediately as eth1:
# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet xx.xx.xx.xx netmask 255.255.255.0 broadcast xx.xx.xx.255
ether b8:27:eb:a4:ab:0b txqueuelen 1000 (Ethernet)
RX packets 85 bytes 9631 (9.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 8877 (8.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 4e:cd:f6:c2:4e:3a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 167
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet zz.zz.zz.zz netmask 255.255.0.0 broadcast zz.zz.255.255
ether b8:27:eb:f1:fe:5e txqueuelen 1000 (Ethernet)
RX packets 22 bytes 2202 (2.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26 bytes 3454 (3.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
On connecting it to my modem router the link came up immediately. I tested it with Youtube with Firefox, and it pretty much ran a full HD (1080p) music video, with the odd hiccup or two. But overall very impressive throughput, compared to my previous SPI link to my SIM7000C 3G modem.
Sistar's 'Give it to Me' in fullscreen mode is a brutal workout for anything less than a Linux workstation |
The next thing to do would be to hook the ENC28J60 to an ESP8266, but that is another blog post, so watch this space.
Keep safe, and Happy Trails.
No comments:
Post a Comment