mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-22 17:47:04 +08:00
feat(example): modify for esp8266
This commit is contained in:
@ -1,20 +1,4 @@
|
|||||||
menu "Example Connection Configuration"
|
menu "Example Connection Configuration"
|
||||||
choice EXAMPLE_CONNECT_INTERFACE
|
|
||||||
prompt "Connect using"
|
|
||||||
default EXAMPLE_CONNECT_WIFI
|
|
||||||
help
|
|
||||||
Protocol examples can use Wi-Fi or Ethernet to connect to the network.
|
|
||||||
Choose which interface to use.
|
|
||||||
|
|
||||||
config EXAMPLE_CONNECT_WIFI
|
|
||||||
bool "Wi-Fi"
|
|
||||||
|
|
||||||
config EXAMPLE_CONNECT_ETHERNET
|
|
||||||
bool "Ethernet"
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
if EXAMPLE_CONNECT_WIFI
|
|
||||||
config EXAMPLE_WIFI_SSID
|
config EXAMPLE_WIFI_SSID
|
||||||
string "WiFi SSID"
|
string "WiFi SSID"
|
||||||
default "myssid"
|
default "myssid"
|
||||||
@ -27,124 +11,11 @@ menu "Example Connection Configuration"
|
|||||||
help
|
help
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
WiFi password (WPA or WPA2) for the example to use.
|
||||||
Can be left blank if the network has no security set.
|
Can be left blank if the network has no security set.
|
||||||
endif
|
|
||||||
|
|
||||||
if EXAMPLE_CONNECT_ETHERNET
|
|
||||||
choice EXAMPLE_USE_ETHERNET
|
|
||||||
prompt "Ethernet Type"
|
|
||||||
default EXAMPLE_USE_INTERNAL_ETHERNET if IDF_TARGET_ESP32
|
|
||||||
default EXAMPLE_USE_SPI_ETHERNET if !IDF_TARGET_ESP32
|
|
||||||
help
|
|
||||||
Select which kind of Ethernet will be used in the example.
|
|
||||||
|
|
||||||
config EXAMPLE_USE_INTERNAL_ETHERNET
|
|
||||||
depends on IDF_TARGET_ESP32
|
|
||||||
select ETH_USE_ESP32_EMAC
|
|
||||||
bool "Internal EMAC"
|
|
||||||
help
|
|
||||||
Select internal Ethernet MAC controller.
|
|
||||||
|
|
||||||
config EXAMPLE_USE_SPI_ETHERNET
|
|
||||||
bool "SPI Ethernet Module"
|
|
||||||
select ETH_USE_SPI_ETHERNET
|
|
||||||
help
|
|
||||||
Select external SPI-Ethernet module.
|
|
||||||
|
|
||||||
config EXAMPLE_USE_OPENETH
|
|
||||||
bool "OpenCores Ethernet MAC (EXPERIMENTAL)"
|
|
||||||
select ETH_USE_OPENETH
|
|
||||||
help
|
|
||||||
When this option is enabled, the example is built with support for
|
|
||||||
OpenCores Ethernet MAC, which allows testing the example in QEMU.
|
|
||||||
Note that this option is used for internal testing purposes, and
|
|
||||||
not officially supported. Examples built with this option enabled
|
|
||||||
will not run on a real ESP32 chip.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
if EXAMPLE_USE_INTERNAL_ETHERNET
|
|
||||||
choice EXAMPLE_ETH_PHY_MODEL
|
|
||||||
prompt "Ethernet PHY Device"
|
|
||||||
default EXAMPLE_ETH_PHY_IP101
|
|
||||||
help
|
|
||||||
Select the Ethernet PHY device to use in the example.
|
|
||||||
|
|
||||||
config EXAMPLE_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 EXAMPLE_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 EXAMPLE_ETH_PHY_LAN8720
|
|
||||||
bool "LAN8720"
|
|
||||||
help
|
|
||||||
LAN8720A is a small footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX Support.
|
|
||||||
Goto https://www.microchip.com/LAN8720A for more information about it.
|
|
||||||
|
|
||||||
config EXAMPLE_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.
|
|
||||||
endchoice
|
|
||||||
endif
|
|
||||||
|
|
||||||
if EXAMPLE_USE_SPI_ETHERNET
|
|
||||||
config EXAMPLE_ETH_SPI_HOST
|
|
||||||
int "SPI Host Number"
|
|
||||||
range 0 2
|
|
||||||
default 1
|
|
||||||
help
|
|
||||||
Set the SPI host used to communicate with DM9051.
|
|
||||||
|
|
||||||
config EXAMPLE_ETH_SCLK_GPIO
|
|
||||||
int "SPI SCLK GPIO number"
|
|
||||||
range 0 33
|
|
||||||
default 19
|
|
||||||
help
|
|
||||||
Set the GPIO number used by SPI SCLK.
|
|
||||||
|
|
||||||
config EXAMPLE_ETH_MOSI_GPIO
|
|
||||||
int "SPI MOSI GPIO number"
|
|
||||||
range 0 33
|
|
||||||
default 23
|
|
||||||
help
|
|
||||||
Set the GPIO number used by SPI MOSI.
|
|
||||||
|
|
||||||
config EXAMPLE_ETH_MISO_GPIO
|
|
||||||
int "SPI MISO GPIO number"
|
|
||||||
range 0 33
|
|
||||||
default 25
|
|
||||||
help
|
|
||||||
Set the GPIO number used by SPI MISO.
|
|
||||||
|
|
||||||
config EXAMPLE_ETH_CS_GPIO
|
|
||||||
int "SPI CS GPIO number"
|
|
||||||
range 0 33
|
|
||||||
default 22
|
|
||||||
help
|
|
||||||
Set the GPIO number used by SPI CS.
|
|
||||||
|
|
||||||
config EXAMPLE_ETH_SPI_CLOCK_MHZ
|
|
||||||
int "SPI clock speed (MHz)"
|
|
||||||
range 20 80
|
|
||||||
default 20
|
|
||||||
help
|
|
||||||
Set the clock speed (MHz) of SPI interface.
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
config EXAMPLE_CONNECT_IPV6
|
config EXAMPLE_CONNECT_IPV6
|
||||||
bool "Obtain IPv6 link-local address"
|
bool "Obtain IPv6 link-local address"
|
||||||
depends on IDF_TARGET_ESP32
|
default n
|
||||||
# ToDo: remove once IPV6 is supported on esp32s2
|
select LWIP_IPV6
|
||||||
default y
|
|
||||||
help
|
help
|
||||||
By default, examples will wait until IPv4 and IPv6 addresses are obtained.
|
By default, examples will wait until IPv4 and IPv6 addresses are obtained.
|
||||||
Disable this option if the network does not support IPv6.
|
Disable this option if the network does not support IPv6.
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "esp_event.h"
|
#include "esp_event.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#if CONFIG_EXAMPLE_CONNECT_ETHERNET
|
|
||||||
#include "esp_eth.h"
|
|
||||||
#endif
|
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
|
#include "esp_event_loop.h"
|
||||||
#include "tcpip_adapter.h"
|
#include "tcpip_adapter.h"
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
@ -42,40 +40,85 @@ static ip6_addr_t s_ipv6_addr;
|
|||||||
|
|
||||||
static const char *TAG = "example_connect";
|
static const char *TAG = "example_connect";
|
||||||
|
|
||||||
/* set up connection, Wi-Fi or Ethernet */
|
static esp_err_t event_handler(void *ctx, system_event_t *event)
|
||||||
static void start(void);
|
|
||||||
|
|
||||||
/* tear down connection, release resources */
|
|
||||||
static void stop(void);
|
|
||||||
|
|
||||||
static void on_got_ip(void *arg, esp_event_base_t event_base,
|
|
||||||
int32_t event_id, void *event_data)
|
|
||||||
{
|
{
|
||||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
|
/* For accessing reason codes in case of disconnection */
|
||||||
memcpy(&s_ip_addr, &event->ip_info.ip, sizeof(s_ip_addr));
|
system_event_info_t *info = &event->event_info;
|
||||||
xEventGroupSetBits(s_connect_event_group, GOT_IPV4_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
switch (event->event_id) {
|
||||||
|
case SYSTEM_EVENT_STA_START:
|
||||||
|
esp_wifi_connect();
|
||||||
|
break;
|
||||||
|
case SYSTEM_EVENT_STA_GOT_IP:
|
||||||
|
memcpy(&s_ip_addr, &event->event_info.got_ip.ip_info.ip, sizeof(s_ip_addr));
|
||||||
|
xEventGroupSetBits(s_connect_event_group, GOT_IPV4_BIT);;
|
||||||
|
break;
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
||||||
|
case SYSTEM_EVENT_STA_CONNECTED:
|
||||||
static void on_got_ipv6(void *arg, esp_event_base_t event_base,
|
tcpip_adapter_create_ip6_linklocal(TCPIP_ADAPTER_IF_STA);
|
||||||
int32_t event_id, void *event_data)
|
break;
|
||||||
{
|
case SYSTEM_EVENT_AP_STA_GOT_IP6:
|
||||||
ip_event_got_ip6_t *event = (ip_event_got_ip6_t *)event_data;
|
memcpy(&s_ipv6_addr, &event->event_info.got_ip6.ip6_info, sizeof(s_ipv6_addr));
|
||||||
memcpy(&s_ipv6_addr, &event->ip6_info.ip, sizeof(s_ipv6_addr));
|
|
||||||
xEventGroupSetBits(s_connect_event_group, GOT_IPV6_BIT);
|
xEventGroupSetBits(s_connect_event_group, GOT_IPV6_BIT);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case SYSTEM_EVENT_STA_DISCONNECTED:
|
||||||
|
ESP_LOGE(TAG, "Disconnect reason : %d", info->disconnected.reason);
|
||||||
|
if (info->disconnected.reason == WIFI_REASON_BASIC_RATE_NOT_SUPPORT) {
|
||||||
|
/*Switch to 802.11 bgn mode */
|
||||||
|
esp_wifi_set_protocol(ESP_IF_WIFI_STA, WIFI_PROTOCAL_11B | WIFI_PROTOCAL_11G | WIFI_PROTOCAL_11N);
|
||||||
|
}
|
||||||
|
esp_wifi_connect();
|
||||||
|
xEventGroupClearBits(s_connect_event_group, GOT_IPV4_BIT);
|
||||||
|
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
||||||
|
xEventGroupClearBits(s_connect_event_group, GOT_IPV6_BIT);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_IPV6
|
static void start(void)
|
||||||
|
{
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));
|
||||||
|
|
||||||
|
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
||||||
|
wifi_config_t wifi_config = {
|
||||||
|
.sta = {
|
||||||
|
.ssid = CONFIG_EXAMPLE_WIFI_SSID,
|
||||||
|
.password = CONFIG_EXAMPLE_WIFI_PASSWORD,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ESP_LOGI(TAG, "Connecting to %s...", wifi_config.sta.ssid);
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_start());
|
||||||
|
s_connection_name = CONFIG_EXAMPLE_WIFI_SSID;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stop(void)
|
||||||
|
{
|
||||||
|
esp_err_t err = esp_wifi_stop();
|
||||||
|
if (err == ESP_ERR_WIFI_NOT_INIT) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_deinit());
|
||||||
|
}
|
||||||
|
|
||||||
esp_err_t example_connect(void)
|
esp_err_t example_connect(void)
|
||||||
{
|
{
|
||||||
if (s_connect_event_group != NULL) {
|
if (s_connect_event_group != NULL) {
|
||||||
return ESP_ERR_INVALID_STATE;
|
return ESP_ERR_INVALID_STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
s_connect_event_group = xEventGroupCreate();
|
s_connect_event_group = xEventGroupCreate();
|
||||||
start();
|
start();
|
||||||
ESP_ERROR_CHECK(esp_register_shutdown_handler(&stop));
|
|
||||||
xEventGroupWaitBits(s_connect_event_group, CONNECTED_BITS, true, true, portMAX_DELAY);
|
xEventGroupWaitBits(s_connect_event_group, CONNECTED_BITS, true, true, portMAX_DELAY);
|
||||||
ESP_LOGI(TAG, "Connected to %s", s_connection_name);
|
ESP_LOGI(TAG, "Connected to %s", s_connection_name);
|
||||||
ESP_LOGI(TAG, "IPv4 address: " IPSTR, IP2STR(&s_ip_addr));
|
ESP_LOGI(TAG, "IPv4 address: " IPSTR, IP2STR(&s_ip_addr));
|
||||||
@ -97,164 +140,3 @@ esp_err_t example_disconnect(void)
|
|||||||
s_connection_name = NULL;
|
s_connection_name = NULL;
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_WIFI
|
|
||||||
|
|
||||||
static void on_wifi_disconnect(void *arg, esp_event_base_t event_base,
|
|
||||||
int32_t event_id, void *event_data)
|
|
||||||
{
|
|
||||||
ESP_LOGI(TAG, "Wi-Fi disconnected, trying to reconnect...");
|
|
||||||
esp_err_t err = esp_wifi_connect();
|
|
||||||
if (err == ESP_ERR_WIFI_NOT_STARTED) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ESP_ERROR_CHECK(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
|
|
||||||
static void on_wifi_connect(void *arg, esp_event_base_t event_base,
|
|
||||||
int32_t event_id, void *event_data)
|
|
||||||
{
|
|
||||||
tcpip_adapter_create_ip6_linklocal(TCPIP_ADAPTER_IF_STA);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
|
|
||||||
static void start(void)
|
|
||||||
{
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &on_wifi_disconnect, NULL));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &on_got_ip, NULL));
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, &on_wifi_connect, NULL));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_GOT_IP6, &on_got_ipv6, NULL));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_EXAMPLE_WIFI_SSID,
|
|
||||||
.password = CONFIG_EXAMPLE_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_LOGI(TAG, "Connecting to %s...", wifi_config.sta.ssid);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_connect());
|
|
||||||
s_connection_name = CONFIG_EXAMPLE_WIFI_SSID;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void stop(void)
|
|
||||||
{
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &on_wifi_disconnect));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &on_got_ip));
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_GOT_IP6, &on_got_ipv6));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, &on_wifi_connect));
|
|
||||||
#endif
|
|
||||||
esp_err_t err = esp_wifi_stop();
|
|
||||||
if (err == ESP_ERR_WIFI_NOT_INIT) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ESP_ERROR_CHECK(err);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_deinit());
|
|
||||||
}
|
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_WIFI
|
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_ETHERNET
|
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
|
|
||||||
/** Event handler for Ethernet events */
|
|
||||||
static void on_eth_event(void *arg, esp_event_base_t event_base,
|
|
||||||
int32_t event_id, void *event_data)
|
|
||||||
{
|
|
||||||
switch (event_id) {
|
|
||||||
case ETHERNET_EVENT_CONNECTED:
|
|
||||||
ESP_LOGI(TAG, "Ethernet Link Up");
|
|
||||||
tcpip_adapter_create_ip6_linklocal(TCPIP_ADAPTER_IF_ETH);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
|
|
||||||
static esp_eth_handle_t s_eth_handle = NULL;
|
|
||||||
static esp_eth_mac_t *s_mac = NULL;
|
|
||||||
static esp_eth_phy_t *s_phy = NULL;
|
|
||||||
|
|
||||||
static void start(void)
|
|
||||||
{
|
|
||||||
ESP_ERROR_CHECK(tcpip_adapter_set_default_eth_handlers());
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &on_got_ip, NULL));
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ETHERNET_EVENT_CONNECTED, &on_eth_event, NULL));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_GOT_IP6, &on_got_ipv6, NULL));
|
|
||||||
#endif
|
|
||||||
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
|
|
||||||
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();
|
|
||||||
#if CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET
|
|
||||||
s_mac = esp_eth_mac_new_esp32(&mac_config);
|
|
||||||
#if CONFIG_EXAMPLE_ETH_PHY_IP101
|
|
||||||
s_phy = esp_eth_phy_new_ip101(&phy_config);
|
|
||||||
#elif CONFIG_EXAMPLE_ETH_PHY_RTL8201
|
|
||||||
s_phy = esp_eth_phy_new_rtl8201(&phy_config);
|
|
||||||
#elif CONFIG_EXAMPLE_ETH_PHY_LAN8720
|
|
||||||
s_phy = esp_eth_phy_new_lan8720(&phy_config);
|
|
||||||
#elif CONFIG_EXAMPLE_ETH_PHY_DP83848
|
|
||||||
s_phy = esp_eth_phy_new_dp83848(&phy_config);
|
|
||||||
#endif
|
|
||||||
#elif CONFIG_EXAMPLE_USE_SPI_ETHERNET
|
|
||||||
gpio_install_isr_service(0);
|
|
||||||
spi_device_handle_t spi_handle = NULL;
|
|
||||||
spi_bus_config_t buscfg = {
|
|
||||||
.miso_io_num = CONFIG_EXAMPLE_ETH_MISO_GPIO,
|
|
||||||
.mosi_io_num = CONFIG_EXAMPLE_ETH_MOSI_GPIO,
|
|
||||||
.sclk_io_num = CONFIG_EXAMPLE_ETH_SCLK_GPIO,
|
|
||||||
.quadwp_io_num = -1,
|
|
||||||
.quadhd_io_num = -1,
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(spi_bus_initialize(CONFIG_EXAMPLE_ETH_SPI_HOST, &buscfg, 1));
|
|
||||||
spi_device_interface_config_t devcfg = {
|
|
||||||
.command_bits = 1,
|
|
||||||
.address_bits = 7,
|
|
||||||
.mode = 0,
|
|
||||||
.clock_speed_hz = CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ * 1000 * 1000,
|
|
||||||
.spics_io_num = CONFIG_EXAMPLE_ETH_CS_GPIO,
|
|
||||||
.queue_size = 20
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(spi_bus_add_device(CONFIG_EXAMPLE_ETH_SPI_HOST, &devcfg, &spi_handle));
|
|
||||||
/* dm9051 ethernet driver is based on spi driver */
|
|
||||||
eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
|
|
||||||
s_mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
|
|
||||||
s_phy = esp_eth_phy_new_dm9051(&phy_config);
|
|
||||||
#elif CONFIG_EXAMPLE_USE_OPENETH
|
|
||||||
phy_config.autonego_timeout_ms = 100;
|
|
||||||
s_mac = esp_eth_mac_new_openeth(&mac_config);
|
|
||||||
s_phy = esp_eth_phy_new_dp83848(&phy_config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
esp_eth_config_t config = ETH_DEFAULT_CONFIG(s_mac, s_phy);
|
|
||||||
ESP_ERROR_CHECK(esp_eth_driver_install(&config, &s_eth_handle));
|
|
||||||
s_connection_name = "Ethernet";
|
|
||||||
}
|
|
||||||
|
|
||||||
static void stop(void)
|
|
||||||
{
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_ETH_GOT_IP, &on_got_ip));
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_GOT_IP6, &on_got_ipv6));
|
|
||||||
ESP_ERROR_CHECK(esp_event_handler_unregister(ETH_EVENT, ETHERNET_EVENT_CONNECTED, &on_eth_event));
|
|
||||||
#endif
|
|
||||||
ESP_ERROR_CHECK(esp_eth_driver_uninstall(s_eth_handle));
|
|
||||||
ESP_ERROR_CHECK(s_phy->del(s_phy));
|
|
||||||
ESP_ERROR_CHECK(s_mac->del(s_mac));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_ETHERNET
|
|
||||||
|
@ -16,13 +16,7 @@ extern "C" {
|
|||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "tcpip_adapter.h"
|
#include "tcpip_adapter.h"
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_ETHERNET
|
|
||||||
#define EXAMPLE_INTERFACE TCPIP_ADAPTER_IF_ETH
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_EXAMPLE_CONNECT_WIFI
|
|
||||||
#define EXAMPLE_INTERFACE TCPIP_ADAPTER_IF_STA
|
#define EXAMPLE_INTERFACE TCPIP_ADAPTER_IF_STA
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Configure Wi-Fi or Ethernet, connect, wait for IP
|
* @brief Configure Wi-Fi or Ethernet, connect, wait for IP
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "driver/uart.h"
|
#include "driver/uart.h"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_USING_ESP_VFS
|
||||||
esp_err_t example_configure_stdin_stdout(void)
|
esp_err_t example_configure_stdin_stdout(void)
|
||||||
{
|
{
|
||||||
// Initialize VFS & UART so we can use std::cout/cin
|
// Initialize VFS & UART so we can use std::cout/cin
|
||||||
@ -28,3 +29,4 @@ esp_err_t example_configure_stdin_stdout(void)
|
|||||||
esp_vfs_dev_uart_set_tx_line_endings(ESP_LINE_ENDINGS_CRLF);
|
esp_vfs_dev_uart_set_tx_line_endings(ESP_LINE_ENDINGS_CRLF);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
Reference in New Issue
Block a user