0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談I2C總線,I2C接口和SPI接口的作用相同

Q4MP_gh_c472c21 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-21 10:24 ? 次閱讀

I2C(Inter Integrated Circuit,內(nèi)部集成電路)總線是價(jià)格低廉卻很有效的用以互連小規(guī)模嵌入式系統(tǒng)內(nèi)的外設(shè)的網(wǎng)絡(luò)。I2C 總線有時(shí)候也叫作 IIC,它已有20多年的歷史了。I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。

I2C 總線用兩根線來(lái)連接多支路總線中的多個(gè)設(shè)備。這種總線是雙向、低速的,并與公共時(shí)鐘同步??梢灾苯訉⒁粋€(gè)設(shè)備接到 I2C 總線上或是從該總線上取下,而不會(huì)影響其他設(shè)備。一些生產(chǎn)商比如 Microchip 公司、Philips 公司、Intel 公司等生產(chǎn)的小型微處理器都內(nèi)置了 I2C 接口。I2C 總線的數(shù)據(jù)傳輸率比 SPI 總線要慢一些,在標(biāo)準(zhǔn)模式下的傳輸速度為 100kbps,在快速模式下為 400kbps。利用 I2C 接口在設(shè)備之間進(jìn)行連接使用的兩根線是SDA(串行數(shù)據(jù))和SCL(串行時(shí)鐘),它們都是開(kāi)漏,通過(guò)一個(gè)上拉電阻接到正電源,因此在不使用的時(shí)候扔保持高電平。使用 I2C 總線進(jìn)行通信的設(shè)備驅(qū)動(dòng)這兩根線變?yōu)榈碗娖剑诓皇褂玫臅r(shí)候就讓它們保持高電平。每個(gè)連到 I2C 的設(shè)備都有一個(gè)唯一地址,這個(gè)設(shè)備可以是數(shù)據(jù)發(fā)送者(總線主機(jī))、接收者(總線從機(jī)),也可以二者都是。I2C 是多主機(jī)總線,這意味著可以有多個(gè)設(shè)備充當(dāng)總線主機(jī)的角色。

圖1. I2C總線連線圖

SDA和SCL都是雙向的。SPI 總線有兩根單獨(dú)的線,分別用于兩個(gè)方向的通信,而 I2C 總線不同,它使用同一根線來(lái)完成主機(jī)發(fā)送數(shù)據(jù)和接收從機(jī)響應(yīng)。另外,與 SPI 總線具有多個(gè)工作模式不同,I2C 總線只有一個(gè)工作模式,時(shí)鐘線 SCL 和數(shù)據(jù)線 SDA 之間的時(shí)序關(guān)系很簡(jiǎn)單直觀:當(dāng)空閑的時(shí)候,SDA 和 SCL 都是高電平,只有 SDA 變?yōu)榈碗娖?,接?SCL 也變?yōu)榈碗娖綍r(shí),才開(kāi)始 I2C 總線的數(shù)據(jù)傳輸。當(dāng) SDA 和 SCL 都變?yōu)榈碗娖綍r(shí),就是告訴總線上的所有接收設(shè)備數(shù)據(jù)包的傳輸開(kāi)始了,在 SCL 變?yōu)榈碗娖胶?,SDA 才發(fā)送第一個(gè)有效數(shù)據(jù)位,這稱為開(kāi)始條件。對(duì)于被傳輸?shù)拿恳晃?,?dāng) SCL 為低電平時(shí)在 SDA 上必須變?yōu)橛行?,該位是?SCL 的上升沿對(duì) SDA 上的數(shù)據(jù)位進(jìn)行采樣的,也必須一直保持有效直到 SCL 再次變?yōu)榈碗娖?,然?SDA 就在 SCL 再次變?yōu)楦唠娖街皞鬏斚乱晃?。最后,SCL 變?yōu)楦唠娖剑又?SDA 也變?yōu)楦唠娖?,?shù)據(jù)傳輸結(jié)束。這被稱為結(jié)束條件。

圖2. I2C總線傳輸?shù)拈_(kāi)始條件和結(jié)束條件

