一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

I2C通信協(xié)議及其工作原理

柴火創(chuàng)客空間 ? 來源:柴火創(chuàng)客空間 ? 2023-04-19 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

"也許你聽說過I2C,或者你也正在使用I2C,但你有沒有了解過什么是I2C?I2C是如何工作的?讓我們一起了解一下什么是I2C?以及它的工作原理吧!"

什么是I2C

I2C(Inter-Integrated Circuit)是一種使用多主從結(jié)構(gòu)的串行通信總線。它是由飛利浦在20世紀(jì)80年代初設(shè)計的。I2C對于主板、嵌入式系統(tǒng)手機(jī)和外圍元件之間的通信是很方便的。由于其簡單性,I2C被廣泛用于微控制器傳感器、顯示器、物聯(lián)網(wǎng)設(shè)備、EEPROM等的通信。I2C由兩條線組成,SCL和SDA,這兩條數(shù)據(jù)線需要連接到上拉電阻,當(dāng)總線處于空閑狀態(tài)時,SCL和SDA處于高電平,I2C總線按照一定的協(xié)議工作。

接下來,讓我們看一下I2C協(xié)議。I2C支持多個從屬設(shè)備,也就是說,多個I2C從屬設(shè)備可以連接到一個I2C控制器上。這些不同的I2C從屬設(shè)備有不同的設(shè)備地址,這樣I2C主控制器可以通過I2C設(shè)備的設(shè)備地址訪問指定的設(shè)備地址,一條I2C總線連接多個I2C設(shè)備,如圖所示:

317192ee-ddf5-11ed-bfe3-dac502259ad0.png

SDA和SCL鏈接必須連接到一個上拉電阻,通常是4.7KΩ。其余的I2C從機(jī)與SDA和SCL線相連接,這樣就可以通過SDA和SCL線訪問多個I2C設(shè)備。

3186416c-ddf5-11ed-bfe3-dac502259ad0.png

I2C的特點(diǎn)

1. 只需要一條數(shù)據(jù)線SDA和一條時鐘線SCL,SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)都是雙向的I/O線

SCL(串行時鐘):串行時鐘線,用于傳輸CLK信號,一般由主設(shè)備提供給從設(shè)備

SDA(串行數(shù)據(jù)):串行數(shù)據(jù)線,傳輸通信數(shù)據(jù)

2. 實(shí)現(xiàn)真正的多主總線,任何設(shè)備都可以同時作為主設(shè)備和從設(shè)備,但同時只能有一個主設(shè)備

3. 可以通過外部連接進(jìn)行檢測,便于系統(tǒng)故障診斷和調(diào)試

4. 連接在同一總線上的IC只受限于總線的最大電容,串行8位雙向數(shù)據(jù)傳輸比特率在標(biāo)準(zhǔn)模式下可達(dá)100Kbit/s,在快速模式下可達(dá)400Kbit/s,在高速模式下可達(dá)3.4Mbit/s。

5. 總線上消耗的電流非常小。因此,在總線上擴(kuò)展的設(shè)備數(shù)量主要由電容性負(fù)載決定,它可以抵抗高噪音干擾。增加一個總線驅(qū)動器可以使總線電容擴(kuò)大10倍,傳輸距離可以達(dá)到15米;兼容不同電壓等級的設(shè)備,工作溫度范圍廣

6.接口電路是一個開路輸出。它需要通過一個上拉電阻連接到電源VCC。當(dāng)總線處于空閑狀態(tài)時,兩條線都是高電平。連接到總線上的外部器件是CMOS器件。輸出端也是一個開路電路。

CORPORATE CULTURE

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

主設(shè)備和從設(shè)備遵循以下協(xié)議格式進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)在主設(shè)備和從設(shè)備之間通過SDA數(shù)據(jù)線傳輸0和1的串行數(shù)據(jù),一個串行數(shù)據(jù)序列的結(jié)構(gòu)可以分為:

起始位

地址位(7bit或10bit)。

讀和寫位(1bit)

響應(yīng)位(1bit)

數(shù)據(jù)位+響應(yīng)位(數(shù)據(jù)位8bit;響應(yīng)位1bit;數(shù)據(jù)+響應(yīng)可反復(fù)多次傳輸,直至遇到停止位)

