常用的通信协议

news2024/11/13 15:27:49

最近在做项目,用到了一些通信协议,这里详细整理一下相关的通信协议,方便以后查阅。

常用的通信协议

  • 单工 半双工 全双工
    • 单工通信(Simplex Communication)
    • 半双工(Half-duplex Communication)
    • 全双工(Full-duplex Communication)
    • 参考资料
  • 并行通信 VS 串行通信
    • 并行通信(Parallel Commmunication)
    • 串行通信(Serial Commmunication)
    • 参考资料
  • 同步串行通信 VS 异步串行通信
    • 同步串行通信(Synchronous Serial Communication)
    • 异步通信(Asynchronous Serial Communication)
    • 同步通信与异步通信区别
    • 参考资料
  • UART(Universal Asynchronous Receiver/Transmitter)
    • 简介
    • UART协议帧
      • 起始位
      • 数据帧
      • 奇偶校验
      • 停止位
    • UART传输步骤
    • UART的优缺点
      • 优点
      • 缺点
    • 参考资料
  • SPI(Serial Peripheral Interface)
    • 简介
    • SPI数据传输步骤
    • 时钟模式
      • 时钟速率
      • 时钟极性
      • 时钟相位
      • 四种模式
    • 多个从模块
      • 多片选
      • 菊花链
    • SPI的优缺点
      • 优点
      • 缺点
    • 参考资料
  • I²C(Inter-Integrated Circuit)
    • 简介
    • I²C是如何工作的
      • Start and Stop Condition & Logic Signal & Read/Write Bit & ACK/NACK Bit
      • 数据帧格式
    • I²C数据传输步骤
    • 多主或多从
      • 单个主设备连接多个从机
      • 多个主设备连接多个从机
    • I²C的优缺点
      • 优点
      • 缺点
    • 参考资料
  • TTL & RS232 &RS485 电平标准
    • TTL(Transistor Transistor Logic)
    • RS232(Recommended Standard 232)
      • 简介
      • RS232的逻辑电平
      • RS232存在的问题
    • RS485(Recommended Standard 485)
      • 简介
      • RS485的特点
      • 连接方式
      • RS485的逻辑电平
      • 抗干扰性能
      • 传输速度 VS 传输距离
      • TTL转485电路
        • 经典电路
        • 自动切换电路
    • TTL RS232 RS485的区别
    • 参考资料
  • CAN(Controller Area Network)
    • 简介
      • 传统CAN 简介
      • CAN FD 简介
        • CAN FD 的优势
    • CAN 协议
      • 物理层
        • 闭环总线网络
        • 开环总线网络
        • ISO11898 和11519-2 协议的不同点
        • 差分信号
        • CAN 协议中的差分信号
      • 协议层
    • 参考资料
  • RS232 & RS485 & CAN & IIC & SPI 的对比
  • CRC校验(循环冗余校验)
    • 简介
    • 基础概念
      • 模2除法
      • 多项式与二进制
    • CRC校验原理
      • CRC计算步骤
    • 常见CRC参数模型
    • 参考资料

单工 半双工 全双工

根据通信双方的分工和信号传输的方向可将通讯分为三种方式

在这里插入图片描述

单工通信(Simplex Communication)

只允许甲方向乙方传送信息,而乙方不能向甲方传送 。
在这里插入图片描述
常见的有:广播、电视、遥控器、VGA显示接口

半双工(Half-duplex Communication)

数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。
在这里插入图片描述
常见的有:对讲机、I²C

全双工(Full-duplex Communication)

通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合,全双工指可以同时进行信号的双向传输。
在这里插入图片描述
常见的有:手机、电话、网口、UART

参考资料

全双工,双工,单工的区别

单工,半双工,全双工有什么区别呢?

并行通信 VS 串行通信

嵌入式电子产品是一种互连电路(处理器或其他集成电路)以创建共生系统。
为了使这些单独的电路交换其信息,它们必须共享公共通信协议
已经定义了数百种通信协议来实现这种数据交换,根据通信过程中每次传输的位数,可将通信分为:并行通信串行通信

并行通信(Parallel Commmunication)

并行是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高。

并行接口同时传输多个位。它们通常需要数据总线(八、十六或更多线路),以1和0的波形传输数据。

如下图:使用9线的并行通信,由时钟控制的8位数据总线,每个时钟脉冲发送一个字节。
在这里插入图片描述
主要特点:

  1. 各数据位同时传输,传输速度快、效率高,多用在实时、快速的场合。

  2. 并行通信不能长距离通信,抗干扰能力差。

串行通信(Serial Commmunication)

简称串口(串行接口),指数据一位一位地顺序传送
在这里插入图片描述
常用总线; I²C、SPI、UART

主要特点:

  1. 按bit逐位传输,效率低
  2. 只需要一根数据线,设计简单

分类
串行通信根据发送时钟源和接收时钟源是否保持一致,又分为同步通信异步通信

参考资料

2.2 数据通信方式:单工通信、半双工通信和全双工通信,并行通信和串行通信,异步传输和同步传输。

