最近手里有一台ESP32,想着把这一台设备玩起来的想法,开始用Arduino IDE开发这个设备。
我手里这台ESP32,型号为ESP32-WROOM-32UE,是一个双核的开发板。
先抛出结论,再来给大家讲讲最近的踩坑过程。
ESP32只能接TTL电平,不能直接接USB转RS232,否则串口调试助手会出现乱码
具体分析:
最初使用Arduino IDE开发时,发现PC通过USB转232设备,获取数据报文会出现乱码,和USB端口连接的串口监视器获取的数据有不同。
我采取的方式是USB转RS232的设备RX口连接到ESP32的TX。USB转RS232的设备TX口连接到ESP32的RX口。
尝试了一系列方法,均无效
1、修改波特率
2、更改CPU时钟频率从9600到115200都尝试过。
3、更改软件版本,更改软件Thonny。
4、更换串口转232转换设备
直到最后,买了一台Arduino,偶然发现Arduino的串口通信是TTL电平,而RS232是高低电平与电压反向。
RS232的高电平是-13V;低电平是+13V;TTL 高电平为3.3V,低电平为0V,二者之间电压不同,所以出现乱码
后来查询资料得知,ESP32有3个3.3V TTL电平的UART接口,由于UART1默认引脚连接到SPI闪存,所以只能连接UART0和ART1.
之所以USB可以连接到ESP32,获取一个COM端口,是因为USB通过转换芯片与TX RX相连,USB作为一个虚拟串口出现。