Lazy loaded image
嵌入式软件开发
香橙派5Plus 使用Rust 与 Windows 串口通信
字数 879阅读时长 3 分钟
2025-12-8
2026-3-7
使用 Rust 与 Windows 串口通信这篇记一下在香橙派5Plus上用 Rust 做串口通信,然后和 Windows 端打通的过程。参考了 OrangePi_5_Plus_RK3588_用户手册_v2.1.pdf 3.18.5. 40 pin 的 UART 测试 部分。

一、硬件确认

先查一下 40pin 引脚定义,找 UART1(/dev/ttyS1):
UART1 对应引脚 27 (TX) 和 28 (RX)

二、权限配置

把自己的用户加到 dialout 组,否则打不开串口:

三、Rust 串口通信实现

之前用的是标准库多线程版本,这次改成 tokio 异步 + tracing 日志的版本。echo 逻辑:收到什么就回写什么,方便测试通路。

Cargo.toml

依赖变化:
  • 加了 tokio:异步运行时,为后续扩展(网络、并发)打基础
  • 加了 tracing + tracing-subscriber:结构化日志,比 println! 更灵活

main.rs

 
关键代码说明:
  • Arc<Mutex<>>:串口句柄需要在异步任务间共享(虽然当前只有一个 loop,但为后续拆分读写任务留余地)
  • timeout(20ms):防止阻塞,让 tokio 调度器有机会切走
  • String::from_utf8_lossy:二进制数据转字符串,非法字符用 代替,不 panic
  • drop(guard):显式释放锁,让其他异步任务有机会拿到串口

四、编译运行

看到日志 serial_echo started on /dev/ttyS1 就是跑起来了。

五、Windows 端连接测试

USB 转 TTL 模块接线:
USB转串口模块
香橙派5Plus 40pin
TXD
引脚 28 (RX)
RXD
引脚 27 (TX)
GND
GND
注意交叉:模块 TX → 香橙派 RX,模块 RX → 香橙派 TX。
Windows 打开串口助手(如 PuTTY、SSCOM):
  • 波特率:115200
  • 数据位:8
  • 停止位:1
  • 校验:无
发送任意文本,应该能立即收到一模一样的回显。同时香橙派端会打印:

六、常见问题

现象
排查
权限不足
确认在 dialout 组,或临时用 sudo
收不到数据
检查 TX/RX 是否接反;确认波特率一致
乱码
波特率不匹配,或流控设置不一致
程序卡住
串口被其他程序占用(如之前的调试进程)
参考:
  • OrangePi_5_Plus_RK3588_用户手册_v2.1.pdf

【有关此项目其他内容,欢迎在下方留言(我会收到邮件通知),留言我会以邮件回复。或联系我的QQ。】
上一篇
将配置 ESP32-C6 作为 Matter controller 【使用自带的控制台】 控制 设备(设备分esp模拟和Tuya灯泡)
下一篇
【香橙派5Plus】 香橙派5plus基础配置

评论
Loading...