I2C协议学习

        I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线式串行总线,常用于微控制器与外设之间的连接。

一、概述

        以下是 I2C 总线的一些特性:

  • 只需要两条总线;一条串行数据线 (SDA) 和一条串行时钟线 (SCL)。
  •  连接到总线的每个设备都可以通过唯一的地址进行寻址,并且始终存在简单的主/从关系;master可以作为主发送器或主接收器运行。
  • 没有严格的波特率要求,例如 RS232,主机生成总线时钟
  • 多主机总线,包括冲突检测和仲裁,以防止两个或多个主机同时启动数据传输时数据损坏。
  • 串行、面向 8 位的双向数据传输在标准模式(standard mode)下最高可达 100 kbit/s,在快速模式(fast mode)下最高可达 400 kbit/s,在快速模式 Plus 下最高可达 1 Mbit/s ,或在高速模式(high-speed mode)下高达 3.4 Mbit/s。
  • 在超快速模式下,面向 8 位的串行单向数据传输速度高达 5 Mbit/s。
  • 片上滤波可抑制总线数据线上的尖峰信号,以保持数据完整性。
  •  可连接到同一总线的IC 数量仅受最大总线电容的限制。 在某些条件下可能允许更大的电容。

        一个I2C应用如下:

二、I2C协议

 1、标准模式与快速模式协议

        两线一一串行数据(SDA)和串行时钟(SCL)线在连接到总线的器件间传输信息。每个器件都有一个唯一的地址识别(无论是微控制器、LCD驱动器、存储器或键盘接囗),而且都可以作为一个发送器或接收器(由器件的功能决定),很明显,LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机,主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时,任何被寻址的器件都被认为是从机。

        SDA和SCL都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压,当总线空
闲时,这两条线都是高电平

        连接到总线的器件输出级必须是漏极开路集电极开路才能执行线与的功能。

        I2C 总线规范的强制要求和可选部分的使用以总结如下:

1) 数据有效性

        在时钟的高电平期间(SCL为高),SDA 线上的数据必须是稳定的。 只有当 SCL 线上的时钟信号为 LOW 时,数据线的 HIGH 或 LOW 状态才能改变。 每一个时钟脉冲传输一个数据位。

2)启动和停止条件

        所有传输都以 START (S) 开始,并以 STOP (P) 结束。

  • 启动条件:SCL为高电平时,SDA 线上的高电平到低电平转换。
  • 停止条件:SCL为高电平时,SDA 线上的低电平到高电平转换。

 

        START 和 STOP 条件始终由主机生成。 在 START 条件之后,总线被认为是忙碌的。 在 STOP 条件之后的某个时间,总线被认为再次空闲。

        如果生成重复的 START (Sr) 而不是 STOP 条件,则总线保持忙碌。 在这方面,START (S) 和重复 START (Sr) 条件在功能上是相同的。

3)字节格式

        SDA 线上的每个字节都必须是 8 位。 每次传输可传输的字节数不受限制。 每个字节后必须跟一个确认位(ack)。 数据首先以最高有效位 (MSB)传输。 如果从机在执行其他功能(例如服务内部中断)之前无法接收或发送另一个完整字节的数据,则它可以将时钟线 SCL 保持为低电平以强制主机进入等待状态。 当从设备准备好接收另一个字节的数据并释放时钟线 SCL 时,数据传输将继续。

4)确认位

        确认位(ACK)在每个字节之后发送。确认位允许接收器通知发送器该字节已成功接收并且可以发送另一个字节。主机生成所有时钟脉冲,包括确认位的第九个时钟脉冲。

        确认信号定义如下:发送器在确认时钟脉冲期间释放 SDA 线,因此接收器可以将 SDA 线拉低,并在该时钟脉冲的高电平期间保持稳定的低电平。还必须考虑建立和保持时间。

        当 SDA 在第 9 个时钟脉冲期间保持高电平时,这被定义为未确认信号。然后,主机可以生成一个停止条件来中止传输,或者生成一个重复的 START 条件来开始新的传输。有五个条件会导致 未确认信号(NACK) 的产生:

  1. 发送地址的总线上没有接收器,因此没有设备响应确认。
  2. 接收器无法接收或发送,因为它正在执行一些实时功能,还没有准备好开始与主设备的通信。
  3.  在传输过程中,接收方得到了它不理解的数据或命令。
  4. 在传输过程中,接收方不能再接收任何数据字节。
  5. 主接收器必须向从发送器发出传输结束信号。

