久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1774|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

關(guān)于IIC通信格式的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:450037 發(fā)表于 2021-10-27 14:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


如圖,iic通信有起始位,終止位,寫字節(jié),讀字節(jié),還有寫應(yīng)答和讀應(yīng)答
在讀字節(jié)里,一開始把數(shù)據(jù)線和時鐘線同時拉低,讀出的字節(jié)全部是00,而把數(shù)據(jù)線拉高,時鐘線拉低讀出的數(shù)據(jù)正常
或者只把時鐘線拉低,數(shù)據(jù)線不管也是可以正常讀取字節(jié)的,請問為什么不能把數(shù)據(jù)線拉低。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:158375 發(fā)表于 2021-10-27 15:29 | 只看該作者
你還是好好讀一讀I2C協(xié)議吧.
回復(fù)

使用道具 舉報

板凳
ID:450037 發(fā)表于 2021-10-27 15:50 | 只看該作者
笨笨兔 發(fā)表于 2021-10-27 15:29
你還是好好讀一讀I2C協(xié)議吧.

講啊,沒看協(xié)議我就不再上面問了。有時候你就是看十遍也不一定能想得通,但是經(jīng)別人一點撥,就云開霧散了。言歸正傳。。。
在發(fā)送字節(jié)時,數(shù)據(jù)線和時鐘線我都拉低,然后字節(jié)的最高位與0X80按位與運(yùn)算,給數(shù)據(jù)線,時鐘線拉高延時,時鐘線拉低,循環(huán)八次。沒問題
在讀字節(jié)時,為什么數(shù)據(jù)線不能拉高?比如我先發(fā)送字節(jié)(地址字節(jié)尋找從機(jī)),從機(jī)發(fā)送應(yīng)答后數(shù)據(jù)線拉高,問題來了,我在讀字節(jié)里先給數(shù)據(jù)線拉低會是什么結(jié)果?請高手指點一下
回復(fù)

使用道具 舉報

地板
ID:624769 發(fā)表于 2021-10-27 16:39 | 只看該作者
zhangzhao2423 發(fā)表于 2021-10-27 15:50
講啊,沒看協(xié)議我就不再上面問了。有時候你就是看十遍也不一定能想得通,但是經(jīng)別人一點撥,就云開霧散了 ...

你在理解上, 有一個誤區(qū),  那就是:   I2C 通信,不存在終止位,和起始位。

不同于 Uart 傳輸,有起始位,和終止位,因為他們是占位的,因此我們Uart傳輸一個字節(jié)的數(shù)據(jù),需要10個bit傳輸,就是 起始位 + 8位數(shù)據(jù) + 終止位。

但是,I2C 沒有 起始位,終止位,只存在 起始信號 和 終止信號 他們是不占位的。 換句話說,他們可以在任何時候發(fā)出。
只要  時鐘線(CLK) 在高電平, 這個時候數(shù)據(jù)線 從0=>1 就是終止信號, 數(shù)據(jù)線 從1=>0 就是起始信號,數(shù)據(jù)線 從1=>0=>1 就是再啟動信號(說白了,就是停了在開)。
因此,在I2C傳輸時,數(shù)據(jù)線是只能在 時鐘線(CLK)低電平時發(fā)生變化,不然,就是在發(fā)送 起始/終止信號,那么后續(xù),你以為的“數(shù)據(jù)傳輸”,一定是不會正常發(fā)生的。
回復(fù)

使用道具 舉報

5#
ID:624769 發(fā)表于 2021-10-27 16:48 | 只看該作者
然后現(xiàn)在來回答,你的應(yīng)答問題,
數(shù)據(jù)線時鐘線“ 同時拉低” 是不可以的,因為理論上是不存在“同時”的必定有先后,正常操作,除了發(fā)送 開始/終止 信號, 都是必須先 拉低 時鐘線, 然后拉高/拉低數(shù)據(jù)線。
然后,接受應(yīng)答信號時,其實就是返回 ACK/NAK  也就是說,會返回 0/1 , 我們知道電平只能被拉低不能被拉高,所以你必須先把數(shù)據(jù)線置1,然后發(fā)送時鐘后,客戶機(jī)才能返回 0/1,拉低/拉高數(shù)據(jù)線,讓你知道返回的是 ACK/NAK , 當(dāng)然如果你不判斷是ACK/NAK 也沒有關(guān)系。這個位忽略,不讀結(jié)果就可以了。
回復(fù)

使用道具 舉報

6#
ID:401564 發(fā)表于 2021-10-27 17:00 | 只看該作者
這IIC其實是很簡單的,把IIC協(xié)議秒一遍基本就能明白一個大概了
1,IIC沒有起始位和停止位,那叫起始信號,的停止信號,協(xié)議中有說明,這個信號由主機(jī)發(fā)送
2,應(yīng)答信號,每次發(fā)送或者接收完一個字節(jié)的數(shù)據(jù),后面要跟上一個一天天信號
發(fā)送數(shù)據(jù)的時候,應(yīng)答信號由從機(jī)給出,用來告訴主機(jī),已經(jīng)接收完數(shù)據(jù)了,下一步要干嘛,這是接收到緩存而已,并沒有寫入IIC器件
讀取數(shù)據(jù)的時候,應(yīng)答信號由主機(jī)給出,用來告訴已經(jīng)讀取完數(shù)據(jù)了,下一步要干嘛
回復(fù)