通信教程01_什么是并行通信?什么是串行通信?

Parallel vs serial communication

四分钟搞定【同步通信-异步通信-全双工通信-串行通信-并行通信】

同步串行通信 VS 异步串行通信

同步串行通信(Synchronous Serial Communication)

信息发送设备与信息接收设备需要时钟同步信号,两者间除数据线连接还需要额外的时钟线连接

在这里插入图片描述

举例: I²C、SPI

异步通信(Asynchronous Serial Communication)

信息发送设备与信息接收设备之间无时钟连接,信息中包含特殊标志位Start/Stop,接收设备根据特殊标志利用本地时钟对数据采样。

在这里插入图片描述

举例:UART

同步通信与异步通信区别

  1. 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
  2. 同步通信效率高;异步通信效率较低。
  3. 同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
  4. 同步通信可用于点对多点;异步通信只适用于点对点

参考资料

四分钟搞定【同步通信-异步通信-全双工通信-串行通信-并行通信】

Difference between Synchronous and Asynchronous Transmission

浅析同步通信与异步通信

UART(Universal Asynchronous Receiver/Transmitter)

简介

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向串行异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。

典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,如下图所示:

在这里插入图片描述

UART以异步方式传输数据,这意味着没有时钟信号来同步发送端UART输出的比特和接收端UART采样的比特。
代替时钟信号的是,发送 UART 为传输的数据包添加开始和停止位。这些比特定义了数据包的开始和结束,以便接收 UART 知道何时开始读取比特。

当接收端的UART检测到起始位时,它开始以特定频率(即波特率)读取传入的比特。波特率是数据传输速度的度量单位,以**每秒比特数(bps)**表示。两个UART必须以大致相同的波特率运行。在传输和接收的UART之间,波特率只能相差约10%,否则比特的时序将严重偏离。

在这里插入图片描述

UART协议帧

在UART中,传输模式为数据包形式。数据包由起始位数据帧奇偶校验位停止位组成。
在这里插入图片描述
在这里插入图片描述

起始位

当不传输数据时,UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉到低电平并保持1个时钟周期
当接收UART检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。
在这里插入图片描述

数据帧

数据帧包含所传输的实际数据。
如果使用奇偶校验位,数据帧长度可以是5位到8位。如果不使用奇偶校验位,数据帧长度可以是9位。
在大多数情况下,数据以最低有效位优先方式发送。
在这里插入图片描述

奇偶校验

奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。

接收UART读取数据帧后,将计数值为1的位计算总数,检查总数是偶数还是奇数。

  • 如果奇偶校验位为0(偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数
  • 如果奇偶校验位为1(奇数奇偶校验),则数据帧中的1或逻辑高位总计应为奇数

当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如果奇偶校验位为0,而总和为奇数,或者奇偶校验位为1,而总和为偶数,则UART认为数据帧中的位已改变。
在这里插入图片描述

在这里插入图片描述

停止位

为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间
在这里插入图片描述

UART传输步骤

  1. 发送UART从数据总线并行接收数据。
    在这里插入图片描述

  2. 发送UART将起始位、奇偶校验位和停止位添加到数据帧。
    在这里插入图片描述

  3. 从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样。
    在这里插入图片描述

  4. 接收UART丢弃数据帧中的起始位、奇偶校验位和停止位。
    在这里插入图片描述

  5. 接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线。
    在这里插入图片描述

UART的优缺点

优点

  1. 仅使用两根导线
  2. 不需要时钟信号
  3. 具有奇偶校验位以进行错误检查
  4. 只要双方都设置为相同的数据包结构,数据包的结构可以更改
  5. 文档充分且广泛使用的方法

缺点

  1. 数据帧的大小限制在最多9位
  2. 不支持多从机或多主机系统
  3. 每个UART的波特率必须在彼此之间相差不超过10%

参考资料

一文搞懂UART通信协议

超简单的一种通信,2分钟搞懂,串口通讯的工作原理!

UART interface in IoT

BASICS OF UART COMMUNICATION

UART:了解通用异步接收器/发送器的硬件通信协议

【干货分享】2分钟快速了解电平通讯TTL、RS232、RS485

SPI(Serial Peripheral Interface)

简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。

SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。

SPI通信原理很简单,需要至少4根线,单向传输时3根线,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选):

在这里插入图片描述

  • MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
  • MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
  • SCLK(Serial Clock):时钟信号,由主设备产生;
  • CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

在这里插入图片描述

SPI数据传输步骤

  1. 主设备输出时钟信号:
    在这里插入图片描述

  2. 主设备将SS/CS引脚切换到低电压状态,激活从设备:
    在这里插入图片描述

  3. 主设备逐位通过MOSI线向从设备发送数据。从设备接收数据位时逐位读取:
    在这里插入图片描述

  4. 如果需要响应,从设备通过MISO线逐位向主设备返回数据。主设备在接收到数据位时逐位读取:
    在这里插入图片描述

