硬件设计

[English]


ESP32 中 I2S 信号管脚过于分散,是否可以配置集中⼀些,例如配置到 GPIO5、GPIO18、GPIO23、GPIO19、GPIO22 或者 GPIO25、GPIO26、GPIO32、GPIO33 管脚上?

所有 I2S 的 I/O 均可任意分配。需要注意的是,有的 I/O 只能作为输⼊,请参考 《ESP32 技术规格书》 的外设管脚分配章节和附录中的 IO_MUX 管脚清单。


ESP32 在 Light-sleep 模式下如何避免 VDD3P3_RTC 管脚的电压掉电?

ESP32 进⼊ Light-sleep 模式后,RTC 掉电会使 VDD3P3_RTC 管脚对应的 GPIO 的电平被拉低,从而导致外部 RTC 或者其他外设无法正常工作。可以采取以下两种方式解决该问题:

  • 设置 RTC 硬件电压控制寄存器 RTC_CNTL_REG 来控制电压。具体来说,需要将 RTC_CNTL_REG 寄存器中的 FORCE_PU 和 FORCE_PD 位设置为 1,即 RTC_CNTL_REG |= RTC_CNTL_FORCE_PU_M | RTC_CNTL_FORCE_PD_M;

  • 使用 GPIO 保持管脚。ESP32 的 Light-sleep 模式支持 GPIO 保持功能,可以将某些 GPIO 管脚设置为保持管脚,保持在系统进入低功耗模式时的电平状态。具体来说,可以将 VDD3P3_RTC 管脚设置为保持管脚,以保持其电压。相关代码片段如下:

    esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
    esp_sleep_enable_gpio_wakeup();
    gpio_hold_en(GPIO_NUM_X);
    

其中,ESP_PD_DOMAIN_RTC_PERIPH 表示 RTC 子系统的电源域,ESP_PD_OPTION_ON 表示使能电源域,gpio_hold_en() 函数可以将指定的 GPIO 管脚设置为保持管脚。将 VDD3P3_RTC 管脚设置为保持管脚之后,即使系统进入 Light-sleep 模式,该管脚的电压也会保持。

需要注意的是,使用 GPIO 保持功能会增加系统的功耗,因此需要根据具体的应用场景来选择合适的方案。如果只需要保持 RTC 硬件的电源供应,可以使用第一种方法;如果需要保持其他外设的电源供应,可以使用第二种方法。


配置 ESP32 管脚有什么注意事项?

  • 大部分数字外设可以通过 GPIO 交换矩阵配置到任意管脚。SDIO、SPI 高速以及模拟类相关功能只能通过 IO MUX 切换使用。

  • 管脚使用注意事项可参考 GPIO & RTC GPIO 说明。

备注

  • Strapping 管脚的默认电平,详情参考 《ESP32 技术规格书》

  • GPIO34 ~ GPIO39(⽤作输⼊ IO,并且无上下拉功能)。

  • GPIO6 ~ GPIO11 由 flash 管脚占⽤。

  • GPIO1 和 GPIO3 是 UART0 的 TX 和 RX 管脚,⽆法进行配置。

  • 对于带有 PSRAM 的模组,GPIO16 和 GPIO17 由 PSRAM 占⽤。


乐鑫芯片 GPIO 最大承载电压是多少?

GPIO 最大耐压设计为 3.6 V。超出部分建议从硬件设计上补充分压电路,否则会造成 GPIO 损坏。


ESP8266 电压电流需求?

  • ESP8266 的数字部分的电压范围是 1.8 V ~ 3.3 V。

  • 模拟部分的⼯作电压是 3.0 V ~ 3.6 V,最低 2.7 V。

  • 模拟电源峰值 350 mA。

  • 数字电源峰值 200 mA。

备注

选择的 SPI flash ⼯作电压也需要与 GPIO 的电压匹配。CHIP_EN ⼯作在 3.0 V ~ 3.6 V,使⽤ 1.8 V GPIO 控制时需要注意电平转换。