使用道具 舉報

7#
ID:748788 發(fā)表于 2021-10-27 17:41 | 只看該作者
昨天有人發(fā)的“I2C總線讀寫應(yīng)答機(jī)制詳解”,你不妨看看:
http://www.zg4o1577.cn/bbs/dpj-213612-1.html
回復(fù)

使用道具 舉報

8#
ID:123289 發(fā)表于 2021-10-28 09:41 | 只看該作者
A和B之間在一根線D上通訊。如果A出1,B出0,D上是1是0呢。
明白這個道理之后就知道【為什么不能把數(shù)據(jù)線拉低!苛。
回復(fù)

使用道具 舉報

9#
ID:450037 發(fā)表于 2021-10-28 10:07 | 只看該作者
188610329 發(fā)表于 2021-10-27 16:48
然后現(xiàn)在來回答,你的應(yīng)答問題,
數(shù)據(jù)線時鐘線“ 同時拉低” 是不可以的,因為理論上是不存在“同時”的 ...

電平只能被拉低不能被拉高,那為什么還要置1呢
不是說不能拉高嗎
回復(fù)

使用道具 舉報

10#
ID:450037 發(fā)表于 2021-10-28 10:10 | 只看該作者
yzwzfyz 發(fā)表于 2021-10-28 09:41
A和B之間在一根線D上通訊。如果A出1,B出0,D上是1是0呢。
明白這個道理之后就知道【為什么不能把數(shù)據(jù)線拉 ...

我軟件置0,它硬件置1,數(shù)據(jù)線電平信號不會改變?yōu)? 嗎?
回復(fù)

使用道具 舉報

11#
ID:401564 發(fā)表于 2021-10-28 10:36 | 只看該作者
zhangzhao2423 發(fā)表于 2021-10-28 10:10
我軟件置0,它硬件置1,數(shù)據(jù)線電平信號不會改變?yōu)? 嗎?

數(shù)據(jù)線置1只是8051的操作
SDA=1;可以讓8051內(nèi)部讀取到這個端口的電平狀態(tài),可以理解為釋放這個端口
而不是說讓這個端口輸出高電平
而別的單片機(jī)就不一定是這樣的了
所謂硬件置1......
24Cxx的數(shù)據(jù)輸出是OD輸出,它只能輸出低電平,也就是說它只能吸入電流,沒法輸出電流,這就是為什么要上拉電阻的原因
所以,軟件輸出0,端口就是0

評分

參與人數(shù) 1黑幣 +5 收起 理由
zhangzhao2423 + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

12#
ID:624769 發(fā)表于 2021-10-28 13:05 | 只看該作者
zhangzhao2423 發(fā)表于 2021-10-28 10:07
電平只能被拉低不能被拉高,那為什么還要置1呢
不是說不能拉高嗎

你置了1 才能被拉低.

你置了0 永遠(yuǎn)拉不高,

你不信邪可以做實驗, 置0以后, 用5V接限流電阻到IO, 看看能不能讀出個1 來?

評分

參與人數(shù) 1黑幣 +5 收起 理由
zhangzhao2423 + 5

查看全部評分

回復(fù)

使用道具 舉報

13#
ID:23640 發(fā)表于 2021-10-28 14:03 | 只看該作者
信號輸入腳配置成了輸入模式,再設(shè)置輸出應(yīng)該是沒用的啊
回復(fù)

使用道具 舉報

14#
ID:955673 發(fā)表于 2021-10-28 15:51 | 只看該作者
把 拉高 拉低的說法換成釋放和占用就好理解些吧
回復(fù)

使用道具 舉報

15#
ID:123289 發(fā)表于 2021-10-29 09:57 | 只看該作者
本帖最后由 yzwzfyz 于 2021-10-30 11:19 編輯

樓主需要補(bǔ)一下硬件知識。硬件上0、1是如何表達(dá)的,重點是輸出端的電路形式,注意0、1輸出各是多少伏電壓。
當(dāng)兩個輸出端口接在一起時呢?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九热久久免费视频 | 精品一区二区三区四区外站 | 欧美日韩成人 | 美女黄视频网站 | 欧美一区免费 | 免费国产精品久久久久久 | 欧美一区二区三区在线免费观看 | 国产wwwcom | 在线观看 亚洲 | 成人精品鲁一区一区二区 | 日韩av免费在线电影 | 国产欧美精品一区二区三区 | 国产成人免费视频网站高清观看视频 | 久久精品中文字幕 | 日韩中文一区二区三区 | av一区在线观看 | 羞羞视频免费观 | 亚洲欧美在线视频 | 国产91亚洲精品一区二区三区 | 成人av在线播放 | 黄a免费看 | 久操伊人| 中文字幕亚洲精品 | 亚洲成人av | 亚洲精品福利在线 | 夜夜草导航 | 中文字幕av一区二区三区 | 日韩精品亚洲专区在线观看 | 99这里只有精品视频 | 日韩欧美日韩在线 | 国产成人精品福利 | 精品一区二区三区电影 | 国产精品久久久久久久久久久新郎 | 中文字幕一区二区三区在线观看 | 日韩一区二区三区在线视频 | 成人激情视频 | 精产国产伦理一二三区 | 久久成人国产精品 | 在线视频一区二区 | 日日淫| 久久天堂 |