标题: 关于单片机IIC总线模拟起始和终止信号的问题! [打印本页]

作者: tanghao8887    时间: 2018-11-30 14:03
标题: 关于单片机IIC总线模拟起始和终止信号的问题!
我搞不懂,模拟终止信号为什么SCL时钟线电平为什么要拉低,按道理来说,模拟起始信号和终止信号都是时钟线电平处于高电平状态,然后变幻的是数据线sda,起始是由高到低,终止是由低到高过程中,不是说时钟信号都保持高电平吗?如图,为什么模拟终止信号时,需要将时钟电平拉低,要知道,模拟起始和终止信号时,无论时钟线的电平是高还是低,数据线的电平都可以任意变化的!起始信号我能理解,我就搞不懂为什么偏偏模拟终止信号,要去将时钟电平拉低在拉高,我不管时钟电平可以吗?比如我这样:

单片机源程序:

void  aaa()
{
     SCL=1;     //首先时钟为高电平状态下
     SDA=0;    //终止信号先低后高
     delay(200);  //低电平延时5us
     SDA=1;       //终止信号先低后高
     delay(200);   //高电平延时5us
}

     

      

Screenshot_20181130-035009.png (78.46 KB, 下载次数: 75)

Screenshot_20181130-035009.png

Screenshot_20181130-035029.png (111.27 KB, 下载次数: 77)

Screenshot_20181130-035029.png

作者: Y_G_G    时间: 2018-11-30 17:28
IIC有严格的时序的,也就是说,你得照着人家的协议一步一步的来,那么问题来了:为什么要先拉低时钟线呢?
如果你不管它,你就不知道刚才时钟线是什么状态的,如果是高电平呢?那么你SDA在时钟线为高的时候,产生的所有变化都会被视为起始或者停止信号,明白了没有?
逻辑关系这种东西是死的,是怎么样就怎么样,所以,一定要确定状态。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1