ESP32 是乐鑫开发的一系列低成本、低功耗的片上系统微控制器,具有 Wi-Fi 和蓝牙无线功能以及双核处理器。
目录
一、特点
二、硬件内存
三、支持外设
四、引脚定义
1、仅输入引脚
2、SPI闪存
3、电容式触摸 IO
4、ADC
5、DAC
6、RTC GPIO
7、PWM
8、I2C
9、SPI
10、中断
11、Strapping
12、高电平 Boot 引脚
13、EN引脚
14、GPIO电流消耗
15、霍尔效应传感器
一、特点
低功耗:ESP32 与其他单片机相比功耗极低,支持深度睡眠等低功耗模式状态
Wi-Fi 功能:ESP32 可以轻松连接到 Wi-Fi 网络以及互联网,或创建自己的 Wi-Fi 无线网络,可以使用多个设备的 Wi-Fi 功能相互通信
蓝牙:ESP32 支持经典蓝牙和低功耗蓝牙,适用于各种物联网应用
双核:大多数 ESP32 都是双核的,配备了 2 个 Xtensa 32 位 LX6 微处理器,运行频率为 160 或 240 MHz
丰富的外设接口:ESP32 支持多种输入和输出外设,如电容式触摸、ADC、DAC、UART、SPI、I2C、PWM
兼容Arduino编程
兼容 MicroPython
二、硬件内存
ROM: 448 KB(用于启动和运行)
SRAM:520 KB(用于数据和指令)
RTC 快速 SRAM:8 KB(用于从深度睡眠模式启动 RTC 期间的数据存储和主 CPU)
RTC 慢速 SRAM:8KB(用于深度睡眠模式下的协处理器访问)
eFuse:1 Kb(其中 256 位用于系统(MAC 地址和芯片配置),其余 768 位保留用于客户应用,包括 Flash-Encryption 和 Chip-ID)
嵌入式闪存:通过 ESP32-D2WD 和 ESP32-PICO-D4 上的 IO16、IO17、SD_CMD、SD_CLK、SD_DATA_0 和 SD_DATA_1 内部连接的闪存。
0 MiB(ESP32-D0WDQ6、ESP32-D0WD 和 ESP32-S0WD 芯片)
2 MiB (ESP32-D2WD 芯片)
4 MiB(ESP32-PICO-D4 SiP 模组)
三、支持外设
18 个模数转换器 (ADC) 通道
3 个 SPI 接口
3 个 UART 接口
2 个 I2C 接口
16 个 PWM 输出通道
2 个数模转换器 (DAC)
2 个 I2S 接口
10 个电容式感应 GPIO
四、引脚定义
1、仅输入引脚
GPIO 34 至 GPIO 39 没有内部上拉或下拉电阻,它们只能用作输入,不能用作输出。
2、SPI闪存
GPIO 6 至 GPIO 11 连接到 ESP-WROOM-32 芯片上的集成 SPI 闪存,不建议用于其他用途。
3、电容式触摸 IO
ESP32 具有 10 个内置电容式触摸传感器。它们可以感知任何带有电荷的东西的变化,可以检测用手指触摸GPIO时引起的变化。这些引脚可以集成到电容焊盘中取代机械按钮,也可用于 ESP32 从深度睡眠中唤醒。
T0 (GPIO 4)
T1 (GPIO 0)
T2 (GPIO 2)
T3 (GPIO 15)
T4 (GPIO 13)
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)
T9 (GPIO 32)
4、ADC
ESP32 具有 18 x 12 位 ADC 输入通道,12位分辨率可以获得从 0 到 4095 的模拟读数,其中 0 对应 0V,4095 对应 3.3V。还可以在代码和ADC范围上设置通道的分辨率。
注意ADC 引脚没有线性行为。
注意使用 Wi-Fi 时不能使用 ADC2 引脚。
ADC1_CH0 (GPIO 36)
ADC1_CH1 (GPIO 37)
ADC1_CH2 (GPIO 38)
ADC1_CH3 (GPIO 39)
ADC1_CH4 (GPIO 32)
ADC1_CH5 (GPIO 33)
ADC1_CH6 (GPIO 34)
ADC1_CH7 (GPIO 35)
ADC2_CH0 (GPIO 4)
ADC2_CH1 (GPIO 0)
ADC2_CH2 (GPIO 2)
ADC2_CH3 (GPIO 15)
ADC2_CH4 (GPIO 13)
ADC2_CH5 (GPIO 12)
ADC2_CH6 (GPIO 14)
ADC2_CH7 (GPIO 27)
ADC2_CH8 (GPIO 25)
ADC2_CH9 (GPIO 26)
5、DAC
ESP32 上有 2 x 8 位 DAC 通道,用于将数字信号转换为模拟电压信号输出。
DAC1 (GPIO25)
DAC2 (GPIO26)
6、RTC GPIO
当 ESP32 处于深度睡眠状态时,可以使用路由到 RTC 低功耗子系统的 GPIO。当超低功耗 (ULP) 协处理器运行时,这些 RTC GPIO 可用于将 ESP32 从深度睡眠中唤醒。
RTC_GPIO0 (GPIO36)
RTC_GPIO3 (GPIO39)
RTC_GPIO4 (GPIO34)
RTC_GPIO5 (GPIO35)
RTC_GPIO6 (GPIO25)
RTC_GPIO7 (GPIO26)
RTC_GPIO8 (GPIO33)
RTC_GPIO9 (GPIO32)
RTC_GPIO10 (GPIO4)
RTC_GPIO11 (GPIO0)
RTC_GPIO12 (GPIO2)
RTC_GPIO13 (GPIO15)
RTC_GPIO14 (GPIO13)
RTC_GPIO15 (GPIO12)
RTC_GPIO16 (GPIO14)
RTC_GPIO17 (GPIO27)
7、PWM
ESP32 LED PWM 控制器具有 16 个独立通道,可配置为生成具有不同属性的 PWM 信号。所有可以用作输出的引脚都可以用作PWM引脚(GPIO 34至39不能产生PWM)。
设置PWM信号,需要定义信号频率、占空比、PWM通道、要输出信号的 GPIO。
8、I2C
ESP32 有两个 I2C 通道,任何引脚都可以设置为 SDA 或 SCL。ESP32 与 Arduino IDE 配合使用时默认的 I2C 引脚为:GPIO 21 (SDA)、GPIO 22 (SCL)。
如果想使用其他引脚,调用:Wire.begin(SDA, SCL);
9、SPI
默认 SPI 的引脚映射为:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
10、中断
所有GPIO都可以配置为中断。
11、Strapping
Strapping 引脚用于将 ESP32 置于引导加载程序或闪烁模式。大多数内置 USB/串口的开发板上,无需担心这些引脚的状态。但如果外围设备连接到这些引脚,则在代码烧录、刷新固件或复位开发板时可能会遇到问题。
GPIO 0(必须为低电平才能进入启动模式)
GPIO 2(启动期间必须为浮动或低电平)
GPIO 4
GPIO 5(启动期间必须为高电平)
GPIO 12(启动期间必须为低电平)
GPIO 15(启动期间必须为高电平)
12、高电平 Boot 引脚
一些 GPIO 在启动或复位时将其状态改为高电平或输出 PWM,如果外设连接到这些 GPIO,在 ESP32 复位或启动时可能出现问题。
GPIO 1
GPIO 3
GPIO 5
GPIO 6 至 GPIO 11(集成 SPI 闪存)
GPIO 14
GPIO 15
13、EN引脚
EN 是 3.3V 稳压的使能引脚。使用被拉起,接地禁用稳压。
14、GPIO电流消耗
ESP32 每个 GPIO 消耗的绝对最大电流为 40mA。
15、霍尔效应传感器
ESP32 内置霍尔效应传感器,可检测周围磁场的变化。