通讯协议

任何通讯都是需要有一个载体,通过载体分类,分为有线或者无线通讯。通讯方式也有同步和异步,同步是两个设备通过时钟信号进行同步,异步是两个设备通过数据信号进行同步。同步通信是阻塞的,异步通信是非阻塞的。常见同步通讯有I2C、SPI等,异步通讯有TCP、UDP等。

串口协议构成

帧:数据帧,即数据帧由起始位、数据位、停止位、校验位组成。

空闲位:数据线在空闲状态的时候为逻辑“1”状态。
起始位:当要传输数据的时候先将数据线拉低,表示开始数据传输。
数据位:即要传输的数据,数据位数可选择 5~8 位,低位在前,先传输,高位最后传输。
奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可不使用。
停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。

波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数。

UART和USART区别

串口是有线通讯一种,也是最简单常用的一种。UART和USART都是单片机串口通讯协议。
区别:
USART:通用同步和异步收发器
UART:通用异步收发器

USART在异步通信的时候,它与UART没有什么区别,但USART能提供主动时钟,从而实现同步通信。

RS232与RS485、RS422的区别

RS232 通信主要是由RX,TX,GND三根线组成,但是通常使用DP9线连接,可以只连三根线。RS232的缺点是UART和USART的缺点,就是通信距离短。为了解决RS232通信距离的问题。RS485主要是以一种差分信号进行传输,只需要两根线。但是RS485的缺点是只能发送或接收,不能同时发送和接收。所以就有了RS422,有两组RX和TX,可以同时发送和接收。

串口类型

  • UART

UART有VCC、GND、RX、TX这4个Pin,也就是最简单;其中VCC:供电Pin,一般是3.3V;GND:接地Pin,通讯的设备一定要共地;RX:接收数据Pin;TX:发送数据Pin

  • USART

USART 相对UART 多了时钟,在使用时需要使能时钟。

  • RS-232

RS232 使用9针脚,单端信号传输,是对UART的升级,增加了其他引脚。但是RS232口最大通讯距离是15米。

编号 名称 缩写
1 Data Carrier Detect/数据载波监测 DCD
2 Received Data/接收数据 RxD
3 Transmitted Data/发送数据 TxD
4 Data Terminal Ready/数据终端就绪 DTR
5 Ground/接地 GND
6 Data Set Ready/数据集就绪 DSR
7 Request To Send/请求发送 RTS
8 Clear To Send/允许发送 CTS
9 Ring Indicator/振铃提示 RI
  • RS-485

485是为了解决232通信距离的问题,数字信号采用差分传输方式,因为只有两根线,只能做半双工,也就是同时只能发送或接收,不能同时发送和接收。通讯距离理论能够达到1200m。

编号 名称 缩写
Data-/B 差分信号负端 485-
Data+/A 差分信号正端 485+
  • RS-422

RS-422是四线接口,全双工,差分传输,多点通信的数据传输协议,硬件构成上RS-422相当于两组RS-485;它对485做了补充,能够同时发送和接收数据。

编号 名称 缩写
TXA 发送正 TX+或A
RXA 接受正 RX+或Y
TXB 发送负 TX-或B
RXB 接收负 RX-或Z

RXA/Y︰接其他RS422模块的TXA/A
RXB/Z︰接其他RS422模块的TXB/B
TXB/B:接其他RS422模块的RXB/Z
TXA/A:接其他RS422模块的RXA /Y

串口测试

linux下测试工具:
minicom

  • 安装
1
sudo apt install minicom
  • 使用
1
2
3
4
5
6
7
8
9
# 运行minicom 并配置
minicom -s

选择进入“Serial port setup” 配置串口,比特率

选择“Save setup as dfl” 保存为默认配置,后续直接运行“minicom” 就能直接加载

# 退出
ctrl +A +Z

Windows可以安装串口助手等工具
|