0、概要
IIC(IIC,I2C,inter-Integrated circuit),两线式串行总线,用于MCU和外设间的通信。
IIC只需两根线:数据线SDA和时钟线SCL。以半双工方式实现MCU和外设之间数据传输,速度最高可达400kbps,因此适用于慢速设备。
IIC设备使用7位地址(也有的是10位地址),所以在总线上最多支持127个设备,即我们看到代码的IIC地址一般不会超过0xff。
多主机I2C总线结构
注意SDA和SCL两根总线需要上拉,使总线处于空闲状态。
1、IIC协议
1-1 空闲状态
协议规定,SDA和SCL同时为高电平时,总线处于空闲状态。上拉电阻保证电平处于高电平。
1-2 起始信号和停止信号
- 起始信号:SCL为高电平时,SDA电平发生高到低的跳变
- 停止信号:SCL为高电平时,SDA电平发生低到高的跳变
1-3 应答信号
发送器每发送完一个字节(8个脉冲),在第9个脉冲间释放总线,接收器返回一个ACK信号,协议规定,低电平为有效应答,高电平为无效应答。
1-4 数据有效性
协议对有效数据进行了规定:即时钟信号为高电平期间,数据必须保持稳定;时钟信号低电平期间,数据线上的电平才允许变化。也就是说,数据在时钟信号到来前必须准备好,并保持到时钟信号的下降沿之后。
Wu_Being博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!
《学习IIC(I2C)原理》: http://blog.csdn.net/u014134180/article/details/78264817
如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。