跳到主要内容

RS485通信

本章节将讲解如何测试 T113s3-SDNAND 开发板的RS485通信功能。

准备工作

在进入本章节实验之前,请做好以下准备。

硬件:

  • T113s3-SDNAND 开发板
  • usb typeC线 X2

软件:

镜像说明:支持CAN功能,不支持RGB触摸功能,md5值:f8ffb49e52fb35e891fb44653afe23e8

RS485通信协议概述

RS485,全称为"Recommended Standard 485",是一种由电子工业联盟(EIA)定义的电气特性标准,广泛用于实现可靠的串行数据通信。它支持多点通信,允许多个设备共享同一通信总线,通过差分信号传输方式来提高数据传输的抗干扰能力,适用于长距离和噪声环境下的数据通信。具备以下特性:

  • 支持多点通信,允许多个设备在同一总线上进行数据交换。
  • 采用半双工模式,确保在同一时间内设备只能进行发送或接收操作,但不能同时进行。
  • 使用 两根导线(A线和B线) 传输差分信号,增强了抗干扰能力。
  • 接收器依据A线和B线间的电压差来识别二进制数据(逻辑"1"或"0")。
  • 通过终端电阻减少信号反射,确保信号在长距离传输中的完整性。
  • 利用奇偶校验位进行错误检测,保障数据传输的准确性。
  • 传输速率最高可达10Mbps,传输距离可达1200米
  • 长距离和高数据速率的特性使其在多种环境下均能保持稳定的通信能力。

硬件连接

在进行RS485功能测试前,需要使用两根接线端子(杜邦线)连接开发板的RS485接口,RS485_A1 连接 RS485_A2,RS485_B1 连接 RS485_B2。RS485 是半双工,连接设备的时候一般接 A/B/GND,即源端的 A 连接目标设备的 A,源端的 B 连接目标设备的 B。硬件连接如下图:

image-20241127111500116

注意,这个四根引脚与以太网引脚是共用的,我们需要使用卡槽把排针中间的引脚连接到右边的引脚上,这个时候可以使用RS485功能,但是以太网功能是使用不了的,如下,

image-20241127112109901

实际连接图如下,

image-20241127112654725

登录串口终端

连接成功后,如果不清楚如何连接开发板登录串口,请参考 快速启动 中的《启动开发板》章节。

设置波特率

由原理图可知:

uart2 连接到 端口1(RS485_A1,RS485_B1)

uart4 连接到 端口2(RS485_A2,RS485_B2)

image-20241127113230544

打开串口终端之后,想要两个rs485互相通信,首先就得设置相同的波特率,在开发板上执行以下几步:

配置uart2、uart4的波特率

  • 设置uart2波特率。
# stty -F /dev/ttyS2 speed 115200
9600
# stty -F /dev/ttyS2 speed 115200
115200
#

需要执行两次,才可以成功设置波特率为115200。

  • 设置uart3波特率。
# stty -F /dev/ttyS4 speed 115200
9600
# stty -F /dev/ttyS4 speed 115200
115200

测试RS485通信

波特率设置好后,即可进行通信测试。下面将进行端口2发送数据,端口1负责接收。

后台监测端口1

# cat /dev/ttyS2 &
[1] 1372
#

控制端口2发送数据

# echo 100ask > /dev/ttyS4
100ask

可以看到有 100ask 打印出来。

同样可以控制端口1发送数据给端口2,因为上面已经设置过一次波特率了,不用再次设置。

后台监测端口2

在这之前先杀掉之前后台监测的端口1

# ps
...
1372 root cat /dev/ttyS2
...
# kill -9 1372
#
[1]+ Killed cat /dev/ttyS2
#

再执行以下指令:

# cat /dev/ttyS4 &
[1] 1374
#

控制端口1发送数据

# echo 123456 > /dev/ttyS2
123456

#

可以看到有数据 123456 信息出来。