停止位

31a3c48a-ddf5-11ed-bfe3-dac502259ad0.png

啟動位

當(dāng)主設(shè)備決定開始通信時,它需要發(fā)送一個啟動信號,并需要進(jìn)行以下操作

首先,將SDA從VOH切換到VOL

然后將SCL從VOH切換到VOL

在主設(shè)備發(fā)出信號和啟動條件后,所有的從屬設(shè)備即使在睡眠模式下也會變得活躍,并等待接收一個地址位。

31b225de-ddf5-11ed-bfe3-dac502259ad0.png

地址位

地址位支持7位和10位,如果主站需要向從站發(fā)送/接收數(shù)據(jù),必須先發(fā)送地址,然后從站才會對應(yīng),再與安裝在總線上的從站地址相匹配。

響應(yīng)位

響應(yīng)位有2種類型:

ACK:從機(jī)正確接收數(shù)據(jù)或地址位+讀寫位

NACK:從機(jī)不回答,工作不正常。

每次主設(shè)備發(fā)送數(shù)據(jù)和讀寫位時,它將等待從屬設(shè)備的響應(yīng)信號ACK。

如果從屬設(shè)備發(fā)來響應(yīng)位信號ACK

如果沒有響應(yīng)信號NACK,SDA將輸出一個VOH,這將導(dǎo)致主設(shè)備重新啟動或停止

31c3ee9a-ddf5-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)位

每次傳輸?shù)臄?shù)據(jù)總共有8位,由發(fā)送方設(shè)置,它需要將數(shù)據(jù)位傳輸給接收方。

傳輸后有一個ACK/NACK位,如果接收方成功接收了數(shù)據(jù),從屬方就發(fā)送一個ACK。否則,從機(jī)發(fā)送一個NACK。

數(shù)據(jù)可以多次發(fā)送,直到收到一個停止位。

停止位

當(dāng)主設(shè)備決定結(jié)束通信時,它需要發(fā)送結(jié)束信號,并需要執(zhí)行以下操作。

首先將SDA從VOL切換到VOH

然后SCL從VOH切換到VOL

31da9668-ddf5-11ed-bfe3-dac502259ad0.png

下面是顯示完成的I2C時序圖:

31ebb4b6-ddf5-11ed-bfe3-dac502259ad0.png

SCL線的同步化(時鐘同步化)

SCL的同步是由于總線線 "AND"(開漏輸出)的邏輯功能,也就是說,只要有一個節(jié)點(diǎn)發(fā)送低電平,總線就會顯示為低電平。只有當(dāng)所有節(jié)點(diǎn)都發(fā)送高電平時,總線才能出現(xiàn)高電平。正是由于線路 "AND "邏輯功能的原理,當(dāng)多個節(jié)點(diǎn)同時發(fā)送時鐘信號時,總線上會顯示一個統(tǒng)一的時鐘信號,這就是SCL的同步原理。

31fb5d8a-ddf5-11ed-bfe3-dac502259ad0.png

CORPORATE CULTURE

SDA仲裁

SDA仲裁

SDA線的仲裁也是基于總線具有線路 "AND "邏輯功能的原則。節(jié)點(diǎn)發(fā)送1位數(shù)據(jù)后,比較總線上呈現(xiàn)的數(shù)據(jù)是否與它發(fā)送的內(nèi)容一致(類似于CAN總線的回讀機(jī)制),一致繼續(xù)發(fā)送否則退出競爭。SDA線的仲裁可以確保I2C總線系統(tǒng)正常通信,當(dāng)多個主節(jié)點(diǎn)試圖同時控制總線時,數(shù)據(jù)不會丟失。總線系統(tǒng)通過仲裁只允許一個主節(jié)點(diǎn)繼續(xù)占用總線。

仲裁過程

