IIC全称为Inter-Integrated Circuit(集成电路总线)。IIC接口只有两根线:SCL,SDA。SCL为同步时钟线,SDA为数据线,通SPI不同的是,数据线为双向接口,也就是说,发送接收都走这根线。
IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。
多数EEPROM芯片都是IIC接口,指令有所不同,但是传输格式都是一样的。
以下我们以AT24系列EEPROM为例,解析下IIC。
AT24系列芯片介绍AT24系列产品有AT24C01A,AT24C02,AT24C04,AT24C08A,AT24C16A。分布对应容量1K(128x8), 2K (256 x 8),4K (512 x 8),8K (1024 x 8),16K(2048 x 8)。
有如下特性:
1. 支持标准电压及低压操作
---2.7(Vcc=2.7v– 5.5v)
---1.8(Vcc=1.8v– 5.5v)
2.二线传输,即IIC
3.100 kHz (1.8V)和400 kHz (2.7V, 5V)兼容
4.带写保护pin
5.8字节页(1K, 2K), 16字节页(4K, 8K, 16K)写入模式
6.高可靠性:支持100万次写,数据保持100年
芯片管脚如下:各引脚含义如下:
SCL:在SCL上升沿采样数据送入EEPROM,在SCL下降沿将数据从EEPROM发出去。
SDA:这个引脚是双向的,用于数据传输。
A0-A2:A2,A1和A0引脚是为AT24C01A和AT24C02硬连接的设备地址输入。单个总线系统上最多可寻址八个1K / 2K设备。
WP:当接地时,写保护引脚允许正常的读/写操作。连接写保护引脚至VCC,写保护功能已启用。
IIC控制协议
对SCL信号,首先关注的是它的频率,由器件手册可以查到:
说明在低压时最大频率为100KHz,高压时为400KHz。
总线时序如下:
在实际设计中。Scl和SDA在空闲时都是高电平。时序上的个参数标准需要满足器件手册上的要求。比如tLow,查表知在低压模式下不少于4.7us,高压模式下不小于1.2us。
开始传输需要指定一个起始位,传输结束时需要指定结束位,如图:
在SCL为高电平时,SDA由高到低跳变后,即为开始传输。SCL高电平的情况下,SDA由低到高跳变则为结束。
数据只有在SCL为低电平的时候才能跳变,SCL为高电平时数据有效。如图:
指令之间需要有回应信号:ACK。第9个周期一般为ACK信号。如图:
上图是读写基本传输模式:
A表示ACK,NA表示NoACK。在横线下面的表示从机发给主控的,在横线上面的是主控发送给从机的。NA是高电平,A是低电平。