首页 > 其他分享 >UART/SPI/I2C 协议——(1)三者区别

UART/SPI/I2C 协议——(1)三者区别

时间:2025-01-10 20:59:38浏览次数:3  
标签:UART 通信 SPI I2C 主从 设备

1. UART, SPI, I2C 区别汇总

特性UARTSPII2C
通信方式串行、异步通信串行、同步通信串行、同步通信
传输速率较低(9600-115200bps)高速(通常超过 1 Mbps)较慢(通常在 100 kbps 到 400 kbps)
引脚数量2 根(TX 和 RX)4 根(MOSI, MISO, SCLK, CS)2 根(SDA, SCL)
连接方式点对点通信主从模式(1 主与多个从)支持多主多从(设备通过地址区分)
传输方向全双工全双工(主从间双向传输)半双工(单向传输)
应用场景简单的设备间通信,如 GPS 模块、蓝牙高速设备通信,如 SD 卡、显示器适合低速设备的多设备通信,如传感器

2. UART (Universal Asynchronous Receiver/Transmitter)

工作原理
  • 串行通信协议:UART 是一种基于串行通信的协议,通常用于点对点通信,即一对一的数据传输。数据按位顺序发送和接收。
  • 异步传输:UART 不需要时钟信号进行同步,而是通过预先设定的波特率(Baud Rate)来确保双方在同一速率下发送和接收数据。
  • 全双工通信:支持同时进行发送和接收操作。
特点
  • 数据传输方式:使用两条线进行数据传输,分别是 TX(发送) 和 RX(接收)
  • 波特率:通信双方需配置相同的波特率(传输速率),通常从 9600 到 115200bps 等。
  • 控制信号:一般使用 起始位数据位校验位 和 停止位 来标识数据的开始、结束和错误检查。
优缺点
  • 优点
    • 简单易用,硬件要求较少。
    • 支持全双工传输。
    • 广泛应用于串口通信。
  • 缺点
    • 仅支持点对点通信,无法同时连接多个设备。
    • 波特率的限制使得传输距离受到影响。
应用场景
  • 用于微控制器、PC 和外部设备之间的通信,如 GPS 模块、蓝牙串口通信等。

3. SPI (Serial Peripheral Interface)

工作原理
  • 同步通信协议:SPI 是同步的串行通信协议,使用时钟信号进行数据传输,以确保数据在同一时钟周期下同步交换。
  • 主从模式:SPI 通信采用主从结构,通常由一个主设备控制多个从设备。每个从设备通过 片选(Chip Select, CS) 信号与主设备进行通信。
  • 全双工通信:数据可以同时在主从设备之间进行传输,具有较高的传输速度。
特点
  • 数据传输线:SPI 需要至少 4 条线:
    • MOSI(Master Out Slave In):主设备向从设备传输数据。
    • MISO(Master In Slave Out):从设备向主设备传输数据。
    • SCLK(Serial Clock):由主设备生成的时钟信号,用于同步数据传输。
    • CS/SS(Chip Select/Slave Select):选择当前通信的从设备。
优缺点
  • 优点
    • 高速传输(通常高于 UART 和 I2C)。
    • 支持全双工通信。
    • 简单、易于实现。
  • 缺点
    • 需要更多的引脚,尤其是当从设备较多时。
    • 需要不同的时钟和片选信号,随着设备数量的增加,硬件接线会变得复杂。
应用场景
  • 常用于高速度的外设连接,如 SD 卡、传感器、LCD 显示器等。

4. I2C (Inter-Integrated Circuit)

工作原理
  • 同步通信协议:I2C 也是同步协议,采用两个信号线进行数据传输:数据线 (SDA) 和时钟线 (SCL)。
  • 主从模式:I2C 也采用主从结构,但与 SPI 不同,I2C 支持多个主设备和从设备连接在同一总线上。每个从设备通过唯一的地址来识别。
  • 半双工通信:数据在传输过程中为单向,数据的发送和接收是交替进行的。
特点
  • 数据传输线:I2C 只需要两条线:

    • SDA(Serial Data Line):数据线。
    • SCL(Serial Clock Line):时钟线。
  • 设备地址:I2C 中每个从设备都有一个唯一的 7 或 10 位地址,用于区分不同的设备。

  • 多主机支持:I2C 可以支持多个主设备,同时控制多个从设备。

优缺点
  • 优点
    • 只需两条线即可连接多个设备,简化硬件设计。
    • 可以通过地址识别多个设备,适合多设备系统。
    • 低功耗,适合在功耗要求较低的场合使用。
  • 缺点
    • 速度相对较慢,通常低于 SPI。
    • 支持的设备数目有限(地址空间限制)。
    • 数据传输受总线负载影响,传输速度较低。
