IIC总线概况说明

2024-06-19 04:32
文章标签 概况 说明 总线 iic

本文主要是介绍IIC总线概况说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IIC总线,是INTER-IC串行总线的缩写。INTER-IC原文大意是用于相互作用的集成电路,这种集成电路主要由双向串行时钟线SCL和双向串行数据线SDA两条线路组成,由荷兰菲利浦公司于80年代研制开发成功。


  IIC总线在传送数据时其速率可达100kbps,最高速率时可达400kbps,总线上允许连接的设备数主要决定于总线上的电容量,一般设定为400pF以下。I2C总线主要在微处理器的控制之下,因此通常称微处理器是I2C总线的主机。习惯上总称受控设备及功能电路为I2C总线的从机。这种主机与从机之间的连接通常是在总线的输出端,而输出端的电路结构为IIC总线的从机。这种主机与从机之间的连接通常是在总线的输出端,而输出端的电路结构又总是开漏输出或集电极开路输出。 通常数据传送要由主机发出启动信号和时钟信号,向所控从机发出一个地址、一个读写位和一个应答位,其中地址位为7位数据,在实际控制中,一般一次只能传送一个8位数据,并以一个停止位结束。


  在实际应用中,往往被传送的数据位数会超过8位,也就是说总会有多字节传送,这时必须在传送数据地址结束后再传送一个副地址。因此,被传送的字节没有限制,但每一个字节后面必须有一位应答位。应答位通常被设定在低电平,当应答位处于高电平时,指示被传送的数据已结束。


  I2C总线在空闲状态时,也就是不在进行任何操作控制时,数据线SDA和时钟线SCL总是处于高电平输出状态。当操作控制系统时,I2C总线的主机将发出启动信号,使数据线SDA由高电平变为低电平,同时时钟线SCL也发出时钟信号。

  
  I2C总线在传送数据时,总是将最高位数码放在前面作为其特有的传送顺序。在数据传送过程中,如果从机在完成某一操作之前不能接收下一个字节数据,即数据中断,这时时钟线SCL将被位至低电平,从而迫使发送器主机进入等待状态,当接收器从机准备好接收下一个字节时再释放时钟线SCL,继续传送数据。


  在I2C总线的控制系统中,有时从机也可以是多台微处理器,在多台微机同时工作时,它们对总线的控制也由相似于时钟的同步方式进行仲裁,也就是说时钟的同步与仲裁过程是同时进行的,不存在因是主机而有优先权次序。不同速度的从机可以接在同一I2C总线上完成相互间数据的传送。高速方式芯片和普通芯片可以混合于同一I2C总线上。


I2C总线的特点与特性


  I2C总线与传统的PWM调宽脉冲相比较,其最大的特点是串行数据线和时钟线都是双向传输线。I2C总线在实际电路的应用中,两根线各自通过一个上拉电阻连接到电源电压的正极端,当总线空闲时,数据线SDA和时钟线SCL必须保持高电平,同时各接口电路的输出又必须是开路漏极或开路集电极,因此I2C总线的最大特性是在地址信息传输过程中,即可以是主控器也可以是被控器,或既可以是发射器又可以是接收器,从而为挂在总线上的各集成电路或功能模块完成各自的功能提供了极大方便。


  如果I2C总线用作主控器电路即微处理电路,则在总线上将提供时钟传送及初始化的数据传输,而控制数据信息传送的对象、方向及传送的终止也由主控器来决定。在I2C总线上被主控器所寻址的集成电路或功能模块,称之为被控器。在I2C总线上,被控器每接收一个“数码”后都要在数据线上给主控器发送一个识别应答信号,以示完成一个控制功能。因此,I2C总线具有十分灵活的运用性。并且还具有多重主控的能力,如多个作为主控器去控制占用总线的电路,都可以根据在I2C总线上进行数据传送的工作状态,被分为主控发送器、主控接收器、被控发射器、被控接收器。在多重主控能力中,由于总线的仲裁过程,I2C总线的时钟信号将是各试力占用总线的各主控器的时钟信号的同步组合。所谓仲裁是在多个主控器试图同时控制总线时一个裁决过程,它只允许其中的一个主控器继续占用总线,并保证在整个过程中总线上的数据不会被丢失或出错误;所谓同步是将两个或多个器件的时钟信号进行处理。


  I2C总线上的时钟信号是由主控器产生,每个主控器在占用总线传送数据期间都有自已的时钟,因此,在应用中,由一个主控器产生的I2C总线时钟信号只可能被一个低速的被控器或另一个主控器改变。然而,一个低速的被控器可将串行时钟线保持低电平,以延长总线时钟信号的低电平周期,使高速的主控器和低速的被控器达到同步,因此,当总线上正在进行仲裁时,另一个主控器也能改变总线的时钟周期。


