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

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

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

通信教程03_I2C簡史 基礎(chǔ)原理及協(xié)議

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-05 13:14 ? 次閱讀

教程由作者strongerHuang于2019年09月原創(chuàng)發(fā)布。

標(biāo)簽:串口、 I2C、 通信

版權(quán)所有:禁止商用

申明:該文檔僅供個人學(xué)習(xí)使用,轉(zhuǎn)載請公眾號聯(lián)系作者授權(quán)。

1寫在前面

本打算先寫點UART相關(guān)內(nèi)容,但UART基礎(chǔ)知識在前面第一篇文章都簡單寫過,也相信大家不陌生,這里就不再次贅述。

I2C是目前使用較多的一種總線,一般用于連接各種從設(shè)備,比如:EEPROM存儲器、溫濕度傳感器、角速度計等。

額外提一句,初入職場的人有必要學(xué)習(xí)了解下,掌握I2C算是最基本的技能。

2I2C簡史

1980年,飛利浦公司為了讓各種低速設(shè)備(飛利浦芯片)連接起來,就開始著手研發(fā)通信的總線。

1982年,原始版本,使用了100KHz通信速率,提供7位地址,將總線上的器件數(shù)量限制為112(有幾個保留地址)。

1992年,發(fā)布第一個規(guī)范,增加了400kHz的快速模式以及擴(kuò)展的10位地址空間。

1998年,隨著技術(shù)的進(jìn)步,通信速率要求越來越高,達(dá)到了高速3.4 MHz,再到后面升級至5MHz,同時使用差分信號以改進(jìn)抗噪聲能力等。

I2C版本歷史:

額外說一下SMBus:

1995年,英特爾在I2C基礎(chǔ)上推出了一種變體稱為“系統(tǒng)管理總線”(SMBus)。SMBus是一種更嚴(yán)格控制的格式,旨在最大限度地提高PC主板上支持IC之間通信的可預(yù)測性。

SMBus之間最顯著的區(qū)別在于它將速度限制在10kHz至100kHz之間,而I2C則可以支持0kHz至5MHz的器件。

3I2C基礎(chǔ)內(nèi)容

I2C:Inter-Integrated Circuit,字面意思是集成電路之間,是I2C Bus簡稱。

I2C只需要兩根電線,這兩根線最多可支持1008個從設(shè)備,實現(xiàn)同步串行通信。

與SPI不同的是,I2C可以支持多主機(jī),多從機(jī)的總線。

3.1 I2C兩線信號

每個I2C總線由兩個信號組成:SCL時鐘信號,SDA數(shù)據(jù)信號。時鐘信號總是由當(dāng)前總線主機(jī)產(chǎn)生。

與UART、SPI不同,I 2 C總線驅(qū)動器是開漏(不了解開漏的請自行百度),意思是它們可以將相應(yīng)的信號線拉低,但不能將其驅(qū)動為高電平。

每條信號線上都有一個上拉電阻,當(dāng)沒有器件將其置為低電平時,將信號恢復(fù)為高電平。

3.2 信號電平

通常,I2C總線信號電平5V、3.3V居多,如果總線上器件兼容這兩種電平,可以直接使用。

如果信號電壓相差很大(5V和2.5V),或者電平不兼容,就需要進(jìn)行電平轉(zhuǎn)換才行。

4I2C協(xié)議

I2C對初學(xué)者來說,難點就在于理解其中協(xié)議,下面從幾個簡單角度說一下。

4.1 收發(fā)基本原理

I2C的兩個總線:SCL時鐘信號,SDA數(shù)據(jù)信號。SCL由主機(jī)產(chǎn)生,SDA由主機(jī)或者從機(jī)產(chǎn)生。

I2C是同步串行通信,同時它屬于半雙工,也就是說同一時間SDA只能由一個設(shè)備發(fā)送信號。

這樣,你就會發(fā)現(xiàn),SDA上的信號(數(shù)據(jù)),有時候是主機(jī)的,有時候是從機(jī)的。

4.2 基本協(xié)議:7/10位地址

I2C支持7位地址和10位地址,消息主要分為兩種:地址和數(shù)據(jù)。

7位地址:

10位地址:

除了地址和數(shù)據(jù),還有開始條件、停止條件、讀寫,以及應(yīng)答信息(上圖小字描述)。

4.3 開始和停止

SDA數(shù)據(jù)線由高 -> 低 為總線開始條件;

SDA數(shù)據(jù)線由低 -> 高 為總線結(jié)束條件;

4.4 應(yīng)答(ACK)和非應(yīng)答(ACK)

應(yīng)答和非應(yīng)答發(fā)生在每個字節(jié)之后,是由接收方向發(fā)送方發(fā)出確認(rèn)信號,表明“數(shù)據(jù)”已成功接收,并且可以繼續(xù)發(fā)送下一字節(jié)數(shù)據(jù)。

應(yīng)答有很多種情況,初學(xué)者可以參考協(xié)議手冊,里面有詳細(xì)講述。

I2C協(xié)議手冊地址:

https://www.nxp.com/docs/en/user-guide/UM10204.pdf

我之前結(jié)合模擬I2C代碼講述I2C的文章:

更加深入理解I2C總線、協(xié)議及應(yīng)用

5

說明

1.該文檔僅供個人學(xué)習(xí)使用,版權(quán)所有,禁止商用。

2.本文由我一個人編輯并整理,難免存在一些錯誤。

