IIC简介:
IIC 翻译为Inter-Integrated Circuit(集成电路总线),是由PHILIPS公司开发的两线式串行通信总线。
特点:
- I2C使用两条线在主控制器和从机之间进行数据通讯。一条是 SCL(串行时钟线),另外一条是SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。
- 一个IIC控制器下可以挂多个I2C从设备,每个从设备有不同的器件地址,IIC主机可以通过不同的地址和从设备通信。
- IIC是半双工,而不是全双工 ,同一时间只可以单向通信
速度:
- I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。
硬件连接:
- SCL和SDA都需要接上拉电阻 (大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。
IIC协议详解:
1、起始位
IIC起始位通信起始标志,通过这个起始位可以告诉从机,我要开始了。SCL高电平期间,SDA出现下降沿。
2、停止位
停止位就是IIC停止通信的标志,和起始位功能相反。通过结束位可以告诉从机我要结束了。SCL高电平期间,SDA出现上升沿。
3、应答信号
当IIC发送完8位数据以后,会将SDA设置为输入状态,等待IIC从机应答,也就是等到IIC从机告诉主机我收到数据了。应答信号是由从机发出的,主机需要提供应答信号所需要的时钟,主机发送完8位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过拉低SDA表示发出应答信号,表示通信成功,否则表示通信失败。
4、数据传输
IIC总线在数据传输的时候要保证SCL高电平期间,SDA上数据稳定,因此SDA上的数据变化只能在SCL低电平期间发生。PS(高电平期间如果变化岂不是和起始结束位无法分开)
5、读时序
主机要向从机写数据时:
1、发送起始信号START。
2、发送从 设备地址(7位)+写位(1位),0代表主机发送数数据写,1代表主机接收数据读。
3、等待从设备ACK。
4、重新发送起始信号START
5、主设备发送要读取的寄存器地址。
6、等待从设备ACK
7、重新发送起始信号START
8、重新发送IIC从设备的地址(7位)+读位(1位),接下来要从IIC设备中读取取数据
9、等待从设备发送ACK应答信号。
10、从从设备中读取到数据。
11、主设备发送NACK,表示读取完成。
12、主机发送 STOP信号,停止IIC通信。
6、写时序
1、发送起始信号START。
2、发送从 设备地址(7位)+写位(1位),0代表主机发送数数据写,1代表主机接收数据读。
3、等待从设备ACK。
4、重新发送起始信号START
4、主设备发送要写入的寄存器地址。
5、等待从设备ACK
6、写入寄存器的数据。
7、等待从设备ACK
8、发送STOP信号,结束IIC通信。