I2C总线原理REPORTER:DATE:目录1、I2C总线的概念2、I2C总线的特点3、总线的基本操作4、上拉电阻和下拉电阻介绍I2C总线的概念I2C支持常见IC制造工艺(CMOS、NMOS、晶体管)两线制:数据线SDA和时钟线SCL总线上每个器件都有一个唯一、确定的地址(无论是微控制器、传感器、LCD驱动器、存储器或键盘接口)原则上来说总线上每个器件都可以作为一个发送器或接收器(由器件的功能决定)发送器和接收器在执行数据传输时也可以被看作是主机或从机。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时任何被寻址的器件都被认为是从机I2C总线的概念♣.主机和从机:总线上可以有一个或多个主机,总线运行由主机控制。主机是指启动数据的传送(发起始信号)、发出时钟信号、传送结束时发出终止信号的器件。通常,主机由各种单片机或其他微处理器充当。被主机寻访的器件叫从机,它可以是各种单片机或其他微处理器,也可以是其他器件。♣.发送器和接收器:发送数据的一方称为发送器,而接收数据的一方称为接收器。I2C总线的概念♣.当总线空闲时,两根线均为高电平。♣.在标准I2C普通模式下,数据的传输率为100Kbps,高速模式下可达400Kbps。连接的器件越多,电容值越大,总线上允许的器件数以总线上的电容量不超过400pF为限。I2C总线的特点♣.iic串行总线:仅有两根线:SDA(数据线)和SCL(时钟线)。这样占用的空间非常小。♣.iic总线的特点:半双工、同步、多主控、串行。♣.iic串行总线的连接电路:I2C的特点♣.SDA(数据线)和SCL(时钟线)都是集电极开路或漏极开路结构的,只能输出“0”,不能输出“1”,都必须接上拉电阻。♣.SDA和SCL是双向的当需要输入数据时,将一个读数据用的输入端接在输出端。I2C总线的特点♣.SDA(数据线)和SCL(时钟线)都具有“线与”功能。I2C总线的特点♣.SCL线的时钟同步:SCL由于具有线“与”的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平。正是由于线“与”逻辑功能的原理,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号。♣.SDA线的仲裁:SDA线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争。SDA线的仲裁可以保证I2C总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线。I2C总线的特点I2C总线的特点总线的基本操作开始信号(主机发送)停止信号(主机发送)确认信号(ACK):“谁接收谁产生”的原则,即总是由接收器产生应答位非应答信号(NACK):如果接收器在接收完最后一个字节的数据,或者不能再接收更多的数据时,应当产生非应答来通知发送器。发送器如果发现接收器产生了非应答状态,则应当终止发送。总线的基本操作根据I2C总线协议的规定,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号如图所示。总线的基本操作I2C总线进行数据传送时,时钟信号为高电平期间,数据上的数据必须保持稳定。只有在时钟线上的信号为低电平期间,数据线上的高电平或低电工状态才允许变化,如图所示。总线的基本操作利用IIC总线进行数据传送时,传送的字节数是没有限制的,但是每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位),如图所示:总线的基本操作在总线的一次数据传送过程中,可以有以下几种组合方式写数据(7bit地址后紧跟0)主机在第一个字节后,立即由从机读数据(7bit地址后紧跟1)在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反向。总线的基本操作♣.主控制器产生起始条件后,发送的第一个字节为寻址字节,即从器件的地址,从器件的地址格式如下:♣.其中DA3~DA0位:是IIC总线外围接口器件固有的地址编码,出场时已给定。如IIC接口的EEPROM芯片AT24CXX为1010。4位LED驱动器SAA1064的器件地址为0111。♣.A2A1A0:IIC总线器件的引脚在电路中根据接电源或地来决定。♣.R/W是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。♣.主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/W位将自己确定为发送器或接收器。♣.系统中所接同类型的器件的数目:由A2A1A0决定总线的基本操作总结:在I2C总线上每传输一位数据都有一个时钟脉冲相对应。注意这里的时钟脉冲不一定是周期性的,它的时钟间隔可以不同。总线空闲时,SDA和SCL都必须保持高电平状态,关闭I2C总线时才使SCL箝位在低电平。只有当总线处于“空闲”状态时,数据传输才能被初始化。在数据传输期间,只要SCL为高电平,数据线SDA就必须保持稳定。只有在时钟线为低电平时,才允许数据线上的电平状态变化。在时钟线保持高电平期间,数据线出现下降沿为启动信号、上升沿为停止信号,启动和停止信号都由主机产生。总线的基本操作另外:如前所述,SCL线为低电平时,SDA线上数据就被停止传送。SCL线的这一特性十分有用:当接收器接收到一个数据/地址字节后,需要进行其他工作而无法立即接收下一个字节时,接收器便可向SCL线输出低电平而箝住SCL(SCL=0),迫使SDA线处于等待状态,直到接收器准备好接收新的数据/地址字节时,再释放时钟线SCL(SCL)=1),使SDA线上数据传输得以继续进行。例如,当被控接收器接收完主控器发来的一个数据字节时,若被控器需要处理接收中断而无法令其接收器继续接收,则被控器便可箝住SCL线为低电平,使主控发送器处于等待状态,直到被控器处理完接收中断后,再释放SCL线。上拉下拉电阻概念:上拉就是将不确定的信号通过一个电阻钳位在高电平!电阻同时起限流作用!下拉同理!使用场合:1、在cmos芯片上,为了防静电损坏,不能将管脚悬空,一般接上拉降低输入阻抗,提供卸荷通路,并使悬空时有确定的状态。2、提高输出驱动能力,并且抑制干扰,可接上拉。3、长线传输中电阻不匹配容易引起反射波干扰,加上、下拉电阻是电阻匹配,有效的抑制反射波干扰。4、实现不同类型电路的匹配上拉电阻的选择因素:功率、驱动能力、频率、抗干扰等上拉下拉电阻上拉电阻和下拉电阻拉电流和灌电流是衡量电路输出驱动能力(注意:拉、灌都是对输出端而言的,所以是驱动能力)的参数,这种说法一般用在数字电路中。由于数字电路的输出只有高、低(0,1)两种电平值,高电平输出时,一般是输出端对负载提供电流,其提供电流的数值叫“拉电流”;低电平输出时,一般是输出端要吸收负载的电流,其吸收电流的数值叫“灌(入)电流”。THANKYOU!