日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]介紹模擬I2C總線的多主節(jié)點通信原理,并提出一種新的實現(xiàn)方法。這種采用延時接收比較來實現(xiàn)仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能夠?qū)崿F(xiàn)模擬I2C總線的多主通信,同時對I2C總線的推廣起到了積極作用。

摘要  介紹模擬I2C總線的多主節(jié)點通信原理,并提出一種新的實現(xiàn)方法。這種采用延時接收比較來實現(xiàn)仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能夠?qū)崿F(xiàn)模擬I2C總線的多主通信,同時對I2C總線的推廣起到了積極作用。

關(guān)鍵詞  模擬I2C總線  仲裁  多主通信

 

I2C總線(Inter IC BUS)Philips公司推出的雙向兩線串行通信標(biāo)準(zhǔn)。由于它具有接口少、通信效率高等優(yōu)點,現(xiàn)已得到廣泛的應(yīng)用[13]。它除了可以進(jìn)行簡單的單主節(jié)點通信外,還可以應(yīng)用在多主節(jié)點的通信系統(tǒng)中。在多主節(jié)點通信系統(tǒng)中,如果兩個或者更多的主節(jié)點同時啟動數(shù)據(jù)傳輸,總線具有沖突檢測和仲裁功能,保證通信正常進(jìn)行并防止數(shù)據(jù)破壞?,F(xiàn)在許多微控制器(MCU)都具有I2C總線接口,能方便地進(jìn)行I2C總線設(shè)計。對于沒有I2C總線接口的MCU,可以采用兩條IO接口線進(jìn)行模擬[2,3]。目前,一些介紹模擬I2C的資料主要講的是在單主節(jié)點系統(tǒng)中進(jìn)行的通信,這使得模擬I2C總線的應(yīng)用具有一定的局限性。本文根據(jù)總線仲裁的思想,提出一種多主節(jié)點通信的思想及實現(xiàn)流程。

 

1  I2C總線系統(tǒng)簡介[13]

 

I2C總線系統(tǒng)是由SCL(串行時鐘)SDA(串行數(shù)據(jù))兩根總線構(gòu)成的。該總線有嚴(yán)格的時序要求,總線工作時,由串行時鐘線SCL傳送時鐘脈沖,由串行數(shù)據(jù)線SDA傳送數(shù)據(jù)??偩€協(xié)議規(guī)定,各主節(jié)點進(jìn)行通信時都要有起始、結(jié)束、發(fā)送數(shù)據(jù)和應(yīng)答信號。這些信號都是通信過程中的基本單元??偩€傳送的每1幀數(shù)據(jù)均是1個字節(jié),每當(dāng)發(fā)送完1個字節(jié)后,接收節(jié)點就相應(yīng)給一應(yīng)答信號。協(xié)議規(guī)定,在啟動總線后的第1個字節(jié)的高7位是對從節(jié)點的尋址地址,第8位為方向位(0”表示主節(jié)點對從節(jié)點的寫操作;“1”表示主節(jié)點對從節(jié)點的讀操作),其余的字節(jié)為操作數(shù)據(jù)。圖1列出I2C總線上幾個基本信號的時序。圖1中包括起始信號、停止信號、應(yīng)答信號、非應(yīng)答信號以及傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”的時序。起始信號就是在SCL線為高時SDA線從高變化到低;停止信號就是在SCL線為高時SDA線從低變化到高;應(yīng)答信號是在SCL為高時SDA為低;非應(yīng)答信號相反,是在SCL為高時SDA為高。傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”與發(fā)送應(yīng)答位和非應(yīng)答位時序圖是相同的。

2表示了一個完整的數(shù)據(jù)傳送過程。在I2C總線發(fā)送起始信號后,發(fā)送從機(jī)的7位尋址地址和1位表示這次操作性質(zhì)的讀寫位,在有應(yīng)答信號后開始傳送數(shù)據(jù),直到發(fā)送停止信號。數(shù)據(jù)是以字節(jié)為單位的。發(fā)送節(jié)點每發(fā)送1個字節(jié)就要檢測SDA線上有沒有收到應(yīng)答信號,有則繼續(xù)發(fā)送,否則將停止發(fā)送數(shù)據(jù)。

 

2  I2C總線的仲裁

