文章目录
- 一、串口通讯协议简介
- 二、物理层
-
- [ 1、串口通讯结构图](# 1、串口通讯结构图)
- [ 2、电平标准](# 2、电平标准)
- [ 3、RS-232信号线](# 3、RS-232信号线)
- 三、协议层
-
- [ 1、波特率](# 1、波特率)
- [ 2、起始和停止信号](# 2、起始和停止信号)
- [ 3、有效数据](# 3、有效数据)
- [ 4、数据校验](# 4、数据校验)
一、串口通讯协议简介
串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式。
也经常使用该通讯方式输出调试信息。
通讯协议,以分层的方式来理解,最基本的是把它分为物理层和协议层。
物理层规定通讯系统中具有机械、电子功能部分的特性, 确保原始数据在物理媒体的传输。
协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。
二、物理层
1、串口通讯结构图

两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。
2、电平标准
电平标准:
常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0;
而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1,+15V表示逻辑0。

电压对比图:

因为控制器一般使用TTL电平标准,所以常常会使用MAX3232芯片对TTL及RS-232电平的信号进行互相转换。
3、RS-232信号线
RS-232标准的COM口(也称DB9接口):

DB9公头及母头引脚标准:


连接方式:

在串口通讯中,一般只使用RXD、TXD以及GND三条信号线, 直接传输数据信号,而RTS、CTS、DSR、DTR及DCD信号都被裁剪掉了。
三、协议层
串口数据包的基本组成:
起始信号,主体数据,效验位,停止位组成。

1、波特率
异步通讯中由于没有时钟信号(如前面讲解的DB9接口中是没有时钟信号的), 所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码。
上图中用虚线分开的每一格就是代表一个码元。
常见的波特率为4800、9600、115200等。
即为每秒能传输几个码元。
2、起始和停止信号
串口通讯的一个数据包从起始信号开始,直到停止信号结束。
数据包的起始信号由一个逻辑0的数据位表示, 而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。
3、有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7或8位长。
4、数据校验
在有效数据之后,有一个可选的数据校验位。
校验位:可选,为的是数据的抗干扰性。
校验方法分为:
1-奇校验(odd)、 2-偶校验(even)
3-0 校验(space)、 4-1校验(mark)
5-无校验(noparity)
奇校验:
要求有效数据和校验位中"1"的个数为奇数。
比如一个8位长的有效数据为:01101001,此时总共有4个"1", 为达到奇校验效果,校验位为"1",最后传输的数据将是8位的有效数据加上1位的校验位总共9位。
偶校验:
与奇校验要求刚好相反,要求帧数据和校验位中"1"的个数为偶数。
比如数据帧:11001010,此时数据帧"1"的个数为4个,所以偶校验位为"0"。
0校验、1校验:
0校验是不管有效数据中的内容是什么,校验位总为"0",1校验是校验位总为"1"。
无校验:
没有校验位。