標(biāo)題: 關(guān)于24c02 eeprom I2c的時(shí)序圖的問題 [打印本頁]

作者: 134849694164151    時(shí)間: 2018-5-18 01:04
標(biāo)題: 關(guān)于24c02 eeprom I2c的時(shí)序圖的問題
麻煩大家?guī)臀铱匆幌,我需要你們。就是關(guān)于I2c的時(shí)序圖的問題,發(fā)送字節(jié)的時(shí)候,不管發(fā)送的事0還是1不是都應(yīng)該有電平的高低變化嗎?那么你看看我下邊的這個(gè)圖,for循環(huán)里邊,這個(gè),放發(fā)送的dat第一個(gè)位的時(shí)候,假設(shè)之前SDA這條線上的電平就是低的,那么發(fā)這位的時(shí)候,還是低的呀!根本電平?jīng)]有變化,想問問這樣行嗎?這是怎么回事

Screenshot_2018-05-18-00-51-43-39.png (152.24 KB, 下載次數(shù): 74)

Screenshot_2018-05-18-00-51-43-39.png

作者: HC6800-ES-V2.0    時(shí)間: 2018-5-18 07:25
你可能記錯(cuò)。
I2C只要求在SCL讀取期間,SDA一定要保證電平穩(wěn)定,沒有說要變化。
例如:發(fā)送字節(jié)0,當(dāng)SCL到高電平讀數(shù)據(jù)時(shí),只要你的SDA一直都是低電平,持續(xù)5us以上就可以,并沒有說電平變化。
我們一般做法是,先讓SDA置成高或低電平,再讓SCL從低電平跳到高電平,開始讀數(shù)據(jù),就可以了。
你的程序就是這樣的嘛。沒毛!
作者: 林曦    時(shí)間: 2018-5-18 08:40
I2C發(fā)送數(shù)據(jù)時(shí),只有在SCL低電平的時(shí)候,SDA電平改變,發(fā)送一位數(shù)據(jù)。當(dāng)SDA第一次發(fā)送0時(shí),第二次依舊發(fā)送0,SDA電平是不會(huì)改變的。
如圖所示,假如dat為1001 1100,dat右移7位,是將第一位1發(fā)送出去,然后第二位0左移1位,dat為 0011 1000,for第二次循環(huán)發(fā)送第一位0,依次類推,把dat數(shù)據(jù)發(fā)送出去。
作者: 134849694164151    時(shí)間: 2018-5-18 08:49
各位麻煩幫我看看吧
作者: 134849694164151    時(shí)間: 2018-5-18 09:44
HC6800-ES-V2.0 發(fā)表于 2018-5-18 07:25
你可能記錯(cuò)。
I2C只要求在SCL讀取期間,SDA一定要保證電平穩(wěn)定,沒有說要變化。
例如:發(fā)送字節(jié)0,當(dāng)SCL ...

好的,我明白了,感謝你,你真好
作者: 134849694164151    時(shí)間: 2018-5-18 09:46
林曦 發(fā)表于 2018-5-18 08:40
I2C發(fā)送數(shù)據(jù)時(shí),只有在SCL低電平的時(shí)候,SDA電平改變,發(fā)送一位數(shù)據(jù)。當(dāng)SDA第一次發(fā)送0時(shí),第二次依舊發(fā)送0 ...

首先感謝你,然后我還有一個(gè)問題想問,那個(gè)dat的數(shù)據(jù)到底是怎么發(fā)送出去的呀?就是怎么移位之后,就能發(fā)出去一個(gè)字節(jié)呢?不知道聽沒聽懂我說的
作者: 134849694164151    時(shí)間: 2018-5-18 09:47
HC6800-ES-V2.0 發(fā)表于 2018-5-18 07:25
你可能記錯(cuò)。
I2C只要求在SCL讀取期間,SDA一定要保證電平穩(wěn)定,沒有說要變化。
例如:發(fā)送字節(jié)0,當(dāng)SCL ...

還有一事相求,就是這個(gè)dat的那個(gè)數(shù)據(jù)是怎么一位一位的傳送過去的呀?有時(shí)候高位傳送在前,有時(shí)低位在前,我知道那個(gè)移位操作,但是不理解數(shù)據(jù)怎么從單片機(jī)發(fā)出去的原理




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