首页 > 其他分享 >总结SPI、I2C、UART三者的区别

总结SPI、I2C、UART三者的区别

时间:2024-10-26 16:16:05浏览次数:3  
标签:异步 同步 传输 UART 发送 SPI 串行 I2C 时钟

1、三者的区别:

通信协议硬件连接 总线速度传输方式功能
SPI  4线(SCLK\MOSI\MISO\SS) MHz 同步双向、全双工/半双工
I2C  2线(SDA\SCL)KHz 同步 多设备总线
UART2线(TX\RX) 115200bps异步单向或双向串行

       
1. 硬件连接:SPI使用4线或3线(带主从模式)连接,其中包括一个时钟线、一个主从选择线、一个主设备输出线和一个主设备输入线。I2C使用两根线(SDA和SCL)进行连接。UART使用两根线(TX和RX)进行连接。

2. 总线速度:SPI可以达到较高的传输速度,通常可以在MHz范围内运行。I2C的传输速度较低,通常在几十至几百kHz之间。UART的传输速度通常较低,最常见的波特率是115200bps,但可以通过调整设置来达到更高的速度。

3. 总线拓扑:SPI可以支持一对多的连接方式,其中一个主设备可以控制多个从设备。I2C使用多主机和从机的方式,可以有多个主设备和多个从设备连接在同一条总线上。UART通常是点对点的,只支持一个发送器和一个接收器。

4. 传输方式:SPI和I2C是同步传输方式,数据传输时需要时钟同步。UART是异步传输方式,不需要外部时钟信号,数据通过起始位、数据位、校验位和停止位进行帧的组织和同步。

5. 功能:SPI在数据传输方面非常灵活,并且可以支持双向、全双工或半双工模式。I2C具有广泛的设备支持和多种设备可以共享同一条总线的能力。UART主要用于串行数据传输,通常用于简单的单向或双向串行通信。

2、单工,半双工,全双工:
单工(Simplex):单工通信只允许信息在一个方向上进行传输。发送方和接收方在通信中扮演固定的角色,发送方只能发送数据,而接收方只能接收数据。这种通信方式类似于广播,其中一方发送信息,而另一方只能接收信息,而不能传输回复。

半双工(Half Duplex):半双工通信允许信息在两个方向上进行传输,但不能同时进行。发送方和接收方可以交替地发送和接收数据,但在任何给定的时间内,只能有一个方向上的传输。当一方发送数据时,另一方必须等待,而不能同时发送数据。

全双工(Full Duplex):全双工通信允许信息在两个方向上同时进行传输。发送方和接收方可以同时发送和接收数据,因此在通信中可以实现双向传输,无需等待。这意味着发送和接收可以同时进行,提高了通信效率。

在全双工通信中,通信双方需使用独立的信道或信号线来进行发送和接收,以避免冲突。相比之下,半双工通信只需要使用一个信道或信号线来进行交替的发送和接收,因此可能会出现一定程度的冲突。单工通信只允许单一方向上的数据传输,因此通信效率相对较低。选择适当的通信模式取决于具体的应用场景和通信需求。

3、同步传输和异步传输:
1. 同步传输:同步传输是一种基于时钟信号进行数据传输的方式。发送方和接收方在数据传输之前需要保持时钟的同步。数据的传输速率是根据时钟信号的频率来确定的,发送方和接收方都严格按照时钟信号的边沿来进行数据的采样和发送。常见的同步传输协议包括SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)和SDI(Serial Data Interface)等。

2. 异步传输:异步传输是一种不依赖于固定时钟信号的数据传输方式。在异步传输中,每个数据帧具有独立的起始标志和停止标志,以标识一个完整的数据帧。发送方和接收方之间的数据传输速率不需要保持精确的同步。常见的异步传输协议包括UART(Universal Asynchronous Receiver/Transmitter)和USB(Universal Serial Bus)等。

主要区别如下:

  1.  同步传输依赖于时钟信号,而异步传输不依赖于时钟信号。
  2.  同步传输的传输速率受到时钟频率的限制,而异步传输的传输速率可以根据需求进行调整。
  3.  同步传输要求发送方和接收方保持时钟同步,而异步传输不需要时钟同步。
  4.  同步传输通常用于短距离高速数据传输,而异步传输通常用于串行通信和较长距离的数据传输。

4、串行和并行:
1. 串行传输:串行传输是一种按照顺序逐位传输数据的方式。在串行传输中,数据位逐个按照一定的顺序进行传输,每一位数据都需要依次传输完毕,然后再传输下一位数据。因此,串行传输只使用一条信号线或通道进行数据传输。串行传输的优势在于可以减少所需的物理连接数目,适用于较长距离传输和对线路复杂性要求较低的场景。常见的串行传输接口包括串行总线接口(如I2C、SPI)和串行通信协议(如RS-232)等。