乐鑫 Wi-Fi 模组是否有单面板 PCB 的方案?

  • ESP32 属于无线模块,射频性能对于 PCB 材质有较高的要求。我们测试过 4 层与 2 层的方案,但未测试过单层的设计。

  • 在此不建议使用单层板子的方案,建议产品 PCB 可以使用单层板,贴装我们的模组。单层板子的模组,射频性能无法预估。

  • 为保证良好的 RF 性能,我们建议使用 4 层板设计。


使用电池为 ESP8266 供电有哪些注意事项?

  • ESP8266 电压范围为 3.0 V ~ 3.6 V,两节 AA 电池可以给 ESP8266 供电。需要注意电池压降是否满足芯片电压范围。

  • 锂电池电压范围超过模组要求,并且放电时压降较⼤,不适合直接给 ESP8266 供电。

  • 推荐电池使⽤ DC/DC 或 LDO 升降压后给 ESP8266 供电,并且注意电源芯片压差要求。


如何获取 ESP32 系列芯片 footprint?

可以在 模组设计 中下载芯片对应的模组参考设计,里面有管脚封装设计。


使用 ESP32-S2 芯片,用了 DVP camera 接口后还能接入语音吗?

ESP32-S2 的 LCD 接口、DVP camera 接口和 I2S 接口共用一套硬件资源,只能同时支持其中一个。


使用 ESP32 模块,使用 GPIO0 和 GPIO4 作为 I2C 信号接口,需要注意什么?

作为 I2C 信号接口时,GPIO0 需要上拉。烧写时,只要保证上电时 GPIO0 能拉低,然后便可释放。GPIO0 无需一直拉低,只有下载的时候需要拉低。


ESP32 的外接 flash 占用了 GPIO6 ~ GPIO11,这 6 个 GPIO 是否还能作为 SPI 来使用?

ESP32 的外接 flash 占用了 GPIO6 ~ GPIO11,这 6 个 GPIO 就不能再作为 SPI 来使用了。


使用 ESP8285 芯片时,是否需要连接外部晶振?

ESP8285 芯片内部无晶振,需要连接外部晶振。


ESP32-D2WD 外接 PSRAM 的参考设计?

建议参考 《ESP32-PICO-D4 技术规格书》 的外围设计原理图章节。

备注

ESP32-D2WD 是 1.8 V flash,所以 VDD_SDIO 需要加电阻和电容,并且连接 1.8 V PSRAM。


ESP32 是否可以用 PWM 或 DAC 来播放音乐?

ESP32 可以用 PWM 或 DAC 来播放音乐,推荐用于提示音播放,可基于 esp-adf/examples/player/pipeline_play_mp3_with_dac_or_pwm 例程进行测试。


为什么 ESP32 模组和 ESP32 芯片的建议工作电压范围不一样?

  • 因为它们的工作环境和使用方式不同。 - ESP32 芯片是一颗裸片,需要在电路板上加上外围电路才能正常工作。ESP32 芯片的建议工作电压范围为 2.3 V 至 3.6 V,是根据 ESP32 芯片本身的电气参数来决定的。在这个电压范围内,ESP32 芯片能够正常工作,并且可以提供最佳的性能和功耗表现。 - ESP32 模组则是已经封装好的整个电路模块,通常会加上稳压电路、外部晶振、外部天线等外围电路,以及其他外设芯片(如 flash、RAM)等,可以直接使用。由于模组上的电路已经经过优化和调试,因此建议工作电压范围会更窄一些。例如,ESP32-WROOM-32 模组的建议工作电压范围就为 3.0 V 至 3.6 V。此外,由于模组要考虑 flash 的电压,所以 ESP32 模组的建议工作电压会更高一些。

  • 在使用这些芯片和模组时,需要根据具体情况选择合适的电源和外围电路,以确保它们能够正常工作。

  • 更多信息,请对比模组和芯片的 技术规格书


自主设计模组 flash 擦除速度相比乐鑫模组较慢有哪些原因?

  • 由于不同厂家 flash 器件存在差异,擦除扇区部分所需时间也各不相同,该时间差异属于正常现象。

  • 如果希望擦除速度较快,可以测试不同厂家 flash 的擦除速度进行综合评估。


