目录

I2C 总线协议概述

参数总结

I2C 的工作原理

寻址

读/写位

数据帧

I2C数据传输的步骤

具有多个从机的单个主机

具有多个从机的多个主机

I2C的优缺点

优点

缺点


I2C 总线协议概述

I2C 总线广泛应用在 OLED 显示器、气压传感器或陀螺仪/加速度计模块的项目。

I2C结合了SPI和UART的最佳功能。使用I2C,可以将多个从机连接到单个主机(如SPI),并且可以让多个主机控制单个或多个从机。当希望有多个微控制器将数据记录到单个存储卡或将文本显示到单个LCD时,这非常有用。

与UART通信一样,I2C仅使用两根线在设备之间传输数据:

SDA(串行数据):主机和从机发送和接收数据的线路。

SCL(串行时钟):传输时钟信号的线路。

I2C是一种串行通信协议,因此数据沿着单线(SDA线)逐位传输。

与SPI一样,I2C是同步的,因此位的输出通过主机和从机之间共享的时钟信号与位采样同步。时钟信号始终由主站控制。

参数总结

所需的线数

2

最大的速率

标准模式:100kbps

快速模式:400kbps

高速模式:3.4Mbps

极速模式:5Mbps

同步或异步

同步

串行或并行

串行

主机的最大个数

没有限制

从机的最大个数

1008

I2C 的工作原理

使用I2C,数据在消息中传输。 消息被分解为数据帧。每条消息都有一个地址帧,其中包含从机的二进制地址,以及一个或多个包含正在传输的数据的数据帧。该消息还包括每个数据帧之间的开始和停止条件、读/写位和 ACK/NACK 位:

启动条件:SCL线路从高电平切换到低电平之前,SDA线路从高电平切换到低电平。

停止条件:SCL线路从低电平切换到高电平后,SDA线路从低电平切换到高电平。

地址帧:每个从机唯一的 7 位或 10 位序列,当主机想要与其通信时,该序列标识从机。

读/写位: 指定主机是向从机(低电平)发送数据还是从中请求数据(高电平)的单个位。

ACK/NACK 位:消息中的每个帧后跟一个确认/不确认位。如果成功接收地址帧或数据帧,则从接收方向发送方返回 ACK 位。

寻址

I2C没有像SPI那样的从属选择线,因此它需要另一种方式让从机知道数据正在发送给它,而不是另一个从机站。它通过寻址来做到这一点。地址帧始终是新消息中起始位之后的第一个帧。

主机将它想要与之通信的从机的地址发送给连接到它的每个从机。然后,每个从机将从主机发送的地址与其自己的地址进行比较。如果地址匹配,则将低电平ACK位发送回主机。如果地址不匹配,则从机不执行任何操作,并且 SDA 线路保持高电平。

读/写位

地址帧在末尾包含一个位,通知从机是要向其写入数据还是从中读出数据。如果主机要向从机写数据,读/写位为低电平。如果主站从从站读数据,则该位为高电平。

数据帧

在主机检测到来自从机的ACK位后,第一个数据帧就可以发送了。

数据帧的长度始终为 8 位,并且首先发送最高有效位。每个数据帧后紧跟一个 ACK/NACK 位,以验证是否已成功接收该帧。在发送下一个数据帧之前,ACK位必须由主机或从机接收(取决于发送数据的人)。

发送完所有数据帧后,主机可以向从机发送停止条件以停止传输。停止条件是 SCL 线路上的电平从低到高的电压转换之后,在 SDA 线路上的电平从低到高的转换,而SCL 线路保持高电平。

I2C数据传输的步骤

1. 主机将启动条件从高电平切换至低电平,将SDA线路从高电平切换至低电平,将启动条件发送到每个连接的从机:

2. 主机向每个从机发送它想要与之通信的从机的7位或10位地址,以及读/写位:

3. 每个从机将主机发送的地址与自己的地址进行比较。如果地址匹配,则从机通过将SDA线拉低一位来返回ACK位。如果来自主机的地址与从机自己的地址不匹配,则从机将 SDA 线路保持不变维持在高电平。

4. 主机发送或接收数据帧:

5. 传输完每个数据帧后,接收方向发送方返回另一个ACK位,以确认成功接收帧:

6.为了停止数据传输,主机通过在将SDA切换为高电平之前将SCL切换为高电平向从站发送停止条件:

具有多个从机的单个主机

由于I2C使用寻址,因此可以从单个主机控制多个从机。对于 7 位地址,可以使用 128 (2^7) 个唯一地址。使用 10 位地址的情况不常见,但提供 1,024 (2^10) 个唯一地址。要将多个从站连接到单个主站,要像图中这样连接它们,使用4.7KΩ上拉电阻器将SDA和SCL线路连接到Vcc:

具有多个从机的多个主机

多个主站可以连接到单个从机或多个从机。当两个主机尝试通过SDA线路同时发送或接收数据时,同一系统中多个主机的问题就出现了。为了解决这个问题,每个主机都需要在传输消息之前检测SDA线是低还是高。如果 SDA 线路较低,则意味着另一个主机控制总线,主机应等待发送消息。如果 SDA 线路较高,则传输消息是安全的。要将多个主机连接到多个从机,要像图中这样连接它们,使用4.7KΩ上拉电阻器将SDA和SCL线路连接到Vcc:

I2C的优缺点

优点

  • 仅使用两根电线
  • 支持多个主机和多个从机
  • ACK/NACK 位确认每帧都已成功传输
  • 硬件比 UART 更简单
  • 众所周知且广泛使用的协议

缺点

  • 数据传输速率比 SPI 慢
  • 数据帧的大小限制为8位
  • 需要实现比SPI更复杂的硬件

常见总线汇总

【总线】一文看懂 UART 通信协议

【总线】一文看懂 I2C 通信协议相关推荐

  1. 【总线】一文看懂 UART 通信协议

    目录 UART 通信简介 UART工作原理 起始位 数据帧 奇偶校验位 停止位 UART 传输的步骤 UART的优缺点 优点 缺点 UART 通信简介 UART即通用异步收发器,是一种通用的串行.异步 ...

  2. AMBA总线协议(三)——一文看懂AHB总线所有协议总结(AHB2 AHB-Lite AHB5 )

    AMBA AHB 总线协议介绍请点击以下链接: AMBA总线协议(一)--一文看懂APB总线协议 AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别 AMB ...

  3. AMBA总线协议(一)——一文看懂APB总线协议

    0.AMBA总线概括 AMBA AHB 总线协议介绍请点击以下链接: AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别 AMBA总线协议(三)--一文看懂 ...

  4. 一文搞懂UART通信协议

    目录 1.UART简介 2.UART特性 3.UART协议帧 3.1.起始位 3.2.数据位 3.3.奇偶校验位 3.4.停止位 4.UART通信步骤 1.UART简介 UART(Universal ...

  5. 怎么看电脑系统是win几_一文看懂arm架构和x86架构有什么区别

    一文看懂arm架构和x86架构有什么区别 本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用 ...

  6. 《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂

    片上系统SoC(System on Chip),即在一块芯片上集成一整个信息处理系统,简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路,是智能设备的" ...

  7. [转帖] 一文看懂:边缘计算究竟是什么?为何潜力无限?

    一文看懂:"边缘计算"究竟是什么?为何潜力无限? 转载cnbeta 云计算 雾计算 边缘计算... 知名创投调研机构CB Insights撰文详述了边缘计算的发展和应用前景.文章称 ...

  8. 【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点

    摘要:2022华为开发者大赛备赛攻略,超详细的开发技术要点介绍来了. 本文分享自华为云社区<[燃]是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点>,作者:华为云社区精选 . ...

  9. 一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)

    2019-12-20 20:01:00 数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集.验证集.测试集. 同时还会介绍如何更合理的讲数据划分为3种数据集.最后给大家介绍一 ...

  10. 一文看懂计算机视觉-CV(基本原理+2大挑战+8大任务+4个应用)

    2020-03-06 20:00:00 计算机视觉(Computer Vision)是人工智能领域的一个重要分支.它的目的是:看懂图片里的内容. 本文将介绍计算机视觉的基本概念.实现原理.8 个任务和 ...

最新文章

  1. linux上用的端口转发工具,Linux中的快速端口转发工具—rinetd
  2. Debina解决浏览器中乱码(将系统字体改为中文)
  3. 教师节送什么老师最开心?程序员三招解决家长送礼难题!
  4. Tina-TI 电路仿真 多参数交流传输特性分析 频率与相位增益的关系 选择控制对象
  5. WordPress 5.1.1 发布,修复 CSRF 漏洞
  6. linux mint php mysql_Installing LAMP (Linux, Apache, MySQL and PHP) On Linux Mint
  7. 力扣-724 寻找数组的中心索引
  8. 17/18/19每日一练汇总
  9. 政企用户网络安全常见风险盘点
  10. Spring5 系统架构
  11. NOIP2017酱油记
  12. moment 时间日期处理库 解析部分
  13. 如何让DIV中的内容左边的靠左对齐,右边的靠右对齐?
  14. GitHub 热点速览 Vol.24:程序员自我增值,优雅赚零花钱
  15. Android短信拦截机制适配的坑(下)--4.4以上系统,主要是6.0
  16. 苹果怎么设置下载软件不要密码?手机技巧分享
  17. ManualResetEvent用法详解
  18. 戴尔灵越笔记本电脑蓝牙消失问题解决办法 2021 9 9
  19. 天猫某个商品秒杀js精简
  20. 电脑usb android上网,让你的Android手机通过USB共享电脑上网

热门文章

  1. C/C++运行库简介
  2. NETBIOS/NETBEUI 协议 SAMBA
  3. winxp netbeui install
  4. 带你了解APP开发的具体流程
  5. 【Luat-air105】8.1 camera拍照
  6. 排序算法-冒泡排序详细讲解(BubbleSort)
  7. 视频监控行业常用的几种分辨率(CIF/QCIF/DCIF/D1/HALF D1)对比解释
  8. c语言编fft算法程序,FFT算法的C语言编程
  9. Oracle 同音字查询,对外汉语汉字教学
  10. 马士兵oracle视频教程笔记