在使用合宙的ESP32C3的串口的时候遇到一个莫名其妙的问题,串口无法正常工作。程序能够正常上传,但是串口没有数据。

仔细阅读官方的文档也没有找到原因。

 串口芯片的驱动也正常安装,能够识别到CH343

 经过不断探索发现是Flash Mode的问题,默认是QIO,需要设置为DIO

需要注意的是USB CDC On Boot的选项也要设置为Disable,如果Enable的话会占用默认串口。

 

 此外对于ESP32的串口引脚可以通过程序配置,而且是硬件层面实现,不是Uno中的softwareSerial模式。

看下面这个例子就很清楚了

// Need this for the lower level access to set them up.
#include <HardwareSerial.h>

//Define two Serial devices mapped to the two internal UARTs
HardwareSerial MySerial0(0);
HardwareSerial MySerial1(1);

void setup()
{
    // For the USB, just use Serial as normal:
    Serial.begin(115200);

    // Configure MySerial0 on pins TX=6 and RX=7 (-1, -1 means use the default)
    MySerial0.begin(9600, SERIAL_8N1, -1, -1);
    MySerial0.print("MySerial0");

    // And configure MySerial1 on pins RX=D9, TX=D10
    MySerial1.begin(115200, SERIAL_8N1, 9, 10);
    MySerial1.print("MySerial1");
}

void loop(){
  MySerial0.print("MySerial0");
  MySerial1.print("MySerial1");
  delay(10);
}

Serail0为默认USB连线的串口,可以在串口监视器中看到数据。

也可以接个USB转串口模块,接到6、7号引脚接收串口数据。

 

 

Serial1被绑定到9号和10号引脚,连接一个USB转串口的模块就可以接收串口数据

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