ESP8266 为何上电瞬间会电流较大?

  • ESP8266 的 RF 和数字电路具有极⾼的集成度,上电后 RF ⾃校准,在校准时会需要⼤电流。

  • 模拟部分电路最⼤的极限电流可能达到 500 mA,数字电路部分最⼤电流达到 200 mA。

  • 常规应用时,平均电流约 100 mA。

  • 综上,ESP8266 电源设计需要满足 500 mA 电流。


ESP32 以太网 RMII 时钟选择有哪些?

  • 硬件设计上建议使用 GPIO0 作为 RMII 时钟输入的管脚,请注意 GPIO0 在芯片上电时不可为低电平。

  • 详细说明请阅读 配置 MAC 与 PHY 指南。


ESP32-LyraT 开发板扬声器接口规格?

接口使用 PH-2A 规格连接器。


基于 ESP32 设计的模组,哪些管脚无法被用户使用?

  • ESP32-WROOM 系列模组,GPIO6 ~ GPIO11 为 flash 管脚,作为 flash 通信使⽤,不可被用户使用。

  • ESP32-WROVER 系列模组,GPIO16 和 GPIO17 被模组 PSRAM 占⽤,不可被用户使用。

  • 此外,ESP32 有 5 个 Strapping 管脚,在使⽤时需要额外注意,具体细节请参考 《ESP32 技术规格书》


ESP32 如何使用管脚复位芯片?

ESP32 的复位可使用 CHIP_PU 管脚。当 CHIP_PU 为低电平时,复位电平 (VIL_nRST) 要求足够低,并且持续一段时间。注意:该管脚不可浮空。可参见 《ESP32 硬件设计指南》 中的 复位 章节。


ESP8266 供电设计需要注意哪些问题?

  • 如果是使⽤ LDO 变压,请确保输⼊电压在 (2.7 V ~ 3.6 V) 和输出电流(大于 500 mA)要⾜够⼤。

  • 电源轨去耦电容器必须接近 ESP8266 摆放,等效电阻要⾜够低。

  • ESP8266 不能直连 5 V,仅支持 3.3 V,电压范围 2.7 V ~ 3.6 V。

  • 如果是通过 DC-DC 给 ESP8266 供电,必要时要加上 LC 滤波电路。

  • 可参考 《ESP8266 硬件设计指南》 中的 电源 章节。


ESP8266 使用 TOUT 管脚做 ADC 采样时,超过 0 V ~ 1.0 V 是否会损坏管脚?

  • 输入电压在芯片管脚电压范围内均不会损坏管脚(默认为 0 V ~ 3.6 V)。

  • 超过采样阈值将会影响采集的数据结果,导致数据结果异常。


使用板载天线的模组,对 PCB 和外壳设计有哪些要求?

  • 如产品采⽤模组进⾏ on-board 设计,则需注意考虑模组在底板的布局,应尽可能地减⼩底板对模组 PCB 天线性能的影响。

  • 条件允许的情况下,建议将模组 PCB 天线区域延伸出底板板框外,并将模组尽可能地靠近底板板边放置,使天线的馈点距离板边最近。

  • 请确保模块不被任何⾦属的外壳包裹,模块 PCB 天线区域及外扩 15 mm 区域需净空(严禁铺铜、⾛线、摆放元件)。

  • 具体说明请阅读对应模组的 硬件设计指南


使用 ESP32 GPIO34 ~ GPIO39 是否可作为 UART 的 RX ?

GPIO34 ~ GPIO39 作为接收使用,可应用 UART 的 RX。


ESP32 模组外接 32 kHz 晶振参考设计?

请参考 《ESP32 硬件设计指南》 中的 RTC 时钟(可选) 章节。


ESP32 模组 flash 是否支持 80 MHz 的 QIO 模式?

  • ESP32 模组可以同时支持 flash 模式,QIO 和 flash 速度为 80 MHz。

  • 使用 QIO 模式建议使用在二级 Bootloader 中开启,因为部分 flash 状态寄存器默认 QE 未置 1。


如何配置 ESP32 以太网的 RMII 同步时钟?


