目录

工作原理

特征

数据传输

字节格式

应答响应

时钟同步

模式

快速模式

高速模式

参考资料


I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。 [1]

工作原理


SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。 [2]

特征


I2C总线特点可以概括如下:

  • (1)在硬件上,I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为I2C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。
  • (2)I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
  • (3)I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时间。
  • (4)连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
  • (5)总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。 [3]

数据传输


字节格式


发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。

应答响应


数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。

在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

I2C总线数据传输和应答

通常被寻址的接收器在接收到的每个字节后,除了用CBUS 地址开头的数据,必须产生一个响应。当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。

如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机接收器,它必须通过在从机发出的最后一个字节时产生一个响应,向从机发送器通知数据结束。从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。

时钟同步


所有主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文。数据只在时钟的高电平周期有效,因此需要一个确定的时钟进行逐位仲裁。

时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平。但是如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此SCL 线被有最长低电平周期的器件保持低电平。此时低电平周期短的器件会进入高电平的等待状态。

当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别,而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。

这样产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

模式


快速模式


快速模式器件可以在400kbit/s 下接收和发送。最小要求是:它们可以和400kbit/s 传输同步,可以延长SCL 信号的低电平周期来减慢传输。快速模式器件都向下兼容,可以和标准模式器件在0~100kbit/s 的I2C 总线系统通讯。但是,由于标准模式器件不向上兼容,所以不能在快速模式I2C 总线系统中工作。快速模式I2C 总线规范与标准模式相比有以下特征:

高速模式


高速模式(Hs 模式)器件对I2C 总线的传输速度有巨大的突破。Hs 模式器件可以在高达3.4Mbit/s 的位速率下传输信息,而且保持完全向下兼容快速模式或标准模式(F/S 模式)器件,它们可以在一个速度混合的总线系统中双向通讯。

Hs 模式传输除了不执行仲裁和时钟同步外,与F/S 模式系统有相同的串行总线协议和数据格式。

高速模式下I2C 总线规范如下:

参考资料


I2C总线 | 百度百科相关推荐

  1. 计算机术语fsb是什么意思,fsb(电脑术语:前端总线)_百度百科

    fsb (电脑术语:前端总线) 语音 编辑 锁定 讨论 上传视频 前端总线"这个名称是由AMD在推出K7 CPU时提出的概念,但是一直以来都被大家误认为这个名词不过是外频的另一个名称.我们所 ...

  2. I2C总线原理和应用实例(51单片机和AT24C02的I2C通讯)

    1. I2C简介 I2C(Inter-Integrated Circuit:内部集成电路)总线是由Philips公司开发的一种简单.双向二线制同步串行总线.(来源于百度百科) 总结其主要特点如下: 只 ...

  3. 通俗易懂:I2c总线

    I2c: 简介 来源:I2C总线是一种简单.双向二线制同步串行总线.只有两条线 作用:器件间近距离经常性数据通信(器件间:是在一块板子之内) 比如hi3518ev200和外部的sensor传感器接口就 ...

  4. BootLoader是什么 转载至百度百科

    此处为私人收藏文章,建议大家观看百度百科原文:https://baike.baidu.com/item/BootLoader/8733520?fr=aladdin BootLoader 锁定 本词条由 ...

  5. 什么是字长(百度百科)

    链接:https://baike.baidu.com/item/%E5%AD%97%E9%95%BF 在计算机领域,对于某种特定的计算机设计而言,字(word)是用于表示其自然的数据单位的术语,是用来 ...

  6. SylixOS iMX6平台I2C总线驱动

    原理概述 I2C总线驱动概述 I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力,比如起始,停止,应答信号和MasterXfer的实现函数.驱动程序包含初始化I2C总 ...

  7. 爬取百度百科上中国所有城市的信息

    1 # coding=utf-8 2 import xlrd 3 import xlwt 4 import requests 5 import re 6 import json 7 import os ...

  8. 使用CURL构建爬虫,抓取百度百科内容

    实现这个功能的步骤: 首先打开百度百科,在搜索框输入"php"关键词,得到搜索列表,一般都是10条: 然后使用火狐的Firebug分析百度列表的内容组成,主要是html标签,发现去 ...

  9. SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程

    2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...

最新文章

  1. 浅谈Redis及其安装配置
  2. ASP.NET MVC4中@model使用多个类型实例的方法
  3. vc 文本框 只显示下划线_【Axure9百例】36.文本框搜索自动匹配
  4. python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件
  5. 643 Maximum Average Subarray I
  6. Java蓝牙电话_Android mediaPlayer和蓝牙汽车/耳机电话
  7. ABAP DOI详解(3)
  8. boost::geometry::detail::overlay::get_relative_order用法的测试程序
  9. (转)Splay伸展树模板
  10. 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》
  11. APUE Chapter 1 - UNIX System Overview
  12. Spring JDBC和JdbcTemplate CRUD与DataSource示例
  13. 转载:Pixhawk源码笔记七:姿态控制预览
  14. Git如何创建本地分支并推送到远程仓库
  15. Haswell 事务内存相关的一些资源介绍
  16. 前端——面试(苏小妍)
  17. php怎么处理背景虚化,图片虚化处理 照片制作成视频|图片背景虚化后制作成视频并添加音乐...
  18. 知识付费平台的三种商业模式
  19. 计算机应用精华系统性整理
  20. [Evolutionary Algorithm] 进化算法简介

热门文章

  1. Java多线程学习十二:悲观锁和乐观锁的本质||
  2. mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
  3. Java基础-通过反射获取类的信息
  4. 微信小程序云开发之云函数的创建与环境配置
  5. 使用ConcurrentLinkedQueue惨痛的教训
  6. ElasticSearch 5.5.3 Docker化部署
  7. java 关于JDBC和DAO模式使用
  8. DrawerLayout 使用
  9. Spring -- 入门,装备集合,自动装配,分散装配,自定义编辑器
  10. c# Winform应用程序开发规范