识别串口设备
-
列出所有串口
终端执行:dmesg | grep tty # 查看内核识别的串口设备 ls /dev/tty* # 列出所有tty设备
- 常见设备名:
- 原生串口:
/dev/ttyS0
(COM1),/dev/ttyS1
(COM2) - USB转串口:
/dev/ttyUSB0
,/dev/ttyACM0
- 原生串口:
- 常见设备名:
-
确认设备权限
ls -l /dev/ttyUSB0 # 查看设备权限(示例)
输出示例:
crw-rw---- 1 root dialout 188, 0 Jul 1 10:00 /dev/ttyUSB0
- 关键字段:
root
:所有者dialout
:用户组(需将当前用户加入此组)
- 关键字段:
配置用户权限
安全提示:避免直接使用
root
操作,推荐用户组管理。
- 将用户加入
dialout
组(需管理员权限):sudo usermod -aG dialout $USER # $USER替换为当前用户名- 生效组变更:
- 注销后重新登录 或 执行:
newgrp dialout
设置串口参数
使用stty
工具配置波特率、数据位等(以/dev/ttyS0
为例):
sudo stty -F /dev/ttyS0 115200 cs8 -cstopb -parenb
- 参数解析:
115200
:波特率(常用值:9600, 19200, 38400, 57600, 115200)cs8
:8位数据位(cs7
为7位)-cstopb
:1位停止位(cstopb
表示2位)-parenb
:无校验位(parenb
启用校验,-parodd
偶校验)
验证配置:
stty -F /dev/ttyS0 -a # 显示当前串口参数
通信测试工具
-
使用
screen
简易通信:screen /dev/ttyS0 115200 # 启动通信
- 退出:
Ctrl+A
→K
→Y
- 退出:
-
高级工具
minicom
:sudo apt install minicom # Debian/Ubuntu安装 minicom -s # 进入配置菜单
- 配置步骤:
- 选择 Serial port setup
- 设置设备(如
/dev/ttyUSB0
)和波特率 - 保存为默认配置(
Save as dfl
)
- 配置步骤:
永久配置(可选)
通过systemd
创建服务自动配置串口(适用于服务器):
-
创建服务文件:
sudo nano /etc/systemd/system/serial-configure.service
[Unit] Description=Configure Serial Port [Service] Type=oneshot ExecStart=/bin/stty -F /dev/ttyS0 115200 cs8 -cstopb -parenb [Install] WantedBy=multi-user.target
-
启用服务:
sudo systemctl daemon-reload sudo systemctl enable --now serial-configure.service
常见问题解决
-
权限不足:
- 确认用户已加入
dialout
组(groups $USER
检查) - 临时方案:
sudo chmod 666 /dev/ttyS0
(不推荐,安全性低)
- 确认用户已加入
-
设备未识别:
- 检查USB转串口线驱动:
lsmod | grep usbserial
- 重新插拔设备后执行
dmesg | tail
- 检查USB转串口线驱动:
-
数据收发异常:
- 确认双方波特率/数据位一致
- 关闭硬件流控:
stty -F /dev/ttyS0 -crtscts
安全提示
- 避免长期开放
777
权限,最小化用户组授权 - 生产环境建议使用
ser2net
实现串口网络隔离 - 关键操作前备份数据,误操作可能导致设备损坏
引用说明:
- Linux内核文档:
Documentation/serial
stty
手册页:man stty
- IEEE标准:POSIX.1规范(串口设备接口)
- 测试环境:Ubuntu 22.04 LTS, Linux 5.15内核
通过以上步骤,可完成Linux串口的专业配置,实际参数需根据硬件手册调整,建议结合oscilloscope
验证信号完整性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6661.html