08 串口
1 串口接口概述
GM-3568JHF 开发板基于瑞芯微 RK3568J 芯片设计,提供了丰富的串口接口,支持多种串行通信协议和应用场景。串口是嵌入式系统中最常用的通信接口之一,广泛应用于设备调试、数据传输、工业控制等领域。
1.1 串口接口配置
开发板上从 RK3568J 出来的串口总共有6个:
| 串口类型 | 数量 | 接口形式 | 电气标准 | 应用场景 |
|---|---|---|---|---|
| RS232 | 1个 | DB9 连接器 | RS232 电平 | 工业设备通信 |
| RS485 | 2个 | 端子接口 | RS485 差分 | 工业总线通信 |
| TTL | 2个 | 排针接口 | 3.3V TTL | 调试、传感器通信 |
| TypeC Debug | 1个 | Type-C 接口 | USB 转 TTL | 系统调试 |
1.2 串口电气标准介绍
RS232 标准
- 电压范围: ±3V 到 ±15V
- 逻辑电平: 正电压表示逻辑 0,负电压表示逻辑 1
- 传输距离: 最大 15 米(9600bps)
- 连接方式: 单端信号传输
- 抗干扰: 抗干扰能力一般
RS485 标准
- 电压范围: ±1.5V 到 ±6V
- 逻辑电平: 差分信号传输
- 传输距离: 最大 1200 米(9600bps)
- 连接方式: 双线差分传输(A+、B-)
- 抗干扰: 抗干扰能力强,适合工业环境
TTL 标准
电压范围: 0V 到 3.3V
逻辑电平: 高电平 3.3V,低电平 0V
传输距离: 一般小于 3 米
连接方式: 单端信号传输
应用: 主要用于板级通信和调试
RS232:1个
RS485:2个
TTL:2个(其中有一个在 40PIN 接口上,该串口可以接树莓派拓展板做 RS485 使用)

- TypeC(Debug):1个(该接口为 USB 转 TTL 接口,接上 TypeC 后可直接使用)

2 连接串口
不同的接口,对应的连接方式也不一样,下面是不同串口的接法
2.1 TTL
以 USB 转 TTL 工具为例:

- TXD -- RXD
- RXD -- TXD
- GND -- GND
2.2 RS232
以 USB 转 232 工具为例:
因为是标准的 232 接口所以直接连接即可

2.3 RS485
以 USB 转 485 工具为例:
USB 转 485-A -> 开发板-A
USB 转 485-B -> 开发板-B
如图所示:


2.4 串口通讯测试
使用板卡上的 TTL 串口进行实验,对应的设备文件为 /dev/ttyS4 。 对 tty 的设备文件直接读写就可以控制设备通过串口接收或发送数据,下面我们使用板卡配合 Windows 下的串口调试助手。
提示
RS485 串口已在驱动层添加自动切换方向的功能,通讯时与普通串口一样
查询串口参数修改波特率
使用 stty 工具查询串口参数
# 在开发板的终端执行如下命令
root@linaro-alip:/# stty -F /dev/ttyS4
speed 9600 baud; line = 0;
-brkint -imaxbel使用 stty 工具修改串口参数
# 设置通讯速率,其中 ispeed 为输入速率,ospeed 为输出速率
root@linaro-alip:/# stty -F /dev/ttyS4 ispeed 115200 ospeed 115200
root@linaro-alip:/# stty -F /dev/ttyS4
speed 115200 baud; line = 0;
-brkint -imaxbel与 PC 通讯
PC 端配置好串口调试助手后,在板卡端使用如下命令测试串口发送数据:
1)发送数据:
# 在板卡上的终端执行如下指令
# 使用 echo 命令向终端设备文件写入字符串 "Hello!"
echo Hello! > /dev/ttyS4PC 上的串口调试助手会接收到内容

2)接收数据:
测试接收数据,可以使用 microcom 工具:
# 在板卡上的终端执行如下指令
# 使用 microcom 命令读取终端设备文件,-s 参数可以设置波特率
busybox microcom -s 115200 /dev/ttyS4
Hello World! #PC 发送过来的数据
# microcom 命令会等待
# 使用串口调试助手发送字符串
# 板卡的终端会输出接收到的内容3 故障排除
3.1 串口设备无法打开
问题现象: 提示 "Permission denied" 或设备不存在
解决方案:
# 检查设备节点是否存在
ls -l /dev/ttyS*
# 检查设备权限
sudo chmod 666 /dev/ttyS4
# 将用户添加到 dialout 组
sudo usermod -a -G dialout $USER3.2 数据传输错误
可能原因:
- 波特率不匹配
- 数据位、停止位、校验位配置错误
- 硬件连接问题
排除步骤:
# 检查串口配置
stty -F /dev/ttyS4 -a
# 设置正确的串口参数
stty -F /dev/ttyS4 115200 cs8 -cstopb -parenb3.3 RS485 通信问题
注意事项:
- 确保 A、B 线连接正确
- 检查终端电阻配置
- 验证地线连接
# RS485 测试命令
echo "test" > /dev/ttyS1 # 发送到 RS485 端口 1
cat /dev/ttyS2 # 从 RS485 端口 2 接收3.4 串口冲突
解决方案:
# 查看串口使用情况
lsof /dev/ttyS*
# 终止占用串口的进程
sudo fuser -k /dev/ttyS4