標題: 關(guān)于單片機IIC總線模擬起始和終止信號的問題! [打印本頁]

作者: tanghao8887    時間: 2018-11-30 14:03
標題: 關(guān)于單片機IIC總線模擬起始和終止信號的問題!
我搞不懂,模擬終止信號為什么SCL時鐘線電平為什么要拉低,按道理來說,模擬起始信號和終止信號都是時鐘線電平處于高電平狀態(tài),然后變幻的是數(shù)據(jù)線sda,起始是由高到低,終止是由低到高過程中,不是說時鐘信號都保持高電平嗎?如圖,為什么模擬終止信號時,需要將時鐘電平拉低,要知道,模擬起始和終止信號時,無論時鐘線的電平是高還是低,數(shù)據(jù)線的電平都可以任意變化的!起始信號我能理解,我就搞不懂為什么偏偏模擬終止信號,要去將時鐘電平拉低在拉高,我不管時鐘電平可以嗎?比如我這樣:

單片機源程序:

void  aaa()
{
     SCL=1;     //首先時鐘為高電平狀態(tài)下
     SDA=0;    //終止信號先低后高
     delay(200);  //低電平延時5us
     SDA=1;       //終止信號先低后高
     delay(200);   //高電平延時5us
}

     

      

Screenshot_20181130-035009.png (78.46 KB, 下載次數(shù): 75)

Screenshot_20181130-035009.png

Screenshot_20181130-035029.png (111.27 KB, 下載次數(shù): 77)

Screenshot_20181130-035029.png

作者: Y_G_G    時間: 2018-11-30 17:28
IIC有嚴格的時序的,也就是說,你得照著人家的協(xié)議一步一步的來,那么問題來了:為什么要先拉低時鐘線呢?
如果你不管它,你就不知道剛才時鐘線是什么狀態(tài)的,如果是高電平呢?那么你SDA在時鐘線為高的時候,產(chǎn)生的所有變化都會被視為起始或者停止信號,明白了沒有?
邏輯關(guān)系這種東西是死的,是怎么樣就怎么樣,所以,一定要確定狀態(tài)。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1