I need to use the W5500 with m5unified library and SPI.
Here my initialization code
static esp_netif_t *eth_start(void) {
// Initialize TCP/IP network interface (should be called only once in application)
ESP_ERROR_CHECK(esp_netif_init());
// Create default event loop that running in background
ESP_ERROR_CHECK(esp_event_loop_create_default());
esp_netif_inherent_config_t esp_netif_config = ESP_NETIF_INHERENT_DEFAULT_ETH();
// Warning: the interface desc is used in tests to capture actual connection details (IP, gw, mask)
esp_netif_config.if_desc = "eth0";
esp_netif_config.if_key = "ETH_SPI_0";
esp_netif_config.route_prio = 64;
esp_netif_config_t netif_config = {
.base = &esp_netif_config,
.stack = ESP_NETIF_NETSTACK_DEFAULT_ETH
};
esp_netif_t *netif = esp_netif_new(&netif_config);
assert(netif);
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
mac_config.rx_task_stack_size = 3072;
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();
phy_config.phy_addr = 1;
phy_config.reset_gpio_num = GPIO_NUM_7;
gpio_install_isr_service(0);
spi_device_interface_config_t spi_devcfg = {
.command_bits = 16, //Aggiunto
.address_bits = 8, //Aggiumto
.mode = 0,
.clock_speed_hz = 20 * 1000 * 1000, //Configurare
.spics_io_num = GPIO_NUM_9,
.queue_size = 20
};
eth_w5500_config_t w5500_config = ETH_W5500_DEFAULT_CONFIG(SPI1_HOST, &spi_devcfg);
w5500_config.int_gpio_num = GPIO_NUM_14;
s_mac = esp_eth_mac_new_w5500(&w5500_config, &mac_config);
s_phy = esp_eth_phy_new_w5500(&phy_config);
vTaskDelay(pdMS_TO_TICKS(10));
esp_eth_config_t config = ETH_DEFAULT_CONFIG(s_mac, s_phy);
ESP_ERROR_CHECK(esp_eth_driver_install(&config, &s_eth_handle));
uint8_t eth_mac[6] = {0};
ESP_ERROR_CHECK(esp_read_mac(eth_mac, ESP_MAC_ETH));
ESP_ERROR_CHECK(esp_eth_ioctl(s_eth_handle, ETH_CMD_S_MAC_ADDR, eth_mac));
// attach Ethernet driver to TCP/IP stack
ESP_ERROR_CHECK(esp_netif_attach(netif, esp_eth_new_netif_glue(s_eth_handle)));
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ETHERNET_EVENT_CONNECTED, &on_eth_event, netif));
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, ð_on_got_ip, NULL));
esp_eth_start(s_eth_handle);
esp_netif_init();
return netif;
}
it fail with
E (1214) spi_master: spi_bus_add_device(389): invalid host
E (1214) w5500.mac: w5500_spi_init(87): adding device to SPI host #1 failed
E (1214) w5500.mac: esp_eth_mac_new_w5500(915): SPI initialization failed
E (1234) esp_eth: esp_eth_driver_install(189): can't set eth->mac or eth->phy to null
when execute ESP_ERROR_CHECK(esp_eth_driver_install(&config, &s_eth_handle));
What's wrong?
SPI interface is just initialized by the Display code.
And what about INTn (GPIO14) used by microphone?
I just disable microphone during init
auto cfg = M5.config();
cfg.output_power = false;
cfg.internal_mic = false;
Gio