IIC通讯学习
0赞IIC的硬件接口组成:
(1)SCL:串行时钟信号。
(2)SCK:串行数据信号。
IIC总线是由Philips公司开发的一种二进制同步串行总线。IIC总线由主器件和从器件组成。IIC总线支持多机通讯,支持多主控模块。但一个时刻只能有一个主控模块。每个从器件都有一个唯一的地址共主器机寻址。IIC总线通讯速率有两种模式,标准模式为100kbit/s,快速模式为400kbit/s。
IIC的通讯时序:
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的停止信号,标志着一次数据传输结束。启动信号也是由主器件建立的,如下图所示:
数据位传送:SCL为串行同步时钟信号,在每个SCL的高电平期间,SDA上的数据被采样。因此在SCL的高电平时刻,SDA的数据必须保持稳定。在SCL的低电平时刻,SDA的数据才允许被修改。
应答信号ACK和非应答信号NACK:IIC总线每次传输的数据单位为字节。因此每次当IIC总线上8位数据传输完毕,在第9位时钟脉冲SDA会拉高而释放总线,由接收器反馈一个应答信号。
当该应答信号为低电平,规定该信号为有效应答位。表示接收器成功接收了该字节。当应答信号为高电平,规定为非应答位。对于接收器,规定在第 9 个时钟脉冲之前的低电平期间将 SDA 线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
如果接收器是主控器,则在它收到最后一个字节后,发送一个 NACK 信号,以通知被控发器结束数据发送,并释放 SDA 线,以便主控接收器发送一个停止信号。
IIC时序要求:
IIC总线的通讯频率100kHz和400kHz。每个脉冲信号的上升时间,保持时间等时序要求见下图(以Microchip 的24LC04B为例)。