I2C、SPI、UART特性简表

I2C SPI UART
接口连线 二线:
时钟SCL
数据SDA
四线①:
片选CS②
主发从收MOSI
主收从发MISO
时钟CLK
一般为三线:
收RX
发TX
地GND
设备数量及连接方式 最多127/1023个设备③
多主控④
多设备⑤
单主机
两个设备
对称连接
工作模式 半双工
异步
全双工
异步
全双工
同步⑥
速率 标准模式100kbit/s
快速模式400kbit/s
高速模式3.4Mbit/s
比I2C快,可达几Mbit/s,甚至超过10Mbit/s⑦ 由波特率决定⑧,一般几~几十kbit/s,到百k级就很难了

针对表格中带小圈的数字,详细说明如下:

①:以下几种情况可以省掉一根线,变成三线SPI:
    a. SPI主设备只发不收,此时可直接去掉MISO
    b. SPI只需要半双工工作,此时可将MOSI和MISO合并成一根线

②:当存在N个从设备时,每个从设备需要一个CS,所以主设备需要提供N个CS信号。所以,虽然理论上SPI可以接多个从设备,但能支持的从设备数量和主设备能提供的CS数量有关。另外,从设备数量跟数据线的驱动强度也有关,太多从设备可能导致数据线驱动力不足。所以,场景的SPI总线上一般都只有3-5个从设备。

③:I2C协议中地址位有7bit和10bit两种,对于7bit地址最多支持寻址127个设备,对于10bit地址最多支持寻址1023个设备。10bit地址的I2C协议兼容7bit地址的I2C协议。

④:任何时刻只能有一个主设备。I2C总线通过冲突检测和仲裁机制进行保证。

⑤:见②

⑥:同步是指不需要时钟线,收发双方分别根据波特率采用频率相同的本地时钟。异步是指需要时钟信号线,收发双方根据时钟信号线的频率传输。

⑦:SPI为什么比I2C快?

I2C协议需要传输地址,需要冲突检测和仲裁,还有应答等等,这些机制导致I2C协议的开销比SPI大。所以,从理论上讲SPI的速率肯定比I2C快。

⑧:UART的波特率一般有9600/19200/115200bit/s等几种。但要注意,波特率是指物理层每bit传输的速率,因为UART数据中还包含起始位、结束位、校验位等等,所以实际的数据传输速率比波特率会低一点。

应用场景比较

场景一:设备较多的场景

选I2C。因为:

UART只能支持两个设备,所以UART直接被排除掉了。

SPI增加一个设备就需要增加一条CS,当设备较多的时候,会因为CS太多而导致连接复杂。

场景二:要求速率较高的场景

选SPI。因为:

UART速率较低,所以UART直接被排除掉了。

I2C的速率也没有SPI高(详情前面已说明),而且I2C是半双工,SPI是全双工。所以SPI的速率优势还是很明显的。

I2C、SPI、UART对比相关推荐

  1. 开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板

    开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板 发个方便测试I2C.SPI.1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成 ...

  2. SPI、I2C、UART(即串口)三种串行总线详解

    以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...

  3. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  4. 串行总线 —— I2C、UART、SPI

    I2C,也叫 IIC,是一种常见的串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息. 0. 电气知识 开漏输出:Open drain output,不输出电压,低电平时接地,高电平时不接地 ...

  5. 三种串行总线协议的区别(SPI、I2C和UART)

    SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...

  6. 树莓派 SPI,I2C,UART串行总线介绍

    很多人对总线,串行等概念不熟悉特别是SPI,I2C,UART,GPIO等概念. 因此我收集了一些资料,用于总结.希望对大家有所帮助. 首先看一下树莓派上的接口: GPIO引脚 x 26 UART总线 ...

  7. SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

  8. 教你分清楚SPI、I2C、UART、I2S、GPIO、SDIO、CAN!

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

  9. linux can总线接收数据串口打包上传_SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?...

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

最新文章

  1. Java 集合 — HashMap
  2. master中的系统目录与用户数据库中的区别
  3. 关于fflush、缓冲区、scanf、EOF等问题真麻烦
  4. Toolbar-5.0新特性
  5. 自定义的命民空间在其他程序集里无法调用
  6. hust1342(流量有上下界的最小流)
  7. (二):集成日志框架:springboot使用logback日志框架
  8. 【MySQL性能优化】概述与优化方面(一)
  9. sql 中位数_【PL/SQL 自定义函数】 常用场景
  10. jboss加载组件_直接从JBoss AS 7组件使用JGroups
  11. pl/sql中的赋值运算符_如何在SQL中使用AND / OR运算符?
  12. CISCO PVST+配置和结果验证 per vlan spanning tree(51cto 实验10)
  13. ECCV 2020 oral | 基于语义流的快速而准确的场景解析,在Cityscapes上达到80.4%mIoU,26 FPS...
  14. Tutorial of Codeforces Round 729 (Div.2)
  15. VLC-3.0.0(Nightly版)在Linux和Windows下的编译步骤详解
  16. HDU 4983 Goffi and GCD(数论)
  17. html中span隐藏属性,JS 如果改变span标签的是否隐藏属性
  18. 2021/8/10 正在F-Droid里下载Termux...
  19. Qnap NAS + Emby Server + Kodi
  20. aws saa考试费用是多少?aws saa考试准备多久才能考试?

热门文章

  1. 计算机二级front和rear什么意思,计算机二级公共基础选择题31-40
  2. Python画图之小黑子头像
  3. oracle ebs 接收数量,Oracle EBS-SQL (PO-6):检查订单接收总数.sql
  4. 如何阻止你的 iPhone 系统升级到 iOS11
  5. 【DG】主rac + 备rac dg 部署
  6. 在WIN7上安装VS2003(FrontPage扩展的问题)
  7. stm32f407IGT的SYS_TICK嘀嗒定时器(一)
  8. 手机银行APP开发新门户
  9. 绿之韵对传销坚决说不 ,信念改变人生轨迹
  10. javax.media:jai_core:1.1.3如何下载?