原理图设计

[English]

ESP32 系列芯片的核心电路只需要 20 个左右的电阻电容电感和 1 个无源晶振,以及 1 个 SPI flash。为了能够更好地保证 ESP32 系列芯片的工作性能,本章将详细介绍 ESP32 系列芯片的原理图设计。

下图所示为 ESP32 的核心电路参考设计,您可以将它作为您的原理图设计的基础。

ESP32 系列芯片参考设计原理图

ESP32 系列芯片参考设计原理图

注意图 ESP32 系列芯片参考设计原理图 显示的是四线、3.3 V、封装外 flash/PSRAM 的连接方式。PSRAM 的 SCLK 可以和 flash 共用时钟线即 SD_CLK 或 GPIO17。

ESP32 内封四线 3.3 V Flash 核心电路图

ESP32 内封四线 3.3 V Flash 核心电路图

ESP32 系列芯片的核心电路图的设计有以下重要组成部分:

下文将分别对这些部分进行描述。

电源

电源电路设计的通用要点有:

  • 使用单电源供电时,建议供给 ESP32 的电源电压为 3.3 V,最大输出电流至少 500 mA。

  • 建议在总电源入口处添加 ESD 保护器件。

有关电源管脚的更多信息,请查看 ESP32 系列芯片技术规格书 > 章节 电源

数字电源

ESP32 的 管脚 37 VDD3P3_CPU 为数字电源管脚,工作电压范围为 1.8 V ~ 3.6 V。建议在电路中靠近数字电源管脚处添加 0.1 μF 电容。

管脚 VDD_SDIO 可配置输出 1.8 V 或 3.3 V(默认)给外部电路使用。

  • 当 VDD_SDIO 处于 1.8 V 模式时,由 ESP32 内部的 LDO 供电,能提供的最大电流为 40 mA,输出电压范围为 1.65 V ~ 2.0 V。建议在 VDD_SDIO 管脚处添加 2 kΩ 对地电阻及 4.7 μF 对地电容,如图 VDD_SDIO 电源管脚电路 (1.8 V) 所示。

  • 当 VDD_SDIO 处于 3.3 V 模式时,由 VDD3P3_RTC 通过芯片内部的约 6 Ω 电阻后供电。因此 VDD_SDIO 相对 VDD3P3_RTC 会有一定电压降。建议在 VDD_SDIO 靠近管脚处添加 1 μF 滤波电容,如图 VDD_SDIO 电源管脚电路 (3.3 V) 所示。

注意

当使用 VDD_SDIO 给封装内或封装外的 3.3 V flash/PSRAM 供电时,需要满足 flash/PSRAM 的工作电压要求,一般应保证电压在 3.0 V 以上。

VDD_SDIO 电源管脚电路 (1.8 V)

VDD_SDIO 电源管脚电路 (1.8 V)

VDD_SDIO 电源管脚电路 (3.3 V)

VDD_SDIO 电源管脚电路 (3.3 V)

VDD_SDIO 也可以连接到外部电源,由外部电源输入供电,如图 VDD_SDIO 电源管脚电路(外部电源供电) 所示。

VDD_SDIO 电源管脚电路(外部电源供电)

VDD_SDIO 电源管脚电路(外部电源供电)

模拟电源

ESP32 的 VDDA 和 VDD3P3 管脚 为模拟电源管脚,工作电压范围为 2.3 V ~ 3.6 V。

对于 VDD3P3,当 ESP32 工作在 TX 时,瞬间电流会加大,往往引起电源的轨道塌陷。所以在电路设计时建议在 VDD3P3 的电源走线上增加一个 10 μF 电容,该电容可与 1 μF 电容搭配使用。

另外,在靠近 VDD3P3 处还需添加 LC 滤波电路,用于抑制高频谐波,同时请注意该电感的额定电流最好在 500 mA 及以上。

其余电源管脚请参考图 ESP32 系列芯片模拟电源电路图 放置相应的去耦电容。

ESP32 系列芯片模拟电源电路图

ESP32 系列芯片模拟电源电路图

RTC 电源

ESP32 的 VDD3P3_RTC 管脚为 RTC 电源管脚,建议在电路中靠近该电源管脚处添加 0.1 μF 去耦电容。

请注意该电源不可以作为备用电源单独供电。

RTC 电源电路图如图 ESP32 系列芯片 RTC 电源电路图 所示。

