<dl id="xausj"></dl>
    1. <ul id="xausj"><th id="xausj"></th></ul>

      <b id="xausj"></b>
      <cite id="xausj"></cite>
      <b id="xausj"><meter id="xausj"></meter></b>
      <dl id="xausj"><noframes id="xausj"></noframes></dl>
    2. 您好,歡迎訪問上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 單片機(jī)

      ?I2C總線信號(hào)時(shí)序分析

      文章出處:?jiǎn)纹瑱C(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
      2018
      05-20

      在I2C總線通信的過程中,參與通信的雙方互相之間所傳輸?shù)男畔⒎N類歸納如下。
       
        主控器向被控器發(fā)送的信息種類有:?jiǎn)?dòng)信號(hào)、停止信號(hào)、7位地址碼、讀/寫控制位、10位地址碼、數(shù)據(jù)字節(jié)、重啟動(dòng)信號(hào)、應(yīng)答信號(hào)、時(shí)鐘脈沖。
       
        被控器向主控器發(fā)送的信息種類有:應(yīng)答信號(hào)、數(shù)據(jù)字節(jié)、時(shí)鐘低電平。
       
        下面對(duì)I2C總線通信過程中出現(xiàn)的幾種信號(hào)狀態(tài)和時(shí)序進(jìn)行分析。
       
       ?、倏偩€空閑狀態(tài)。
       
        I2C總線總線的SDA和SCL兩條信號(hào)線同時(shí)處于高電平時(shí),規(guī)定為總線的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場(chǎng)效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線,由兩條信號(hào)線各自的上拉電阻把電平拉高。
       
        ②啟動(dòng)信號(hào)。
       
        在時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA上的電平被拉低(即負(fù)跳變),定義為I2C總線總線的啟動(dòng)信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)拈_始。

        啟動(dòng)信號(hào)是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào)。啟動(dòng)信號(hào)是由主控器主動(dòng)建立的,在建立該信號(hào)之前I2C總線必須處于空閑狀態(tài),如圖1所示。

        圖1  I2C總線上的啟動(dòng)信號(hào)和停止信號(hào)

        ③停止信號(hào)。
       
        在時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C總線的停止信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)慕K止。
       
        停止信號(hào)也是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào),停止信號(hào)也是由主控器主動(dòng)建立的,建立該信號(hào)之后,I2C總線將返回空閑狀態(tài)。
       
        ④數(shù)據(jù)位傳送。   
       
        在I2C總線上傳送的每一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng)(或同步控制),即在SCL串行時(shí)鐘的配合下,在SDA上逐位地串行傳送每一位數(shù)據(jù)。
       
        進(jìn)行數(shù)據(jù)傳送時(shí),在SCL呈現(xiàn)高電平期間,SDA上的電平必須保持穩(wěn)定,低電平為數(shù)據(jù)0,高電平為數(shù)據(jù)1。
       
        只有在SCL為低電平期間,才允許SDA上的電平改變狀態(tài)。邏輯0的電平為低電壓,而邏輯1的電平取決于器件本身的正電源電壓VDD(當(dāng)使用獨(dú)立電源時(shí)),如圖2所示。

        圖2  I2C總線上的數(shù)據(jù)位傳送

       ?、輵?yīng)答信號(hào)。
       
        I2C總線上的所有數(shù)據(jù)都是以8位字節(jié)傳送的,發(fā)送器每發(fā)送一個(gè)字節(jié),就在時(shí)鐘脈沖9期間釋放數(shù)據(jù)線,由接收器反饋一個(gè)應(yīng)答信號(hào)。
       
        應(yīng)答信號(hào)為低電平時(shí),規(guī)定為有效應(yīng)答位(ACK簡(jiǎn)稱應(yīng)答位),表示接收器已經(jīng)成功地接收了該字節(jié);應(yīng)答信號(hào)為高電平時(shí),規(guī)定為非應(yīng)答位(NACK),一般表示接收器接收該字節(jié)沒有成功。
       
        對(duì)于反饋有效應(yīng)答位ACK的要求是,接收器在第9個(gè)時(shí)鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。

        如果接收器是主控器,則在它收到最后一個(gè)字節(jié)后,發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放SDA線,以便主控接收器發(fā)送一個(gè)停止信號(hào)P,如圖3所示。

        圖3 I2C總線上的應(yīng)答時(shí)序

       ?、薏迦氲却龝r(shí)間。
        
        如果被控器需要延遲下一個(gè)數(shù)據(jù)字節(jié)開始傳送的時(shí)間,則可以通過把時(shí)鐘線SCL電平拉低并且保持,使主控器進(jìn)入等待狀態(tài)。
        
        一旦被控器釋放時(shí)鐘線,數(shù)據(jù)傳輸就得以繼續(xù)下去,這樣就使得被控器得到足夠時(shí)間轉(zhuǎn)移已經(jīng)收到的數(shù)據(jù)字節(jié),或者準(zhǔn)備好即將發(fā)送的數(shù)據(jù)字節(jié)。
        
        帶有CPU的被控器在對(duì)收到的地址字節(jié)做出應(yīng)答之后,需要一定的時(shí)間去執(zhí)行中斷服務(wù)子程序,來分析或比較地址碼,其間就把SCL線鉗位在低電平上,直到處理妥當(dāng)后才釋放SCL線,進(jìn)而使主控器繼續(xù)后續(xù)數(shù)據(jù)字節(jié)的發(fā)送,如圖4所示。

        圖4 I2C總線上的插入等待時(shí)間

       ?、咧貑?dòng)信號(hào)。
       
        在主控器控制總線期間完成了一次數(shù)據(jù)通信(發(fā)送或接收)之后,如果想繼續(xù)占用總線再進(jìn)行一次數(shù)據(jù)通信(發(fā)送或接收),而又不釋放總線,就需要利用重啟動(dòng)Sr信號(hào)時(shí)序。
       
        重啟動(dòng)信號(hào)Sr既作為前一次數(shù)據(jù)傳輸?shù)慕Y(jié)束,又作為后一次數(shù)據(jù)傳輸?shù)拈_始。利用重啟動(dòng)信號(hào)的優(yōu)點(diǎn)是,在前后兩次通信之間主控器不需要釋放總線,這樣就不會(huì)丟失總線的控制權(quán),即不讓其他主器件節(jié)點(diǎn)搶占總線。

       ?、鄷r(shí)鐘同步。
       
        如果在某一I2C總線系統(tǒng)中存在兩個(gè)主器件節(jié)點(diǎn),分別記為主器件1和主器件2,其時(shí)鐘輸出端分別為CLK1和CL【0,它們都有控制總線的能力。
       
        假設(shè)在某一期間兩者相繼向SCL線發(fā)出了波形不同的時(shí)鐘脈沖序列CLK1和CLK2(時(shí)鐘脈沖的高、低電平寬度都是依靠各自內(nèi)部專用計(jì)數(shù)器定時(shí)產(chǎn)生的),在總線控制權(quán)還沒有裁定之前這種現(xiàn)象是可能出現(xiàn)的。
       
        鑒于I2C總線的“線與”特性,使得時(shí)鐘線SCL上得到的時(shí)鐘信號(hào)波形,既不像主器件1所期望的CLK1,也不像主器件2所期望的CLK2,而是兩者進(jìn)行邏輯與的結(jié)果。
       
        CLKI和CLK2的合成波形作為共同的同步時(shí)鐘信號(hào),一旦總線控制權(quán)裁定給某一主器件,則總線時(shí)鐘信號(hào)將會(huì)只由該主器件產(chǎn)生,如圖5所示。

        圖5 I2C總線上的時(shí)鐘同步

       ?、峥偩€沖突和總線仲裁。
        
        假如在某I2C總線系統(tǒng)中存在兩個(gè)主器件節(jié)點(diǎn),分別記為主器件1和主器件2,其數(shù)據(jù)輸出端分別為DATA1和DATA2,它們都有控制總線的能力,這就存在著發(fā)生總線沖突(即寫沖突)的可能性。
        
        假設(shè)在某一瞬間兩者相繼向總線發(fā)出了啟動(dòng)信號(hào),鑒于:I2C總線的“線與”特性,使得在數(shù)據(jù)線SDA上得到的信號(hào)波形是DATA1和DATA2兩者相與的結(jié)果,該結(jié)果略微超前送出低電平的主器件1,其DATA1的下降沿被當(dāng)做SDA的下降沿。
        
        在總線被啟動(dòng)后,主器件1企圖發(fā)送數(shù)據(jù)“101……”,主器件2企圖發(fā)送數(shù)據(jù)“100101……”。
        
        兩個(gè)主器件在每次發(fā)出一個(gè)數(shù)據(jù)位的同時(shí)都要對(duì)自己輸出端的信號(hào)電平進(jìn)行抽檢,只要抽檢的結(jié)果與它們自己預(yù)期的電平相符,就會(huì)繼續(xù)占用總線,總線控制權(quán)也就得不到裁定結(jié)果。
        
        主器件1的第3位期望發(fā)送“1”,也就是在第3個(gè)時(shí)鐘周期內(nèi)送出高電平。
        
        在該時(shí)鐘周期的高電平期間,主器件1進(jìn)行例行抽檢時(shí),結(jié)果檢測(cè)到一個(gè)不相匹配的電平“0”,這時(shí)主器件1只好決定放棄總線控制杈;因此,主器件2就成了總線的惟一主宰者,總線控制權(quán)也就最終得出了裁定結(jié)果,從而實(shí)現(xiàn)了總線仲裁的功能。
        
        從以上總線仲裁的完成過程可以得出:仲裁過程主器件1和主器件2都不會(huì)丟失數(shù)據(jù);各個(gè)主器件沒有優(yōu)先級(jí)別之分,總線控制權(quán)是隨機(jī)裁定的,即使是搶先發(fā)送啟動(dòng)信號(hào)的主器件1最終也并沒有得到控制杈。
        
        系統(tǒng)實(shí)際上遵循的是“低電平優(yōu)先”的仲裁原則,將總線判給在數(shù)據(jù)線上先發(fā)送低電平的主器件,而其他發(fā)送高電平的主器件將失去總線控制權(quán),如圖6所示。

        圖6 I2C總線上的總線仲裁

       ?、饪偩€封鎖狀態(tài)。
        
        在特殊情況下,如果需要禁止所有發(fā)生在I2C總線上的通信活動(dòng),封鎖或關(guān)閉總線是一種可行途徑,只要掛接于該總線上的任意一個(gè)器件將時(shí)鐘線SCL鎖定在低電平上即可。

       

       

      //=======================================


      上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

      CopyRight 2020-2025 www.pendragonrpg.com All rights reserved   滬ICP備2021005866號(hào)

      国产中文欧美日韩,色播在线永久免费视频,另类专区亚洲无码,亚洲中文字无码av

      <dl id="xausj"></dl>
      1. <ul id="xausj"><th id="xausj"></th></ul>

        <b id="xausj"></b>
        <cite id="xausj"></cite>
        <b id="xausj"><meter id="xausj"></meter></b>
        <dl id="xausj"><noframes id="xausj"></noframes></dl>