当前位置:首页 > Linux > 正文

Linux中串口如何挂载?

在Linux下挂载串口需识别设备文件(如/dev/ttyS0或/dev/ttyUSB0),使用minicom或screen等工具连接通信,并设置权限(如chmod或udev规则)确保访问。

理解串口设备

Linux将串口设备视为文件,路径通常为:

  • /dev/ttyS0:主板原生串口(COM1)
  • /dev/ttyUSB0:USB转串口设备(如PL2303、CH340芯片)
  • /dev/ttyACM0:CDC-ACM协议设备(如Arduino)

注意:物理串口与USB串口的区别在于设备命名前缀(ttyS vs ttyUSB)。


挂载串口的完整流程

步骤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配置波特率、数据位等:

Linux中串口如何挂载?  第1张

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+AKY

方法2:minicom(功能更全)

sudo apt install minicom    # Debian/Ubuntu安装
minicom -s                 # 进入配置菜单

配置步骤:

  1. 选择 Serial port setup
  2. 设置设备路径(如/dev/ttyUSB0
  3. 配置波特率(如115200 8N1
  4. 保存为默认配置(Save as dfl

方法3:picocom(轻量替代)

sudo apt install picocom
picocom -b 115200 /dev/ttyUSB0  # 指定波特率连接

退出:Ctrl+ACtrl+X


常见问题与解决

  1. 权限不足错误

    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
  2. 设备未识别

    • 检查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
  3. 数据传输乱码

    • 确认双方波特率/数据位一致
    • 关闭硬件流控:
      stty -F /dev/ttyUSB0 -crtscts

安全与注意事项

  1. 避免长期占用设备
    结束通信后及时关闭工具(如screenminicom),否则其他进程无法访问。
  2. 生产环境推荐
    使用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
  3. 物理连接检查
    • 确认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文档
0