iic

iic

集成電路總線
IIC即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設計出來的,主要是用來連接整體電路(ICS),IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結構下,同時每個芯片都可以作為實時數據傳輸的控制源。這種方式簡化了信号傳輸總線接口。飛利浦公司最初設計的I²C總線規範,詳細描述了I²C總線的各種協議字,以及總線狀态,幫助I²C總線開發人員迅速入門與提高。[1]
  • 中文名:集成電路總線
  • 外文名:Inter-Integrated Circuit
  • 用途:
  • 簡稱:IIC
  • 應用:伺服控制系統
  • 所在領域:英特爾PIIX4結構體系
  • 所屬領域:IT

I2C簡介

即I2C,一種總線結構。

例如:内存中的SPD信息,通過IIC,與BX芯片組聯系,IIC存在于英特爾PIIX4結構體系中。

随着大規模集成電路技術的發展,把CPU和一個單獨工作系統所必需的ROM、RAM、I/O端口、A/D、D/A等外圍電路集成在一個單片内而制成的單片機或微控制器愈來愈方便。目前,世界上許多公司生産單片機,品種很多。其中包括各種字長的CPU,各種容量的ROM、RAM以及功能各異的I/O接口電路等等,但是,單片機的品種規格仍然有限,所以隻能選用某種單片機來進行擴展。擴展的方法有兩種:一種是并行總線,另一種是串行總線。由于串行總線的連線少,結構簡單,往往不用專門的母闆和插座而直接用導線連接各個設備。因此,采用串行線可大大簡化系統的硬件設計。PHILIPS公司早在十幾年前就推出了I2C串行總線,利用該總線可實現多主機系統所需的裁決和高低速設備同步等功能。因此,這是一種高性能的串行總線。

飛利浦電子公司日前推出新型二選一I2C主選擇器,可以使兩個I2C主設備中的任何一個與共享資源連接,廣泛适用于從MP3播放器到服務器等計算、通信和網絡應用領域,從而使制造商和終端用戶從中獲益。PCA9541可以使兩個I2C主設備在互不連接的情況下與同一個從設備相連接,從而簡化了設計的複雜性。此外,新産品以單器件替代了I2C多個主設備應用中的多個芯片,有效節省了系統成本。

硬件結構

I2C串行總線一般有兩根信号線,一根是雙向的數據線SDA,另一根是時鐘線SCL。所有接到I2C總線設備上的串行數據SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上。

為了避免總線信号的混亂,要求各設備連接到總線的輸出端時必須是漏極開路(OD)輸出或集電極開路(OC)輸出。設備上的串行數據線SDA接口電路應該是雙向的,輸出電路用于向總線上發送數據,輸入電路用于接收總線上的數據。而串行時鐘線也應是雙向的,作為控制總線數據傳送的主機,一方面要通過SCL輸出電路發送時鐘信号,另一方面還要檢測總線上的SCL電平,以決定什麼時候發送下一個時鐘脈沖電平;作為接受主機命令的從機,要按總線上的SCL信号發出或接收SDA上的信号,也可以向SCL線發出低電平信号以延長總線時鐘信号周期。總線空閑時,因各設備都是開漏輸出,上拉電阻Rp使SDA和SCL線都保持高電平。任一設備輸出的低電平都将使相應的總線信号線變低,也就是說:各設備的SDA是“與”關系,SCL也是“與”關系。

總線對設備接口電路的制造工藝和電平都沒有特殊的要求(NMOS、CMOS都可以兼容)。在I2C總線上的數據傳送率可高達每秒十萬位,高速方式時在每秒四十萬位以上。另外,總線上允許連接的設備數以其電容量不超過400pF為限。

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

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

數據傳輸

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

SDA線上的數據在時鐘“高”期間必須是穩定的,隻有當SCL線上的時鐘信号為低時,數據線上的“高”或“低”狀态才可以改變。輸出到SDA線上的每個字節必須是8位,每次傳輸的字節不受限制,但每個字節必須要有一個應答ACK。如果一接收器件在完成其他功能(如一内部中斷)前不能接收另一數據的完整字節時,它可以保持時鐘線SCL為低,以促使發送器進入等待狀态;當接收器準備好接受數據的其它字節并釋放時鐘SCL後,數據傳輸繼續進行。I2C數據總線傳送時序如圖4所示。

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

I2C總線在開始條件後的首字節決定哪個被控器将被主控器選擇,例外的是“通用訪問”地址,它可以在所有期間尋址。當主控器輸出一地址時,系統中的每一器件都将開始條件後的前7位地址和自己的地址進行比較。如果相同,該器件即認為自己被主控器尋址,而作為被控接收器或被控發送器則取決于R/W位。

應用

I2C總線是各種總線中使用信号線最少,并具有自動尋址、多主機時鐘同步和仲裁等功能的總線。因此,使用I2C總線設計計算機系統十分方便靈活,體積也小,因而在各類實際應用中得到廣泛應用。下面舉二個應用示例。I2C的運用比如在鐵電存儲器中,用鐵電存儲數據就是用的I2C總線協議。

伺服控制系統用I2C擴展LCD顯示器

圖5是一個伺服系統的結構圖。它用8XC752單片機的PWM輸出經放大後來驅動電機,電機的轉速由測速機測取并直接送到8XC752片内的A/D電路。處理後的有關信息經I2C總線送到LCD驅動芯片PCF8577以驅動64段LCD顯示闆。

通用I/O端口作為I2C總線接口

目前,51、96系列的單片機應用很廣,但是由于它們都沒有I2C總線接口,從而限制了在這些系統中使用具有I2C總線接口的器件。通過對I2C總線時序的分析,可以用51單片機的兩根I/O線來實現I2C總線的功能。接I2C總線規定:SCL線和SDA線是各設備對應輸出狀态相“與”的結果,任一設備都可以用輸出低電平的方法來延長SCL的低電平時間,以迫使高速設備進入等待狀态,從而實現不同速度設備間的時鐘同步。因此,即使時鐘脈沖的高、低電平時間長短不一,也能實現數據的可靠傳送,可以用軟件控制I/O口做I2C接口。下面就是用GMS97C2051的通用I/O口來作為I2C總線接口,并由軟件控制實現數據傳送的例子,圖6為其連線圖。

在單主控器的系統中,時鐘線僅由主控器驅動,因此可以用51系列的一根I/O線作為SCL的信号線,将其設置為輸出方式,并由軟件控制來産生串行時鐘信号。在實際系統中使用了P1.3。另一根I/O線P1.2作為I2C總線的串行數據線,可在軟件控制下在時鐘的低電平期間讀取或輸出數據。系統傳輸數據的過程如下:先由單片機發出一個啟始數據信号,接着送出要訪問器件的7位地址數據,并等待被控器件的應答信号.

當收到應答信号後,根據訪問要求進行相應的操作。如果是讀入數據,則數據線可一直設為輸入方式,中間不需要改變SDA線的工作方式,每讀入一個字節均應依次檢測應答信号;如果是輸出數據,則首先将SDA設置為輸出方式,當發送完一個字節後,需要改變SDA線為輸入方式,此時讀入被控器件的應答信号就完成了一個字節的傳送。當所有數據傳輸完畢後,應向SDA發出一個停止信号,以結束該次數據傳輸。

I2C範例

下面給出51系列用彙編語言實現啟始、停止、讀、寫、應答的程序,讀者也可以根據I2C總線時序在96系列或其它單片機上實現I2C總線接口。

上一篇:74HC573

下一篇:心電圖機

相關詞條

相關搜索

其它詞條