IIC匯流排協議

2021-09-11 11:54:59 字數 3114 閱讀 6365

iic匯流排狀態

讀寫時序時的匯流排狀態

iic 即inter-integrated circuit(積體電路匯流排),這種匯流排型別是由飛利浦半導體公司在八十年代初設計出來的一種簡單、雙向、二線制、同步序列匯流排

兩根訊號線——sda,scl

其中sda為雙向的資料訊號線,scl為時鐘訊號線

主從裝置還需要連線同樣的供電vcc和地線

當scl保持「高」時,sda由「高」變為「低」為開始條件;

當scl保持「高」時,sda由「低」變為「高」時為停止條件

sda線上的資料在scl「高」期間必須是穩定的,只有當scl線上的時鐘訊號為低時,資料線上的「高」或「低」狀態才可以改變。scl高電平期間為傳輸的資料位

支援多主控(multimastering)//需要附加選擇控制器讓scl,sda線分為多個連線線, 其中任何能夠進行傳送和接收的裝置都可以成為主匯流排。乙個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有乙個主控占用iic匯流排。

1、 主機傳送乙個起始訊號和從機的裝置位址給從機

2、 主機傳送資料給從機

3、 主機傳送乙個停止訊號結束傳送過程

1、 主機傳送乙個起始訊號和從機的裝置位址給從機

2、 主機傳送乙個要讀取的位址給從機

3、 主機從從機接收資料

4、 主機傳送乙個停止訊號給從機結束整個接收過程

iic 匯流排的 sda 和 scl 兩條訊號線同時處於高電平時,規定為匯流排的空閒狀態。此時各個器件的輸出級場效電晶體均處在截止狀態,即釋放匯流排,由兩條訊號線各自的上拉電阻把電平拉高。

在時鐘線 scl 保持高電平期間,資料線 sda 上的電平被拉低(即負跳變),定義為 i2c 匯流排匯流排的起始訊號,它標誌著一次資料傳輸的開始。起始訊號是由主控器主動建立的,在建立該訊號之前 i2c 匯流排必須處於空閒狀態。

在時鐘線 scl 保持高電平期間,資料線 sda 被釋放,使得 sda 返回高電平(即正跳變),稱為 i2c 匯流排的停止訊號,它標誌著一次資料傳輸的終止。停止訊號也是由主控器主動建立的,建立該訊號之後,i2c 匯流排將返回空閒狀態。

在 iic 匯流排上傳送的每一位資料都有乙個時鐘脈衝相對應(或同步控制),即在 scl 序列時鐘的配合下,資料在 sda 上從高位向低位依次序列傳送每一位的資料。進行資料傳送時,在 scl 呈現高電平期間,sda 上的電平必須保持穩定,低電平為資料 0,高電平為資料 1 sda上的額資料表示傳輸的資料位,只有在 scl 為低電平期間,才允許 sda 上的電平改變狀態。

其中msb(most significant bit),最高有效位;lsb(lowest significant bit)最低有效位

i2c 匯流排上的所有資料都是以 8 位位元組傳送的,傳送器(主機)每傳送乙個位元組,就在第9個時鐘脈衝期間釋放資料線,由接收器(從機)反饋乙個應答訊號。應答訊號為低電平時,規定為有效應答位(ack簡稱應答位),表示接收器已經成功地接收了該位元組;應答訊號為高電平時,規定為非應答位(nack),一般表示接收器接收該位元組沒有成功。對於反饋有效應答位 ack 的要求是,接收器在第 9 個時鐘脈衝之前的低電平期間將 sda 線拉低,並且確保在該時鐘的高電平期間為穩定的低電平。//第9位為從機反饋的應答訊號,若為高電平則沒有接受成功

主機通過iic匯流排往從機中寫資料的時候,主機首先會傳送乙個起始訊號,接著把iic從機的7位裝置位址後面添乙個0(裝置位址後面的0表示主機向從機寫資料,1表示主機從從機中讀資料)組成乙個8位的資料,把這個8位的資料發給從機,發完這8位的資料以後主機馬上釋放sda訊號線等待從機的應答,如果從機正確收到這個資料,從機就會傳送乙個有效應答位0給主機告訴主機自己已經收到了資料,主機收到從機的有效應答位以後 ,接下來主機會傳送想要寫入的暫存器位址,暫存器傳送完畢以後主機同樣會釋放sda訊號線等待從機的應答,從機如果正確收到了主機發過來的暫存器位址,從機會再次傳送乙個有效應答位給主機,主機收到從機的有效應答位0以後,接下來主機就會給從機傳送想要寫入從機的資料,從機正確收到這個資料以後仍然像之前兩次一樣會給主機傳送乙個有效應答位,主機收到這個有效應答位以後給從機傳送乙個停止訊號,整個傳輸過程就結束了。

開啟匯流排——》從機位址(7位+1//讀寫訊號)——》從機中暫存器位址(8位)——》想要寫入的資料(8位)——》釋放匯流排

主機通過iic匯流排從從機中讀資料的過程與寫資料的過程有相似之處,但是讀資料的過程還多了一些額外的步驟。主機從從機讀資料時主機首先會傳送乙個起始訊號,接著把iic從機的7位裝置位址後面添乙個0(裝置位址後面的0表示主機向從機寫資料,1表示主機從從機中讀資料),把這個8位的資料發給從機,發完這8位的資料以後主機馬上釋放sda訊號線等待從機的應答,如果從機正確收到這個資料,從機就會傳送乙個有效應答位0給主機告訴主機自己已經收到了資料,主機收到從機的有效應答位以後 ,接下來主機會傳送想要讀的暫存器位址,暫存器傳送完畢以後主機同樣會釋放sda訊號線等待從機的應答,從機如果正確收到了主機發過來的暫存器位址,從機會再次傳送乙個有效應答位給主機,主機收到從機的有效應答位0以後,主機會給從機再次傳送一次起始訊號,接著把iic從機的7位裝置位址後面添乙個1(裝置位址後面的0表示主機向從機寫資料,1表示主機從從機中讀資料),注意,第一次是在裝置位址後面添0,這一次是在裝置位址後面添1,把這個8位的資料發給從機,發完這8位的資料以後主機馬上釋放sda訊號線等待從機的應答,如果從機正確收到這個資料,從機就會傳送乙個有效應答位0給主機告訴主機自己已經收到了資料,接著從機繼續占用sda訊號線給主機傳送暫存器中的資料,傳送完畢以後,主機再次占用sda訊號線傳送乙個非應答訊號1給從機,主機傳送乙個停止訊號給從機結束整個讀資料的過程。

開啟匯流排——》從機位址(寫入訊號)——》寫入想要讀取的暫存器位址——》再次開啟匯流排訊號——》從機位址(讀取訊號)——》從機占用匯流排,寫入想要讀取暫存器中的資料——》主機傳送應答訊號(nack)——》關閉匯流排

IIC匯流排協議

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。...

模擬IIC匯流排協議

模擬iic 簡單講iic匯流排通訊就像你在和你物件打 講道理,步驟幾乎完全一致。回憶一下自己打 的過程。你 撥號 你物件 喂?你 巴拉巴拉 你物件 哦 你 巴拉巴拉 你物件 哦 你 掛啦,麼麼噠 你物件 哦 你 掛 通話結束 iic匯流排時序 那現在來看一下iic匯流排通訊過程 對於你來說,你是打 ...

IIC 匯流排協議詳解

目錄 1 i2c匯流排物理拓撲結構 2 i2c匯流排特徵 3 i2c匯流排協議 4 i2c匯流排操作 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來產生i2c匯流排協議所需要的訊號進行資料的傳...