Skip to content

Commit f6ca2a1

Browse files
committed
[ETH] Implement SPI support, multiple interfaces and more
1 parent ee9a71d commit f6ca2a1

File tree

6 files changed

+977
-483
lines changed

6 files changed

+977
-483
lines changed

libraries/Ethernet/examples/ETH_LAN8720/ETH_LAN8720.ino

+11-10
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
44
*/
55

6+
// Important to be defined BEFORE including ETH.h for ETH.begin() to work.
7+
// Example RMII LAN8720 (Olimex, etc.)
8+
#define ETH_PHY_TYPE ETH_PHY_LAN8720
9+
#define ETH_PHY_ADDR 0
10+
#define ETH_PHY_MDC 23
11+
#define ETH_PHY_MDIO 18
12+
#define ETH_PHY_POWER -1
13+
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
14+
615
#include <ETH.h>
716

817
static bool eth_connected = false;
@@ -19,16 +28,8 @@ void WiFiEvent(WiFiEvent_t event)
1928
Serial.println("ETH Connected");
2029
break;
2130
case ARDUINO_EVENT_ETH_GOT_IP:
22-
Serial.print("ETH MAC: ");
23-
Serial.print(ETH.macAddress());
24-
Serial.print(", IPv4: ");
25-
Serial.print(ETH.localIP());
26-
if (ETH.fullDuplex()) {
27-
Serial.print(", FULL_DUPLEX");
28-
}
29-
Serial.print(", ");
30-
Serial.print(ETH.linkSpeed());
31-
Serial.println("Mbps");
31+
Serial.println("ETH Got IP");
32+
ETH.printInfo(Serial);
3233
eth_connected = true;
3334
break;
3435
case ARDUINO_EVENT_ETH_DISCONNECTED:

libraries/Ethernet/examples/ETH_TLK110/ETH_TLK110.ino

+6-13
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55

66
#include <ETH.h>
77

8+
#define ETH_TYPE ETH_PHY_TLK110
89
#define ETH_ADDR 31
9-
#define ETH_POWER_PIN 17
1010
#define ETH_MDC_PIN 23
1111
#define ETH_MDIO_PIN 18
12-
#define ETH_TYPE ETH_PHY_TLK110
12+
#define ETH_POWER_PIN 17
13+
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
1314

1415
static bool eth_connected = false;
1516

@@ -25,16 +26,8 @@ void WiFiEvent(WiFiEvent_t event)
2526
Serial.println("ETH Connected");
2627
break;
2728
case ARDUINO_EVENT_ETH_GOT_IP:
28-
Serial.print("ETH MAC: ");
29-
Serial.print(ETH.macAddress());
30-
Serial.print(", IPv4: ");
31-
Serial.print(ETH.localIP());
32-
if (ETH.fullDuplex()) {
33-
Serial.print(", FULL_DUPLEX");
34-
}
35-
Serial.print(", ");
36-
Serial.print(ETH.linkSpeed());
37-
Serial.println("Mbps");
29+
Serial.println("ETH Got IP");
30+
ETH.printInfo(Serial);
3831
eth_connected = true;
3932
break;
4033
case ARDUINO_EVENT_ETH_DISCONNECTED:
@@ -74,7 +67,7 @@ void setup()
7467
{
7568
Serial.begin(115200);
7669
WiFi.onEvent(WiFiEvent);
77-
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE);
70+
ETH.begin(ETH_TYPE, ETH_ADDR, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_POWER_PIN);
7871
}
7972

8073

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
This sketch shows the Ethernet event usage
3+
4+
*/
5+
6+
#define ETH_TYPE ETH_PHY_W5500
7+
#define ETH_ADDR 1
8+
#define ETH_CS 15
9+
#define ETH_IRQ 4
10+
#define ETH_RST 5
11+
#define ETH_SPI_HOST SPI2_HOST
12+
#define ETH_SPI_SCK 14
13+
#define ETH_SPI_MISO 12
14+
#define ETH_SPI_MOSI 13
15+
16+
#include <ETH.h>
17+
18+
static bool eth_connected = false;
19+
20+
void WiFiEvent(WiFiEvent_t event)
21+
{
22+
switch (event) {
23+
case ARDUINO_EVENT_ETH_START:
24+
Serial.println("ETH Started");
25+
//set eth hostname here
26+
ETH.setHostname("esp32-ethernet");
27+
break;
28+
case ARDUINO_EVENT_ETH_CONNECTED:
29+
Serial.println("ETH Connected");
30+
break;
31+
case ARDUINO_EVENT_ETH_GOT_IP:
32+
Serial.println("ETH Got IP");
33+
ETH.printInfo(Serial);
34+
eth_connected = true;
35+
break;
36+
case ARDUINO_EVENT_ETH_DISCONNECTED:
37+
Serial.println("ETH Disconnected");
38+
eth_connected = false;
39+
break;
40+
case ARDUINO_EVENT_ETH_STOP:
41+
Serial.println("ETH Stopped");
42+
eth_connected = false;
43+
break;
44+
default:
45+
break;
46+
}
47+
}
48+
49+
void testClient(const char * host, uint16_t port)
50+
{
51+
Serial.print("\nconnecting to ");
52+
Serial.println(host);
53+
54+
WiFiClient client;
55+
if (!client.connect(host, port)) {
56+
Serial.println("connection failed");
57+
return;
58+
}
59+
client.printf("GET / HTTP/1.1\r\nHost: %s\r\n\r\n", host);
60+
while (client.connected() && !client.available());
61+
while (client.available()) {
62+
Serial.write(client.read());
63+
}
64+
65+
Serial.println("closing connection\n");
66+
client.stop();
67+
}
68+
69+
void setup()
70+
{
71+
Serial.begin(115200);
72+
WiFi.onEvent(WiFiEvent);
73+
ETH.begin(ETH_TYPE, ETH_ADDR, ETH_CS, ETH_IRQ, ETH_RST, ETH_SPI_HOST, ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI);
74+
}
75+
76+
77+
void loop()
78+
{
79+
if (eth_connected) {
80+
testClient("google.com", 80);
81+
}
82+
delay(10000);
83+
}

0 commit comments

Comments
 (0)