Linux下如何配置串口通信的详细步骤?

在Linux系统中,串口通信是一种常见的设备间数据交互方式,广泛应用于嵌入式开发、工业控制、传感器数据采集等领域,配置串口通信涉及硬件连接、驱动加载、参数设置、权限管理及软件测试等多个环节,以下将详细说明具体步骤和注意事项。

linux下如何配置串口通信

硬件连接与驱动检查

硬件连接

首先需要确保物理连接正确,Linux下的串口设备分为内置串口(通常为/dev/ttyS0~/dev/ttyS3,对应主板上的DB9接口)和USB转串口(通常为/dev/ttyUSB0~/dev/ttyUSBX,通过USB转串口芯片如PL2303、CH340等连接),连接时需注意:

  • RS232串口:使用交叉连接(TX发送脚接RX接收脚,RX接收脚接TX发送脚),共地(GND脚相连)。
  • RS485串口:需采用半双工通信模式,连接时注意A/B线对应,并在总线两端加终端电阻。
  • USB转串口:直接插入USB接口,Linux通常会自动识别为串口设备。

驱动检查

硬件连接后,需确认驱动是否正常加载。

  • 查看串口设备:使用ls /dev/tty*命令,若出现/dev/ttyS0(内置)或/dev/ttyUSB0(USB转串口),则表示设备已被识别。
  • 检查驱动加载状态:通过dmesg | grep tty查看内核日志,若包含”ttyS0″或”ttyUSB0″相关信息,说明驱动已加载。
  • USB转串口驱动问题:若未识别,可能是驱动缺失,以CH340芯片为例,可安装linux-headers-$(uname -r)(内核头文件)后,手动编译安装驱动(从官方下载驱动源码,执行makesudo make install)。

串口参数配置

串口通信的核心是参数匹配,包括波特率、数据位、停止位、校验位和流控,这些参数需在收发两端保持一致,Linux下主要通过stty命令配置。

核心参数说明

