2019-04-10 04:24:50 -04:00
|
|
|
|
menu "Ethernet"
|
|
|
|
|
|
2019-11-13 23:03:14 -05:00
|
|
|
|
# Invisible item that is enabled if any Ethernet selection is made
|
2019-08-13 21:57:02 -04:00
|
|
|
|
config ETH_ENABLED
|
|
|
|
|
bool
|
2019-08-13 01:11:46 -04:00
|
|
|
|
|
2019-04-10 04:24:50 -04:00
|
|
|
|
menuconfig ETH_USE_ESP32_EMAC
|
2023-08-22 10:45:34 -04:00
|
|
|
|
depends on SOC_EMAC_SUPPORTED
|
2019-06-25 07:36:56 -04:00
|
|
|
|
bool "Support ESP32 internal EMAC controller"
|
2019-04-10 04:24:50 -04:00
|
|
|
|
default y
|
2019-08-13 01:11:46 -04:00
|
|
|
|
select ETH_ENABLED
|
2019-04-10 04:24:50 -04:00
|
|
|
|
help
|
|
|
|
|
ESP32 integrates a 10/100M Ethernet MAC controller.
|
|
|
|
|
|
|
|
|
|
if ETH_USE_ESP32_EMAC
|
|
|
|
|
choice ETH_PHY_INTERFACE
|
|
|
|
|
prompt "PHY interface"
|
|
|
|
|
default ETH_PHY_INTERFACE_RMII
|
|
|
|
|
help
|
|
|
|
|
Select the communication interface between MAC and PHY chip.
|
|
|
|
|
|
|
|
|
|
config ETH_PHY_INTERFACE_RMII
|
|
|
|
|
bool "Reduced Media Independent Interface (RMII)"
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
|
|
if ETH_PHY_INTERFACE_RMII
|
2024-04-26 06:27:54 -04:00
|
|
|
|
choice ETH_RMII_CLK_MODE # IDF-9724
|
2023-08-22 10:45:34 -04:00
|
|
|
|
depends on IDF_TARGET_ESP32
|
2019-04-10 04:24:50 -04:00
|
|
|
|
prompt "RMII clock mode"
|
|
|
|
|
default ETH_RMII_CLK_INPUT
|
|
|
|
|
help
|
|
|
|
|
Select external or internal RMII clock.
|
|
|
|
|
|
|
|
|
|
config ETH_RMII_CLK_INPUT
|
|
|
|
|
bool "Input RMII clock from external"
|
|
|
|
|
help
|
|
|
|
|
MAC will get RMII clock from outside.
|
|
|
|
|
Note that ESP32 only supports GPIO0 to input the RMII clock.
|
|
|
|
|
|
|
|
|
|
config ETH_RMII_CLK_OUTPUT
|
|
|
|
|
bool "Output RMII clock from internal"
|
|
|
|
|
help
|
|
|
|
|
ESP32 can generate RMII clock by internal APLL.
|
|
|
|
|
This clock can be routed to the external PHY device.
|
|
|
|
|
ESP32 supports to route the RMII clock to GPIO0/16/17.
|
|
|
|
|
endchoice
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # ETH_PHY_INTERFACE_RMII
|
2019-04-10 04:24:50 -04:00
|
|
|
|
|
|
|
|
|
if ETH_RMII_CLK_INPUT
|
|
|
|
|
config ETH_RMII_CLK_IN_GPIO
|
2023-08-22 10:45:34 -04:00
|
|
|
|
depends on IDF_TARGET_ESP32
|
2019-04-10 04:24:50 -04:00
|
|
|
|
int
|
|
|
|
|
range 0 0
|
|
|
|
|
default 0
|
|
|
|
|
help
|
|
|
|
|
ESP32 only supports GPIO0 to input the RMII clock.
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # ETH_RMII_CLK_INPUT
|
2019-04-10 04:24:50 -04:00
|
|
|
|
|
|
|
|
|
if ETH_RMII_CLK_OUTPUT
|
|
|
|
|
config ETH_RMII_CLK_OUTPUT_GPIO0
|
2023-08-22 10:45:34 -04:00
|
|
|
|
depends on IDF_TARGET_ESP32
|
2019-04-10 04:24:50 -04:00
|
|
|
|
bool "Output RMII clock from GPIO0 (Experimental!)"
|
|
|
|
|
default n
|
|
|
|
|
help
|
2024-08-09 09:53:08 -04:00
|
|
|
|
GPIO0 can be set to output a pre-divided PLL clock. Enabling this option will configure
|
|
|
|
|
GPIO0 to output a 50MHz clock. In fact this clock doesn't have directly relationship with
|
|
|
|
|
EMAC peripheral. Sometimes this clock may not work well with your PHY chip.
|
|
|
|
|
WARNING: If you want the Ethernet to work with WiFi, don’t select ESP32 as RMII CLK output
|
|
|
|
|
as it would result in clock instability!
|
2019-04-10 04:24:50 -04:00
|
|
|
|
|
|
|
|
|
if !ETH_RMII_CLK_OUTPUT_GPIO0
|
|
|
|
|
config ETH_RMII_CLK_OUT_GPIO
|
2023-08-22 10:45:34 -04:00
|
|
|
|
depends on IDF_TARGET_ESP32
|
2019-04-10 04:24:50 -04:00
|
|
|
|
int "RMII clock GPIO number"
|
|
|
|
|
range 16 17
|
|
|
|
|
default 17
|
|
|
|
|
help
|
|
|
|
|
Set the GPIO number to output RMII Clock.
|
2024-08-09 09:53:08 -04:00
|
|
|
|
WARNING: If you want the Ethernet to work with WiFi, don’t select ESP32 as RMII CLK output
|
|
|
|
|
as it would result in clock instability!
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # !ETH_RMII_CLK_OUTPUT_GPIO0
|
|
|
|
|
endif # ETH_RMII_CLK_OUTPUT
|
2019-04-10 04:24:50 -04:00
|
|
|
|
|
|
|
|
|
config ETH_DMA_BUFFER_SIZE
|
|
|
|
|
int "Ethernet DMA buffer size (Byte)"
|
|
|
|
|
range 256 1600
|
|
|
|
|
default 512
|
|
|
|
|
help
|
|
|
|
|
Set the size of each buffer used by Ethernet MAC DMA.
|
2023-08-22 10:45:34 -04:00
|
|
|
|
!! Important !! Make sure it is 64B aligned for ESP32P4!
|
2019-04-10 04:24:50 -04:00
|
|
|
|
|
|
|
|
|
config ETH_DMA_RX_BUFFER_NUM
|
|
|
|
|
int "Amount of Ethernet DMA Rx buffers"
|
2019-08-28 04:04:50 -04:00
|
|
|
|
range 3 30
|
2023-08-22 10:45:34 -04:00
|
|
|
|
default 10 if IDF_TARGET_ESP32
|
|
|
|
|
default 20 if IDF_TARGET_ESP32P4 #ESP32P4 has smaller internal Rx FIFO
|
2019-04-10 04:24:50 -04:00
|
|
|
|
help
|
|
|
|
|
Number of DMA receive buffers. Each buffer's size is ETH_DMA_BUFFER_SIZE.
|
|
|
|
|
Larger number of buffers could increase throughput somehow.
|
|
|
|
|
|
|
|
|
|
config ETH_DMA_TX_BUFFER_NUM
|
|
|
|
|
int "Amount of Ethernet DMA Tx buffers"
|
2019-08-28 04:04:50 -04:00
|
|
|
|
range 3 30
|
2019-04-10 04:24:50 -04:00
|
|
|
|
default 10
|
|
|
|
|
help
|
|
|
|
|
Number of DMA transmit buffers. Each buffer's size is ETH_DMA_BUFFER_SIZE.
|
|
|
|
|
Larger number of buffers could increase throughput somehow.
|
2021-01-28 06:10:42 -05:00
|
|
|
|
|
|
|
|
|
if ETH_DMA_RX_BUFFER_NUM > 15
|
|
|
|
|
config ETH_SOFT_FLOW_CONTROL
|
|
|
|
|
bool "Enable software flow control"
|
|
|
|
|
default n
|
|
|
|
|
help
|
|
|
|
|
Ethernet MAC engine on ESP32 doesn't feature a flow control logic.
|
|
|
|
|
The MAC driver can perform a software flow control if you enable this option.
|
|
|
|
|
Note that, if the RX buffer number is small, enabling software flow control will
|
|
|
|
|
cause obvious performance loss.
|
|
|
|
|
endif
|
|
|
|
|
|
2023-09-01 12:27:04 -04:00
|
|
|
|
config ETH_IRAM_OPTIMIZATION
|
|
|
|
|
bool "Enable IRAM optimization"
|
|
|
|
|
default n
|
|
|
|
|
help
|
|
|
|
|
If enabled, functions related to RX/TX are placed into IRAM. It can improve Ethernet throughput.
|
|
|
|
|
If disabled, all functions are placed into FLASH.
|
|
|
|
|
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # ETH_USE_ESP32_EMAC
|
2019-06-25 07:36:56 -04:00
|
|
|
|
|
|
|
|
|
menuconfig ETH_USE_SPI_ETHERNET
|
|
|
|
|
bool "Support SPI to Ethernet Module"
|
|
|
|
|
default y
|
2019-08-13 01:11:46 -04:00
|
|
|
|
select ETH_ENABLED
|
2019-06-25 07:36:56 -04:00
|
|
|
|
help
|
2019-08-13 01:11:46 -04:00
|
|
|
|
ESP-IDF can also support some SPI-Ethernet modules.
|
2019-06-25 07:36:56 -04:00
|
|
|
|
|
|
|
|
|
if ETH_USE_SPI_ETHERNET
|
2019-11-13 23:03:14 -05:00
|
|
|
|
config ETH_SPI_ETHERNET_DM9051
|
2019-06-25 07:36:56 -04:00
|
|
|
|
bool "Use DM9051"
|
|
|
|
|
help
|
|
|
|
|
DM9051 is a fast Ethernet controller with an SPI interface.
|
|
|
|
|
It's also integrated with a 10/100M PHY and MAC.
|
2020-11-05 23:17:18 -05:00
|
|
|
|
Select this to enable DM9051 driver.
|
|
|
|
|
|
|
|
|
|
config ETH_SPI_ETHERNET_W5500
|
|
|
|
|
bool "Use W5500 (MAC RAW)"
|
|
|
|
|
help
|
|
|
|
|
W5500 is a HW TCP/IP embedded Ethernet controller.
|
|
|
|
|
TCP/IP stack, 10/100 Ethernet MAC and PHY are embedded in a single chip.
|
|
|
|
|
However the driver in ESP-IDF only enables the RAW MAC mode,
|
|
|
|
|
making it compatible with the software TCP/IP stack.
|
|
|
|
|
Say yes to enable W5500 driver.
|
2021-02-28 22:39:23 -05:00
|
|
|
|
|
|
|
|
|
config ETH_SPI_ETHERNET_KSZ8851SNL
|
|
|
|
|
bool "Use KSZ8851SNL"
|
|
|
|
|
help
|
|
|
|
|
The KSZ8851SNL is a single-chip Fast Ethernet controller consisting of
|
|
|
|
|
a 10/100 physical layer transceiver (PHY), a MAC, and a Serial Peripheral Interface (SPI).
|
|
|
|
|
Select this to enable KSZ8851SNL driver.
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # ETH_USE_SPI_ETHERNET
|
2019-10-01 12:50:34 -04:00
|
|
|
|
|
|
|
|
|
menuconfig ETH_USE_OPENETH
|
|
|
|
|
bool "Support OpenCores Ethernet MAC (for use with QEMU)"
|
|
|
|
|
default n
|
2019-11-13 23:03:14 -05:00
|
|
|
|
select ETH_ENABLED
|
2019-10-01 12:50:34 -04:00
|
|
|
|
help
|
|
|
|
|
OpenCores Ethernet MAC driver can be used when an ESP-IDF application
|
|
|
|
|
is executed in QEMU. This driver is not supported when running on a
|
|
|
|
|
real chip.
|
|
|
|
|
|
|
|
|
|
if ETH_USE_OPENETH
|
|
|
|
|
config ETH_OPENETH_DMA_RX_BUFFER_NUM
|
|
|
|
|
int "Number of Ethernet DMA Rx buffers"
|
|
|
|
|
range 1 64
|
|
|
|
|
default 4
|
|
|
|
|
help
|
|
|
|
|
Number of DMA receive buffers, each buffer is 1600 bytes.
|
|
|
|
|
|
|
|
|
|
config ETH_OPENETH_DMA_TX_BUFFER_NUM
|
|
|
|
|
int "Number of Ethernet DMA Tx buffers"
|
|
|
|
|
range 1 64
|
|
|
|
|
default 1
|
|
|
|
|
help
|
|
|
|
|
Number of DMA transmit buffers, each buffer is 1600 bytes.
|
2020-11-05 23:17:18 -05:00
|
|
|
|
endif # ETH_USE_OPENETH
|
2021-12-01 03:53:25 -05:00
|
|
|
|
|
|
|
|
|
config ETH_TRANSMIT_MUTEX
|
|
|
|
|
depends on ETH_ENABLED
|
|
|
|
|
bool "Enable Transmit Mutex"
|
|
|
|
|
default n
|
|
|
|
|
help
|
|
|
|
|
Prevents multiple accesses when Ethernet interface is used as shared resource and multiple
|
|
|
|
|
functionalities might try to access it at a time.
|
2019-04-10 04:24:50 -04:00
|
|
|
|
endmenu
|