ESP32 系列芯片 RTC 电源电路图

ESP32 系列芯片 RTC 电源电路图

上电时序与复位

ESP32 的 CHIP_PU 管脚为高电平时使能芯片,为低电平时复位芯片。

当 ESP32 使用 3.3 V 系统电源供电时,电源轨需要一些时间才能稳定,之后才能拉高 CHIP_PU,激活芯片。因此,CHIP_PU 管脚上电要晚于系统电源 3.3 V 上电。

复位芯片时,复位电压 VIL_nRST 范围应为 (–0.3 ~ 0.25 × VDD) V。为防止外界干扰引起重启,CHIP_PU 管脚引线需尽量短一些。

ESP32 系列芯片上电和复位时序图 为 ESP32 系列芯片的上电、复位时序图。

ESP32 系列芯片上电和复位时序图

ESP32 系列芯片上电和复位时序图

上电和复位时序参数说明见表 上电和复位时序参数说明

上电和复位时序参数说明

参数

说明

最小值 (µs)

tSTBL

CHIP_PU 管脚上电晚于电源管脚上电的延时时间

50

tRST

CHIP_PU 电平低于 VIL_nRST 从而复位芯片的时间

50

注意

  • CHIP_PU 管脚不可浮空。

  • 为确保芯片上电和复位时序正常,一般采用的方式是在 CHIP_PU 管脚处增加 RC 延迟电路。RC 通常建议为 R = 10 kΩ,C = 1 μF,但具体数值仍需根据实际的电源特性配合芯片的上电、复位时序进行调整。

  • 如果应用中存在以下场景:

    • 电源缓慢上升或下降,例如电池充电;

    • 需要频繁上下电的操作;

    • 供电电源不稳定,例如光伏发电等。

    此时,仅仅通过 RC 电路不一定能满足时序要求,有概率会导致芯片无法进入正常的工作模式。此时,需要增加一些额外的电路设计,比如:

    • 增加复位芯片或者看门狗芯片,通常阈值为 3.0 V 左右;

    • 通过按键或主控实现复位等。

Flash 及 PSRAM

ESP32 系列芯片需配合封装内或封装外 flash 一起使用,用于存储应用的固件和数据。封装内 PSRAM 和封装外 RAM 非必需。

封装内 Flash 及 PSRAM

下面的表格列出了 ESP32 与封装内 flash/PSRAM 的管脚对应关系。请注意这些芯片管脚最多连接一个 flash 和一个 PSRAM,也即当封装内仅有 flash 时,被 flash 占用的管脚只能再连接一个 PSRAM,不能用于其他功能;封装内仅有 PSRAM 时,被 PSRAM 占用的管脚只能再连接一个 flash;封装内有 flash 和 PSRAM 时,被占用的管脚不能再连接 flash 或 PSRAM。

芯片与封装内 Flash 的管脚对应关系

ESP32-U4WDH

封装内 Flash (4 MB)

SD_DATA_1

IO0/DI

GPIO17

IO1/DO

SD_DATA_0

IO2/WP#

SD_CMD

IO3/HOLD#

SD_CLK

CLK

GPIO16

CS#

GND

VSS

VDD_SDIO

VDD

芯片与封装内 PSRAM 的管脚对应关系

ESP32-D0WDR2-V3

封装内 PSRAM (2 MB)

SD_DATA_1

SIO0/SI

SD_DATA_0

SIO1/SO

SD_DATA_3

SIO2

SD_DATA_2

SIO3

SD_CLK

SCLK

GPIO16

CE#

GND

VSS

VDD_SDIO

VDD

封装外 Flash 及 PSRAM

ESP32 支持最大 16 MB 封装外 flash 和 8 MB 封装外 RAM。 如果使用 VDD_SDIO 输出电压供电,设计时请注意需根据设置的 VDD_SDIO 模式 (1.8 V/3.3 V) 选择合适的封装外 flash/PSRAM。另外,建议 SPI 通信线上预留串联电阻(初始可使用 0 Ω),主要作用为降低驱动电流,减小对射频的干扰,调节时序,提升抗干扰能力等。

时钟源

ESP32 外部可以有两个时钟源:

外置主晶振时钟源(必选)

目前 ESP32 系列芯片固件仅支持 40 MHz 晶振。

