Data and ACK/NACK
正常情況
主接收機必須向從機發送傳輸結束的信號。
異常情況
- 發送到總線上的地址,卻沒有匹配的從機
- 從機處于 busy 狀態。
- 在傳輸過程中,從機獲取其不理解的數據或命令。
- 在傳輸過程中,從機無法再接收任何數據字節。
主機可以生成停止條件以中止傳輸,或生成重復啟動條件以啟動新傳輸。
Clock stretching 時鐘延展
- 時鐘延展:通過將 SCL 線保持在低電平來暫停傳輸。在 SCL 再次拉高之前,傳輸無法進行。
- 從機通過將 SCL 線拉低,強制主機進入等待狀態。
- 時鐘延展功能是可選的,不是必選的
- 時鐘延展導致需要更多時間來存儲接收到的字節或準備另一個要傳輸的字節
- 通過延長每個時鐘低電平周期來降低總線時鐘。任何主機的速度都與該設備的內部運行速度相適應。
- 在 Hs 模式下,此握手功能只能在字節級別使用
I2C 主設備始終控制著時鐘線 SCL,不論是往設備寫還是從設備讀。一般情況下,如果操作對象是 EEPROM 或者其他簡單設備而言,無所謂,但是,如果從設備是處理器,在接到主機命令后要去處理一些運算然后得出結果返回給主機。這個時候可能造成來不及處理。怎么辦?這時,從設備會主動控制時鐘線把它拉低!直到數據準備好之后再釋放時鐘線,把控制權交還給 MASTER。這也是 I2C 通信系統中,從機唯一能控制總線的時候!
關鍵是很多 I2C 主機不支持 clock stretching 功能,所以,無法和帶有 clock stretching 功能的從機通信!所以,各位在選擇主機器件之前,必須要注意這一點,不然整個設計方案可能報廢,影響很大。
-
時鐘
+關注
關注
11文章
1877瀏覽量
132806 -
I2C
+關注
關注
28文章
1528瀏覽量
126918
發布評論請先 登錄
請問S32K148 LPI2C主控如何支持時鐘延展功能?
i2c總線ppt(I2C總線器件應用)
i2c總線技術 (非常詳細)
I2C Guid I2C指南
I2C總線在Linux系統中的驅動設計
I2C總線實驗(實時時鐘、EEPROM和ZLG7290的實驗

硬件I2C與模擬I2C

評論