在使用合宙的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转串口的模块就可以接收串口数据