ESP32 的无源晶振部分电路如图 ESP32 系列芯片无源晶振电路图。注意,选用的无源晶振自身精度需在 ±10 ppm。

ESP32 系列芯片无源晶振电路图

ESP32 系列芯片无源晶振电路图

XTAL_P 时钟走线上请放置一个串联元器件,可以是电阻或者电感,初始建议使用 24 nH,用来减弱晶振高频谐波对射频性能的影响,最终值需要通过测试后确认。

外部匹配电容 C1 和 C2 的初始值可参考以下公式来决定:

\[C_L = \frac{C1 \times C2} {C1+C2} + C_{stray}\]

其中 CL (负载电容)的值可查看所选择晶振的规格书,Cstray 的值为 PCB 的寄生电容。C1 和 C2 的最终值需要通过对系统测试后进行调节确定。调试方法如下:

  1. 通过 认证测试工具,选择 TX tone 模式。

  2. 使用综测仪或者频谱仪查看 2.4 GHz 信号,解调得到实际频偏。

  3. 通过调整外置负载电容,把频偏调整到 ±10 ppm(建议)以内。

  • 当中心频率偏正时,说明等效负载电容偏小,需要增加外置负载电容。

  • 当中心频率偏负时,说明等效负载电容偏大,需要减小外置负载电容。

  • 通常两个外置负载电容相等,在特殊情况下,也可以有略微差异。

备注

  • 尽管 ESP32 内部带有自校准功能,但是自身频偏过大(例如大于 ±10 ppm)、工作温度范围内稳定度不高等晶振本身的质量问题仍然会影响芯片的正常工作,导致射频指标性能下降。

  • 建议晶振的幅值大于 500 mV。

  • 如果出现功能性的 Wi-Fi 或蓝牙无法连接,排除软件原因后,可以采用上文中的方法,通过调节晶振的电容来保证频偏满足要求。

RTC 时钟源(可选)

ESP32 支持外置 32.768 kHz 的无源晶振作为 RTC 时钟。使用外部 RTC 时钟源是为了使时间更准确,从而降低平均功耗,但对于功能没有任何影响。

外置 32.768 kHz 无源晶振的电路如图 ESP32 系列芯片外置 32.768 kHz 无源晶振电路图 所示。

ESP32 系列芯片外置 32.768 kHz 无源晶振电路图

ESP32 系列芯片外置 32.768 kHz 无源晶振电路图

请注意 32.768 kHz 晶振选择要求:

  • 等效内阻 (ESR) ≤ 70 kΩ。

  • 两端负载电容值根据晶振的规格要求进行配置。

并联电阻 R 用于偏置晶振电路,电阻值要求 5 MΩ < R ≤ 10 MΩ。该电阻一般无需上件。

ESP32-D0WD-V3 外接 32.768 kHz 晶振时,并联的电阻必须上件;ESP32 系列其他芯片建议预留。

如果不需要该 RTC 时钟源,则 32.768 kHz 晶振的管脚也可配置为通用 GPIO 口使用。

射频

射频电路

ESP32 系列芯片的射频电路主要由三部分组成:PCB 板射频走线、芯片匹配电路、天线及其匹配电路。各部分电路应满足以下设计规范:

  • PCB 板射频走线:需进行 50 Ω 阻抗控制。

  • 芯片匹配电路:请尽量靠近芯片放置,优先采用 CLC 结构。

  • 天线及其匹配电路:为保证辐射性能,建议天线的输入阻抗为 50 Ω 左右。为保险起见,推荐在靠近天线位置增加一组 π 型匹配电路,用于调节天线的输入阻抗。如果经过仿真可以确保天线阻抗点为 50 Ω 左右,并且空间较小,则可以不加天线端的匹配电路。

ESP32 系列芯片射频匹配电路图

ESP32 系列芯片射频匹配电路图

射频调试

射频匹配网络的参数值和 PCB 板有关,不要直接使用模组的匹配值,须按照下述射频调试进行确认。

ESP32 射频调试示意图 展示了射频调试的大概过程。

ESP32 射频调试示意图

ESP32 射频调试示意图

匹配网络的器件参数初始值可以使用 0 Ω。推荐将上图中的 S11 参数设置为 25+j0,中心频点为 2442 MHz。

如果使用或生产环境中对静电敏感,建议在靠近天线侧预留 ESD 保护器件。

备注

如果不需要使用射频功能,射频管脚可以悬空。