DATA1和DATA2分別是主節(jié)點(diǎn)發(fā)送給總線的數(shù)據(jù)信號,SDA是總線上呈現(xiàn)的數(shù)據(jù)信號,SCL是總線上呈現(xiàn)的時鐘信號。當(dāng)主節(jié)點(diǎn)1和2同時發(fā)送啟動信號時,兩個主節(jié)點(diǎn)都發(fā)送高電平信號,這時,總線上的信號為高電平,兩個主節(jié)點(diǎn)檢測到總線上的信號與自己發(fā)送的信號相同,繼續(xù)發(fā)送數(shù)據(jù)。在第二個時鐘周期,兩個主節(jié)點(diǎn)都發(fā)送低電平信號,總線上呈現(xiàn)的信號為低電平,繼續(xù)發(fā)送數(shù)據(jù)。在第3個時鐘周期,主節(jié)點(diǎn)1發(fā)送一個高電平信號,而主節(jié)點(diǎn)2發(fā)送一個低電平信號,根據(jù)總線的 "AND "線的邏輯功能,總線上的信號是低電平。這時,主節(jié)點(diǎn)1檢測到總線上的數(shù)據(jù)與自己發(fā)送的數(shù)據(jù)不同,并斷開數(shù)據(jù)的輸出階段,轉(zhuǎn)向從機(jī)接收狀態(tài),這樣主節(jié)點(diǎn)2贏得了總線數(shù)據(jù)沒有丟失,即總線上的數(shù)據(jù)與主節(jié)點(diǎn)2發(fā)送的數(shù)據(jù)相同,主節(jié)點(diǎn)1轉(zhuǎn)為從節(jié)點(diǎn)后繼續(xù)接收數(shù)據(jù),也沒有丟失SDA線。因此在仲裁過程中,數(shù)據(jù)不會丟失。

小結(jié):SDA仲裁和SCL時鐘同步處理不是順序進(jìn)行的,而是同時進(jìn)行的。在實(shí)際使用中,I2C很容易出現(xiàn)死鎖。有兩種常見的情況會發(fā)生死鎖:

一種情況是,當(dāng)從屬設(shè)備回復(fù)ACK時,主設(shè)備異常復(fù)位。

另一種情況是,當(dāng)從屬設(shè)備回復(fù)的數(shù)據(jù)位為0時,主設(shè)備異常復(fù)位。

這兩種情況的相同點(diǎn)是,當(dāng)主設(shè)備被異常復(fù)位時,SDA處于被從屬設(shè)備拉低的狀態(tài),而SCL在主設(shè)備復(fù)位后處于VOH(空閑狀態(tài))。此時,從設(shè)備將等待主設(shè)備將SCL拉低,以獲取ACK或數(shù)據(jù)位,而主設(shè)備將等待從設(shè)備釋放SDA線。主設(shè)備和從設(shè)備互相等待,在空中互相對視,進(jìn)入死鎖狀態(tài)。

下面是一些解決死鎖問題的常用方法:主設(shè)備檢測到SDA線后,從設(shè)備就會釋放SDA線。

主設(shè)備檢測到SDA被拉低超過一段時間后,會主動復(fù)位從設(shè)備釋放SDA。這種方法的前提是,從屬設(shè)備有一個復(fù)位引腳,MCU可以控制從屬設(shè)備的復(fù)位引腳使其復(fù)位。

在主設(shè)備檢測到SDA被拉低超過一段時間后,它向時鐘總線推送9個時鐘,并占用從屬設(shè)備的ACK位,這樣從屬設(shè)備就會釋放SDA到一個VOH。

在主設(shè)備和從設(shè)備之間串聯(lián)一個I2C緩沖器,它可以自動檢測死鎖情況。當(dāng)檢測到死鎖時,它將主動斷開與主設(shè)備的連接,并向從設(shè)備發(fā)送9個時鐘。在從屬設(shè)備釋放SDA線后,它將重新與主設(shè)備建立連接。

I2C死鎖問題不能從根本上避免,除了由MCU的異常復(fù)位引起的I2C死鎖外,在正常的通信過程中,從屬設(shè)備也可能異常地拉下SDA而引起死鎖。因此,當(dāng)死鎖發(fā)生時,軟件應(yīng)設(shè)計成能夠從死鎖中恢復(fù),從而使I2C通信能夠繼續(xù)。

CORPORATE CULTURE 時鐘拉伸

時鐘拉伸

