ESP32串口通信 双机串口通信

这篇具有很好参考价值的文章主要介绍了ESP32串口通信 双机串口通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32串口

ESP32双机串口通信

环顾论坛居然无使用uart进行双击通信的案例或者讲解!!!
还是自己摸索吧!环境依旧是arduino(熟练使用ESP32后必得用vs code,这个IDE居然有时候函数不能跳转!!!)
ESP32串口通信 双机串口通信

双向通信代码

先贴代码(使用串口2,GPIO16、17):
esp32发送端

void setup() {
  // 启动串口调试输出
  Serial.begin(115200);
  // 初始化 ESP32 的串口2
  Serial2.begin(921600);
}


void loop() {
  // 发送一串数据到 ESP32 的串口2
  byte sendData[] = {0xF1, 0xF2, 0xF3, 0xF4, 0xFF, 0xF1};
  Serial2.write(sendData, sizeof(sendData));
  // 输出发送的数据
  Serial.print("Sent data: ");
  for (int i = 0; i < sizeof(sendData); i++) {
    Serial.print(sendData[i], HEX);
    Serial.print(" ");
  }
  Serial.println();
  delay(1000);
}

ESP32串口通信 双机串口通信

esp32接收端

// 中断处理函数
void serial2ISR() {
  // 检查是否有可用数据从 ESP32 的串口2 接收
  if (Serial2.available()) {
    byte receivedData[6];
    // 读取 6 个字节到 receivedData 数组中
    Serial2.readBytes(receivedData, 6);
   
    // 输出接收到的数据
    Serial.print("Received data: ");
    for (int i = 0; i < 6; i++) {
      Serial.print(receivedData[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }
}

void setup() {
  // 启动串口调试输出
  Serial.begin(115200);
  // 初始化 ESP32 的串口2
  Serial2.begin(921600);
  // 配置串口2的RX引脚为中断模式
  pinMode(16, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(16), serial2ISR, FALLING);
}

void loop() {
  // do nothing
}

ESP32串口通信 双机串口通信
注意:接收端不采用循环,目的当然是为了进行其他程序,必须cpu循环判断串口缓冲区的状态!
真心不推荐下列写法: 阻塞式代码是指会导致程序停止运行,直到某个操作完成的代码。

while (!Serial.available()) { 
// 等待串口有可用数据 
}

串口常用函数介绍

好了,进入串口函数使用
ESP32串口通信 双机串口通信

1. 初始化串口

首先设置波特率以及数据位、检验位和停止位,然后设置收发引脚以及参数是否反转信号和超时时间。

// 启动串口调试输出
  Serial.begin(115200);
  // 初始化 ESP32 的串口2
  Serial2.begin(921600);
//void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin, bool invert, unsigned long timeout_ms)


//baud参数是波特率,config参数是数据位、校验位和停止位的设置,rxPin和txPin参数是接收和发送数据的引脚,invert参数是是否反转信号,timeout_ms参数是超时时间。
// Serial2.begin(115200, SERIAL_8N1, 16, 17);

2. 串口打印

Serial.print(" ");
Serial.println();

区别在于print打印不换行,println打印换行
共同点:打印数值(可打印进制数)、字符、字符串

3. 串口输出数据

Serial2.write(sendData, sizeof(sendData));
//原型:write(const uint8_t *buffer, size_t size)

可以使用该串口输出数据,第一个参数是数据指针,size当然就是数据大小
还有一种简单方法输出数据

Serial.print();
Serial.println();

4. 串口缓冲区状态

Serial.available()

判断串口缓冲区的状态, 可以检查是否有数据可用

5. 读取串口字节

Serial.read();

读取串口一个字节, 如果已经接收到数据,则返回值为接收到的字节;否则返回 -1。

6. 读取串口字符串数据

Serial.readString();

读取字符串数据。该函数没有参数。如果已经接收到数据,则返回一个 String 对象,其中包含接收到的字符串;否则返回空字符串。

7. 读取多个字节数据

Serial.readBytes(buffer, length)
Serial.readBytesUntil(terminator, buffer, length);

读取多个字节的数据。buffer 参数是一个字节数组,用于存储读取到的数据;length 参数指定要读取的字节数。readBytes() 函数会一直阻塞程序,直到读取到指定长度的数据;而 readBytesUntil() 函数会在读取到终止字符(如\n)或达到最大长度时停止读取数据。这两个函数返回值为实际读取的字节数。

Serial.setTimeout(timeout)

设置在调用 readBytesUntil() 函数时等待数据到达的最长时间(以毫秒为单位)。timeout 参数是一个整数,表示最长等待时间。该函数没有返回值。
ESP32串口通信 双机串口通信
字符串简单示例:
发送端:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial2.begin(921600);
  Serial.println("init success!");
}

void loop() {
  // put your main code here, to run repeatedly:
  char *payload_char = "0xE0,0x5A,0x1B,0x6C,0x45,0x78";
  Serial.println(payload_char);
  Serial2.println(payload_char);
  delay(2000);
}

接收端:文章来源地址https://www.toymoban.com/news/detail-496242.html

void task1_uart2(void *pvParameters) {
  // Task 1 code here

  for (;;) {

    if (Serial2.available()) {
      String receivedData = Serial2.readString();
      Serial.print("receivedData: ");
      Serial.println(receivedData);
    }
    vTaskDelay(5);
  }
  //正常不会执行到这里
  vTaskDelete(NULL);
}

到了这里,关于ESP32串口通信 双机串口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网开发笔记(74)- 使用Micropython开发ESP32开发板之UART串口通信

    一、目的         这一节我们学习如何使用我们的ESP32开发板来进行串口通信,使用串口实现数据收发。 二、环境         ESP32 + USB转TTL线(3.3V) + Thonny IDE + 几根杜邦线 + Win10 接线方法:         ESP32和USB转TTL线都接在电脑USB口上,USB转TTL线的Tx接ESP32 P32,USB转TTL线

    2024年02月16日
    浏览(54)
  • STM32、ESP8266与MQTT连接阿里云物联网的串口通信异常解析

    STM32、ESP8266与MQTT协议连接阿里云物联网平台时常见的串口通信异常介绍 在构建物联网应用时,STM32、ESP8266与MQTT协议的结合是实现设备与网络间稳定通信的关键。然而,在连接阿里云物联网平台的过程中,串口通信异常成为了一个常见的挑战。本文将探讨这些异常现象及其可

    2024年04月22日
    浏览(43)
  • 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

    仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0006 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计 结合实际情况,基于51单片机设计一个排队叫号系统设计。该系统应满足的功能要求为: 由51单片机、按键模块、LCD1602液晶屏、蜂鸣器呼叫模块构成 具

    2024年02月04日
    浏览(43)
  • STM8、STM8S003F3P6 双机串口通信(片上串口)

    这里为什么要写串口通信,因为实际项目上使用了串口,STM8S003F3P6的串口简单啊,不值得一提。本文写的串口确实简单,因为这里我想先从简单的写起来,慢慢的把难的引出来。这里呢,做个提纲说明,本文设计的串口,是使用STM8S003F3P6片上的串口。由于STM8S003F3P6资源有限,

    2024年02月06日
    浏览(41)
  • STM32 HAL库 SPI主从双机通信

    最近因为项目需求,需要在一块板子内实现一个主机和五个从机的通信; 主机平台选用的是STM32F407VGT6,从机平台选用的是STM32F103C8T6;通信总线选用的是SPI总线。在构想是觉得采用SPI进行主从通信会很简单,但在实际开发的过程中,各种坑,通信时而正常时而混乱。不过在不

    2024年01月17日
    浏览(38)
  • STM32 通过HAL库实现双机SPI程序烧录之一SPI双机通信

    主要功能:STM32F407VET6作为主机,STM32F103ZET6作为从机实现F4通过SPI接口发送数据给F1进行串口打印功能 主要是使用STM32cubemx进行相关配置(使用这个软件不能只用于生成代码,要学会读懂生成的每一句代码这样才方便后期调试,不然出现问题根本找不到) 选择Serial Waire进行调试

    2024年02月08日
    浏览(39)
  • stm32 GPIO模拟SPI接口实现双机通信

    一、SPI协议简介     一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(主机输入从机输出)、MOSI(主机输出,针对主机来说)、SCLK(时钟,主机产生)、CS(片选,一般由主机发送或者直接使能,通常为低电平有效) ●

    2023年04月08日
    浏览(44)
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    最近要用到STM32的SPI从机模式,从其他板子读SPI数据过来,踩了2天坑,记录一下过程。 (因为hal库提供了三种函数,我调试的过程是阻塞、中断、DMA依次来调试学习的, 这份代码为使用DMA方式的代码。 ) 软件 :keil5、STM32CubeMX 硬件 :两块STM32F103C8T6最小系统 实现功能 :两

    2024年02月17日
    浏览(51)
  • STM32 HAL库 CAN双机通信接收无法进入中断、中断没有反应的解决方法

    在调试HAL库下的CAN双机(双F103ZET6)通信时,阻塞轮询接收完全正常,但是中断接收没有反应。翻看了GL的烧脑之路总结(一):Cubemx创建CAN通信工程,无法进入CAN中断的原因这篇文章以后,核实自己的硬件电路没有问题,于是对自己的工程文件进行整理,把 ①HAL_CAN_ConfigFi

    2024年02月04日
    浏览(59)
  • ESP8266模块教程,包含电路连接,固件烧录,串口通信

    Author : w2y        Date : 2022.06.28 资料下载: 链接:https://pan.baidu.com/s/1cSpXo7lVzewLXiB9PyWlvg?pwd=wh8a  提取码:wh8a    GPIO0 接地进入下载(烧录)模式,不接进入运行模式                     (下载模式)                                    (运行模式) MQTT_ESP-12S_D

    2024年02月01日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包