引言
不同的电子设备之间有发收信息的需求,所以就需要通信。而通信协议是为了在通讯过程中,对通讯对象之间的信息传输进行标准化定义和规范。这样可以保证通讯过程的所有参与者都遵守相同的协议,从而能够正确地接收和理解发送方发送的数据,同时也能保证通信过程的稳定性和可靠性。
绝大多数电子设备之间的通信都是基于电平特性的(如:电平的高低,电平的变化过程),还有少数基于频率,占空比,周期性等电特性,亦或是基于温、声、磁、力、化、运动等非电量。
通信协议的分类
按照数据的传送方式,通信协议可分为以下2种。
串行通信
串行(Serial)指的是逐个传输数据位,一次只传输一个位。
并行通信
并行(Parallel)指的是同时传输多个数据位,一次可以传输多个位。
按照消息传送的方向与时间关系,通信协议可分为以下3种。
单工通信
单工通信(Simplex Communication)是指消息只能单方向传输的通信方式。
在单工通信中,发送端与接收端是固定的,即发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息。
例如:遥控器与电视、广播站与收音机。
半双工通信
半双工通信(Half-duplex Communication)中的“双工”表示通信的双方都可以发送信息,而“半”表示双方不能同时发送或同时接收信息,即对于同一个设备,同一时刻只能发信息或者收信息,不能在发信息的时候又收信息,也不能在收信息的时候又发信息。
在这种工作方式下,发送端可以转变为接收端;接收端也可以转变为发送端。但是在同一个时刻,信息只能在一个方向上传输。因此,也可以将半双工通信理解为一种可以切换方向的单工通信。
例如:对讲机。
全双工通信
全双工通信(Full duplex Communication):通信的双方可以同时发送和接收数据。
例如:电话、网络。
按照时钟特性,通信协议可分为以下2种。
同步通信
同步通信:双方使用频率一致的时钟。发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(如:在时钟信号的上升沿时,将数据发送出去),发送数据;接收端根据发送端提供的时钟信号,以及一定的约定(例如:在时钟信号为低电平时,读取数据),接收数据。
异步通信
异步通信:收发双方各自有自己的时钟,接收方并不知道数据什么时候会到达,发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。
按照电平特性,通信协议的电信号可分为以下2种。
差分信号
差分信号:以两根信号线上的电压差作为判断逻辑“1”和逻辑“0”标准的信号称为差分信号。两根信号线上的信号振幅相同,相位相反,那么它们的电势差就构成了差分信号。
单端信号
单端信号:以一根信号线上的绝对电压值作为判断逻辑“1”和逻辑“0”标准的信号称为单端信号。信号由一个参考端和一个信号端构成,参考端一般为地端(且通常不同设备的参考端共地),信号端的电压就构成了单端信号。
按照通信设备数量,通信协议的电信号可分为以下4种。
点对点
一个发送端,一个接收端。
点对多
一个发送端,多个接收端。
多对点
多个发送端,一个接收端。
多对多
多个发送端,多个接收端。
UART(串口)
UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器,即常说的“串口”。
串口通信是一种串行、异步、全双工、单端、点对点的通信协议。
电路

TXD(Transmit Data):发送数据引脚,用于发送端发送数据。
RXD(Receive Data):接收端引脚,用于接收端接收数据。
GND:共用地
串口参数
起始位
位于数据帧开头,只占 1位,始终为逻辑“0”,必须有。起始位用于表示一个数据帧的开始,起到同步作用。
数据位
紧跟在起始位之后,用于传送数据。用户可根据情况确定为 5、6、7、8 位,低位在前,高位在后。通常采用 8 位数据位,用于传送一字节的数据.
校验位
位于数据位后,占1位,用于表示串行传输中采用的校验方式,该位由用户根据需要决定,有 3 种选择:无、奇校验、偶校验。选择“无”表示关闭校验功能;选择奇/偶时,该位逻辑值的确定是对数据位的各个位进行“异或”运算,再将结果与“0”或“1”进行“异或”运算所得,具体公式为:

式中:Peven 为偶校验位值;Podd 为奇校验位值;dn 为数据的第n 位。
也常用以下方法快速判断:
奇校验码:
数据位有奇数个1,奇校验码为0;数据位有偶数个1奇校验码为1。即:奇校验码的加入使得数据位和校验位整体保持奇数个1。
偶校验码:
数据位有偶数个1,偶校验码为0;数据位有奇数个1偶校验码为1。即:偶校验码的加入使得数据位和校验位整体保持偶数个1。
停止位
位于数据的最后,始终为逻辑“1”,必须有。停止位的长度由用户确定,可选择为1位、或 2 位。停止位表示一个数据的结束,也是为发送下一个数据帧做准备,同样也起到了同步的作用。
波特率
是指单位时间内传送二进制数据的位数,单位用bps或b/s(位/秒)表示。
比特率
是衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位也用bps或b/s(位/秒)表示。
例如:在异步行传输系统中,设每秒传输120个数据帧,其字符格式规定包含1个起始位、7 个数据位、1个奇校验位、1 个终止位,那么其波特率为:(1 +7 +1 +1) x 120 =1200 bps ,其比特率为:7 x 120 =840 bps 或 7/(1 +7 +1 +1)x 1200=840bps。
通信过程
在异步通信中,发送和接收双方要实现正常的通信,需采用相同的传输波特率和相同格式的数据帧(起始、数据、校验和停止位)。
首先.发送和接收的双方都必须采用相同的、一个约定好的串行通信波特率。框定波特率,其实就是规定数据帧中一个位的宽度(表示传输一位所花费的时间,等于波特率的倒数)。
当异步通信的波特率和数据帧的格式确定后,发送方就按照规定的数据帧格式规定的位宽度发送数据帧。接收方则以传输线的空闲状态(逻辑“1”)作为起点,不地检测和扫描传输线,当检测到第一个逻辑“0”出现时(起始位到达),知道一个数据帧开始了(实现数据同步)。接下来以规定的位宽度,对已知格式的数据进行测试获得数据帧中各个位的逻辑值。测试到最后的停止位时,如果为规定的逻辑“1”,则说明该数据帧已经结束。
时序图
S:起始位
P:停止位
C:偶校验位




本文深入解析UART、SPI、IIC、CAN等通信协议,涵盖串行、并行、异步、同步等通信方式,以及点对点、多对多的通信场景。详细介绍了各协议的电路连接、参数设置、数据帧格式和通信过程。
&spm=1001.2101.3001.5002&articleId=132610867&d=1&t=3&u=7bc672ef606b4314a04d3b60bc7d843d)
5万+

被折叠的 条评论
为什么被折叠?



