From b09cac62b31662e38c6df63de858103eaf5c0575 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 16 Aug 2022 17:21:20 +0200 Subject: [PATCH] added sources for ethernet transport --- CMakeLists.txt | 1 + Kconfig | 208 +++++++++++++++++++++++++ src/{EthTransport.c => ETHTransport.c} | 4 +- 3 files changed, 211 insertions(+), 2 deletions(-) rename src/{EthTransport.c => ETHTransport.c} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f22cede..69f1243 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ idf_component_register( "src/NetTransport.c" "src/WiFiTransport.c" "src/GSMTransport.c" + "src/ETHTransport.c" INCLUDE_DIRS "." "include" "src" REQUIRES nvs_flash diff --git a/Kconfig b/Kconfig index 0230697..53463f1 100644 --- a/Kconfig +++ b/Kconfig @@ -168,6 +168,214 @@ menu "WebGuiApp configuration" bool "Default Ethernet switched on" default y + config GPIO_RANGE_MIN + int + default 0 + + config GPIO_RANGE_MAX + int + default 36 if IDF_TARGET_ESP32 + default 46 if IDF_TARGET_ESP32S2 + default 19 if IDF_TARGET_ESP32C3 + default 48 if IDF_TARGET_ESP32S3 + + config USE_INTERNAL_ETHERNET + depends on IDF_TARGET_ESP32 + select ETH_USE_ESP32_EMAC + bool "Internal EMAC" + help + Use internal Ethernet MAC controller. + + if USE_INTERNAL_ETHERNET + choice ETH_PHY_MODEL + prompt "Ethernet PHY Device" + default ETH_PHY_IP101 + help + Select the Ethernet PHY device to use in the example. + + config ETH_PHY_IP101 + bool "IP101" + help + IP101 is a single port 10/100 MII/RMII/TP/Fiber Fast Ethernet Transceiver. + Goto http://www.icplus.com.tw/pp-IP101G.html for more information about it. + + config ETH_PHY_RTL8201 + bool "RTL8201/SR8201" + help + RTL8201F/SR8201F is a single port 10/100Mb Ethernet Transceiver with auto MDIX. + Goto http://www.corechip-sz.com/productsview.asp?id=22 for more information about it. + + config ETH_PHY_LAN87XX + bool "LAN87xx" + help + Below chips are supported: + LAN8710A LAN8720A LAN8740A/LAN8741ALAN8742A + + config ETH_PHY_DP83848 + bool "DP83848" + help + DP83848 is a single port 10/100Mb/s Ethernet Physical Layer Transceiver. + Goto http://www.ti.com/product/DP83848J for more information about it. + + config ETH_PHY_KSZ8041 + bool "KSZ8041" + help + The KSZ8041 is a single supply 10Base-T/100Base-TX Physical Layer Transceiver. + Goto https://www.microchip.com/wwwproducts/en/KSZ8041 for more information about it. + + config ETH_PHY_KSZ8081 + bool "KSZ8081" + help + The KSZ8081 is a single supply 10Base-T/100Base-TX Physical Layer Transceiver. + Goto https://www.microchip.com/wwwproducts/en/KSZ8081 for more information about it. + endchoice # EXAMPLE_ETH_PHY_MODEL + + config ETH_MDC_GPIO + int "SMI MDC GPIO number" + range GPIO_RANGE_MIN GPIO_RANGE_MAX + default 23 + help + Set the GPIO number used by SMI MDC. + + config ETH_MDIO_GPIO + int "SMI MDIO GPIO number" + range GPIO_RANGE_MIN GPIO_RANGE_MAX + default 18 + help + Set the GPIO number used by SMI MDIO. + + config ETH_PHY_RST_GPIO + int "PHY Reset GPIO number" + range -1 GPIO_RANGE_MAX + default 5 + help + Set the GPIO number used to reset PHY chip. + Set to -1 to disable PHY chip hardware reset. + + config ETH_PHY_ADDR + int "PHY Address" + range 0 31 + default 1 + help + Set PHY address according your board schematic. + endif # USE_INTERNAL_ETHERNET + + config USE_SPI_ETHERNET + bool "SPI Ethernet" + default y + select ETH_USE_SPI_ETHERNET + help + Use external SPI-Ethernet module(s). + + if USE_SPI_ETHERNET + config SPI_ETHERNETS_NUM + int "Number of SPI Ethernet modules to use at a time" + range 1 2 + default 1 + help + Set the number of SPI Ethernet modules you want to use at a time. Multiple SPI modules can be connected + to one SPI interface and can be separately accessed based on state of associated Chip Select (CS). + + choice ETHERNET_TYPE_SPI + prompt "Ethernet SPI" + default W5500 + help + Select which kind of Ethernet will be used in the example. + + config DM9051 + bool "DM9051 Module" + select ETH_SPI_ETHERNET_DM9051 + help + Select external SPI-Ethernet module (DM9051). + + config KSZ8851SNL + bool "KSZ8851SNL Module" + select ETH_SPI_ETHERNET_KSZ8851SNL + help + Select external SPI-Ethernet module (KSZ8851SNL). + + config W5500 + bool "W5500 Module" + select ETH_SPI_ETHERNET_W5500 + help + Select external SPI-Ethernet module (W5500). + endchoice + + + config ETH_SPI_CLOCK_MHZ + int "SPI clock speed (MHz)" + range 5 80 + default 12 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32C3 + default 36 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + help + Set the clock speed (MHz) of SPI interface. + + config ETH_SPI_CS0_GPIO + int "SPI CS0 GPIO number for SPI Ethernet module #1" + range GPIO_RANGE_MIN GPIO_RANGE_MAX + default 15 if IDF_TARGET_ESP32 + default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 + help + Set the GPIO number used by SPI CS0, i.e. Chip Select associated with the first SPI Eth module). + + config ETH_SPI_CS1_GPIO + depends on SPI_ETHERNETS_NUM > 1 + int "SPI CS1 GPIO number for SPI Ethernet module #2" + range GPIO_RANGE_MIN GPIO_RANGE_MAX + default 32 if IDF_TARGET_ESP32 + default 7 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 8 if IDF_TARGET_ESP32C3 + help + Set the GPIO number used by SPI CS1, i.e. Chip Select associated with the second SPI Eth module. + + config ETH_SPI_INT0_GPIO + int "Interrupt GPIO number SPI Ethernet module #1" + range 0 39 + default 4 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 + help + Set the GPIO number used by the first SPI Ethernet module interrupt line. + + config ETH_SPI_INT1_GPIO + depends on SPI_ETHERNETS_NUM > 1 + int "Interrupt GPIO number SPI Ethernet module #2" + range 0 36 + default 33 if IDF_TARGET_ESP32 + default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 + help + Set the GPIO number used by the second SPI Ethernet module interrupt line. + + config ETH_SPI_PHY_RST0_GPIO + int "PHY Reset GPIO number of SPI Ethernet Module #1" + range -1 GPIO_RANGE_MAX + default -1 + help + Set the GPIO number used to reset PHY chip on the first SPI Ethernet module. + Set to -1 to disable PHY chip hardware reset. + + config ETH_SPI_PHY_RST1_GPIO + depends on SPI_ETHERNETS_NUM > 1 + int "PHY Reset GPIO number of SPI Ethernet Module #2" + range -1 GPIO_RANGE_MAX + default -1 + help + Set the GPIO number used to reset PHY chip on the second SPI Ethernet module. + Set to -1 to disable PHY chip hardware reset. + + config ETH_SPI_PHY_ADDR0 + int "PHY Address of SPI Ethernet Module #1" + range 0 31 + default 1 + help + Set the first SPI Ethernet module PHY address according your board schematic. + + config ETH_SPI_PHY_ADDR1 + depends on SPI_ETHERNETS_NUM > 1 + int "PHY Address of SPI Ethernet Module #2" + range 0 31 + default 1 + help + Set the second SPI Ethernet module PHY address according your board schematic. + endif # USE_SPI_ETHERNET endif endmenu diff --git a/src/EthTransport.c b/src/ETHTransport.c similarity index 99% rename from src/EthTransport.c rename to src/ETHTransport.c index 7068acb..a00389f 100644 --- a/src/EthTransport.c +++ b/src/ETHTransport.c @@ -19,7 +19,7 @@ * Description: */ -#include "AppConfiguration.h" +#include "SystemConfiguration.h" #include #include #include "freertos/FreeRTOS.h" @@ -308,7 +308,7 @@ static void eth_init(void *pvParameter) ESP_ERROR_CHECK(esp_netif_attach(eth_netif_spi[i], esp_eth_new_netif_glue(eth_handle_spi[i]))); esp_netif_dns_info_t fldns; //esp_netif_str_to_ip4(&GetAppConf()->ethSettings.DNSAddr3, (esp_ip4_addr_t*) (&fldns.ip)); - memcpy(&fldns.ip, &GetAppConf()->ethSettings.DNSAddr3, sizeof(esp_ip4_addr_t)); + memcpy(&fldns.ip, &GetSysConf()->ethSettings.DNSAddr3, sizeof(esp_ip4_addr_t)); esp_netif_set_dns_info(eth_netif_spi[i], ESP_NETIF_DNS_FALLBACK, &fldns); } #endif // CONFIG_ETH_USE_SPI_ETHERNET