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下Java开发如何实现高效稳定?

    准备工作:系统与工具Linux发行版选择推荐Ubuntu、Fedora或Debian(社区支持完善,兼容性强),确保系统更新:sudo apt update && sudo apt upgrade # Debian/Ubuntusudo dnf update # Fedora安装必备工具开发工具……

    2025年7月24日
    13500
  • Linux内存满了如何正确加内存?操作步骤及注意事项有哪些?

    Linux内存满了如何加内存是服务器运维或日常使用中常见的问题,处理时需先判断内存是否真的不足,再通过物理升级或优化策略解决,以下是详细步骤和注意事项:判断内存是否真的“满了”Linux内存管理机制会将空闲内存用作缓存和缓冲区,内存占用高”不等于“内存不足”,需通过工具分析实际内存使用情况:free命令:fre……

    2025年10月7日
    10600
  • 客户端初始化失败怎么办?

    在Linux系统中下载并安装ChromaDB(开源向量数据库),需通过Python包管理工具pip完成,以下是详细步骤及注意事项,内容严格遵循技术准确性,参考Chroma官方文档确保权威性:安装前提条件Python环境ChromaDB依赖Python 3.7+:python3 –version # 检查版本s……

    2025年7月28日
    14700
  • 如何linux挂载共享文件夹

    Linux 中,可通过安装相关软件包,使用挂载命令并指定共享文件夹路径等方式

    2025年8月15日
    13400
  • Linux环境下如何正确配置以实现ping通外网?步骤与注意事项详解

    在Linux系统中,ping通外网是排查网络连通性问题的基础操作,涉及本地网络配置、网关、DNS解析、防火墙规则等多个环节,以下是详细步骤及常见问题解决方法,帮助确保Linux主机与外网的正常通信,基础检查:确认本地网络配置首先需确保本地网络接口已正确配置IP地址,且处于活跃状态,使用ip a命令查看网络接口信……

    2025年8月22日
    11900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信