新聞中心

        單片機(jī)I2C總線介紹

        作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
        I2C是一種串行總線的外設(shè)接口,它采用同步方式串行接收或發(fā)送信息,兩個(gè)設(shè)備在同一個(gè)時(shí)鐘下工作。I2C總線只用兩根線:串行數(shù)據(jù)SDA(Serial Data)、串行時(shí)鐘SCL(Serial Clock)。
        由于I2C只有一根數(shù)據(jù)線,因此其發(fā)送信息和接收信息不能同時(shí)進(jìn)行。信息的發(fā)送和接收只能分時(shí)進(jìn)行。I2C串行總線工作時(shí)傳輸速率最高可達(dá)400K bit/s。
        I2C總線上的所有器件的SDA線并接在一起,所有器件的SCL線并接在一起,且SDA線和SCL線必須通過(guò)上拉電阻連接到正電源
        I2C總線的數(shù)據(jù)傳輸協(xié)議要比SPI總線復(fù)雜一些,因?yàn)镮2C總線器件沒(méi)有片選控制線,所以I2C總線數(shù)據(jù)傳輸?shù)拈_(kāi)始必須由主器件產(chǎn)生通信的開(kāi)始條件(SCL高電平時(shí),SDA產(chǎn)生負(fù)跳變);通信結(jié)束時(shí),由主器件產(chǎn)生通信的結(jié)束條件(SCL高電平時(shí),SDA產(chǎn)生正跳變)。
        SDA線上的數(shù)據(jù)在SCL高電平期間必須保持穩(wěn)定,否則會(huì)被誤認(rèn)為開(kāi)始條件或結(jié)束條件,只有在SCL低電平期間才能改變SDA線上的數(shù)據(jù)。I2C總線的數(shù)據(jù)傳輸波形圖如下圖所示。

        I2C應(yīng)用實(shí)例
        AT24C系列為美國(guó)ATMEL公司推出的串行COMS型E2PROM,具有功耗小,寬電壓范圍等優(yōu)點(diǎn)。下圖為AT24C系列E2PROM的引腳圖。圖中A0、A1、A2為器件地址引腳,Vss為地,Vcc為正電源,WP為寫(xiě)保護(hù),SCL為串行時(shí)鐘線,SDA為串行數(shù)據(jù)線。AT24C系列E2PROM采用I2C總線,I2C總線上可掛接多個(gè)接口器件,在I2C總線上的每個(gè)器件應(yīng)有唯一的器件地址,按I2C總線規(guī)則,器件地址為7位二進(jìn)制數(shù),它與一位數(shù)據(jù)方向位構(gòu)成一個(gè)器件尋址字節(jié)。器件尋址字節(jié)的最低位(D0)為方向位(讀/寫(xiě)),最高4位(D7~D4)為器件型號(hào)地址(不同的I2C總線接口器件的型號(hào)地址由廠家給定,AT24C系列E2PROM的型號(hào)地址都為1010);其余3位(D3~D1)與器件引腳地址A2A1A0相對(duì)應(yīng)。器件地址格式:
        1010 A2A1A0。

        對(duì)于E2PROM的片內(nèi)地址,AT24C01和AT24C02由于芯片容量可用一個(gè)字節(jié)表示,故讀寫(xiě)某個(gè)單元前,先向E2PROM寫(xiě)入一個(gè)字節(jié)的器件地址,再寫(xiě)入一個(gè)字節(jié)的片內(nèi)地址。而AT24C04、AT24C08、AT24C16分別需要9位、10位和11位片內(nèi)地址,所以AT24C04把器件地址中的A0作為片內(nèi)地址的最高位,AT24C08把器件地址中的A1A0作為片內(nèi)地址的最高兩位,AT24C16把器件地址中的A2A1A0作為片內(nèi)地址的最高三位。凡在系統(tǒng)中把器件的引腳地址用作片內(nèi)地址后,該引腳在電路中不得使用,做懸空處理。AT24C32、AT24C64、AT24C128、AT24C256和AT24C512的片內(nèi)地址采用兩個(gè)字節(jié)。
        AT24C系列E2PROM的讀寫(xiě)操作原理
        下列讀寫(xiě)操作中SDA線上數(shù)據(jù)傳送狀態(tài)標(biāo)記注釋如下:
        Start為啟動(dòng)信號(hào)(SCL為高電平,SDA產(chǎn)生負(fù)跳變),由主機(jī)發(fā)送。
        Stop為結(jié)束信號(hào)(SCL為高電平,SDA產(chǎn)生正跳變),由主機(jī)發(fā)送。
        AddressByte、AddreeeByte H、AddreeeByte L為地址字節(jié),指定片內(nèi)某單元地址,由主機(jī)發(fā)送。
        data為數(shù)據(jù)字節(jié),由數(shù)據(jù)發(fā)送方發(fā)送。
        0 為肯定應(yīng)答信號(hào),由數(shù)據(jù)接收方發(fā)送。
        1 為否定應(yīng)答信號(hào),由數(shù)據(jù)接收方發(fā)送。
        主機(jī)控制數(shù)據(jù)線SDA時(shí),在SCL高電平期間必須保持SDA線上的數(shù)據(jù)穩(wěn)定,否則會(huì)被誤認(rèn)為對(duì)從機(jī)的起始條件或結(jié)束條件。主機(jī)只能在SCL低電平期間改變SDA線上的數(shù)據(jù)。主機(jī)寫(xiě)操作期間,用SCL的上升沿寫(xiě)入數(shù)據(jù);主機(jī)讀操作期間,用SCL的下降沿讀出數(shù)據(jù)。

        從AT24C系列AT24C01~AT24C16中讀n個(gè)字節(jié)的數(shù)據(jù)格式:

        從AT24C系列AT24C32~AT24C512中讀n個(gè)字節(jié)的數(shù)據(jù)格式:

        向AT24C系列AT24C01~AT24C16中寫(xiě)n個(gè)字節(jié)的數(shù)據(jù)格式(n<=頁(yè)長(zhǎng),且n個(gè)字節(jié)不能跨頁(yè)):

        向AT24C系列AT24C32~AT24C512中寫(xiě)n個(gè)字節(jié)的數(shù)據(jù)格式(n<=頁(yè)長(zhǎng),且n個(gè)字節(jié)不能跨頁(yè)):


        應(yīng)答信號(hào)
        I2C總線數(shù)據(jù)傳送時(shí),每成功地傳送一個(gè)字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個(gè)應(yīng)答信號(hào)。應(yīng)答的器件在第9個(gè)時(shí)鐘周期時(shí)將SDA線拉低,表示其已經(jīng)收到一個(gè)8位數(shù)據(jù)。
        I2C器件在接收到起始信號(hào)和從器件地址之后響應(yīng)一個(gè)應(yīng)答信號(hào),如果器件已選擇了寫(xiě)操作,則在每接收一個(gè)8位字節(jié)之后響應(yīng)一個(gè)應(yīng)答信號(hào)。
        I2C器件工作在讀模式時(shí),在發(fā)送一個(gè)8位數(shù)據(jù)后釋放SDA線(SDA置為高電平)并監(jiān)視一個(gè)應(yīng)答信號(hào),一旦接收到主器件的應(yīng)答信號(hào),I2C器件則繼續(xù)發(fā)送數(shù)據(jù),如果主器件沒(méi)有發(fā)送應(yīng)答信號(hào)(發(fā)送非應(yīng)答信號(hào),即SDA為高電平),器件停止傳送數(shù)據(jù)且等待一個(gè)停止信號(hào)。


        關(guān)鍵詞: I2C總線單片

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 涟源市| 宁化县| 洪江市| 凯里市| 枣强县| 武山县| 平乐县| 灯塔市| 雷波县| 合水县| 吉安县| 临洮县| 宣威市| 固原市| 宜阳县| 壤塘县| 河北省| 东城区| 通渭县| 遵化市| 元氏县| 彭水| 阿瓦提县| 台东市| 象州县| 潍坊市| 汾西县| 师宗县| 龙游县| 红桥区| 湖口县| 娱乐| 蒙山县| 石台县| 菏泽市| 广汉市| 阿拉善盟| 武陟县| 北流市| 同心县| 西乡县|