嵌入式通信协议对比介绍(SPI/I2C/UART/RS485/CAN)

1 前言

首先来看看一些基本的概念:

  • 串行通信: 这指的是在通信线路上一次只能传输一个位(或字节)的数据。每个位依次传输,因此通信是按顺序进行的。这可以用于较简单的系统或长距离通信,但可能导致较低的传输速度。
  • 并行通信: 这指的是在通信线路上同时传输多个位(或字节)的数据。并行通信通常可以提高传输速度,但需要更多的物理线路,并且对于较长的距离可能存在一些问题。
  • 同步通信: 这要求通信的发送和接收方在某个时间基准上保持一致。数据传输的时序是协调的,通常需要等待响应或在特定时刻发送数据。这可以确保数据的可靠性,但可能引入一些等待时间。
  • 异步通信: 这表示发送和接收方不需要保持一致的时钟。数据可以根据需要发送,而不必等待对方的即时响应。异步通信通常更加灵活,但可能需要处理潜在的延迟或数据丢失。
  • **单工通信:**在单工通信中,数据只能在一个方向上流动。一方负责发送,另一方负责接收,但二者不能同时进行通信。这类似于单行道,只允许数据在一个方向上移动。
  • **半双工通信:**半双工通信允许数据在两个方向上流动,但不同方向上的数据流不能同时进行。在某一时刻,通信的一方是发送方,另一方是接收方。这类似于对讲机,其中只有一个方向的通信能够发生。
  • **全双工通信:**全双工通信允许数据在两个方向上同时进行。两个通信方均可同时发送和接收数据,实现了双向通信。典型的例子是电话通信,其中通话双方都可以同时说话和听对方说话。

关系:

  • 串行、并行通信可以是同步的或异步的,这取决于数据传输的时序和通信协议。
  • 在某些情况下,串行通信更容易实现同步,而并行通信可能更容易实现异步,但这并不是绝对的规则。
  • 串行、并行通信可能是单工、半双工或全双工的,具体取决于通信协议和硬件实现。
  • 同步通信要求通信方在时间上保持一致,而异步通信允许通信方在时间上不保持一致。
  • 通信中的同步和异步概念与通信方向的单工、半双工和全双工之间并没有直接关联,而是描述了数据的时序关系。

在实际应用中,这些概念可能会相互组合,例如串行半双工通信、并行全双工通信等,以满足特定的通信需求。

2 通信协议

① UART

在这里插入图片描述

UART(Universal Asynchronous Receiver/Transmitter)是一种串行通信协议,用于在计算机系统、嵌入式系统和外部设备之间传输数据。UART是一种异步通信协议,意味着数据传输不需要在发送和接收端保持精确的时钟同步。以下是UART协议的主要特点和工作原理:

  1. 异步通信:
    • UART使用异步通信,因此发送端和接收端不需要共享相同的时钟信号。相反,每个字节的开始和结束由特殊的起始位和停止位标志,这样接收端可以确定何时开始和结束每个字节的传输。
  2. 帧格式:
    • 一个UART帧通常包括起始位、数据位、可选的校验位和停止位。典型的帧格式是8个数据位,一个起始位,一个或多个停止位。校验位用于增强数据的可靠性,但不是必需的。
  3. 波特率:
    • 波特率是UART通信中非常重要的参数,表示每秒传输的比特数。通信双方必须使用相同的波特率设置,以确保正确的数据传输。常见的波特率包括9600、19200、115200等。
  4. 数据传输过程:
    • 发送端将数据装入一个帧,包括起始位、数据位、校验位和停止位。这个帧按照设置的波特率被发送给接收端。
    • 接收端根据波特率解析帧,找到起始位,并开始接收数据。根据帧格式,接收端提取数据位,并进行校验,最后检测停止位。
  5. 流控制:
    • UART通常采用硬件流控制(RTS/CTS)或软件流控制(XON/XOFF)来管理数据流。流控制可用于防止数据溢出,确保接收端准备好接收数据。
  6. 用途:
    • UART常用于短距离通信,例如连接微控制器、传感器、模块和外围设备。由于其简单性和可靠性,UART是许多嵌入式系统中常见的通信接口。

