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

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

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

面試遇到再不怕了:IIC協(xié)議

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-04-29 08:10 ? 次閱讀

I2C(Inter-Integrated Circuit),有時(shí)也稱為IIC或TWI(Two-Wire Interface),是一種用于低速度串行通信的總線協(xié)議,主要用于連接微控制器與其外圍設(shè)備,如傳感器、EEPROM、RTC(實(shí)時(shí)時(shí)鐘)等。I2C 由飛利浦半導(dǎo)體(現(xiàn)今的恩智浦半導(dǎo)體)在1980年代初期開發(fā)。

I2C 通信僅需兩根線:

SDA(Serial Data):數(shù)據(jù)線,用于數(shù)據(jù)的雙向傳輸。

SCL(Serial Clock):時(shí)鐘線,用于同步信號(hào)。

I2C 協(xié)議的特點(diǎn)包括:

主從架構(gòu):

在I2C總線上,任何設(shè)備都可以是主設(shè)備或從設(shè)備。主設(shè)備負(fù)責(zé)生成時(shí)鐘信號(hào)和控制總線,而從設(shè)備接收主設(shè)備的指令。通常,微控制器充當(dāng)主設(shè)備的角色。

支持多主設(shè)備和多從設(shè)備:

I2C 總線允許多個(gè)主設(shè)備和多個(gè)從設(shè)備共存,每個(gè)設(shè)備都有唯一的地址。在多主模式下,各主設(shè)備需要通過(guò)一定的仲裁機(jī)制來(lái)協(xié)調(diào)對(duì)總線的訪問(wèn)。

地址和數(shù)據(jù)傳輸:

在I2C通信中,數(shù)據(jù)傳輸是通過(guò)發(fā)送設(shè)備地址加讀寫位開始的,隨后跟隨的是數(shù)據(jù)傳輸。如果有多個(gè)從設(shè)備,主設(shè)備通過(guò)地址來(lái)指定與之通信的從設(shè)備。

同步:

I2C是一種同步協(xié)議,意味著數(shù)據(jù)的傳輸是由時(shí)鐘信號(hào)(SCL線)來(lái)控制的。

I2C 協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)單、成本低且靈活,只需兩根線就能連接多個(gè)設(shè)備。不足之處是速度相比SPI和UART較慢,且總線長(zhǎng)度有限制,隨著連接的設(shè)備數(shù)量增加,可能會(huì)影響通信速度和可靠性。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

一、IIC的通信流程

e75acc98-05bc-11ef-9118-92fbcf53809c.png

e76b5c84-05bc-11ef-9118-92fbcf53809c.png

啟動(dòng)信號(hào):

通信開始時(shí),主設(shè)備發(fā)出啟動(dòng)信號(hào)。這通過(guò)將數(shù)據(jù)線(SDA)從高電平拉低,而時(shí)鐘線(SCL)保持在高電平來(lái)實(shí)現(xiàn)。這個(gè)動(dòng)作通知所有從設(shè)備主設(shè)備即將開始通信。

發(fā)送設(shè)備地址及讀寫位:

緊接著啟動(dòng)信號(hào),主設(shè)備發(fā)送從設(shè)備的地址以及操作位(讀/寫)到數(shù)據(jù)線上。每個(gè)從設(shè)備都有一個(gè)唯一的地址。讀寫位決定了操作是讀數(shù)據(jù)(通常設(shè)為1)還是寫數(shù)據(jù)(通常設(shè)為0)。

從設(shè)備應(yīng)答:

地址和讀寫位發(fā)送完畢后,被尋址的從設(shè)備需要通過(guò)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK)來(lái)響應(yīng)。應(yīng)答信號(hào)是在數(shù)據(jù)線(SDA)上產(chǎn)生一個(gè)低電平信號(hào),同時(shí)時(shí)鐘線(SCL)為高電平。

數(shù)據(jù)傳輸:

成功建立連接和從設(shè)備應(yīng)答之后,數(shù)據(jù)可以開始傳輸。數(shù)據(jù)是按字節(jié)傳輸?shù)?,每傳輸完一個(gè)字節(jié)后,接收方(無(wú)論是主設(shè)備還是從設(shè)備)都需要發(fā)送一個(gè)應(yīng)答信號(hào)(ACK)。

停止信號(hào):

數(shù)據(jù)傳輸完成后,主設(shè)備發(fā)出一個(gè)停止信號(hào)來(lái)終止通信。這通過(guò)將數(shù)據(jù)線(SDA)從低電平拉高,而時(shí)鐘線(SCL)保持在高電平來(lái)實(shí)現(xiàn),標(biāo)志著一次I2C交流的結(jié)束。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

二、發(fā)送1bit數(shù)據(jù)的流程