例如,下图示例中简单模拟SPI通信流程,主机拉低NSS片选信号,启动通信,并且产生时钟信号,上升沿触发边沿信号,主机在MOSI线路一位一位发送数据0X53,在MISO线路一位一位接收数据0X46,如下图所示:

在这里插入图片描述

时钟模式

SPI时钟特点主要包括:时钟速率时钟极性时钟相位三方面。

时钟速率

SPI总线上的主设备必须在通信开始时候配置并生成相应的时钟信号。
从理论上讲,只要实际可行,时钟速率就可以是你想要的任何速率,当然这个速率受限于每个系统能提供多大的系统时钟频率,以及最大的SPI传输速率。

时钟极性

根据硬件制造商的命名规则不同,时钟极性通常写为CKPCPOL

  • CKP = 0:时钟空闲IDLE为低电平 0;
  • CKP = 1:时钟空闲IDLE为高电平1。

时钟相位

根据硬件制造商的不同,时钟相位通常写为CKECPHA

  • CKE = 0:在时钟信号SCK的第一个跳变沿采样;
  • CKE = 1:在时钟信号SCK的第二个跳变沿采样。

四种模式

根据SPI的时钟极性和时钟相位特性可以设置4种不同的SPI通信操作模式。

  • Mode0:CKP=0,CKE =0:当空闲态时,SCK处于低电平,数据采样是在第1个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在上升沿。
  • Mode1:CKP=0,CKE=1:当空闲态时,SCK处于低电平,数据采样是在第2个边沿,也就是SCK由低高电平到低电平的跳变,所以数据采样是在下降沿。
  • Mode2:CKP=1,CKE=0:当空闲态时,SCK处于高电平,数据采样是在第1个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集样是在下降沿。
  • Mode3:CKP=1,CKE=1:当空闲态时,SCK处于高电平,数据发送是在第2个边沿,也就是SCK由低电平到高电平的跳变,所以数据采集样是在上升沿。

在这里插入图片描述

多个从模块

有两种方法可以将多个从设备连接到主设备:多片选和菊花链。

多片选

通常,每个从机都需要一条单独的SS线。如果要和特定的从机进行通讯,可以将相应的NSS信号线拉低,并保持其他SS信号线的状态为高电平。

在这里插入图片描述

菊花链

串行连接最大缺点是一旦数据链路中的某设备发生故障的时候,它下面优先级较低的设备就不可能得到服务了。
另一方面,距离主机越远的从机,获得服务的优先级越低,所以需要安排好从机的优先级,并且设置总线检测器,如果某个从机超时,则对该从机进行短路,防止单个从机损坏造成整个链路崩溃的情况。

在这里插入图片描述

SPI的优缺点

优点

  1. 无起始位和停止位,因此数据位可以连续传输而不会被中断;
  2. 没有像I2C这样复杂的从设备寻址系统
  3. 数据传输速率比I2C更高(几乎快两倍);
  4. 分离的MISO和MOSI信号线,因此可以同时发送和接收数据
  5. 极其灵活的数据传输,不限于8位,它可以是任意大小的字;
  6. 非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。

缺点

  1. 使用四根信号线(I2C和UART使用两根信号线);
  2. 无法确认是否已成功接收数据(I2C拥有此功能);
  3. 没有任何形式的错误检查,如UART中的奇偶校验位;
  4. 只允许一个主设备
  5. 没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
  6. 没有定义硬件级别的错误检查协议
  7. 与RS-232和CAN总线相比,只能支持非常短的距离

参考资料

一文搞懂SPI通信协议

SPI通讯协议的工作方式

深入理解SPi通讯协议,5分钟看懂!

I²C(Inter-Integrated Circuit)

简介

I²C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。
由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。

与 UART 通信一样,I2C 在设备之间只使用两根导线传输数据:

在这里插入图片描述

SDA (Serial Data) :主设备和从设备用于发送和接收数据的线路。
SCL (Serial Clock) :传输时钟信号的线路。

I2C 是一种串行通信协议,因此数据是沿着一条线(SDA 线)逐位传输的。

与 SPI 一样,I2C 也是同步的,因此bit的输出与bit的采样是通过主站和从站共享的时钟信号同步进行的。时钟信号始终由主站控制。

在这里插入图片描述

I²C是如何工作的

使用I2C,数据以消息的形式传输。消息被分成数据帧。每个消息包含一个地址帧,其中包含从设备的二进制地址,以及一个或多个包含正在传输的数据的数据帧。消息还包括每个数据帧之间的起始和停止条件、读/写位,以及ACK/NACK位:

在这里插入图片描述

Start and Stop Condition & Logic Signal & Read/Write Bit & ACK/NACK Bit

在这里插入图片描述
在这里插入图片描述

数据帧格式

在这里插入图片描述
在这里插入图片描述

