第五课--I2C.ppt_第1页
第五课--I2C.ppt_第2页
第五课--I2C.ppt_第3页
第五课--I2C.ppt_第4页
第五课--I2C.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、I2C串行总线、8.1 I2C串行总线的组成和工作原理,以及串行总线技术的采用,可以大大简化系统的硬件设计,减小系统体积,提高可靠性。同时,很容易改变和扩展系统。常用的串行扩展总线包括I2C总线、1线总线、串行外设接口总线、微线/PLUS等。本章只讨论I2C串行总线。8 . 1 . 1 I2C串行总线概述、I2C总线是PHLIPS公司推出的一种串行总线,是一种高性能串行总线,具有多主机系统所需的总线仲裁和高低速设备同步功能。I2C总线只有两条双向信号线。一条是数据线SDA,另一条是时钟线SCL。I2C总线通过上拉电阻连接到正电源。当总线空闲时,两条线路都是高电平。连接到总线的任何设备的低电平输

2、出将使总线信号为低电平,即每个设备的SDA和SCL处于“与”关系。连接到I2C总线的每个设备都有一个唯一的地址。主机和其他设备之间的数据传输可以是主机向其他设备发送数据,然后主机是发送方。在总线上接收数据的设备是接收器。在多主机系统中,几台主机可能会试图同时启动总线来传输数据。为了避免混淆,I2C总线应该由总线仲裁来决定哪个主机控制总线。在80C51单片机应用系统的串行总线扩展中,经常会遇到以80C51单片机为主,其他接口设备为从的单主机情况。一、数据位的有效性当I2C总线用于数据传输时,数据线上的数据必须在时钟信号处于高电平期间保持稳定,只有在时钟信号处于低电平期间,数据线的高电平或低电平状

3、态才允许改变。8 . 1 . 2 I2C总线的数据传输,2。启动和停止信号、当SCL线处于高电平时,SDA线从高电平变为低电平表示启动信号;当SCL线处于高电平时,SDA线从低电平变为高电平表示终止信号。开始和结束信号都由主机发送,并且总线在开始信号产生后被占用。产生终止信号后,总线处于空闲状态。连接到I2C总线的设备如果有I2C总线的硬件接口,可以很容易地检测到开始和结束信号。对于一些没有I2C总线硬件接口的微控制器,为了检测开始和结束信号,需要在每个时钟周期对数据线SDA进行两次采样。接收到完整的数据字节后,接收设备可能需要完成一些其他工作,例如处理内部中断服务,并且可能不会立即接收下一个

4、字节。此时,接收设备可以将SCL线拉至低电平,使得主机处于等待状态。在接收设备准备好接收下一个字节之前,将SCL线释放到高电平,以便数据传输可以继续。第三章。数据传输格式(1)字节传输和响应、每个字节必须保证为8位长。传输数据时,首先传输最高有效位(MSB),每个传输字节后必须有一个响应位(即一帧有9位)。由于某种原因,当从机不应答主机寻址信号时(例如,从机正在实时处理,无法接收总线上的数据),它必须将数据线设置为高电平,主机生成终止信号以结束总线上的数据传输。如果从机回复主机,但在一段时间的数据传输后无法继续接收更多数据,从机可以通过“不回复”第一个无法接收的数据字节来通知主机,主机应发送终

5、止信号以结束数据的连续传输。当主机接收数据时,它必须在接收到最后一个数据字节后向从机发送信号以完成传输。该信号通过对从机的“无响应”来实现。然后,从机释放SDA线,让主机产生一个终止信号。(2)数据帧格式I2C总线上传输的数据信号是广义的,包括地址信号和实际数据信号。在总线的数据传输过程中,有如下几种组合:起始信号后,必须传输从机地址(7位),第8位是数据传输方向位(R/),“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传输总是由主机产生的终止信号来结束。然而,如果主设备想继续占用总线进行新的数据传输,它可以立即发出一个开始信号来寻址另一个从设备,而不产生停止信号。a .

