首页 > 其他分享 >UART\SPI\I2C的区别与联系

UART\SPI\I2C的区别与联系

时间:2024-08-18 16:58:06浏览次数:9  
标签:UART 通信 传输速度 SPI I2C 设备

UART全双工(两根线tx,rx),无时钟线 ,只能两个设备
SPI全双工(两根线tx、rx + 时钟线 + 片选),一主多从,扩展了接入的设备,同步传输,速度更快
I2C半双工(一根数据线 + 时钟线),多主一从或者多主多从

UART(Universal Asynchronous Receiver/Transmitter)
全双工:意味着数据可以同时在两个方向上传输,即设备A可以向设备B发送数据,同时设备B也可以向设备A发送数据。
两根线:TX(发送线)和RX(接收线)。
无时钟线:UART使用内部的波特率生成器来同步数据,因此不需要额外的时钟线。
设备数量:通常用于两个设备之间的通信,但可以通过使用多路复用器或集线器来扩展以支持更多设备,尽管这可能会引入额外的复杂性和延迟。
SPI(Serial Peripheral Interface)
全双工:同时支持数据的发送和接收。
四根线:MOSI(主设备输出,从设备输入)、MISO(主设备输入,从设备输出)、SCK(时钟线)、CS(片选线,对于每个从设备都有一根)。
一主多从:一个主设备可以与多个从设备通信,通过控制不同的片选线来选择当前通信的从设备。
I2C(Inter-Integrated Circuit)
半双工:数据在同一时间只能在一个方向上传输,但可以通过改变方向来实现双向通信。
两根线:SDA(数据线)和SCL(时钟线)。
多主一从/多主多从:I2C总线可以支持多个主设备和多个从设备。多个主设备可以通过仲裁机制来决定谁有权使用总线。从设备通常有一个唯一的地址,以便主设备可以选择性地与之通信。
综上所述,UART、SPI和I2C都是串行通信协议,它们各有特点,适用于不同的应用场景。UART简单且易于实现,适用于两个设备之间的通信;SPI速度快,适用于需要高速数据传输的一主多从场景;I2C则因其多主设备和多从设备的支持以及简单的两根线设计而广泛应用于各种微控制器和传感器之间的通信。

速度比较

SPI、UART与I2C在传输速度上存在差异,这主要是由于它们的设计原理、应用场景以及硬件特性所决定的。下面我将分别介绍这三种通信协议的传输速度特点及其原因。

  1. SPI(Serial Peripheral Interface)
    传输速度特点:
    SPI是一种高速的、全双工的同步串行通信协议。其传输速度通常可以达到MHz级别,甚至更高。例如,SPI的最大传输速率取决于时钟频率,一般可以达到20MHz,有时甚至可以达到50MHz(来源:【技象科技】工业物联网厂商,智能物联网公司)。

原因:

同步通信:SPI使用时钟信号来同步数据的传输,确保了数据的稳定性和高速率。
全双工通信:允许数据在两根线路上同时双向传输,提高了传输效率。
硬件支持:SPI接口通常集成在微控制器等硬件中,具有较高的性能和灵活性。
2. UART(Universal Asynchronous Receiver/Transmitter)
传输速度特点:
UART是一种异步串行通信协议,其传输速度相对较慢。UART的波特率(即每秒传输的位数)通常在110 bps至115200 bps之间,高速UART的波特率可以超过115200 bps,但相对于SPI来说仍然较低。

原因:

异步通信:UART不使用时钟信号来同步数据传输,而是通过起始位、数据位、校验位和停止位等字符格式来识别数据的开始和结束,这种方式相对简单但传输效率较低。
硬件限制:UART接口的硬件设计通常较为简单,成本较低,适用于对传输速度要求不高的场景。
3. I2C(Inter-Integrated Circuit)
传输速度特点:
I2C的传输速度介于SPI和UART之间。其标准模式速率为100kbit/s,快速模式速率为400kbit/s,高速模式下甚至可以达到3.4Mbits/s(来源:腾讯云 产业智变·云启未来)。然而,高速模式需要特殊的硬件支持,且在实际应用中并不常见。
原因:

