-
可选用 ESP32-Ethernet-Kit 开发板进行测试。
-
ESP32-Ethernet-Kit 开发板默认使用的 PHY 芯片是 IP101 ,可参考 ESP32-Ethernet-Kit V1.2 入门指南 说明。
-
ESP-IDF 目前支持的 EMAC PHY 芯片有 5 种: LAN8720, IP101, DP83848 、KSZ8041 和 RTL8201 ,可参考 例程 esp-idf/examples/ethernet ,在 menuconfig 配置中可配置为其他型号,如下:
-
EMAC PHY
menuconfig -> Example Configuration -> Ethernet PHY Device
-
SPI PHY :
menuconfig→ Example Ethernet Configuration → SPI Ethernet → Ethernet SPI
-
SPI PHY 驱动:esp-eth-drivers
-
以太网的 API 说明可参见 。
-
默认的 PHY 芯片接口对应关系可参考说明 。
-
对应的 PHY 芯片的库文件可参见
其中 phy_w5500.c 、phy_dm9051.c 的驱动库是独立的 SPI PHY 模块,不是配合 EMAC PHY 使用的。但理论上只要以太网驱动初始化正确,是可以使用 esp-idf/examples/ethernet/eth2ap 例程来测试,但我们不建议用 SPI 以太网来运行这个例程。
常见问题
- 用 ESP32 的以太网接口,加 PHY 芯片 DM9162EP 出现板子上电时偶尔会进入下载模式,由于 GPIO0 接了 PHY 芯片的 CLK 引脚,而且这个 RMII 时钟不能修改为其他引脚。 请问有什么方法可以避免这个问题吗?
1. 对于 PHY 芯片时钟的启动,请阅读 “ESP32-Ethernet-Kit V1.2 入门指南” 说明。
2. 作为时钟输入的确只有 GPIO0,如果是时钟输出可以有 IO0 、IO16、 IO17。我们推荐使用时钟输入的方案,可以自行评估使用时钟输出的方案,但时钟输出方案针对某些 PHY 芯片型号可能会出现掉线的问题,一般不推荐。以太网时钟输入和时钟输出方案的软件配置说明参见 此链接。 以太网时钟可以由外部晶振或 PHY 产生。当时钟由 ESP32 GPIO16/17输出时,使用 APLL_CLK 作为时钟源。需要记住的是,不要与具有相同时钟源的 I2S 冲突。3. 针对当前时钟输入的方案出现的偶尔进入下载模式的问题 ,解决方案如下:
【说明】
保证 ESP32 芯片正常启动后再使能 PHY 芯片,但这里有个问题是,有的 PHY 芯片有使能管脚,可以保证 Disable 之后不输出时钟;有的 PHY 芯片使能管脚无法完全关闭输出,可能要靠控制电源或者直接控制 PHY 连接的晶振来断掉时钟输出。为了保证 ESP32 启动之前 PHY 不会输出时钟,一般有下面两种方法:
- 用一个 IO 控制 PHY 的使能。
- 如果 PHY 的使能无法完全关闭时钟输出,那么需要采用有源晶振,用 IO 控制有源晶振。
Q: 使用 ESP32 设计以太网应用,出现如下报错,是什么原因?
E (5556) emac: Timed out waiting for PHY rdgister 0x2 to have value 0x0022 (mask 0xffff). Current value 0xffff
E (6556) emac: Timed out waiting for PHY register 0x3 to have value 0x1430 (mask 0xfff0). Current value 0xffff
- 出现此问题一般是硬件电路有问题,RMII 时钟没有正常供给 PHY 芯片。遇到读 PHY 寄存器失败,大部分情况都是硬件电路的问题。
- 或者软件初始化的问题,但跟硬件设计有关系,因为初始化也是要根据硬件电路来的。
Q: 如何使用 ESP32-S2 来做 以太网应用?
-
ESP32-S2 作以太网的话,只能选择通过 SPI 来驱动 EMAC PHY 的模块,可选择 W5500 或 DM9051 的模块 (SPI PHY 模块是通过 SPI 驱动 EMAC+PHY 芯片)。硬件接线可以参考例程下的 Readme 说明。
-
对应的 SPI + MAC 芯片的驱动库文件可参见
其中 phy_w5500.c 、phy_dm9051.c 的驱动库是独立的 SPI PHY 模块,不是配合 EMAC PHY 使用的。但理论上只要以太网驱动初始化正确,是可以使用 esp-idf/examples/ethernet/eth2ap 例程来测试,但我们不建议用 SPI 以太网来运行这个例程。
Q: ESP32-S2 的 Wi-Fi STA 和以太网能否共存?
- 可以。