新聞中心

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

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

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

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

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

        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é)必須要有一個應答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時,它可以保持時鐘線SCL為低,以促使發(fā)送器進入等待狀態(tài);當接收器準備好接受數(shù)據(jù)的其它字節(jié)并釋放時鐘SCL后,繼續(xù)進行。I2C數(shù)據(jù)總線傳送時序如圖 4所示。

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



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 日照市| 烟台市| 东台市| 抚宁县| 古交市| 浙江省| 庄河市| 仁怀市| 新安县| 恭城| 乌审旗| 牟定县| 普宁市| 达拉特旗| 岑巩县| 和龙市| 昌宁县| 抚松县| 兴文县| 娱乐| 平远县| 福海县| 鄂托克前旗| 左云县| 双辽市| 广德县| 佛山市| 仲巴县| 宣武区| 铁岭市| 双桥区| 全州县| 赣州市| 龙泉市| 南城县| 达尔| 信宜市| 苏州市| 新疆| 进贤县| 化德县|