使用 ESP8266 芯片如何进行硬件复位?硬件复位信号是低电平有效还是高电平有效?复位的条件是什么?

  • ESP8266 的 Pin32 EXT_RSTB 为复位管脚。此管脚内部有上拉电阻,低电平有效。为防⽌外界⼲扰引起的重启,建议 EXT_RSTB 的⾛线尽量短,并在 EXT_RSTB 管脚处增加⼀个 RC 电路。

  • ESP8266 的 CHIP_EN 管脚也可作为硬件复位管脚,当使用 CHIP_EN 管脚作为复位管脚时,复位信号是低电平有效。复位条件为当输入电平低于 0.6 V 并持续 200 μs 以上时,ESP8266 会复位重启。我们推荐使用 CHIP_EN 管脚进行芯片复位。可参考 《ESP8266 硬件设计指南》 中的 复位 章节。


乐鑫原理图中的 NC 缩写是什么意思?

NC 是 No Component 的缩写,即不上件。如下图所示,上拉电阻标有 NC,即表示该上拉电阻不上件。

no-component

如何在 ESP32-S2 中使用多天线?


ESP32-C3F SPI CS0 是否需要外接 10 kΩ 上拉电阻?

  • ESP32-C3F 的 SPI 控制器支持软件可编程的 CS (Chip Select) 管脚,不需要外接 10 kΩ 上拉电阻。

  • 在 ESP32-C3F 中,可以通过在 SPI 控制器配置中设置 CS 管脚为任意 GPIO 引脚,并在代码中通过设置 GPIO 状态来控制 CS 管脚的电平。当 SPI 总线空闲时,CS 管脚会自动被拉高至 GPIO 引脚的默认状态,不需要外接上拉电阻。

  • 需要注意的是,在使用软件可编程的 CS 管脚时,需要在 SPI 总线传输前手动将 CS 管脚拉低,以选择目标设备,并在传输完成后将 CS 管脚拉高,以释放设备。同时,还需要根据实际情况调整 CS 管脚的电平和状态,以确保 SPI 总线的稳定性和可靠性。


ESP-Skainet 有语音识别硬件设计参考吗?


硬件上是否有必要接 32 kHz 的 RTC 晶振?

外接 32 KHz 晶振主要是用于 Bluetooth LE Light-sleep 计时,所以应用场景中不使用 Bluetooth LE Light-sleep 时不需要外接。


使用 ESP32-MINI-1 模组,是否可提供 Altium Designer 的元件库?

  • 我们的硬件原理图是在 PADS 中开发设计的,在 《ESP32-MINI-1 参考设计》 中有一个 ASC 的文件,可在 Altium Designer 里转换打开。

  • 更多型号的模组的硬件设计资料可在 技术文档 中获取。


ESP8266 的 UART0 的输入电压能由 3.3 V 改为 1.8 V 吗?

UART0 的电源域是 VDDPST,VDDPST 理论上可以到 1.8 V,所以 UART0 理论上可以改成 1.8 V。


ESP8266 UART0 的电平是由 VDD 决定的,还是由 VDDPST 决定的?

ESP8266 UART0 的电平是由 VDDPST(硬件电源域)决定的,数字电源电压都是由 VDDPST 决定的。


ESP32-D2WD 芯片外接 PSRAM 软件配置注意事项是什么?

  • 需要在 menuconfig 中使能 CPU frequece 240 MhzRTC clock 80 Mhz,具体配置如下:

    • menuconfig > Serial flasher config > Flash SPI Speed (80 Mhz)

    • Component config > CPU frequency (240 Mhz)

    • Component config > ESP32 specific > [*]Support for external, SPI-connected RAM

    • Component config > ESP32 specific > SPI RAM config > Set RAM clock speed (80 Mhz clock speed)


ESP32 芯片当 VDD 供电从 0 V 慢慢升到 3.3 V 时,芯片为何无法正常启动?

  • 出现此问题是由于芯片上电时序不满足要求,时序要求当 VDD 达到 2.3 V 时,EN 电压不应超过 0.6 V。

  • 但 VDD 上电时间过慢时,芯片 EN 端的 RC 电路将 EN 延时的功能就丧失了。

  • 可以调整 RC 电路,增加电容,调整电阻,或是使用 Reset 芯片管控 EN 状态。

  • 建议检测到供给 ESP32 的电压低于 2.3 V 时将 ESP32 的 EN 脚拉低。

  • ESP32 上电时序说明参见 《ESP32 技术规格书》


