I2C协议浅谈

作者: Ben2Feng | 来源:发表于2017-02-21 17:55 被阅读180次

导语:此为个人对I2C总线协议的一点总结,如若想深度了解I2C总线协议可参考相关文档

I2C总线实用性

  • 简单的双向两线总线,硬件效益最大、电路简单、硬件兼容性好。
  • 真正的多主机总线,数十个IC可连接在一路I2C总线接口上通信。

I2C接口电路结构

**标准模式器件和快速模式器件连接到 I2C 总线**
  • 一个OD门输出和一个BUFFER门输入连接到一起构成了SDA或者SCL接口。
  • I2C协议规定这种与门结构构成的电路总线空闲时电平为高电平。

I2C通信遵循的协议

两根线的I2C总线如何使上面的多主机实现正常通信使用以下方式来解决

  • 时钟同步的握手机制,可以使主、从机器通信数据正确。
  • 仲裁机制,可以使任意时刻只有一个主机获得I2C总线使用权。
  • 从机地址码,给了通信时寻找指定设备的钥匙。

1、SCL高电平期间,SDA值稳定的情况

  • 正常传输数据期间SCL高电平期间SDA数据保持稳定,SCL低电平期间,SDA数据允许修改,如下图。
**I2C总线的位传输**

2、SCL高电平期间,SDA值变化的几种情况

①起始和停止条件产生时

起始和停止条件时序

②两主机仲裁时

  • 当 SCL 线是高电平时,仲裁在 SDA 线发生,这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同;
  • 下图显示了两个主机的仲裁过程,当然,可能包含更多的内容 (由连接到总线的主机数量决定 )此时,产生 DATA1 的主机的内部数据电平与 SDA 线的实际电平有一些差别,如果关断数据输出,这就意味着总线连接了一个高输出电平,这不会影响由赢得仲裁的主机初始化的数据传输。
两主机仲裁

3、时钟同步和应答

I2C总线上有许多主机,每一个时钟频率可能不一样。在某一个主机发起并获得I2C总线通信时需要有时钟同步机制

①仲裁过程中的时钟同步

仲裁过程中的时钟同步
  • 所有主机在 SCL 线上产生它们自己的时钟来传输 I2C 总线上的报文。数据只在时钟的高电平周期有效。因此 需要一个确定的时钟进行逐位仲裁。
  • 时钟同步通过线与连接 I2C 接口到 SCL 线来执行,这就是说 SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平, 它会使 SCL 线保持这种状态直到到达时钟的高电平 (见
    图 )。但是 如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变 SCL 线的状态。 因此SCL 线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。
  • 当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平之后,器件时钟和 SCL线的状态没有差别,而且所有器件会开始数它们的高电平周期 首先完成高电平周期的器件会再次将 SCL线拉低。
  • 这样,产生的同步 SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

②应答机制

  • 每次传输完一个8位的字节后,I2C上需要产生一个应答信号(SCL高电平,SDA低电平)。
I2C总线相应

③从机地址格式

**7位从机地址格式**
  • 数据的传输遵循图所示的格式,在起始条件 (S) 后,发送了一个从机地址。这个地址共有 7 位,紧接着的第 8 位是数据方向位 (R/ W)-- 0 表示发送(写),1 表示请求数据 (读)。
  • 数据传输一般由主机产生的停止位(P)终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读 写格式结合。
主机 发送器用 7 位地址寻址从机接收器 传输方向不变
在第一个字节后主机立即读从机
复合格式

相关文章

  • I2C协议浅谈

    导语:此为个人对I2C总线协议的一点总结,如若想深度了解I2C总线协议可参考相关文档 I2C英文权威手册 I2C中...

  • 第019课 I2C协议详解及裸机程序分析

    第001节_I2C协议与EEPROM I2C协议 I2C在硬件上的接法如下(图19-1)所示,主控芯片引出两条线S...

  • I2C 协议

    I2C协议概述 I2C 协议由两根信号线组成,分别是 SDA 和 SCL。分别代表 Data 和 Clock。 其...

  • I2C接口

    示波器分析I2C时序波形图I2C死锁原因及解决方法很清晰的解读i2c协议硬件IIC和 模拟IIC1.I2C协议2条...

  • 59/70 I2C通讯详解

    在使用单片机的过程中,I2C 通信可以说是最被广泛使用和采纳的协议之一,采用 I2C 协议可以占用更少的资源,链接...

  • I2C协议详解及裸机程序分析

    版权声明:本文为小斑马学习总结文章,技术来源于韦东山著作,转载请注明出处! 一、I2C协议与EEPROM I2C协...

  • linux驱动之i2c框架

    一、前言 I2C总线 是一种常用的总线协议,在设备中经常看到,比如 sensor、陀螺仪等都是使用 I2C总线。而...

  • I2C协议

    关键词 inter ic,芯片之间的通信的意思 发明公司,飞利浦 SDA SCL 线比较少,协议相对复杂 I2C ...

  • 运动控制器13:STM32的I2C模块

    I2C模块功能知识点梳理 简介 多主机 用于控制I2C的时序,协议,仲裁和定时 标准和快速两种模式 CRC码生成和...

  • 2018-04-10

    一、I2C协议要点 1、接口方式简单,两条线(SCL和SDA...

网友评论

    本文标题:I2C协议浅谈

    本文链接:https://www.haomeiwen.com/subject/mreuwttx.html