www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 模擬 > 模擬技術(shù)
[導(dǎo)讀]在電子設(shè)計開發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開關(guān),大到衛(wèi)星通信都會利用的I2C總線。據(jù)統(tǒng)計I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。

在電子設(shè)計開發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開關(guān),大到衛(wèi)星通信都會利用的I2C總線。據(jù)統(tǒng)計I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。

I2C是由PHILIPS公司在1980年開發(fā)的兩線式串行總線,至今已經(jīng)發(fā)展30多年的歷史了。古老的電子產(chǎn)品中就已經(jīng)在使用I2C總線了。I2C總線在所有總線中是最簡單,最穩(wěn)定的一種,由于發(fā)展歷史久遠(yuǎn),所以I2C總線出現(xiàn)了多種版本。但是萬變不離其中,有的廠商甚至在原有I2C總線的基礎(chǔ)上,自己改變了總線時序,成為獨有的I2C。但是基本原理不變。我遇到過很多人在問我,自己的I2C程序明明已經(jīng)調(diào)試好,可換了個芯片就通信失敗了,不能讀取數(shù)據(jù)了。都是I2C的元器件,只是芯片廠家不同。在這里我告訴大家,這總線歷史悠久,各種版本的要有幾十種甚至幾百種了,所有版本的通信格式,協(xié)議都一樣,只是時間不同了,因為有的芯片廠家更改了時序中的時鐘周期。所以大家遇到這種問題,只需調(diào)整延時,其余不動即可,不必不知所措,亂找問題。

I2C總線從機(jī)設(shè)備最多支持127個,主要是通過串行數(shù)據(jù)(SDA)線和串行時鐘 (SCL)線在連接到總線的器件間傳遞信息。每個器件都有一個唯一的地址。

I2C總線有三種數(shù)據(jù)傳輸速度:標(biāo)準(zhǔn),快速模式和高速模式。標(biāo)準(zhǔn)的是100Kbps,快速模式為400Kbps,高速模式支持快至3.4Mbps的速度。所有的與次之傳輸速度的模式都是兼容的。I2C總線支持7位和10位地址空間設(shè)備和在不同電壓下運行的設(shè)備。

TTL電平與COMS在I2C這里通用。是相互兼容的。

由于I2C的模式多種多樣,我就給大家講一種常用的7位尋址模式的通信,還有10位模式,大家可以自行找資料去了解,這種10位模式的較少。

總線通信流程大概分為四部分。1.啟動—2.數(shù)據(jù)傳輸—3.應(yīng)答—4.結(jié)束。

啟動與結(jié)束:

SCL 線是高電平時,SDA 線從高電平向低電平切換,這個情況表示起始條件;

SCL 線是高電平時,SDA 線由低電平向高電平切換,這個情況表示停止條件。

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

發(fā)送到SDA 線上的每個字節(jié)必須為8 位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制。每個字節(jié)后必須跟一個響應(yīng)位。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB),如果從機(jī)要完成一些其他功能后(例如一個內(nèi)部中斷服務(wù)程序)才能接收或發(fā)送下一個完整的數(shù)據(jù)字節(jié),可以使時鐘線SCL 保持低電平,迫使主機(jī)進(jìn)入等待狀態(tài),當(dāng)從機(jī)準(zhǔn)備好接收下一個數(shù)據(jù)字節(jié)并釋放時鐘線SCL 后數(shù)據(jù)傳輸繼續(xù)。

SDA仲裁

SDA仲裁

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

仲裁過程

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

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

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

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

這兩種情況的相同點是,當(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ù)傳輸。

時鐘拉伸是從屬設(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è)都有自己的優(yōu)點和缺點。

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。I2C總線(Inter-Integrated Circuit)是一種同步半雙工串行通信總線,是P...

關(guān)鍵字: I2C總線 SDA

在電子通信領(lǐng)域,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,以其簡單、高效的特點,在微控制器、傳感器、存儲器等多種設(shè)備間建立了穩(wěn)定的連接。然而,I2C總線的穩(wěn)定工作離不開...

關(guān)鍵字: I2C總線 上拉電阻

I2C(Inter-Integrated Circuit)總線是Philips公司推出的一種雙向二線制同步串行總線,僅用兩根線即可實現(xiàn)器件之間的數(shù)據(jù)傳送。目前很多芯片集成了I2C總線接口,如CYGNAL公司的C805IF...

關(guān)鍵字: I2C總線 引腳功能 時序

來源:電子電路設(shè)計一、前言I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。二、I2C總線開發(fā)設(shè)計需要注意點1、總線容量及驅(qū)動能力I2C總線的外圍...

關(guān)鍵字: I2C總線

01總線容量與驅(qū)動能力I2C總線的外圍擴(kuò)展器件都是CMOS器件,總線有足夠的電流驅(qū)動能力,因此總線上擴(kuò)展的節(jié)點數(shù)不由電流負(fù)載能力決定,而由電容負(fù)載確定。總線上每個實際節(jié)點器件的總線接口都有一定的等效電容,等效電容的存在會...

關(guān)鍵字: I2C總線

摘要:隨著I2C總線應(yīng)用的越來越廣泛,其電路簡單,編程方便,易于系統(tǒng)標(biāo)準(zhǔn)化與維護(hù)的優(yōu)點也日益顯現(xiàn)出來。 文章在分析了I2C總線的基本概念和工作原理的基礎(chǔ)上,重點介紹了基于Wolfson音頻SoC的I2C總線接口的系統(tǒng)結(jié)...

關(guān)鍵字: I2C總線 音頻 SoC Wolfson

前面我們學(xué)習(xí)了RTT的ADC設(shè)備的使用,文章鏈接: RT-Thread ADC設(shè)備學(xué)習(xí)筆記 I2C的基本原理之前在公眾號就有相應(yīng)的文章了,很早之前發(fā)的,接下來我們來學(xué)習(xí)RT-Thread I2C總線設(shè)備的使用!這是RTT...

關(guān)鍵字: I2C總線 學(xué)習(xí)筆記 RT-Thread

關(guān)注、星標(biāo) 嵌入式客棧 ,干貨及時送達(dá) [ 導(dǎo)讀] 本文通過閱讀內(nèi)核代碼,來梳理一下I2C子系統(tǒng)的整體視圖。在開發(fā)I2C設(shè)備驅(qū)動程序時,往往缺乏對于系統(tǒng)整體的認(rèn)識,沒有一個清晰的思路。所以從高層級來分析一下I2C系統(tǒng)的設(shè)...

關(guān)鍵字: 內(nèi)核 I2C總線

在我們的實際設(shè)計中,需要清楚I2C的總線的兩個特征:1、串行數(shù)據(jù)SDA和串行時鐘SCL線都是雙向線路,通過一個電流源或上拉電阻Rp 連接到正的電源電壓+VDD,當(dāng)總線空閑時這兩

關(guān)鍵字: 函數(shù) 上拉電阻 電容 I2C總線

紹了一種以PIC16C73單片機(jī)為核心的智能熱量計量表,對智能熱量計量表的硬件和軟件做了較詳盡的闡述。它充分利用PIC單片機(jī)精簡指令集的簡潔高效和其內(nèi)置看門狗電路功能,以及一總線式數(shù)字溫度傳感器DS18B20的獨特的優(yōu)勢...

關(guān)鍵字: 單片機(jī) PIC16 BSP I2C總線
關(guān)閉