5)时钟同步

        两个主机可以同时在空闲总线上开始传输,并且必须有一种方法来决定哪一个控制总线并完成其传输。 这是通过时钟同步和仲裁完成的。

        在单主系统中,不需要时钟同步和仲裁。

        使用 I2C 接口与 SCL 线的线与连接来执行时钟同步

        这意味着 SCL 线上的高电平到低电平转换会导致相关主设备开始对它们的低电平周期进行计数,并且一旦主时钟变为低电平,它就会将 SCL 线保持在该状态,直到达到时钟高电平状态。 但是,如果另一个时钟仍在其低电平周期内,则该时钟从低电平到高电平的转换可能不会改变 SCL 线的状态。 因此,SCL 线由具有最长低电平周期的主机保持低电平。 具有较短低电平周期的主机在此期间进入 高电平的等待状态。

        当所有相关的主机都计完它们的低电平周期时,时钟线被释放并变为高电平。 这样主时钟和 SCL 线的状态之间就没有区别了,所有的主时钟开始计数它们的高电平周期。 第一个完成其高电平周期的主机再次将 SCL 线拉低。 这样,一个同步的SCL时钟就产生了,它的低电平周期由时钟低电平周期最长的主机决定,高电平周期由时钟高电平周期最短的主机决定

6)仲裁

        仲裁与同步一样,是指仅当系统中使用多个主设备时才需要的协议的一部分。从设备不参与仲裁程序。 只有当总线空闲时,主机才可以开始传输。

        两个主设备可以在 START 条件的最小保持时间内生成一个 START 条件,从而在总线上产生一个有效的 START 条件。然后需要仲裁来确定哪个主机将完成其传输。

        仲裁是一位一位进行的。在每一位进行传输期间,当 SCL 为高电平时,每个主机都会检查 SDA 电平是否与其发送的电平相匹配。这个过程可能需要很多位。只要传输相同,两个主机实际上可以无误地完成整个事务。第一次主机尝试发送高电平,但检测到 SDA 电平为低电平时,主机知道它已失去仲裁并关闭其 SDA 输出驱动器。另一个主节点继续完成其事务。在仲裁过程中不会丢失任何信息。失去仲裁的主机可以生成时钟脉冲,直到失去仲裁的字节结束,并且必须在总线空闲时重新开始其事务。如果主机还包含从机功能并且在寻址阶段失去仲裁,则获胜的主机可能正在尝试对其进行寻址。因此,丢失的主设备必须立即切换到其从设备模式。

         由于 I2C 总线的控制完全取决于竞争主机发送的地址和数据,因此没有中央主机,也没有总线上的任何优先级顺序

7)读写控制

        在 START 条件 (S) 之后,发送从地址。 该地址有 7 位长,后跟第 8 位,即数据方向位 (R/W)——“0”表示传输 (WRITE),“1”表示请求数据 (READ)

         数据传输总是由主机产生的停止条件 (P) 终止。 但是,如果主机仍然希望在总线上进行通信,它可以生成重复的 START 条件 (Sr) 并寻址另一个从机,而无需首先生成 STOP 条件。 在这样的传输中,读/写格式的各种组合都是可能的。

2、 Ultra Fast-mode 协议

        UFm(Ultra Fast-mode) I2C 总线是一种 2 线串行总线,可在高至 5 MHz 的频率范围内单向传输数据。当速度大于 1 MHz 时,驱动 LED 控制器和其他不需要反馈的设备最为有用。

         UFm I2C 总线协议基于标准 I2C 总线协议,该协议由 START、从地址、命令位、第九个时钟和一个停止位组成。命令位仅为“写”,第 9 个时钟上的数据位被驱动为高电平,由于总线的单向特性而忽略 ACK 周期

        2 线驱动器由 UFm 串行时钟 (USCL) 和串行数据 (USDA) 组成。从设备包含一个唯一地址(无论是微控制器、LCD 驱动器、LED 控制器还是 GPO)并且仅作为接收器运行。 LED驱动器可能只是一个接收器,UFm可以支持,而存储器可以接收和传输数据,UFm不支持。 UFm I2C 总线也不支持多主机功能。在 UFm 中,主机是唯一在总线上启动数据传输并生成时钟信号以允许传输的设备。寻址的所有其他设备都被视为从设备

        其规范要求如下:

         USDA和USCL都是单向线路,当总线空闲时,两条线都被输出级的上晶体管拉其基本传输条件与标准模式一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1136 迎接仪式

P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了。为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字。一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的大字,但是领队突然…

云服务器 VNC 远程连接

此服务器买来是为了搭建IC EDA云的,因此选用的是centOS 6的环境,对各EDA软件兼容较好。本人手头拮据,因此买的是腾讯云活动期间的云服务器,只能说够用吧。 一、桌面安装 在云服务器控制台登陆上远程主机,依次执行下列…

Python自动化测试框架有哪些?

作者 | KITTY GUPTA 译者 | 张健欣 令开发者万分高兴的是,开发自己的测试框架的日子终于结束了。以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架。一个测试框架应…

