RM新时代网站-首页

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

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

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

不理解i2C?現(xiàn)在來教你

瞿小洲 ? 來源:jf_33322995 ? 作者:jf_33322995 ? 2024-07-10 09:26 ? 次閱讀

I2C(Inter-Integrated Circuit,集成電路總線)是一種簡(jiǎn)單、雙向、二線制的串行通信總線,由Philips半導(dǎo)體公司(現(xiàn)在的NXP半導(dǎo)體公司)在八十年代初設(shè)計(jì)出來。它以通俗易懂的方式解釋如下:

基本概念

雙向二線制:I2C總線只使用兩根線——一根數(shù)據(jù)線(SDA)和一根時(shí)鐘線(SCL),就可以實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。這種設(shè)計(jì)使得連接設(shè)備變得非常簡(jiǎn)單和節(jié)省空間。

串行通信:數(shù)據(jù)不是同時(shí)傳輸多個(gè)比特(并行通信),而是按順序一個(gè)接一個(gè)地傳輸(串行通信)。這雖然降低了傳輸速度,但簡(jiǎn)化了硬件設(shè)計(jì)。

wKgaomaN4w2AaeUYAABSst5mEgU628.png

工作原理

SCL為高電平的時(shí)候,SDA由高電平向低電平跳變。SCL為高電平的時(shí)候,SDA由低電平向高電平跳變。

I2C總線上的所有數(shù)據(jù)都是以8位字節(jié)傳送的,發(fā)送器每發(fā)送一個(gè)字節(jié),就在時(shí)鐘脈沖9期間釋放數(shù)據(jù)線,由接收器反饋一個(gè)應(yīng)答信號(hào)。應(yīng)答信號(hào)為低電平時(shí),規(guī)定為有效應(yīng)答位(ACK簡(jiǎn)稱應(yīng)答位),表示接收器已經(jīng)成功地接收了該字節(jié);應(yīng)答信號(hào)為高電平時(shí),規(guī)定為非應(yīng)答位(NACK),一般表示接收器接收該字節(jié)沒有成功,對(duì)于反饋有效應(yīng)答位ACK的要求是,接收器在第9個(gè)時(shí)鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。如果接收器是主控器,則在它收到最后一個(gè)字節(jié)后,發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放SDA線,以便主控接收器發(fā)送一個(gè)停止信號(hào)P。

主機(jī)+從設(shè)備地址+寫命令,從機(jī)應(yīng)答,應(yīng)答成功,表示有這個(gè)設(shè)備,然后主機(jī)+設(shè)備內(nèi)部寄存器地址,此時(shí)不用再加寫命令控制字,從機(jī)應(yīng)答,應(yīng)答成功,表示設(shè)備內(nèi)有這個(gè)地址,主機(jī)寫入數(shù)據(jù),從機(jī)應(yīng)答,是否繼續(xù)發(fā)送,不發(fā)送的話,發(fā)送停止信號(hào)P。

要想讀設(shè)備,首先要知道將要所讀取設(shè)備的地址告訴從設(shè)備,從設(shè)備才能將數(shù)據(jù)放到(發(fā)送)SDA上使主設(shè)備讀取,從設(shè)備將數(shù)據(jù)放入SDA上的過程,由硬件主動(dòng)完成,不用人為的寫入。所以首先先寫入從機(jī)地址,然后+寫控制命令,從機(jī)應(yīng)答,應(yīng)答成功,表示有這個(gè)設(shè)備,然后寫入內(nèi)部寄存器地址,此時(shí)不用再加寫命令控制字,從機(jī)應(yīng)答,應(yīng)答成功,表示設(shè)備內(nèi)有這個(gè)地址。然后主機(jī)繼續(xù)發(fā)出:寫入從機(jī)地址,然后+讀命令,從機(jī)應(yīng)答,應(yīng)答成功,此時(shí)便可以讀取數(shù)據(jù)了,從設(shè)備已經(jīng)將數(shù)據(jù)放入到SDA上了。地址跟設(shè)備已經(jīng)驗(yàn)證了,不用再進(jìn)行驗(yàn)證。

I2C總線總線的SDA和SCL兩條信號(hào)線同時(shí)處于高電平時(shí),規(guī)定為總線的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場(chǎng)效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線,由兩條信號(hào)線各自的上拉電阻把電平拉高。

為了支持您的項(xiàng)目開發(fā)需求,我們特別準(zhǔn)備了詳盡的開發(fā)資料(有例程)。若您對(duì)此感興趣,并希望獲得這些資源以助力您的項(xiàng)目進(jìn)展,歡迎添加我的微信(限前50位:xinsousou 會(huì)親自解答)。我將免費(fèi)為您發(fā)送這些資料,希望能為您的開發(fā)工作帶來便利與啟發(fā)。

總線封鎖狀態(tài)

在特殊情況下,如果需要禁止所有發(fā)生在I2C總線上的通信活動(dòng),封鎖或關(guān)閉總線是一種可行途徑,只要掛接于該總線上的任意一個(gè)器件將時(shí)鐘線SCL鎖定在低電平上即可。

