各类通信协议归纳整理(偏硬件)

这篇具有很好参考价值的文章主要介绍了各类通信协议归纳整理(偏硬件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要用于学习,资料及图片多来源于网络,若存在侵权请联系作者删除,若存在错误,请批评指正。

1 通信基本概念

通信一般有三个步骤:编码、传输和解码。
可分为同步通信和异步通信:
同步:需要时钟信号
异步:一般有起始和终止信号。
可分为电平信号和差分信号:
电平:信号逻辑值由信号线电平和参考电平决定(一般为地)
差分:没有参考电平。信号逻辑值有两根差分线的电压差决定。
可分为单工、半双工,全双工
单工:信号方向只能单向
半双工:方向能双向,即可发送和接收,但是不能同时发送和接收。
全双工:可以同时发送和接收。

2 串口通信

2.1 基本概念

串口:在嵌入式里指的是UART口,在台式机一般是COM口,用RS232 RS422 RS485
UART :, Universal Asynchronous Receiver-Transmitter, 通用异步收发器 ,常用TTL电平即3.3V或者5.0V。
COM口:在台式机上常用的口,DB9口,接口协议:RS232和RS485,RS422;

UART口(四针:RXD TXD GND VCC,三针,两针)、COM口(9针)指的是物理接口形式;TTL、RS232和RS485指的是电平逻辑标准。RS422 RS485也有16针的接口。

2.2 UART 硬件接口

2.2.1 波特率、起始位、数据位、奇偶校验位、停止位

波特率:bit/s,指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。常见的有 9600 115200

一个通信单元由:起始位+数据位+奇偶校验位+停止位组成的。
菊花链通信和can通信区别,硬件架构,硬件工程
空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。
起始位:开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为总线空闲时为高电平所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平。依靠检测起始位来实现发送与接收方的时间自同步的。
数据位:可以是4、5、6、7、8位,一般是8位,协议规定是LSB。
奇偶校验位:数据位加上这一位后,使得“1”的位数为偶数(偶校验)或奇数(奇校验)以此来校验数据传送的正确性;
停止位:一个字符数据的结束标志,可以是1位、1.5位、2位的高电平。

串口通信时因为是异步通信,所以通信双方必须事先约定好通信参数,这些通信参数包括:波特率、数据位、校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)。

通信线:RXD TXD GND ,也可能会有VCC,还有一些流控线。

2.2.2 UASRT

USART(通用同步/异步串行接收/发送器),相比UART,USART多了一个时钟信号。在STM32使用中,我一般把时钟禁用,当做UART使用。

2.3 电平

2.3.1 TTL电平

菊花链通信和can通信区别,硬件架构,硬件工程
主要看中间两种,关注5个参数。
输入高电平(Vih)输入低电平(Vil)输出高电平(Voh)输出低电平(Vol),这四个就顾名思义了。
阀值电平(Vt):数字电路芯片都存在一个阈值电平,就是电路刚刚勉强能翻转动作时的电平。
一般情况下,在嵌入式中使用,只需要设置寄存器后,就能完成对UART的初始化。

2.3 RS232 通信协议

物理接口,硬件接口:DB9

2.3.1 RS232电平

在TxD和RxD上:逻辑1(MARK)=-3V~-15V ,逻辑0(SPACE)=+3~+15V 反逻辑

在RTS、CTS、DSR、DTR和DCD等控制线上上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V

RS232和UART的区别和联系:UART就是车站,RS232 RS485 RS422 TTL的串口都是每一辆公交车,有不同的规则。

2.3.2 RS232与TTL的转换