UART

U0TXD 线上建议串联 499 Ω 电阻用于抑制 80 MHz 谐波。

UART0 通常作为下载和 log 打印的串口。关于如何使用 UART0 进行下载,请参考章节 下载指导

其他 UART 可以作为通信的串口,管脚可以通过软件配置到任意空闲的 GPIO 上。同样在 TX 线上建议预留串联电阻用于抑制谐波。

请注意使用 AT 固件时,固件里配置了 UART 的 GPIO,可以参考 硬件连接,建议使用默认配置。

SPI

在使用 SPI 功能时,为了提高 EMC 性能,请在 SPI_CLK 线上添加串联电阻(或磁珠)以及对地电容。如果空间允许,建议在其他 SPI 线上也添加串联电阻和对地电容。另外,请确保 RC/LC 器件靠近芯片或模组的管脚放置。

Strapping 管脚

芯片每次上电或复位时,都需要一些初始配置参数,如加载芯片的启动模式等。这些参数通过 strapping 管脚控制。复位放开后,strapping 管脚和普通 IO 管脚功能相同。

所有的 strapping 管脚信息,可参考 ESP32 系列芯片技术规格书 > 章节 Strapping 管脚。下面主要介绍和启动模式有关的 strapping 管脚信息。

芯片复位释放后,GPIO0 和 GPIO2 共同决定启动模式,详见表 芯片启动模式控制

芯片启动模式控制

启动模式

GPIO0

GPIO2

默认配置

1

0

SPI Boot

1

任意值

Joint Download Boot 1

0

0

1

Joint Download Boot 支持下列几种下载方式:

  • UART Download Boot

  • SDIO Download Boot

Strapping 管脚的时序参数包括 建立时间保持时间。更多信息,详见图 Strapping 管脚的时序参数图 和表 Strapping 管脚的时序参数说明

Strapping 管脚的时序参数图

Strapping 管脚的时序参数图

Strapping 管脚的时序参数说明

参数

说明

最小值 (ms)

tSU

建立时间,即拉高 CHIP_PU 激活芯片前,电源轨达到稳定所需的时间

0

tH

保持时间,即 CHIP_PU 已拉高、strapping 管脚变为普通 IO 管脚开始工作前,可读取 strapping 管脚值的时间

3

注意

不要在 GPIO0 管脚处添加较大的电容,以免影响芯片上电启动。

GPIO

ESP32 系列芯片通过 IO MUX 表格或者 GPIO 交换矩阵功能来配置 GPIO。IO MUX 表格中是默认的外设管脚配置,GPIO 交换矩阵用于将可以配置的外设信号传输至 GPIO 管脚。更多关于 IO MUX 和 GPIO 交换矩阵的信息,请参考 ESP32 技术参考手册 > 章节 IO MUX 和 GPIO 交换矩阵

部分外设的 GPIO 管脚是固定的,部分是可以任意配置的,具体信息请参考 ESP32 系列芯片技术规格书 > 章节 外设管脚分配

使用 GPIO 时,请注意:

  • Strapping 管脚的上电状态。

  • 请注意 GPIO 复位后的默认配置,详见表 IO MUX 管脚功能。建议对处于高阻态的管脚配置上拉或下拉,或在软件初始化时开启管脚自带的上下拉,以避免不必要的耗电。

  • 避免使用 flash/PSRAM 占用的管脚。

IO MUX 管脚功能

GPIO

管脚名称

功能 0

功能 1

功能 2

功能 3

功能 4

功能 5

复位

0

GPIO0

GPIO0

CLK_OUT1

GPIO0

EMAC_TX_CLK

3

1

U0TXD

U0TXD

CLK_OUT3

GPIO1

EMAC_RXD2

3

2

GPIO2

GPIO2

HSPIWP

GPIO2

HS2_DATA0

SD_DATA0

2

3

U0RXD

U0RXD

CLK_OUT2

GPIO3

3

4

GPIO4

GPIO4

HSPIHD

GPIO4

HS2_DATA1

SD_DATA1

EMAC_TX_ER

2

5

GPIO5

GPIO5

VSPICS0

GPIO5

HS1_DATA6

EMAC_RX_CLK

3

6

SD_CLK

SD_CLK

SPICLK

GPIO6

HS1_CLK

U1CTS

3

7

SD_DATA_0

SD_DATA0

