I2C總線協(xié)議及其應(yīng)用
由于大規(guī)模集成電路技術(shù)的發(fā)展,在單個(gè)芯片集成CPU以及組成一個(gè)單獨(dú)工作系統(tǒng)所必須的ROM、RAM、I/O端口、A/D、D/A等外圍電路和已經(jīng)實(shí)現(xiàn),這就是常說的單片機(jī)或微控制器。目前,世界上許多公司生產(chǎn)單片機(jī),品種很多:包括各種字長(zhǎng)的CPU,各種容量和品種的ROM、RAM,以及功能各異的I/O等等。但是,單片機(jī)品種規(guī)格有限,所以只能選用某種單片機(jī)再進(jìn)行擴(kuò)展。擴(kuò)展的方法有兩種:一種是并行總線,另一種是串行總線。由于串行總線連線少,結(jié)構(gòu)簡(jiǎn)單,往往不用專用的母板和插座而直接用導(dǎo)線連接各個(gè)設(shè)備即可。因此,采用串行總線大大簡(jiǎn)化了系統(tǒng)硬件設(shè)計(jì)。PHILIPS公司早在十幾年就前推出了I2C串行總線,它是具備多主機(jī)系統(tǒng)所需的包括裁決和高低速設(shè)備同步等功能的高性能串行總線。
1. I2C總線硬件結(jié)構(gòu)和術(shù)語
I2C串行總線有兩根信號(hào)線:一根雙向的數(shù)據(jù)線SDA;另一根是時(shí)鐘線SCL。所有接到I2C總線上的設(shè)備的串行數(shù)據(jù)都接到總線的SDA線,各設(shè)備的時(shí)鐘線SCL接到總線的SCL。典型的I2C總線結(jié)構(gòu)如圖1。
圖1:PC總線結(jié)構(gòu)
為了避免總線信號(hào)的混亂,要求各設(shè)備連接到總線的輸出端必須是開漏輸出或集電極開路輸出的結(jié)構(gòu)。設(shè)備與總線的接口電路如圖2所示。設(shè)備上的串行數(shù)據(jù)線SDA接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。串行時(shí)鐘線也應(yīng)是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī)要通過SCL輸出電路發(fā)送時(shí)鐘信號(hào),同時(shí)要檢測(cè)總線上SCL上的電平以決定什么時(shí)候發(fā)下一個(gè)時(shí)鐘脈沖電平;作為接受主機(jī)命令的從機(jī),要按總線上的SCL的信號(hào)發(fā)出或接收SDA上的信號(hào),也可以向SCL線發(fā)出低電平信號(hào)以延長(zhǎng)總線時(shí)鐘信號(hào)周期。總線空閑時(shí),因各設(shè)備都是開漏輸出,上拉電阻RP使ADA和SCL線都保持高電平。任一設(shè)備輸出的低電平都使相應(yīng)的總線信號(hào)線變低,也就是說各設(shè)備的SDA是“與”關(guān)系,SCL也是“與”關(guān)系。
圖2:設(shè)備和PC總線接口電路
總線對(duì)設(shè)備接口電路的制造工藝和電平都沒有特殊的要求(NMOS、CMOS都可以兼容)。數(shù)據(jù)傳送率按I2C總線可高達(dá)每秒十萬位,高速方式可高達(dá)每秒四十萬位。總線上允許連接的設(shè)備數(shù)以總線上的電容量不超過400pF為限。
總線的運(yùn)行(數(shù)據(jù)傳輸)由主機(jī)控制。所謂主機(jī)即啟動(dòng)數(shù)據(jù)的傳送(發(fā)出啟動(dòng)信號(hào)),發(fā)出時(shí)鐘信號(hào),傳送結(jié)束時(shí)發(fā)出停止信號(hào)的設(shè)備,通常主機(jī)是微處理器。被主機(jī)尋訪的設(shè)備都稱為從機(jī)。為了進(jìn)行通訊,每個(gè)接到I2C總線的設(shè)備都有一個(gè)唯一的地址,以便于主機(jī)尋訪。主機(jī)和從機(jī)的數(shù)據(jù)傳送,可以由主機(jī)發(fā)送數(shù)據(jù)到從機(jī),也可以是從機(jī)發(fā)到主機(jī)。凡是發(fā)送數(shù)據(jù)到總線的設(shè)備稱為發(fā)送器,從總線上接收數(shù)據(jù)的設(shè)備被稱為接受器。
I2C總線上允許連接多個(gè)微處理器及各種外圍設(shè)備,如存儲(chǔ)器、LED及LCD驅(qū)動(dòng)器、A/D及D/A轉(zhuǎn)換器等。為了保證數(shù)據(jù)可靠地傳送,任一時(shí)刻總線只能有由某一臺(tái)主機(jī)控制一個(gè)微處理器應(yīng)該在總線空閑時(shí)發(fā)啟動(dòng)數(shù)據(jù),為了妥善解決多臺(tái)微處理器同時(shí)發(fā)啟數(shù)據(jù)傳送(總線控制權(quán))的沖突,并決定由哪一臺(tái)微處理器控制總線。I2C總線允許連接不同傳送速率的設(shè)備,多臺(tái)設(shè)備之間時(shí)鐘信號(hào)的同步過程稱為同步化。
2. I2C數(shù)據(jù)傳輸
在I2C總線傳輸過程中,將兩種特定的情況定義為開始和停止條件(如圖3):當(dāng)SCL保持“高”,SDA由“高”變?yōu)椤暗汀睍r(shí)為開始條件;SCL保持“高”,SDA由“低”變?yōu)椤案摺笔菫橥V箺l件。開始和停止條件由主控器產(chǎn)生。使用硬件接口可以很容易地檢測(cè)開始和停止條件,沒有這種接口的微機(jī)必須以每時(shí)鐘周期至少兩次對(duì)SDA取樣以使檢測(cè)這種變化。
圖3:總線開始/停止
上拉電阻相關(guān)文章:上拉電阻原理
評(píng)論