什么是I2C時鐘拉伸?在I2C的主從通信過程中,總線上的SCL時鐘總是由主站產(chǎn)生和控制,但如果從站不能跟上主站的速度,I2C協(xié)議規(guī)定從站可以拉低SCL時鐘線。傳輸會暫停,直到從機(jī)釋放SCL線,然后繼續(xù)傳輸。

320e963e-ddf5-11ed-bfe3-dac502259ad0.png

時鐘拉伸是從屬設(shè)備的一個可選配置。如果不啟用,從機(jī)不能控制SCL;如果啟用,從機(jī)可以通過強(qiáng)行將SCL拉低來降低傳輸速度。在SCL為VOL的期間,主機(jī)只能等待從機(jī)釋放SCL。

CORPORATE CULTURE

重復(fù)啟動

有時,主站需要在一次通信中進(jìn)行多次信息交換,如與不同的從站傳輸信息,或切換讀寫操作,而又不想在此期間被其他主站干擾,那么可以使用 "重復(fù)啟動條件"--在一次通信中,主站可以產(chǎn)生多個啟動條件來完成多個信息交換,最后產(chǎn)生一個停止條件來結(jié)束整個通信過程。由于在此期間沒有停止條件,所以主站一直占據(jù)著竊聽器,而其他主站無法切換進(jìn)來。

322290bc-ddf5-11ed-bfe3-dac502259ad0.png

CORPORATE CULTURE

下面是UART、I2c和SPI之間的區(qū)別

322fe4d8-ddf5-11ed-bfe3-dac502259ad0.png

你可能想知道,這三種通信方式中哪一種是最好的?是UART、I2C,還是SPI?

實(shí)際是沒有最好的通信外設(shè),每個通信外設(shè)都有自己的優(yōu)點(diǎn)和缺點(diǎn)。

因此,用戶應(yīng)該選擇最適合他們項目的通信外設(shè)。例如,如果你想要最快的通信外設(shè),SPI將是最理想的。另一方面,如果用戶想連接多個設(shè)備而又不太復(fù)雜,I2C將是最理想的,因為它可以連接多達(dá)127個設(shè)備,而且易于管理。

以下是一些支持I2C通信協(xié)議的產(chǎn)品:

Seeeduino XIAO 系列

所有支持I2C、UART或SPI的XIAO系列單片機(jī),這里有鏈接你可以查看Seeed Studio XIAO系列產(chǎn)品。

以下是XIAO系列的一些特點(diǎn)

拇指大小的外形尺寸,只有20×17.5毫米。專為空間受限的情況而制造。

多達(dá)11個可用IO支持多種接口,包括模擬、數(shù)字、IIC、UART、SPI等。

強(qiáng)大的內(nèi)核,性能強(qiáng)大,適合多樣化和復(fù)雜的應(yīng)用。

輕松地將XIAO集成到其他板子上,實(shí)現(xiàn)大規(guī)模生產(chǎn)。

Wio Terminal

Wio Terminal是一個基于ATSAMD51的微控制器,具有藍(lán)牙Wi-Fi無線連接功能,由Realtek RTL8720DN提供支持,與Arduino和MicroPython兼容。

以下是Wio終端的一些特點(diǎn)

強(qiáng)大的MCU:Microchip ATSAMD51P19的ARM Cortex-M4F內(nèi)核,運(yùn)行頻率為120MHz。

可靠的無線連接:配備Realtek RTL8720DN,雙頻2.4Ghz/5Ghz Wi-Fi

完整的系統(tǒng)配備有屏幕+開發(fā)板+輸入/輸出接口+外殼

樹莓派40針兼容的GPIO,可以作為樹莓派的外圍設(shè)備進(jìn)行安裝

支持Arduino、CircuitPython、Micropython、ArduPy(什么是ArduPy)、AT固件、Visual Studio代碼

支持USB OTG

CORPORATE CULTURE

寫在最后

I2C(Inter-Integrated circuit)協(xié)議是電子傳輸信號中常用的一種協(xié)議。

它是一種兩線式串行雙向總線,用于連接微控制器和外部設(shè)備,也因為它所需的引腳數(shù)只需要兩條(CLK和DATA),硬件實(shí)現(xiàn)簡單,可擴(kuò)展性強(qiáng),所以被廣泛應(yīng)用于系統(tǒng)內(nèi)多個集成電路IC間的通信。

