进阶篇
接续如何快速从Arduino过渡到ESP32的新手指南-基础篇,继续了解ESP32的各种引脚接口吧!
内容介绍
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 |
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引脚
I2C是什么
I2C(Inter-Integrated Circuit)与SPI类似,也用于跟各种设备进行沟通。
设备彼此沟通的规则,我们通常会称呼为串行通信协议。
I2C使用注意
I2C引脚
I2C只需要两个引脚,不管连接几个I2C设备都是使用SDA和SCL。这使得它在连接多个设备时非常方便,因为它占用的引脚相对较少。
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引脚
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引脚
RTC是什么
当我们使用 RTC(Real-Time Clock,实时时钟)时,它实际上是一个独立的时钟系统。无论主电源是否关闭,RTC 都能够持续供电,确保设备能够在断电状态下仍然维持准确的时间。
在ESP32,我们通过RTC来唤醒待机状态的设备来达到省电的功能。
在ESP32等设备上,利用RTC来唤醒待机状态是一种常见的省电策略。待机状态(或深度睡眠)是一种极低功耗的模式,其中主处理器被关闭,但RTC仍在运行,以确保设备能够在预定的时间唤醒。这对于周期性地执行任务、定时采集数据或在特定事件发生时唤醒设备都是非常有用的。
一些常见的应用场景包括:
• 定时唤醒:在预定的时间唤醒设备以执行特定的任务,例如数据采集、通信等。
• 事件触发唤醒:当某些特定事件发生时,通过RTC唤醒设备,以便立即响应该事件。
• 电池供电设备的省电模式:在电池供电的设备中,RTC的使用可以帮助最小化功耗,延长电池寿命。
Strapping 引脚
在ESP32中,存在两种重要的模式,分别是BOOT模式和FLASH模式。BOOT模式用于运行ESP32上的程序,而FLASH模式用于上传程序到ESP32。Strapping pins(引脚配置开关)用于配置ESP32的工作模式。通常情况下,带有内置USB/Serial的开发板会自动将这些引脚配置到正确的状态,以支持烧录或启动。然而,如果其他设备使用这些引脚,可能会导致ESP32进入错误的模式。
具体而言,Strapping pins是一组用于配置启动模式的引脚。在带有内置USB/Serial的开发板上,系统会根据需要自动配置这些引脚。但是,当其他设备使用相同的引脚时,可能会影响ESP32的启动模式,因此在设计硬件连接时需要特别注意。
EN引脚
对于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模块的开发板。
虽然使用"ESP32 WROOM-32"开发板也能成功选择"ESP32 WROOM DA"上传,这可能是因为在Arduino IDE的"esp32"支持包中,"ESP32 WROOM-32"也有相应的支持。
因此,最终建议在使用ESP32 WROOM-32开发板时,选择"ESP32 Dev Module",以确保在Arduino IDE中有更全面的支持和兼容性。这样能够更方便地进行开发和调试,确保代码能够正确地烧录到ESP32开发板上。
后续我会继续分享零基础入门ESP32的教学文章,
也欢迎关注我的视频号与B站:伊娃老师来了。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !