0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP32的接口不能随便用,如何快速从Arduino过渡到ESP32的新手指南-进阶篇

伊娃老师来了 来源:伊娃来了 作者:伊娃来了 2023-12-12 15:54 次阅读

进阶篇

接续如何快速从Arduino过渡到ESP32的新手指南-基础篇,继续了解ESP32的各种引脚接口吧!

beccbb68-9584-11ee-8850-92fbcf53809c.jpg

内容介绍

1.SPI引脚

2.I2C引脚

3.UART引脚

4.RTC引脚

5.Strapping引脚

6.EN引脚

SPI引脚

引脚名称 对应脚位
VSPI_MOSI 23
VSPI_MISO 19
VSPI_CLK 18
VSPI_CS 5
HSPI_MOSI 13
HSPI_MISO 12
HSPI_CLK 14
HSPI_CS 15
CS 2

bed290b0-9584-11ee-8850-92fbcf53809c.jpg

SPI是什么

SPI(串行外设接口)是一种用于设备之间连接的技术。通过SPI,ESP32可以与其他同样使用SPI连接的传感器相互传输数据。

SPI的传输采用同步的时间线,也称为共享时钟信号,这有助于确保传输的数据准确一致。

SPI主要应用于需要短距离、高速串行通信的场景,例如需要快速同步数据的显示屏、SD卡读取器、加速度传感器等。

可以将SPI想象成一种精密的对话方式,其中主设备(ESP32)和 从设备(传感器、显示屏等)在共同的时钟引导下,按照特定的规则交流信息

在SPI通信中,通常有四个信号线:

1. MOSI(Master Out Slave In):主设备向从设备发送数据的线路。

2. MISO(Master In Slave Out):从设备向主设备发送数据的线路。

3. SCLK(Serial Clock):时钟信号,用于同步主设备和从设备之间的数据传输。

4. SS/CS(Slave Select/Chip Select):选择从设备的线路,用于告诉从设备何时准备好接收或发送数据。

SPI使用注意

避免冲突

当我们涉及到使用引脚时,尤其是在处理不是SPI接口的设备时,建议尽量避免直接使用SPI接口。这主要是因为在引入库的过程中,通常会默认使用SPI接口的一些关键引脚,比如SCLK、MOSI、MISO,这些引脚通常会被预设为SPI功能,可能导致冲突。

可自定义SPI引脚

在ESP32中,你可以通过代码调整SPI接口的配置,包括更改SCLK、MOSI、MISO等引脚。这为你提供了更大的灵活性,以适应不同的硬件连接需求。

可共用引脚

如果你需要同时连接多个SPI接口的设备,可以共用SCLK、MOSI、MISO这些引脚,然后通过单独的CS引脚来区分不同的设备。

VSPI和HSPI的选择

在ESP32中,VSPI和HSPI是两个可用的SPI接口,它们的功能是相同的。一些库可能默认使用其中一个,多数是VSPI。

I2C引脚

bedea22e-9584-11ee-8850-92fbcf53809c.jpg

I2C是什么

I2C(Inter-Integrated Circuit)与SPI类似,也用于跟各种设备进行沟通。

设备彼此沟通的规则,我们通常会称呼为串行通信协议

I2C使用注意

I2C引脚

I2C只需要两个引脚,不管连接几个I2C设备都是使用SDASCL。这使得它在连接多个设备时非常方便,因为它占用的引脚相对较少。

I2C 与 SPI 的 SDA 不一样

• SPI的SDA:在SPI通信中,SDA通常指的是MOSI(Master Out Slave In),全称是"Master Out Slave In",表示主设备输出数据给从设备。

• I2C的SDA:在I2C通信中,SDA表示Serial Data Line,全称是"Serial Data Line",表示是用于双向传输数据的串行数据线。

I2C 与 SPI 的 SCL 不一样

• SPI的SCL:在SPI通信中,时钟线通常称为SCLK(Serial Clock),全称是"Serial Clock"。SCLK用于同步数据的传输,主设备通过SCLK向从设备发送时钟脉冲,以确保数据的有效传输。

• I2C的SCL:在I2C通信中,SCL表示Serial Clock Line,全称是"Serial Clock Line"。I2C总线上的SCL同样用于同步数据传输,主设备通过SCL向从设备发送时钟信号。

如果一个设备使用I2C协议进行通信,那么它的SCL和SDA线就应该连接到I2C总线上。同样,如果一个设备使用SPI协议进行通信,那么它的SCLK、MISO、MOSI等线就应该连接到SPI总线上。这两者的线不能直接互连,否则通信将无法正常进行

UART引脚

beee058e-9584-11ee-8850-92fbcf53809c.jpg

UART是什么

UART代表通用异步收发器(Universal Asynchronous Receiver/Transmitter)。与SPI、I2C一样,是一种串行通信协议。

然而,与它们不同的是,UART没有共享的时钟信号。在UART通信中,发送和接收设备之间通过起始位、数据位、校验位和停止位来协调数据的传输。

可以理解为,

• UART:通过相对的时间来同步信息

• SPI、I2C:通过绝对的时钟信号来确保通信的同步。

