wenbo2005.online

学习记录 / Arduino 与 ESP

ESP32 与以太网

Arduino 与 ESP2025-09-01

相比于WiFi,有线以太网(RJ45)连接因其稳定性、速度和安全性更胜一筹:

ESP32  <-->   LAN8720  <-->  路由器/交换机

ESP32虽然内置了以太网MAC控制器,这相当于它有了处理以太网数据帧的“大脑”,但它缺少将数字信号转换成可以在网线中传输的模拟信号的PHY芯片。PHY芯片通过一个叫做RMII(精简媒体独立接口)的接口与ESP32的MAC控制器进行通信。

TXD[1:0] 输出 发送数据线。MAC通过这两根线将数据发送给PHY。在每个REF_CLK的上升沿,MAC会在这两根线上送出2位数据。

RXD[1:0] 输入 接收数据线。PHY通过这两根线将从网线上接收到的数据传送给MAC。同样,在每个REF_CLK的上升沿,PHY会送出2位数据。

TX_EN 输出 发送使能。当MAC想要开始发送一帧数据时,将此信号拉高。它标志着TXD[1:0]上的数据是有效的。

CRS_DV 输入 载波侦听/数据有效(这是最重要的接收控制信号)。这是一个复合信号:

1. CRS (Carrier Sense): PHY检测到网络上有数据活动时(无论是发给谁的)就会拉高此信号。

2. DV (Data Valid): 当PHY正在接收一帧目标地址为本机的有效数据时,它会始终保持此信号为高电平,直到帧结束。

RX_ER 输入 接收错误。当PHY在接收数据过程中检测到错误(如编码错误、CRC错误)时,会在保持CRS_DV为高的同时,在一个时钟周期内拉高RX_ER,向MAC报告错误。

MDIO 双向 管理数据输入/输出。这是一个双向串行数据线,用于MAC(主机)通过读写PHY内部的寄存器来配置PHY和读取PHY状态。

MDC 输出 管理数据时钟。为MDIO接口提供同步时钟信号。由MAC产生。

REF_CLK 双向 参考时钟(50MHz)。这是整个RMII通信的同步时钟源,所有信号的时序都以此时钟为基准。(时钟源配置错误是导致ESP32以太网无法连接的最常见原因)

1,MAC提供: ESP32内部生成50MHz时钟并通过此引脚输出给PHY。

2,PHY提供: PHY芯片利用其外部晶振产生时钟并通过此引脚输出给ESP32。