I²C数据传输步骤

  1. 主设备通过将SDA线从高电压电平切换到低电压电平,然后将SCL线从高电平切换到低电平,向每个连接的从设备发送起始条件:
    在这里插入图片描述

  2. 主设备向每个从设备发送要进行通信的从设备的7位或10位地址,以及读/写位:
    在这里插入图片描述

  3. 每个从设备将主设备发送的地址与其自己的地址进行比较。如果地址匹配,从设备通过将SDA线拉低一个比特返回一个ACK位。如果主设备的地址与从设备的地址不匹配,从设备将保持SDA线高电平。
    在这里插入图片描述

  4. 主设备发送或接收数据帧:
    在这里插入图片描述

  5. 在每个数据帧传输后,接收设备向发送者返回另一个ACK位,以确认成功接收该帧:
    在这里插入图片描述

  6. 为了停止数据传输,主设备通过在将SCL置高之前将SDA置高,向从设备发送停止条件:
    在这里插入图片描述

多主或多从

单个主设备连接多个从机

I2C总线上的主设备使用7位地址对从设备进行寻址。可以挂接127个不同地址的I2C设备。常用IIC接口通用器件的器件地址是由种类型号寻址码组成的,共7位。如格式如下:

D7 D6 D5 D4 D3 D2 D1 D0

器件类型由:D7-D4 共4位决定的。这是由半导公司生产时就已固定此类型的了,也就是说这4位已是固定的。

用户自定义地址码:D3-D1共3位。这是由用户自己设置的,通常的作法如EEPROM这些器件是由外部IC的3个引脚所组合电平决定的(用常用的名字如A0,A1,A2),这也就是寻址码。这就是为什么同一IIC总线上同一型号的IC设备最多只能共挂8片的原因了

在这里插入图片描述

多个主设备连接多个从机

多个主设备可以连接到一个或多个从机。当两个主设备试图通过SDA线路同时发送或接收数据时,每个主设备都需要在发送消息之前检测SDA线是低电平还是高电平;如果SDA线为低电平,则意味着另一个主设备可以控制总线,并且主设备应等待发送消息。如果SDA线为高电平,则可以安全地发送消息。

在这里插入图片描述

I²C的优缺点

优点

  1. 只需两根电线
  2. 支持多个主站和多个从站
  3. ACK/NACK 位可确认每个帧是否传输成功
  4. 硬件没有 UART 那么复杂
  5. 众所周知且广泛使用的协议

缺点

  1. 数据传输速率比 SPI 慢
  2. 数据帧大小限于 8 位
  3. 需要比 SPI 更复杂的硬件来实现

参考资料

4分钟看懂!I2C通讯协议 最简单的总线通讯!

BASICS OF THE I2C COMMUNICATION PROTOCOL

TTL & RS232 &RS485 电平标准

TTL(Transistor Transistor Logic)

TTL(transistor transistor logic)即晶体管-晶体管逻辑电平。

TTL电平信号规定,+2.4V—+5V等价于逻辑“1”,0V—+0.4V等价于逻辑“0”(采用二进制来表示数据时)。

这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。

在这里插入图片描述

一般的电子设备用的多是TTL电平,但是它的驱动能力和抗干扰能力很差,不适合作为外部的通信标准,一些通信方式如RS232、RS485、USB等在传输线上使用的不是TTL电平,因此这些通信线上的信号在电子设备端要进行电平转换,才能够正常通信。

在这里插入图片描述

上面所说的串口就是使用的TTL电平标准进行通讯的

在这里插入图片描述

RS232(Recommended Standard 232)

简介

RS232是一种接口电气特性的标准,全称是数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准,RS-232在1962年发布,命名为EIA-232-E(由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓,即RS232),作为工业标准,以保证不同厂家产品之间的兼容。

RS232通信时使用的DB9接口:
在这里插入图片描述

RS232的三线连接方式与TTL类似,有RX、TX和GND组成。5线则多出了RTS和CTS两个硬件流控管脚。

  • RTS(Request To Send):请求发送
  • CTS(Clear To Send):清除发送
    在这里插入图片描述

单片机输出的都是TTL电平,因此需要一个电平转换芯片,将单片机的TTL电平转换为RS232电平,这里使用的是MAX232转换芯片。
在这里插入图片描述

RS232的逻辑电平

如果单片机输出+2.4V~ +5V则MAX232输出-3V~-15V的电平
在这里插入图片描述
如果单片机输出+0V~ +0.8V则MAX232输出+3V~+15V的电平
在这里插入图片描述

在这里插入图片描述

正是由于RS232的逻辑电平范围比TTL增大了,使得RS232的抗干扰能力比TTL更强。

在这里插入图片描述

RS232存在的问题

RS232接口标准由于出现较早,所以其目前存在很多问题。

  1. 接口电平值较高,易损坏接口电路的芯片。又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
  2. 传输速率较低,大约为20Kbps;传输距离较短,大约为15米左右。
  3. 接口由三根线TX、RX、GND组成,没有构成差分线形式,容易产生共地共模干扰,抗干扰能力弱。

RS485(Recommended Standard 485)

简介

RS-485是一种工业控制环境中常用的通讯协议,它具有抗干扰能力强传输距离远的特点。RS-485通讯协议由RS-232协议改进而来,协议层不变,只是改进了物理层,因而保留了串口通讯协议应用简单的特点。

