Lamdeli

IIC通讯学习

0
阅读(1019)

       IIC的硬件接口组成:

    (1)SCL:串行时钟信号。

    (2)SCK:串行数据信号。

       IIC总线是由Philips公司开发的一种二进制同步串行总线。IIC总线由主器件和从器件组成。IIC总线支持多机通讯,支持多主控模块。但一个时刻只能有一个主控模块。每个从器件都有一个唯一的地址共主器机寻址。IIC总线通讯速率有两种模式,标准模式为100kbit/s,快速模式为400kbit/s。

image.png

      IIC的通讯时序:

image.png

        IIC总线写时序:

        (1)发送起动信号(Start);

        (2)写带写信号的设备地址

        (3)接受从器件应答信号(ACK);

        (4)写存储地址;

        (5)接受从器件应答信号(ACK);

        (6)写数据;

        (7)接受从器件应答信号(ACK);

        (8)若需要写多个字节,重复步骤(6)和(7)。最后发送停止信号(Stop)。

      IIC总线读时序:

        (1)发送起动信号(Start);

        (2)写带写信号的设备设备地址;

        (3)接受从器件应答信号(ACK);

        (4)写存储地址

        (5)接受从器件应答信号(ACK);

        (6)发送起动信号(Start);

        (7)接受从器件应答信号(ACK);

        (8)写带读信号的设备设备地址;

        (9)读数据。

        (10)需要读多个字节时,接受从器件应答信号(ACK)。不需要,则不需要接收从器机应答信号(ACK)。

        (11)需要读多个字节时,重复步骤(9)和(10)。最后一个字节不需要接收从器件应答信号(ACK)。且接收完最后一个字节后,发送发送停止信号(Stop)。

     

       IIC设备地址组成:

       IIC的设备地址由7位地址和1位读写位组成。7位地址一般由硬件电路确定,如EEPROM——24LC04的A2~A0。读写位中,1表示对器件进行读操作,0表示对器件进行写操作。

     

       IIC总线上的状态和信号:

       空闲状态:当IIC总线上的SCL和SDA均为高电平时,规定为IIC的空闲状态。在电路设计中,一般要求使用上拉电阻拉高这两个信号的电平。确保IIC的常态为空闲状态。

       启动信号(STOP):在时钟线SCL高电平期间,数据线SDA由低电平跳变为高电平(正跳变),此为IIC的停止信号,标志着一次数据传输结束。启动信号也是由主器件建立的,如下图所示:

image.png

     

       数据位传送:SCL为串行同步时钟信号,在每个SCL的高电平期间,SDA上的数据被采样。因此在SCL的高电平时刻,SDA的数据必须保持稳定。在SCL的低电平时刻,SDA的数据才允许被修改。

image.png

       

       应答信号ACK和非应答信号NACK:IIC总线每次传输的数据单位为字节。因此每次当IIC总线上8位数据传输完毕,在第9位时钟脉冲SDA会拉高而释放总线,由接收器反馈一个应答信号。

       当该应答信号为低电平,规定该信号为有效应答位。表示接收器成功接收了该字节。当应答信号为高电平,规定为非应答位。对于接收器,规定在第 9 个时钟脉冲之前的低电平期间将 SDA 线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

       如果接收器是主控器,则在它收到最后一个字节后,发送一个 NACK 信号,以通知被控发器结束数据发送,并释放 SDA 线,以便主控接收器发送一个停止信号。

image.png

        

        IIC时序要求:

        IIC总线的通讯频率100kHz和400kHz。每个脉冲信号的上升时间,保持时间等时序要求见下图(以Microchip 的24LC04B为例)。

image.png

image.png