SPIQ

GPIO7

HS1_DATA0

U2RTS

3

8

SD_DATA_1

SD_DATA1

SPID

GPIO8

HS1_DATA1

U2CTS

3

9

SD_DATA_2

SD_DATA2

SPIHD

GPIO9

HS1_DATA2

U1RXD

3

10

SD_DATA_3

SD_DATA3

SPIWP

GPIO10

HS1_DATA3

U1TXD

3

11

SD_CMD

SD_CMD

SPICS0

GPIO11

HS1_CMD

U1RTS

3

12

MTDI

MTDI

HSPIQ

GPIO12

HS2_DATA2

SD_DATA2

EMAC_TXD3

2

13

MTCK

MTCK

HSPID

GPIO13

HS2_DATA3

SD_DATA3

EMAC_RX_ER

2

14

MTMS

MTMS

HSPICLK

GPIO14

HS2_CLK

SD_CLK

EMAC_TXD2

3

15

MTDO

MTDO

HSPICS0

GPIO15

HS2_CMD

SD_CMD

EMAC_RXD3

3

16

GPIO16

GPIO16

GPIO16

HS1_DATA4

U2RXD

EMAC_CLK_OUT

1

17

GPIO17

GPIO17

GPIO17

HS1_DATA5

U2TXD

EMAC_CLK_180

1

18

GPIO18

GPIO18

VSPICLK

GPIO18

HS1_DATA7

1

19

GPIO19

GPIO19

VSPIQ

GPIO19

U0CTS

EMAC_TXD0

1

21

GPIO21

GPIO21

VSPIHD

GPIO21

EMAC_TX_EN

1

22

GPIO22

GPIO22

VSPIWP

GPIO22

U0RTS

EMAC_TXD1

1

23

GPIO23

GPIO23

VSPID

GPIO23

HS1_STROBE

1

25

GPIO25

GPIO25

GPIO25

EMAC_RXD0

0

26

GPIO26

GPIO26

GPIO26

EMAC_RXD1

0

27

GPIO27

GPIO27

GPIO27

EMAC_RX_DV

0

32

32K_XP

GPIO32

GPIO32

0

33

32K_XN

GPIO33

GPIO33

0

34

VDET_1

GPIO34

GPIO34

0

35

VDET_2

GPIO35

GPIO35

0

36

SENSOR_VP

GPIO36

GPIO36

0

37

SENSOR_CAPP

GPIO37

GPIO37

0

38

SENSOR_CAPN

GPIO38

GPIO38

0

39

SENSOR_VN

GPIO39

GPIO39

0

复位:

  • 0: IE=0 (输入关闭)

  • 1: IE=1 (输入使能)

  • 2: IE=1, WPD=1 (输入使能,内部弱下拉电阻使能)

  • 3: IE=1, WPU=1 (输入使能,内部弱上拉电阻使能)

ADC

使用 ADC 功能时,请靠近管脚添加 0.1 μF 的对地滤波电容,精度会更准确一些。

当一些 RTC 外设(SAR ADC1 或 SAR ADC2 或 AMP)的电源打开时,SENSOR_VP 及 SENSOR_VN 的数字输入会被拉低约 80 ns。因此建议将 SENSOR_VP 及 SENSOR_VN 作为 ADC 使用。

如果设计中使用了 SENSOR_VP 及 SENSOR_VN 作为 GPIO,且同时使用了其他管脚用作 ADC,软件上应忽略该毛刺,或者硬件上对 SENSOR_VP 和 SENSOR_VN 采用高有效的方式。

目前 ADC2 不支持与 Wi-Fi 同时使用,优先推荐使用 ADC1。

ADC 经硬件校准和 软件校准 后的结果如以下列表所示。如需更高的精度,可选用其他方法自行校准。

  • 当 ATTEN=0,有效测量范围为 100 ~ 950 mV 时,总误差为 ±23 mV。

  • 当 ATTEN=1,有效测量范围为 100 ~ 1250 mV 时,总误差为 ±30 mV。

  • 当 ATTEN=2,有效测量范围为 150 ~ 1750 mV 时,总误差为 ±40 mV。

  • 当 ATTEN=3,有效测量范围为 150 ~ 2450 mV 时,总误差为 ±60 mV。

外置阻容

ESP32 的管脚 47 CAP2 和管脚 48 CAP1 的连接电路见图 ESP32 外置电容电路图