RS-485 属于电气标准,该标准定义了接口的物理层标准例如电压,阻抗等等,而不对软件协议,通信时序,通信数据给予定义。而是由用户或通用软件协议来定义。目前可以使用 RS-485 作为物理层的通用标准协议(纯软件协议)有工业 HART 总线,Modbus 协议和 Profibus DP 协议。

RS485的特点

  1. 支持多节点:一般最大支持 32 个节点。
  2. 传输距离远:最远通讯距离可达1200米。
  3. 抗干扰能力强:差分信号传输。
  4. 连接简单:只需要两根信号线(A+和B-)就可以进行正常的通信。

连接方式

在 RS485 通信网络中,通常会使用 485 收发器来转换 TTL 电平RS485 电平

节点中的串口控制器使用 RX 与 TX 信号线连接到 485 收发器上,而收发器通过差分线连接到网络总线

串口控制器与收发器之间一般使用 TTL 信号传输,收发器与总线则使用差分信号来传输。

发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上。接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。

在总线的起止端分别加了一个 120 欧的匹配电阻。

在这里插入图片描述

使用MAX3485芯片实现TTL电平和RS485电平的转换:

在这里插入图片描述

RS485的逻辑电平

逻辑 1:两根信号线(A+和B-)的电压差在 +2V~+6V 之间。
在这里插入图片描述
逻辑 0:两根信号线(A+和B-)的电压差在 -2V~-6V 之间。
在这里插入图片描述

抗干扰性能

两个485设备之间通过两条双绞线进行连接,当信号在传输的过程中,受到干扰,由于两条线搅在一块,因此就会同时受到扰动,就会产生相同的偏差,但是RS485的逻辑电平是通过两条线的电压差判断的,因此受到的干扰并不会影响最终信号传输的效果,增强了信号传输过程中的抗干扰性能。
在这里插入图片描述

传输速度 VS 传输距离

RS485最大的传输距离为1200米,最高的传输速度为10Mbps,但是它的传输速度随着传输距离的增大而降低。
在这里插入图片描述

TTL转485电路

经典电路

在这里插入图片描述
注:RS485总线空闲状态时,电平不固定,增加A、B加上下拉电阻,提高通信稳定性。

接收数据:
默认没有数据时,TX为高电平,三极管导通,RE低电平使能,RO收数据有效,芯片max485为接收状态。

发送数据:
TX先下拉一个电平,表示开始发送数据,三极管截止,DE高电平发送使能,DI发数据有效,芯片max485为发送状态。

自动切换电路

在这里插入图片描述

注:TX、RX引脚均需上拉电阻

接收数据:
默认没有数据时,TX为高电平,三极管导通,RE低电平使能,RO收数据有效,芯片max485为接收状态。

发送数据:
发送数据引脚是 RS485_TX,应该 RS485_TX 发送1,AB发送1;RS485_TX 发送0,AB发送0。

  • 当 RS485_TX 发送1时:NPN三极管导通,RE和DE的引脚是低电平,发送禁止,接收使能,进入接收状态,MAX3485芯片的AB引脚进入高阻状态,因为R4把A拉高,R5把B拉低,所以,AB传输的是1。所以,当RS485_TX发送1时,AB引脚发送1。

  • 当 RS485_TX 发送0时:NPN三极管不导通,RE和DE的引脚是高电平,进入发送状态,SP3485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。所以,当RS485_TX发送0时,AB引脚发送0。

TTL RS232 RS485的区别

TTL、RS232和RS485都只是改变的物理层的信号传输的电平协议,并不关乎代码是如何实现的。

就比如我想用单片机的串口输出信息,那我可以直接接到另一个单片机的串口上,实现两个单片机的信息传输。我也可以在使用RS232电平协议进行传输数据,我只需要在两个单片机之前分别放一个MAX232转换芯片就可以,这样我就提高了两个单片机之间通信的抗干扰能力。进一步我也可以选择RS485电平协议进行通信,同样我只需要分别在两个单片机前面放一个SP3485芯片就可以,这样我就可以实现两个单片机之间的远距离通信,并且抗干扰能力也大大提高。

在这里插入图片描述

参考资料

【干货分享】2分钟快速了解电平通讯TTL、RS232、RS485

【干货分享】2分钟搞懂 RS232电平通讯,讲的太透了!什么时RS232标准?为什么有了RS232还要用RS485

【小元】两分钟告诉你!什么是RS485标准!为什么要把TTL电平转化成差分信号?

5分钟看懂!串口RS232 RS485最本质的区别!

什么是TTL?标准USB接口是TTL吗?RS232、RS422、RS485的区别?

RS485通信总线详解

电路基础知识——TTL转485电路

CAN(Controller Area Network)

简介

传统CAN 简介

CAN 是Controller Area Network(控制器局域网络)的缩写,是ISO 国际标准化的串行通信协议。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN通信协议。

在这里插入图片描述
比如上图中,每个部分的多个器件都挂载在CAN总线上(一个CAN总线上的所有器件通讯速率必须相同),各个部分再汇集到网关,由网关分配实现各个不同速率的部分之间通讯,这样就很方便轻松实现了对汽车整体电控部分的检测与控制。