e7a904da-05bc-11ef-9118-92fbcf53809c.png

主設(shè)備首先確保時(shí)鐘線SCL處于高電平狀態(tài)。

然后,主設(shè)備會(huì)將要發(fā)送的比特?cái)?shù)據(jù)設(shè)置在數(shù)據(jù)線SDA上。如果發(fā)送的是‘1’比特,SDA線會(huì)被設(shè)置為高電平;如果發(fā)送的是‘0’比特,SDA線會(huì)被設(shè)置為低電平。SDA線上的數(shù)據(jù)必須在SCL線的一個(gè)時(shí)鐘脈沖開始之前穩(wěn)定。

在數(shù)據(jù)線SDA穩(wěn)定后,主設(shè)備通過(guò)將時(shí)鐘線SCL從高電平拉低到低電平,來(lái)通知從設(shè)備數(shù)據(jù)線上的數(shù)據(jù)可以被讀取。從設(shè)備在SCL線為高電平的時(shí)候讀取SDA線上的數(shù)據(jù)。

完成這個(gè)數(shù)據(jù)位的傳輸后,主設(shè)備通常會(huì)將時(shí)鐘線SCL恢復(fù)到高電平,準(zhǔn)備發(fā)送下一個(gè)比特或產(chǎn)生一個(gè)停止條件以結(jié)束通信。

重要的是,在SCL線為高電平期間,數(shù)據(jù)線SDA上的數(shù)據(jù)必須保持穩(wěn)定,因?yàn)槿魏卧赟CL高電平時(shí)的SDA變化都可能被視為控制信號(hào)(例如啟動(dòng)或停止條件)。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

三、IIC需要外接上拉電阻

e75acc98-05bc-11ef-9118-92fbcf53809c.png

e7ffdaa8-05bc-11ef-9118-92fbcf53809c.png

e8222018-05bc-11ef-9118-92fbcf53809c.png

I2C總線的設(shè)計(jì)是開漏(open-drain)或開集(open-collector)輸出,這意味著連接到總線的設(shè)備能夠?qū)⒖偩€拉低到地(GND),但是不能將總線推高至電源電壓(Vcc)。

上拉電阻的作用主要包括以下幾點(diǎn):

提供拉高電平:

設(shè)備將總線釋放時(shí),上拉電阻將SDA和SCL線拉高到正邏輯電平(通常是Vcc),確保線路在非驅(qū)動(dòng)狀態(tài)時(shí)為高電平。

限制電流

當(dāng)總線設(shè)備將SDA或SCL線拉低時(shí),上拉電阻起到限流的作用,防止電流過(guò)大導(dǎo)致設(shè)備損壞。

防止總線沖突:

多個(gè)設(shè)備可能會(huì)同時(shí)嘗試控制總線。由于開漏設(shè)計(jì),任何設(shè)備都可以安全地將總線拉低而不會(huì)對(duì)其他設(shè)備造成傷害。上拉電阻確保了在這種情況下不會(huì)出現(xiàn)短路。

增強(qiáng)信號(hào)完整性:

上拉電阻也有助于維護(hù)信號(hào)的完整性,減少因?yàn)殚L(zhǎng)線路或者其他電氣特性引起的信號(hào)退化。

選擇合適的上拉電阻值是很重要的。電阻值太大,電流太小,導(dǎo)致總線拉高速度變慢,影響通信速率;電阻值太小,可能導(dǎo)致電流過(guò)大,浪費(fèi)功率,且拉低總線時(shí)可能會(huì)對(duì)設(shè)備造成損害。通常,上拉電阻的選擇取決于總線容量(總線上設(shè)備的數(shù)量和總線長(zhǎng)度)和系統(tǒng)工作的電源電壓。常見的電阻值范圍從1.8kΩ到10kΩ不等。

