嵌入式单片机应用开发--I2C基本知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28877125/article/details/90774789

开始信号&结束信号

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

在这里插入图片描述

数据有效性

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
在这里插入图片描述

传输时序

SCL是时钟,SDA承载的是数据。当SDA从1变动到0,而SCL还是1时,表示开始数据传输。接下来的7位,就是设备的地址。紧接着的是读写标志,其为1时是读取为0则是写。如果I2C总线上存在着和请求的地址相对应的设备,则从设备会发送一个ACK信号通知主设备,可以发送数据了。接到ACK信号后,主设备则发送一个8位的数据。当传输完毕之后,SCL保持为1,SDA从0变换到1时,标明传输结束。
在这里插入图片描述从这个时序图中可以看到,SCL很重要,并且哪个时钟沿是干嘛的,都是确定好的。比如,前面7个必定是地址,第8个是读写标志,数据传输必须是8位,必须接个ACK信号等等。

写操作的数据流向

在这里插入图片描述
网格的是主设备发送的,白色格子是从设备发送的。从图示中可以看到,对于写操作,从设备都只是发送ACK进行确认而已。

读操作数据流向

在这里插入图片描述
在读操作中,从设备除了发送ACK以外,紧跟着的还有数据。

ACK

每个字节后会跟随一个ACK信号。ACK bit使得接收者通知发送者已经成功接收数据并准备接收下一个数据。所有的时钟脉冲包括ACK信号对应的时钟脉冲都是由master产生的。

ACK信号:发送者在ACK时钟脉冲期间释放SDA线接收者可以将SDA拉低并在时钟信号为高时保持低电平

NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号。Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始。

猜你喜欢

转载自blog.csdn.net/qq_28877125/article/details/90774789