使用 ESP32-WROOM-32D 模组,是否可以使用 GPIO12 用作其他功能?

  • GPIO12 为 Strapping 管脚,控制 SPI flash 的启动电压。ESP32-WROOM-32D 模组的 SPI flash 启动电压为 3.3 V,因此在上电启动时 GPIO12 需要拉低。

  • 若需要使用 GPIO12 用作其他功能,请使用 esptool 工具通过 espefuse.py set_flash_voltage 3.3V 命令将 VDD_SDIO 固定为 3.3 V。

  • 硬件上可以将 VDD_SDIO 直接连到 3.3 V 上,这样就不用再烧录 eFuse。

  • 在量产阶段,也可以直接将 flash 下载工具里 “config/esp32/utility.confgi” 文件下 ESP32_EFUSE_CONFIG 的默认配置选项修改为 config_voltage = 3.3 V 来下载固件。


ESP32-WROOM-32D 模组的外接 flash,是否可以不使用 GPIO6 ~ GPIO11 的接口?

ESP32 共有三组 SPI(SPI、HSPI 和 VSPI)接口,可以通过 SPI0/1 (HSPI/VSPI) 总线访问外部 flash。但接到其他脚(GPIO6 ~ GPIO11 以外的 GPIO)的外接 flash 不能跑程序,只能接收数据作存储。需要跑程序的 flash 只能接在 GPIO6 ~ GPIO11 接口上。


ESP32 芯片设计模组,PCB 板是否需要加屏蔽盖?

  • 是否需要加屏蔽盖取决于具体的应用场景和要求。

    • 在一些高要求的应用场景,例如无线通讯干扰环境较严峻、电磁兼容性(EMC)测试要求较高等情况下,加装屏蔽盖可以有效地减少外界干扰和 PCB 板上的互相干扰,提高系统的稳定性和可靠性。此时,屏蔽盖应该采用导电材料,并接地处理,以确保其有效性。

    • 另一方面,如果应用场景较为简单,如无线通讯干扰较小,EMC 要求不高等情况下,加装屏蔽盖的效果可能不是很明显,且可能增加系统成本和复杂度。

    • 如果板子还有其他信号干扰,比如 2G、3G、4G 或者 Wi-Fi、Bluetooth、Zigbee 等等建议加上屏蔽盖。


ESP32 的 I2S 的 CLK 管脚必须使用 GPIO0、GPIO1 或 GPIO3 吗?

MCLK 管脚必须使用 GPIO0、GPIO1 或 GPIO3 管脚。其他的时钟管脚可以使用任意的 GPIO。注意,由于 GPIO0 为 Strapping 管脚,一般不推荐用作其他功能。


ESP32-U4WDH 芯片是否支持外接 PSRAM 芯片?

  • ESP32-U4WDH 芯片支持外接 PSRAM 芯片,但仅支持乐鑫发布的 ESP-PSRAMXXH 芯片,不支持使用第三方 PSRAM 芯片。

  • 硬件设计上,除了 CS 管脚外,其他所有管脚都可以与 Flash 复用,更多指南请参考 《ESP32 硬件设计指南》

  • 另外,PCB 设计时请注意 PSRAM 的 GND 到 ESP32-U4WDH 的 GND 要尽量短,否则可能会影响信号质量。


ESP32 芯片是否支持使用 SPI0/SPI1 接口外接 SD NAND flash 来存储程序固件(而不是使用默认的 NOR flash)?

  • ESP32 芯片不支持使用 SPI0/SPI1(连接程序 flash)接口来外接 SD NAND flash 芯片。

  • 如果要存储外部数据,建议使用 ESP32 的 SPI2、SPI3 或 SDIO 接口来外接 NAND SD 芯片。

  • SPI2 和 SPI3 可以使用任意 GPIO,但 SDIO 接口则只能使用指定接口,详细说明请见 《ESP32 技术规格书》 中的 外设管脚分配 章节。


