IIC通信协议(简单易理解版)

2023-05-16

IIC通信协议简介:

IIC(也记为I2C,读作I^2C,inter-integrated Circuit集成电路总线),最早是飞利浦在1982年开发设计并用于自己的芯片上,是一种半双工串行同步的通信协议。常用于一主多从的通信方式,由于只有两根线。,一根数据线SDA、一根时钟线SCL,因此抗干扰能力大不如CAN总线通信,常用于短距离通信。
IIC线路连接简图
I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

通信协议详解:

上图可以看出,由两条信号线的上拉电阻把电平拉高,因此当IIC总线的数据线SDA和时钟线同时处于高电平时,规定为总线的空闲状态。此时各个器件输出级场效应管均处在截止状态,即释放总线。

以下是从主设备往从设备写数据的传输格式:
从主设备往从设备写数据的传输格式

时序的具体步骤:
1)、开始信号;
2)、发送 IIC 设备地址,每个 IIC 器件都有一个设备地址,通过发送具体的设备地址来决定访问哪个 IIC 器件。这是一个 8 位的数据,其中高 7 位是设备地址,最后 1 位是读写位,为1 的话表示这是一个读操作,为 0 的话表示这是一个写操作;
3)、 IIC 器件地址后面跟着一个读写位,为 0 表示写操作,为 1 表示读操作;
4)、从机发送的 ACK 应答信号;
5)、重新发送开始信号;
6)、发送要写写入数据的寄存器地址;
7)、从机发送的 ACK 应答信号;
8)、发送要写入寄存器的数据;
9)、从机发送的 ACK 应答信号;
10)、停止信号。

起始位:

起始位必须要在时钟线为高电平时,数据位下拉,有一个下降沿,这就是起始位。
起始位

地址、数据位:

在传输地址位、数据位时,IIC 总线在数据传输的时候要保证在 SCL 高电平期间, SDA 上的数据稳定,因此 SDA 上的数据变化只能在 SCL 低电平期间发生。
逻辑1如下:
逻辑1

逻辑0

停止位:

与起始位相反,停止位必须要在时钟线为高电平时,数据位上拉,保证在这个时钟期间有一个上升沿,这就是停止位。
在这里插入图片描述

从主设备往从设备读数据的传输格式:

从主设备往从设备读数据的传输格式

1)、主机发送起始信号;
2)、主机发送要读取的 IIC 从设备地址;
3)、读写控制位,因为是向 IIC 从设备发送数据,因此是写信号;
4)、从机发送的 ACK 应答信号;
5)、重新发送 START 信号;
6)、主机发送要读取的寄存器地址;
7)、从机发送的 ACK 应答信号;
8)、重新发送 START 信号;
9)、重新发送要读取的 IIC 从设备地址;
10)、读写控制位,这里是读信号,表示接下来是从 IIC 从设备里面读取数据;
11)、从机发送的 ACK 应答信号;
12)、从 IIC 器件里面读取到的数据;
13)、主机发出 NO ACK 信号,表示读取完成,不需要从机再发送 ACK 信号了;
14)、主机发出 STOP 信号,停止 IIC 通信。

多字节读写:

多字节读写时序和单字节的基本一致,只是在读写数据的时候可以连续发送多个自己的数据,其他的控制时序都是和单字节一样的。

多主机仲裁:

当多个主机同时写数据时,IIC总线会使用“线与机制”识别来自其他芯片的活动(抢答),一般不会在开漏三极管导通的时候检查仲裁,而是在开漏三极管截止的时候检查总线是否被其他芯片拉到低电平,如果检测到总线被其他芯片拉到低电平,就要立即退出通信并向软件报告“仲裁失利”,等待其他芯片传输完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIC通信协议(简单易理解版) 的相关文章