2. 并行传输:并行传输是一种同时传输多个数据位的方式。在并行传输中,数据被分成多个数据位,并通过多条信号线同时传输。每个数据位通过一个独立的信号线进行传输,从而实现多个数据位的同时传输。并行传输的优势在于传输速度较快,适用于对传输速度要求较高的场景。然而,由于每个数据位需要独立的信号线,因此并行传输会增加所需的物理连接数目和线路复杂性,尤其在距离较远时会更加复杂。常见的并行传输接口包括传统的并行端口(如打印机接口)和内部总线(如PCIe)等。

标签:异步,同步,传输,UART,发送,SPI,串行,I2C,时钟
From: https://blog.csdn.net/weixin_48867130/article/details/143249986

相关文章

  • 【Java知识】Java进阶-服务发现机制SPI
    文章目录SPI概述SPI工作原理ServiceLoader代码展示简化的`ServiceLoader`类关键点解释使用示例1.定义服务接口2.实现服务提供者3.配置文件4.加载服务提供者总结SPI使用场景1.数据库驱动2.日志框架3.图像处理4.加密算法5.插件系统6.缓存机制示例代码1.定......
  • Java SPI 机制详解
    原文:JavaSPI机制详解在面向对象的设计原则中,一般推荐模块之间基于接口编程,通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类,就违反了开闭原则。如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候不用在程序里面动态指......
  • RS触发器(Quartus与Modelsim联合仿真)
    RS触发器可以由两个与非门构成,把两个与非门的输入端与输出端交叉连接,即可构成RS触发器,真值表如下:RS触发器真值表输入输出RSQQN1010010111不变不变00不变不变一RS触发器的电路符号二、代码moduleRS(q,qn,s,r);inputs,r;outputq,qn;regq,qn;regq1,qn1......
  • 为什么汽车行业用ASPICE的V型开发模型
    随着汽车逐渐转型为移动计算平台,软件的重要性日益突出。ASPICE的V型开发模型为汽车行业提供了一个结构化、可追踪和重复的开发过程,从而确保质量和安全性。关键原因包括:1.明确的需求管理;2.增强的验证与确认;3.有利于协同工作;4.确保质量和可靠性;5.符合行业标准和法规要求。1.明确......
  • SPI的学习
    工作原理SPI的工作原理基于主从架构。主设备通过四条主要信号线与一个或多个从设备进行通信:MOSI(主输出,从输入)DI(MasterOutputSlaveInput):主设备发送数据到从设备。MISO(主输入,从输出)DO(MasterInputSlaveOutput):从设备发送数据到主设备。SCLK(时钟信号):由主设备生成的时钟信号,......
  • 深入解析 Aerospike高性能分布式数据库的利器
    1.Aerospike简介在当今大数据和高并发的时代,传统关系型数据库往往难以满足实时性和扩展性的需求。Aerospike作为一款高性能、低延迟的分布式NoSQL数据库,以其独特的架构和强大的功能,受到了业界的广泛关注。本文将深入探讨Aerospike的核心原理、关键特性、应用场景,以......
  • ssts-hospital-web-master项目实战记录五:环境配置
    记录时间:2024-10-24《.env.development》VITE_APP_ENV=development#VITE_APP_BASE_URL=/apiVITE_APP_BASE_URL=http://127.0.0.1:9000/VITE_APP_ADAPTERSERVICE_URL=http://127.0.0.1:9080/VITE_APP_TERMINALSERVICE_URL=http://localhost:8881/VITE_APP_EZWAREWEBSOCKET......
  • fmql之Linux中I2C总线框架
    正点原子第44章        I2C zynqI2C  pcf8563芯片我们用的是ds3231. LinuxI2C总线框架 I2C总线驱动这部分内容是半导体厂商编写的。I2C总线设备   zynqI2C适配器驱动  I2C设备驱动编写 使用设备树 代码编写 设备......
  • sentinel-SPI初始化时机
    时机一引入alibaba-starter-sentinel如果使用了alibaba-starter-sentinel则不需要手动调用因为com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration#init在这里面执行了自动调用@PostConstructprivatevoidinit(){if(StringUtils.isEmpty(System.ge......
  • stm32入门教程--UART协议详解
    目录简介UART串口协议串行通信并行通信串行通信与并行通信的区别单工通信半双工全双工同步和异步的区别UART帧结构简介STM32是意法半导体公司推出的一款32位ARMCortex-M系列微控制器。UART、SPI和I2C是STM32中常用的串行通信协议。UART(通用异步收发器):UART是一......