You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32通过Serial2经RS485发送十六进制数据失败求助

RS485通信无输出问题排查

问题描述

我需要通过RS485通信,把十六进制数据从ESP32 WROOM发送到继电器模块,使用的RS485模块是SN75H12VD。ESP32的Rx引脚接16、Tx引脚接17,使能引脚接4且已设为高电平。我尝试用HardwareSerial(Serial2)实现,但通过串口终端检查始终没有数据输出,以下是我的代码:

代码

#include <Arduino.h>
#include <HardwareSerial.h>

#define RXD2 16
#define TXD2 17
#define enable_pin 4

HardwareSerial mySer(2);

void setup() 
{
  Serial.begin(115200);
  Serial.println("hi");

  mySer.begin(9600, SERIAL_8N1, RXD2, TXD2);

  pinMode(RXD2, INPUT);
  pinMode(TXD2, OUTPUT); 
  
  pinMode(enable_pin, OUTPUT);
  delay(10); 
  digitalWrite(enable_pin, HIGH);
}

void loop() 
{
  if (!mySer) 
  { // 如果对象初始化失败,说明配置无效
    Serial.println("Invalid pin configuration, check config");
    while (1) { // 配置无效时停止运行
        delay (1000);
      }
  }
  else {
    Serial.println("hello");

    mySer.println("hey");
    mySer.write(0x13);
    mySer.write(0x01);
    mySer.write(0x03);
    mySer.write(0x40);
    mySer.write(0x02);
    mySer.write(0x01);
    mySer.write(0x00);
    mySer.write(0xC9);
    mySer.write(0x80);
    mySer.write(0x0A);
    delay(2000);

    mySer.write(0x13);
    mySer.write(0x01);
    mySer.write(0x03);
    mySer.write(0x40);
    mySer.write(0x02);
    mySer.write(0x00);
    mySer.write(0x00);
    mySer.write(0xC8);
    mySer.write(0x10);
    mySer.write(0x0A);
    delay(2000);
  }
}

排查要点

  • 移除手动引脚模式配置:调用mySer.begin()后,ESP32会自动配置串口引脚的输入输出模式,手动执行pinMode(RXD2, INPUT)和pinMode(TXD2, OUTPUT)可能干扰串口正常工作,建议删除这两行代码。
  • 确认RS485使能逻辑与时序:核对SN75H12VD的 datasheet,确认DE/RE引脚的电平要求(通常高电平为发送模式)。可将digitalWrite(enable_pin, HIGH)移到mySer.begin()之前,并延长延迟到100ms,确保使能信号稳定后再发送数据。
  • 验证Serial2本身可用性:暂时绕开RS485模块,将ESP32的TXD2引脚直接接到USB转串口模块的RX引脚,用串口终端查看是否能收到mySer.println("hey")的内容,确认Serial2硬件本身正常。
  • 修正初始化判断逻辑:ESP32 Arduino核心中,if (!mySer)的判断并不准确,建议在setup函数中添加Serial.print("Serial2 initialized: "); Serial.println(mySer);来验证初始化状态。
  • 简化测试代码:先注释掉批量十六进制发送代码,只保留mySer.write(0xAA)这类单字节测试数据,用示波器或逻辑分析仪观察TXD2引脚的波形,确认是否有信号输出。
  • 检查引脚冲突:确认16、17引脚未被ESP32其他外设(如SPI、I2C、SD卡等)占用,部分开发板可能将这些引脚复用为其他功能。

内容的提问来源于stack exchange,提问作者RBM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:45:44