無(wú)論多大的數(shù)據(jù)包都可以通過(guò) I2C 總線進(jìn)行傳輸。像 SPI 總線一樣,I2C 也是高位先傳輸。如果數(shù)據(jù)接收者無(wú)法再接收更多的數(shù)據(jù),它可以通過(guò)將SCL保持低電平來(lái)中斷傳輸,這樣可以迫使數(shù)據(jù)發(fā)送者等待,直到 SCL 被重新釋放。發(fā)送方發(fā)出的每個(gè)字節(jié)都必須經(jīng)過(guò)接收方確認(rèn),每個(gè)字節(jié)的第8位數(shù)據(jù)一旦傳送結(jié)束,發(fā)送方就釋放數(shù)據(jù)線 SDA,然后主機(jī)在 SCL 上產(chǎn)生一個(gè)額外的時(shí)鐘脈沖,這會(huì)觸發(fā)接收方通過(guò)將 SDA 置為低電平來(lái)表示接收到的字節(jié)進(jìn)行確認(rèn)。如果接收方?jīng)]有能將 SDA 置為低電平,發(fā)送方就會(huì)中斷傳輸,并且采取適當(dāng)?shù)腻e(cuò)誤處理措施。

圖3. 帶有接收方確認(rèn)的I2C數(shù)據(jù)包

由于 I2C 是多主機(jī)總線,因此存在同一時(shí)刻會(huì)有多個(gè)主機(jī)試圖開(kāi)始數(shù)據(jù)傳輸?shù)目赡?。SPI 總線使用一個(gè)獨(dú)立的片選端來(lái)使接收從機(jī)有效,每個(gè) SPI 從機(jī)都有一個(gè)單獨(dú)的片選端,由主機(jī)驅(qū)動(dòng)。I2C 沒(méi)有這樣的選擇機(jī)制,不過(guò)總線上的每個(gè)設(shè)備都有一個(gè)唯一的地址,數(shù)據(jù)包傳輸時(shí)先發(fā)送地址位,接著才是數(shù)據(jù)。一個(gè)地址字節(jié)由7個(gè)地址位和1個(gè)指示位組成。如果指示位是0,意味著這個(gè)傳輸是一個(gè)寫操作,被選中的從機(jī)將接收數(shù)據(jù)并將其作為輸入;如果指示位是1,就要求從機(jī)將數(shù)據(jù)發(fā)送回主機(jī)。

I2C 總線還支持一個(gè)擴(kuò)展的10位尋址模式,可連接的外設(shè)數(shù)量可達(dá)1024個(gè),使用7位尋址模式的設(shè)備和10位尋址模式的設(shè)備可以在同一個(gè)系統(tǒng)中混合使用。10位尋址時(shí),使用2個(gè)字節(jié)來(lái)保存地址。如果第1個(gè)地址字節(jié)以0b11110xx_開(kāi)始,就會(huì)產(chǎn)生一個(gè)10位地址,第1個(gè)字節(jié)的第1、2位(第0位是讀寫指示位)和第2個(gè)字節(jié)的8位合起來(lái)構(gòu)成10位的地址。而7位設(shè)備將會(huì)忽略這個(gè)過(guò)程。

圖4. I2C普通的和帶重復(fù)開(kāi)始條件的7位地址格式

圖5. I2C總線10位地址格式

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1688

    瀏覽量

    91202
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2858

    瀏覽量

    87912
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1477

    瀏覽量

    123054