CAN FD 简介

因为每个CAN 数据帧只能包含8 个数据字节。此外,网络速度限制为1 Mbit/s,从而限制了数据生成功能的实现。CAN FD 解决了这些问题,使其具有前瞻性。

CAN FD (CAN with Flexible Data-Rate),字面意思上看,相较于CAN 多了FD (Flexible Data-Rate),
也就是“灵活数据速率”。

CAN FD 的优势

CAN FD 协议是由Bosch 以及行业专家预研开发的,并于2012 年发布。CAN FD 具有四个主要优点:

  1. 增加了数据的长度:CAN FD 每个数据帧最多支持64 个数据字节,而传统CAN 最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
  2. 增加传输的速度:CAN FD 支持双比特率;与传统CAN 一样,标称(仲裁)比特率限制为1Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s 的数据比特率(实际应用中可以达到8 Mbit/s,但没有标准)。
  3. 更好的可靠性:CAN FD 使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。
  4. 平滑过渡:在一些特定的情况下CAN FD 能用在仅使用传统CAN 的ECU 上,这样就可以逐步引入CAN FD 节点,从而为OEM 简化程序和降低成本。

在这里插入图片描述

与传统CAN 相比,CAN FD 可以将网络带宽提高3 到8 倍,效率可从50% 提升到90%,从而为
数据的增长提供了一种简单的解决方案。

CAN 协议

物理层

与I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN_High 和CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

闭环总线网络

CAN 物理层的形式主要有两种,如下所示的图中的CAN 通讯网络是一种遵循ISO11898 标准的
高速、短距离“闭环网络”,它的总线最大长度为40m通信速度最高为1Mbps,总线的两端各
要求有一个“120 欧”的电阻。

在这里插入图片描述

开环总线网络

如下所示的图中的是遵循ISO11519-2 标准的低速、远距离“开环网络”,它的最大传输距离为
1km
最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一
个“2.2 千欧”的电阻。

在这里插入图片描述

ISO11898 和11519-2 协议的不同点

CAN 协议经ISO 标准化后有ISO11898 标准和ISO11519-2 标准两种。ISO11898 和ISO11519-2 标准对于数据链路层的定义相同,但物理层不同
ISO11898 是通信速度为125kbps-1Mbps 的CAN 高速通信标准。
ISO11519 是通信速度为125kbps 以下的CAN 低速通信标准。
在这里插入图片描述

差分信号

差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输
时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示
逻辑0 和逻辑1。

在这里插入图片描述
相对于单信号线传输的方式,使用差分信号传输具有如下优点

  1. 抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。
  2. 能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。
  3. 时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因而受工艺、温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的电路。

在这里插入图片描述

由于差分信号线具有这些优点,所以在USB 协议485 协议以太网协议CAN 协议的物理层中,都使用了差分信号传输。

CAN 协议中的差分信号

CAN 协议中对它使用的CAN_High 及CAN_Low 表示的差分信号做了规定,以高速CAN 协议为例:

当表示逻辑1 时(隐性电平),CAN_High 和CAN_Low 线上的电压均为2.5v,即它们的电压差VH-VL=0V;
当表示逻辑0 时(显性电平),CAN_High 的电平为3.5V,CAN_Low 线的电平为1.5V,即它们的电压差为VH-VL=2V。

在这里插入图片描述
在CAN 总线中,必须使它处于隐性电平(逻辑1)显性电平(逻辑0) 中的其中一个状态。假如有两个CAN 通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似I2C 总线的“线与”特性将使它处于显性电平状态,显性电平的名字就是这样来的,即可以认为显性具有优先的意味。

协议层

在这里插入图片描述

在这里插入图片描述

RTR:用来区分数据帧或者远程请求帧,如果是远程请求帧这一位是1,如果是数据帧这一位是0

控制码/控制段:IDE用来区分标准格式和拓展格式;DLC(Data Link Control)数据长度代码,它是二进制编码0-8
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

