第6章-I2C串行总线课件

上传人:痛*** 文档编号:241660609 上传时间:2024-07-14 格式:PPT 页数:34 大小:728KB
返回 下载 相关 举报
第6章-I2C串行总线课件_第1页
第1页 / 共34页
第6章-I2C串行总线课件_第2页
第2页 / 共34页
第6章-I2C串行总线课件_第3页
第3页 / 共34页
点击查看更多>>
资源描述
第第6章章 I2C串行总线串行总线l 总线规范总线规范l 传输时序传输时序l I2C总线的应用总线的应用6.1 I2C总线规范总线规范6.1.1 I2C总线概述总线概述I I2 2C C总线是由总线是由Philips公司于公司于20世纪世纪80年代提出的串行通讯接口规年代提出的串行通讯接口规范,使用两条线范,使用两条线串行数据线串行数据线(SDA)、串行时钟线、串行时钟线(SCL)在连接到在连接到该总线上的器件之间传送信息。总线上的每个器件均可设置一唯一该总线上的器件之间传送信息。总线上的每个器件均可设置一唯一地址,并能根据所设的功能起到发送器或接收器的作用。除了作为地址,并能根据所设的功能起到发送器或接收器的作用。除了作为发送器和接收器,在执行数据传输时,器件还可以设定为主控器和发送器和接收器,在执行数据传输时,器件还可以设定为主控器和被控器。由主控器被控器。由主控器(简称主机简称主机)启动总线上的数据传输,并产生数据启动总线上的数据传输,并产生数据传输所需的时钟信号。此时,任何被其寻址的器件均为被控器传输所需的时钟信号。此时,任何被其寻址的器件均为被控器(从机从机),这意味着多个有能力控制总线的器件都可以连接到总线上。,这意味着多个有能力控制总线的器件都可以连接到总线上。6.1.2 I2C总线特征总线特征I I2 2C C总线有两根双向信号线:数据线总线有两根双向信号线:数据线总线有两根双向信号线:数据线总线有两根双向信号线:数据线SDASDA、时钟线、时钟线、时钟线、时钟线SCLSCL两根线都通过上拉电阻接正电源。总线空闲时,两根线均为两根线都通过上拉电阻接正电源。总线空闲时,两根线均为两根线都通过上拉电阻接正电源。总线空闲时,两根线均为两根线都通过上拉电阻接正电源。总线空闲时,两根线均为高电平。连接到总线的任何一个器件输出的低电平,都将使高电平。连接到总线的任何一个器件输出的低电平,都将使高电平。连接到总线的任何一个器件输出的低电平,都将使高电平。连接到总线的任何一个器件输出的低电平,都将使总线的信号变低,即各器件的总线的信号变低,即各器件的总线的信号变低,即各器件的总线的信号变低,即各器件的SDASDA和和和和SCLSCL都是都是都是都是“线与线与线与线与”关系。关系。关系。关系。每一个接到总线上的器件都有一个唯一的地址。每一个接到总线上的器件都有一个唯一的地址。每一个接到总线上的器件都有一个唯一的地址。每一个接到总线上的器件都有一个唯一的地址。I2C总线接口的电气结构总线接口的电气结构6.2 I2C总线的时序总线的时序一、数据的有效性一、数据的有效性I I2 2C C总线进行数据传送时,时钟信号总线进行数据传送时,时钟信号SCL为高电平期间,数据为高电平期间,数据线线SDA上的信号必须保持稳定,只有在上的信号必须保持稳定,只有在SCL上的信号为低电平时,上的信号为低电平时,SDA上的电平才允许发送变化。上的电平才允许发送变化。二、起始和终止信号二、起始和终止信号当当当当SCLSCL保持保持保持保持“高高高高”时,时,时,时,SDASDA的下降沿到来,为开始条件的下降沿到来,为开始条件的下降沿到来,为开始条件的下降沿到来,为开始条件;当当当当SCLSCL保持保持保持保持“高高高高”时,时,时,时,SDASDA的上升沿到来,为停止条件。的上升沿到来,为停止条件。的上升沿到来,为停止条件。的上升沿到来,为停止条件。二、起始和终止信号二、起始和终止信号当当当当SCLSCL保持保持保持保持“高高高高”时,时,时,时,SDASDA的下降沿到来,为开始条件的下降沿到来,为开始条件的下降沿到来,为开始条件的下降沿到来,为开始条件;当当当当SCLSCL保持保持保持保持“高高高高”时,时,时,时,SDASDA的上升沿到来,为停止条件。的上升沿到来,为停止条件。的上升沿到来,为停止条件。的上升沿到来,为停止条件。l 起始和终止信号都由主机发出。在起始信号产生后,总线处于被起始和终止信号都由主机发出。在起始信号产生后,总线处于被占用的状态;在终止信号产生后,总线处于空闲状态。占用的状态;在终止信号产生后,总线处于空闲状态。l 接收器件接收到一个完整的字节后,有可能需要完成一些其它工接收器件接收到一个完整的字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立即接收下一个字节,这时作,如处理内部中断服务等,可能无法立即接收下一个字节,这时接收器可以将接收器可以将SCL线拉成低电平,从而使主机处于等待状态,直到线拉成低电平,从而使主机处于等待状态,直到接收器准备好接收下一个字节时,再释放接收器准备好接收下一个字节时,再释放SCL线使之为高,从而使线使之为高,从而使数据传送继续进行。数据传送继续进行。三、数据传送格式三、数据传送格式(1)(1)字节传送与应答字节传送与应答字节传送与应答字节传送与应答每一个字节必须保证每一个字节必须保证8位长度。数据传送时,先传最高位位长度。数据传送时,先传最高位(MSB),每一个被传送的字节后面都必须跟随一个应答位。,每一个被传送的字节后面都必须跟随一个应答位。l 如果从机由于某种原因不对主机寻址信号进行应答时,它必须将如果从机由于某种原因不对主机寻址信号进行应答时,它必须将SDA线置高,而由主机产生一个终止信号以结束总线的数据传送。线置高,而由主机产生一个终止信号以结束总线的数据传送。l 如果从机应答了主机,接着便开始数据传送。假如数据传送一段如果从机应答了主机,接着便开始数据传送。假如数据传送一段时间后从机无法继续接收数据时,从机通过对无法接收的第一个数时间后从机无法继续接收数据时,从机通过对无法接收的第一个数据字节的据字节的“非应答非应答”通知主机,主机则发出终止信号以结束数据传通知主机,主机则发出终止信号以结束数据传送。送。(2)(2)数据帧格式数据帧格式数据帧格式数据帧格式l I I2 2C C总线上传送的数据信号,既包括地址信号,又包括真正总线上传送的数据信号,既包括地址信号,又包括真正的数据信号,都必须是整数字节。的数据信号,都必须是整数字节。l 起始信号后必须传送一个从机地址起始信号后必须传送一个从机地址(7bit)+数据传送方向位数据传送方向位(1bit),其中,其中0表示主机发、表示主机发、1表示主机收。每次数据传送表示主机收。每次数据传送总是由主机产生的终止信号结束。总是由主机产生的终止信号结束。l 若主机希望继续占用总线进行新的数据传送,可以不产生若主机希望继续占用总线进行新的数据传送,可以不产生终止信号,马上再次发出起始信号终止信号,马上再次发出起始信号+地址信号,对另一从机进地址信号,对另一从机进行寻址。行寻址。(2)(2)数据帧格式数据帧格式数据帧格式数据帧格式a、主机向从机发送数据,数据传送方向在整个传送、主机向从机发送数据,数据传送方向在整个传送过程中不变:过程中不变:注:注:注:注:有阴影部分表示数据方向主机有阴影部分表示数据方向主机有阴影部分表示数据方向主机有阴影部分表示数据方向主机-从机,从机,从机,从机,无阴影部分表示数据方向主机无阴影部分表示数据方向主机无阴影部分表示数据方向主机无阴影部分表示数据方向主机-从机从机从机从机A:A:应答,应答,应答,应答,A:A:非应答非应答非应答非应答(高电平高电平高电平高电平)S:S:起始信号,起始信号,起始信号,起始信号,P:P:终止信号终止信号终止信号终止信号(2)(2)数据帧格式数据帧格式数据帧格式数据帧格式b、主机在第一个字节后立即从从机读数据、主机在第一个字节后立即从从机读数据c、在传送过程中,当需要改变传送方向时,起始信、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读写方向号和从机地址都被重复产生一次,但两次读写方向正好相反。正好相反。四、总线的寻址四、总线的寻址l l I I2 2C C总线协议规定:采用总线协议规定:采用总线协议规定:采用总线协议规定:采用7 7位地址位地址位地址位地址+1+1位传送方向的寻址字节位传送方向的寻址字节位传送方向的寻址字节位传送方向的寻址字节(寻址字节固定是起始信号后的第一个字节)。(寻址字节固定是起始信号后的第一个字节)。(寻址字节固定是起始信号后的第一个字节)。(寻址字节固定是起始信号后的第一个字节)。l 主机发送地址时,总线上的每个从机都把这主机发送地址时,总线上的每个从机都把这7位地址与自己位地址与自己的地址比较,如果相同,则认定自己正被主机寻址,根据的地址比较,如果相同,则认定自己正被主机寻址,根据R/T位来确定自己是发送或接收数据。位来确定自己是发送或接收数据。l 从机的地址由固定部分和可编程部分组成。在一个系统中从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同从机,从机地址中可编程部分决定了可能希望接入多个相同从机,从机地址中可编程部分决定了可接入总线的该类器件的最大数目。如果一个从机的可接入总线的该类器件的最大数目。如果一个从机的7位寻址位寻址位有位有4位固定,位固定,3位可编程的话,则该位可编程的话,则该I2C总线系统中可以接入总线系统中可以接入的相同器件不超过的相同器件不超过8个。个。(2)寻址字节中的特殊地址)寻址字节中的特殊地址 固定地址编号固定地址编号0000和和1111已被保留作为特殊已被保留作为特殊用途。用途。起始信号后的第一字节的起始信号后的第一字节的起始信号后的第一字节的起始信号后的第一字节的8 8位为位为位为位为“0000 00000000 0000”时,称时,称时,称时,称为通用呼叫地址。通用呼叫地址的用意在第二字节中为通用呼叫地址。通用呼叫地址的用意在第二字节中为通用呼叫地址。通用呼叫地址的用意在第二字节中为通用呼叫地址。通用呼叫地址的用意在第二字节中加以说明。格式为:加以说明。格式为:加以说明。格式为:加以说明。格式为:第二字节为第二字节为第二字节为第二字节为 06H06H时,所有能响应通用呼叫地址的从机器件时,所有能响应通用呼叫地址的从机器件时,所有能响应通用呼叫地址的从机器件时,所有能响应通用呼叫地址的从机器件复位,并由硬件装入从机地址的可编程部分。能响应命令的复位,并由硬件装入从机地址的可编程部分。能响应命令的复位,并由硬件装入从机地址的可编程部分。能响应命令的复位,并由硬件装入从机地址的可编程部分。能响应命令的从机器件复位时不拉低从机器件复位时不拉低从机器件复位时不拉低从机器件复位时不拉低SDASDA和和和和SCLSCL线,以免堵塞总线。线,以免堵塞总线。线,以免堵塞总线。线,以免堵塞总线。第二字节为第二字节为第二字节为第二字节为 04H04H时,所有能响应通用呼叫地址并通过硬件时,所有能响应通用呼叫地址并通过硬件时,所有能响应通用呼叫地址并通过硬件时,所有能响应通用呼叫地址并通过硬件来定义其可编程地址的从机器件将锁定地址中的可编程位,来定义其可编程地址的从机器件将锁定地址中的可编程位,来定义其可编程地址的从机器件将锁定地址中的可编程位,来定义其可编程地址的从机器件将锁定地址中的可编程位,但不进行复位。但不进行复位。但不进行复位。但不进行复位。如果第二字节的方向位如果第二字节的方向位如果第二字节的方向位如果第二字节的方向位B B为为为为“1 1”,则这两个字节命令称,则这两个字节命令称,则这两个字节命令称,则这两个字节命令称为硬件通用呼叫命令。为硬件通用呼叫命令。为硬件通用呼叫命令。为硬件通用呼叫命令。在这第二字节的高在这第二字节的高在这第二字节的高在这第二字节的高7 7位说明自己的地址。接在总线上的智位说明自己的地址。接在总线上的智位说明自己的地址。接在总线上的智位说明自己的地址。接在总线上的智能器件,如单片机或其他微处理器能识别这个地址,并与之能器件,如单片机或其他微处理器能识别这个地址,并与之能器件,如单片机或其他微处理器能识别这个地址,并与之能器件,如单片机或其他微处理器能识别这个地址,并与之传送数据。硬件主器件作为从机使用时,也用这个地址作为传送数据。硬件主器件作为从机使用时,也用这个地址作为传送数据。硬件主器件作为从机使用时,也用这个地址作为传送数据。硬件主器件作为从机使用时,也用这个地址作为从机地址。格式为:从机地址。格式为:从机地址。格式为:从机地址。格式为:在系统中另一种选择可能是系统复位时硬件主机在系统中另一种选择可能是系统复位时硬件主机在系统中另一种选择可能是系统复位时硬件主机在系统中另一种选择可能是系统复位时硬件主机器件工作在从机接收器方式,这时由系统中的主机器件工作在从机接收器方式,这时由系统中的主机器件工作在从机接收器方式,这时由系统中的主机器件工作在从机接收器方式,这时由系统中的主机先告诉硬件主机器件数据应送往的从机器件地址,先告诉硬件主机器件数据应送往的从机器件地址,先告诉硬件主机器件数据应送往的从机器件地址,先告诉硬件主机器件数据应送往的从机器件地址,当硬件主机器件要发送数据时就可以直接向指定从当硬件主机器件要发送数据时就可以直接向指定从当硬件主机器件要发送数据时就可以直接向指定从当硬件主机器件要发送数据时就可以直接向指定从机器件发送数据了。机器件发送数据了。机器件发送数据了。机器件发送数据了。(3 3)起始字节)起始字节)起始字节)起始字节 不具备不具备不具备不具备I2CI2C总线接口的单片机,则必须通过软件不断地检总线接口的单片机,则必须通过软件不断地检总线接口的单片机,则必须通过软件不断地检总线接口的单片机,则必须通过软件不断地检测总线,以便及时地响应总线的请求。单片机的速度与硬件测总线,以便及时地响应总线的请求。单片机的速度与硬件测总线,以便及时地响应总线的请求。单片机的速度与硬件测总线,以便及时地响应总线的请求。单片机的速度与硬件接口器件的速度一般有较大的差别,为此,接口器件的速度一般有较大的差别,为此,接口器件的速度一般有较大的差别,为此,接口器件的速度一般有较大的差别,为此,I2CI2C总线上的数总线上的数总线上的数总线上的数据传送要由一个较长的起始过程加以引导。据传送要由一个较长的起始过程加以引导。据传送要由一个较长的起始过程加以引导。据传送要由一个较长的起始过程加以引导。起始字节是提供给没有起始字节是提供给没有起始字节是提供给没有起始字节是提供给没有I I2 2C C总线接口的单片机查询总线接口的单片机查询总线接口的单片机查询总线接口的单片机查询I2CI2C总线总线总线总线时使用的特殊字节。时使用的特殊字节。时使用的特殊字节。时使用的特殊字节。引引导导过过程程由由起起始始信信号号、起起始始字字节节、应应答答位位、重复起始信号(重复起始信号(Sr)组成。)组成。n n请求访问总线的主机发出起始信号后,发送起始字请求访问总线的主机发出起始信号后,发送起始字请求访问总线的主机发出起始信号后,发送起始字请求访问总线的主机发出起始信号后,发送起始字节(节(节(节(0000 00010000 0001),另一个单片机可以用一个比较低),另一个单片机可以用一个比较低),另一个单片机可以用一个比较低),另一个单片机可以用一个比较低的速率采样的速率采样的速率采样的速率采样SDASDA线,直到检测到起始字节中的线,直到检测到起始字节中的线,直到检测到起始字节中的线,直到检测到起始字节中的7 7个个个个“0 0”中的一个为止。在检测到中的一个为止。在检测到中的一个为止。在检测到中的一个为止。在检测到SDASDA线上的高电平后,线上的高电平后,线上的高电平后,线上的高电平后,单片机就可以用较高的采样速率,以便寻找作为同单片机就可以用较高的采样速率,以便寻找作为同单片机就可以用较高的采样速率,以便寻找作为同单片机就可以用较高的采样速率,以便寻找作为同步信号使用的第二个起始信号步信号使用的第二个起始信号步信号使用的第二个起始信号步信号使用的第二个起始信号SrSr。n n在起始信号后的应答时钟脉冲仅仅是为了和总线所在起始信号后的应答时钟脉冲仅仅是为了和总线所在起始信号后的应答时钟脉冲仅仅是为了和总线所在起始信号后的应答时钟脉冲仅仅是为了和总线所使用的格式一致,并不要求器件在这个脉冲期间作使用的格式一致,并不要求器件在这个脉冲期间作使用的格式一致,并不要求器件在这个脉冲期间作使用的格式一致,并不要求器件在这个脉冲期间作应答。应答。应答。应答。6.3 I2C总线的应用总线的应用I2C总线在总线在8051单片机上的实现单片机上的实现部分部分51单片机固化单片机固化I2C接口,如接口,如8XC552等,对于没有等,对于没有I2C总线的单片机,有两种方法:总线的单片机,有两种方法:1)可使用扩展器件可使用扩展器件PCD8584扩展出扩展出I2C总线接口;总线接口;2)采用软件模拟采用软件模拟I2C总线总线的时序来完成接口功能,下图是采用方法的时序来完成接口功能,下图是采用方法2)的典型电路连的典型电路连接结构。接结构。80C51I2C器件器件R1R2P1.0P1.1SCL SDAVCC发送起始信号SDA BIT P1.0SCL BIT P1.1BSTART:SETB SDA;Make sure data is highSETB SCL;Set clock highNOPNOPCLR SDA;Down edge occurs on SDA during high clock for START NOPNOPCLR SCL;Start data transmissionRET发送停止信号SDA BIT P1.0SCL BIT P1.1BSTOP:CLR SCLCLR SDA ;Make sure data line is lowNOPNOPSETB SCL ;Set clock line highNOPNOPSETB SDA ;Data goes high while clock high for STOPNOPNOPRET发送起始/停止信号(C语言)void Start()SDA=1;SCL=1;Delay();SDA=0;Delay();SCL=0;void Stop()SDA=0;SCL=0;Delay();SCL=1;Delay();SDA=1;应答函数和应答处理函数(C语言)void SendAck(bit ck)if(ck)SDA=0;else SDA=1;Delay();SCL=1;Delay();SCL=0;SDA=1;/ACK后要对总后要对总线进行释放线进行释放Delay();bit WaitAck()SDA=1;Delay();SCL=1;Delay();if(SDA)/SDA为为1收到非应答收到非应答SCL=0;Stop();return 0;else/SDA为为0收到应答收到应答SCL=0;return 1;I2C总线器件的扩展总线器件的扩展一、典型扩展电路一、典型扩展电路一、典型扩展电路一、典型扩展电路 6.3.1 24Cxx系列系列E2PROM应用应用 (1 1)串行)串行)串行)串行E E2 2PROMPROM典型产品典型产品典型产品典型产品ATMELATMEL公司的公司的公司的公司的AT24CAT24C系列:系列:系列:系列:AT24C01:128字节(1288位)AT24C02:256字节(2568位)AT24C04:512字节(5128位)AT24C08:1K字节(1K8位)AT24C16:2K字节(2K8位)(2)写入过程)写入过程 AT24CAT24C系列系列系列系列E2PROME2PROM芯片地址的固定部分为芯片地址的固定部分为芯片地址的固定部分为芯片地址的固定部分为10101010,A2A2、A1A1、A0A0引脚接高、低电平后得到确定的引脚接高、低电平后得到确定的引脚接高、低电平后得到确定的引脚接高、低电平后得到确定的3 3位位位位编码。形成的编码。形成的编码。形成的编码。形成的7 7位编码即为该器件的地址码。位编码即为该器件的地址码。位编码即为该器件的地址码。位编码即为该器件的地址码。单片机进行写操作时,首先发送该器件的单片机进行写操作时,首先发送该器件的单片机进行写操作时,首先发送该器件的单片机进行写操作时,首先发送该器件的7 7位地址位地址位地址位地址码和写方向位码和写方向位码和写方向位码和写方向位“0 0”(共(共(共(共8 8位,即一个字节),发送位,即一个字节),发送位,即一个字节),发送位,即一个字节),发送完后释放完后释放完后释放完后释放SDASDA线并在线并在线并在线并在SCLSCL线上产生第线上产生第线上产生第线上产生第9 9个时钟信号。个时钟信号。个时钟信号。个时钟信号。被选中的存储器器件在确认是自己的地址后,在被选中的存储器器件在确认是自己的地址后,在被选中的存储器器件在确认是自己的地址后,在被选中的存储器器件在确认是自己的地址后,在SDASDA线上产生一个应答信号作为响应,单片机收到线上产生一个应答信号作为响应,单片机收到线上产生一个应答信号作为响应,单片机收到线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。应答后就可以传送数据了。应答后就可以传送数据了。应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的被写入器件的传送数据时,单片机首先发送一个字节的被写入器件的传送数据时,单片机首先发送一个字节的被写入器件的传送数据时,单片机首先发送一个字节的被写入器件的存储区的首地址,收到存储器器件的应答后,单片机就逐个存储区的首地址,收到存储器器件的应答后,单片机就逐个存储区的首地址,收到存储器器件的应答后,单片机就逐个存储区的首地址,收到存储器器件的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。发送各数据字节,但每发送一个字节后都要等待应答。发送各数据字节,但每发送一个字节后都要等待应答。发送各数据字节,但每发送一个字节后都要等待应答。AT24CAT24C系列器件片内地址在接收到每一个数据字节地址系列器件片内地址在接收到每一个数据字节地址系列器件片内地址在接收到每一个数据字节地址系列器件片内地址在接收到每一个数据字节地址后后后后自动加自动加自动加自动加1 1,在芯片的,在芯片的,在芯片的,在芯片的“一次装载字节数一次装载字节数一次装载字节数一次装载字节数”(不同芯片字节(不同芯片字节(不同芯片字节(不同芯片字节数不同)限度内,只需输入首地址。装载字节数超过芯片的数不同)限度内,只需输入首地址。装载字节数超过芯片的数不同)限度内,只需输入首地址。装载字节数超过芯片的数不同)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数一次装载字节数一次装载字节数一次装载字节数”时,数据地址将时,数据地址将时,数据地址将时,数据地址将“上卷上卷上卷上卷”,前面的数据,前面的数据,前面的数据,前面的数据将被覆盖。将被覆盖。将被覆盖。将被覆盖。当要写入的数据传送完后,单片机应发出终止信号以结当要写入的数据传送完后,单片机应发出终止信号以结当要写入的数据传送完后,单片机应发出终止信号以结当要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入束写入操作。写入束写入操作。写入束写入操作。写入n n个字节的数据格式个字节的数据格式个字节的数据格式个字节的数据格式 :(3 3)读出过程)读出过程)读出过程)读出过程单片机先发送该器件的单片机先发送该器件的单片机先发送该器件的单片机先发送该器件的7 7位地址码和写方向位位地址码和写方向位位地址码和写方向位位地址码和写方向位“0 0”(“伪写伪写伪写伪写”),发送完后释放),发送完后释放),发送完后释放),发送完后释放SDASDA线并在线并在线并在线并在SCLSCL线上产生第线上产生第线上产生第线上产生第9 9个时钟个时钟个时钟个时钟信号。被选中的存储器器件在确认是自己的地址后,在信号。被选中的存储器器件在确认是自己的地址后,在信号。被选中的存储器器件在确认是自己的地址后,在信号。被选中的存储器器件在确认是自己的地址后,在SDASDA线上产生一个应答信号作为相应。线上产生一个应答信号作为相应。线上产生一个应答信号作为相应。线上产生一个应答信号作为相应。然后,再发一个字节的要读出器件的存储区的首地址,然后,再发一个字节的要读出器件的存储区的首地址,然后,再发一个字节的要读出器件的存储区的首地址,然后,再发一个字节的要读出器件的存储区的首地址,收到应答后,单片机要收到应答后,单片机要收到应答后,单片机要收到应答后,单片机要重复一次起始信号重复一次起始信号重复一次起始信号重复一次起始信号并发出器件地址和并发出器件地址和并发出器件地址和并发出器件地址和读方向位(读方向位(读方向位(读方向位(“1 1”),收到器件应答后就可以读出数据字节,),收到器件应答后就可以读出数据字节,),收到器件应答后就可以读出数据字节,),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字每读出一个字节,单片机都要回复应答信号。当最后一个字每读出一个字节,单片机都要回复应答信号。当最后一个字每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回节数据读完后,单片机应返回节数据读完后,单片机应返回节数据读完后,单片机应返回“非应答非应答非应答非应答”,并发出终止信号,并发出终止信号,并发出终止信号,并发出终止信号以结束读出操作。以结束读出操作。以结束读出操作。以结束读出操作。例:例:89C51连接连接E2PROM24C02U2写地址:写地址:1010 000 0(0 xa0)U2读地址:读地址:1010 000 1(0 xa1)U3写地址:写地址:1010 100 0(0 xa8)U3读地址:读地址:1010 100 1(0 xa9)典型写代码典型写代码发送一个字节到发送一个字节到I2C总线总线void SendByte(uchar b)uchar i;for(i=0;i8;i+)b=b1;/b字节按位左移,最高位移入字节按位左移,最高位移入CYSCL=0;/只有只有SCL为低电平时,数据才可以变化为低电平时,数据才可以变化SDA=CY;Delay();SCL=1;/将将SCL拉高,拉高,SDA上的数据发送出去上的数据发送出去Delay();SCL=0;/将将SCL再次拉低,准备下一次发送再次拉低,准备下一次发送典型读代码典型读代码从从I2C总线接收一个字节总线接收一个字节uchar RcvByte()uchar i,k=0;SCL=0;Delay();SDA=1;for(i=0;i8;i+)SCL=1;/SCL为高时,为高时,SDA上才有有效的数据上才有有效的数据 Delay();k=(k1)|SDA;/把把SDA当前值当前值(0或或1)添在字节添在字节k的末位的末位 SCL=0;/将将SCL拉低,准备下一个拉低,准备下一个bit的传送的传送 Delay();return k;6.3.2 PCF8591的的D/A、A/D转换应用转换应用PCF8591PCF8591由由由由PhilipsPhilips公司设计推出,是一个单片集成、单独供公司设计推出,是一个单片集成、单独供公司设计推出,是一个单片集成、单独供公司设计推出,是一个单片集成、单独供电、低功耗、电、低功耗、电、低功耗、电、低功耗、8-bit CMOS8-bit CMOS数据获取器件。具有数据获取器件。具有数据获取器件。具有数据获取器件。具有4 4个模拟输入、个模拟输入、个模拟输入、个模拟输入、1 1个模拟输出和个模拟输出和个模拟输出和个模拟输出和1 1个串行个串行个串行个串行I I2 2C C总线接口。总线接口。总线接口。总线接口。PCF8591PCF8591的的的的3 3个地址引脚个地址引脚个地址引脚个地址引脚A0,A0,A1A1和和和和A2A2可用于硬件地址编程,允许在同个可用于硬件地址编程,允许在同个可用于硬件地址编程,允许在同个可用于硬件地址编程,允许在同个I I2 2C C总线上接入总线上接入总线上接入总线上接入8 8个个个个PCF8591PCF8591器件。厂商固定地址位为器件。厂商固定地址位为器件。厂商固定地址位为器件。厂商固定地址位为“1001”。PCF8591PCF8591的功能包括的功能包括的功能包括的功能包括多路模拟输入、内置跟踪保持、多路模拟输入、内置跟踪保持、多路模拟输入、内置跟踪保持、多路模拟输入、内置跟踪保持、8-bit8-bit模数转换和模数转换和模数转换和模数转换和8-bit8-bit数模转换。数模转换。数模转换。数模转换。PCF8591PCF8591的最大转化速率由的最大转化速率由的最大转化速率由的最大转化速率由I I2 2C C总线的最大速率决定。总线的最大速率决定。总线的最大速率决定。总线的最大速率决定。AIN3-AIN0:模拟信号输入端:模拟信号输入端A3-A0:引脚地址端:引脚地址端VDD、VSS:电源端:电源端(2.56V)OSC:外部时钟输入端,内部时钟输出端:外部时钟输入端,内部时钟输出端EXT:内:内/外部时钟选择,使用内部时钟外部时钟选择,使用内部时钟时时EXT接地接地AGND:模拟信号地:模拟信号地AOUT:D/A转换输出端转换输出端VREF:参考电源:参考电源A/D应用举例应用举例对于模对于模/数转换来说,作为主机的单片机是在读数据,因数转换来说,作为主机的单片机是在读数据,因此遵循此遵循I2C读操作的规律:读操作的规律:主机机先发送器件的主机机先发送器件的7位地址码和写方向位位地址码和写方向位0,在获得从,在获得从机应答后,发出控制字节,说明器件的一些工作参数。收到应机应答后,发出控制字节,说明器件的一些工作参数。收到应答后,主机重复一次起始信号并发出器件地址和读方向位答后,主机重复一次起始信号并发出器件地址和读方向位1,收到器件应答后就开始读出数据字节。当读完最后一个字节,收到器件应答后就开始读出数据字节。当读完最后一个字节后,主机应返回后,主机应返回“非应答非应答”,并发出终止信号以结束读出操作。,并发出终止信号以结束读出操作。A/D应用举例应用举例D7D6D5D4D3D2D1D0控制字节用于实现器件的各种功能,如模拟信号由哪几个控制字节用于实现器件的各种功能,如模拟信号由哪几个通道输入等。控制字节存放在控制寄存器中。总线操作时为主通道输入等。控制字节存放在控制寄存器中。总线操作时为主控制器发送的第二个字节。其格式如下:控制器发送的第二个字节。其格式如下:D1D0 A/D通道编号:通道编号:00-通道通道0、01-通道通道1、10-通道通道2、11-通道通道3D2 自动增益标志位自动增益标志位(有效位为有效位为1)D3 未使用,固定为未使用,固定为0D5D4 模拟量输入方式选择:模拟量输入方式选择:00-四路单端输入、四路单端输入、01-三路差三路差分输入、分输入、10-单端与差分混合输入、单端与差分混合输入、11-两路差分输入两路差分输入D6 模拟输出允许标志位模拟输出允许标志位(为为1则允许则允许AOUT引脚输出引脚输出)D7 未使用,固定为未使用,固定为0D/A应用举例应用举例对于数对于数/模转换来说,作为主机的单片机是在写数据,因模转换来说,作为主机的单片机是在写数据,因此遵循此遵循I2C总线写操作的规律:总线写操作的规律:主机进行写操作时,首先发送器件的主机进行写操作时,首先发送器件的7位地址码和写方向位地址码和写方向位位0,在获得从机应答后,发出控制字节,说明器件的一些,在获得从机应答后,发出控制字节,说明器件的一些工作参数。收到应答后,主机可以开始发送数据,每发一个字工作参数。收到应答后,主机可以开始发送数据,每发一个字节后都要等待应答。节后都要等待应答。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!