官术网_书友最值得收藏!

2.3.2 I2C

I2C(內(nèi)置集成電路)總線是由Philips公司開發(fā)的兩線式串行總線,產(chǎn)生于20世紀(jì)80年代,用于連接微控制器及其外圍設(shè)備。I2C總線簡(jiǎn)單而有效,占用的PCB(印制電路板)空間很小,芯片引腳數(shù)量少,設(shè)計(jì)成本低。I2C總線支持多主控(Multi-Mastering)模式,任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主設(shè)備。主控能夠控制數(shù)據(jù)的傳輸和時(shí)鐘頻率,在任意時(shí)刻只能有一個(gè)主控。

組成I2C總線的兩個(gè)信號(hào)為數(shù)據(jù)線SDA和時(shí)鐘SCL。為了避免總線信號(hào)的混亂,要求各設(shè)備連接到總線的輸出端必須是開漏輸出或集電極開路輸出的結(jié)構(gòu)??偩€空閑時(shí),上拉電阻使SDA和SCL線都保持高電平。根據(jù)開漏輸出或集電極開路輸出信號(hào)的“線與”邏輯,I2C總線上任意器件輸出低電平都會(huì)使相應(yīng)總線上的信號(hào)線變低。

“線與”邏輯指的是兩個(gè)或兩個(gè)以上的輸出直接互連就可以實(shí)現(xiàn)“與”的邏輯功能,只有輸出端是開漏(對(duì)于CMOS器件)輸出或集電極開路(對(duì)于TTL器件)輸出時(shí)才滿足此條件。工程師一般以“OC門”簡(jiǎn)稱開漏或集電極開路。

I2C設(shè)備上的串行數(shù)據(jù)線SDA接口電路是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。同樣地,串行時(shí)鐘線SCL也是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī)要通過SCL輸出電路發(fā)送時(shí)鐘信號(hào),并檢測(cè)總線上SCL上的電平以決定什么時(shí)候發(fā)下一個(gè)時(shí)鐘脈沖電平;作為接收主機(jī)命令的從設(shè)備需按總線上SCL的信號(hào)發(fā)送或接收SDA上的信號(hào),它也可以向SCL線發(fā)出低電平信號(hào)以延長(zhǎng)總線時(shí)鐘信號(hào)周期。

當(dāng)SCL穩(wěn)定在高電平時(shí),SDA由高到低的變化將產(chǎn)生一個(gè)開始位,而由低到高的變化則產(chǎn)生一個(gè)停止位,如圖2.10所示。

圖2.10 I2C總線的開始位和停止位

開始位和停止位都由I2C主設(shè)備產(chǎn)生。在選擇從設(shè)備時(shí),如果從設(shè)備采用7位地址,則主設(shè)備在發(fā)起傳輸過程前,需先發(fā)送1字節(jié)的地址信息,前7位為設(shè)備地址,最后1位為讀寫標(biāo)志。之后,每次傳輸?shù)臄?shù)據(jù)也是1字節(jié),從MSB開始傳輸。每個(gè)字節(jié)傳完后,在SCL的第9個(gè)上升沿到來(lái)之前,接收方應(yīng)該發(fā)出1個(gè)ACK位。SCL上的時(shí)鐘脈沖由I2C主控方發(fā)出,在第8個(gè)時(shí)鐘周期之后,主控方應(yīng)該釋放SDA,I2C總線的時(shí)序如圖2.11所示。

圖2.11 I2C總線的時(shí)序

主站蜘蛛池模板: 平遥县| 彰化县| 鄂温| 阿拉善左旗| 崇文区| 滨州市| 北海市| 田东县| 阳朔县| 古丈县| 重庆市| 自贡市| 田阳县| 安达市| 泰顺县| 伽师县| 都江堰市| 囊谦县| 简阳市| 西林县| 曲阳县| 重庆市| 台州市| 若尔盖县| 平武县| 东乡族自治县| 哈密市| 安西县| 泉州市| 定结县| 宜丰县| 曲麻莱县| 吉林市| 平度市| 兴业县| 深圳市| 桑植县| 开阳县| 砚山县| 钟祥市| 安多县|