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)(内核头文件)后,手动编译安装驱动(从官方下载驱动源码,执行make和sudo 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开放所有用户权限(不推荐,存在安全风险)。

软件通信测试

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

发送测试

使用echo或printf向串口发送数据:

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. 使用nohup:nohup 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 su命令如何正确使用?方法步骤与注意事项详解

    Linux中的su命令是“switch user”的缩写,主要用于切换用户身份,允许当前用户以其他用户的权限运行命令或登录系统,无论是普通用户需要提升权限执行管理任务,还是root用户需要切换到普通用户进行操作,su命令都能实现灵活的用户身份切换,本文将详细介绍su命令的使用方法、常见选项、应用场景及注意事项……

    2025年9月21日
    34200
  • Linux中如何开启端口?详细命令与操作步骤详解

    在Linux系统中,开启端口通常是指配置防火墙以允许特定端口的网络流量通过,因为Linux系统默认会启用防火墙(如firewalld、iptables或ufw)来限制未经授权的访问,不同发行版默认使用的防火墙工具不同,但核心逻辑一致:添加允许端口通信的规则并持久化保存,以下是详细步骤及注意事项,基础概念:端口与……

    2025年9月17日
    2.3K00
  • Linux系统中如何查看软链接文件?

    在Linux系统中,软链接(也称为符号链接)是一种特殊的文件类型,它类似于Windows系统中的快捷方式,指向另一个文件或目录的路径,软链接与原始文件是独立的实体,拥有自己的inode和元数据,因此可以跨文件系统存在,且当原始文件被删除或移动时,软链接会失效(称为“断开的软链接”),查看软链接文件的方法多种多样……

    2025年9月21日
    25900
  • 编写Linux内核有多难?

    编写Linux内核需深厚C语言功底、深入操作系统理论及严格工程实践,是复杂严谨的系统工程。

    2025年7月15日
    27500
  • Linux如何不保存退出?操作方法有哪些?

    在Linux系统中,不保存退出文件通常发生在使用文本编辑器编辑文件后,用户希望放弃所有修改并直接退出编辑器,这一操作在Linux日常运维和开发中较为常见,尤其是在编辑错误或临时查看文件时,不同文本编辑器的操作方式存在差异,下面将针对Linux中最常用的几种编辑器(如vi/vim、nano等)详细说明不保存退出的……

    2025年9月25日
    46800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信