ES​P32芯片配有48个具有多种功能的引脚。并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用。

关于如何使用ESP32 GPIO有很多问题。你应该用什么pin?在项目中应该避免使用哪些pin?本文旨在成为一个为ESP32的GPIO提供一个简单易懂的参考指南。

下图显示了ESP-WROOM-32引脚。如果使用ESP32裸芯片构建自定义板,可以将其用作参考:

注意:并非所有的GPIO都可以在所有的开发板中访问,但是每个特定的GPIO都以相同的方式工作,而不管您使用的是什么开发板。

ESP32外围设备

ESP32外围设备包括:

18个模数转换器(ADC)通道

3个SPI接口

3个UART接口

2个I2C接口

16个脉冲宽度调制输出通道

2个数模转换器(DAC)

2个I2S接口

10个电容传感GPIO

ADC(模数转换器)和DAC(数模转换器)功能分配给特定的静态引脚。但是,您可以决定哪些管脚是UART、I2C、SPI、PWM等,您只需要在代码中分配它们。这是可能的,因为ESP32芯片的多路复用功能。

尽管您可以在软件上定义管脚属性,但默认情况下会分配管脚,如下图所示(这是带有36个管脚的ESP32 DEVKIT V1 DOIT板的示例-管脚位置可能会根据制造商而更改)。

此外,还有具有特定功能的管脚,使它们适合或不适合特定项目。下表显示了哪些管脚最适合用作输入和输出,哪些管脚需要小心。

绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出。

仅输入的管脚

GPIO34到39是GPIs–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些管脚用作输入:

GPIO 34

GPIO 35

GPIO 36

GPIO 39

集成在ESP-WROOM-32上的SPI闪存

GPIO 6到GPIO 11在一些ESP32开发板中是公开的。但是,这些引脚连接到ESP-WROOM-32芯片上的集成SPI闪存,不建议用于其他用途。所以,不要在项目中使用这些管脚:

GPIO 6(SCK/CLK)

GPIO 7(SDO/SD0)

GPIO 8(SDI/SD1)

GPIO 9(SHD/SD2)

GPIO 10(SWP/SD3)

GPIO 11(CSC/CMD)

电容式触摸GPIO

ESP32有10个内部电容式触摸传感器。它们能感应到任何带电物质的变化,比如人类皮肤。因此,他们可以检测到当用手指触摸gpio时引起的变化。这些引脚可以很容易地集成到电容垫,并取代机械按钮。电容式触针也可以用来唤醒ESP32的深度睡眠。

这些内部触摸传感器连接到这些GPIO:

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)

模数转换器(ADC)

ESP32有18 x 12位ADC输入通道(而ESP8266只有1 x 10位ADC)。这些是可用作ADC和相应通道的GPIO:

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)

注意:使用Wi-Fi时不能使用ADC2管脚。因此,如果您使用Wi-Fi,并且无法从ADC2 GPIO获取值,则可以考虑改用ADC1 GPIO,这应该可以解决您的问题。

ADC输入通道具有12位分辨率。这意味着您可以获得0到4095之间的模拟读数,其中0对应于0V,4095对应于3.3V。您还可以在代码上设置通道的分辨率以及ADC范围。

ESP32 ADC引脚没有线性行为。您可能无法区分0和0.1V,或3.2和3.3V。在使用ADC引脚时,您需要记住这一点。您将得到类似于下图所示的行为。

数模转换器(DAC)

ESP32上有2 x 8位DAC通道,用于将数字信号转换为模拟电压信号输出。这些是DAC通道:

DAC1 (GPIO25)

DAC2 (GPIO26)

RTC GPIOs

ESP32支持RTC GPIO。当ESP32处于深度睡眠状态时,可以使用路由到RTC低功耗子系统的GPIO。这些RTC gpio可用于在超低功耗(ULP)协处理器运行时将ESP32从深度睡眠中唤醒。以下GPIO可以用作外部唤醒源。

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)

脉冲宽度调制

ESP32 LED PWM控制器有16个独立通道,可以配置为生成具有不同特性的PWM信号。所有可以作为输出的管脚都可以用作PWM管脚(GPIOs 34到39不能产生PWM)。

要设置脉冲宽度调制信号,需要在代码中定义这些参数:

信号频率;

占空比;

脉宽调制通道;

要输出信号的GPIO。

I2C

ESP32有两个I2C通道,任何管脚都可以设置为SDA或SCL。将ESP32与Arduino IDE一起使用时,默认I2C引脚为:

GPIO 21(SDA)

GPIO 22(SCL)

如果要使用其他管脚,在使用导线库时,只需调用:

Wire.begin(SDA, SCL);

SPI

默认情况下,SPI的pin映射为:

中断

所有GPIO都可以配置为中断。

Strapping pins

ESP32芯片具有以下Strapping pins:

GPIO 0

GPIO 2

GPIO 4

GPIO 5(启动期间必须为高)

GPIO 12(启动期间必须低)

GPIO 15(启动期间必须为高)

这些用于将ESP32置于引导加载程序或烧录模式。在大多数内置USB/Serial的开发板上,您不需要担心这些管脚的状态。电路板使引脚处于正确的烧录或启动模式。有关ESP32引导模式选择的更多信息,请参见此处。

但是,如果你有外设连接到这些引脚,你可能会有困难,试图上传新的代码,用新固件烧录ESP32或重置板。如果您有一些外设连接到Strapping pins,并且您在上载代码或烧录ESP32时遇到问题,可能是因为这些外设阻止ESP32进入正确的模式。请阅读引导模式选择文档以指导您朝正确的方向前进。复位、烧录或启动后,这些引脚按预期工作。

