问题描述
当我尝试在Olimex ESP32-PoE上初始化并开始使用以太网时,遇到以下错误消息:
E (1039) emac: Timed out waiting for PHY register 0x2 to have value 0x0007(mask 0xffff). Current value 0x0000
E (2040) emac: Timed out waiting for PHY register 0x3 to have value 0xc0f0(mask 0xfff0). Current value 0x0000
E (2041) emac: Initialise PHY device Timeout
[E][ETH.cpp:101] begin(): esp_eth_enable error: -1
我使用的平台/框架/工具是:PlatformIO,Arduino框架,Visual Studio代码编辑器。
代码段:
// Ethernet port parameters
// ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720.
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT
// Pin number of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source).
#define ETH_POWER_PIN -1
// Type of the Ethernet PHY (LAN8720 or TLK110).
#define ETH_TYPE ETH_PHY_LAN8720
// I²C-address of Ethernet PHY (0 or 1 for LAN8720,31 for TLK110).
#define ETH_ADDR 0
// Pin number of the I²C clock signal for the Ethernet PHY.
#define ETH_MDC_PIN 23
// Pin number of the I²C IO signal for the Ethernet PHY.
#define ETH_Mdio_PIN 18
#include <Arduino.h>
#include <ETH.h>
#include <WiFi.h>
void WiFiEvent(WiFiEvent_t event)
{
switch (event)
{
case SYstem_EVENT_ETH_START:
Serial.println("ETH Started");
//set eth hostname here
ETH.setHostname("esp32-ethernet");
break;
case SYstem_EVENT_ETH_CONNECTED:
Serial.println("ETH Connected");
break;
case SYstem_EVENT_ETH_GOT_IP:
Serial.print("ETH MAC: ");
Serial.print(ETH.macAddress());
Serial.print(",IPv4: ");
Serial.print(ETH.localIP());
if (ETH.fullDuplex())
{
Serial.print(",FULL_DUPLEX");
}
Serial.print(",");
Serial.print(ETH.linkSpeed());
Serial.println("Mbps");
eth_connected = true;
break;
case SYstem_EVENT_ETH_disCONNECTED:
Serial.println("ETH disconnected");
eth_connected = false;
break;
case SYstem_EVENT_ETH_STOP:
Serial.println("ETH Stopped");
eth_connected = false;
break;
default:
break;
}
}
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.println();
// Set on connected event
WiFi.onEvent(WiFiEvent);
// Init Ethernet
ETH.begin(ETH_ADDR,ETH_POWER_PIN,ETH_MDC_PIN,ETH_Mdio_PIN,ETH_TYPE,ETH_CLK_MODE);
Serial.print("Waiting for Ethernet... ");
// Wait for connected status
while(!eth_connected) {
Serial.print(".");
delay(500);
}
Serial.println("Ethernet connected! ");
}
该板无法连接到Internet,并且LAN电缆已与其他板(例如“ Olimex ESP32-EVB”)进行了测试,并且可以正常工作,因此可能不是LAN电缆问题。 任何人都可以帮助指出任何错误的部分吗?非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)