域段域段名位宽:bit描述
帧起始SOF(Start Of Frame)1数据帧起始标志,固定为1bit显性('b0)
仲裁段Identify(ID)11本数据帧的 ID 信息, ID 信息的作用:① 如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);② 目标节点通过 ID 信息来接受数据(验收滤波技术)
RTRRemote Transmission Request BIT1RTR标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性('b0)
IDEIdentifier Extension Bit1IDE用于区分标准格式与扩展格式,在标准格式中 IDE 位为显性(‘b0),在扩展格式里 IDE 位为隐性(’b1)
R0保留位11bit保留位,固定为1’b0
DLCdata length4由 4 位组成,MSB 先行(高位先行),它的二进制编码用于表示本报文中的数据段含有多少个字节,DLC 段表示的数字为0到8,若接收方接收到 9~15 的时候并不认为是错误
数据段data0~64据帧的核心内容,它由 0~8 个字节(0 ~ 64位)组成,MSB 先行
CRC段CRC15段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;接收方以同样的算法计算 CRC 值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;计算和出错处理一般由 CAN 控制器硬件完成或由软件控制最大重发数。
CRC界定符1CRC 界定符(用于分隔的位),为隐性位(1’b1),主要作用是把CRC 校验码与后面的 ACK 段间隔起来
ACK 槽ACK slot1在 ACK 槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答;发送 ACK/返回 ACK这个过程使用到回读机制,即发送方先在 ACK 槽发送隐性位后,回读到的总线上的电平为显性0,发送方才知道它发送成功了,不用重发
ACK界定符1在 ACK 槽和帧结束之间由 ACK 界定符间隔开,为隐性位
帧结束EOF7由发送端发送 7 个隐性位表示结束

参考资料

Logo[野火]瑞萨RA系列FSP库开发实战指南——基于野火启明开发板

CAN总线协议

趋近于完美的通讯 CAN总线!4分钟看懂!

RS232 & RS485 & CAN & IIC & SPI 的对比

在这里插入图片描述

CRC校验(循环冗余校验)

简介

CRC(Cyclic Redundancy Check)循环冗余检验,是一种用于检测数字数据错误的技术。其特征是信息字段和校验字段的长度可以任意选定。

基础概念

模2除法

也叫模2运算,就是结果除以2后取余数。模2除法每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在CRC计算中有应用到模2除法。
在这里插入图片描述

多项式与二进制

二进制可表示成多项式的形式,比如二进制1101表示为: x3+x2+x0;1011表示为:x3+x1+x0。

在这里插入图片描述
在这里插入图片描述

CRC校验原理

CRC校验本质上是选取一个合适的除数,要进行校验的数据是被除数,然后做模2除法,得到的余数就是CRC校验值

下面用具体的例子做讲解:给定一组数据A:10110011(二进制),选取除数B:11001。

  1. 首先需要在被除数A后加4个比特位0(具体加几个0是根据除数B的位数决定的,比如这里B是5位,那么A后面加4个0;如果B选6位,则A后面加5个0,总之加的0的个数比除数B的个数少1位)。
  2. 进行模2除法运算。注意每次都是模2运算,即异或。
  3. 最后得到余数C就是CRC校验值。注意余数位数必须比除数少1位,如果不够前面加0补齐。运算如下图所示

在这里插入图片描述

CRC计算步骤

在这里插入图片描述
在这里插入图片描述

常见CRC参数模型

CRC算法名称多项式公式宽度多项式(16进制)初始值(16进制)结果异或值(16进制)输入值反转输出值反转
CRC-4/ITUx4 + x + 14030000truetrue
CRC-5/EPCx4 + x3 + 15090900falsefalse
CRC-5/ITUx5 + x4 + x2 + 15150000truetrue
CRC-5/USBx5 + x2 + 15051F1Ftruetrue
CRC-6/ITUx6 + x + 16030000truetrue
CRC-7/MMCx7 + x3 + 17090000falsefalse
CRC-8x8 + x2 + x + 18070000falsefalse
CRC-8/ITUx8 + x2 + x + 18070055falsefalse
CRC-8/ROHCx8 + x2 + x + 1807FF00truetrue
CRC-8/MAXIMx8 + x5 + x4 + 18310000truetrue
CRC-16/IBMx16 + x15 + x2 + 116800500000000truetrue
CRC-16/MAXIMx16 + x15 + x2 + 11680050000FFFFtruetrue
CRC-16/USBx16 + x15 + x2 + 1168005FFFFFFFFtruetrue
CRC-16/MODBUSx16 + x15 + x2 + 1168005FFFF0000truetrue
CRC-16/CCITTx16 + x12 + x5 + 116102100000000truetrue
CRC-16/CCITT-FALSEx16 + x12 + x5 + 1161021FFFF0000falsefalse
CRC-16/x5x16 + x12 + x5 + 1161021FFFFFFFFtruetrue
CRC-16/XMODEMx16 + x12 + x5 + 116102100000000falsefalse
CRC-16/DNPx16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1163D650000FFFFtruetrue
CRC-32x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 13204C11DB7FFFFFFFFFFFFFFFFtruetrue
CRC-32/MPEG-2x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 13204C11DB7FFFFFFFF00000000falsefalse

参考资料

CRC校验原理及步骤

【科普】CRC校验(一)什么是CRC校验?

一个视频看懂CRC校验

[CRC校验]手算与直观演示

CRC校验详解(附代码示例)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络网络层之(6)ICMPv6协议

网络网络层之(6)ICMPv6协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…

免费!GPT-4o发布,实时语音视频丝滑交互

We’re announcing GPT-4o, our new flagship model that can reason across audio, vision, and text in real time. 5月14日凌晨,OpenAI召开了春季发布会,发布会上公布了新一代旗舰型生成式人工智能大模型【GPT-4o】,并表示该模型对所有免费…

JDBC简介以及快速入门

这些都是JDBC提供的API 简介 每一个数据库的底层细节都不一样 不可能用一套代码操作所有数据库 我们通过JDBC可以操作所有的数据库 JDBC是一套接口 我们自己定义了实现类 定义实现类 然后就能用Java操作自己的数据库了 MySQL对于JDBC的实现类 就是驱动 快速入门 创建新的项…

芒果YOLOv10改进31:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

💡只订阅这一个专栏即可阅读:芒果YOLOv10所有改进内容 芒果改进YOLOv10系列:改进特征融合网络 BiFPN 结构,融合更多有效特征 在这篇文章中,将 BiFPN 思想加入到 YOLOv10 结构中 该版本为高效简洁版,涨点多、还速度快(实际效果反馈) 文章目录 一、BiFPN 论文理论二、…

angular2开发知识点

目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定:[class.special]"isSpecial"2. 多个类的绑定:[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…

理解我的积木编程思想

1 学习教程,至少7139手册2 编程实践,遇到实际问题后,在技术资料中查找关键词3 选择适合的条目找到代 码。修正,组合。

C语言详解(文件操作)1

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

手写mybatis-预编译前的sql语句

sql表 mybatis数据库中的gxa_user表 /*Navicat Premium Data TransferSource Server : rootSource Server Type : MySQLSource Server Version : 80028Source Host : localhost:3306Source Schema : mybatisTarget Server Type : MySQLTarget…

论文略读:Onthe Expressivity Role of LayerNorm in Transformers’ Attention

ACL 2023 研究了LayerNorm在 Transformers 中对注意力的作用LayerNorm为Transformer的Attention提供了两个重要的功能: 投影,projection LayerNorm 帮助 Attention 设计一个注意力查询,这样所有的Key都可以平等地访问通过将Key向量投影到同一…

域内攻击 ----> DCSync

其实严格意义上来说DCSync这个技术,并不是一种横向得技术,而是更偏向于权限维持吧! 但是其实也是可以用来横向(配合NTLM Realy),如果不牵强说得话! 那么下面,我们就来看看这个DCSyn…

Vue学习|Vue快速入门、常用指令、生命周期、Ajax、Axios

什么是Vue? Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。官网:https://v2.cn.vuejs.org/ Vue快速入门 打开页面&#xff0…

rce漏洞试试看 buuctf的pingpingping 试试ctf的rce怎么样

打开靶机开始操作 然后我们先知道一些知识点:下面这些是常用的 |这个管道符也就是上一条的命令的输出结果作为下一条命令的输入;这个是跟sql的堆叠注入是一样的|| || 当前面的执行出错时(为假)执行后面的 & 将任务置于后台执…

R语言绘图 --- 桑基图(Biorplot 开发日志 --- 5)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

从Log4j和Fastjson RCE漏洞认识jndi注入

文章目录 前言JNDI注入基础介绍靶场搭建漏洞验证注入工具 log4j RCE漏洞分析漏洞靶场检测工具补丁绕过 Fastjson RCE漏洞分析漏洞靶场检测工具补丁绕过 总结 前言 接着前文的学习《Java反序列化漏洞与URLDNS利用链分析》,想了解为什么 Fastjson 反序列化漏洞的利用…

如何制定工程战略

本文介绍了领导者如何有效制定工程战略,包括理解战略核心、如何收集信息并制定可行的策略,以及如何利用行业最佳实践和技术债务管理来提升团队效能和产品质量。原文: How to Build Engineering Strategy 如果你了解过目标框架(如 OKR&#xf…

引人入胜的教育视频

对于一家专注于数字自动化和能源管理的跨国公司,我们制作了引人入胜的教育视频,帮助房主选择适合他们需求的电气产品。我们的团队审查并定稿文本,录制并编辑配音,选择背景音乐,设计图形,并制作了演示如何安…

MPB | 葛体达组-原位酶谱法高分辨率实时检测土壤微界面酶活分布

原位酶谱法高分辨率实时检测土壤微界面酶活分布 High resolution real-time detection of soil enzyme activity distribution by in situ zymography 魏晓梦1, 2、魏亮1, 2、郝存抗1, 2、祝贞科1, 2、吴金水1, 2、葛体达1, 2, * 1中国科学院亚热带农业生态研究所,中…

04-认识微服务-SpringCloud

04-认识微服务-SpringCloud 1.SpringCloud: 1.SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud 2.SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配&…

Vue3学习记录第三天

Vue3学习记录第三天 背景说明学习记录Vue3中shallowReactive()和shallowRef()Vue3中toRaw()和markRaw()前端...语法Vue3中readonly()和shallowReadonly()函数 背景 之前把Vue2的基础学了, 这个课程的后面有简单介绍Vue3的部分. 学习知识容易忘, 这里仅简答做一个记录. 内容都很…

10-Feign-最佳实践分析

10-Feign-最佳实践分析 1.Feign的最佳实践: 方式一(继承):给消费者的FeignClient和提供者的controller定义统一的父接口作为标准。 ​ 服务紧耦合 ​ 父接口参数列表中的映射不会被继承下来 Spring官方不推荐这种方式: ​ 我们一般不推荐去共享接口在服务端和客户端…