總線競(jìng)爭(zhēng)的仲裁

總線上可能掛接有多個(gè)器件,有時(shí)會(huì)發(fā)生兩個(gè)或多個(gè)主器件同時(shí)想占用總線的情況,這種情況叫做總線競(jìng)爭(zhēng)。I2C總線具有多主控能力,可以對(duì)發(fā)生在SDA線上的總線競(jìng)爭(zhēng)進(jìn)行仲裁,其仲裁原則是這樣的:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線電平不符的那個(gè)器件將自動(dòng)關(guān)閉其輸出級(jí)。總線競(jìng)爭(zhēng)的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競(jìng)爭(zhēng)仲裁的可靠性。由于是利用I2C總線上的信息進(jìn)行仲裁,因此不會(huì)造成信息的丟失。

為何識(shí)別到“0”將丟失仲裁呢?因?yàn)閷?duì)于OD門,只能驅(qū)動(dòng)到低電平,釋放總線只能通過不驅(qū)動(dòng)總線釋放,停止驅(qū)動(dòng)即產(chǎn)生“1”,但是發(fā)現(xiàn)總線還是“0”,這說明還有主機(jī)在跟自己競(jìng)爭(zhēng)總線使用權(quán),自己線驅(qū)動(dòng)到“1”,確檢測(cè)到“0”,那代表自己已經(jīng)失去了仲裁。

主機(jī)只能在總線空閑的時(shí)侯啟動(dòng)傳送。兩個(gè)或多個(gè)主機(jī)可能在起始條件的最小持續(xù)時(shí)間tHD;STA 內(nèi)產(chǎn)生一個(gè)起始條件,結(jié)果在總線上產(chǎn)生一個(gè)規(guī)定的起始條件。

當(dāng)SCL 線是高電平時(shí),仲裁在SDA 線發(fā)生;這樣,在其他主機(jī)發(fā)送低電平時(shí),發(fā)送高電平的主機(jī)將斷開它的數(shù)據(jù)輸出級(jí),因?yàn)榭偩€上的電平與它自己的電平不相同。然后,進(jìn)一步獲得其的判定條件:

仲裁可以持續(xù)多位。首先是比較地址位。如果每個(gè)主機(jī)都試圖尋址同一的器件,仲裁會(huì)繼續(xù)比較數(shù)據(jù)位(假設(shè)主機(jī)是發(fā)送器),或者比較響應(yīng)位(假設(shè)主機(jī)是接收器)。

I2C 總線的地址和數(shù)據(jù)信息由贏得仲裁的主機(jī)決定,在仲裁過程中不會(huì)丟失信息。丟失仲裁的主機(jī)可以產(chǎn)生時(shí)鐘脈沖直到丟失仲裁的該字節(jié)末尾。

在串行傳輸過程中時(shí),一旦有重復(fù)的起始條件或停止條件發(fā)送到I2C 總線的時(shí)侯,仲裁過程仍在進(jìn)行。如果可能產(chǎn)生這樣的情況,有關(guān)的主機(jī)必須在幀格式相同位置發(fā)送這個(gè)重復(fù)起始條件或停止條件。

此外,如果主機(jī)也結(jié)合了從機(jī)功能,而且在尋址階段丟失仲裁,它很可能就是贏得仲裁的主機(jī)在尋址的器件。那么,丟失仲裁的主機(jī)必須立即切換到它的從機(jī)模式。

I2C 總線的控制只由地址或主機(jī)碼以及競(jìng)爭(zhēng)主機(jī)發(fā)送的數(shù)據(jù)決定,沒有中央主機(jī),總線也沒有任何定制的優(yōu)先權(quán)。

通信過程

起始信號(hào):當(dāng)SCL為高電平時(shí),SDA由高電平向低電平跳變,表示通信開始。

發(fā)送地址:主機(jī)發(fā)送一個(gè)字節(jié)的數(shù)據(jù),其中包含了從機(jī)的地址和后續(xù)字節(jié)的傳送方向(讀或?qū)懀?/p>

從機(jī)應(yīng)答:從機(jī)在接收到地址后,如果地址匹配,則在第9個(gè)時(shí)鐘周期將SDA拉低以應(yīng)答;如果不匹配或無法應(yīng)答,則保持SDA為高電平。

數(shù)據(jù)傳輸:在確認(rèn)從機(jī)應(yīng)答后,主機(jī)開始發(fā)送或接收數(shù)據(jù)。每個(gè)字節(jié)的數(shù)據(jù)后面都跟著一個(gè)應(yīng)答位,以確保數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

結(jié)束信號(hào):當(dāng)數(shù)據(jù)傳輸完成后,主機(jī)發(fā)送停止信號(hào)來結(jié)束通信。停止信號(hào)是在SCL為高電平時(shí),SDA由低電平向高電平跳變。

時(shí)序圖

wKgaomaN4mKACo6_AAFtVWZmlIY248.png