是否支持基于 ESP32-S3R8 芯片外挂第二个 PSRAM 芯片?

  • 不支持。原因如下:

    • PSRAM 芯片与 MSPI 总线相连。MSPI 外设只有两个 CS 信号,一个与 flash 相连,另一个则与 PSRAM 相连。

    • CPU 通过 cache 和 MSPI 访问外部存储器。GPSPI 外设是不能被 cache 访问的。


能否提供 ESP32-S3-WROOM-1 模组的 3D 模型和 Footprint 文件?

可在 espressif/kicad-libraries 库中获取模组的 3D 模型和 Footprint 文件。


ESP32/ESP32-S2/ESP32-C3/ESP32-S3 是否支持单独给 RTC 电源域供电来保持芯片低功耗工作?

不支持。以 ESP32 为例,详细信息后续会更新到 ESP32 硬件设计指南 里的 RTC 章节。


有哪些提高 EMC 性能的方法?

  • 在硬件层面,可以采取以下措施来提高 PCB 板的 EMC 性能:

    • 采用四层板设计的 EMC 性能优于两层板的硬件设计。

    • 对电源电路增加滤波电路。

    • 在天线电路中添加防静电或磁珠。

    • 在 SPI Flash 电路上增加一个 0 欧姆串联电阻,以降低驱动电流,减少对射频的干扰,调整时序,更好地屏蔽干扰。

    • 尽量保持 GND 完整。

    • 更多硬件设计建议可参考 《ESP 硬件设计指南》


ESP32-S3 U0TXD 为什么要预留 499 Ω 的电阻?

U0TXD 预留 499 Ω 电阻是用于抑制 80 MHz 谐波。详细信息请参考 《ESP32-S3 硬件设计指南》


如何在硬件上校准 ESP32-S3 ADC?

ESP32-S3 已经在芯片内部进行了 ADC 的硬件校准。ESP32-S3 ADC 对噪声敏感,可能导致 ADC 读数出现较大差异。根据使用场景,您可能需要将旁路电容(例如 100 nF 陶瓷电容)连接到使用的 ADC 输入焊盘,以最大限度地减小噪声。此外,还可以使用多重采样来进一步减轻噪声的影响。


如何基于 ESP32 系列芯片设计自动下载电路?

可以参考 ESP32-DevKitC 开发板原理图 中自动下载电路的硬件设计。


在 ESP8266 芯片上应该使用哪种晶振?

ESP8266 芯片需要使用 26 MHz 的晶振来启动芯片。选⽤的晶振⾃身精度需在 ±10 PPM。详情请参见 《ESP8266 硬件设计指南》


ESP32-C2、ESP32-C3 和 ESP32-C6 芯片是否支持外接 PSRAM 芯片?

ESP32-C2、ESP32-C3 和 ESP32-C6 芯片均不支持外接 PSRAM 芯片。


ESP32-C3 采用电池供电时,当供电电压逐渐下降,比如将电池放完电后再充电,ESP32-C3 可能会无法启动。此时,只能首先断开电池与 ESP32-C3 的连接,再重新连接充好电的电池,或者尝试在 3.3 V 引脚和 EN 引脚间连接一个稳压二极管才能让芯片正常启动,出现这种情况的根本原因是什么?有没有最佳的解决办法?

  • 根本原因:ESP32-C3 芯片重新上电和复位时,CHIP_EN 管脚需要满足 ESP32-C3 芯片规格书ESP32-C3 硬件设计指南 里的上电时序图要求和说明。如果电池放电和上电比较缓慢,ESP32-C3 可能无法充分复位,从而导致芯片部分单元处于不确定状态。

  • 解决办法:目前,若使用电池供电或储能类应用系统,可以通过调整不同 RC 器件值、使用两个电阻分压控制,或使用一颗较为常见的复位芯片来解决此问题。有关 RC 器件值、相关电阻的详细信息,请参见 ESP32-C3 系列芯片硬件设计指南


ESP32 系列模组上的九宫格 GND 网格是否需要铺铜?

模组上的九宫格 GND 网格建议铺铜。