I2C跟串口一样,仅需2根线通讯即可,在某些引脚紧张的应用中非常有用,不过I2C相比于串口,通讯协议更简单一点,距离也更短一些,仅限于板间通信。大多数IC都支持I2C协议。
I2C的时序图为:
I2C数据传输是在起始条件和停止条件之间。
起始条件和停止条件都是SCL为高一段时间产生。起始条件为SDA从高变为低,停止条件为SDA从低变为高。
I2C数据传输规则为,第一字节必须为地址,一般器件地址都是7位(也有10位的),放在高7位,最后一位时读写标识,所以,读写地址是不相同的,并且很多IC都可以配置多个地址选择,这是为了在一组I2C上接多个IC,因为I2C是通过地址来识别从机的。
每传输一个字节,从机都要回复一个ACK来表示是否完成接受,回复0继续接受,回复1停止接受。
I2C写操作很简单,传输从机地址以及数据即可。
I2C读也是一样,传输从机地址即可。
写操作:
一般而言,写操作要配合DataSheet,有写命令的操作,写数据的操作。
例如一般的OLED就有写命令和写数据两种操作,做法是,写地址命令/数据
标识 一个字节或多个字节命令信息。
标识 一个字节或多个字节命令信息。
一般EEPROM的写操作为:写地址需要写入的EEPROM内部起始地址(1字节或多字节) 1字节或多字节信息(从起始地址开始写入1个字节或者多个字节信息)
读操作:
以读EEPROM为例,需