• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 调查报告 > 正文

    2C总线协议及其软件的实现'>,,,,,,,,,,,,,,,,,,,,,,,,I2C总线协议及其软件的实现_I²C总线

    来源:六七范文网 时间:2019-04-06 04:51:26 点击:

      在电子消费品、通讯及工业电子等应用领域,许多看似不相关的设计常常有许多相似之处,比如几乎每个系统都有这几个部分组成:处理器、数据存储介质及应用专用电路,如广播、电视中用到的数字调谐器、信号处理器,或支持语音拨号的电话中需要的DTMF发生器等。而它们之间的数据传递通常都有距离短、流量小、突发性等特点,如何利用这些共性,使电路的设计简单而性能稳定呢?本文介绍由Philips公司提出的I2C总线很好地解决了这个问题。 I2C总线为两线双向串行传输总线,它为模块之间的数据传递提供了一种方便有效的方法,特别适合应用于有很多模块、彼此之间非频繁数据传递的设计中。文中介绍了I2C总线协议,并给出了其软件的实现方法,最后提出了硬件连接方法中应注意的问题。
      
      I2C总线协议
      
      1.协议概述
      I2C总线仅占用系统的两个I/O口,一条作为串行数据线SDA,一条作为串行时钟线SCL,线上外加上拉电阻,在不传数据时SCL、SDA总保持高电平。连在每一个总线上的器件都有一个唯一地址,它们彼此之间只有简单的Master/Slaver关系:
      Master:控制时钟线,产生启动信号、时钟信号、停止信号。控制线上的发送和接收节奏。
      Slaver:处于从机地位,按SCL线上的时钟接收SDA线上的数据或发送数据到SDA线上。
      它是个真正的多主控总线方式,如果有两个或两个以上Master同时有数据传送请求时,通过检测发出去的数据是否和SDA线上的数据相同来判断是否发生冲突,数据不同将放弃此次传输,通过这种冲突检测、仲裁机制可以防止数据冲突。
      
      I2C总线要求所有连在I2C总线上的器件都必须是开漏或开集输出,用以实现线与的功能,可使不同Master产生的时钟同步,也解决Master和Slaver之间速度不匹配问题。I2C总线的传输速度:标准模式可达100kbit/s,快速模式可达400kbit/s,高速模式可达3.4Mbit/s。
      
      2.协议规范
      I2C总线数据传输时序图见图1、图2,其中,图1为写模式时序,图2为读模式时序。其协议规定:数据以字节为单元,每字节8位,SCL的每一时钟脉冲发送一位,先高位后低位。应答位紧跟每个字节之后。接收数据是在时钟的高电平期采样数据,所以改变SDA线上的数据必须在时钟的低电平期,数据在时钟的高电平期应保持不变,正是数据传输的这个特点,I2C总线利用SCL高电平时改变SDA来作为开始(start)和结束(stop)命令。
      开始命令信号(start):在SCL为高电平时,产生一个1→0跳变,表示开始一个数据传输周期。
      结束命令信号(stop):在SCL为高电平时,产生一个0→1跳变,表示结束一个数据传输周期。
      从机地址(Slaver address):每个I2C总线上的器件都有唯一的地址。这个地址分固定部分和可编程部分,同类器件的固定地址相同,因为有可编程部分,所以允许有多个同类或相同器件放在同一总线上。从机地址必须紧跟start命令信号之后,与读写指示位组成一个字节发送。I2C线上所有处于从机地位的器件在接到start信号后的第一字节后检查是否和自己的地址相符,如果相符发送应答信号(在SCL的第9个时钟维持SDA线为低电平),不符,仍保持自己SDA口输出为高。I2C总线也支持10位地址,本文主要讨论7位地址方式。
      
      读写位(R/W):读操作,此位置1;写操作,此位置0。
      应答位(ACK):每字节后紧跟的第一个时钟对应的SDA数据,这个数据也必须在时钟高电平期维持不变。
      无论是读模式还是写模式都是相对Master来定义的。
      当Master处于写模式:即Master要向Slaver送数据。Master先发start信号;紧跟着发送7位Slaver地址和读写指示位0;Slaver确认地址和自己相符后置应答位SDA为低电平,并判断读写位,准备接收数据,若地址不符置高电平;Master检查应答位为高,发送stop信号结束此次数据传输周期, 如果为低,继续发送数据,Slaver每接收一字节数据,发送一低应答信号,Master检查到低应答信号后才继续发送下一个字节数据,否则发送stop信号停止发送;当Master数据发送完毕后,也会自动发送stop信号停止此周期传送。时序见图1。
      
      当Master处于读模式:即Master要读Slaver数据。Master先发start信号;紧跟着发送7位Slaver地址和读写指示位1;Slaver确认地址和自己相符后置应答位SDA为低电平,并判断读写位,准备数据发送,若地址不符置应答位为高电平;Master检查应答位为高,发送stop信号结束此次数据传输周期,如果为低,继续发送时钟信号,Slaver按SCL上的时钟将数据放到SDA上,每当Master接收到一字节数据后,发送低应答位给Slaver,Master要停止接收,发送高应答位给Slaver,告诉Slaver不再接收数据,然后发stop信号结束此次数据传输周期。时序见图2。
      
      I2C总线接口的软件实现
      
      本文给出的I2C总线接口程序流程图为在I2C总线上处于Master地位的总线接口程序。程序入口参数:HDADDS(从机地址右移1位)、 FLRW(读写标志位)、REF(存放发送/接收参数在RAM中存放的首地址,数据由高地址到低地址读取或存放)、 SDRVCT(发送参数的个数,不包括HDADDS)。图3为程序流程图,在本刊的网站上给出了具体程序,供读者参考。
      
      I2C总线硬件设计
      
      在硬件电路设计中应注意以下几点:
      (1)I2C总线驱动能力和连在总线上的器件的等效电容有关,也就是说所有连在总线上的器件产生的电容负载不能超过400pF。
      (2)在I2C总线上,如果所接器件的I/O口的输入电平逻辑判断固定为1.5V和3V,与该芯片的供电电压无关,则该器件在I2C总线上可独立供电,此时I2C的SDA和SCL经上拉电阻连接到5V±10%;如果所接器件的I/O口的输入电平逻辑判断和该芯片的供电电压有关,那么它们必须统一接到相同的供电电压上,且I2C的SDA和SCL必须经上拉电阻也连接在这电压上。图4给出I2C总线上混合这两类器件的电路连接。图中的右边两个为输入电平和供电电压无关的器件,左边两个为输入电平和供电电压有关的器件。
      
      结束语
      
      采用I2C总线的系统很容易实现模块的修改,因为加入一个支持I2C接口的模块到I2C总线或从I2C上去除一个模块无需附加接口电路,且不影响其它电路。I2C总线灵活性好,器件地址可编程,数据传输协议可由自己灵活约定,且容易查错。该总线还具有低耗、宽电压范围、适用温度范围广、抗干扰能力强等特点,因此被广泛应用于电路设计中。

    推荐访问:总线 协议 软件 I2C