i2c总线传递数据时,为什么scl先拉低在拉高

2025-01-02 18:09:42
推荐回答(3个)
回答1:

楼下的说了等于白说啊。。。

首先说一下感想:I2C确实不容易啊!
楼主说的I2C传递数据是指的主机往从机上写数据对吧?
楼主应该知道:I2C在数据传送(发送、接收)时,只有在SCL为低电平期间,才允许SDA上的电平改变状态;SCL为高电平期间,SDA上的数据必须保持稳定。
那么看这个循环:
{
temp=temp<<1; //左移一位 移出的一位在CY中
SCL=0; //只有在scl=0时sda能变化值
delay(); ---------|
SDA=CY; |------>这3行程序,数SDA可以变化,主机SDA数据准备完成(类似于子弹上
delay(); --------- | 膛,随时可以发给从机)

SCL=1; SDA数据位保持稳定,数据发送给从机(子弹发射)
delay();
}

所以,scl先拉低在拉高。
手打不容易啊。。。。。。。ORZ

回答2:

因为数据只能在SCL低电平期间发生变化,在高电平期间要保持稳定。

回答3:

好好看看I平方总线机制,就明白了。概念跟理论结合你才能明白。