聲明:本文內(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)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15886

    瀏覽量

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

    關(guān)注

    28

    文章

    1452

    瀏覽量

    122265
  • IIC協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    3905
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA實(shí)現(xiàn)IIC協(xié)議的設(shè)計(jì)

    今天給大家?guī)?lái)的是IIC通信,IIC協(xié)議應(yīng)用非常廣泛,例如與MPU6050進(jìn)行通信,配置OV5640攝像頭、驅(qū)動(dòng)OLED屏幕等等,都需要使用到IIC
    的頭像 發(fā)表于 03-04 10:49 ?1054次閱讀
    FPGA實(shí)現(xiàn)<b class='flag-5'>IIC</b><b class='flag-5'>協(xié)議</b>的設(shè)計(jì)

    什么是IIC和SPI總線協(xié)議?

    通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市場(chǎng)需求制定了這兩種標(biāo)準(zhǔn)通信協(xié)議。
    發(fā)表于 10-21 07:25

    STM32的IIC協(xié)議簡(jiǎn)介

    文章目錄(一)IIC協(xié)議簡(jiǎn)介(二)物理層和協(xié)議層簡(jiǎn)介(三)IIC物理層:3.1、物理層的特點(diǎn)(四)IIC
    發(fā)表于 01-05 06:13

    IIC協(xié)議軟件模擬方法

    關(guān)于iic協(xié)議和對(duì)AT24C16進(jìn)行讀寫數(shù)據(jù)的代碼解讀認(rèn)識(shí)IIC協(xié)議IIC協(xié)議軟件模擬方法功能快
    發(fā)表于 02-09 07:00

    IIC協(xié)議的相關(guān)資料下載

    關(guān)于MPU6050學(xué)習(xí)的一些總結(jié)之二IIC協(xié)議前言一、IIC總線前言在查閱并了解了MPU6050的芯片手冊(cè)后,已經(jīng)對(duì)MPU6050有了大致的了解。那么接下來(lái)如何使MPU6050工作并且讀取內(nèi)部寄存器
    發(fā)表于 02-10 06:02

    如何使用代碼實(shí)現(xiàn)的IIC協(xié)議

    1. 綜述  由上篇博客可知道IIC協(xié)議如何用代碼實(shí)現(xiàn),本篇博客就不涉及協(xié)議內(nèi)容,只講解如何使用?! ”敬蔚膶?shí)驗(yàn)傳感為:DS3231(時(shí)鐘模塊),對(duì)于時(shí)鐘模塊的具體信息我也就不多介紹,大家可以自行度
    發(fā)表于 02-21 06:36

    LESSON8_IIC總線協(xié)議

    iic總線協(xié)議,通訊方式,通訊工作原理!單片機(jī)入門知識(shí)
    發(fā)表于 06-17 16:48 ?11次下載

    IIC總線協(xié)議

    IIC總線協(xié)議,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 16:29 ?58次下載

    IIC總線協(xié)議中文版

    IIC協(xié)議的介紹,中文版,易懂,可以在里面了解到IIC是何物,如何使用以及定義
    發(fā)表于 08-09 15:08 ?0次下載

    IIC和SPI總線協(xié)議的區(qū)別

    通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市場(chǎng)需求制定了這兩種標(biāo)準(zhǔn)通信協(xié)議。
    的頭像 發(fā)表于 04-24 12:41 ?6315次閱讀
    <b class='flag-5'>IIC</b>和SPI總線<b class='flag-5'>協(xié)議</b>的區(qū)別

    支付寶宣布電子結(jié)婚證,出門辦事忘帶證件也不怕了

    此前,支付寶宣布,已有5省市上線電子結(jié)婚證。福建、江西、江蘇、浙江、重慶5省市首批支持,出門辦事忘帶證件也不怕了
    的頭像 發(fā)表于 08-20 10:41 ?2910次閱讀

    IIC協(xié)議超詳細(xì)解釋(適合小白入門)

    以下內(nèi)容,將解釋以下幾個(gè)問(wèn)題1.IIC協(xié)議是什么?2.IIC協(xié)議用來(lái)干什么?3.IIC協(xié)議的通信
    發(fā)表于 12-07 14:21 ?5次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>協(xié)議</b>超詳細(xì)解釋(適合小白入門)

    振弦采集模塊的通訊協(xié)議IIC

    振弦采集模塊的通訊協(xié)議IICIIC 通訊協(xié)議本身即是基于設(shè)備地址和寄存器的物理層通訊協(xié)議, VMXXX 使用
    的頭像 發(fā)表于 11-17 10:02 ?744次閱讀
    振弦采集模塊的通訊<b class='flag-5'>協(xié)議</b>( <b class='flag-5'>IIC</b>)

    什么是IIC協(xié)議

    IIC協(xié)議最早1982年由飛利浦公司設(shè)計(jì)開發(fā),是一種兩線制(SDA + SCL)的串行通行方式,提供了主從機(jī)之間通行的一種方案,在今天也是被廣泛的應(yīng)用在很多的產(chǎn)品設(shè)備上。
    的頭像 發(fā)表于 02-10 10:53 ?4295次閱讀
    什么是<b class='flag-5'>IIC</b><b class='flag-5'>協(xié)議</b>

    IIC通訊協(xié)議的電路設(shè)計(jì)

    前面我們概述過(guò)一些常見的通訊協(xié)議,本文著重講講關(guān)于IIC協(xié)議
    的頭像 發(fā)表于 04-19 11:00 ?1805次閱讀
    <b class='flag-5'>IIC</b>通訊<b class='flag-5'>協(xié)議</b>的電路設(shè)計(jì)