From 7b3055e675c859f066eae34fc58b7857f86c192d Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:31:57 -0500 Subject: [PATCH] v1.5.3 using `built-in ESP32 MAC Address` #### Releases v1.5.3 1. Using `built-in ESP32 MAC Address` 2. Increase default `SPI_CLOCK_MHZ` clock to 20MHz from 8MHz --- .codespellrc | 7 +++ CONTRIBUTING.md | 15 ++++-- changelog.md | 7 +++ .../AdvancedWebServer/AdvancedWebServer.ino | 14 +++--- examples/HelloServer/HelloServer.ino | 12 ++--- examples/HelloServer2/HelloServer2.ino | 12 ++--- examples/HttpBasicAuth/HttpBasicAuth.ino | 12 ++--- examples/MQTTClient_Auth/MQTTClient_Auth.ino | 12 ++--- .../MQTTClient_Basic/MQTTClient_Basic.ino | 11 ++--- .../MQTT_ThingStream/MQTT_ThingStream.ino | 12 ++--- examples/PostServer/PostServer.ino | 12 ++--- .../SimpleAuthentication.ino | 12 ++--- examples/UdpNTPClient/UdpNTPClient.ino | 12 ++--- examples/UdpSendReceive/UdpSendReceive.ino | 12 ++--- examples/WebClient/WebClient.ino | 12 ++--- .../WebClientRepeating/WebClientRepeating.ino | 12 ++--- examples/WebServer/WebServer.ino | 12 ++--- library.json | 2 +- library.properties | 2 +- pics/ENC28J60.png | Bin 0 -> 143496 bytes platformio/platformio.ini | 17 ++++++- src/WebServer_ESP32_ENC.h | 43 ++++++++++++++---- src/WebServer_ESP32_ENC.hpp | 17 +++++-- src/WebServer_ESP32_ENC_Debug.h | 5 +- src/WebServer_ESP32_ENC_Impl.h | 5 +- src/enc28j60/esp32_enc28j60.cpp | 28 ++++++++++-- src/enc28j60/esp32_enc28j60.h | 11 +++-- src/enc28j60/extmod/enc28j60.h | 19 ++++++++ src/enc28j60/extmod/esp_eth_enc28j60.h | 18 ++++++++ src/enc28j60/extmod/esp_eth_mac_enc28j60.c | 18 ++++++++ src/enc28j60/extmod/esp_eth_phy_enc28j60.c | 18 ++++++++ src/enc28j60/extmod/esp_eth_spi_enc28j60.c | 18 ++++++++ 32 files changed, 288 insertions(+), 131 deletions(-) create mode 100644 .codespellrc create mode 100644 pics/ENC28J60.png diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000..00fe362 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,7 @@ +# See: https://github.com/codespell-project/codespell#using-a-config-file +[codespell] +# In the event of a false positive, add the problematic word, in all lowercase, to a comma-separated list here: +ignore-words-list = , +check-filenames = +check-hidden = +skip = ./.git,./src,./examples,./Packages_Patches,./LibraryPatches diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d21b86b..7ff7b36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,12 +10,15 @@ However, before reporting a bug please check through the following: If you don't find anything, please [open a new issue](https://github.com/khoih-prog/WebServer_ESP32_ENC/issues/new). +--- + ### How to submit a bug report Please ensure to specify the following: * Arduino IDE version (e.g. 1.8.19) or Platform.io version -* Board Core Version (e.g. ESP32 core v2.0.5) +* Board type (e.g. ESP32_DEV) +* Board Core Version (e.g. ESP32 core v2.0.6) * Contextual information (e.g. what you were trying to achieve) * Simplest possible steps to reproduce * Anything that might be relevant in your opinion, such as: @@ -23,14 +26,18 @@ Please ensure to specify the following: * Network configuration +Please be educated, civilized and constructive as you've always been. Disrespective posts against [GitHub Code of Conduct](https://docs.github.com/en/site-policy/github-terms/github-event-code-of-conduct) will be ignored and deleted. + +--- + ### Example ``` Arduino IDE version: 1.8.19 -WT32_ETH01 board -ESP32 core v2.0.5 +ESP32_DEV board +ESP32 core v2.0.6 OS: Ubuntu 20.04 LTS -Linux xy-Inspiron-3593 5.15.0-53-generic #59~20.04.1-Ubuntu SMP Thu Oct 20 15:10:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux +Linux xy-Inspiron-3593 5.15.0-57-generic #63~20.04.1-Ubuntu SMP Wed Nov 30 13:40:16 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux Context: I encountered a crash while using this library diff --git a/changelog.md b/changelog.md index cda6f1e..9125621 100644 --- a/changelog.md +++ b/changelog.md @@ -8,6 +8,7 @@ Donate to my libraries using BuyMeACoffee + --- --- @@ -15,6 +16,7 @@ * [Changelog](#changelog) + * [Releases v1.5.3](#releases-v153) * [Releases v1.5.1](#releases-v151) --- @@ -22,6 +24,11 @@ ## Changelog +#### Releases v1.5.3 + +1. Using `built-in ESP32 MAC Address` +2. Increase default `SPI_CLOCK_MHZ` clock to 20MHz from 8MHz + #### Releases v1.5.1 1. Initial coding to support ESP32 boards using ENC28J60 LwIP Ethernet. Sync with [WebServer_WT32_ETH01 v1.5.1](https://github.com/khoih-prog/WebServer_WT32_ETH01) diff --git a/examples/AdvancedWebServer/AdvancedWebServer.ino b/examples/AdvancedWebServer/AdvancedWebServer.ino index b8c5f42..879d1fb 100644 --- a/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -50,8 +50,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -208,16 +208,14 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); - ETH.config(myIP, myGW, mySN, myDNS); + //ETH.config(myIP, myGW, mySN, myDNS); ESP32_ENC_waitForConnect(); diff --git a/examples/HelloServer/HelloServer.ino b/examples/HelloServer/HelloServer.ino index 95f7792..1a1cda1 100644 --- a/examples/HelloServer/HelloServer.ino +++ b/examples/HelloServer/HelloServer.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -131,12 +131,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/HelloServer2/HelloServer2.ino b/examples/HelloServer2/HelloServer2.ino index cb3cd3b..2aa8246 100644 --- a/examples/HelloServer2/HelloServer2.ino +++ b/examples/HelloServer2/HelloServer2.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -131,12 +131,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/HttpBasicAuth/HttpBasicAuth.ino b/examples/HttpBasicAuth/HttpBasicAuth.ino index c61ef92..8968064 100644 --- a/examples/HttpBasicAuth/HttpBasicAuth.ino +++ b/examples/HttpBasicAuth/HttpBasicAuth.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -105,12 +105,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/MQTTClient_Auth/MQTTClient_Auth.ino b/examples/MQTTClient_Auth/MQTTClient_Auth.ino index ef466b9..e89a4c9 100644 --- a/examples/MQTTClient_Auth/MQTTClient_Auth.ino +++ b/examples/MQTTClient_Auth/MQTTClient_Auth.ino @@ -35,8 +35,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -188,12 +188,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/MQTTClient_Basic/MQTTClient_Basic.ino b/examples/MQTTClient_Basic/MQTTClient_Basic.ino index 5555551..a58f5e4 100644 --- a/examples/MQTTClient_Basic/MQTTClient_Basic.ino +++ b/examples/MQTTClient_Basic/MQTTClient_Basic.ino @@ -36,8 +36,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -189,11 +189,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); // Static IP, leave without this line to get IP via DHCP diff --git a/examples/MQTT_ThingStream/MQTT_ThingStream.ino b/examples/MQTT_ThingStream/MQTT_ThingStream.ino index 64b557a..00da35f 100644 --- a/examples/MQTT_ThingStream/MQTT_ThingStream.ino +++ b/examples/MQTT_ThingStream/MQTT_ThingStream.ino @@ -38,8 +38,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -234,12 +234,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/PostServer/PostServer.ino b/examples/PostServer/PostServer.ino index 0130ee0..d331d42 100644 --- a/examples/PostServer/PostServer.ino +++ b/examples/PostServer/PostServer.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -180,12 +180,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/SimpleAuthentication/SimpleAuthentication.ino b/examples/SimpleAuthentication/SimpleAuthentication.ino index c4422bd..3d6c0c5 100644 --- a/examples/SimpleAuthentication/SimpleAuthentication.ino +++ b/examples/SimpleAuthentication/SimpleAuthentication.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -224,12 +224,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/UdpNTPClient/UdpNTPClient.ino b/examples/UdpNTPClient/UdpNTPClient.ino index 97ff630..4028783 100644 --- a/examples/UdpNTPClient/UdpNTPClient.ino +++ b/examples/UdpNTPClient/UdpNTPClient.ino @@ -27,8 +27,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -142,12 +142,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/UdpSendReceive/UdpSendReceive.ino b/examples/UdpSendReceive/UdpSendReceive.ino index 2aee65a..a57e56e 100644 --- a/examples/UdpSendReceive/UdpSendReceive.ino +++ b/examples/UdpSendReceive/UdpSendReceive.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -138,12 +138,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/WebClient/WebClient.ino b/examples/WebClient/WebClient.ino index d7adec7..2403195 100644 --- a/examples/WebClient/WebClient.ino +++ b/examples/WebClient/WebClient.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -105,12 +105,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/WebClientRepeating/WebClientRepeating.ino b/examples/WebClientRepeating/WebClientRepeating.ino index 4259605..c281750 100644 --- a/examples/WebClientRepeating/WebClientRepeating.ino +++ b/examples/WebClientRepeating/WebClientRepeating.ino @@ -27,8 +27,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -143,12 +143,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/examples/WebServer/WebServer.ino b/examples/WebServer/WebServer.ino index d17ed94..5ab16ba 100644 --- a/examples/WebServer/WebServer.ino +++ b/examples/WebServer/WebServer.ino @@ -22,8 +22,8 @@ ////////////////////////////////////////////////////////// // Optional values to override default settings -//#define SPI_HOST 1 -//#define SPI_CLOCK_MHZ 8 +//#define ETH_SPI_HOST SPI3_HOST +//#define SPI_CLOCK_MHZ 20 // Must connect INT to GPIOxx or not working //#define INT_GPIO 4 @@ -104,12 +104,10 @@ void setup() // start the ethernet connection and the server: // Use DHCP dynamic IP and random mac - uint16_t index = millis() % NUMBER_OF_MAC; - //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, - // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); - //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); - ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); + // int SPI_HOST, uint8_t *W6100_Mac = W6100_Default_Mac); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST ); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST, mac[millis() % NUMBER_OF_MAC] ); // Static IP, leave without this line to get IP via DHCP //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); diff --git a/library.json b/library.json index 6d3c3ff..783ddd6 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "WebServer_ESP32_ENC", - "version": "1.5.1", + "version": "1.5.3", "keywords": "WebServer, Ethernet, MQTT, MQTTS, HTTP, HTTPS, SSL, Arduino, ESP32, ENC28J60, HTTP-Client, WebSocket-Client, MQTT-Client, server, client, websocket, LittleFS, SPIFFS, ThingStream", "description": "Simple Ethernet WebServer, HTTP/HTTPS Client wrapper library for ESP32 boards using ENC28J60 with LwIP Ethernet library. The WebServer supports HTTP(S) GET and POST requests, provides argument parsing, handles one client at a time. It provides HTTP(S), MQTT(S) Client and supports WebServer serving from LittleFS/SPIFFS", "authors": diff --git a/library.properties b/library.properties index 6e3646d..ccab9e5 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=WebServer_ESP32_ENC -version=1.5.1 +version=1.5.3 author=Khoi Hoang license=GPLv3 maintainer=Khoi Hoang diff --git a/pics/ENC28J60.png b/pics/ENC28J60.png new file mode 100644 index 0000000000000000000000000000000000000000..dfaf18b92ab43cc71831124739ef2c30be7a32f1 GIT binary patch literal 143496 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 pbzu2EHV?Ivhcb3GFFO9TZe%MUb) 2) #warning Using code for ESP32 core v1.0.6- in WebServer_ESP32_ENC.h #endif - #define WEBSERVER_ESP32_ENC_VERSION "WebServer_ESP32_ENC v1.5.1 for core v1.0.6-" + #define WEBSERVER_ESP32_ENC_VERSION "WebServer_ESP32_ENC v1.5.3 for core v1.0.6-" #endif #define WEBSERVER_ESP32_ENC_VERSION_MAJOR 1 #define WEBSERVER_ESP32_ENC_VERSION_MINOR 5 -#define WEBSERVER_ESP32_ENC_VERSION_PATCH 1 +#define WEBSERVER_ESP32_ENC_VERSION_PATCH 3 -#define WEBSERVER_ESP32_ENC_VERSION_INT 1005001 +#define WEBSERVER_ESP32_ENC_VERSION_INT 1005003 + +////////////////////////////////////////////////////////////// + +#if ( ARDUINO_ESP32S2_DEV || ARDUINO_FEATHERS2 || ARDUINO_ESP32S2_THING_PLUS || ARDUINO_MICROS2 || \ + ARDUINO_METRO_ESP32S2 || ARDUINO_MAGTAG29_ESP32S2 || ARDUINO_FUNHOUSE_ESP32S2 || \ + ARDUINO_ADAFRUIT_FEATHER_ESP32S2_NOPSRAM ) + + #error ESP32_S2 not supported. Use WebServer_ESP32_SC_ENC library + +#elif ( defined(ARDUINO_ESP32C3_DEV) ) + + #error ESP32_C3 not supported. Use WebServer_ESP32_SC_ENC library + +#elif ( defined(ARDUINO_ESP32S3_DEV) || defined(ARDUINO_ESP32_S3_BOX) || defined(ARDUINO_TINYS3) || \ + defined(ARDUINO_PROS3) || defined(ARDUINO_FEATHERS3) ) + + #error ESP32_S3 not supported. Use WebServer_ESP32_SC_ENC library + +#elif ESP32 + + #if (_ETHERNET_WEBSERVER_LOGLEVEL_ > 3) + #warning Using ESP32 architecture for WebServer_ESP32_W5500 + #endif + +#define BOARD_NAME ARDUINO_BOARD -#if ESP32 - #warning Using ESP32 architecture for WebServer_ESP32_ENC - #define BOARD_NAME ARDUINO_BOARD #else #error This code is designed to run on ESP32 platform! Please check your Tools->Board setting. #endif +////////////////////////////////////////////////////////////// + #include #include "WebServer_ESP32_ENC_Debug.h" diff --git a/src/WebServer_ESP32_ENC.hpp b/src/WebServer_ESP32_ENC.hpp index 877d4e6..fa8cf78 100644 --- a/src/WebServer_ESP32_ENC.hpp +++ b/src/WebServer_ESP32_ENC.hpp @@ -5,15 +5,16 @@ WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer - Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC Licensed under GPLv3 license - Version: 1.5.1 + Version: 1.5.3 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz *****************************************************************************************************************************/ #pragma once @@ -27,11 +28,15 @@ #include // Introduce corresponding libraries #if !defined(SPI_HOST) - #define SPI_HOST 1 + #define SPI_HOST SPI3_HOST +#endif + +#if !defined(ETH_SPI_HOST) + #define ETH_SPI_HOST SPI3_HOST #endif #if !defined(SPI_CLOCK_MHZ) - #define SPI_CLOCK_MHZ 8 + #define SPI_CLOCK_MHZ 20 //8 #endif #if !defined(INT_GPIO) @@ -54,10 +59,14 @@ #define CS_GPIO 5 #endif +////////////////////////////////////////////////////////////// + #ifndef SHIELD_TYPE #define SHIELD_TYPE "ESP32_ENC28J60" #endif +////////////////////////////////////////////////////////////// + extern bool ESP32_ENC_eth_connected; extern void ESP32_ENC_onEvent(); diff --git a/src/WebServer_ESP32_ENC_Debug.h b/src/WebServer_ESP32_ENC_Debug.h index c3a0b05..e907dd5 100644 --- a/src/WebServer_ESP32_ENC_Debug.h +++ b/src/WebServer_ESP32_ENC_Debug.h @@ -5,15 +5,16 @@ WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer - Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC Licensed under GPLv3 license - Version: 1.5.1 + Version: 1.5.3 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz *****************************************************************************************************************************/ #pragma once diff --git a/src/WebServer_ESP32_ENC_Impl.h b/src/WebServer_ESP32_ENC_Impl.h index 9ce538d..ef0731c 100644 --- a/src/WebServer_ESP32_ENC_Impl.h +++ b/src/WebServer_ESP32_ENC_Impl.h @@ -5,15 +5,16 @@ WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer - Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC Licensed under GPLv3 license - Version: 1.5.1 + Version: 1.5.3 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz *****************************************************************************************************************************/ #pragma once diff --git a/src/enc28j60/esp32_enc28j60.cpp b/src/enc28j60/esp32_enc28j60.cpp index 0000b4d..7007432 100644 --- a/src/enc28j60/esp32_enc28j60.cpp +++ b/src/enc28j60/esp32_enc28j60.cpp @@ -5,15 +5,16 @@ WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer - Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC Licensed under GPLv3 license - Version: 1.5.1 + Version: 1.5.3 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz *****************************************************************************************************************************/ /* Based on ETH.h from arduino-esp32 and esp-idf @@ -68,7 +69,26 @@ bool ESP32_ENC::begin(int MISO, int MOSI, int SCLK, int CS, int INT, int SPICLOC { tcpipInit(); - esp_base_mac_addr_set( ENC28J60_Mac ); + //esp_base_mac_addr_set( ENC28J60_Mac ); + + if ( esp_read_mac(mac_eth, ESP_MAC_ETH) == ESP_OK ) + { + char macStr[18] = { 0 }; + + sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac_eth[0], mac_eth[1], mac_eth[2], + mac_eth[3], mac_eth[4], mac_eth[5]); + + ET_LOGINFO1("Using built-in mac_eth =", macStr); + + esp_base_mac_addr_set( mac_eth ); + } + else + { + ET_LOGINFO("Using user mac_eth"); + memcpy(mac_eth, ENC28J60_Mac, sizeof(mac_eth)); + + esp_base_mac_addr_set( ENC28J60_Mac ); + } tcpip_adapter_set_default_eth_handlers(); @@ -107,7 +127,7 @@ bool ESP32_ENC::begin(int MISO, int MOSI, int SCLK, int CS, int INT, int SPICLOC return false; } - eth_mac->set_addr(eth_mac, ENC28J60_Mac); + eth_mac->set_addr(eth_mac, mac_eth); if (emac_enc28j60_get_chip_info(eth_mac) < ENC28J60_REV_B5 && SPICLOCK_MHZ < 8) { diff --git a/src/enc28j60/esp32_enc28j60.h b/src/enc28j60/esp32_enc28j60.h index 4ac5c55..2b8ad70 100644 --- a/src/enc28j60/esp32_enc28j60.h +++ b/src/enc28j60/esp32_enc28j60.h @@ -5,15 +5,16 @@ WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer - Based on and modified from ESP8266 https://github.com/esp8266/Arduino/releases + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC Licensed under GPLv3 license - Version: 1.5.1 + Version: 1.5.3 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz *****************************************************************************************************************************/ /* esp32_enc28j60.h - ETH PHY support for ENC28J60 @@ -28,6 +29,8 @@ #include "esp_system.h" #include "esp_eth.h" +#include + //////////////////////////////////////// #if ESP_IDF_VERSION_MAJOR < 4 || ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(4,4,0) @@ -46,7 +49,7 @@ class ESP32_ENC bool initialized; bool staticIP; - //static uint8_t ENC28J60_Default_Mac[6] = { 0x02, 0x00, 0xDE, 0xAD, 0xBE, 0xEF }; + uint8_t mac_eth[6] = { 0xFE, 0xED, 0xDE, 0xAD, 0xBE, 0xEF }; #if ESP_IDF_VERSION_MAJOR > 3 esp_eth_handle_t eth_handle; @@ -64,7 +67,7 @@ class ESP32_ENC ESP32_ENC(); ~ESP32_ENC(); - bool begin(int MISO, int MOSI, int SCLK, int CS, int INT, int SPICLOCK_MHZ, int SPIHOST, + bool begin(int MISO, int MOSI, int SCLK, int CS, int INT, int SPICLOCK_MHZ = 8, int SPIHOST = SPI3_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, diff --git a/src/enc28j60/extmod/enc28j60.h b/src/enc28j60/extmod/enc28j60.h index a696484..cf2e271 100644 --- a/src/enc28j60/extmod/enc28j60.h +++ b/src/enc28j60/extmod/enc28j60.h @@ -1,3 +1,22 @@ +/**************************************************************************************************************************** + enc28j60.h + + For Ethernet shields using ESP32_ENC (ESP32 + ENC28J60) + + WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer + + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf + Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC + Licensed under GPLv3 license + + Version: 1.5.3 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz + *****************************************************************************************************************************/ + // Copyright 2019 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/enc28j60/extmod/esp_eth_enc28j60.h b/src/enc28j60/extmod/esp_eth_enc28j60.h index 37a3c56..a5c2683 100644 --- a/src/enc28j60/extmod/esp_eth_enc28j60.h +++ b/src/enc28j60/extmod/esp_eth_enc28j60.h @@ -1,3 +1,21 @@ +/**************************************************************************************************************************** + esp_eth_enc28j60.c + + For Ethernet shields using ESP32_ENC (ESP32 + ENC28J60) + + WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer + + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf + Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC + Licensed under GPLv3 license + + Version: 1.5.3 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz + *****************************************************************************************************************************/ // Copyright 2021 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/enc28j60/extmod/esp_eth_mac_enc28j60.c b/src/enc28j60/extmod/esp_eth_mac_enc28j60.c index 8f83d4b..0938262 100644 --- a/src/enc28j60/extmod/esp_eth_mac_enc28j60.c +++ b/src/enc28j60/extmod/esp_eth_mac_enc28j60.c @@ -1,3 +1,21 @@ +/**************************************************************************************************************************** + esp_eth_mac_enc28j60.c + + For Ethernet shields using ESP32_ENC (ESP32 + ENC28J60) + + WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer + + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf + Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC + Licensed under GPLv3 license + + Version: 1.5.3 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz + *****************************************************************************************************************************/ // Copyright 2019 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/enc28j60/extmod/esp_eth_phy_enc28j60.c b/src/enc28j60/extmod/esp_eth_phy_enc28j60.c index 6d6402f..e38c5ab 100644 --- a/src/enc28j60/extmod/esp_eth_phy_enc28j60.c +++ b/src/enc28j60/extmod/esp_eth_phy_enc28j60.c @@ -1,3 +1,21 @@ +/**************************************************************************************************************************** + esp_eth_phy_enc28j60.c + + For Ethernet shields using ESP32_ENC (ESP32 + ENC28J60) + + WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer + + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf + Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC + Licensed under GPLv3 license + + Version: 1.5.3 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz + *****************************************************************************************************************************/ // Copyright 2019 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/enc28j60/extmod/esp_eth_spi_enc28j60.c b/src/enc28j60/extmod/esp_eth_spi_enc28j60.c index 7f208f1..093847e 100644 --- a/src/enc28j60/extmod/esp_eth_spi_enc28j60.c +++ b/src/enc28j60/extmod/esp_eth_spi_enc28j60.c @@ -1,4 +1,22 @@ +/**************************************************************************************************************************** + esp_eth_spi_enc28j60.c + For Ethernet shields using ESP32_ENC (ESP32 + ENC28J60) + + WebServer_ESP32_ENC is a library for the ESP32 with Ethernet ENC28J60 to run WebServer + + Based on and modified from ESP32-IDF https://github.com/espressif/esp-idf + Built by Khoi Hoang https://github.com/khoih-prog/WebServer_ESP32_ENC + Licensed under GPLv3 license + + Version: 1.5.3 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.5.1 K Hoang 28/11/2022 Initial coding for ESP32_ENC (ESP32 + ENC28J60). Sync with WebServer_WT32_ETH01 v1.5.1 + 1.5.3 K Hoang 11/01/2023 Using built-in ESP32 MAC. Increase default SPI clock to 20MHz from 8MHz + *****************************************************************************************************************************/ + #include #include #include "sdkconfig.h"