I2C、SPI、UART对比
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对比相关推荐
- 开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板 发个方便测试I2C.SPI.1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成 ...
- SPI、I2C、UART(即串口)三种串行总线详解
以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...
- 串行总线 —— I2C、UART、SPI
I2C,也叫 IIC,是一种常见的串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息. 0. 电气知识 开漏输出:Open drain output,不输出电压,低电平时接地,高电平时不接地 ...
- 三种串行总线协议的区别(SPI、I2C和UART)
SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...
- 树莓派 SPI,I2C,UART串行总线介绍
很多人对总线,串行等概念不熟悉特别是SPI,I2C,UART,GPIO等概念. 因此我收集了一些资料,用于总结.希望对大家有所帮助. 首先看一下树莓派上的接口: GPIO引脚 x 26 UART总线 ...
- SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?
总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...
- 教你分清楚SPI、I2C、UART、I2S、GPIO、SDIO、CAN!
总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...
- linux can总线接收数据串口打包上传_SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?...
总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...
最新文章
- Java 集合 — HashMap
- master中的系统目录与用户数据库中的区别
- 关于fflush、缓冲区、scanf、EOF等问题真麻烦
- Toolbar-5.0新特性
- 自定义的命民空间在其他程序集里无法调用
- hust1342(流量有上下界的最小流)
- (二):集成日志框架:springboot使用logback日志框架
- 【MySQL性能优化】概述与优化方面(一)
- sql 中位数_【PL/SQL 自定义函数】 常用场景
- jboss加载组件_直接从JBoss AS 7组件使用JGroups
- pl/sql中的赋值运算符_如何在SQL中使用AND / OR运算符?
- CISCO PVST+配置和结果验证 per vlan spanning tree(51cto 实验10)
- ECCV 2020 oral | 基于语义流的快速而准确的场景解析,在Cityscapes上达到80.4%mIoU,26 FPS...
- Tutorial of Codeforces Round 729 (Div.2)
- VLC-3.0.0(Nightly版)在Linux和Windows下的编译步骤详解
- HDU 4983 Goffi and GCD(数论)
- html中span隐藏属性,JS 如果改变span标签的是否隐藏属性
- 2021/8/10 正在F-Droid里下载Termux...
- Qnap NAS + Emby Server + Kodi
- aws saa考试费用是多少?aws saa考试准备多久才能考试?
热门文章
- 计算机二级front和rear什么意思,计算机二级公共基础选择题31-40
- Python画图之小黑子头像
- oracle ebs 接收数量,Oracle EBS-SQL (PO-6):检查订单接收总数.sql
- 如何阻止你的 iPhone 系统升级到 iOS11
- 【DG】主rac + 备rac dg 部署
- 在WIN7上安装VS2003(FrontPage扩展的问题)
- stm32f407IGT的SYS_TICK嘀嗒定时器(一)
- 手机银行APP开发新门户
- 绿之韵对传销坚决说不 ,信念改变人生轨迹
- javax.media:jai_core:1.1.3如何下载?