I2C总线的控制技术


  由于在I2C总线中的多主控器的控制权总是相互竞争,并且在相互竞争中进行寻址和数据发送,因此总线上没有中央微处理器,也没有任何优先级。在I2C总线上进行数据传输时,所有的主控器都会在串行时钟线上产生自己的时钟信号,而且只有当时钟线上的信号处于高电平时,数据线上的数据才是有效的。因此,当各主控器向总线上输出各不相同的时钟频率时,只有通过仲裁过程,才可使总线上有一个统一的时钟信号。只有总线上的时线上的一种“线与”连接和双向传输特性来实现的。因此,I2C总线的控制基础主要是仲裁过程和时钟同步。


  在总线的仲裁过程中,一旦有一主控器输出一个低电平时钟信号,则串行时钟线将由此变为低电平,直到该主控器时钟信号的高电平状态到来,数据信号才开始传送。在总线上这个时钟线的电平转换,将影响所有主控器的时钟信号低电平周期的计时。事实上,当一个主控器的时钟信号由低电平向高电平转换时,它可能并不会改变串行时钟线的低电平状态,因为此时可能有另一个主控器仍然处于时钟低电平周期。也就是说,在I2C总线控制中,时钟线将由时钟低电平周期最长的主要控器保持为低电平状态,而其他时钟低电平周期较短的主控器则将相继进入时钟高电平等待状态。只有当总线上的所有主控器都结束了时钟低电平周期的计时后,时钟线才被完全释放,即时钟线的状态达到一致高电平状态。

  当所有主控器时钟信号都进入高电平状态后,便开始了各自的时钟信号高电平周期计时。当有一个主控器的时钟高电平状态计时结束时,这个主控器将再次使I2C总线上的时钟线SCL处于低电平状态。从而,在总线的仲裁过程中,使时钟线通过各主控的时钟输出产生一个统一的时钟同步信号成为现实。


  简言之,在多重主控器的I2C总线上,时钟线信号的低电平周期由时钟信号低电平周期最长的主控器决定,而时钟线信号的高电平周期则由时钟信号高电平周期最短的主控器决定。


  在I2C总线中,具有主控能力的器件的数据传输和寻址也是在仲裁中进行的。当有多个主控器企图同时占用总线传输数据时,根据I2C总线的规约它们之间会有一个促裁过程,以决定谁将占用总线。促裁是在时钟线SCL为高电平时,根据数据线SDA的状态进行的。因此,仲裁过程和时钟电平、数据线状态是相辅相成的。也正是这种相辅相成的机制,使在总线仲裁过程中,当有其他主控器在数据线上传送低电平时,发送高电平的主控器将会发现此时数据线上的电平与其输出电平不一致,从而被裁决失去总线的主控权,并立即关闭其数据输出。仲裁过程可以持续诈多位,以对多个主控器正在企图寻址同一电路的事件进行判决。如果一个主控器在发送某一字节期间被裁决失去主控权,则它的时钟信号可继续输出,直到整个字节发送结束为止。如果主控器在其寻址阶段被仲裁决定失去主控权,则该主控器必须立刻进入被控接收器状态,以判决被仲裁决定获得主控权的主控器是否正在对它进行寻址。产生数据的主控器一旦发现内部数据电平与数据总线的实际电平之间有差异,则它的输出将被立即关闭,随即在总线上输出一个高电平(释放总线),这就不会影响获得主控权的主控器所进行的数据传输,总线上的寻址和数据传输等住处也不会丢失因此,I2C总线的仲裁过程使I2C总线上的数据传输得以顺利进行,为多种控制功能的实施奠定了良好的基础。