在多主的通信系統(tǒng)中??偩€上有多個節(jié)點,它們都有自己的尋址地址,可以作為從節(jié)點被別的節(jié)點訪問,同時它們都可以作為主節(jié)點向其他的節(jié)點發(fā)送控制字節(jié)和傳送數(shù)據(jù)。但是如果有兩個或兩個以上的節(jié)點都向總線上發(fā)送啟動信號并開始傳送數(shù)據(jù),這樣就形成了沖突。要解決這種沖突,就要進(jìn)行仲裁的判決,這就是I2C總線上的仲裁。

I2C總線上的仲裁分兩部分:SCL線的同步和SDA線的仲裁。SCL同步是由于總線具有線“與”的邏輯功能,即只要有一個節(jié)點發(fā)送低電平時,總線上就表現(xiàn)為低電平。當(dāng)所有的節(jié)點都發(fā)送高電平時,總線才能表現(xiàn)為高電平。正是由于線“與”邏輯功能的原理,當(dāng)多個節(jié)點同時發(fā)送時鐘信號時,在總線上表現(xiàn)的是統(tǒng)一的時鐘信號。這就是SCL的同步原理。

SDA線的仲裁也是建立在總線具有線“與”邏輯功能的原理上的。節(jié)點在發(fā)送1位數(shù)據(jù)后,比較總線上所呈現(xiàn)的數(shù)據(jù)與自己發(fā)送的是否一致。是,繼續(xù)發(fā)送;否則,退出競爭。圖3中給出了兩個節(jié)點在總線上的仲裁過程。SDA線的仲裁可以保證I2C總線系統(tǒng)在多個主節(jié)點同時企圖控制總線時通信正常進(jìn)行并且數(shù)據(jù)不丟失??偩€系統(tǒng)通過仲裁只允許一個主節(jié)點可以繼續(xù)占據(jù)總線[l]。

3是以兩個節(jié)點為例的仲裁過程。DATAlDATA2分別是主節(jié)點向總線所發(fā)送的數(shù)據(jù)信號,SDA為總線上所呈現(xiàn)的數(shù)據(jù)信號,SCL是總線上所呈現(xiàn)的時鐘信號。當(dāng)主節(jié)點1、2同時發(fā)送起始信號時,兩個主節(jié)點都發(fā)送了高電平信號。這時總線上呈現(xiàn)的信號為高電平,兩個主節(jié)點都檢測到總線上的信號與自己發(fā)送的信號相同,繼續(xù)發(fā)送數(shù)據(jù)。第2個時鐘周期,2個主節(jié)點都發(fā)送低電平信號,在總線上呈現(xiàn)的信號為低電平,仍繼續(xù)發(fā)送數(shù)據(jù)。在第3個時鐘周期,主節(jié)點1發(fā)送高電平信號,而主節(jié)點2發(fā)送低電平信號。根據(jù)總線的線“與”的邏輯功能,總線上的信號為低電平,這時主節(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ù)。因此在仲裁過程中數(shù)據(jù)沒有丟失。

3  多主通信的原理及其實現(xiàn)流程

 

多主通信就是在總線上有多個節(jié)點。這些節(jié)點既可以作為主節(jié)點訪問其他的節(jié)點,也可以作為從節(jié)點被其他節(jié)點訪問。當(dāng)有多個節(jié)點同時企圖占用總線時,就需要總線的仲裁。對于模擬I2C總線系統(tǒng),怎樣實現(xiàn)總線的仲裁是現(xiàn)在研究模擬I2C總線系統(tǒng)的難點。文獻(xiàn)[4] 提出在系統(tǒng)中增加1BUSY線,在占用總線之前先檢測BUSY線,看總線是否被占用。若總線空閑,則設(shè)置BUSY線并向總線上傳送數(shù)據(jù);否則,接收數(shù)據(jù),直到總線空閑時才占有總線。這種實現(xiàn)多主通信的方法有兩個缺點:①因為I2C最大的優(yōu)點就是接口少、效率高,這樣做不僅增加了使用資源而且減少了I2C總線的優(yōu)勢;②當(dāng)主節(jié)點數(shù)比較多時,等待時間比較長,效率不高。本設(shè)計根據(jù)總線的仲裁原理,提出一種基于延時比較的仲裁方法。當(dāng)主節(jié)點想要占用總線時,先檢測總線上是否空閑,如果總線是空閑的就發(fā)送數(shù)據(jù)。在發(fā)送數(shù)據(jù)的同時,將總線上的數(shù)據(jù)接收并與發(fā)送的數(shù)據(jù)進(jìn)行比較。如果不同,說明總線上同時還存在其他節(jié)點,于是就退出;否則,一直到發(fā)送完數(shù)據(jù)。這種方法既體現(xiàn)了I2C總線的高效性,同時還具有良好的擴(kuò)展性。

