常见的通信协议——UART、SPI、IIC、CAN......(更新中)

本文深入解析UART、SPI、IIC、CAN等通信协议,涵盖串行、并行、异步、同步等通信方式,以及点对点、多对多的通信场景。详细介绍了各协议的电路连接、参数设置、数据帧格式和通信过程。

 引言      

        不同的电子设备之间有发收信息的需求,所以就需要通信。而通信协议是为了在通讯过程中,对通讯对象之间的信息传输进行标准化定义和规范。这样可以保证通讯过程的所有参与者都遵守相同的协议,从而能够正确地接收和理解发送方发送的数据,同时也能保证通信过程的稳定性和可靠性。

        绝大多数电子设备之间的通信都是基于电平特性的(如:电平的高低,电平的变化过程),还有少数基于频率,占空比,周期性等电特性,亦或是基于温、声、磁、力、化、运动等非电量。

通信协议的分类  

按照数据的传送方式,通信协议可分为以下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:偶校验

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值