菊花链通信和can通信区别,硬件架构,硬件工程
从TTL转为RS2323电平,由于二极管与电容的作用使得在二极管D1与电容C7交接处的电压保持在-3V~-15V.
当TXD为"1"(TTL)时,Q3截止,PCRXD上的电压与PCTXD电压相等,也是-3~-15V,为"1"(RS232)
当TXD为"0"(TTL)时, Q3导通,则PCRXD电压约为+5V,这个电压在+3~+15V之间,根据RS232电平,它是"0"…也就是说TTL的"1"经过这个电平转换电路后,RS2323可以识别出它是"1",是"0"也能识别为0.这就实现了从TTL到RS232的电平转换.
从RS232转换为TTL电平那就简单了,当PCTXD为"1",即-3~-15V时,Q4截止,RXD电压约为5V,为"1",当PCTXD为"0"时,Q4导通,电压为0,电平为"0".那么从RS232到TTL的电平转换也实现了.
备注:D2是为了防止Q4的BE反向击穿,TXD的最低电压时15V,Q4的BE耐压是6V左右。?

简略大概的说:
当TXD=1时,Q3截止,导致PCRXD=1;
当TXD=0时,Q3导通,导致PCRXD=0;
当PCTXD=1时,Q4导通,导致RXD=1;
当PCTXD=0时,Q4截止,导致RXD=0;

2.3.3 RS232 DB9接口

针号 功能 缩写
1 数据载波检测 DCD
2 接收数据 RXD
3 发射数据 TXD
4 数据终端准备 DTR
5 信号地 GND
6 数据设备准备好 DSR
7 请求发送 RTS
8 清除发送 CTS
9 振铃提示 DELL

2.3.4 RS232 直连和交叉

两个设备如果要通信,应该要交叉连即A的TXD连B的RXD,才能实现通信。如果仅是设备的延长,可用直连线。本质还是要看设备如何连接,确保能够通信。

2.4 RS485

2.4.1 为什么会出现RS485

为了解决RS232出现的一些问题。
1:RS232接口电平比较高
2:采用共模传输,抗噪声能力差
3:数率低,20kb/s
4:传输距离有限
这些一部分是共模传输导致,一部分是电平导致,RS485解决了一部分问题

2.4.2 RS485的DB9接口

针号 功能 缩写
1 485的A RS485(A+)
2 485的B RS485[B-]
3 N/C
4 N/C
5 信号地 GND
6 N/C
7 N/C
8 N/C
9 N/C

由线序可知,RS485是一种差分的信号传输。RS485的物理接口不仅是这种,还有凤凰头。使用双绞线传输

2.4.3 RS485的电平

RS485电平 由于两者均采用 差分传输(平衡传输)的方式,所以他们的电平方式,一般有两个引脚 A,B
发送端 AB间的电压差。
+2 ~ +6v 表示1
-2 ~ -6v 表示0
接收端 AB间的电压差
大于 +200mv表示1
小于 -200mv表示0
定义逻辑0为A<B的状态
定义逻辑1为A>B的状态
AB之间的电压差不小于200mv
且可以看出,他的工作方式只有两根数据线,说明是一种半双工的工作方式
菊花链通信和can通信区别,硬件架构,硬件工程

2.4.4 RS485可以进行点多对的传输

要求一个主机,多个从机。如图:
菊花链通信和can通信区别,硬件架构,硬件工程
在同一总线上最多可以挂接32个节点。要求有地址码。主机可以一直发送,从机只能有一个发送,且从机不能互相通信。

2.5 RS422

RS422其实是RS485的前身,很多地方都与RS485一致。不同在于RS422是四线,用一对差分来发,一对差分来收,RS485是只有一对差分,收发都用这两根线。

2.5.1 RS422的DB9接口

针号 功能 缩写
1 发送数据差分正端 TXD+
2 发送数据差分负端 TXD-
3 接收数据差分正端 RXD+
4 接收数据差分负端 RXD-
5 信号地 GND
6 数据设备准备好 DSR
7 请求发送 RTS
8 清除发送 CTS
9 振铃提示 DELL

可以看出,RS422是一种全双工模式。
问题:查阅的资料中,有些DB9的RS485和RS422中端口定义不太一样,有些是1脚为-端,有些是1脚为+端。因为这个DB9不是RS232那种标准接口协议,会有一定争议。还会有其他的物理形式接口,如凤凰头,网口等,但是差分两根线都是要用屏蔽的双绞线。

2.5.2 RS422的电平

与RS485一致,不再赘述。

2.6 RS232 RS485 RS422的对比

