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

2024-05-11 03:28

本文主要是介绍ESP32引脚入门指南(六):从理论到实践(UART),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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接口涉及以下步骤:

  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的新实例,关联到UART2void setup() {customSerial.begin(9600);  // 初始化UART2,波特率为9600Serial.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()等方法,而无需导入任何额外的库。

这篇关于ESP32引脚入门指南(六):从理论到实践(UART)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978376

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分