原文標(biāo)題:淺談I2C總線,有時(shí)候它也叫?IIC

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    i2c總線ppt(I2C總線器件應(yīng)用)

    I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理
    發(fā)表于 08-13 17:34 ?0次下載

    I2C總線接口模塊設(shè)計(jì)

    本實(shí)驗(yàn)是基于EasyFPGA030的I2C總線接口模塊設(shè)計(jì),用EasyFPGA030開(kāi)發(fā)套件通過(guò)I2C協(xié)議實(shí)現(xiàn)對(duì)二線制I2C串行EEPROM
    發(fā)表于 11-02 17:01 ?41次下載

    PCA9564 并行總線轉(zhuǎn)I2C總線接口芯片簡(jiǎn)介

    PCA9564是一款采用CMOS工藝,支持并行總線與串行I2C總線通信轉(zhuǎn)換的接口器件,適用于微控制器/處理器使用并行總線擴(kuò)展
    發(fā)表于 03-10 15:47 ?51次下載

    PCA9665并行總線轉(zhuǎn)I2C總線接口芯片簡(jiǎn)介

    PCA9665是一款并行總線與串行I2C總線接口轉(zhuǎn)換的器件,適用于微控制器/處理器使用并行總線擴(kuò)展I2C
    發(fā)表于 03-10 15:49 ?46次下載

    什么是i2c總線

    什么是i2c總線  下載請(qǐng)點(diǎn)擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?2903次閱讀

    基于CPLD的I2C總線接口設(shè)計(jì)

    在電路設(shè)計(jì)中,I2C總線是比較常用的兩線式串行通信方式,大多數(shù)的CPU都擅長(zhǎng)于并口操作,不具備直接操作I2C總線接口的能力。為了使不具備
    發(fā)表于 02-12 16:11 ?95次下載
    基于CPLD的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b><b class='flag-5'>接口</b>設(shè)計(jì)

    SPI總線I2C總線工作原理

    SPI總線I2C總線工作原理,本內(nèi)容詳細(xì)介紹了SPI總線
    發(fā)表于 12-08 16:55 ?0次下載

    i2c

    單片機(jī)i2c總線操作;單片機(jī)i2c總線操作;單片機(jī)i2c總線操作;
    發(fā)表于 05-17 11:09 ?35次下載

    CAN、I2S、I2C、SPI、SSP總線的介紹和比較

    CAN、I2S、I2C、SPI、SSP總線的介紹和比較。
    發(fā)表于 07-14 16:20 ?53次下載

    基于I2C接口隔離的應(yīng)用筆記

    I2C總線是一種雙線制雙向總線,用于集成電路之間的低速/短速離通信。本應(yīng)用筆記簡(jiǎn)要介紹了I2C總線集中于其物理層,討論了隔離
    發(fā)表于 09-21 17:15 ?9次下載
    基于<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>隔離的應(yīng)用筆記

    I2C LCD 器件通過(guò)驅(qū)動(dòng)帶有 I2C 接口2 線式 16 字符 LCD

    I2C LCD 器件通過(guò)驅(qū)動(dòng)帶有 I2C 接口2 線式 16 字符 LCD
    發(fā)表于 10-10 08:22 ?13次下載
    <b class='flag-5'>I2C</b> LCD 器件通過(guò)驅(qū)動(dòng)帶有 <b class='flag-5'>I2C</b> <b class='flag-5'>接口</b>的 <b class='flag-5'>2</b> 線式 16 字符 LCD

    基于MCS-51單片機(jī)I2C總線接口電路的設(shè)計(jì)

    在單片機(jī)控制系統(tǒng)中,廣泛使用I2C器件。如果單片機(jī)自帶I2C總線接口,則所有I2C器件對(duì)應(yīng)連接到該總線
    發(fā)表于 10-15 16:13 ?3351次閱讀
    基于MCS-51單片機(jī)<b class='flag-5'>I2C</b><b class='flag-5'>總線</b><b class='flag-5'>接口</b>電路的設(shè)計(jì)

    基于VHDL硬件的I2C接口并行擴(kuò)展及接口設(shè)計(jì)

    I2C總線接口器件在視頻處理、移動(dòng)通信等領(lǐng)域的應(yīng)用已經(jīng)非常普遍。另外,通用的I2C總線接口器件,
    發(fā)表于 01-20 16:51 ?2368次閱讀
    基于VHDL硬件的<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>并行擴(kuò)展及<b class='flag-5'>接口</b>設(shè)計(jì)

    i2c總線用來(lái)做什么_i2c總線數(shù)據(jù)傳輸過(guò)程

    I2C總線控制器為微控制器或微處理器提供控制I2C總線接口,它控制所有I2C
    發(fā)表于 11-24 14:16 ?7191次閱讀

    i2c接口spi接口區(qū)別

    I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是用于設(shè)備間通信的串行接口標(biāo)準(zhǔn)。它們?cè)诤芏喾矫嬗兄嗨浦?,但也有一?/div>
    的頭像 發(fā)表于 12-25 15:02 ?3644次閱讀