李 仙,宋曉梅
(西安工程大學 陜西 西安 710048)
隨著IIC總線的應用越來越廣泛,許多芯片廠商都已推出帶有IIC總線接口的芯片。已有很多文獻討論IIC總線在嵌入式、數據采集系統(tǒng)等方面的應用。本文將從智能機設計角度論述IIC總線的軟硬件應用方案,以及一主多從方式下如何實現從設備信息的主動上報。
IIC總線(Inter-Integrated Circuit Bus)是由荷蘭飛利浦半導體公司在上世紀八十年代針對集成電路之間的互連而開發(fā)的一種總線[1]。此種總線僅靠兩根數據線(時鐘線SCL和數據線SDA)實現數據傳輸[6]。這種傳輸方式使用信號線較少,設計方便靈活,可以有效節(jié)省主板空間,減少芯片引腳數量,降低互連成本。
由于IIC接口采用漏極開路或集電極開路機制,器件本身只能輸出低電平,無法主動輸出高電平,只能通過外部上拉電阻將信號線拉至高電平,因此IIC總線上必須接上拉電阻[3]。通常情況下,SDA、SCL兩條線上的上拉電阻取值是一致的,并上拉到同一電源上。
上拉電阻RP的阻值選擇通常在1~10 kΩ之間,這是由多方面因素決定的。一般I/O端口的驅動能力在2~4 mA量級,如果上拉電阻RP的值過小,電源灌入端口的電流就會比較大,可能會損壞端口。上拉電阻RP的阻值也不宜過大,因為端口輸出高電平是通過上拉電阻實現的,如圖1所以。電平從低到高變化時,電源通過上拉電阻RP對線上負載電容CL充電,這需要一定的時間,即上升時間。端口信號的上升時間可近似用充電時間常數RP和CL乘積表示。如果RC充電時間常數過大,將使得信號上升沿變化緩慢,達不到系統(tǒng)所需速率甚至不符合IIC總線協(xié)議規(guī)范的要求。
圖1 IIC總線的硬件接口Fig.1 Hardware interface of IIC bus
IIC總線的傳輸速率有3個模式:標準模式100 kbit/s,快速模式400 kbit/s,高速模式3.4 Mbit/s[5]。在快速模式和高速模式下,總線上會產生反射、振鈴、過沖等現象,因此需在SDA、SCL線上串聯(lián)終端電阻,從而抑制總線上的干擾,提高數據傳輸的可靠性。
IIC總線支持多主和主從工作方式,通常為主從工作方式[2]。主機通常都是處理器,負責控制總線數據的傳輸。從機通常是被主機尋訪的設備,比如存儲器、LED及LCD驅動器、A/D及D/A轉換器等。在同一系統(tǒng)內,每個從機都有一個唯一的設備地址,用于主機尋訪。
主機向總線上發(fā)送某一從機地址,總線上所有從機進行地址匹配,地址匹配成功的從機發(fā)出一個應答信號,其他設備都保持靜默狀態(tài)直到收到結束信號[4]。主機接收到應答信號后,根據實際情況開始對此從機進行讀寫操作;若主機未收到應答信號,則認為此從機出現故障或總線上無此從機。SDA線上每次傳輸8位數據,每次傳輸的字節(jié)數不受限制,但每個字節(jié)都必須要有一個應答位(ACK)。I2C數據總線傳送時序如圖2所示。
圖2 IIC總線傳輸數據的時序Fig.2 The sequence of IIC Bus data transmission
智能機市場各種傳感器應用層出不窮,例如觸摸屏、光感應器、接近傳感器、加速度傳感器、地磁傳感器、陀螺儀等,并且每種傳感器都有多個不同廠商、不同型號。IIC總線在這些傳感器應用中扮演著很重要的角色,傳感器可以統(tǒng)一掛載到同一條IIC總線上,方便處理器高效、快捷的區(qū)分和訪問。一般來說,同一個智能機主板上的同一類型傳感器一般會兼容多個廠家的芯片,以避免獨家供貨帶來的缺貨風險。因此,在硬件設計中會考慮盡量多的兼容設計,硬件系統(tǒng)構架如圖3所示。軟件方面,處理器同樣需要進行多次匹配判斷不同類型不同供應商的傳感器來完成系統(tǒng)初始化過程。
圖3 智能機IIC總線示意圖Fig.3 Schematic diagram of IIC Bus in smart phone
在智能機開機過程中,系統(tǒng)會進行初始化。在初始化過程中,處理器通過假設遍歷法對IIC總線上的傳感器按照類型的不同一一進行初始化。以智能機兼容兩種不同型號加速度傳感器BMA220和KXTIK-1004為例,初始化流程圖如圖4所示。具體步驟如下:
1)主機首先發(fā)送BMA220的器件地址。
2)主機判斷是否收到從機應答信號。若主機收到應答信號,則開始對BMA220進行配置,配置完成后結束初始化;若主機沒有收到應答信號,則認為BMA220是否是此類型傳感器中的最后一個器件。
3)如果是最后一個器件,則主機認為沒有此類型的傳感器,結束對此類傳感器的初始化。
4)如果不是最后一個器件,主機繼續(xù)發(fā)送KXTIK-1004的器件地址并判斷是否收到KXTIK-1004的應答信號。
5)若主機收到應答信號,則開始對KXTIK-1004進行配置,配置完成后結束初始化。
圖4 智能機初始化加速度傳感器流程圖Fig.4 Flow chart smart phone initialize G-sensor
通過上述初始化過程,處理器就明確了目前系統(tǒng)中包含哪些具體類型、具體型號的傳感器,并將這些信息保存,供系統(tǒng)隨時調用。圖5的波形顯示了智能機開機過程中IIC總線對初始化的具體細節(jié)。此IIC總線的速度為100 kb/s,首先發(fā)送從器件BMA220的設備地址0X18,處理器收到應答信號后,開始對傳感器進行配置,完成后結束IIC總線上的信號傳輸。
常見的傳感器設備地址都是7位的。理論上,同一生產廠家生產的不同傳感器的設備地址是不同的,不同生產廠家生產的同一類型傳感器設備地址也應該不同。然而,7位地址下最多只能產生128個地址編碼,當IIC總線設備越來越多時,總線地址沖突就在所難免。為了防止設備地址沖突,有些傳感器芯片預留了可配置設備地址的引腳。如果傳感器設備出現地址沖突,通過配置預留引腳上的高低電平來改變傳感器的設備地址,以此達到解決總線上的從器件出現設備地址沖突的目的。在實際應用中,將各個IIC的設備地址進行互異配置就可以有效避免在同一系統(tǒng)中出現以上沖突。
圖5 初始化部分波形Fig.5 Part of waveform in initialization
在智能機系統(tǒng)中,IIC總線都工作在一主多從模式。主機占有控制權,任何時刻,IIC總線總是由主機發(fā)起從機的讀取數據操作,而從機無法主動向從機發(fā)送數據。但是在實際應用中,有些傳感器的信息需要及時送給主機處理,在傳感器的狀態(tài)發(fā)生改變時需立即報告給主機,要求主機進行讀取數據等操作。
為了彌補上述缺陷,某些傳感器增加了輔助中斷引腳。在傳感器狀態(tài)發(fā)生改變時,傳感器產生一個中斷通知主機自身狀態(tài)已經發(fā)生改變,需要主機讀取數據,主機檢測到中斷后立即通過IIC總線訪問產生中斷的從機。以目前智能機中電容觸摸屏為例,輔助中斷配合IIC的流程圖如圖6所示。
圖6 觸摸屏工作流程圖Fig.6 Flow chart touch pad working
當手指觸摸到屏幕上時,觸控驅動芯片會解析觸摸位置,然后將位置信息保存到相應的寄存器里。同時,驅動芯片向處理器上報中斷,處理器接收到中斷信息后通過IIC總線訪問觸摸屏控制器,并進行相應的處理。
文中主要分析了IIC總線在智能機領域里的軟硬件實現方案,通過具體實例重點說明了在一主多從模式下兼容各種類型和同類型下各種型號傳感器的實現機制。同時還闡述了如何使用輔助中斷來完成IIC設備向主機主動狀態(tài)上報。實際應用證明,使用上述這些方法,可以很方便的實現高靈活性的、高兼容性的智能機系統(tǒng),滿足了目前通信終端行業(yè)的實際需求。
IIC總線架構簡單、易于布線、軟件操作靈活的特點必然會在智能機領域發(fā)揮越來越大的作用。
[1]何立民.IIC總線應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,1995.
[2]肖建輝,袁易君.基于LPC2106的IIC總線E2PROM的應用[J].微計算機信息,2010,26(6-2):184-185.
XIAO Jian-hui,YUAN Yi-jun.The application ofIIC E2PROM based on LPC2106[J].Microcomputer Information,2010,26(6-2):184-185.
[3]周劍利,郭建波,崔濤.具有IIC總線接口的A/D芯片PCF8591及其應用[J].微計算機信息,2005,21(7):150-151.
ZHOU Jian-li,GUO Jian-bo,CUI Tao.The used of A/D chip PCF8591 which has IIC interface[J]. Microcomputer Information,2005,21(7):150-151.
[4]飛利浦半導體IIC總線規(guī)范[Z].(2.1版)2000.
[5]李偉.電阻元件對IIC總線電路性能的影響 [J].煤炭技術,2010,29(11):27.
LI Wei.Influence of resistance components on IIC BUS circuit performance[J].COAL TECHNOLOGY,2010,29(11):27.
[6]權毅,曹潔,王勇,等.基于ARM的便攜式高速鐵路鋼軌無損檢測儀[J].儀表技術與傳感器,2010(1):29-31
QUAN Yi,CAO Jie,WANG Yong,et al.Portablenondestructive testing instrument for High-speed railway rail based on ARM[J].Instrument Technique and Sensor,2010(1):29-31.