SPI/I2C/UART/USART/RS232/RS422/RS485/CAN的区别(转载)

本文主要是引用https://blog.csdn.net/fengel_cs/article/details/105200663, “同步/异步,串行/并行,SPI/I2C/UART/RS485/CAN等简单介绍与区别”,并有所补充。

一、异步通信

  1. 所谓异步通信是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间传送基本同步。
  2. 发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。异步为非阻塞模式
  3. 以字符为单位传送信息。
  4. 相邻两字符间隔长度不确定。
  5. 必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。
  6. 异步通信时不要求接收端时钟和发送端时钟同步。

二、同步通信

  1. 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间,字符内部的位与位之间都同步。
  2. 发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。同步为阻塞模式。
  3. 以数据块为单位传送信息。
  4. 在一个数据块(信息帧)内,字符与字符与字符间无间隔。
  5. 因为一次传输的数据块中包含的数据较多,所以接收时钟与发送时钟严格同步,通常要有同步时钟。
  6. 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流。

三、串行与并行通信

  1. 串行通信指计算机与I/O设备之间数据传输的各位按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。
  2. 并行通信是指计算机与I/O口设备间通过多条传输线交换数据,数据的各位同时进行传送。
  3. 串行通信传输速度慢,但使用传输设备成本低,适合于远程通信;并行通信的速度快,但传输设备成本高,适合于近距离通信。

四、串行通信数据传送方向

  1. 单工:是指数据传输仅能沿一个方向,不能实现反向传输。
  2. 半双工:数据传输可以沿两个方向,但需要分时进行传输。发送时不能接收,接收时不能发送
  3. 全双工:是指数据可以同时进行双向传输。发送时可以接收,接收的同时可以发送。

五、具体通信协议(SPI/I2C/UART/USART/RS485/CAN)

  1. SPI---------同步通信(有同步时钟);串行通信;全双工;主从通信(某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机)。

  2. I2C---------同步通信;串行通信;半双工;主从通信(总线上支持多个主机和多个从机,总线上任何能够进行发送/接收数据的设备都可以占领总线。当然,任意时间点上只能存在一个主控。多主控,主器件同时争夺总线控制权时,可仲裁)。

  3. UART-----异步通信;串行通信;全双工; 对等总线,没有仲裁机制,所以只能挂载两个同时收发数据的设备(只能点对点),双方都可以发送和接收。

  4. USART—通用同步异步收发器,跟uart一样,它是个设备,一个要完成特定功能的硬件,本身不是协议。当异步通信时,与UART一样。区别在于USART可以用于同步通信,USART同步通信时可以用作SPI。

下面介绍一下RS232/422/485的区别。
注意: RS是Recommend Standard的意思,后面的232, 422和485表示这个标准修改了232/422/485次。

  1. RS232---- 全双工。 注意UART是通信协议,RS232是电气接口标准。注意RS232没有用差分信号,所以抗干扰能力不强,最多传20米。再长就要用工业界常用的RS422和RS485。

  2. RS422---- 全双工。需要5根线。

  3. RS485----异步通信;串行通信;半双工 (只需要3根线A/B/G,A,B是差分信号,G是控制信号);RS485是单主从结构,即一个总线上只能有一台主机,通讯都由它发起的,它没有下命令,下面的节点不能发送,而且要发完即答,收到答复后,主机才向下一个节点询问,这样是为了防止多个节点向总线发送数据,而造成数据错乱。如果是一主多从,从机靠自身地址区分。具体特性详见485通信要点_fengel_cs的专栏-CSDN博客.

  4. CAN-------异步通信;串行通信;半双工;CAN是多主从结构,每个节点都有CAN控制器,多个节点发送时,以发送的ID号自动进行仲裁,这样就可以实现总线数据不错乱,而且一个节点发完,另一个节点可以探测到总线空闲,而马上发送,这样省了主机的问,提高了总线利用率,增强了快速性。所以在汽车等实性要求高的系统,都是用CAN总线。

  5. SNMP-----网管协议,放这里主要想说明它可以通过trap的方式主动上报数据,比如服务端产生了告警或fault,那么服务端可以通过trap方式主动上报,不需要等客户端主动查询后,才响应。

CAN 和 A429区别
https://aviation.stackexchange.com/questions/22120/what-is-the-difference-between-can-and-arinc
Comparing CAN bus to ARINC 429:

Cable
CAN: STP or UPT, possible to implement on fiberoptic cable
ARINC 429: STP
Speed
CAN: 1 Mbit/s (high speed) / 125 Kbit/s (low speed)
ARINC 429 100Kbit/s (high speed) / 10-14 Kbit/s (low speed)
Directionality
CAN: bi-directional, connected units can send and receive on the same cable.
ARINC 429: uni-directional, a unit either transmits or receives from a cable.
Number of units on a single bus
CAN: unlimited, although in practice no more than about 32 units will be sharing a bus to avoid data collisions.
ARINC 429: one transmitter can serve at most 20 receiving units on a single cable.
Since ARINC 429 has only a single transmitter, timely data arrival is guaranteed, while CAN has to incorporate transmission collision detection & correction which incurs non deterministic time overhead.

On the other hand, ARINC 429 only uses a parity bit for bit level error detection whilst CAN allows for various methods including CRC checks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值