I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。
特点:
1. 两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;
2. 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;
3. 它是一个多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破环;
4. 串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;
信号类型:开始信号、结束信号和应答信号
开始信号:SCL为高电平,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单位发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传输信号的判断。若未收到应到信号,由判断为受控单元出现故障。
I2C总线通信过程中出现的几种信号状态和时序:
1. 总线空闲状态
I2C总线的SDA和SCL同时处于高电平。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
2. 启动信号
SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变)
3. 停止信号
SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变)
4. 数据位传送
在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。
进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。
5. 应答信号
I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
6. 重启信号
在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放总线,就需要利用重启动Sr信号时序
时钟同步、总线冲突和总线总裁、总线封锁状态这些主要在多主机的情况下应用的。而我这次的应用是一个主机和一个从机简单的通信,故没有使用这些状态。