串口协议 RS232 RS485 RS422
双工模式 全双工 半双工 全双工
工作方式 单端(电平,共模) 差分 差分
速率 20kb/s 10Mb/s 10Mb/s
接口 不固定,DB9主要有3根线TXD RXD GND 不固定,DB9主要有3根线DATA+ DATA- GND 不固定,DB9主要有5根线TXD+ TXD- RXD+ RXD- GND
连接方式 点对点 点对多 点对多
电平 逻辑0:+3V~+15V 逻辑0:两线电压差-2V~-6V 逻辑0:两线电压差-2V~-6V
电平 逻辑1:-3V~-15V 逻辑1:两线电压差+2V~+6V 逻辑1:两线电压差+2V~+6V

2.7 未完成项

端接匹配
串联并联

3 IIC通信 总线

I²C(Inter-Integrated Circuit),中文应该叫集成电路总线。iic也是串行通信,但是与串口的区别在于,一个是同步,就是有时钟信号,一个是总线型,与RS232那种异步的接口型有一定区别。

3.1 硬件结构

I²C协议仅需要一个SDA和SCL引脚。SDA是串行数据线的缩写,而SCL是串行时钟线的缩写。这两条数据线需要接上拉电阻。值得一提的是多数通信默认都是高电平。
菊花链通信和can通信区别,硬件架构,硬件工程
从上面可以看出,它是一个同步的通信模式,所以没有固定的波特率,波特率由SCL决定。
传输速度;
标准模式:Standard Mode = 100 Kbps
快速模式:Fast Mode = 400 Kbps
高速模式: High speed mode = 3.4 Mbps
超快速模式: Ultra fast mode = 5 Mbps

它是一个总线,就是他可以实现多主设备通信,即多对多通信。使用I²C,可以将多个从机(Slave)连接到单个主设备(Master),并且还可以有多个主设备(Master)控制一个或多个从机(Slave)。

I²C总线(SDA,SCL)内部都使用 漏极开路驱动器(开漏驱动) ,因此SDA和SCL 可以被拉低为低电平,但是不能被驱动为高电平,所以每条线上都要使用一个上拉电阻,默认情况下将其保持在高电平;

3.2 数据传输协议

主设备和从设备进行数据传输时遵循以下协议格式。数据通过一条SDA数据线在主设备和从设备之间传输0和1的串行数据。串行数据序列的结构可以分为,开始条件,地址位,读写位,应答位,数据位,停止条件,具体如下所示;
菊花链通信和can通信区别,硬件架构,硬件工程
开始条件:SDA 由高电平向低电平跳变,时钟为高
地址位:一般为7位,也有8位、10位的。理论上讲可以有127个从机。但是iic协议规定了总线电容不能超过400pF,管脚和PCB都是有寄生电容的,所以是有限制的,经验上是最多8个
R/W位:读写位
为0低电平表示,主设备将数据发送到从设备
为1高电平表示,主设备接收从设备数据
应答位:开始信号后第9个时钟位时,从设备发送应答信号,即SDA被拉低一个时钟位。如果没有这个应答,SDA输出高电平,主设备重启或者停止。
数据位:一般为8位,注意:时钟信号为高时,SDA不允许变化,时钟为低时,SDA才能发生跳变。
应答位:数据发送了会紧跟一个应答信号。
停止条件:SDA 由低电平向高电平跳变,时钟为高。
菊花链通信和can通信区别,硬件架构,硬件工程
需要注意的是:起始信号是必须的,应答和结束信号都可以不要。

3.3 漏极开路输出 集电极开路输出 推挽输出

3.3.1 推挽输出

菊花链通信和can通信区别,硬件架构,硬件工程
当Vin是V+时,Q3导通,输出的是高电平,叫推
当Vin是V-时,Q4导通,输出的是低电平,叫挽

3.3.1 集电极开路输出

菊花链通信和can通信区别,硬件架构,硬件工程
Vin为高,Q5导通,输出为低。Vin为高,Q5截止,LED灯亮。

3.3.3 漏极开路输出 OD门