I2C总线的传输


  I2C总线的传输是一个比较复杂的数码传输,它主要是以8bit的字节进行数据传输,而传输时又总有一个时钟脉冲相对应,因此,I2C总线的数据传送实质上是个脉冲串的传输,其传输格式如图1-14所示。图中1为字节传送完成接收器内产生中断信号,2为当处理中断服务时时钟线保持低电平。


  在I2C总线上,每一个数据中,逻辑“0”和逻辑“1”的信号电平取决于相应的正端电压。I2C总线在进行传送时,在时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。这就保持了数据传输的有效性。


  在时钟线保持高电平期间,由于数据线由高电平向低电平的变化是一种稳定的状态,所以就将其状态规定为起始条件;而当时钟线保持高电平期间,数据线是由低电平向高电平变化,则规定为停止条件。只有I2C总线中主控器产生起始条件和停止条件两个信号时,总线才会被认为处于“忙”态或“闲”态,从而准确控制了比特位的传送。


  在I2C总线上,比特位传送字节的后面都必须跟随一位确认位,或称跟随一位应答位。并且数据是以最高有效位首先发出。但是,当正在进行数据传输的接收器收到完整的一个数据字节后,有可能还要完成一些其他的工和,如处理一个内部中断服务等。在这种情况下就有可能无法立刻接收另一字节的数据,因而,此时接收器可以通过总线上的时钟保持为低电平,从而使发送器进入等待状态,直到接收器准备好接收新的数据,而接收器通过释放时钟线使数据传输继续进行,正是I2C总线能允许其他总线的数据格式进行传输,才有一个特殊寻址开始的信息传输,以及通过对总线产生一个停止信号进行停止。


  当一个字节的数据能够被总线上的一个已被寻址的接收器接收后,总线上的一般要产生一个确认信号,并在这一位时钟信号的整个高电平期间,使数据保持稳定的低电平状态,从而完成应答确认信号的输出。确认信号通常是指起始信号和停止信号,如果这个信息是一个起始字节,或是总线寻址,则总线上不允许有应答信号产生。如果因某种特殊情况,被控器不对应的被控寻址进行确认回答,则必须将数据线置于高电平,然后主控器可以通过产一个停止信号来结束总线的数据传输。如果被控接收器对被控寻址做出了确认应答,但在数据传输的一段时间以后,又无法继续接收更多的数据,则主控器也将停止数据的继续传送。因此,被控接收器可以通过对无法接收的第一个数据字节不产生确认应答信号来通知主控器,即在相应的应答信号时钟位上将数据线置于高电平,主控器则在总线上产生停止信号,从而结束数据的传送。


  注:1-7 为地址位;8为读/写位;9为应答位

  在I2C总线上,它的数据传输总有一些规约要求,例如,起始信号的后面总有一个被控器的地址。被控器的地址一般规定为7bit的数据,数码中的第8比特是数据的传输方向位,即读/写位。一个完整的I2C总线传输格式如图1-15所示。
 

  在读/写位中,如果是“0”,则表示主控器发送数据,也就是执行“写”的功能;如果是“1”,则表示主控器接收数据,也就是执行“读”的功能。而数据的每次传输总是随主控器产生的停止信号而结束。而I2C总线中,有时主控器希望总占用总线,并不断进行数据传输,因此,在设定规约时,可以在不首先产生信号的情况下,再次发出起始信号对另一被控器进行寻址。为解决这一问题,可以采用多种读/写组合形式来进行总线的一次数据传输。在多种读/写组合形式中,主要有三种措施,其中:
       1.主控发送器向被接收器发送数据,数据传输方向在整个传输过程中不变。

       2.主控器在第一个字节后立即从被控制器读数据,在首位确认应答信号产生后,主控发送器变成主控接收器,而被接收器变成被控发送器,同时首位应答信号仍由被控器产生,使停止信号总是由主控器产生。

      3.数据传输过程中的复合格式需要改变传送方向时,起始信号和被控器地址都会被重复产生一次,但两次的读/写方向正好反相。

  总之在I2C总线上,通过接口电路收到起始信号后,必须复位它们的总线逻辑,以使被控制器地址的传输得以预处理,从而完成对各不相同功能电路的控制

 

总结一下:

     1、无论读与写,都是在时钟线为低时把数据送到数据总线上,在高时采样数据,把数据锁存到内部,所以读之前先把时钟线拉低,做好准备(数据线为高表示释放数据线),为接下来读数据做好准备。也就是时钟信号为低时,数据线上的高低电平才允许变化,时钟信号为高时,数据总线上的数据必须保持稳定。

    2、起始信号产生后,总线为被占用状态(SDA拉低);终止信号产生后,总线为空闲状态(SCL被释放了)。

    3、接收器件收到一个完整的数据字节后有可能需要完成一些其它工作,如处理中断,可能无法立刻接收下一字节,这时从机将SCL拉成低电平,从而使主机处于等待状态。直到从机准备好接收下一字节,再释放SCL线使之为高,从而数据传送可继续进行。数据线上的数据是在时钟信号为高时被采样。

    4、当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一结束信号。这个信号是由对从机的非应答来实现的。然后,从机释放SDA线,以允许主机产生终止信号。

 

 

这篇关于IIC总线概况说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074007

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

电子电气架构---私有总线通信和诊断规则

电子电气架构—私有总线通信和诊断规则 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、

【机器人工具箱Robotics Toolbox开发笔记(二十)】机器人工具箱SerialLink I类函数参数说明

机器人工具箱中的SerialLink表示串联机器人型机器人的具体类。该类使用D-H参数描述,每个关节一组。SerialLink I类包含的参数如表1所示。 表1 SerialLink I类参数 参  数 意    义 参  数 意    义 plot 显示机器人的图形表示 jacobn 工具坐标系中的雅可比矩阵 plot3D 显示机器人3D图形模型 Jacob_dot