理解串口设备
Linux将串口设备视为文件,路径通常为:
/dev/ttyS0
:主板原生串口(COM1)/dev/ttyUSB0
:USB转串口设备(如PL2303、CH340芯片)/dev/ttyACM0
:CDC-ACM协议设备(如Arduino)
注意:物理串口与USB串口的区别在于设备命名前缀(
ttyS
vsttyUSB
)。
挂载串口的完整流程
步骤1:识别串口设备
插入串口设备后执行:
dmesg | grep tty # 查看内核日志,定位设备名 ls /dev/tty* # 列出所有串口设备
示例输出:
[ 1234.567] usb 1-1: ch341-uart converter now attached to ttyUSB0
步骤2:配置访问权限
默认需root权限操作,推荐将用户加入dialout
组:
sudo usermod -aG dialout $USER # 添加当前用户到dialout组 newgrp dialout # 刷新组权限(或重启生效)
验证权限:
ls -l /dev/ttyUSB0 # 应显示组为"dialout"
步骤3:设置串口参数(关键)
使用stty
配置波特率、数据位等:
stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb # 115200波特率,8数据位,无校验
常用参数:
115200
:波特率(常见值:9600, 19200, 38400, 57600)cs8
:8位数据位-parenb
:无奇偶校验-cstopb
:1位停止位(若设为cstopb
则为2位)
步骤4:使用工具进行通信
方法1:screen
(最简方式)
screen /dev/ttyUSB0 115200 # 连接设备
退出:Ctrl+A
→ K
→ Y
方法2:minicom
(功能更全)
sudo apt install minicom # Debian/Ubuntu安装 minicom -s # 进入配置菜单
配置步骤:
- 选择 Serial port setup
- 设置设备路径(如
/dev/ttyUSB0
) - 配置波特率(如
115200 8N1
) - 保存为默认配置(
Save as dfl
)
方法3:picocom
(轻量替代)
sudo apt install picocom picocom -b 115200 /dev/ttyUSB0 # 指定波特率连接
退出:Ctrl+A
→ Ctrl+X
常见问题与解决
-
权限不足错误
sudo chmod 666 /dev/ttyUSB0 # 临时解决方案(重启失效)
永久方案:创建udev规则
echo 'KERNEL=="ttyUSB*", MODE="0666"' | sudo tee /etc/udev/rules.d/50-serial.rules sudo udevadm control --reload-rules
-
设备未识别
- 检查USB转串口芯片驱动:
lsusb # 查看设备ID(如0403:6001为FTDI芯片) sudo modprobe usbserial # 加载通用驱动
- 安装专用驱动(如CH340):
sudo apt install build-essential git clone https://github.com/juliagoda/CH341SER cd CH341SER && make load
- 检查USB转串口芯片驱动:
-
数据传输乱码
- 确认双方波特率/数据位一致
- 关闭硬件流控:
stty -F /dev/ttyUSB0 -crtscts
安全与注意事项
- 避免长期占用设备
结束通信后及时关闭工具(如screen
或minicom
),否则其他进程无法访问。 - 生产环境推荐
使用ser2net
将串口映射为TCP端口,实现远程安全访问:sudo apt install ser2net echo "3333:raw:0:/dev/ttyUSB0:115200 8DATABITS NONE" | sudo tee -a /etc/ser2net.conf sudo systemctl restart ser2net
- 物理连接检查
- 确认TX/RX线序正确(设备TX接适配器RX,反之亦然)
- 使用万用表检测电压(通常3.3V或5V)
Linux挂载串口的核心步骤:识别设备→授权用户→配置参数→选择工具通信,掌握stty
配置与screen/minicom
工具可应对多数场景,遇到故障时优先验证权限与波特率设置,串口通信是嵌入式开发和硬件调试的基础技能,建议通过实际设备(如Arduino)进行练习。
引用说明:
- Linux串口编程参考:Linux Serial HOWTO
- udev规则配置:Arch Linux Wiki
- 安全通信建议:RFC 2217 (Network Console)
- 驱动兼容性列表:kernel.org USB-serial文档
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/37414.html