应用场景
  • 常用于连接多个低速外设,如温度传感器、EEPROM、RTC(实时时钟)等。


总结

  • UART:适合点对点、简单的串行通信,通常用于单一设备之间的通信,且硬件要求较少。
  • SPI:适合需要高速、高带宽传输的设备,且需要全双工通信。适用于主从结构的通信,但引脚数量较多。
  • I2C:适合多个设备共享同一总线的低速通信,且只需要两根线。常用于传感器和 EEPROM 等设备。

标签:UART,通信,SPI,I2C,主从,设备
From: https://blog.csdn.net/weixin_62999282/article/details/145058480

相关文章

  • Vue - 解决报错 TypeError: transpileDependencies.map is not a function(vue项目运行
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在vue项目开发中,解决项目运行报错:ERRORTypeError:transpileDependencies.mapisnotafunction,莫名其妙非常恶心的错误,另外项目打包build时也可能会提示错误,vue项目跑不起来了,无论是新老项目......
  • 基于SpirngBoot的医院挂号预约管理系统
    引言  随着医疗服务的需求日益增长,医院挂号流程繁琐和低效的问题愈发突出。传统的挂号方式往往需要患者长时间排队等待,不仅耗费大量时间和精力,还可能导致医疗资源的浪费。为响应互联网+医疗的发展趋势,开发一个高效、便捷的医院挂号预约管理系统显得尤为重要。该系统旨在......
  • CH585的SPI驱动WS2812
    目录链接:https://pan.baidu.com/s/1Su5dgmVWLre5kH2fYiGwQQ?pwd=wch6CH573系列/583系列/592系列MCU,在使用SPI模拟WS2812波形时,MISO-PA15引脚上的实时电平,会影响MOSI-PA14引脚上的空闲电平状态,故建议SPI驱动WS2812的场景下,固定PA15的电平,不要接其他外设。异常场景:当PA15引脚上......
  • STM32MP157AAA开发板通过GPIO实现模拟I2C驱动获取光照,红外,接近传感器的数据
    实验目标:硬件:STM32MP157AAA开发板+拓展板管脚:拓展板光照,红外,接近传感器(AP3216C)I2C1_SCL对应核心板PF14,I2C1_SDA对应核心板PF15,可知从机地址为0X1E。梳理:I2C各信号下SCL与SDA的机制可查看STM32MP157AAA开发板通过GPIO实现模拟I2C驱动获取温湿度传感器数据-CSDN博客光照,红......
  • STM32MP157AAA开发板通过GPIO模拟SPI驱动通信控制数码管
    实验目标:硬件:STM32MP157AAA开发板+拓展板管脚:拓展板上数码管(M74HC595),由下图可知,数码管通过SPI与核心板通信,时钟(S)CK对应PE12、主机输出从机输入(MOSI)对应PE14、主机输入从机输出(MISO)对应PE13、从设备选择(CSN)对应PE11,由于当前电路SPI只有一个从设备,因此在硬件层面上将PE11常置为......
  • STM32 I2C总线
    一、什么是I2C总线1、SCL、和SDA线的作用I2C总线是主机与从机之间通过SCL、SDA连接,达到一个主机对应多个从机的作用。其中SCL叫做串行时钟线,负责传输时钟信号,SDA叫做串行数据线,负责传输数据。2、为什么SCL和SDA都是开漏输出,并且要外接一个上拉电阻什么开漏输出?只有低电......
  • UART异步串行通信协议
    UART概述UART的定义USART指通用同步收发器,UART指通用异步收发器这些通用收发器提供了一种灵活的方式与外部设备进行单工/半双工/全双工方式的数据交互,并且可选择多种波特率,支持多种通信协议和功能模式等UART的类别STM8S单片机片内总共有3个串口资源:UART1/2/3(STM8S105则只......
  • Spinnaker
    Spinnaker是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker主要特性:配置一次,随时运行;随地部署,集中化管理;开源。Spinnaker组件:Spinnaker最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交付平台,能够实现:......
  • 【江协STM32】10-1 I2C通信协议
    1.I2C通信I2C(InterICBus)是由Philips公司开发的一种通用数据总线两根通信线:SCL(SerialClock,串行时钟线)、SDA(SerialData,串行数据线)同步,半双工带数据应答支持总线挂载多设备(一主多从、多主多从)         2.硬件电路所有I2C设备的SCL连在一起,SDA连在一起设......
  • C++ Qt练习项目 QSpinBox和QDoubleSpinBos 未完待续
    个人学习笔记新建项目设计UI......