总体而言,UART是一种灵活、简单和广泛应用的串行通信协议,适用于许多不同类型的嵌入式和计算机系统。

② SPI

在这里插入图片描述

SPI(Serial Peripheral Interface)是一种同步的串行通信协议,通常用于在嵌入式系统中连接微控制器、传感器、存储器、显示器和其他外设。SPI协议具有高速传输、全双工通信和简单硬件接口等特点。以下是SPI的主要特征和工作原理:

  1. 总线架构:
    • SPI使用主从架构,其中一个设备充当主设备,其他设备充当从设备。主设备控制通信的时序和传输。通常,一个SPI总线可以连接多个从设备。
  2. 通信线:
    • SPI使用四根主要的通信线:
      • SCLK(Serial Clock): 主设备生成的时钟信号,用于同步数据传输。
      • MOSI(Master Out Slave In): 主设备向从设备发送数据的输出线。
      • MISO(Master In Slave Out): 从设备向主设备发送数据的输入线。
      • SS/CS(Slave Select/Chip Select): 用于选择要进行通信的从设备。
  3. 时序:
    • SPI是同步通信协议,数据的传输受到时钟信号的控制。传输时序通常由极性(CPOL)和相位(CPHA)两个参数定义,决定了数据采样的时机和极性。SPI通常支持多种模式,例如0、1、2、3四种模式。
  4. 全双工通信:
    • SPI支持全双工通信,允许主设备和从设备同时进行数据的发送和接收。这使得SPI在高速数据传输场景中非常有用。
  5. 帧格式:
    • SPI没有像UART那样的帧格式,数据是按字节传输的,没有起始位或停止位。通常,一个字节的数据在传输时同时包含了发送和接收的信息。
  6. 应用:
    • SPI广泛应用于各种嵌入式系统,如传感器接口、存储器扩展、显示器驱动、通信模块等。由于其高速、简单、全双工的特性,SPI在需要大量数据传输的场景中很受欢迎。

总的来说,SPI是一种灵活且高效的串行通信协议,适用于需要快速、可靠数据传输的嵌入式系统。

③ I2C

在这里插入图片描述

I2C(Inter-Integrated Circuit)是一种串行通信协议,通常用于连接微控制器、传感器、存储器和其他外设。I2C是一种同步的、半双工的通信协议,允许多个设备在同一总线上进行通信。以下是I2C的主要特点和工作原理:

  1. 总线架构:
    • I2C采用总线架构,其中多个设备可以连接到同一总线上。每个设备都有一个唯一的地址,用于在总线上识别和选择特定的设备。
  2. 通信线:
    • I2C通信使用两根主要的线路:
      • SDA(Serial Data Line): 用于传输数据的双向线路。
      • SCL(Serial Clock Line): 用于同步数据传输的时钟线路。
  3. 协议特点:
    • I2C是半双工通信协议,设备可以在同一总线上进行发送和接收操作。通信始于主设备生成的起始条件,结束于主设备生成的停止条件。
    • I2C支持多主机通信,允许多个主设备轮流控制总线。这使得多个微控制器可以协同工作。
  4. 地址帧:
    • I2C通信的开始包括一个起始条件,然后是设备地址和读/写位。每个设备都有一个唯一的7位或10位地址。接收设备在地址帧后发送应答位,以指示其准备好接收数据。
  5. 数据传输:
    • 数据传输包括8位数据字节,每个字节后面跟着一个应答位。数据可以从主设备传输到从设备,也可以从从设备传输到主设备。
  6. 应用:
    • I2C广泛应用于连接各种外设,如传感器、存储器、显示器、实时时钟等。由于I2C总线上可以连接多个设备,它非常适用于系统中需要与多个设备进行通信的场景。

总的来说,I2C是一种灵活、简单的通信协议,适用于需要在多个设备之间进行短距离通信的嵌入式系统。

④ RS232、RS485

在这里插入图片描述

RS232(Recommended Standard 232)和RS485(Recommended Standard 485)是两种串行通信标准,通常用于在计算机系统、嵌入式系统和外部设备之间传输数据。尽管它们都是串行通信标准,但它们有一些关键的区别,适用于不同的应用场景。

