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

相关推荐

  • 如何正确安装util-linux?

    util-linux是Linux系统中不可或缺的核心工具集,包含了大量基础系统管理工具,如磁盘分区工具fdisk、文件系统挂载管理mount、块设备信息查看lsblk、系统登录日志last等,这些工具是系统日常运维、故障排查和设备管理的基础,因此正确安装util-linux至关重要,以下是详细的安装方法,覆盖主……

    2025年8月21日
    11300
  • linux 如何创建任务计划

    Linux 中,可以使用 crontab 命令创建任务计划,通过编辑

    2025年8月10日
    11100
  • Ubuntu 24.04升级后apt报错?

    Ubuntu和Debian是流行的Linux发行版,Debian以其稳定性、严格的自由软件理念和庞大的软件仓库著称,Ubuntu基于Debian,更注重用户友好性、定期发布和商业支持,是新手和桌面用户的理想选择,两者都使用APT包管理系统。

    2025年6月30日
    12600
  • 强制中断yum命令怎么办?

    在Linux系统中,yum(Yellowdog Updater Modified)是用于管理RPM软件包的核心工具,通常用于安装、更新或删除软件,yum本身没有“退出”命令,因为它不是交互式环境(如Vim或Shell),执行完操作后会自动退出,但用户可能在两种场景下需要中断yum进程:当yum在执行任务(如安装……

    2025年7月29日
    12700
  • Linux中安装软件有哪些常用方法?具体步骤是怎样的?

    在Linux系统中,安装软件的方式多样,不同方法适用于不同场景,主要取决于发行版、软件需求及个人偏好,以下是几种常见安装方式的详细说明:通过包管理器安装(主流方式)包管理器是Linux发行版自带的核心工具,用于自动下载、安装、更新和卸载软件,并处理依赖关系,是最安全、便捷的方式,不同发行版的包管理器不同,需根据……

    2025年9月22日
    8900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信