问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32引脚入门指南(六):从理论到实践(UART)

创作时间:
作者:
@小白创作中心

ESP32引脚入门指南(六):从理论到实践(UART)

引用
CSDN
1.
https://blog.csdn.net/idfengming/article/details/138676580

ESP32开发板具有三个UART接口(UART0、UART1和UART2),支持异步通信(RS232和RS485)和IrDA,速率高达5mbps。这些接口提供了丰富的串行通信选项,允许与各种设备进行全双工通信。本文将详细介绍这三个UART接口的功能、引脚配置以及使用方法。

UART接口概述与引脚配置

UART 是一种全双工通信协议,允许数据同时在两个方向上传输。

在ESP32中,

UART0引脚连接到USB到串行转换器,用于烧录和调试。因此,不建议使用UART0引脚作其它用途。UART0的默认引脚是:

  • TX (发送):通常使用GPIO1(UART0_TXD)或GPIO3(UART0_TXD备用)
  • RX (接收):通常使用GPIO3(UART0_RXD)或GPIO1(UART0_RXD备用)

ESP32开发板上,UART1引脚是为集成闪存芯片保留的。并未引出,UART1的默认引脚是:

  • TX (发送):GPIO9(UART1_TXD)
  • RX (接收):GPIO10(UART1_RXD)

UART2是连接到uart设备(如GPS、指纹传感器、距离传感器等)的安全选项。UART2的默认引脚是:

  • TX (发送):GPIO16(UART2_TXD)
  • RX (接收):GPIO17(UART2_RXD)

请注意,UART0的部分功能用于串行下载和调试输出,使用时需谨慎。在初始化UART时,选择未与其他功能冲突的引脚,并确保它们已配置为UART模式。此外,某些开发板可能不会直接引出UART1的GPIO9和GPIO10,因为这些引脚是为集成闪存芯片保留的。

使用ESP32的UART

初始化UART接口涉及以下步骤:

  1. 配置参数:设置波特率、数据位数、停止位数、校验位类型。
  2. 分配引脚:选择GPIO引脚作为TX和RX。
  3. 驱动安装:分配ESP32资源给UART驱动。

应用场景与串口监视器

在Arduino环境下,

mySerial.println

会将数据发送到通过指定GPIO连接的设备。要通过电脑上的串口监视器查看这些输出,你需要确保电脑通过USB与ESP32的UART0(通常是默认串口)相连,并且波特率设置与ESP32上配置的UART0匹配。这将允许你通过串口监视器查看

Serial.println

的输出。

如果你的开发板支持UART2并引出了相应的GPIO引脚,你可以创建一个针对UART2的

HardwareSerial

实例,如下所示:


#include <HardwareSerial.h>  
HardwareSerial customSerial(2);  // 创建一个名为customSerial的新实例,关联到UART2  
void setup() {  
  customSerial.begin(9600);  // 初始化UART2,波特率为9600  
  Serial.begin(115200);  // 初始化UART0,通常用于与电脑通信  
}  
void loop() {  
  customSerial.println("Hello, UART2!");  // 使用customSerial发送数据  
}  

在这个例子中,HardwareSerial customSerial(2); 创建了一个新的HardwareSerial对象,它与UART2相关联。begin 方法用于配置波特率,确保在使用customSerial.println时,数据将通过UART2发送,而不是通过默认的Serial对象(即UART0)。

如果你想查看customSerial.println 发送的内容,你需要通过串口转USB适配器将UART2连接到电脑,并使用相应的串口软件(如串口监视器或Putty)以正确的波特率查看输出。请注意,确保你的开发板支持并引出了UART2的GPIO引脚。

在大多数情况下,当你仅使用默认的UART0(通常用于与电脑进行串口通信)时,不需要导入

<HardwareSerial.h>

库。因为Arduino IDE已经内置了对

Serial

对象的支持,它是一个预定义的

HardwareSerial

实例,关联到UART0。这意味着你可以直接使用

Serial.begin()

Serial.read()

Serial.write()

Serial.println()

等方法,而无需导入任何额外的库。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号