在UART中,设备之间通过约定好的位序列来解释和同步数据。这种异步的方式使得UART更加灵活,适用于一些不需要严格时钟同步的场景。

UART使用注意

简单来说,只用UART2,UART0不能用

UART0

USB连接,通常用于烧录(flashing)和调试。

UART2

UART2可以连接到外部设备,如GPS、指纹传感器、距离传感器等,而不会影响烧录和调试功能。

RTC引脚

bef7dba4-9584-11ee-8850-92fbcf53809c.jpg

RTC是什么

当我们使用 RTC(Real-Time Clock,实时时钟)时,它实际上是一个独立的时钟系统。无论主电源是否关闭,RTC 都能够持续供电,确保设备能够在断电状态下仍然维持准确的时间。

在ESP32,我们通过RTC来唤醒待机状态的设备来达到省电的功能。

在ESP32等设备上,利用RTC来唤醒待机状态是一种常见的省电策略。待机状态(或深度睡眠)是一种极低功耗的模式,其中主处理器被关闭,但RTC仍在运行,以确保设备能够在预定的时间唤醒。这对于周期性地执行任务、定时采集数据或在特定事件发生时唤醒设备都是非常有用的。

一些常见的应用场景包括:

•定时唤醒:在预定的时间唤醒设备以执行特定的任务,例如数据采集、通信等。

•事件触发唤醒:当某些特定事件发生时,通过RTC唤醒设备,以便立即响应该事件。

•电池供电设备的省电模式:在电池供电的设备中,RTC的使用可以帮助最小化功耗,延长电池寿命。

Strapping 引脚

bf040ba4-9584-11ee-8850-92fbcf53809c.jpg

在ESP32中,存在两种重要的模式,分别是BOOT模式FLASH模式BOOT模式用于运行ESP32上的程序,而FLASH模式用于上传程序到ESP32。Strapping pins(引脚配置开关)用于配置ESP32的工作模式。通常情况下,带有内置USB/Serial的开发板会自动将这些引脚配置到正确的状态,以支持烧录或启动。然而,如果其他设备使用这些引脚,可能会导致ESP32进入错误的模式。

具体而言,Strapping pins是一组用于配置启动模式的引脚。在带有内置USB/Serial的开发板上,系统会根据需要自动配置这些引脚。但是,当其他设备使用相同的引脚时,可能会影响ESP32的启动模式,因此在设计硬件连接时需要特别注意。

EN引脚

bf11b2c2-9584-11ee-8850-92fbcf53809c.jpg

对于ESP32,EN(Enable)引脚是用于控制芯片的启用和禁用的关键引脚。以下是关于EN引脚的一些基本信息:

•默认状态:EN引脚默认是拉高的(pulled high),表示芯片处于启用状态。当EN引脚被拉高时,ESP32可以正常运行。

•拉低禁用:当EN引脚被拉低时,芯片被禁用,即停止工作。拉低EN引脚通常会导致芯片断电或进入低功耗模式,具体取决于系统的设计。

•复位功能:EN引脚还连接到一个按钮开关,通过按下按钮将EN引脚拉低,可以触发芯片的复位(reset)操作。这个按钮提供了一种手动重置芯片的方式。

拉高:给引脚高电位,拉低:给引脚低电位

总体而言,EN引脚提供了对ESP32芯片的启用和禁用控制,同时允许通过按钮触发复位。这是在开发和测试过程中非常有用的功能,因为它允许用户手动重置芯片,或者在需要时禁用芯片以减小功耗。

错误更正说明

ESP32 WROOM-32上传选择

当使用Arduino IDE上传程序到ESP32开发板时,对于常见的ESP32开发板,例如ESP32 WROOM-32,你可以在Arduino IDE中选择"ESP32 Dev Module"进行上传。这个开发板型通常是Arduino IDE默认支持的。

在先前的文章中使用的"ESP32 WROOM DA"选项是针对另一种ESP32模块的开发板。

bf25300e-9584-11ee-8850-92fbcf53809c.jpg虽然使用"ESP32 WROOM-32"开发板也能成功选择"ESP32 WROOM DA"上传,这可能是因为在Arduino IDE的"esp32"支持包中,"ESP32 WROOM-32"也有相应的支持。

因此,最终建议在使用ESP32 WROOM-32开发板时,选择"ESP32 Dev Module",以确保在Arduino IDE中有更全面的支持和兼容性。这样能够更方便地进行开发和调试,确保代码能够正确地烧录到ESP32开发板上。

bf309106-9584-11ee-8850-92fbcf53809c.png

后续我会继续分享零基础入门ESP32的教学文章,

也欢迎关注我的视频号与B站:伊娃老师来了。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148495
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184834
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15812
收藏 人收藏

    评论

    相关推荐

    ESP32-C2在小魔方遥控器的应用

    我们经常提起的ESP32-C3和ESP32-S3,ESP32-C2感觉话题度没有那么多,但其应用上不可小觑。今天小启就跟大家讲讲ESP32-C2在小魔方遥控器的应用。1射频性能拉满,成
    的头像 发表于 01-13 08:03 261次阅读
    <b class='flag-5'>ESP32</b>-C2在小魔方遥控器的应用

    ESP32-PICO系列技术规格书

    ESP32-PICO 系列是基于 ESP32 芯片 的系统级封装 (SiP) 产品。ESP32-PICO 系列产品包括 ESP32-PICO-D4、
    发表于 12-12 16:56 0次下载
    <b class='flag-5'>ESP32</b>-PICO系列技术规格书

    用了ESP32后,我的Arduino都积灰了,专为零基础新手准备的ESP32入门指南,为什么我不再使用Arduino

    Arduino 或许你已经熟悉Arduino,这是许多零基础者接触的首个开发板。然而,随着ESP32的崭露头角,它
    的头像 发表于 12-12 15:48 1864次阅读
    用了<b class='flag-5'>ESP32</b>后,我的<b class='flag-5'>Arduino</b>都积灰了,专为零基础<b class='flag-5'>新手</b>准备的<b class='flag-5'>ESP32</b>入门<b class='flag-5'>指南</b>,为什么我不再使用<b class='flag-5'>Arduino</b>

    如何快速Arduino过渡到ESP32新手指南-基础篇

    。 本文将为你提供 从ArduinoESP32 GPIO引脚平稳过渡指南 ,让你轻松解决各种问题。 基础篇内容 引脚使用注意事项 电源引脚 ADC引脚 DAC引脚 PWM引脚 To
    的头像 发表于 11-21 08:36 1000次阅读
    如何<b class='flag-5'>快速</b>从<b class='flag-5'>Arduino</b><b class='flag-5'>过渡到</b><b class='flag-5'>ESP32</b>的<b class='flag-5'>新手指南</b>-基础篇

    用了ESP32后,我的Arduino都积灰了,专为零基础新手准备的ESP32入门指南,为什么我不再使用Arduino

    Arduino 或许你已经熟悉Arduino,这是许多零基础者接触的首个开发板。然而,随着ESP32的崭露头角,它
    的头像 发表于 11-20 11:20 7795次阅读
    用了<b class='flag-5'>ESP32</b>后,我的<b class='flag-5'>Arduino</b>都积灰了,专为零基础<b class='flag-5'>新手</b>准备的<b class='flag-5'>ESP32</b>入门<b class='flag-5'>指南</b>,为什么我不再使用<b class='flag-5'>Arduino</b>

    ESP32开发指南

    ESP32开发指南介绍、开发板硬件介绍、开发准备、Windows搭建ESP32开发环境
    发表于 10-09 06:06

    【FireBeetle 2 ESP32-S3开发板测评】Arduino IDE快速开发体验

    【FireBeetle 2 ESP32-S3开发板测评】Arduino IDE快速开发体验
    的头像 发表于 07-23 09:03 1637次阅读
    【FireBeetle 2  <b class='flag-5'>ESP32</b>-S3开发板测评】<b class='flag-5'>Arduino</b> IDE<b class='flag-5'>快速</b>开发体验

    ESP32学习笔记:双核

    今天我们来说说ESP32 for Arduino 的双核。
    的头像 发表于 07-15 16:16 3024次阅读
    <b class='flag-5'>ESP32</b>学习笔记:双核

    如何在Arduino IDE中安装ESP32开发环境

    要在Arduino IDE中使用ESP32开发板,您需要先安装相应的开发环境。以下是在Arduino IDE中安装ESP32开发环境的步骤。
    的头像 发表于 07-13 16:48 1.2w次阅读
    如何在<b class='flag-5'>Arduino</b> IDE中安装<b class='flag-5'>ESP32</b>开发环境

    ESP32ESP32通过Internet进行通信

    电子发烧友网站提供《ESP32ESP32通过Internet进行通信.zip》资料免费下载
    发表于 06-15 09:58 2次下载
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通过Internet进行通信

    带有ESP32Arduino物联网云

    电子发烧友网站提供《带有ESP32Arduino物联网云.zip》资料免费下载
    发表于 06-15 09:16 3次下载
    带有<b class='flag-5'>ESP32</b>的<b class='flag-5'>Arduino</b>物联网云

    [esp32教程] 5、UART使用

    基于Ubuntu下,利用esp-idf进行esp32开发的教程
    的头像 发表于 06-13 09:04 4376次阅读
    [<b class='flag-5'>esp32</b>教程] 5、UART使用

    [esp32教程] 4、LEDC使用

    基于Ubuntu下,利用esp-idf进行esp32开发的教程
    的头像 发表于 06-03 09:39 3135次阅读
    [<b class='flag-5'>esp32</b>教程] 4、LEDC使用

    [esp32教程]2、按键中断

    基于Ubuntu,利用esp-idf进行esp32的教学
    的头像 发表于 05-05 09:04 2213次阅读
    [<b class='flag-5'>esp32</b>教程]2、按键中断

    [esp32教程]1、点灯之术

    基于Ubuntu下,利用esp-idf进行esp32开发的教程
    的头像 发表于 04-30 18:11 2433次阅读
    [<b class='flag-5'>esp32</b>教程]1、点灯之术