RS232

在这里插入图片描述

  1. 单点通信:
    • RS232通常用于单点通信,即一对一的通信方式。一条RS232线路上只能连接两个设备,一个作为发送方,另一个作为接收方。
  2. 距离和速度:
    • RS232适用于相对短距离的通信,一般在数米内。通信速率可以达到数十kbps或更高,但随着距离的增加,信号质量可能下降。
  3. 电压级别:
    • RS232使用的电压级别是负逻辑,即逻辑“1”对应负电压,逻辑“0”对应正电压。
  4. 应用场景:
    • 常见的RS232应用包括串口连接、调试连接、计算机和外部设备之间的连接,例如打印机、鼠标、调制解调器等。

RS485

在这里插入图片描述

  1. 多点通信:
    • RS485适用于多点通信,允许在同一总线上连接多个设备。每个设备都有唯一的地址,通过地址识别通信对象。
  2. 距离和速度:
    • RS485能够支持较长距离的通信,一般可达数千米。通信速率可以从几百bps到数Mbps,具有更大的灵活性。
  3. 电压级别:
    • RS485使用平衡电压级别,即逻辑“1”和逻辑“0”分别由两个相对电压表示,使得在长距离通信中更能抵抗电磁干扰。
  4. 差分信号:
    • RS485使用差分信号传输,即数据线和其反向线的电压变化表示逻辑信息。这种差分传输方式使其更适合在噪声环境中稳定工作。
  5. 应用场景:
    • RS485广泛应用于需要多设备协同工作的场景,例如工业自动化、建筑自动化、仪器仪表等。

总的来说,RS232适用于短距离、点对点的通信,而RS485适用于多点通信,特别是在长距离和噪声环境中。选择使用哪种标准通常取决于具体的应用需求。

⑤ CAN

在这里插入图片描述

CAN(Controller Area Network)是一种专为实时控制系统设计的串行通信协议。CAN协议最初是由德国的Bosch公司在1986年提出,后来逐渐发展成为国际标准。CAN协议主要应用于汽车领域,但也在工业控制、医疗设备和其他领域中得到广泛使用。以下是CAN协议的主要特点和工作原理:

  1. 总线架构:
    • CAN采用总线架构,允许多个节点通过共享相同的总线进行通信。每个节点都有一个唯一的标识符,用于在总线上识别发送和接收的消息。
  2. 通信线:
    • CAN通信使用两根主要的线路:
      • CAN_High: 高电平线,用于传输逻辑“0”。
      • CAN_Low: 低电平线,用于传输逻辑“1”。
    • CAN使用差分信号传输,能够更好地抵御电磁干扰。
  3. 帧格式:
    • CAN通信的基本单位是数据帧,包括标识符、控制位、数据和CRC(循环冗余校验)等字段。CAN帧分为两种类型:数据帧和远程帧。数据帧用于传输实际数据,而远程帧用于请求其他节点发送数据。
  4. 多主控制:
    • CAN支持多主控制,允许多个节点之间动态地决定总线的控制权。这使得CAN在实时系统中更具灵活性和实时性。
  5. 冲突解决:
    • CAN使用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)机制来解决冲突。节点在发送数据前会监听总线,确保总线上没有其他节点正在发送。
  6. 优先级和仲裁:
    • 每个CAN消息的标识符包含优先级信息。在总线上发生冲突时,优先级较高的消息将胜出。这种机制称为仲裁,确保高优先级消息能够及时被发送。
  7. 应用场景:
    • CAN协议广泛应用于汽车领域,包括车辆内部的控制系统和车辆间的通信。此外,在工业控制、医疗设备、电力系统和航空航天等领域也有广泛的应用。

总体来说,CAN是一种适用于实时控制系统的可靠、高效的通信协议,特别适用于具有多个节点和实时性要求的场景。

3 对比

UART(Universal Asynchronous Receiver Transmitter)是一种异步串行通信协议,用于在两个设备之间传输数据。它使用一根数据线(TXD)发送数据,另一根数据线(RXD)接收数据。UART通信的每个字节都包含一个起始位、8个数据位和一个停止位。