4給出了基于延時比較的多主通信流程,其中MCU作為從節(jié)點部分的流程在圖5中給出。在節(jié)點發(fā)送起始信號之前先要檢測一下總線上是否為空閑狀態(tài)(BUSY是否為0)。這里使用的檢測方法是,持續(xù)檢測一段時間看總線上的電平是否一直為高,若是說明總線上為閑狀態(tài),否則說明有其他的節(jié)點正在使用總線,要等一段時間再發(fā)送。當(dāng)總線空閑時,發(fā)送起始信號,接著發(fā)送要訪問的從節(jié)點的地址字節(jié)。每發(fā)送1位數(shù)據(jù)就接收比較1次,看發(fā)送和接收的是否一致,若是則繼續(xù),否則跳出到從節(jié)點的接收狀態(tài)。如果沒有產(chǎn)生沖突,MCU作為主節(jié)點繼續(xù)發(fā)送數(shù)據(jù),直到任務(wù)結(jié)束,然后發(fā)送停止信號并返回。如果數(shù)據(jù)不一樣,MCU將跳轉(zhuǎn)到從節(jié)點狀態(tài)。由于在跳轉(zhuǎn)到從節(jié)點接收狀態(tài)的過程中累加器(ACC)和工作寄存器(Ri)的數(shù)據(jù)沒有發(fā)生變化,所以數(shù)據(jù)沒有丟失,作為從節(jié)點可以繼續(xù)接收總線上的數(shù)據(jù)。這樣整個通信的過程沒有中斷,數(shù)據(jù)也沒有丟失。

5給出了從節(jié)點的流程。進(jìn)入從節(jié)點時,要將BUSY置為高,說明MCU現(xiàn)在正在工作,不能完成其他的任務(wù)。在MCU作為從節(jié)點完成接收任務(wù)后,要將BUSY置為低。MCU在接收到尋址字節(jié)后與自己的地址字節(jié)進(jìn)行比較。如果是訪問自己的就進(jìn)入到下面的接收程序,否則跳出。在訪問自己的時候,還要判斷主節(jié)點是讀取數(shù)據(jù)還是寫數(shù)據(jù),以便進(jìn)入相應(yīng)的程序。在寫字節(jié)的子程序中,從節(jié)點每發(fā)送1個字節(jié)的數(shù)據(jù)后都要察看是否有應(yīng)答信號(ACK),有則說明數(shù)據(jù)接收到了;否則要跳出等待,重新發(fā)送。在讀字節(jié)的子程序中,每接收1個字節(jié)的數(shù)據(jù)就要發(fā)送1個應(yīng)答信號(ACK),以示接收正常,否則主節(jié)點將停止繼續(xù)發(fā)送。在現(xiàn)有的資料中,關(guān)于從節(jié)點的原理和源代碼比較少,這里給出作為從節(jié)點時寫字節(jié)子程序的源代碼。由于篇幅有限其他的子程序沒有列出。

5  從節(jié)點部分的流程

 

4  部分源代碼

 

本節(jié)是在MCU多主通信中的部分源代碼。多主通信的實現(xiàn)中有幾個難點和重點。一是在作為主節(jié)點時的寫字節(jié)子程序,里面要包括發(fā)送的每位數(shù)據(jù)和總線的數(shù)據(jù)進(jìn)行比較并做出判斷。如果數(shù)據(jù)不同,要跳出并進(jìn)入從節(jié)點的狀態(tài)。由于子程序返回主程序時改變的只是PC的值而累加器(ACC)和工作寄存器(Ri)里面的值是不變的,因此MCU進(jìn)入從機(jī)狀態(tài)后繼續(xù)接收總線剩下的數(shù)據(jù),這樣總線的數(shù)據(jù)并沒有丟失。二是作為從節(jié)點時的寫字節(jié)的子程序。由于時鐘線是由主節(jié)點的MCU控制的,所以怎樣根據(jù)SCL線來讀取SDA線的數(shù)據(jù)是其中的一個難點。三是在具有子地址的從節(jié)點關(guān)于是寫字節(jié)還是讀字節(jié)時的判斷。如果是寫字節(jié)時主節(jié)點會給出新的起始信號,并再次發(fā)送從節(jié)點的地址數(shù)據(jù)。這時從節(jié)點需要做出判斷是讀取數(shù)據(jù)還是寫數(shù)據(jù),并進(jìn)入相應(yīng)的子程序。這里給出以上三個重點和難點的子程序的源代碼,以供讀者參考。這些源代碼經(jīng)實踐證明都是正確的。

