Linux 使用 ESP-IDF (VSCode) 连接 CH340 串口的32单片机

发布于 5 天前  50 次阅读


发现相对于Windows ,Linux的编译速度实在是太快了,就寻思着用Linux来写ESP32的代码,但是一直有 Something went wrong while getting the serial port list 的错误,所以就一直拖着。今天晚上有空,寻思着把开发环境搞一搞。

首先,我使用的系统是基于 Ubuntu 的 Zorin 17.1,在开发版直接连上电脑后,ls /dev 里在设备连接前后没有变化。我以为是驱动问题,就先更新驱动

更新 CH340 的驱动

前往 https://www.wch.cn/download/CH341SER_LINUX_ZIP.html 下载对应的Linux驱动,之后按照里面MarkDown文件直接进行编译,后来出现了 Loading of unsigned module is rejected 的问题,发现是驱动签名的问题,解决方案是在下载的 driver/Makefile 里面最上面加上

CONFIG_MODULE_SIG=n

之后在 driver 目录里执行

make
sudo make install

驱动便成功安装。但是此时 /dev 下依然没有对应的设备,sudo dmesg | tail

[ 1898.588795] usb 3-1.3: usbfs: interface 0 claimed by usb_ch341 while 'brltty' sets config #1
[ 1898.591927] usb_ch341 3-1.3:1.0: ch341 usb device disconnect.

发现是BRLTTY(一种用于盲人的屏幕阅读软件)识别了设备,并将其作为键盘设备。这个软件对于我们目前来说是没用的,直接卸载怕依赖关系出现问题,所以我们选择禁用它

systemctl stop brltty-udev.service
systemctl mask brltty-udev.service
systemctl stop brltty.service
systemctl disable brltty.service

此时/dev下出现了ttyCH341USB0设备,说明这个设备终于成功被识别上并且装上驱动了,但是现在去 VSC还是有 Something went wrong while getting the serial port list 的问题。

授予用户串口的访问权限

直接使用 minicom -D /dev/ttyCH341USB0 -b 115200 ,报错:minicom: 无法打开文件 /dev/ttyCH341USB0: 权限不够 ,但是 sudo minicom -D /dev/ttyCH341USB0 -b 115200 可以正常使用到串口,并且接受单片机的正常串口输出,说明驱动已经没问题呢,是权限配置有问题。

我们开始配置自己的权限。

sudo usermod -aG dialout <你的用户名>        # 串口设备在Linux系统中属于 dialout 组,将自己加入 dialout 组之后通常可以直接获取串口的权限(你可能需要重启电脑)

# 如果重启后依然没有串口的权限
sudo chmod g+rw /dev/ttyCH341USB0
sudo usermod -aG uucp <你的用户名> 

# 之后重启

此时执行 minicom -D /dev/ttyCH341USB0 -b 115200 应该可以正常获取串口的内容了,但是打开 VSC 之后,你发现当你想要切换串口时,Something went wrong while getting the serial port list 依然出现,查看 ESP-IDF 日志,发现获取的串口列表是空的。用 ESP-IDF 的 Python环境,发现直接操作也不能获取串口列表,重新装 pyserial 之后问题依旧

直接配置 VSC 的配置文件

用VSC打开VSC的插件配置文件夹,即 用户文件夹/.vscode/extensions ,将 /dev/ttyUSB0 全部置换为 /dev/ttyCH341USB0 ,之后重启VSC,重新回到你的工程文件夹,这时候你就可以惊喜的发现,现在的串口改成了 /dev/ttyCH341USB0 ,现在你可以正常下载程序、查看输出了,算是一种折中的办法吧

由此,你可以在 Linux 系统下享受 快速的 编译速度,继续你的 ESP32 开发之旅吧!

参考

https://blog.csdn.net/watershade2010/article/details/134642771

https://blog.csdn.net/qq_39851127/article/details/125988455

https://blog.csdn.net/WCH_TechGroup/article/details/134945508