参数类型 可选值及说明 示例(stty命令参数)
波特率 300、600、1200、2400、4800、9600、19200、38400、57600、115200等 9600(设置波特率为9600)
数据位 5、6、7、8(默认8位,即1字节) cs8(8位数据位)
停止位 1、2(默认1位) -cstopb(1位停止位)
校验位 无校验(-parenb)、偶校验(parenb parodd)、奇校验(parenb -parodd -parenb(无校验)
流控 无流控(-ixon)、硬件流控(rtscts)、软件流控(ixon -ixoff -ixon(无软件流控)

配置命令示例

假设配置/dev/ttyS0,参数为:波特率115200、8位数据位、1位停止位、无校验、无流控,执行:

sudo stty -F /dev/ttyS0 115200 cs8 -cstopb -parenb -ixon
  • -F:指定设备文件路径;
  • 配置后可通过stty -F /dev/ttyS0查看当前参数,确认是否生效。

权限管理

Linux中,串口设备默认只有root用户或dialout组成员可读写,普通用户使用时需将其加入dialout组:

linux下如何配置串口通信

sudo usermod -a -G dialout $USER  # 将当前用户加入dialout组

执行后需重新登录使权限生效,若临时使用,也可通过sudo chmod 666 /dev/ttyS0开放所有用户权限(不推荐,存在安全风险)。

软件通信测试

配置完成后,需通过软件测试收发功能。

发送测试

使用echoprintf向串口发送数据:

echo "hello" > /dev/ttyS0          # 发送字符串(默认无换行符)
printf "hellon" > /dev/ttyS0     # 发送字符串并带换行符

若另一端设备能正常接收,说明发送正常。

接收测试

使用cat或重定向方式读取串口数据:

linux下如何配置串口通信

cat /dev/ttyS0                    # 实时读取串口数据(阻塞式,按Ctrl+C退出)
cat /dev/ttyS0 > log.txt &        # 后台读取并保存到文件(&表示后台运行)

若另一端发送数据后,本地能正常接收并显示,说明接收正常。

专业工具测试

  • minicom:一款常用的串口调试工具,安装:sudo apt install minicom
    配置:minicom -s → 选择”Serial port setup” → 设置串口设备(/dev/ttyS0)、波特率等参数 → 保存退出(Save setup as dfl)。
    使用:启动minicom,输入数据后按回车发送,接收数据会直接显示;退出按Ctrl+A,再按Q
  • screen:轻量级终端工具,安装:sudo apt install screen
    使用:screen /dev/ttyS0 115200,操作与终端一致;退出按Ctrl+A,再按K

调试技巧

若通信异常,可按以下步骤排查:

  1. 参数匹配:确认收发两端波特率、数据位、停止位、校验位一致。
  2. 设备占用:使用lsof /dev/ttyS0检查是否有其他程序占用串口,若有需先关闭占用程序。
  3. 驱动状态:通过dmesg | grep tty查看驱动加载错误,或setserial -g /dev/ttyS0检查串口资源(如IRQ、I/O地址)。
  4. 线缆及硬件:检查串口线是否损坏、接触不良,或更换USB转串口芯片测试。

相关问答FAQs

问题1:串口通信时接收到的数据乱码,如何排查?
解答:首先检查收发两端串口参数(波特率、数据位、停止位、校验位)是否完全一致,这是最常见的乱码原因;其次确认线缆连接是否正确(TX-RX交叉,共地);然后检查串口是否被其他程序占用(lsof /dev/ttyS0);最后查看驱动是否正常(dmesg | grep tty),若驱动报错需重新安装驱动。

问题2:如何让串口通信在后台持续运行,避免终端关闭后程序终止?
解答:可通过以下方式实现后台持续运行:

  1. 使用nohupnohup cat /dev/ttyS0 > serial_log.txt &,即使终端关闭,数据仍会持续写入serial_log.txt&表示后台运行。
  2. 使用screen:启动screen /dev/ttyS0 9600后,按Ctrl+A+D分离会话,终端关闭后程序仍运行;需恢复时执行screen -r
  3. 编写脚本:使用while循环持续读取串口,while true; do read -r line < /dev/ttyS0; echo "$line" >> log.txt; done &,后台运行并保存数据。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38152.html

(0)
酷番叔酷番叔
上一篇 2025年10月8日 06:04
下一篇 2025年10月8日 06:23

相关推荐

  • 如何提升Linux服务器性能最佳方案?

    优化Linux服务器性能需涵盖内核参数调优、资源监控(如CPU/内存/磁盘I/O)、精简非必要服务、配置高效文件系统、利用SSD/RAID提升存储性能、合理设置网络参数及安全加固,以提升响应速度与资源效率。

    2025年8月6日
    8500
  • 如何高效使用 ip 命令?

    在Linux系统中查看内网IP地址是网络配置和故障排查的基础操作,内网IP(通常指私有IP地址,如x.x.x、16.x.x-172.31.x.x、168.x.x)用于局域网内设备通信,以下是6种专业方法,适用于大多数Linux发行版(Ubuntu、CentOS、Debian等),按使用频率排序:最现代且全面的工……

    2025年7月21日
    10500
  • Linux复制粘贴不统一怎么办?

    图形界面(GUI)下的复制粘贴适用于GNOME、KDE、XFce等桌面环境,操作与Windows/macOS类似:鼠标操作 选中文本/文件 → 右键点击 → 选择“复制”(Copy) → 到目标位置右键点击 → 选择“粘贴”(Paste),通用快捷键复制:Ctrl + C粘贴:Ctrl + V剪切:Ctrl……

    2025年7月31日
    7800
  • Linux如何退回主系统?

    Linux作为广泛使用的操作系统,常与虚拟机、双系统、远程连接等场景结合使用,用户在不同环境下可能需要“退回主系统”——即从当前Linux环境返回到默认的物理机操作系统、桌面环境或本地终端,本文将分场景详细说明具体操作方法,涵盖虚拟机、双系统、SSH连接及本地终端切换等常见场景,帮助用户高效、安全地完成系统切换……

    2025年9月9日
    8100
  • Linux下如何查看软链接文件系统的详细操作步骤和命令?

    在Linux系统中,软链接(也称为符号链接)是一种特殊的文件类型,它指向另一个文件或目录,类似于Windows系统中的快捷方式,软链接可以跨文件系统创建,且可以指向不存在的文件(此时称为“死链接”),查看软链接及其相关信息是日常系统管理和运维中的常见需求,本文将详细介绍Linux系统中查看软链接文件系统的多种方……

    2025年9月21日
    7000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信