<dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

    <blockquote id="b4zrn"></blockquote>

      <strike id="b4zrn"></strike>
        1. <div id="b4zrn"><label id="b4zrn"></label></div>
          您好,歡迎訪(fǎng)問(wèn)上海意泓電子科技有限責(zé)任公司網(wǎng)站!
          4新聞資訊
          您的位置: 首頁(yè) ->  新聞資訊 -> 單片機(jī)

          ?I2C總線(xiàn)信號(hào)時(shí)序總結(jié)

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

          總線(xiàn)空閑狀態(tài) 
            I2C總線(xiàn)總線(xiàn)的SDA和SCL兩條信號(hào)線(xiàn)同時(shí)處于高電平時(shí),規(guī)定為總線(xiàn)的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場(chǎng)效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線(xiàn),由兩條信號(hào)線(xiàn)各自的上拉電阻把電平拉高。

           

          啟動(dòng)信號(hào) 
            在時(shí)鐘線(xiàn)SCL保持高電平期間,數(shù)據(jù)線(xiàn)SDA上的電平被拉低(即負(fù)跳變),定義為I2C總線(xiàn)總線(xiàn)的啟動(dòng)信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)拈_(kāi)始。啟動(dòng)信號(hào)是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào)。啟動(dòng)信號(hào)是由主控器主動(dòng)建立的,在建立該信號(hào)之前I2C總線(xiàn)必須處于空閑狀態(tài)。
          重啟動(dòng)信號(hào) 
            在主控器控制總線(xiàn)期間完成了一次數(shù)據(jù)通信(發(fā)送或接收)之后,如果想繼續(xù)占用總線(xiàn)再進(jìn)行一次數(shù)據(jù)通信(發(fā)送或接收),而又不釋放總線(xiàn),就需要利用重啟動(dòng)Sr信號(hào)時(shí)序。重啟動(dòng)信號(hào)Sr既作為前一次數(shù)據(jù)傳輸?shù)慕Y(jié)束,又作為后一次數(shù)據(jù)傳輸?shù)拈_(kāi)始。利用重啟動(dòng)信號(hào)的優(yōu)點(diǎn)是,在前后兩次通信之間主控器不需要釋放總線(xiàn),這樣就不會(huì)丟失總線(xiàn)的控制權(quán),即不讓其他主器件節(jié)點(diǎn)搶占總線(xiàn)。

           

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

           

          停止信號(hào) 
            在時(shí)鐘線(xiàn)SCL保持高電平期間,數(shù)據(jù)線(xiàn)SDA被釋放,使得SDA返回高電平(即正跳變),稱(chēng)為I2C總線(xiàn)的停止信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)慕K止。停止信號(hào)也是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào),停止信號(hào)也是由主控器主動(dòng)建立的,建立該信號(hào)之后,I2C總線(xiàn)將返回空閑狀態(tài)。

                 不是在數(shù)據(jù)有效性中規(guī)定在SDA只能在SCL的低電平的時(shí)候變化,為何STAR,STOP不一樣?首先STAR和STOP不是數(shù)據(jù),所以可以不遵守?cái)?shù)據(jù)有效性中的規(guī)定,其它數(shù)據(jù)都遵守,而STAR和STOP“不遵守”導(dǎo)致STAR和STOP更容易被識(shí)別。這樣不是不遵守而是更有優(yōu)勢(shì)。

              起始和停止條件一般由主機(jī)產(chǎn)生,總線(xiàn)在起始條件后被認(rèn)為處于忙的狀態(tài),在停止條件的某段時(shí)間后總線(xiàn)被認(rèn)為再次處于空閑狀態(tài)。

              如果產(chǎn)生重復(fù)起始(Sr) 條件而不產(chǎn)生停止條件,總線(xiàn)會(huì)一直處于忙的狀態(tài)。此時(shí)的起始條件(S)和重復(fù)起始(Sr) 條件在功能上是一樣的。 
              如果連接到總線(xiàn)的器件合并了必要的接口硬件,那么用它們檢測(cè)起始和停止條件十分簡(jiǎn)便。但是沒(méi)有這種接口的微控制器在每個(gè)時(shí)鐘周期至少要采樣SDA 線(xiàn)兩次來(lái)判別有沒(méi)有發(fā)生電平切換。

           
          數(shù)據(jù)位傳送 
            在I2C總線(xiàn)上傳送的每一位數(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í))。數(shù)據(jù)位的傳輸是邊沿觸發(fā)。

           


           

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

           

          插入等待時(shí)間  
            如果被控器需要延遲下一個(gè)數(shù)據(jù)字節(jié)開(kāi)始傳送的時(shí)間,則可以通過(guò)把時(shí)鐘線(xiàn)SCL電平拉低并且保持,使主控器進(jìn)入等待狀態(tài)。一旦被控器釋放時(shí)鐘線(xiàn),數(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ù)子程序,來(lái)分析或比較地址碼,其間就把SCL線(xiàn)鉗位在低電平上,直到處理妥當(dāng)后才釋放SCL線(xiàn),進(jìn)而使主控器繼續(xù)后續(xù)數(shù)據(jù)字節(jié)的發(fā)送。

           

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

           

          總線(xiàn)競(jìng)爭(zhēng)的仲裁 
                  總線(xiàn)上可能掛接有多個(gè)器件,有時(shí)會(huì)發(fā)生兩個(gè)或多個(gè)主器件同時(shí)想占用總線(xiàn)的情況,這種情況叫做總線(xiàn)競(jìng)爭(zhēng)。I2C總線(xiàn)具有多主控能力,可以對(duì)發(fā)生在SDA線(xiàn)上的總線(xiàn)競(jìng)爭(zhēng)進(jìn)行仲裁,其仲裁原則是這樣的:當(dāng)多個(gè)主器件同時(shí)想占用總線(xiàn)時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線(xiàn)電平不符的那個(gè)器件將自動(dòng)關(guān)閉其輸出級(jí)??偩€(xiàn)競(jìng)爭(zhēng)的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競(jìng)爭(zhēng)仲裁的可靠性。由于是利用I2C總線(xiàn)上的信息進(jìn)行仲裁,因此不會(huì)造成信息的丟失。

                   為何識(shí)別到“0”將丟失仲裁呢?因?yàn)閷?duì)于OD門(mén),只能驅(qū)動(dòng)到低電平,釋放總線(xiàn)只能通過(guò)不驅(qū)動(dòng)總線(xiàn)釋放,停止驅(qū)動(dòng)即產(chǎn)生“1”,但是發(fā)現(xiàn)總線(xiàn)還是“0”,這說(shuō)明還有主機(jī)在跟自己競(jìng)爭(zhēng)總線(xiàn)使用權(quán),自己線(xiàn)驅(qū)動(dòng)到“1”,確檢測(cè)到“0”,那代表自己已經(jīng)失去了仲裁。

          • 主機(jī)只能在總線(xiàn)空閑的時(shí)侯啟動(dòng)傳送。兩個(gè)或多個(gè)主機(jī)可能在起始條件的最小持續(xù)時(shí)間tHD;STA 內(nèi)產(chǎn)生一個(gè)起始條件,結(jié)果在總線(xiàn)上產(chǎn)生一個(gè)規(guī)定的起始條件。

          • 當(dāng)SCL 線(xiàn)是高電平時(shí),仲裁在SDA 線(xiàn)發(fā)生;這樣,在其他主機(jī)發(fā)送低電平時(shí),發(fā)送高電平的主機(jī)將斷開(kāi)它的數(shù)據(jù)輸出級(jí),因?yàn)榭偩€(xiàn)上的電平與它自己的電平不相同。然后,進(jìn)一步獲得其的判定條件:

          • 仲裁可以持續(xù)多位。首先是比較地址位。如果每個(gè)主機(jī)都試圖尋址同一的器件,仲裁會(huì)繼續(xù)比較數(shù)據(jù)位(假設(shè)主機(jī)是發(fā)送器),或者比較響應(yīng)位(假設(shè)主機(jī)是接收器)。

          • I2C 總線(xiàn)的地址和數(shù)據(jù)信息由贏得仲裁的主機(jī)決定,在仲裁過(guò)程中不會(huì)丟失信息。丟失仲裁的主機(jī)可以產(chǎn)生時(shí)鐘脈沖直到丟失仲裁的該字節(jié)末尾。

          • 在串行傳輸過(guò)程中時(shí),一旦有重復(fù)的起始條件或停止條件發(fā)送到I2C 總線(xiàn)的時(shí)侯,仲裁過(guò)程仍在進(jìn)行。如果可能產(chǎn)生這樣的情況,有關(guān)的主機(jī)必須在幀格式相同位置發(fā)送這個(gè)重復(fù)起始條件或停止條件。 

          • 此外,如果主機(jī)也結(jié)合了從機(jī)功能,而且在尋址階段丟失仲裁,它很可能就是贏得仲裁的主機(jī)在尋址的器件。那么,丟失仲裁的主機(jī)必須立即切換到它的從機(jī)模式。

          • I2C 總線(xiàn)的控制只由地址或主機(jī)碼以及競(jìng)爭(zhēng)主機(jī)發(fā)送的數(shù)據(jù)決定,沒(méi)有中央主機(jī),總線(xiàn)也沒(méi)有任何定制的優(yōu)先權(quán)。


                                   

          上圖顯示了兩個(gè)主機(jī)的仲裁過(guò)程當(dāng)然可能包含更多的內(nèi)容由連接到總線(xiàn)的主機(jī)數(shù)量決定此時(shí)產(chǎn)生DATA1 的主機(jī)的內(nèi)部數(shù)據(jù)電平與SDA 線(xiàn)的實(shí)際電平有一些差別如果關(guān)斷數(shù)據(jù)輸出這就意味著總線(xiàn)連接了一個(gè)高輸出電平這不會(huì)影響由贏得仲裁的主機(jī)初始化的數(shù)據(jù)傳輸。

          時(shí)鐘信號(hào)的同步 
                    在I2C總線(xiàn)上傳送信息時(shí)的時(shí)鐘同步信號(hào)是由掛接在SCL線(xiàn)上的所有器件的邏輯“與”完成的。SCL線(xiàn)上由高電平到低電平的跳變將影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號(hào)下跳為低電平,將使SCL線(xiàn)一直保持低電平,使SCL線(xiàn)上的所有器件開(kāi)始低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不能影響SCL線(xiàn)的狀態(tài),于是這些器件將進(jìn)入高電平等待的狀態(tài)。當(dāng)所有器件的時(shí)鐘信號(hào)都上跳為高電平時(shí),低電平期結(jié)束,SCL線(xiàn)被釋放返回高電平,即所有的器件都同時(shí)開(kāi)始它們的高電平期。其后,第一個(gè)結(jié)束高電平期的器件又將SCL線(xiàn)拉成低電平。這樣就在SCL線(xiàn)上產(chǎn)生一個(gè)同步時(shí)鐘??梢?jiàn),時(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長(zhǎng)的器件確定,而時(shí)鐘高電平時(shí)間由時(shí)鐘高電平期最短的器件確定。


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

          CopyRight 2020-2025 m.frontgate.com.cn All rights reserved   滬ICP備2021005866號(hào)

          久艹视频在线观看这里只有精品,国语自产拍在线视频普通话94,久久婷婷综合缴情亚洲狠狠,亚洲不卡永远在线精品无码
          <dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

            <blockquote id="b4zrn"></blockquote>

              <strike id="b4zrn"></strike>
                1. <div id="b4zrn"><label id="b4zrn"></label></div>