6、主机向从机发送数据,数据传输方向在整个传输过程中保持不变:注意:阴影部分表示数据从主机传输到从机,非阴影部分表示数据从从机传输到主机。a表示响应,表示无响应(高电平)。s代表开始信号,p代表停止信号。主机在第一个字节后立即从从机读取数据。在传输过程中,当需要改变传输方向时,开始信号和从地址被重复产生一次,但是读/写方向位被反转两次。第四章。总线寻址,I2C总线协议有明确的规定:使用7位寻址字节(寻址字节是起始信号后的第一个字节)。(1)寻址字节的位定义。D7D1位构成从机的地址。D0位是数据传输方向位。当它为“0”时,表示主机向从机写入数据,当它为“1”时,表示主机从从机读取数据。当主机发送地

7、址时,总线上的每个从机将7位地址码与自己的地址进行比较。如果地址码相同,则认为它是由主机寻址的,并根据R/位确定自己是发送方还是接收方。从机地址由固定部分和可编程部分组成。在系统中,可能需要访问多个相同的从设备,从设备地址的可编程部分决定了可以访问总线的这种设备的最大数量。例如,如果从机的7位寻址位中有4位是固定位,3位是可编程位,那么只能寻址8个相同的设备,即8个相同的设备可以连接到I2C总线系统。寻址字节中的特殊地址固定地址号0000和1111已被保留用于特殊目的。当起始信号后的第一个字节的8位是“0000 0000”时,它被称为通用呼叫地址。通用调用地址的目的在第二个字节中解释。当格式为

8、:且第二个字节为06H时,所有能够响应通用调用地址的从设备都被复位,并由硬件载入从设备地址的可编程部分。可以响应命令的从设备在复位时不会拉下SDA和SCL线,以免阻塞总线。当第二个字节为04H时,所有能够响应通用调用地址并通过硬件定义其可编程地址的从设备将锁定地址中的可编程位,但不会将其复位。如果第二个字节的方向位B为“1”,这两个字节命令称为硬件通用调用命令。第二个字节的高7位表示您自己的地址。连接到总线的智能设备,如单片机或其他微处理器,可以识别这个地址并与之一起传输数据。当硬件主设备用作从设备时,该地址也用作从设备地址。格式为:系统中的另一个选项可能是,当系统复位时,硬件主机设备工作在从

9、机接收模式。此时,系统中的主机首先告诉硬件主机设备数据应该发送到的从设备的地址。当硬件主机设备想要发送数据时,它可以直接向指定的从设备发送数据。(3)起始字节。如果微控制器没有I2C总线接口,它必须通过软件不断检测总线,以便及时响应总线请求。单片机的速度和硬件接口设备的速度有很大的区别。因此,I2C总线上的数据传输应该遵循一个漫长的初始过程。起始字节是为没有I2C总线接口的微控制器提供的特殊字节,用于查询I2C总线。启动过程由启动信号、启动字节、响应位和重复启动信号组成。在请求访问总线的主机发送开始信号后,它发送开始字节(0000 0001),另一个微控制器可以以相对较低的速率对SDA线路进行

10、采样,直到它检测到开始字节中的七个“0”中的一个。在检测到SDA线上的高电平之后,微控制器可以使用更高的采样速率来找到用作同步信号的第二开始信号Sr。起始信号之后的响应时钟脉冲仅用于与总线使用的格式保持一致,并且不要求器件在该脉冲期间做出响应。8.2 I2C串行总线设备80C51接口,1。典型信号仿真为了保证数据传输的可靠性,标准的I2C总线数据传输有严格的时序要求。I2C总线的启动信号、结束信号、发送“0”和“1”的模拟时序为:8.2.1总线数据传输仿真,主机可以使用80C51、AT89C2051等无I2C总线接口的单片机,通过软件实现I2C总线的数据传输,即软硬件结合的信号仿真。典型信号模

11、拟子程序(c语言),(1)启动信号Void T2c START(Void)SomeNop();SCL=1;SomeNop();SDA=0;SomeNop();SCL=0;SomeNop();(2)端接信号void I2c STop(void)SDA=0;SomeNop();SCL=1;SomeNop();SDA=1;SomeNop();SCL=0;汇编语言子程序,发送启动脉冲子程序sea:setb SCL setb sda jnb sda,stat 1jnb SCL,stat 1no cplr sda nop clr SCL clr err sjmp stat 2 sta 1: setb er