面试题——4种数组去重的方法

数组去重或者其衍生作为笔试题或者机试题出现的几率也是很大的,写出的方法越多,则让面试官觉得你思维越开阔,那么成功的几率当然就大了。 废话不多说,下面来说说下面我整理的4中数组去重的方法 方法一: findInArr方法s…

Demosaic算法学习

一、概述 由于成本和面积等因素的限定,CMOS图像传感器在成像时,感光面阵列前通常会有CFA (color filter array),CFA过滤不同频段的光,因此,Sensor的输出的RAW数据信号包含了3个通道的信息。 CFA的排列方式一般有以下几种: 现在应用最广泛的是Bayer CFA。…

UML中关联,聚合,组合的区别及C++实现

类间关系 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连…

7. B+树

一、B树是应文件系统所需而产生的一种B树的变形树 1. 定义(使用阶数m来定义) 除了根结点外,其他非终端结点最多有m个关键字,最少有⌈m/2⌉个关键字结点中的每个关键字对应一个子树所有的非终端结点可以看成是索引部分,…

Retinex理论及算法学习

为了能够获取最大的信息量,达到更好的图像增强效果。了解人类视觉系统的特性和图像的属性是准确地选择图像增强方法的必备知识。 一、人眼视觉系统 1、人眼成像 人的眼睛是一个非常复杂的器官。一般来说它就是一个球体,平均直径约为20mm,内壁是一层视网膜(retina),前部…

Linux编程 3 (初识bash shell与man查看手册)

一.初识bash shell 1.1 启动 shell GNU bash shell 能提供对Linux系统的交互式访问。通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置。etc/passwd文件包含了所有系统用户列表以及每个用户的基本配置信息。      如上图:最后一个字段&…

go微服务框架go-micro深度学习(一) 整体架构介绍

产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线…

(转载)项目实战工具类(一):PhoneUtil(手机信息相关)

项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1、获取手机系统版本号 2、获取手机型号 3、获取手机宽度 4、获取手机高度 5、获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6、…

HDR 成像技术学习(三)—— LOFIC

HDR 成像技术学习(一) HDR 成像技术学习(二) 我们拍摄的照片来自传感器上的像素,它们将光处理为电信号,组合起来输出画面。当捕捉对象亮度过强,大量电荷挤在单个像素内,生成的图像就会过曝。 LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容…

097实战 关于ETL的几种运行方式

一:代码部分 1.新建maven项目 2.添加需要的java代码   3.书写mapper类 4.书写runner类 二:运行方式 1.本地运行 2.集群运行 3.本地提交集群运行 三:本地运行方式 1.解压hadoop到本地 2.修改配置文件HADOOP_HOME 3.解压common的压缩包 4.将压…

使用pssh进行并行批量操作

假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是不是同步并行执行.,这类工具比如 pdsh,mussh&#…

图像清晰度评价函数

概述 图像清晰度是用来指导调焦机构找到正焦位置的评价函数。理想的清晰度评价曲线如下图所示,其中P 是评价函数最大值的位置,其对应正焦位置,P1 和P2 为正焦位置焦前和焦后采集到图像的清晰度评价结果。 为了指导调焦机构找到正焦位置,清晰度曲线须具有以下特点: 单…

Linux下读写芯片的I2C寄存器

Linux下读写芯片的I2C寄存器 2012-01-10 11:40:18 标签:Linux 寄存器 驱动 读写 I2C 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/76096…

列表和表格---学习笔记02

第7章 列表和表格 7.1 有序列表<ol type"A"><li>这里是第1个li</li><li>这里是第2个li</li><li>这里是第3个li</li></ol> ol属性&#xff1a;type : 数字(1),大小写字母(A,a),大小写罗马数字(I,i)start: "起始…

CMOS图像传感器 —— ISOCELL

最近,外媒曝光了三星最新的CIS传感器路线图,路线图显示,三星在2亿像素之外已经规划2025年推出576MP像素的传感器,也就是5亿7千6百万像素。 若5.76亿像素的传感器推出,意味着手机传感器可媲美中高端单反水平了。三星没有提及这个5.76亿像素的传感器是怎样实现的。因…

YUV图像

YUV420P&#xff0c;Y&#xff0c;U&#xff0c;V三个分量都是平面格式&#xff0c;分为 I420 和 YV12 。 I420 格式和 YV12 格式的不同处在U平面和V平面的位置不同。在I420格式中&#xff0c;U平面紧跟在Y平面之后&#xff0c;然后才是V平面&#xff08;即&#xff1a;YUV&…

色调映射(Tone Mapping)

一、概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普通的高动态范围图像小得多。。因此,色调映…