IIC有两个种线构成:1.数据线SDA 2.时钟线SCL。数据线要配合时钟线上的时钟来转输数据,一个脉冲周期可以传输1bit的数据,当时钟处于高电平时,数据线不能够发生改变,处于低电平时,可以任意改变。
使用MSB的数据传输方式,先传高位。
注意:在电路设计时时钟线和数据线都必须都要分别接上拉电阻,为电路提供高点平使用。
IIC的几个基本概念:
1、开始信号:当时钟线为高电平时,数据线发生下降沿跳变,该信号就被认为是数据传输开始信号,说明开始传输数据。也就是说发送方开始向接收方发出数据时,由发送方开始发出的信号,发送方此后开始占有IIC总线。
2、结束信号:当时钟线为高电平时,数据线发生上升沿跳变,该信号就被认为是数据传输结束信号,说明停止传输数据。也就是说发送方不想再向接收方发数据了,由发送方发出的信号,此后IIC总线处于空闲状态。
3、应答信号:应答信号是在每次数据发送完的第9个时钟脉冲由接收方回应发送方的一种信号,该信号为0时为应答信号,表示数据传输成功;为1时为非应答信号。
注意:这里所说的非应答信号并不是说接收方不应答发送方。
什么时候回应应答什么时候回应非应答,你得看芯片的具体时序图,不同芯片时序图不一样通常情况请,正常接收到了,正常写入,回应应答信号,出现异常或者是希望提前结束本次通信,通常回应非应答
每个具有IIC总线的设备中都有唯一的一个地址,该地址称之为器件地址。一般由是7bit和10bit,但是10bit不常用。因为10bit的地址我们想处理时,要用2字节来处理,比较麻烦,当然也可以使用,但是一般使用的是7bit器件地址+1bit读写位刚好为1个字节,方便处理。
IIC的仲裁机制:
简单的说就是在多个主机中由哪一个主机来作为IIC总线的控制者的一种选择机制。
1.竞争仲裁机制之所以能够实施,是因为IIC 内部开漏结构
2.每一个主机,往时钟线送电平的时候,它能够实时的感知到当前时钟线上呈现的电平状态
比如说在一个IIC网络中有3个设备A,B,C,这三个设备都可以作为主从机,在某一时刻,三个设备都发出低电平的信号0,在发送过程中C->0突然发生跳变至高电平C->1,此时C发现线路中仍然是有低电平存在,说明现在不只是有C想要通过IIC总线进行通讯,因此C设备将被设置为接收状态(浮空输入);一段时间后,B->0也突然跳变为B->1高电平,此时B发现线路中仍然是有低电平存在,说明现在还有其他主机想要通过IIC总线进行通讯,则B设备将被设置为接收状态(浮空输入);再一段时间后,A->0也突然跳变为A->1高电平,此时A发现线路中是有高电平存在,说明现在IIC总线上除了主机A想要控制外,没有其它的主机想控制IIC总线,则此时认定A为IIC总线的拥有者,直到A发出结束信号,使IIC总线为空闲状态为止,其它主机才能拥有。
注意:一个IIC网络中可以有多个主机和从机,但是某一时刻只能有一台主机来发送数据,由他来控制IIC总线。
IIC通讯建立连接:
每一次通信时候,都是由主机发起的,首先是主机发出起始信号,然后起始信号之后必须紧跟 要进行广播接下来通信的目标设备的器件地址7bit或10bit+读写位1bit,当芯片网络里其他的设备收到这个地址和自身器件地址进行比对,如果不相同,就不激活,不参与接下来的通信。如果某一个设备发现和刚刚主机广播出来的地址相同,它就激活,然后要回应一个bit 的应答信号(低电平 数字信号0)。之后的通讯由具体芯片具体设置。最后有主机发出停止信号。
发出起始信号------->器件地址(7bit)-------->读写位(1bit)------>应答信号----->数据传输连接------>应答信号----->发出结束信号
联系客服