12、r stat 23360 ret;发送停止脉冲stop :setb SCL时钟sda nop setb sda nop clr sda clr SCL ret;检查应答子程序cack : setb sdanop setb SCL nop clr err mov c,sdajnc ack 1 setb err ack 1: clr SCL ret;响应信号从设备发送到主机。发送一个响应子程序,该子程序由主机从从机发送给麦克: CLR SDA SETB SCL NOP CLR SCL SETB SDA RET。不应答子程序nak : setb sda setb SCL nop clr SCL cl

13、r sda ret;写一个字节子程序wr _ 1bet:movr6,# 08wr _ lp:movsda,c nopsetb SCL nopclr SCL nopdjnz R6,wr _ LPS setb sda nop setb SCL nop mov c,sda;获得答案位CLR SCL RET;读取一个字节子程序rd _ 1bet:setb sdamov R6,# 08rd _ LP 3360 nop setb SCL nop mov c,sdarlc a clr SCL nop djnz R6,rd _ lpret,写入数据块子程序,条目:R0存储数据块的第一个地址,R3是芯片地址wr

14、nbyt3360lcall stamov a,R3 lcall wr _ 1byte lcall cackmov a,Slalcall wr _ 1 byte wic : movar 0 call 条目:R0存储数据块的第一个地址,R3是芯片地址rdnbyt3360lcall stamov a,R3 lcall wr _ 1 byte lcall cackmov a,slalcall wr _ 1 byte LCALL cladcal stamov A,R3 SETB ACC . 0 LCALL WR _ 1 byte LCALL CACK DEC NUMByt RR _ D : LCALL

15、RD _ 1 BYTE MOV R0,A INC R0 LCALL MACK DJNZ NUMBYT,RR_D LCALL RD_1BYTE MOV R0,alcall 膨胀回路,2。串行E2PROM的扩展、(1)串行E2PROM、AT24C01的典型产品:128字节(1288位);AT24C02:256字节(2568位);AT24C04:512字节(5128位),AT24C 08:1k字节(1K8位);At24c16: 2k字节(2K8位);ATMEL股份有限公司AT24C系列:(2)写入过程AT24C系列E2PROM芯片地址的固定部分为1010,A2、A1、A0引脚连接高低电平,得到一定的

16、3位代码。形成的7位代码是设备的地址码。当微控制器执行写操作时,它首先发送7位地址码和写方向位“0”(总共8位,即一个字节),然后释放SDA线,并在SCL线上产生第9个时钟信号。在选定的存储设备确认它是自己的地址后,它在SDA线路上产生一个响应信号作为响应,并且微控制器可以在接收到响应后发送数据。传输数据时,微控制器首先发送写入设备存储区的字节的第一个地址。在接收到来自存储设备的响应之后,微控制器逐个发送每个数据字节,但是在发送每个字节之后等待响应。AT24C系列器件的片上地址在接收到每个数据字节地址后自动增加1,在“一次加载字节数”(不同的芯片有不同的字节数)的限制内只需输入第一个地址。当加

17、载的字节数超过芯片的“一次性加载字节”时,数据地址将被“卷起”,先前的数据将被覆盖。当要写入的数据被传送时,微控制器应该发出终止信号以结束写入操作。写入N字节的数据格式:(3)在读取过程中,微控制器首先发送器件的7位地址码和写方向位“0”(伪写),然后释放SDA线,并在SCL线上产生第9个时钟信号。在选定的存储器设备确认它是它自己的地址之后,它在SDA线上产生响应信号作为响应。然后发送另一个字节来读出设备存储区的第一个地址。收到响应后,微控制器将重复启动信号,并发出设备地址和读取方向位(“1”)。收到器件的响应后,可以读出数据字节。每次读出一个字节,单片机都会回复响应信号。读取完最后一个字节的数据后,微控制器应返回“无应答”(高电平),并发出终止信号以结束读取操作。AT24CXX的应用示例是EEROM,1带有IIC接口。1.芯片引脚VCC 5V VSS地线和SCL串行时钟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论