引脚说明
IIC需要俩根引脚可以实现通信,一根是SDA(Serial Data),另一根是SCL(Serial Clock)所有通过IIC接口通信的外围器件都挂载到IIC 总线上。
IIC的总线必须有主器件提供。
每个从器件由于没有片选引脚,所以每个从器件都需要有自己独立的器件地址。
SDA引脚和SCL的输出模式一般都要输出为开漏模式,因为在IIC总线上的器件都被总线上的上拉电阻拉高,设置为开漏模式,可以防止短路。
通信速率
标准速度为100KHZ,快速速度为400KHZ。由于IIC为半双工通信,同一时间只能发送或者接收数据,所以不适合大量数据传输的接口。
通信过程
IIC总线上的从器件由主器件利用SCL引脚提供脉冲信号,主器件可以可以发起开始或者结束通信的信号,如上图所示的起始位和停止位。
从器件都有自己独立的地址(一般为7bit),在主模式下遵循高位先出(MSB)。第八位bit为(R\W),当是R(read)为1,从器件发送数据给主器件,主器件接收数据,当是W(write)为0,主器件给从器件发送数据;
(1)通信顺序
1.主器件发送开始信号(起始位)
2.主器件发送地址
3.主器件等待从器件响应(ACK)
(2)空闲状态
SCK和SCL空闲状态都是高电平,可由上图看出,在起始位前都是高电平。
(3)开始信号
在SCL为高电平时,SDA拉低,这就是开始信号。
(4)数据传输
主器件发送开始信号以后发送从器件地址一个byte(7bit地址+1bit(R\W)),遵循MSB高位先出。
在脉冲信号高电平期间,SDA的电平是稳定的,这时候数据是锁存的,可以进行收发。
在脉冲信号低电平期间,SDA的电平是在变化的,这时候不允许收发数据。
(5)应答信号
IIC有应答机制,接收放必须应答发送方,若没有应答发送方,则发送不会发送数据或者一直等待应答,也可以不发送应答,当不需要接收数据的时候。
在发送数据的第九个脉冲信号接收方向发送方应答,当SDA为低电平的时候则应答了,高电平则是没有应答。
(6)停止信号
当SCL为高电平的时候,SDA电平被拉高,则产生停止信号。