新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > I2C總線在單片機上的實現(xiàn)

I2C總線在單片機上的實現(xiàn)

作者: 時間:2012-03-07 來源:網(wǎng)絡(luò) 收藏

總線的運行()由主機控制。所謂主機是指啟動數(shù)據(jù)的傳送(發(fā)出啟動信號)、發(fā)出時鐘信號以及傳送結(jié)束時發(fā)出停止信號的設(shè)備,通常主機都是微處理器。被主機尋訪的設(shè)備稱為從機。為了進行通訊,每個接到的設(shè)備都有一個唯一的地址,以便于主機尋訪。主機和從機的數(shù)據(jù)傳送,可以由主機發(fā)送數(shù)據(jù)到從機,也可以由從機發(fā)到主機。凡是發(fā)送數(shù)據(jù)到總線的設(shè)備稱為發(fā)送器,從總線上接收數(shù)據(jù)的設(shè)備被稱為接受器。

I2C 總線上允許連接多個微處理器以及各種外圍設(shè)備,如存儲器、LED及LCD驅(qū)動器、A/D及D/A轉(zhuǎn)換器等。為了保證數(shù)據(jù)可靠地傳送,任一時刻總線只能由某一臺主機控制,各微處理器應(yīng)該在總線空閑時發(fā)送啟動數(shù)據(jù),為了妥善解決多臺微處理器同時發(fā)送啟動數(shù)據(jù)的傳送(總線控制權(quán))沖突,以及決定由哪一臺微處理器控制總線的問題,允許連接不同傳送速率的設(shè)備。多臺設(shè)備之間時鐘信號的同步過程稱為同步化。

2 I2C

在I2C 總線傳輸過程中,將兩種特定的情況定義為開始和停止條件(見圖3):當SCL保持“高”時,SDA由“高”變?yōu)椤暗汀睘殚_始條件;當SCL保持“高”且 SDA由“低”變?yōu)椤案摺睍r為停止條件。開始和停止條件均由主控制器產(chǎn)生。使用硬件接口可以很容易地檢測到開始和停止條件,沒有這種接口的微機必須以每時鐘周期至少兩次對SDA取樣,以檢測這種變化。

SDA線上的數(shù)據(jù)在時鐘“高”期間必須是穩(wěn)定的,只有當SCL線上的時鐘信號為低時,數(shù)據(jù)線上的“高”或“低”狀態(tài)才可以改變。輸出到SDA線上的每個字節(jié)必須是8 位,每次傳輸?shù)淖止?jié)不受限制,但每個字節(jié)必須要有一個應(yīng)答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時,它可以保持時鐘線SCL為低,以促使發(fā)送器進入等待狀態(tài);當接收器準備好接受數(shù)據(jù)的其它字節(jié)并釋放時鐘SCL后,繼續(xù)進行。I2C數(shù)據(jù)總線傳送時序如圖 4所示。

數(shù)據(jù)傳送具有應(yīng)答是必須的。與應(yīng)答對應(yīng)的時鐘脈沖由主控制器產(chǎn)生,發(fā)送器在應(yīng)答期間必須下拉SDA線。當尋址的被控器件不能應(yīng)答時,數(shù)據(jù)保持為高并使主控器產(chǎn)生停止條件而終止傳輸。在傳輸?shù)倪^程中,在用到主控接收器的情況下,主控接收器必須發(fā)出一數(shù)據(jù)結(jié)束信號給被控發(fā)送器,從而使被控發(fā)送器釋放數(shù)據(jù)線,以允許主控器產(chǎn)生停止條件。合法的數(shù)據(jù)傳輸格式如下:



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