主節(jié)點的寫字節(jié)子程序:

其中的NOP可根據(jù)時鐘的快慢自己加減

WRBYTE   MOV R0#08H

                     CLR        BUSY             ;將BUSY值清零

WLP          RLC        A                   ;取數(shù)據(jù)位

JC                 WR1

                     SJMP      WR0              ;判斷數(shù)據(jù)位

 

WLP1         DJNZ      R0,WLP

                     NOP

                     SETB      SCL

                     MOV      C,SDA         ;判斷是否與發(fā)送的數(shù)據(jù)相同

                     JC          GOON

                     SETB      BUSY

                     AJMP     OUT1

GOON        NOP

                     NOP

                     NOP

                     CLR        SCL

                     SJMP      WLP1

WR0          CLR        SDA              ;發(fā)送0

                     NOP

                     SCL

                     NOP

                     NOP

                     NOP

                     NOP

                     NOP

                     CLR

                     SCL

                     SJMP      WLP1

從節(jié)點的字節(jié)子程序(返回為ACK):

SWRBYTEMOV R0,#08H

WAGAIN    RRC       A

                     MOV      B,#37H

WWAIT1    JB           SCL,WWAIT1     ;等待SCL為低

                     JC          WR1                     ;判斷是發(fā)送“1”還是發(fā)送“0

                     SETB      SDA                     ;發(fā)送“1

                     SJMP      COM

WR1          CLR        SDA                     ;發(fā)送“0

COM          DJNZ      R0WWAIT2       ;判斷是否發(fā)送完畢

WWAIT3    JNB        SCL,WWAIT3     ;發(fā)送完畢等待應(yīng)答信號

WWAIT4    JB           SCLWWAIT4     ;發(fā)送完畢等待應(yīng)答信號

WWAIT5    JNB        SCLWWAIT5    

                     CLR        ACK

                     JB           SDA,ST0

                     SETB      ACK

ST0            RET                                    ;返回

WWAIT2    JNB        SCL,WWAIT2     ;等待SCL為高

                     SJMP      WAGAIN

從節(jié)點的讀字節(jié)同時判斷是否有起始信號的子程序。如果有起始信號,則轉(zhuǎn)為寫字節(jié)子程序:

SRDBYTEMOV         R0,#08H

                     SETB      20H                      ;設(shè)置標(biāo)志位判斷是讀還是寫

                     SETB      SDA                     ;釋放總線

RWAITJ      JNB        SCLRWAITJ      ;等待SCL為高

                     MOV      CSDA                ;從總線上讀取數(shù)據(jù)

                     RRC       A                          ;存入累計器

                     DEC       R0

                    MOV      C,ACC.7             ;判斷是否為超始信號

                     JNC        RWAITJ1              ;為低繼續(xù)讀取數(shù)據(jù)

REWAIT     JNB        SCL,RWAITJ1     ;開始判斷是否為起始信號

                     JB           SDA,REWAIT

                     CLR        20H                      ;是,則清標(biāo)志位并返回

                     AJMP     SjRDOUT

RWAITJ1    JB           SCL,RWAITJ1     ;等待SCL為低

RWAITJ3    JNB        SCL,RWAITJ3     ;等待SCL為高

                     MOV      C,SDA

                     RRC       A

                     DJNZ      R0RWAITJ2

SjRDOUT   RET

RWAITJ2    JB           SCL,RWAITJ2     ;等待SCL為低繼續(xù)讀數(shù)據(jù)

                     SJMP      RWAITJ3

 

5  總結(jié)

 

