91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

瞿小洲 ? 來源:jf_33322995 ? 作者:jf_33322995 ? 2024-07-10 09:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

基本概念

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

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

wKgaomaN4w2AaeUYAABSst5mEgU628.png

工作原理

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

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

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

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

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

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

總線封鎖狀態(tài)

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

總線競爭的仲裁

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

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

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

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

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

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

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

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

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

通信過程

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

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

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

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

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

時序圖

wKgaomaN4mKACo6_AAFtVWZmlIY248.png

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

總結(jié)

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

審核編輯 黃宇

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

    關(guān)注

    40

    文章

    1336

    瀏覽量

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

    關(guān)注

    10

    文章

    3043

    瀏覽量

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

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131306
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識,現(xiàn)在讓我們討論本系列的最后一個協(xié)議,即集成電路間協(xié)議(I2C)。如果您曾經(jīng)構(gòu)建過使用OLED顯示器、氣壓傳感器或陀螺儀/加速度計模塊
    的頭像 發(fā)表于 01-04 09:14 ?1729次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定通信?

    基于FPGA的I2C控制模塊設(shè)計

    I2C_WRITE_WDATA.v模塊實現(xiàn)I2C寫時序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?5165次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設(shè)計

    AS32X601的I2C模塊操作EEPROM詳解

    國科安芯推出的AS32X601系列MCU芯片內(nèi)置的I2C模塊提供了符合工業(yè)標(biāo)準(zhǔn)的兩線串行制接口,可用于MCU和外部I2C設(shè)備的通訊。I2C總線使用兩條串行線:串行數(shù)據(jù)線SDA和串行時鐘線SCL
    的頭像 發(fā)表于 12-21 21:39 ?1077次閱讀
    AS32X601的<b class='flag-5'>I2C</b>模塊操作EEPROM詳解

    I2C的總線協(xié)議

    用狀態(tài)。 I2C 通信采用主從結(jié)構(gòu),并由主機發(fā)起和結(jié)束通信。主機通過發(fā)送 START 起始信號發(fā)起通信,之后發(fā)送SLA+W/R 共 8bit 數(shù)據(jù)(其中,SLA 為 7bit 從機地址,W/R 為
    發(fā)表于 12-15 08:07

    I2C的狀態(tài)碼

    I2C 總線狀態(tài)通過 I2C 狀態(tài)寄存器 I2Cx_STAT 標(biāo)識,共 26 個正常接收或發(fā)送狀態(tài),和 2 個特殊狀態(tài)(0xF8:
    發(fā)表于 12-08 08:04

    I2C死鎖的問題

    在實際使用過程中,I2C比較容易出現(xiàn)的一個問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時表現(xiàn)為SCL為高,SDA一直為低。 在I2C主設(shè)備進行讀寫操作的過程中,主設(shè)備在開始信
    發(fā)表于 12-04 06:00

    I2C的優(yōu)點介紹

    通信,無需額外的線路選擇設(shè)備。每個 I2C 設(shè)備都有一個唯一的地址,通常為 7 或 10 位長,可實現(xiàn)高效的數(shù)據(jù)路由,并且無需手動配置或外部解碼邏輯。該尋址方案在單個總線上支持多達(dá) 128 個(7 位
    發(fā)表于 11-27 07:49

    I2C的缺點介紹

    的最大數(shù)量。在設(shè)備數(shù)量較多的場景下,可能會出現(xiàn)地址沖突,需要采取地址復(fù)用或協(xié)議轉(zhuǎn)換器等額外措施克服限制。仔細(xì)規(guī)劃和考慮設(shè)備尋址方案對于避免沖突并確保成功通信至關(guān)重要。 時鐘拉伸: I2C 允許從設(shè)備
    發(fā)表于 11-27 06:10

    深入剖析I2C協(xié)議

    I2C是由Philips開發(fā)的簡單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時刻,數(shù)據(jù)單向流動)。此外
    的頭像 發(fā)表于 08-21 15:10 ?3704次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    第十八章 I2C通信測試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設(shè)備:協(xié)議層含起始/停止信號、應(yīng)答機制等。還講解W55MH32的I2C外設(shè)及初始化,并進行了通信測試代碼的分析。
    的頭像 發(fā)表于 06-19 17:07 ?1332次閱讀
    第十八章 <b class='flag-5'>I2C</b>通信測試

    SPC574s如何使用SPC5Studio自帶的I2C庫實現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C實現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 06-09 06:22

    SPC574s如何使用SPC5Studio自帶的I2C庫實現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C實現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 06-05 08:17

    SPC574s如何使用SPC5Studio自帶的I2C庫實現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C實現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 05-14 07:10

    簡單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?2590次閱讀
    簡單了解<b class='flag-5'>I2C</b>接口

    是德DSOX4034A示波器I2C總線信號分析

    在現(xiàn)代電子設(shè)計與調(diào)試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,因其簡單性、靈活性和低功耗特性,成為許多嵌入式系統(tǒng)和電子設(shè)備中不可或缺的通信方式
    的頭像 發(fā)表于 03-19 13:47 ?1262次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b>總線信號分析