3.本文收錄于公眾號『嵌入式專欄』,關(guān)注微信公眾號回復(fù)【通信教程】即可查看全系列教程。

6最后

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

    關(guān)注

    28

    文章

    892

    瀏覽量

    40330
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6039

    瀏覽量

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

    關(guān)注

    28

    文章

    1489

    瀏覽量

    123944
收藏 人收藏

    評論

    相關(guān)推薦

    飛凌嵌入式ElfBoard ELF 1板卡-i2c與從設(shè)備通訊編程示例之i2c設(shè)備通信編程

    本節(jié)用到的源碼路徑:ELF 1開發(fā)板資料包\\03-例程源碼\\03-1 命令行例程源碼\\03_elf1_cmd_i2c i2c.c 這段代碼主要分為三部分,定義了三個
    發(fā)表于 11-01 11:28

    RISC V的I2C操作

    ?雙向IO,需設(shè)置為弱上拉。I2C對應(yīng)的三態(tài)門的OE信號:需要賦值為I2C SDA/SCL的write信號;rtl中的表述如下:主要原因在于:i2c通信過程中,當(dāng)總線空閑時,兩根線均
    的頭像 發(fā)表于 11-01 11:06 ?228次閱讀

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

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

    物聯(lián)網(wǎng)嵌入式軟件中的I2C總線設(shè)計詳解

    基本概念、特點、通信協(xié)議,以及在不同場景下的高級應(yīng)用和最佳實踐。I2C接口只有2根信號線,總線上可以連接多個設(shè)備,硬件實現(xiàn)簡單,可擴(kuò)展性強(qiáng)。I2C
    的頭像 發(fā)表于 09-29 16:21 ?431次閱讀
    物聯(lián)網(wǎng)嵌入式軟件中的<b class='flag-5'>I2C</b>總線設(shè)計詳解

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

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的一種簡單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C
    的頭像 發(fā)表于 07-25 18:06 ?1529次閱讀

    如何使用Dave 3.1.10在XMC4400微控制器上實現(xiàn)I2c通信協(xié)議 軟件?

    我一直在嘗試使用 Dave 3.1.10 與 XMC4400 執(zhí)行 I2c 通信協(xié)議,以實現(xiàn)傳感器接口。 軟件但我做不到。 Dave 3.1.10 的語法有所不同。 我無法使用 Dave
    發(fā)表于 06-03 07:21

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

    I2C(Inter-Integrated Circuit)總線協(xié)議,即集成電路總線協(xié)議,是一種用于連接微控制器及其外圍設(shè)備的串行總線協(xié)議。I2C
    的頭像 發(fā)表于 05-27 15:47 ?1826次閱讀

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

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

    SPI和I2C通信協(xié)議:應(yīng)用與區(qū)別

    本文深入解析了SPI和I2C這兩種通信協(xié)議的特點、工作原理和應(yīng)用場景。SPI適用于高速數(shù)據(jù)傳輸,常用于存儲器芯片和顯示器驅(qū)動等領(lǐng)域;I2C適用于低速控制和傳感器數(shù)據(jù)傳輸,常用于溫度傳感器和ADC
    的頭像 發(fā)表于 04-22 16:45 ?1860次閱讀

    逼真動畫展示I2C、SPI、UART的通信過程

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

    總結(jié)usart、uart、i2c、spi區(qū)別及相關(guān)知識

    USART、UART、I2C和SPI是四種不同的串行通信協(xié)議,它們各自具有獨特的特點和應(yīng)用領(lǐng)域
    的頭像 發(fā)表于 04-10 09:47 ?1821次閱讀
    總結(jié)usart、uart、<b class='flag-5'>i2c</b>、spi區(qū)別及相關(guān)知識

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

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

    詳解I2C接口協(xié)議

    I2C總線是由荷蘭皇家飛利浦Philips公司(現(xiàn)恩智浦NXP半導(dǎo)體)開發(fā)的一種簡單的雙向兩線制總線協(xié)議標(biāo)準(zhǔn)。
    發(fā)表于 03-07 10:22 ?2153次閱讀
    詳解<b class='flag-5'>I2C</b>接口<b class='flag-5'>協(xié)議</b>

    什么是I2C接口?什么是I3C接口?I2CI3C的區(qū)別

    I2C接口是一種串行通信協(xié)議,全稱為Inter-Integrated Circuit,即集成電路間總線。它是一種雙向、兩線制(SCL和SDA)的串行通信接口,主要用于連接微控制器和其他外圍設(shè)備,如傳感器、存儲器、顯示器等。
    的頭像 發(fā)表于 02-17 14:39 ?6469次閱讀
    什么是<b class='flag-5'>I2C</b>接口?什么是<b class='flag-5'>I3C</b>接口?<b class='flag-5'>I2C</b>與<b class='flag-5'>I3C</b>的區(qū)別

    藍(lán)牙串口通訊總線——I2C/SPI/UART

    Sensor、Touch、藍(lán)牙模塊、WIFI模塊等也都兼容這三種通信協(xié)議的1種以上。那么這三條通信總線有什么區(qū)別呢?工業(yè)物聯(lián)網(wǎng)無線通信專業(yè)廠商為您一一細(xì)說—— I2C:半雙工、同步、串
    的頭像 發(fā)表于 01-22 09:41 ?1689次閱讀
    藍(lán)牙串口通訊總線——<b class='flag-5'>I2C</b>/SPI/UART