根據(jù)總線協(xié)議中的仲裁原理,提出的基于延時比較的模擬I2C多主通信的方法,不僅能夠體現(xiàn)了I2C總線的高效性,而且還具有良好的擴(kuò)展性。它使普通不具有I2C接口的MCU可以應(yīng)用在多主通信的系統(tǒng)中,既增加了普通MCU的使用范圍,又突破了模擬I2C總線的應(yīng)用局限性,為I2C總線的推廣起到了積極的作用。

 

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

當(dāng)?shù)貢r間 9 月 8 日,SpaceX 與 EchoStar 正式達(dá)成一項價值 170 億美元的頻譜交易,SpaceX 將收購 EchoStar 旗下 AWS-4 頻段(2GHz 頻段)及 H 頻段的頻譜許可證,此舉引發(fā)...

關(guān)鍵字: SpaceX EchoStar 星鏈 通信

在現(xiàn)代工業(yè)和汽車領(lǐng)域,控制器局域網(wǎng)(CAN)總線作為一種可靠且高效的通信方式,廣泛應(yīng)用于各種電子設(shè)備之間的數(shù)據(jù)傳輸。在 CAN 總線系統(tǒng)中,有一個看似毫不起眼卻至關(guān)重要的元件 ——120Ω 終端電阻。這個小小的電阻,對于...

關(guān)鍵字: 控制器局域網(wǎng) 總線 通信

8月14日消息,今天,國務(wù)院新聞辦公室舉行“高質(zhì)量完成‘十四五’規(guī)劃”系列主題新聞發(fā)布會,國家數(shù)據(jù)局介紹“十四五”時期數(shù)字中國建設(shè)發(fā)展成就。

關(guān)鍵字: 算力 通信

北京2025年8月8日 /美通社/ -- 8月7日,浪潮信息發(fā)布面向萬億參數(shù)大模型的超節(jié)點AI服務(wù)器"元腦SD200"。該產(chǎn)品基于浪潮信息創(chuàng)新研發(fā)的多主機(jī)低延遲內(nèi)存語義通信架構(gòu),以開放系統(tǒng)設(shè)計向上擴(kuò)展...

關(guān)鍵字: 模型 節(jié)點 SD 通信

在現(xiàn)代通信技術(shù)的復(fù)雜網(wǎng)絡(luò)中,射頻(RF)濾波器猶如一位幕后英雄,雖鮮少被大眾提及,卻發(fā)揮著舉足輕重的作用。從我們?nèi)粘J褂玫闹悄苁謾C(jī),到構(gòu)建通信基礎(chǔ)設(shè)施的基站,再到新興的物聯(lián)網(wǎng)設(shè)備,RF 濾波器無處不在,默默保障著信號的順...

關(guān)鍵字: 射頻 濾波器 通信

在當(dāng)今數(shù)字化時代,5G 通信技術(shù)以前所未有的速度改變著我們的生活,從高速的數(shù)據(jù)傳輸?shù)綄崟r的物聯(lián)網(wǎng)應(yīng)用,5G 的影響力無處不在。然而,在這一系列令人矚目的技術(shù)背后,有一個常常被忽視卻至關(guān)重要的角色 —— 晶振。它如同幕后的...

關(guān)鍵字: 通信 數(shù)據(jù)傳輸 晶振

德國斯圖加特 2025年7月2日 /美通社/ -- 國際關(guān)鍵通信協(xié)會The Critical Communications Association (以下簡稱TCCA)宣布...

關(guān)鍵字: 通信 TETRA TC 測試流程

近日,歐洲統(tǒng)一專利法院曼海姆分庭更新的一則訴訟信息,引發(fā)了全球科技界震動——聯(lián)發(fā)科子公司HFI Innovation起訴了華為旗下五家子公司侵犯其LTE專利EP2689624。這場訴訟標(biāo)志著兩家科技巨頭持續(xù)兩年的專利糾紛...

關(guān)鍵字: 通信

6 月 5 日,市場研究機(jī)構(gòu) Omdia 發(fā)布最新報告指出,在人工智能技術(shù)的深度賦能下,全球 6G 網(wǎng)絡(luò)商業(yè)化進(jìn)程顯著提速,預(yù)計 2027 年至 2030 年將成為 6G 技術(shù)的導(dǎo)入期,并于 2037 年起成為通信領(lǐng)域的...

關(guān)鍵字: 通信 人工智能 6G
關(guān)閉