esp32s3使用多串口

电子说

1.3w人已加入

描述

esp32s3使用多串口

我按照别人博客中设置串口2,串口打印有问题,因为没有看到esp32s3 多串口,就总结了一下自己的经验

下图为esp32的引脚图

控制器

下图为esp32s3的引脚图

控制器

ESP32-S3 有三个 UART(通用异步收发器)控制器,即 UART0、UART1、UART2,支持异步通信(RS232 和 RS485)和 IrDA,通信速率可达到 5 Mbps。UART 控制器具有如下特性:

  • 支持三个可预分频的时钟源
  • 可编程收发波特率
  • 三个 UART 的发送 FIFO 以及接收 FIFO 共享 1024 x 8-bit RAM
  • 全双工异步通信
  • 支持输入信号波特率自检功能
  • 支持 5/6/7/8 位数据长度
  • 支持 1/1.5/2/3 个停止位
  • 支持奇偶校验位
  • 支持 AT_CMD 特殊字符检测
  • 支持 RS485 协议
  • 支持 IrDA 协议
  • 支持 GDMA 高速数据通信
  • 支持 UART 唤醒模式
  • 支持软件流控和硬件流控

每个UART都分配有默认的 GPIO,但是根据您的 ESP32 电路设计进行更改,这些引脚可能与嵌入式闪存、板载 PSRAM 或外围设备冲突。

任何 GPIO 都可以用于使用 GPIO 矩阵的硬件 UART,因此为避免冲突,只需在构造时提供tx和 rx 引脚即可。

下面是ESP32-S3 UART的默认引脚。

UART0UART1UART2
发送(TX)IO43IO17 / 任意IO任意IO
接收(RX)IO44IO18 / 任意IO任意IO

因为我看一般说明串口1最好不要有占用,一般去使用串口0和串口2

重点怎么去知道自己arduino库是默认哪个引脚

我使用的是platformio开发,arduino ide应该同理
下图该文件下,我的路径是如下图,找到该.c文件,
控制器

这个是我的uart2的发送引脚,这个没有更改过该文件,uart2可以自定io这个没试过,毕竟是默认文件就没更改了,理论上应该可以自定义。
控制器

控制器

控制器

测试程序 UART2(TX 20 RX 19)

// Sender发送端

void setup() {
Serial.begin(115200);
Serial2.begin(115200);
Serial.println("i am serial 0");

}

void loop() {
mySerial2.println("i am serial 2ww");
delay(1000);
}

测试效果

控制器

总结

最终不管芯片型号怎么改变,都可以在那个.cpp文件进行查看。

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分