added sources for ethernet transport

This commit is contained in:
Bogdan Pilyugin 2022-08-16 17:21:20 +02:00
parent 76fd82c44a
commit b09cac62b3
3 changed files with 211 additions and 2 deletions

View File

@ -8,6 +8,7 @@ idf_component_register(
"src/NetTransport.c" "src/NetTransport.c"
"src/WiFiTransport.c" "src/WiFiTransport.c"
"src/GSMTransport.c" "src/GSMTransport.c"
"src/ETHTransport.c"
INCLUDE_DIRS "." "include" "src" INCLUDE_DIRS "." "include" "src"
REQUIRES nvs_flash REQUIRES nvs_flash

208
Kconfig
View File

@ -168,6 +168,214 @@ menu "WebGuiApp configuration"
bool "Default Ethernet switched on" bool "Default Ethernet switched on"
default y 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 endif
endmenu endmenu

View File

@ -19,7 +19,7 @@
* Description: * Description:
*/ */
#include "AppConfiguration.h" #include "SystemConfiguration.h"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "freertos/FreeRTOS.h" #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_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_dns_info_t fldns;
//esp_netif_str_to_ip4(&GetAppConf()->ethSettings.DNSAddr3, (esp_ip4_addr_t*) (&fldns.ip)); //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); esp_netif_set_dns_info(eth_netif_spi[i], ESP_NETIF_DNS_FALLBACK, &fldns);
} }
#endif // CONFIG_ETH_USE_SPI_ETHERNET #endif // CONFIG_ETH_USE_SPI_ETHERNET