RS232(Recommended Standard 232)是一种串行通信标准,用于在计算机和其他设备之间传输数据。它使用EIA-232电压标准来定义信号电平。RS232通信可以支持点对点或多点连接。

RS485是一种半双工差分串行通信协议,用于在多台设备之间传输数据。它使用两根数据线(A线和B线)来发送和接收数据。RS485通信可以支持多达32台设备连接到同一个总线。

I2C(Inter-Integrated Circuit)是一种串行通信协议,用于在集成电路之间传输数据。它使用两根数据线(SDA和SCL)来发送和接收数据。I2C通信可以支持多达127台设备连接到同一个总线。

SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在主设备和从设备之间传输数据。它使用四根数据线(SCLK、MOSI、MISO和SS)来发送和接收数据。SPI通信可以支持多台从设备连接到同一个主设备。

以下是UART、RS232、RS485、I2C和SPI的比较表:

特性UARTRS232RS485I2CSPI
通信方式异步串行串行半双工差分串行同步串行同步串行
数据线1根(TXD/RXD)2根(TXD/RXD)2根(A线/B线)2根(SDA/SCL)4根(SCLK/MOSI/MISO/SS)
连接方式点对点或多点点对点或多点多点多点点对点
最大传输距离15米15米1200米10米10米
最大传输速率115200bps115200bps10Mbps400kHz10Mbps
优点简单易行兼容性好抗干扰能力强速度快速度快
缺点速度慢抗干扰能力弱速度慢地址冲突复杂度高

应用场景:

  • UART:用于连接计算机和外围设备,如键盘、鼠标、打印机等。
  • RS232:用于连接计算机和工业设备,如PLC、仪表等。
  • RS485:用于连接多个工业设备,如楼宇自动化、安防监控等。
  • I2C:用于连接主板和外围设备,如EEPROM、传感器等。
  • SPI:用于连接主板和高速外围设备,如SD卡、LCD显示屏等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音视频评论关键词批量下载软件|视频内容提取工具

我们团队自主研发的视频评论关键词批量下载软件,为您带来全新的视频获取方式,让您轻松实现对特定关键词的视频搜索和批量下载。以下是软件操作说明的框架: 软文框架: 操作简要说明:说明使用工具的基本流程&#xff0c…

记录java.util.Map.getOrDefault()方法导致JSP编译失败异常:Unable to compile class for JSP

记录java.util.Map.getOrDefault()方法导致JSP编译失败异常:Unable to compile class for JSP; 一、报错信息: type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fu…

C 嵌入式系统设计模式 15:基本并发概念

本书的原著为:《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》,讲解的是嵌入式系统设计模式,是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述嵌入式并发和资源管理模式之一…

芯科科技为全球首批原生支持Matter-over-Thread的智能锁提供强大助力,推动Matter加速成为主流技术

智能锁领域的先锋企业U-tec和Nuki选择芯科科技解决方案,成为Matter-over-Thread应用的领先者 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)今…

软考中级 软件设计师备考经验

考试介绍 软考中级的软件设计师需要考两个部分,选择题和大题,每科满分75,需要在同一次考试中两科同时大于等于45分才算通过。考试的内容包括计算机组成原理、数据结构、数据库、专业英语、信息安全、计算机网络等,范围比较广但考…

T2I:zero shot笔记

1 Title Zero-Shot Text-to-Image Generation(Aditya Ramesh 、 Mikhail Pavlov 、Gabriel Goh Scott Gray、 Chelsea Voss 、 Alec Radford 、 Mark Chen 、Ilya Sutskever) 2 Conclusion This study describes a simple approach for this ta…

在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新

文章目录 一、需求背景二、token刷新的方案1、根据过期时间重新获取2、定时刷新token接口3、使用了RefreshToken 三、关于RefreshToken四、Refresh Token的优点五、Refresh Token的工作原理六、Refresh Token的使用流程七、Refresh Token的实现步骤1、登录成功后保存AccessToke…

持安科技孙维伯:零信任在攻防演练下的最佳实践|DISCConf 2023