将上面电路换成NMOS管。就和上面电路稍微有点区别了。
菊花链通信和can通信区别,硬件架构,硬件工程
只要对栅极施加电压,DS就会导通。MOS管的输入阻抗非常大,这意味着:没有电流从控制电路流出,也没有电流进入控制电路。没有电流流入或流出,就不会烧坏控制电路。而双极型晶体管不同,是电流控制性元器件,如果使用开集电路,可能会烧坏控制电路。这大概就是我们总是听到开漏电路而很少听到开集电路的原因吧?因为开集电路被淘汰了。

总结:
1:推挽输出能够输出高或者低,而开漏输出只能输出低,或者关闭输出,因此开漏输出总是要配一个上拉电阻使用。
2:开漏输出的上拉电阻不能太小,太小的话,当开漏输出的下管导通时,电源到地的电压在电阻上会造成很大的功耗,因此这个电阻阻值通常在10k以上,这样开漏输出在从输出低电平切换到高电平时,速度是很慢的。典型值为4.7k或者10k(有计算公式)
3:推挽输出任意时刻的输出要么是高,要么是低,所以不能将多个输出短接,而开漏输出可以将多个输出短接,共用一个上拉,此时这些开漏输出的驱动其实是与非的关系。

3.4 IIC的连接和总线仲裁

菊花链通信和can通信区别,硬件架构,硬件工程
当多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线

仲裁:每个主设备都需要在发送消息之前检测SDA线是低电平还是高电平;
如果SDA线为低电平,则意味着另一个主设备可以控制总线,并且主设备应等待发送消息。
如果SDA线为高电平,则可以安全地发送消息。

遗留:
接收消息如何操作?

4 SPI通信

SPI是同步通信,全双工。

4.1 SPI的硬件结构

由四根线完成通信
MISO:master input slave output 主收从发
MOSI:主发从收
CLK:时钟
SS:片选
菊花链通信和can通信区别,硬件架构,硬件工程
一般在嵌入式中,都是通过移位寄存器完成通信、还是发送缓存寄存器和接收缓存寄存器。
值得注意的是,SPI只要通信成功,都是会全双工工作,就是既会发送也会接收,主机从机皆如此,但是如果只是单端的发送,那忽略到接收的数据就行了。

4.2 SPI的工作模式

SPI有四种工作模式,由时钟极性CPOA和时钟相位CPHA共同决定。
时钟极性 CKP/Clock Polarity
CKP = 0:时钟空闲IDLE为低电平 0;
CKP = 1:时钟空闲IDLE为高电平1;
时钟相位 CKE /Clock Phase (Edge)
CKE = 0:在时钟信号SCK的第一个跳变沿采样;
CKE = 1:在时钟信号SCK的第二个跳变沿采样;
模式编号:

SPI mode CKP CKE
1 0 0
2 0 1
3 1 0
4 1 1

最常用的是模式0和模式3
菊花链通信和can通信区别,硬件架构,硬件工程
举例:SPI模式0:
空闲时,时钟为低电平,在第一个时钟沿,即上升沿,主机采样=主机接收数据=从机发出数据。第二个时钟沿,即下降沿,主机发送=从机采样=从机接收数据

4.3 SPI的总线

4.3.1 多片选信号

菊花链通信和can通信区别,硬件架构,硬件工程

从机由片选信号选中。时钟都是由主机产生。

4.3.2 菊花链

菊花链通信和can通信区别,硬件架构,硬件工程

菊花链通信和can通信区别,硬件架构,硬件工程
菊花链模式充分使用了SPI其移位寄存器的功能,整个链充当通信移位寄存器,每个从机在下一个时钟周期将输入数据复制到输出。
距离主机越远的从机,获得服务的优先级越低,所以需要安排好从机的优先级,一旦数据链路中的某设备发生故障的时候,它下面优先级较低的设备就不可能得到服务了
应用比较少,了解一下。

5 RS232转TTL

菊花链通信和can通信区别,硬件架构,硬件工程
菊花链通信和can通信区别,硬件架构,硬件工程

6 防雷击 电泳 保护

