Description
Is your feature request related to a problem? Please describe.
The ESP32-S3 chip does not have a built-in MAC and PHY interface, so it cannot support Ethernet functionality directly like the normal ESP32.
Describe the solution you'd like
Add support for external serial-to-ethernet chips such as W5500 and ENC28J60. This can be done by:
-
Implementing SPI driver for the ethernet chip.
-
Implementing high-level ethernet driver based on the SPI driver.
-
Integrating the driver into ESP-IDF TCP/IP stack.
This will allow ESP32-S3 to use Ethernet functionality by connecting external ethernet chips.
Describe alternatives you've considered
Using third-party Ethernet libraries like Ethernet.h or LwIP. But this requires porting work and won't be able to leverage ESP-IDF native network stack.
Additional context
Example code for W5500 ethernet chip support on ESP32-S3:
// ethconfig.h
#include "driver/spi_master.h"
#include "w5500_ethernet.h"
class EthConfig {
spi_device_handle_t spi_handle;
bool init_w5500_spi() {
// Init W5500 SPI
}
bool linkUp() {
// Check W5500 registers
}
};
// ethconfig.cpp
bool EthConfig::init_w5500_spi() {
// Init SPI
// Add device
// Config SPI device
}
bool EthConfig::linkUp() {
// Transmit SPI transaction
// Check link status bit
}
This allows integrating W5500 to ESP-IDF native network stack.