孫軼君,周 霽,周 彬
(中國電子科技集團公司第四十七研究所,沈陽110032)
I2C總線實際上已經成為一個國際標準,在超過100種不同的IC上實現而且得到超過50家公司的許可。在消費者電子,電訊和工業(yè)電子中,看上去不相關的設計里經常有很多相似的地方。例如幾乎每個系統(tǒng)都包括:①一些智能控制,通常是一個單片的微控制器;②通用電路,例如LCD驅動器,遠程I/O口,RAM,EEPROM或數據轉換器;③面向應用的電路,譬如收音機和視頻系統(tǒng)的數字調諧和信號處理電路,或者是音頻撥號電話的DTMF發(fā)生器。
為了使這些相似之處對系統(tǒng)設計者和器件廠商都得益,而且使硬件效益最大,電路最簡單,Philips開發(fā)了一個簡單的雙向兩線總線,實現有效的IC之間控制。這個總線就稱為InterIC或I2C總線?,F在Philips包括超過150種CMOS和雙極性兼容I2C總線的IC,可以執(zhí)行前面提到的三種類型的功能。所有符合I2C總線的器件組合了一個片上接口,使器件之間直接通過I2C總線通訊。這個設計概念解決了很多在設計數字控制電路時遇到的接口問題。
I2C總線支持任何IC生產過程(NMOS,MOS,雙極性)。兩線——串行數據(SDA)和串行時鐘(SCL)線在連接到總線的器件間傳遞信息。每個器件都有一個唯一的地址識別(無論是微控制器,LCD驅動器,存儲器或鍵盤接口),而且都可以作為一個發(fā)送器或接收器(由器件的功能決定)。很明顯,LCD驅動器只是一個接收器,而存儲器則既可以接收又可以發(fā)送數據。除了發(fā)送器和接收器外,器件在執(zhí)行數據傳輸時也可以被看作是主機或從機。主機是初始化總線的數據傳輸并產生允許傳輸的時鐘信號的器件。此時,任何被尋址的器件都被認為是從機。
SDA和SCL都是雙向線路,都通過一個電流源或上拉電阻連接到正的電源電壓(見圖1)。當總線空閑時,這兩條線路都是高電平。連接到總線的器件輸出級必須是漏極開路或集電極開路才能執(zhí)行線與的功能。

圖1 標準模式器件和快速模式器件連接到I2C總線
SDA線上的數據必須在時鐘的高電平周期保持穩(wěn)定。數據線的高或低電平狀態(tài)只有在SCL線的時鐘信號是低電平時才能改變。
在I2C總線中,唯一出現的是被定義為起始(S)和停止(P)條件(見圖2)的情況。其中一種情況是在SCL線是高電平時,SDA線從高電平向低電平切換。這個情況表示起始條件。
當SCL是高電平時,SDA線由低電平向高電平切換表示停止條件。起始和停止條件一般由主機產生??偩€在起始條件后被認為處于忙的狀態(tài)。在停止條件的某段時間后,總線被認為再次處于空閑狀態(tài)。
主機只能在總線空閑的時侯啟動傳輸。兩個或多個主機可能在起始條件的最小持續(xù)時間內產生一個起始條件,結果在總線上產生一個規(guī)定的起始條件。
當SCL線是高電平時,仲裁在SDA線發(fā)生。這樣在其他主機發(fā)送低電平時,發(fā)送高電平的主機將斷開它的數據輸出級,因為總線上的電平與它自己的電平不相同。
依據上述規(guī)定,可以設計一個簡單的滿足I2C總線協議的電路。主要由總線控制邏輯、預分頻器、地址寄存器和移位寄存器組成(見圖2)。電路工作時由主機對總線進行控制,尋址從機,配置總線控制邏輯的狀態(tài)寄存器和控制寄存器,接收從機的數據,并通過移位將數據由串行轉換成并行給數據總線。數據開始傳輸時,先由主機發(fā)送一個起始信號,主機可以在不發(fā)送結束信號的情況下再發(fā)送起始信號,重復起始信號可以使主機在不釋放總線的情況下,選擇不同的從機或改變數據的傳輸方向。然后發(fā)送一個字節(jié)的數據,其中前7位是從機地址,緊跟著的是數據傳輸方向位,所有從機地址都不相同,只有與主機發(fā)出的地址相匹配的從機才會在SCL的第九個周期通過拉低SDA線給主機一個響應。尋址成功后就傳送數據,每字節(jié)數據后都跟隨一個響應位。傳輸結束時主機發(fā)送一個結束信號,在SCL高電平時,SDA發(fā)生一個由低到高的變化為結束信號??偩€的傳輸速率與主機時鐘有關,可以通過設置預分頻寄存器改變,計算公式為預分頻寄存器的值=[主機頻率/(5×總線時鐘頻率)]-1。

圖2 邏輯功能框圖
在設計芯片時也可以集成I2C總線的功能,符合I2C總線的IC允許系統(tǒng)設計快速向前推進,直接從功能結構圖到原型。此外,由于它們直接“剪貼”到I2C總線,沒有任何額外的外部接口,所以允許簡單地通過從或者向總線“剪貼”或“不剪貼”IC來修改或升級原型系統(tǒng)。
[1]Jong Sam Lee,Leonard E Miller.CDMA 系統(tǒng)工程手冊[M].許希斌,周世東,趙明,等譯.北京:人民郵電出版社,2002.
[2]李佳.ARM系列處理器應用技術完全手冊[M].北京:人民郵電出版社,2006.
[3]毛德操,胡希明.嵌入式—采用公開源代碼和STRONG ARM/XSCALE微處理器[M].浙江:浙江大學出版社,2003.
[4][美]斯密斯.專用集成電路[M].虞惠華,等譯.北京:電子工業(yè)出版社,2004.