I2C總線因其簡(jiǎn)單性和靈活性而被廣泛應(yīng)用于各種電子設(shè)備中,如連接傳感器、存儲(chǔ)器、顯示屏等外設(shè)到微控制器微處理器上。它特別適用于需要多個(gè)設(shè)備共享通信線并由一個(gè)(或多個(gè))主設(shè)備管理的場(chǎng)景。

總結(jié)

I2C是一種簡(jiǎn)單、雙向、二線制的串行通信總線,通過兩根線(SDA和SCL)實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。它采用主從架構(gòu)和時(shí)鐘同步機(jī)制來確保數(shù)據(jù)的可靠傳輸。由于其簡(jiǎn)單性和靈活性,I2C總線在電子設(shè)備中得到了廣泛應(yīng)用。

審核編輯 黃宇

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

    關(guān)注

    39

    文章

    1156

    瀏覽量

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

    關(guān)注

    10

    文章

    2878

    瀏覽量

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

    關(guān)注

    28

    文章

    1484

    瀏覽量

    123616
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RISC V的I2C操作

    _0_io_scl_write(system_i2c_0_io_scl_write),.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),WriteEnable信號(hào)的處理
    的頭像 發(fā)表于 11-01 11:06 ?193次閱讀

    I2C協(xié)議的基礎(chǔ)知識(shí)

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計(jì)算。
    的頭像 發(fā)表于 10-22 15:51 ?485次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的基礎(chǔ)知識(shí)

    使用USCI I2C主站

    電子發(fā)燒友網(wǎng)站提供《使用USCI I2C主站.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:30 ?0次下載
    使用USCI <b class='flag-5'>I2C</b>主站

    I2C噪聲毛刺濾波

    電子發(fā)燒友網(wǎng)站提供《I2C噪聲毛刺濾波.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 14:39 ?5次下載
    <b class='flag-5'>I2C</b>噪聲毛刺濾波

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b>總線

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    CAN轉(zhuǎn)I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《CAN轉(zhuǎn)I2C橋接器.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 11:10 ?0次下載
    CAN轉(zhuǎn)<b class='flag-5'>I2C</b>橋接器

    UART轉(zhuǎn)I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《UART轉(zhuǎn)I2C橋接器.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:24 ?1次下載
    UART轉(zhuǎn)<b class='flag-5'>I2C</b>橋接器

    簡(jiǎn)單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C協(xié)議因其高效、靈活和易于實(shí)現(xiàn)的特點(diǎn),在電子設(shè)備間的數(shù)據(jù)交換中得到了廣泛應(yīng)用。以下是對(duì)
    的頭像 發(fā)表于 07-25 18:06 ?1430次閱讀

    I2C邏輯選型指南

    電子發(fā)燒友網(wǎng)站提供《I2C邏輯選型指南.pdf》資料免費(fèi)下載
    發(fā)表于 06-20 16:20 ?2次下載

    I2C總線協(xié)議的工作原理和尋址格式

    等特點(diǎn),在嵌入式系統(tǒng)設(shè)計(jì)中得到了廣泛應(yīng)用。本文將詳細(xì)介紹I2C總線協(xié)議的工作原理和尋址格式,幫助讀者深入理解該協(xié)議。
    的頭像 發(fā)表于 05-27 15:47 ?1719次閱讀

    I2C、SPI、UART的通信過程還可以這樣理解

    到目前為止,I2C、SPI和UART等仍然是電子嵌入式設(shè)備中最常用的通信協(xié)議,本文,我們將剖析這三種協(xié)議,讓大家清楚、直觀的了解它們的功能、優(yōu)點(diǎn)和局限性,并輔以GIF動(dòng)圖展示。一、IIC協(xié)議I2C
    的頭像 發(fā)表于 05-23 08:10 ?7115次閱讀
    <b class='flag-5'>I2C</b>、SPI、UART的通信過程還可以這樣<b class='flag-5'>理解</b>

    什么是I2C協(xié)議 I2C總線的控制邏輯

    在實(shí)際使用過程中,I2C比較容易出現(xiàn)的一個(gè)問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時(shí)表現(xiàn)為SCL為高,SDA一直為低。
    發(fā)表于 03-12 09:17 ?1048次閱讀
    什么是<b class='flag-5'>I2C</b>協(xié)議 <b class='flag-5'>I2C</b>總線的控制邏輯

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發(fā)版的硬件I2C驅(qū)動(dòng)如何做到穩(wěn)得一批

    在一個(gè)評(píng)論中,看到網(wǎng)友對(duì)硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩(wěn)得一批。
    的頭像 發(fā)表于 02-23 09:37 ?2779次閱讀
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發(fā)版的硬件<b class='flag-5'>I2C</b>驅(qū)動(dòng)如何做到穩(wěn)得一批

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

    (SCL)和數(shù)據(jù)線(SDA)。通過在時(shí)鐘線上的脈沖信號(hào)同步數(shù)據(jù)的傳輸,具有高度可靠性和簡(jiǎn)單的通信協(xié)議。I2C
    的頭像 發(fā)表于 12-25 15:02 ?3996次閱讀
    RM新时代网站-首页