審核編輯:湯梓紅

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

    關(guān)注

    114

    文章

    17113

    瀏覽量

    184397
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    1038

    瀏覽量

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

    關(guān)注

    10

    文章

    2960

    瀏覽量

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

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127902
  • SDA
    SDA
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    28839

原文標(biāo)題:網(wǎng)絡(luò)通信 | I2C通信協(xié)議及其工作原理

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    I2C總線的工作原理和應(yīng)用

    深入探討I2C總線的工作原理與應(yīng)用,帶您了解這個在電子領(lǐng)域中扮演著重要角色的通信技術(shù)。 一、簡介 I2C(Inter-Integrated Circuit)總線是一種由Philips公
    的頭像 發(fā)表于 08-21 09:24 ?2750次閱讀
    <b class='flag-5'>I2C</b>總線的<b class='flag-5'>工作原理</b>和應(yīng)用

    3分鐘理解通信協(xié)議I2C總線 #通信協(xié)議

    通信協(xié)議I2CI2C總線總線/接口技術(shù)
    硬聲課堂
    發(fā)布于 :2021年10月18日 10:39:12

    i2c通信協(xié)議

    1.1 i2c通信協(xié)議通信協(xié)議:用來實(shí)現(xiàn)數(shù)據(jù)傳輸。i2c物理總線:SCL(時鐘線) SDA(數(shù)據(jù)線)i2c
    發(fā)表于 03-06 16:15

    I2C通信協(xié)議硬軟件

    目錄12C通信協(xié)議硬軟件I2CAHT20測溫濕度參考12C通信協(xié)議I2C
    發(fā)表于 08-23 07:42

    I2C通信協(xié)議的原理是什么

    I2C通信協(xié)議I2C通信原理I2C通信原理:I2C
    發(fā)表于 02-17 07:16

    I2C總線通信協(xié)議的相關(guān)資料下載

    基于I2C總線通信協(xié)議的溫度采集實(shí)驗(基于AHT20) I2C總線通信協(xié)議簡介 AHT20簡介 一.項目說明1)實(shí)戰(zhàn)目標(biāo):2)實(shí)戰(zhàn)元件: 二
    發(fā)表于 02-22 07:37

    I2C總線協(xié)議及其應(yīng)用(圖)

    I2C總線協(xié)議及其應(yīng)用
    發(fā)表于 06-01 20:22 ?7136次閱讀

    I2C總線協(xié)議及其應(yīng)用

    I2C總線協(xié)議及其應(yīng)用 一、I2C總線介紹: ---- 由于大規(guī)模集成電路技術(shù)的發(fā)展,在單個芯片集成CPU以及組成一個單獨(dú)工作系統(tǒng)
    發(fā)表于 02-08 11:23 ?1659次閱讀
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>協(xié)議</b><b class='flag-5'>及其</b>應(yīng)用

    實(shí)驗八-I2C通信協(xié)議

    實(shí)驗八-I2C通信協(xié)議,感興趣的可以瞧一瞧。
    發(fā)表于 09-22 16:42 ?2次下載

    I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)

    我最近剛做完I2C通信協(xié)議的編寫與調(diào)試,下面介紹一下我從一開始理解夏老師的程序,修改程序,直到下板調(diào)試整個的學(xué)習(xí)過程,希望對大家學(xué)習(xí) I2C 有一定的幫助。一、 分析源代碼學(xué)習(xí) I2C
    發(fā)表于 04-28 08:00 ?22次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>應(yīng)該如何學(xué)習(xí)

    MPU6050的I2C通信協(xié)議

    不同硬件有不同的I2C協(xié)議
    發(fā)表于 12-06 12:21 ?3次下載
    MPU6050的<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>

    I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus

    I2C,即Inter-Integrated Circuit,是一種常用的串行通信協(xié)議,用于在器件之間——特別是兩個或兩個以上不同電路之間建立通信。I2C Primer是最常用的
    的頭像 發(fā)表于 06-15 15:29 ?7550次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

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

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

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

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

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

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