Pins HIGH at Boot

一些GPIO在启动或重置时将其状态更改为高或输出PWM信号。这意味着,如果输出连接到这些gpio,则在ESP32重置或引导时可能会得到意外的结果。

GPIO 1

GPIO 3

GPIO 5

GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).

GPIO 14

GPIO 15

启用(EN)

启用(EN)是3.3V调节器的启用引脚。它被拉起来了,所以接地使3.3V调节器失效。例如,这意味着您可以使用连接到按钮的该管脚来重新启动ESP32。

GPIO电流消耗

根据ESP32数据表中的“推荐操作条件”部分,每个GPIO的绝对最大电流为40毫安。

ESP32内置霍尔效应传感器

ESP32还具有内置霍尔效应传感器,可检测周围磁场的变化。

转自:https://www.cnblogs.com/lnsane/p/13756430.html

ESP32引脚参考(转)的更多相关文章

  1. ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据

    由于微信小程序只支持BLE每次发送数据不大于20个字节,ESP32则有经典蓝牙.低功耗蓝牙两种模式. 要解决发送数据大于20个字节的问题,最简单实用的方式就是分包发送.如下图所示: 1.什么起始字符和 ...

  2. (0)开始 Raspberry Pi 项目前需要知道的 10 件事

    https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...

  3. 树莓派OLED模块的使用教程大量例程详解

    简介 Python有两个可以用的OLED库 [Adafruit_Python_SSD1306库]->只支持SSD1306 [Luma.oled库]->支持SSD1306 / SSD1309 ...

  4. ZedBoard 引脚约束参考

    从ISE转换到Vivado时,UCF转XDC的几种方法: (1)软件自动转换 参考网址:Youtube 用ISE->EDK->PlanAhead打开所需转换的工程文件*.xise,并打开b ...

  5. ESP32 开发之旅① 走进ESP32的世界 安装开发环境

    1.前言     欢迎大家来到ESP32的世界,从现在开始,笔者将带领大家慢慢揭开ESP32神秘的面纱.     在学习ESP32之前,博主希望读者能有ESP8266的学习基础(ESP32 Wifi模 ...

  6. ESP32 Ethernet to wifi

    参考网址 https://github.com/espressif/esp-iot-solution/tree/master/examples/eth2wifi RMII PHY Wiring(RMI ...

  7. 基于ESP32的智能家居管理系统的设计与实现

    基于ESP32的智能家居管理系统的设计与实现 ESP32的智能家居管理系统访问链接: https://www.cnblogs.com/easyidea/p/13101165.html 一.需求分析 1 ...

  8. esp32 Guru Meditation 错误解决方案(转)

    Guru Meditation本节将对打印在 Guru Meditation Error: Core panic'ed后面括号中的致错原因进行逐一解释.IllegalInstruction此 CPU ...

  9. ESP32 ADF windows开发环境搭建 适配ADF到ESP32A1S(转)

    搭建ESP32A1S的ADF开发环境 一,获取IDF和IDF-TOOL adf是乐鑫的音频开发框架,里面有许多乐鑫的音频开发API,同时ADF是基于IDF的.这一部分可以按照官网的教程一步一步来.官网 ...

随机推荐

  1. Django(41)详解异步任务框架Celery

    celery介绍   Celery是由Python开发.简单.灵活.可靠的分布式任务队列,是一个处理异步任务的框架,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery ...

  2. Vue&Element 前端应用开发之菜单和路由的关系

    我们一般的应用系统,菜单是很多功能界面的入口,菜单为了更好体现功能点的设置,一般都是动态从数据库生成的,而且还需要根据用户角色的不同,过滤掉部分没有权限的菜单:在Vue&Element的纯前端 ...

  3. CVPR2019论文观察:感知边缘检测的双向级联网络

    CVPR2019论文观察:感知边缘检测的双向级联网络 BDCN:Bi-Directional Cascade Network for Perceptual Edge Detection 摘要 探索多尺 ...

  4. GPU编程和流式多处理器(三)

    GPU编程和流式多处理器(三) 3. Floating-Point Support 快速的本机浮点硬件是GPU的存在理由,并且在许多方面,它们在浮点实现方面都等于或优于CPU.全速支持异常可以根据每条 ...

  5. CodeGen处理Synergy方法目录

    CodeGen处理Synergy方法目录 如果Synergy应用程序开发环境包括使用Synergy/DE xfServerPlus,则可以基于Synergy方法目录中包含的元数据生成代码.要启用此功能 ...

  6. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  7. 重新整理 .net core 实践篇—————静态中间件[二十一]

    前言 简单整理一下静态中间件. 正文 我们使用静态文件调用: app.UseStaticFiles(); 那么这个默认会将我们根目录下的wwwroot作为静态目录. 这个就比较值得注意的,可能刚开始学 ...

  8. 重新整理 .net core 实践篇—————文件系统[二十二]

    前言 简单介绍一下文件系统. 正文 文件系统,主要是下面3个接口组成: IFileProvider IFileInfo IDirectoryContents 那么他们的实现是: physicalFil ...

  9. 『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试

    目录 1.什么是弱网测试 2.弱网环境的影响 3.弱网环境测试场景 4.使用Fiddler进行弱网测试 (1)Fiddler模拟弱网环境 (2)设置弱网的参数 (3)进行弱网测试对比 (4)恢复设置 ...

  10. vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)

    文章很长,建议收藏起来,慢慢读! 备注:持续更新中..... 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 + 涨薪必备 疯 ...