随机推荐

  • Python“ while”循环(无限迭代)

    Iteration means executing the same block of code over and over potentially many times A programming structure that imple
  • kubernetes_Kubernetes手册

    kubernetes Kubernetes is an open source container orchestration platform that automates the deployment management scalin
  • 设置成功的开源计划办公室(OSPO)的指南

    公司创建了开放源代码计划办公室 xff08 OSPO xff09 xff0c 以管理其与所依赖的开放源代码生态系统的关系 通过了解公司的开源生态系统 xff0c OSPO可以最大化公司的投资回报率 xff0c 并降低使用 xff0c 贡献和
  • 开源搜索引擎 种子搜索_使用开源搜索引擎自定义您的互联网

    开源搜索引擎 种子搜索 很久以前 xff0c 互联网很小 xff0c 只有几个人可以将它们编入索引 xff0c 这些人收集了所有网站的名称和位置 xff0c 并按页面或印刷书籍中的主题列出了它们 随着万维网网络的发展 xff0c 网络响动
  • 开源 apm_使用开源APM软件:InspectIT

    开源 apm 在当今时代 xff0c 软件系统不断变得越来越复杂 同时 xff0c 客户对响应时间和可用性的期望比以往更高 如您所知 xff0c 性能不佳的服务可能会将客户吸引到竞争对手的产品中 因此 xff0c 系统故障和性能不佳通常会对
  • 啦啦啦啦啦_开放组织读书俱乐部:啦啦队长如何设定方向

    啦啦啦啦啦 我们终于进入了为期7周的开放式组织虚拟图书俱乐部的第7章 xff0c 催化方向 在前几周 xff0c 我们讨论了开放组织的原因和方式 与启动上周的包容性决策的讨论 xff0c 我们一头扎进了 自下而上 的组织模式是什么成分 现在
  • cisco路由器vty_如何使用VTY Shell配置路由器

    cisco路由器vty 最近 xff0c 我写了一篇文章 xff0c 解释了如何使用Quagga路由套件实现开放式最短路径优先 xff08 OSPF xff09 可以使用多个软件套件代替Quagga来实现不同的路由协议 一种这样的选择是自由
  • powerdns_使用PowerDNS为名称服务器轻松配置DNS

    powerdns 几个月前 xff0c 我们要求为新项目提供稳定可靠的域名系统 xff08 DNS xff09 服务器 该项目使用容器进行自动部署 xff0c 每个新环境将在其中生成唯一的随机URL 在对可能的解决方案进行了大量研究之后 x
  • 人工智能革命(下):永生还是毁灭

    导读 xff1a 本系列文章讲述了人工智能革命的爆发以及人类未来的出路 xff0c 由于篇幅较长分为上下两篇 xff0c 原英文载于神奇的网站 WaitButWhy com xff0c 作者Tim Urban还写过一篇有关脑机接口的文章 N
  • rust vs java_为什么我喜欢以Java程序员的身份学习Rust

    rust vs java 自从我正确地学习了计算机或人类这门新语言以来 xff0c 已经很长时间了 也许25年 那是Java语言 xff0c 尽管与此同时我不得不写一点点C xff08 很少 xff09 和JavaScript xff0c
  • git-cola使用教程_使用Git Cola轻松实现Git

    git cola使用教程 Git是一个Linux命令 xff0c 可帮助您管理工作的版本 它已被移植到BSD xff0c macOS xff0c Windows等 它是流行的代码托管服务的基础 xff0c 包括GitLab和NotABug等
  • .net 开发使用什么语言_如何开始使用.NET开发

    net 开发使用什么语言 NET框架由Microsoft在2000年发布 该平台的开源实现Mono在2000年代初一直是争议的中心 xff0c 因为Microsoft拥有 NET技术的多项专利 xff0c 并且可以使用这些专利终止Mono的
  • linux重启命令_3条命令重启Linux(另外4种安全方式)

    linux重启命令 Linux完全有能力运行 xff0c 而不需要数周 xff0c 而是数年 xff0c 而无需重新启动 在某些行业中 xff0c 这正是Linux的功能 xff0c 这要归功于kpatch和kgraph之类的进步 但是 x
  • crazy pony_Pony编程语言简介

    crazy pony 在Wallaroo Labs xff08 我是工程副总裁 xff09 xff0c 我们正在构建以Pony编程语言编写的高性能 xff0c 分布式流处理器 大多数人都没有听说过Pony xff0c 但是对于Wallaro
  • html标记语言图像标记_为什么我喜欢这些标记语言

    html标记语言图像标记 去年大约这个时候 xff0c 我为本专栏文章简要介绍了各种标记语言 语言选择的话题最近出现了好几次 xff0c 所以我认为现在该是时候以我的偏见来重新讨论这个话题了 我在这里解释为什么我更喜欢我的语言 xff0c
  • 无人机开源项目_8个开源无人机项目

    无人机开源项目 编者注 xff1a 本文最初发表于2016年12月 xff0c 现已更新以包含其他信息 在过去的几年中 xff0c 对民用 xff0c 军事和商用无人机的兴趣Swift增长 xff0c 这也带动了制造商社区对开源无人机项目的
  • 开源协议 自主发展_开源推动科学发展的9个故事

    开源协议 自主发展 如今 xff0c 科学可能看起来更像开源 世界各地的研究人员和科学家都在呼吁获得免费许可的数据集 开放获取发布条件 xff1b 以及协作 xff0c 透明的同行评审 他们正在寻找开放源代码原则可以增强数字时代知识生产实践
  • 开源 word 替代_5种Google文档的开源替代品

    开源 word 替代 每天处理大量文档时 xff0c 无论您写什么 xff08 白皮书 xff0c 手册 xff0c 演示文稿 xff0c 不同的市场营销材料 xff0c 合同等 xff09 xff0c 都必须在某个时候 xff08 最常见
  • vscode快捷键 & java/c++环境

    vscode快捷键 amp java c 43 43 环境 vscode快捷键环境配置javac 43 43 个人习惯设置参考 vscode快捷键 快捷键功能Ctrl 43 Shift 43 P 或 F1显示所有命令Ctrl 43 空格触发
  • IIC通信协议(简单易理解版)

    IIC通信协议简介 xff1a IIC xff08 也记为I2C xff0c 读作I 2C xff0c inter integrated Circuit集成电路总线 xff0c 最早是飞利浦在1982年开发设计并用于自己的芯片上 xff0c