Arduino ESP32-C3 串口使用注意事项
1.要使用USB虚拟的串口,需要打开USB CDC选项。
ESP32-C3通过内置的USB虚拟串口(USB CDC)可直接作为Arduino框架的串口通信使用,无需额外USB转串口芯片。
如果enable了USB CDC,此时的Serial.println( )对应的就是USB虚拟串口,并且Arduino IDE的串口监视器也能看到该串口的信息(前面有一大堆的系统信息,最后才是你的虚拟串口数据)。如果这个时候你要使用默认的硬件串口(Serial0),可以
Serial0.begin(9600, SERIAL_8N1, -1, -1); 其中-1, -1,代表默认的RX:20,TX:21
2.USB CDC与硬件UART的区别
(1)USB CDC(Communication Device Class)是通过USB接口实现的虚拟串口
(2)硬件UART是传统的串行通信接口,需要物理TX/RX引脚
(3)ESP32-C3的USB CDC功能不需要外部电路,直接通过USB接口实现
3.虽然硬件串口可以自己指定引脚,但是貌似硬件串口只能是资料里面说的2个,(加上虚拟串口一共3个),硬件串口超过3个实测好像是无效的,如下测试代码,其中MySerial2编译能过,但是实测串口无输出。
#include <HardwareSerial.h>
HardwareSerial MySerial0(0);
HardwareSerial MySerial1(1);
HardwareSerial MySerial2(2);
void setup()
{Serial.begin(115200); //USB 虚拟串口,需要开CDCMySerial0.begin(115200, SERIAL_8N1, -1, -1); //默认串口,20,21MySerial1.begin(115200, SERIAL_8N1, 9, 10);//自定义串口MySerial2.begin(115200, SERIAL_8N1, 2, 3);//第三组自定义串口,编译能过,实测貌似无效
}
void loop(){Serial.print("Serial");MySerial0.print("MySerial0");MySerial1.print("MySerial1");MySerial2.print("MySerial2");delay(1000);
}