I2C关于读写控制位

*1、I2C协议简介*
2、空闲开始/应答/结束信号
2.1空闲
I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
2.2 开始和结束
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

2.3 应答
发送方在发送完8bit数据后,在第9个时钟期间释放数据线,等待接收方的应答信号。接收方此时应给出应答(ACK)或非应答信号(NAK),SCL被拉低表示为应答信号,SCL置高为NAK信号。注意应答信号由接收方发出(可能为主,也可能为从,主从和发送接收不要混淆)。接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

3、I2C读写
不论是读还是写,都是由主设备发起和结束的。也就是由主设备产生开始和结束条件。I2C设备地址为8bit,其中最低位为读写位,0为写,1为读。实际地址位为7bit。
3.1 写过程
可以总结为以下过程:
1、发送起始位
2、发送设备地址信息(写)
4、发送寄存器信息
5、发送数据信息
6、发送停止位
上述过程省略了等待应答,每发送一个字节数据都会等待应答。

I2C关于读写控制位_第1张图片
3.2 读过程
读过程相对来讲会复杂一些,需要先写(写要读的寄存器)再读。并且读的时候由主设备发送ACK
1、发送起始位
2、发送设备地址信息(写)
4、发送要读的寄存器信息
5、重新开始,restart
6、发送设备地址信息(读)
7、读取数据
8、接收完毕,发送NAK
9、发送停止信号

I2C关于读写控制位_第2张图片

读过程的小结
读过程可以理解先发送一个地址,这个地址不能是只能是地址,最后一位空着,为0。即相当于写。是相当于写地址。但是可以理解它为纯地址,切记最低位不能是1.即地址不能是读地址。
然后再发送读地址进行读。

你可能感兴趣的:(驱动)