菊花链通信和can通信区别,硬件架构,硬件工程
RS232电压较高,经常带电插拔。接口会受过电压,过电流冲击。加上限流电阻和双向瞬态抑制二极管作为保护

菊花链通信和can通信区别,硬件架构,硬件工程
菊花链通信和can通信区别,硬件架构,硬件工程文章来源地址https://www.toymoban.com/news/detail-802654.html

到了这里,关于各类通信协议归纳整理(偏硬件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CAN协议详解+常见问题汇总,吐血整理!!!

    文章分两部分,一是CAN的详解,二是常见问题汇总;文章长,但是都是重点精华,往有帮助~ (参考的是火哥的STM32有关CAN协议的文档) 一、CAN的详解 1. 物理层 CAN总线:成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。 CAN是异步通讯,只有CAN_High和CAN_Low两条信

    2024年02月08日
    浏览(32)
  • ADBMS1818菊花链通信

            ADBMS1818是一款多通道电池堆监控器,可测量多 达18串电池电压,总测量误差(TME)小于3.0 mV。ADBMS1818具有0V至5V的电池测量范围,适合大多数电池应用。可在290 μs内完成所有18个电池电压测量,并可以选择较低的数据采集速率以实现高降噪抑制。         当电芯数高

    2024年02月12日
    浏览(36)
  • CAN通信协议

       在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个

    2024年02月15日
    浏览(47)
  • STM32进阶学习(6)-通信协议之CAN详解

    CAN通信的背景可以追溯到上世纪80年代初,当时汽车制造商面临着一个共同的挑战: 如何有效地传输和共享大量的传感器数据和控制信息 。 传统的电缆布线方式非常复杂且容易出错,而且无法满足日益增长的数据传输需求。 为了解决这个问题,德国的汽车制造商奔驰(Mer

    2024年02月03日
    浏览(34)
  • UART、IIC、SPI、CAN通信的区别与应用

    数据通信基本方式可以分为 串行通信与并行通信 两种 1.1.1、串行通信 (1)定义:串行通信是指利用一条传输线将数据一位位地顺序传送。 (2)传输方式:传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输。 (3)特点:通信线路简单,成

    2024年02月06日
    浏览(40)
  • 串行通信协议(I2C、SPI、UART、SCCB、CAN)

    推荐一部书,在这本书里面介绍了I2C、SPI、UART和CAN等通信协议,写的蛮不错的。 串行通信 :设备与设备之间,传输数据按顺序依次1bit位接1bit位进行传输。 并行通信 :设备与设备之间,通过多条传输线,可以同时传输多个bit位的信号。 1.简单的双向两线制总线协议标准、半

    2024年02月14日
    浏览(56)
  • QT QModbusTcpClient使用ModbusTcp协议与硬件通信实战例子

        给了一个显示屏和显示屏的通信文档,用ModbusTcp协议与其通信,读取或者写入显示屏相应的内容,以满足项目需要 文档部分截图如下 屏幕如下图所示: 我需要写入改写其中的物料名称,待领料数量等,就是上位机与硬件通信 对于熟悉modbusTcp协议的,可以根据协议和通

    2024年01月25日
    浏览(29)
  • AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽

    通讯协议栈几乎是CP AUTOSAR中最庞杂的一块。由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协作!),且名词概念众多,入门很难。网络上关于各个模块的详细介绍浩如烟海,其深度也让人叹为观止。但没有一篇文章把这些模块串起

    2024年02月03日
    浏览(41)
  • ChatGPT 各类 Prompt 整理

    如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 修正 【论文修正】Proofread this, lightly improving clarity and flow in an academic style: [Your Text] 【论文修正 + 翻译】Translate this to English and proofread this, light

    2023年04月19日
    浏览(27)
  • elasticsearch 7.9.3知识归纳整理(五)之 es的索引生命周期管理

    一、常见概念及命令 1.1、概念 ILM定义了四个生命周期阶段: Hot :正在积极地更新和查询索引。 Warm :不再更新索引,但仍在查询。 cold :不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。 Delete :不再需要该索引,可以安全地将其删除

    2024年01月22日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包