CAP1 所连的 C5 (10 nF) 是保证 ESP32 正常工作的必要器件,不能移除,且精度应在 10% 以内。

CAP1 与 CAP2 之间的 RC 电路在特定条件下可以取消。这部分电路用于在 Deep-sleep 模式下缩短芯片内部电压降(从 1.1 V 降到 0.7 V)的时间,以将功耗降至最低。移除这部分电路会导致电压降的时间变长,功耗增加。如果应用场景中不需要 Deep-sleep 模式或者对于功耗的要求不高,则可以移除这部分电路。

ESP32 外置电容电路图

ESP32 外置电容电路图

SDIO

对于 SDIO 主机/从机控制器,ESP32 共有两组 slot 的 GPIO 可供使用,由于 slot0 中的 GPIO 默认连接了 flash,请按照下表 SDIO 管脚分配 中 slot1 的方式连接 GPIO 和信号线。

SDIO 管脚分配

CMD

CLK

DAT0

DAT1

DAT2

DAT3

Note

Slot0

GPIO11

GPIO6

GPIO7

GPIO8

GPIO9

GPIO10

默认连接 flash,不建议用作它用。

Slot1

GPIO15

GPIO14

GPIO2

GPIO4

GPIO12

GPIO13

和 JTAG、Touch 、EMAC、strapping 功能复用,使用时请注意。

按照 slot1 的方式连接时还需注意:

  • 当 ESP32 作为 SDIO 主机工作时,请在使用的管脚上添加上拉,未使用的管脚可以用作它用。

  • 当 ESP32 作为 SDIO 从机工作时,请在所有管脚上都添加上拉,无论这些管脚使用或未使用;未使用的管脚不可以用作它用。

更多关于 SDIO 的配置,请参阅 API 参考

触摸传感器

使用 TOUCH 功能时,建议靠近芯片侧预留串联电阻,用于减小线上的耦合噪声和干扰,也可加强 ESD 保护。该阻值建议 470 Ω 到 2 kΩ,推荐 510 Ω。具体值还需根据产品实际测试效果而定。

以太网 MAC

ESP32 为以太网通信提供了一个符合 IEEE-802.3-2008 标准的媒体访问控制器 (MAC) 接口,当前 ESP32-Ethernet-Kit 开发板方案只支持 RMII 接口,接口定义和 GPIO 的对应如下:

Ethernet MAC

管脚名称

功能 6

RMII (int_osc)

RMII (ext_osc)

GPIO0

EMAC_TX_CLK

CLK_OUT(O)

EXT_OSC_CLK(I)

GPIO21

EMAC_TX_EN

TX_EN(O)

TX_EN(O)

GPIO19

EMAC_TXD0

TXD[0](O)

TXD[0](O)

GPIO22

EMAC_TXD1

TXD[1](O)

TXD[1](O)

GPIO27

EMAC_RX_DV

CRS_DV(I)

CRS_DV(I)

GPIO25

EMAC_RXD0

RXD[0](I)

RXD[0](I)

GPIO26

EMAC_RXD1

RXD[1](I)

RXD[1](I)

GPIO16

EMAC_CLK_OUT

CLK_OUT(O)

GPIO17

EMAC_CLK_OUT_180

CLK_OUT_180(O)

任意 GPIO

MDC(O)

MDC(O)

任意 GPIO

MDIO(IO)

MDIO(IO)

对于以太网方案,推荐使用 GPIO0 作为时钟输入。请注意,GPIO0 是一个 strapping 管脚,上电时如果受到时钟信号的影响,可能会进入下载模式。因此,需在 PHY 上电时避免输出时钟。我们的开发板设计通过使用 GPIO 控制 PHY 的复位管脚,确保上电时没有时钟输出。但并非所有的 PHY 都具备此功能,因此建议您在实际测试中确认。如果这种方法不起作用,请尝试其他方式确保 GPIO0 在上电时不被时钟干扰。开发板设计请参阅 ESP32-Ethernet-Kit 用户指南

此外,请注意,如果同时使用以太网和 Wi-Fi,RMII 时钟只能由 PHY 提供或由外部时钟源提供,因为 ESP32 内部 APLL 提供的 RMII 时钟不够稳定。更多信息请参考 ESP32-Ethernet-Kit 用户指南 > RMII 时钟源选择