I2C总线 | 百度百科
目录
工作原理
特征
数据传输
字节格式
应答响应
时钟同步
模式
快速模式
高速模式
参考资料
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 线(高)。
在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。
如果传输中有主机接收器,它必须通过在从机发出的最后一个字节时产生一个响应,向从机发送器通知数据结束。从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。
时钟同步
所有主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文。数据只在时钟的高电平周期有效,因此需要一个确定的时钟进行逐位仲裁。
当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别,而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。
这样产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。
模式
快速模式
- 1、最大位速率增加到400kbit/s;
- 2、调整了串行数据(SDA) 和串行时钟(SCL )信号的时序;
- 3、快速模式器件的输入有抑制毛刺的功能,SDA 和SCL输入有施密特触发器;
- 4、快速模式器件的输出缓冲器对SDA 和SCL 信号的下降沿有斜率控制功能;
- 5、如果快速模式器件的电源电压被关断,SDA 和SCL 的I/O 管脚必须悬空,不能阻塞总线;
- 6、连接到总线的外部上拉器件必须调整以适应快速模式I2C 总线更短的最大允许上升时间。对于负载最大是200pF 的总线,每条总线的上拉器件可以是一个电阻,对于负载在200pF~400pF 之间的总线,上拉器件可以是一个电流源(最大值3mA )或者是一个开关电阻电路。
高速模式
Hs 模式传输除了不执行仲裁和时钟同步外,与F/S 模式系统有相同的串行总线协议和数据格式。
- 1、Hs 模式主机器件有一个SDAH 信号的开漏输出缓冲器和一个在SCLH 输出的开漏极下拉和电流源上拉电路。这个电流源电路缩短了SCLH 信号的上升时间,任何时候在Hs 模式,只有一个主机的电流源有效;
- 2、在多主机系统的Hs 模式中,不执行仲裁和时钟同步,以加速位处理能力。仲裁过程一般在前面用F/S 模式传输主机码后结束;
- 3、Hs 模式主机器件以高电平和低电平是1:2 的比率产生一个串行时钟信号。解除了建立和保持时间的时序要求;
- 4、可以选择Hs 模式器件有内建的电桥。在Hs 模式传输中,Hs 模式器件的高速数据(SDAH)和高速串行时钟(SCLH )线通过这个电桥与F/S 模式器件的SDA 和SCL 线分隔开来。减轻了SDAH 和SCLH 线的电容负载,使上升和下降时间更快;
- 5、Hs 模式从机器件与F/S 从机器件的唯一差别是它们工作的速度。Hs 模式从机在SCLH 和SDAH输出有开漏输出的缓冲器。SCLH 管脚可选的下拉晶体管可以用于拉长SCLH 信号的低电平,但只允许在Hs 模式传输的响应位后进行;
- 6、Hs 模式器件的输出可以抑制毛刺,而且SDAH 和SCLH 输出有一个施密特触发器;
- 7、Hs 模式器件的输出缓冲器对SDAH 和SCLH 信号的下降沿有斜率控制功能。
参考资料
- 1. 陈小忠 黄宁 赵小侠编著.单片机接口技术实用子程序:人民邮电出版社,2005年09月
- 2. 王卫星主编.单片机原理与接口技术:中国农业出版社,2013.08
- 3. 陈启军,余有灵,张伟等编著.嵌入式系统及其应用:基于CORTEX-M3内核和STM32F系统微控制器的系统设计与开发(第2版):同济大学出版社,2014.02
I2C总线 | 百度百科相关推荐
- 计算机术语fsb是什么意思,fsb(电脑术语:前端总线)_百度百科
fsb (电脑术语:前端总线) 语音 编辑 锁定 讨论 上传视频 前端总线"这个名称是由AMD在推出K7 CPU时提出的概念,但是一直以来都被大家误认为这个名词不过是外频的另一个名称.我们所 ...
- I2C总线原理和应用实例(51单片机和AT24C02的I2C通讯)
1. I2C简介 I2C(Inter-Integrated Circuit:内部集成电路)总线是由Philips公司开发的一种简单.双向二线制同步串行总线.(来源于百度百科) 总结其主要特点如下: 只 ...
- 通俗易懂:I2c总线
I2c: 简介 来源:I2C总线是一种简单.双向二线制同步串行总线.只有两条线 作用:器件间近距离经常性数据通信(器件间:是在一块板子之内) 比如hi3518ev200和外部的sensor传感器接口就 ...
- BootLoader是什么 转载至百度百科
此处为私人收藏文章,建议大家观看百度百科原文:https://baike.baidu.com/item/BootLoader/8733520?fr=aladdin BootLoader 锁定 本词条由 ...
- 什么是字长(百度百科)
链接:https://baike.baidu.com/item/%E5%AD%97%E9%95%BF 在计算机领域,对于某种特定的计算机设计而言,字(word)是用于表示其自然的数据单位的术语,是用来 ...
- SylixOS iMX6平台I2C总线驱动
原理概述 I2C总线驱动概述 I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力,比如起始,停止,应答信号和MasterXfer的实现函数.驱动程序包含初始化I2C总 ...
- 爬取百度百科上中国所有城市的信息
1 # coding=utf-8 2 import xlrd 3 import xlwt 4 import requests 5 import re 6 import json 7 import os ...
- 使用CURL构建爬虫,抓取百度百科内容
实现这个功能的步骤: 首先打开百度百科,在搜索框输入"php"关键词,得到搜索列表,一般都是10条: 然后使用火狐的Firebug分析百度列表的内容组成,主要是html标签,发现去 ...
- SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程
2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...
最新文章
- 浅谈Redis及其安装配置
- ASP.NET MVC4中@model使用多个类型实例的方法
- vc 文本框 只显示下划线_【Axure9百例】36.文本框搜索自动匹配
- python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件
- 643 Maximum Average Subarray I
- Java蓝牙电话_Android mediaPlayer和蓝牙汽车/耳机电话
- ABAP DOI详解(3)
- boost::geometry::detail::overlay::get_relative_order用法的测试程序
- (转)Splay伸展树模板
- 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》
- APUE Chapter 1 - UNIX System Overview
- Spring JDBC和JdbcTemplate CRUD与DataSource示例
- 转载:Pixhawk源码笔记七:姿态控制预览
- Git如何创建本地分支并推送到远程仓库
- Haswell 事务内存相关的一些资源介绍
- 前端——面试(苏小妍)
- php怎么处理背景虚化,图片虚化处理 照片制作成视频|图片背景虚化后制作成视频并添加音乐...
- 知识付费平台的三种商业模式
- 计算机应用精华系统性整理
- [Evolutionary Algorithm] 进化算法简介
热门文章
- Java多线程学习十二:悲观锁和乐观锁的本质||
- mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
- Java基础-通过反射获取类的信息
- 微信小程序云开发之云函数的创建与环境配置
- 使用ConcurrentLinkedQueue惨痛的教训
- ElasticSearch 5.5.3 Docker化部署
- java 关于JDBC和DAO模式使用
- DrawerLayout 使用
- Spring -- 入门,装备集合,自动装配,分散装配,自定义编辑器
- c# Winform应用程序开发规范