近日,在2023数字身份安全技术大会上,持安科技联合创始人孙维伯应主办方的特别邀请,发表了主题为“零信任在攻防演练下的最佳实践”的演讲。 孙维伯在2023数字身份安全技术大会上发表演讲 以下为本次演讲实录: 我是持安科技的联合…

WPF 【十月的寒流】学习笔记(2):MVVM中是怎么实现通知的

文章目录 前言相关链接代码仓库项目配置代码初始代码ViewPersonViewModel 尝试老办法通知解决方案ObservableCollectionBindingListICollectionView 总结 前言 我们这次详细了解一下列表通知的底层是怎么实现的 相关链接 十月的寒流 MVVM实战技巧之:可被观测的集合…

深入理解Java中的优先级队列(堆)——PriorityQueue

引言: 在Java中,优先级队列(PriorityQueue)是一种基于堆结构实现的队列,其中每个元素都有一个优先级,优先级高的元素在队列中具有更高的优先级,排在前面。优先级队列常用于任务调度、事件处理等…

js 面试运行机制和存储(从以下几方面理解),栈和堆的理解

1 工作原理 每个浏览器都有自己的引擎,通过引擎把代码解析运行起来。 2 生命周期 3-1 内存分配 3-2 内存使用 3-3 内存回收 3 栈和堆的理解 timer也是个函数--所以也是引用类型。 4 如何运行 以下可忽略 首先声明变量,放在左侧栈中执行,在执行…

MATLAB环境下一种新颖的类脉冲信号的高分辨率时频分析方法

一般情况下,机械振动信号或地震信号是非平稳的。而传统傅立叶变换只能应用于平稳信号分析,故不适用于非平稳信号。所以,我们需要采用时频分析方法。时频分析方法能达到同时在时间域和频率域对信号进行分析的目的,得到信号在不同时…

makefileGDB使用

一、makefile 1、make && makefile makefile带来的好处就是——自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率 下面我们通过如下示例来进一步体会它们的作用: ①…

从预训练到通用智能(AGI)的观察和思考

1.预训练词向量 预训练词向量(Pre-trained Word Embeddings)是指通过无监督学习方法预先训练好的词与向量之间的映射关系。这些向量通常具有高维稠密特征,能够捕捉词语间的语义和语法相似性。最著名的预训练词向量包括Google的Word2Vec&#…

(2024,MixLoRA,任务干扰,独立因子选择,条件因子选择)使用 LoRA 的条件混合进行多模态指令调优

Multimodal Instruction Tuning with Conditional Mixture of LoRA 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 任务干扰在多模态指令调优中的 LoRA 应用 3.1 背景&am…

深度神经网络联结主义的本质

一、介绍 在新兴的人工智能 (AI) 领域,深度神经网络 (DNN) 是一项里程碑式的成就,突破了机器学习、模式识别和认知模拟的界限。这一技术奇迹的核心是一个与认知科学本身一样古老的思想:联结主义。本文深入探讨了联结主义的基本原理&#xff0…

Nodejs 第四十三章(redis)

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它提供了一个高效的键值存储解决方案,并支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表&a…

React之组件定义和事件处理

一、组件的分类 在react中,组件分为函数组件和class组件,也就是无状态组件和有状态组件。 * 更过时候我们应该区别使用无状态组件,因为如果有状态组件会触发生命周期所对应的一些函数 * 一旦触发他生命周期的函数,它就会影响当前项…

X-pin扁线电机制造工艺复杂 联合电子率先实现其量产

X-pin扁线电机制造工艺复杂 联合电子率先实现其量产 扁线电机是扁平铜包线绕组的电机。扁线电机是目前主流电机绕组形式,根据技术路线不同,扁线电机分为I-pin扁线电机、Hair-pin扁线电机、X-pin扁线电机等,其中X-pin扁线电机是指采用X-pin绕组…

utniy urp shinyssrr插件使用

文章目录 前言步骤1首先在URP的配置文件里添加SSR后处理2 修改RenderingPath为延迟渲染3 启用深度纹理4 为物体添加脚本 插件下载 前言 用来实现屏幕空间反射效果 unity 版本为2021.3.8LTS,低版本的untiy URP的参数设置位置z可能会不同 步骤 1首先在URP的配置文件…