ESP32开发板具有UART0、UART1和UART2三个UART接口,支持异步通信(RS232和RS485)和IrDA速率高达5mbps。这些接口提供了丰富的串行通信选项,允许与各种设备进行全双工通信。
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接口涉及以下步骤:
- 配置参数:设置波特率、数据位数、停止位数、校验位类型。
- 分配引脚:选择GPIO引脚作为TX和RX。
- 驱动安装:分配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()
等方法,而无需导入任何额外的库。