其中,ESP_PD_DOMAIN_RTC_PERIPH 表示 RTC 子系统的电源域,ESP_PD_OPTION_ON 表示使能电源域,gpio_hold_en() 函数可以将指定的 GPIO 管脚设置为保持管脚。将 VDD3P3_RTC 管脚设置为保持管脚之后,即使系统进入 Light-sleep 模式,该管脚的电压也会保持。
需要注意的是,使用 GPIO 保持功能会增加系统的功耗,因此需要根据具体的应用场景来选择合适的方案。如果只需要保持 RTC 硬件的电源供应,可以使用第一种方法;如果需要保持其他外设的电源供应,可以使用第二种方法。
大部分数字外设可以通过 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 占⽤。
ESP32 属于无线模块,射频性能对于 PCB 材质有较高的要求。我们测试过 4 层与 2 层的方案,但未测试过单层的设计。
在此不建议使用单层板子的方案,建议产品 PCB 可以使用单层板,贴装我们的模组。单层板子的模组,射频性能无法预估。
为保证良好的 RF 性能,我们建议使用 4 层板设计。
ESP8266 电压范围为 3.0 V ~ 3.6 V,两节 AA 电池可以给 ESP8266 供电。需要注意电池压降是否满足芯片电压范围。
锂电池电压范围超过模组要求,并且放电时压降较⼤,不适合直接给 ESP8266 供电。
推荐电池使⽤ DC/DC 或 LDO 升降压后给 ESP8266 供电,并且注意电源芯片压差要求。
因为它们的工作环境和使用方式不同。
- ESP32 芯片是一颗裸片,需要在电路板上加上外围电路才能正常工作。ESP32 芯片的建议工作电压范围为 2.3 V 至 3.6 V,是根据 ESP32 芯片本身的电气参数来决定的。在这个电压范围内,ESP32 芯片能够正常工作,并且可以提供最佳的性能和功耗表现。
- ESP32 模组则是已经封装好的整个电路模块,通常会加上稳压电路、外部晶振、外部天线等外围电路,以及其他外设芯片(如 flash、RAM)等,可以直接使用。由于模组上的电路已经经过优化和调试,因此建议工作电压范围会更窄一些。例如,ESP32-WROOM-32 模组的建议工作电压范围就为 3.0 V 至 3.6 V。此外,由于模组要考虑 flash 的电压,所以 ESP32 模组的建议工作电压会更高一些。
在使用这些芯片和模组时,需要根据具体情况选择合适的电源和外围电路,以确保它们能够正常工作。
更多信息,请对比模组和芯片的 技术规格书。
ESP8266 的 RF 和数字电路具有极⾼的集成度,上电后 RF ⾃校准,在校准时会需要⼤电流。
模拟部分电路最⼤的极限电流可能达到 500 mA,数字电路部分最⼤电流达到 200 mA。
常规应用时,平均电流约 100 mA。
综上,ESP8266 电源设计需要满足 500 mA 电流。
ESP32-WROOM 系列模组,GPIO6 ~ GPIO11 为 flash 管脚,作为 flash 通信使⽤,不可被用户使用。
ESP32-WROVER 系列模组,GPIO16 和 GPIO17 被模组 PSRAM 占⽤,不可被用户使用。
此外,ESP32 有 5 个 Strapping 管脚,在使⽤时需要额外注意,具体细节请参考 《ESP32 技术规格书》。
如果是使⽤ 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 硬件设计指南》 中的 电源 章节。
如产品采⽤模组进⾏ on-board 设计,则需注意考虑模组在底板的布局,应尽可能地减⼩底板对模组 PCB 天线性能的影响。
条件允许的情况下,建议将模组 PCB 天线区域延伸出底板板框外,并将模组尽可能地靠近底板板边放置,使天线的馈点距离板边最近。
请确保模块不被任何⾦属的外壳包裹,模块 PCB 天线区域及外扩 15 mm 区域需净空(严禁铺铜、⾛线、摆放元件)。
具体说明请阅读对应模组的 硬件设计指南。
请下载 esp-idf/examples/ethernet/basic 例程进行测试。
IP101 PHY 芯片在 GPIO0 输出 CLK 时会出现网络不稳定的现象,所以推荐 PHY 外接 50 MHz 晶振,GPIO0 作为输入。
由于 GPIO0 的特殊性,所以需要配置 IO 控制 PHY 的使能管脚。
请阅读 以太网文档。
可参考 SCH_ESP32-ETHERNET-KIT 原理图设计。
ESP8266 的 Pin32 EXT_RSTB 为复位管脚。此管脚内部有上拉电阻,低电平有效。为防⽌外界⼲扰引起的重启,建议 EXT_RSTB 的⾛线尽量短,并在 EXT_RSTB 管脚处增加⼀个 RC 电路。
ESP8266 的 CHIP_EN 管脚也可作为硬件复位管脚,当使用 CHIP_EN 管脚作为复位管脚时,复位信号是低电平有效。复位条件为当输入电平低于 0.6 V 并持续 200 μs 以上时,ESP8266 会复位重启。我们推荐使用 CHIP_EN 管脚进行芯片复位。可参考 《ESP8266 硬件设计指南》 中的 复位 章节。
ESP32-S2 的多天线使用和 ESP32 类似,可以参考 《ESP32-WROOM-DA 技术规格书》 中的多天线使用。
《ESP-IDF 编程指南》 中提供了详细的操作说明。
使用时添加一个 RF 开关,通过开关选择具体工作的天线。
ESP32-C3F 的 SPI 控制器支持软件可编程的 CS (Chip Select) 管脚,不需要外接 10 kΩ 上拉电阻。
在 ESP32-C3F 中,可以通过在 SPI 控制器配置中设置 CS 管脚为任意 GPIO 引脚,并在代码中通过设置 GPIO 状态来控制 CS 管脚的电平。当 SPI 总线空闲时,CS 管脚会自动被拉高至 GPIO 引脚的默认状态,不需要外接上拉电阻。
需要注意的是,在使用软件可编程的 CS 管脚时,需要在 SPI 总线传输前手动将 CS 管脚拉低,以选择目标设备,并在传输完成后将 CS 管脚拉高,以释放设备。同时,还需要根据实际情况调整 CS 管脚的电平和状态,以确保 SPI 总线的稳定性和可靠性。
需要在 menuconfig 中使能 CPU frequece 240 Mhz 和 RTC 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)
出现此问题是由于芯片上电时序不满足要求,时序要求当 VDD 达到 2.3 V 时,EN 电压不应超过 0.6 V。
但 VDD 上电时间过慢时,芯片 EN 端的 RC 电路将 EN 延时的功能就丧失了。
可以调整 RC 电路,增加电容,调整电阻,或是使用 Reset 芯片管控 EN 状态。
建议检测到供给 ESP32 的电压低于 2.3 V 时将 ESP32 的 EN 脚拉低。
ESP32 上电时序说明参见 《ESP32 技术规格书》。
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 来下载固件。
是否需要加屏蔽盖取决于具体的应用场景和要求。
在一些高要求的应用场景,例如无线通讯干扰环境较严峻、电磁兼容性(EMC)测试要求较高等情况下,加装屏蔽盖可以有效地减少外界干扰和 PCB 板上的互相干扰,提高系统的稳定性和可靠性。此时,屏蔽盖应该采用导电材料,并接地处理,以确保其有效性。
另一方面,如果应用场景较为简单,如无线通讯干扰较小,EMC 要求不高等情况下,加装屏蔽盖的效果可能不是很明显,且可能增加系统成本和复杂度。
如果板子还有其他信号干扰,比如 2G、3G、4G 或者 Wi-Fi、Bluetooth、Zigbee 等等建议加上屏蔽盖。
ESP32-U4WDH 芯片支持外接 PSRAM 芯片,但仅支持乐鑫发布的 ESP-PSRAMXXH 芯片,不支持使用第三方 PSRAM 芯片。
硬件设计上,除了 CS 管脚外,其他所有管脚都可以与 Flash 复用,更多指南请参考 《ESP32 硬件设计指南》。
另外,PCB 设计时请注意 PSRAM 的 GND 到 ESP32-U4WDH 的 GND 要尽量短,否则可能会影响信号质量。
ESP32 芯片不支持使用 SPI0/SPI1(连接程序 flash)接口来外接 SD NAND flash 芯片。
如果要存储外部数据,建议使用 ESP32 的 SPI2、SPI3 或 SDIO 接口来外接 NAND SD 芯片。
SPI2 和 SPI3 可以使用任意 GPIO,但 SDIO 接口则只能使用指定接口,详细说明请见 《ESP32 技术规格书》 中的 外设管脚分配 章节。
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-C6 的 GPIO6(JTAG 管脚 MTCK)默认上电复位初始状态是输入使能和内部弱上拉电阻使能 (IE & WPU),是否可以通过烧写 eFuse 将其改为仅输入使能 (IE)?
可以。将 EFUSE DIS_PAD_JTAG 写为 1 后,GPIO6(JTAG 管脚 MTCK)的上电复位初始状态即改为输入使能 (IE),可参见 《ESP32-C6 技术规格书》 中的 2.2 管脚概述。
可通过 espefuse.py burn_efuse DIS_PAD_JTAG 指令来将 EFUSE DIS_PAD_JTAG 写为 1。
也可以在应用代码中添加如下代码来将 EFUSE DIS_PAD_JTAG 写为 1:
#include "esp_efuse.h"
#include "esp_efuse_table.h"
esp_efuse_write_field_bit(ESP_EFUSE_DIS_PAD_JTAG);