资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,http:/ IC BUS,)总线、,单总线,(,1,WIRE BUS,)、,SPI,(,Serial Peripheral Interface,)总线及,Microwire/PLUS,等。,http:/ I2C总线是PHLIPS公司推出的一种,3,I,2,C,总线通过,上拉电阻,接正电源。当总线,空闲时,两根线均为高电平,。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的,SDA,及,SCL,都是线“与”关系。,http:/ I2C总线通过上拉电阻接正电源。当总线空闲时,两,4,每个接到,I,2,C,总线上的器件都有,唯一的地址,。主机与其它器件间可进行,双向,数据传送,。,在,多主机,系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,,I,2,C,总线要通过,总线仲裁,,以决定由哪一台主机控制总线。,在,80C51,单片机应用系统的串行总线扩展中,我们经常遇到的是以,80C51,单片机为主机,其它接口器件为从机的,单主机,情况。,http:/ 每个接到I2C总线上的器件都有唯一的地址。主机与其,5,1,数据位的,有效性,规定,I,2,C,总线进行数据传送时,,时钟信号为高电平期间,,数据线上的数据必须保持稳定,只有在,时钟线上的信号为低电平期间,,数据线上的高电平或低电平状态才允许变化。,二、,I,2,C,总线的数据传送,http:/ 数据位的有效性规定二、I2C总线的数据传送http:/,6,2,起始和终止信号,SCL,线为高电平期间,,SDA,线由高电平向低电平的变化表示,起始信号,;,SCL,线为高电平期间,,SDA,线由低电平向高电平的变化表示,终止信号,。,http:/ 起始和终止信号 SCL线为高电平期间,SDA线由,7,起始和终止,信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。,连接到,I,2,C,总线上的器件,若具有,I,2,C,总线硬件接口,则能检测到起始和终止信号。对于不具备,I,2,C,总线硬件接口的设备(包括单片机),为了检测起始和终止信号,必须保证在每个时钟周期内对数据线,SDA,采样两次,。,传送中断,:接收器件收到一个完整的数据字节后,可能需要完成其它工作,如处理内部中断服务等,无法立刻接收下一个字节,这时接收器件可以,将,SCL,线拉成低电平,,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放,SCL,线使之为高电平,主机便可继续传送数据。,http:/ 起始和终止信号都是由主机发出的,在起始信号产生后,8,3,数据传送格式,(,1,)字节传送与应答,每一个字节必须保证是,8,位长度。数据传送时,,先传送最高位,(,MSB,),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有,9,位)。,http:/ 数据传送格式 每一个字节必须保证是8位长度。数据,9,无应答,:由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收数据),它必须将,数据线置于高电平,,而由主机产生一个,终止信号,以结束总线的数据传送。,如果从机对主机进行了应答,但在传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“,非应答,”通知主机,主机则应发出终止信号以结束数据的继续传送。,当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“,非应答,”来实现的。然后,从机释放,SDA,线,以允许主机产生终止信号。,http:/ 无应答:由于某种原因从机不对主机寻址信号应答时(如,10,(,2,)数据帧格式,I,2,C,总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。,在起始信号后必须传送一个从机的地址(,7,位),第,8,位是数据的,传送方向,位(,R/T,),用“,0”,表示主机发送数据(,T,),“,1”,表示主机接收数据(,R,)。每次数据传送总是由主机产生的终止信号结束。,连续传送,:若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。,http:/ 在起始信号后必须传送一个从机的地址,11,a,、主机向从机发送数据,数据传送方向在整个传送过程中不变:,注:,阴影部分,表示数据由,主机向从机传送,,,无阴影部分,则表示数据由从机向主机传送。,A,表示应答,,A,表示非应答(高电平)。,S,表示起始信号,,P,表示终止信号。,数据传送组合方式:,http:/ I2C总线协议有明确的规定:采用,14,主机发送地址,时,总线上的每个从机都将这,7,位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据,R/T,位将自己确定为发送器或接收器。,从机的地址,由,固定部分,和,可编程部分,组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的,7,位寻址位有,4,位是固定位,,,3,位是可编程位,这时仅能寻址,8,个同样的器件,即可以有,8,个同样的器件接入到该,I,2,C,总线系统中。,http:/ 寻址字节中的特殊地址http:/www.docin,16,3,起始字节,不具备,I,2,C,总线接口的单片机,则必须通过软件不断地检测总线,以便及时地响应总线的请求。单片机的速度与硬件接口器件的速度就出现了较大的差别,为此,,I,2,C,总线上的数据传送要由一个较长的起始过程加以,引导,。,起始字节是提供给,没有,I,2,C,总线接口,的单片机查询,I,2,C,总线时使用的特殊字节。,http:/ 起始字节 不具备I2C总线接口的单片机,则必须,17,四、,51,单片机,模拟实现,I,2,C,串行接口,为了保证数据传送的可靠性,标准的,I,2,C,总线的数据传送有,严格的时序要求,。见图,:,1,模拟,IIC,总线数据传送,不带,I,2,C,总线接口的单片机,如,AT89C51,、,2051,等,可利用,软件,实现,I,2,C,总线的数据传送,即软件与硬件结合的信号,模拟,。,http:/ 为了保证数据,18,教材未标明,SDA,和,SCL,http:/ I2CStart(void),SDA=1;,SCL=1;,SDA=0;,SCL=0;,(,1,),起始信号,start:setb SDA,nop,setb SCL,nop,clr SDA,nop,clr SCL,nop,ret,http:/ 典型信号模拟子程序C51函数(1)起始信号http,20,C51,函数,void I2cStop(void),SCL=0;,SDA=0;,SCL=1;,SDA=1;,(,2,),终止信号,stop:clr SCL,nop,clr SDA,nop,setb SCL,nop,setb SDA,nop,ret,http:/ 3 用I2C总线扩展器件扩展电路(单片机管脚灵活)h,22,4,串行,E,2,PROM,的扩展,(,1,)串行,E,2,PROM,典型产品,AT24C01,:,128,字节(,1288,位);,AT24C02,:,256,字节(,2568,位);,AT24C04,:,512,字节(,5128,位),AT24C08,:,1K,字节(,1K8,位);,AT24C16,:,2K,字节(,2K8,位);,固定地址部分为,1010,ATMEL,公司的,AT24C,系列:,http:/ 4 串行E2PROM的扩展 (1)串行E2PRO,23,(,2,)写入过程,AT24C,系列,E2PROM,芯片地址的固定部分为,1010,,,A2,、,A1,、,A0,引脚接高、低电平后得到确定的,3,位编码。形成的,7,位编码即为该器件的,地址码,。大于,256,字节的存储器,管脚,A2-A0,不使用。,单片机进行写操作时,首先发送该器件的,7,位地址码和,写方向位“,0”,(共,8,位,即一个字节),发送完后释放,SDA,线并在,SCL,线上产生第,9,个时钟信号。被选中的存储器器件在确认是自己的地址后,在,SDA,线上产生一个应答信号作为,响应,,单片机收到应答后就可以传送数据了。,http:/ (2)写入过程 单片机进行写操作时,首先发送,24,传送数据时,单片机首先发送一个字节的被写入器件的存储区的,首地址,,收到存储器器件的,应答,后,单片机就逐个发送各数据字节,但,每发送一个字节后都要等待应答,。,AT24C,系列器件片内地址在接收到每一个数据字节地址后自动加,1,,在芯片的“一次装载字节数”(不同芯片字节数不同)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。,当要写入的数据,传送完,后,单片机应发出,终止信号,以结束写入操作。写入,n,个字节的数据格式,:,终止信号到重新起始的时间为,10ms,。,http:/ 传送数据时,单片机首先发送一个字节的被写入器件的,25,(,3,)读出过程,单片机先发送该器件的,7,位地址码,和写,方向位“,0”,(“伪写”),发送完后释放,SDA,线并在,SCL,线上产生第,9,个时钟信号。被选中的存储器器件在确认是自己的地址后,在,SDA,线上产生一个应答信号作为相应。,然后,再发一个字节的要读出器件的存储区的,首地址,,收到应答后,单片机要,重复起始信号,并发出,器件地址,和读方向位(“,1”,),收到器件应答后就可以读出数据字节,每读出一个字节,,单片机都要回复应答信号,。当最后一个字节数据读完后,单片机应返回以“,非应答,”(高电平),并发出终止信号以结束读出操作。,http:/ (3)读出过程 然后,再发一个字节的要读出器,26,单片机访问,I,2,C,存储器示例,例,存储器为,24C02,,,A2-A0,地址信号接地,,89C51,单片机的,P1.1,和,P1.0,分别连接存储器的,SCL,和,SDA,信号,如图。编写程序完成,单个字节,写入和读取功能。,入口参数:,R3,器件地址,,R4,片内地址,,R1,保存在单片机内的数据地址指针。,http:/ data,,,P1.1 clk,),W24:CLR P1.0 ;,发,开始信号,MOV A,,,R3 ;,送器件地址,LCALL,SBYTE,MOV A,,,R4 ;,送片内地址,LCALL,SBYTE,MOV A,,,R1,LCALL,SBYTE,;,发单个字节,CLR P1.0 ;,准备停止,NOP ;,降低传输速率,SETB P1.1,NOP,SETB P1.0 ;,发停止信号,RET,SBYTE:;,发送单字节(,8,个,bit,)子程序,MOV R0,#08H,LP:CLR P1.1,RLC A ;,移待发数据位到,C,MOV P1.0,,,C ;,送一,bit,到数据总线,NOP,SETB P1.1,NOP,DJNZ R0,,,LP;,循环,8,次,CLR P1.1,SETB P1.0 ;,允许对方应答,NOP,SETB P1.1,WT:MOV C,,,P1.0,JC WT ;,等待答到,CLR P1.1 ;,对方撤销应答,RET,http:/ data,P1.1 clk)W24,28,C51,写入源程序,#include,#include,#define uchar unsigned char,sbit SDA=P10;,sbit SCL=P11;,void Sbyte(uchar c),uchar bcount;,for(bcount=0;bcount8;bcount+),SCL=0;,if(cbcount),else SDA=0;,_,nop,_();,SCL=1;Delay();,SCL=0;SDA=1;Delay();SCL=1;,while(SDA);,SCL=0;,void W24EP(uchar addr1,uch
展开阅读全文