半双工通信:I2C在同一时间内只能进行单向数据传输,虽然可以通过切换方向来实现双向通信,但降低了传输效率。
总线仲裁:I2C支持多主设备通信,通过总线仲裁机制来协调多个主设备之间的通信,这种机制引入了一定的延迟和开销。
硬件特性:I2C接口通常用于连接低速外设,如传感器、EEPROM等,因此其设计更注重于简化布线和降低功耗,而非追求高速传输。
综上所述,SPI、UART与I2C在传输速度上的差异主要源于它们的设计原理、应用场景以及硬件特性。SPI以其高速同步通信的优势适用于需要高速数据传输的场景;UART则以其简单异步通信的特点适用于对传输速度要求不高的场景;而I2C则以其灵活的多主设备通信能力和适中的传输速度在低速外设连接中占据一席之地。

标签:UART,通信,传输速度,SPI,I2C,设备
From: https://blog.csdn.net/weixin_41230430/article/details/141299850

相关文章

  • UART串行通信协议
    UART串行通信协议UART(UniversalAsynchronousReceiver/Transmitter,通用异步接收器/发送器)是一种串行通信协议,用于异步通信,即发送和接收设备不需要共享一个时钟信号来同步数据传输。以下是UART的详细介绍:UART的基本特性异步通信:UART不使用时钟信号来同步数据,而是依赖于数据包......
  • Java的Spi
    什么是SPI?SPI全称:ServiceProviderInterface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需......
  • 铁电存储器(FM24W256)I2C读写驱动(2):写保护、设备地址、读写方式
    0参考资料FM24W256(Cypress公司生产)数据手册本例使用的FM24W256(soic-8封装)引脚示意图如下:1写保护WP引脚是写保护引脚,当WP被拉高时FM24W256写入无效,拉低时才能正常写入数据。该引脚在芯片内部下拉。相关描述如下:2FM24W256设备地址和AT24CXX系列EEPROM类似,FM24W25......
  • UART 通信协议详解
    目录一、概述二、UART详解1、数据通信的基本概念1.1数据通信方式1.2数据传输方向1.3数据同步方式1.4通信速率2、UART协议2.1串口连接2.2串口协议帧一、概述UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)是一种常用的串行通信协议,......
  • SPI 通信协议详解
    目录一、概述二、SPI详解1、基本信息1.1SPI的引脚信息1.2SPI的工作原理1.3SPI的传输方式2、SPI的工作原理3、SPI的工作模式3.1SPI时序基本单元3.2CPOL和CPHA3.3四种工作模式3.3.1工作模式03.3.2工作模式13.3.3工作模式23.3.4工作模式3一......
  • zynq QSPI flash分区设置&启动配置
    需求:一款基于zynq架构的产品,只有qspiflash,并没有其他的存储设备,现在的要求固化某个应用程序app,设置开机启动,但是根据厂家提供的sdk,编译出的镜像重启后,文件系统的内容都会还原,之前的方案是每次都要把程序放到buildroot下,然后重新编译,将rootfs、内核镜像、设备树打包到image.u......
  • 串口UART
    Uart:通用异步收发器,全双工,异步通信,点对点通信TX:发送端RX:接收端电平标准:TTL:+5V表示1,0V表示0RS232:-3V~-15V表示1,3V~15V表示0RS485:两线压差+2~+6V表示1,-2~-6V表示0可以一发多收传输方式:全双工:双方可在同一时刻互相传输半双工:双方共用一根数据线,必须分时复用单工:只能由发的一方发向收......
  • 各种spi机制实现与使用
    SPI机制认识1.javaSPI机制javaSPI机制(serviceproviderinterface)jdk内置的服务提供发现机制,可以启用框架扩展或替换组件,主要思想是将装配的控制权移到程序之外通俗的讲就是:为某个接口自动找到实现类并初始化。使用:定义接口编写实现类实现接口逻辑在类路径下添加目录......
  • iOS中的自旋锁(OSSpinLock)
    目录​​​​​​​前言1.概念一、基本用法 1.初始化2.锁定和解锁二、示例代码三、os_unfair_lock的优缺点1.优点1.防止优先级反转2.性能高3.轻量级2.缺点1.不支持递归锁定2.线程杀死时不自动释放前言    这篇文章主要介绍下OSSpinLock(自旋锁)。1.......
  • Spring boot 要监听 S3 上的文件, 当有新文件到来时,下载新文件(Quartz 事件轮询版)
    在SpringBoot中实现使用Quartz定时任务轮询AWSS3Bucket,并根据文件的最后修改日期确定是否需要下载文件的功能。步骤一:添加依赖在pom.xml中添加SpringBoot、Quartz和AWSSDK的依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo......