I2C時(shí)序分析和基礎(chǔ)知識(shí)總結(jié)課件_第1頁(yè)
I2C時(shí)序分析和基礎(chǔ)知識(shí)總結(jié)課件_第2頁(yè)
I2C時(shí)序分析和基礎(chǔ)知識(shí)總結(jié)課件_第3頁(yè)
I2C時(shí)序分析和基礎(chǔ)知識(shí)總結(jié)課件_第4頁(yè)
I2C時(shí)序分析和基礎(chǔ)知識(shí)總結(jié)課件_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

I2C時(shí)序分析和基礎(chǔ)知識(shí)簡(jiǎn)介一、什么是I2C三、I2C基礎(chǔ)知識(shí)二、I2C時(shí)序分析四、I2C注意事項(xiàng)I2C時(shí)序分析和基礎(chǔ)知識(shí)簡(jiǎn)介一、什么是I2C三、I2C基礎(chǔ)知1I2C(Inter-IntegratedCircuit)總線是由PHILIPS公司(現(xiàn)在的NXP半導(dǎo)體)開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高等優(yōu)點(diǎn)。一、什么是I2C

I2C總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。I2C(Inter-IntegratedCircu2I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均31、數(shù)據(jù)位的有效性規(guī)定I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。二、I2C時(shí)序分析1、數(shù)據(jù)位的有效性規(guī)定二、I2C時(shí)序分析42、起始和終止信號(hào)

SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。

SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。2、起始和終止信號(hào)SCL線為高電平期間,SDA線由高5I2C

總線是雙向傳輸?shù)目偩€,因此主機(jī)和從機(jī)都可能成為發(fā)送器和接收器。如果主機(jī)向從機(jī)發(fā)送數(shù)據(jù),則主機(jī)是發(fā)送器,而從機(jī)是接收器;如果主機(jī)從從機(jī)讀取數(shù)據(jù),則主機(jī)是接收器,而從機(jī)是發(fā)送器。不論主機(jī)是發(fā)送器還是接收器,時(shí)鐘信號(hào)

SCL

都要由主機(jī)來(lái)產(chǎn)生。

每個(gè)器件都有一個(gè)唯一的地址識(shí)別,而且都可以作為一個(gè)發(fā)送器和接收器(由器件的功能決定)。很明顯,LCD驅(qū)動(dòng)器只能是接收器,而存儲(chǔ)器既可以接收又可以發(fā)送數(shù)據(jù)。I2C

總線是雙向傳輸?shù)目偩€,因此主機(jī)和從機(jī)都可6

連接到I2C總線上的器件,若具有I2C總線的硬件接口,則很容易檢測(cè)到起始和終止信號(hào)。對(duì)于不具備I2C總線硬件接口的有些單片機(jī)來(lái)說(shuō),為了檢測(cè)起始和終止信號(hào),必須保證在每個(gè)時(shí)鐘周期內(nèi)對(duì)數(shù)據(jù)線SDA采樣兩次。

接收器件收到一個(gè)完整的數(shù)據(jù)字節(jié)后,有可能需要完成一些其它工作,如處理內(nèi)部中斷服務(wù)等,可能無(wú)法立刻接收下一個(gè)字節(jié),這時(shí)接收器件可以將SCL線拉成低電平,從而使主機(jī)處于等待狀態(tài)。直到接收器件準(zhǔn)備好接收下一個(gè)字節(jié)時(shí),再釋放SCL線使之為高電平,從而使數(shù)據(jù)傳送可以繼續(xù)進(jìn)行。

連接到I2C總線上的器件,若具有I2C總線的硬件接口73、數(shù)據(jù)傳送格式(1)字節(jié)傳送與應(yīng)答

每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。

3、數(shù)據(jù)傳送格式每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳8

由于某種原因從機(jī)不對(duì)主機(jī)尋址信號(hào)應(yīng)答時(shí)(如從機(jī)正在進(jìn)行實(shí)時(shí)性的處理工作而無(wú)法接收總線上的數(shù)據(jù)),它必須將數(shù)據(jù)線置于高電平,而由主機(jī)產(chǎn)生一個(gè)終止信號(hào)以結(jié)束總線的數(shù)據(jù)傳送。如果從機(jī)對(duì)主機(jī)進(jìn)行了應(yīng)答,但在數(shù)據(jù)傳送一段時(shí)間后無(wú)法繼續(xù)接收更多的數(shù)據(jù)時(shí),從機(jī)可以通過(guò)對(duì)無(wú)法接收的第一個(gè)數(shù)據(jù)字節(jié)的“非應(yīng)答”通知主機(jī),主機(jī)則應(yīng)發(fā)出終止信號(hào)以結(jié)束數(shù)據(jù)的繼續(xù)傳送。當(dāng)主機(jī)接收數(shù)據(jù)時(shí),它收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)結(jié)束傳送的信號(hào)。這個(gè)信號(hào)是由對(duì)從機(jī)的“非應(yīng)答”來(lái)實(shí)現(xiàn)的。然后,從機(jī)釋放SDA線,以允許主機(jī)產(chǎn)生終止信號(hào)。由于某種原因從機(jī)不對(duì)主機(jī)尋址信號(hào)應(yīng)答時(shí)(如從機(jī)正在進(jìn)9但如果從機(jī)要完成一些其他功能后才能接收或發(fā)送下一個(gè)完整的數(shù)據(jù)字節(jié),那么可以使時(shí)鐘信號(hào)保持低電平迫使主機(jī)進(jìn)入等待狀態(tài)。這也是唯一一個(gè)從機(jī)改變主機(jī)時(shí)鐘的情況。當(dāng)從機(jī)準(zhǔn)備好接受下一個(gè)字節(jié)時(shí),釋放時(shí)鐘線SCL,數(shù)據(jù)傳輸繼續(xù)。但如果從機(jī)要完成一些其他功能后才能接收或發(fā)送下一10(2)數(shù)據(jù)幀格式I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。在總線的一次數(shù)據(jù)傳送過(guò)程中,可以有以下幾種組合方式:在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7位),第8位是數(shù)據(jù)的傳送方向位(R/),用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。但是,若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從機(jī)進(jìn)行尋址。

(2)數(shù)據(jù)幀格式在總線的一次數(shù)據(jù)傳送過(guò)程中,可以有以11a、主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變:注:有陰影部分表示數(shù)據(jù)由主機(jī)向從機(jī)傳送,無(wú)陰影部分則表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。A表示應(yīng)答,A表示非應(yīng)答(高電平)。S表示起始信號(hào),P表示終止信號(hào)。a、主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變:注12b、主機(jī)在第一個(gè)字節(jié)后,立即由從機(jī)讀數(shù)據(jù)c、在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相。b、主機(jī)在第一個(gè)字節(jié)后,立即由從機(jī)讀數(shù)據(jù)c、在傳送過(guò)程中,當(dāng)134、總線的尋址I2C總線協(xié)議有明確的規(guī)定:采用7位的尋址字節(jié)(尋址字節(jié)是起始信號(hào)后的第一個(gè)字節(jié))。(1)尋址字節(jié)的位定義

D7~D1位組成從機(jī)的地址。D0位是數(shù)據(jù)傳送方向位,為“0”時(shí)表示主機(jī)向從機(jī)寫數(shù)據(jù),為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù)。4、總線的尋址I2C總線協(xié)議有明確的規(guī)定:采用7位14主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼與自己的地址進(jìn)行比較,如果相同,則認(rèn)為自己正被主機(jī)尋址,根據(jù)R/位將自己確定為發(fā)送器或接收器。從機(jī)的地址由固定部分和可編程部分組成。在一個(gè)系統(tǒng)中可能希望接入多個(gè)相同的從機(jī),從機(jī)地址中可編程部分決定了可接入總線該類器件的最大數(shù)目。如一個(gè)從機(jī)的7位尋址位有4位是固定位,3位是可編程位,這時(shí)僅能尋址8個(gè)同樣的器件,即可以有8個(gè)同樣的器件接入到該I2C總線系統(tǒng)中。主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼與自己的地址15(2)尋址字節(jié)中的特殊地址固定地址編號(hào)0000和1111已被保留作為特殊用途。

(2)尋址字節(jié)中的特殊地址16起始信號(hào)后的第一字節(jié)的8位為“00000000”時(shí),稱為通用呼叫地址。通用呼叫地址的用意在第二字節(jié)中加以說(shuō)明。格式為:

第二字節(jié)為06H時(shí),所有能響應(yīng)通用呼叫地址的從機(jī)器件復(fù)位,并由硬件裝入從機(jī)地址的可編程部分。能響應(yīng)命令的從機(jī)器件復(fù)位時(shí)不拉低SDA和SCL線,以免堵塞總線。第二字節(jié)為04H時(shí),所有能響應(yīng)通用呼叫地址并通過(guò)硬件來(lái)定義其可編程地址的從機(jī)器件將鎖定地址中的可編程位,但不進(jìn)行復(fù)位。起始信號(hào)后的第一字節(jié)的8位為“00000000”時(shí),17如果第二字節(jié)的方向位B為“1”,則這兩個(gè)字節(jié)命令稱為硬件通用呼叫命令。

在這第二字節(jié)的高7位說(shuō)明自己的地址。接在總線上的智能器件,如單片機(jī)或其他微處理器能識(shí)別這個(gè)地址,并與之傳送數(shù)據(jù)。硬件主器件作為從機(jī)使用時(shí),也用這個(gè)地址作為從機(jī)地址。格式為:

在系統(tǒng)中另一種選擇可能是系統(tǒng)復(fù)位時(shí)硬件主機(jī)器件工作在從機(jī)接收器方式,這時(shí)由系統(tǒng)中的主機(jī)先告訴硬件主機(jī)器件數(shù)據(jù)應(yīng)送往的從機(jī)器件地址,當(dāng)硬件主機(jī)器件要發(fā)送數(shù)據(jù)時(shí)就可以直接向指定從機(jī)器件發(fā)送數(shù)據(jù)了。如果第二字節(jié)的方向位B為“1”,則這兩個(gè)字節(jié)命令稱18(3)起始字節(jié)不具備I2C總線接口的單片機(jī),則必須通過(guò)軟件不斷地檢測(cè)總線,以便及時(shí)地響應(yīng)總線的請(qǐng)求。單片機(jī)的速度與硬件接口器件的速度就出現(xiàn)了較大的差別,為此,I2C總線上的數(shù)據(jù)傳送要由一個(gè)較長(zhǎng)的起始過(guò)程加以引導(dǎo)。

起始字節(jié)是提供給沒(méi)有I2C總線接口的單片機(jī)查詢I2C總線時(shí)使用的特殊字節(jié)。(3)起始字節(jié)不具備I2C總線接口的單片機(jī),則必須通19

引導(dǎo)過(guò)程由起始信號(hào)、起始字節(jié)、應(yīng)答位、重復(fù)起始信號(hào)(Sr)組成。請(qǐng)求訪問(wèn)總線的主機(jī)發(fā)出起始信號(hào)后,發(fā)送起始字節(jié)(00000001),另一個(gè)單片機(jī)可以用一個(gè)比較低的速率采樣SDA線,直到檢測(cè)到起始字節(jié)中的7個(gè)“0”中的一個(gè)為止。在檢測(cè)到SDA線上的高電平后,單片機(jī)就可以用較高的采樣速率,以便尋找作為同步信號(hào)使用的第二個(gè)起始信號(hào)Sr。在起始信號(hào)后的應(yīng)答時(shí)鐘脈沖僅僅是為了和總線所使用的格式一致,并不要求器件在這個(gè)脈沖期間作應(yīng)答。

引導(dǎo)過(guò)程由起始信號(hào)、起始字節(jié)、應(yīng)答位、重復(fù)起始信20(4)10位尋址10位尋址向下兼容7位尋址,而且可以結(jié)合使用。10位尋址不會(huì)影響已有的7位尋址。有7位和10位地址的器件可以連接到相同的I2C總線,它們都能用于F/S模式和Hs模式系統(tǒng)。10位從機(jī)地址是由在起始條件(S)或重復(fù)起始條件(Sr)后的頭兩個(gè)字節(jié)組成。第一個(gè)字節(jié)的頭7位是11110XX的組合,其中最后兩位(XX)是10位地址的兩個(gè)最高位(MSB);第一個(gè)字節(jié)的第8位是R/W位,決定了報(bào)文的方向。第一個(gè)字節(jié)的最低位是‘0’表示主機(jī)將寫信息到選中的從機(jī)。‘1’表示主機(jī)將向從機(jī)讀信息。如果R/W位是0,則第二個(gè)字節(jié)是10位從機(jī)地址剩下的8位。如果R/W位是1,則下一個(gè)字節(jié)是從機(jī)發(fā)送給主機(jī)的數(shù)據(jù)。(4)10位尋址10位尋址向下兼容7位尋址,21主機(jī)-發(fā)送器用10位地址尋址從機(jī)-接收器主機(jī)-接收器用10位地址尋址從機(jī)-發(fā)送器主機(jī)-發(fā)送器用10位地址尋址從機(jī)-接收器主機(jī)-接收器用1022組合格式。主機(jī)用10位地址尋址從機(jī),然后發(fā)送數(shù)據(jù)到這個(gè)從機(jī)并向這個(gè)從機(jī)讀數(shù)據(jù)組合格式。主機(jī)用10位地址尋址從機(jī),然后發(fā)送數(shù)據(jù)到這個(gè)從機(jī)231、I2C總線數(shù)據(jù)傳送速率

I2C

總線的通信速率受主機(jī)控制,能快能慢。但是最高速率是有限制的,I2C

總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式(Standard-mode)下為

100kbps(每秒

100k

位)

,在快速模式下為400kbps。按照后來(lái)修訂的版本,位速率最高可達(dá)

3.4Mbps。2、子地址

帶有

I2C

總線的器件除了有從機(jī)地址(Slave

Address)外,還可能有子地址。從機(jī)地址是指該器件在

I2C

總線上被主機(jī)尋址的地址,

而子地址是指該器件內(nèi)部不同部件或存儲(chǔ)單元的編址。例如,帶

I2C

總線接口的

E2PROM

就是擁有子地址器件的典型代表。

某些器件(只占少數(shù))內(nèi)部結(jié)構(gòu)比較簡(jiǎn)單,可能沒(méi)有子地址,只有必須的從機(jī)地址。

與從機(jī)地址一樣,子地址實(shí)際上也是像普通數(shù)據(jù)那樣進(jìn)行傳輸?shù)?,傳輸格式仍然是與數(shù)據(jù)相統(tǒng)一的,區(qū)分傳輸?shù)牡降资堑刂愤€是數(shù)據(jù)要靠收發(fā)雙方具體的邏輯約定。子地址的長(zhǎng)度必須由整數(shù)個(gè)字節(jié)組成,可能是單字節(jié)(8

位子地址)

,也可能是雙字節(jié)(16

位子地址)

,還可能是

3

字節(jié)以上,這要看具體器件的規(guī)定。三、I2C基礎(chǔ)知識(shí)1、I2C總線數(shù)據(jù)傳送速率

2、子地址

三、I2C基礎(chǔ)知識(shí)243、仲裁是一個(gè)在有多個(gè)主機(jī)同時(shí)嘗試控制總線但只允許其中一個(gè)控制總線并使報(bào)文不被破壞的過(guò)程。所有主機(jī)在SCL線上產(chǎn)生它們自己的時(shí)鐘來(lái)傳輸I2C總線上的報(bào)文。數(shù)據(jù)只在時(shí)鐘的高電平周期有效。因此,需要一個(gè)確定的時(shí)鐘進(jìn)行逐位仲裁。時(shí)鐘同步通過(guò)線與連接I2C接口到SCL線來(lái)執(zhí)行。這就是說(shuō):SCL線的高到低切換會(huì)使器件開(kāi)始數(shù)它們的低電平周期,而且一旦器件的時(shí)鐘變低電平,它會(huì)使SCL線保持這種狀態(tài)直到到達(dá)時(shí)鐘的高電平。但是,如果另一個(gè)時(shí)鐘仍處于低電平周期,這個(gè)時(shí)鐘的低到高切換不會(huì)改變SCL線的狀態(tài)。因此,SCL線被有最長(zhǎng)低電平周期的器件保持低電平。此時(shí),低電平周期短的器件會(huì)進(jìn)入高電平的等待狀態(tài)。當(dāng)所有有關(guān)的器件數(shù)完了它們的低電平周期后,時(shí)鐘線被釋放并變成高電平,之后器件時(shí)鐘和SCL線的狀態(tài)沒(méi)有差別,而且所有器件會(huì)開(kāi)始數(shù)它們的高電平周期。首先完成高電平周期的器件會(huì)再次將SCL線拉低,這樣產(chǎn)生的同步SCL時(shí)鐘的低電平周期由低電平時(shí)鐘周期最長(zhǎng)的器件決定,而高電平周期由高電平時(shí)鐘周期最短的器件決定。3、仲裁所有主機(jī)在SCL線上產(chǎn)生它們自己的時(shí)鐘25這發(fā)生在仲裁之前,這部分稱為同步。這發(fā)生在仲裁之前,這部分稱為同步。26主機(jī)只能在總線空閑的時(shí)侯啟動(dòng)傳輸。兩個(gè)或多個(gè)主機(jī)可能在起始條件的最小持續(xù)時(shí)間(tHD;STA)內(nèi)產(chǎn)生一個(gè)起始條件,結(jié)果在總線上產(chǎn)生一個(gè)規(guī)定的起始條件。當(dāng)SCL線是高電平時(shí),仲裁在SDA線發(fā)生;這樣,在其他主機(jī)發(fā)送低電平時(shí),發(fā)送高電平的主機(jī)將斷開(kāi)它的數(shù)據(jù)輸出級(jí),因?yàn)榭偩€上的電平與它自己的電平不相同。仲裁主機(jī)只能在總線空閑的時(shí)侯啟動(dòng)傳輸。兩個(gè)或多個(gè)主機(jī)可能27下圖顯示了兩個(gè)主機(jī)的仲裁過(guò)程,當(dāng)然可能包含更多的內(nèi)容(由連接到總線的主機(jī)數(shù)量決定)。此時(shí),產(chǎn)生DATA1的主機(jī)的內(nèi)部數(shù)據(jù)電平與SDA線的實(shí)際電平有一些差別,如果關(guān)斷數(shù)據(jù)輸出,這就意味著總線連接了一個(gè)高輸出電平。這不會(huì)影響由贏得仲裁的主機(jī)初始化的數(shù)據(jù)傳輸。由于I2C總線的控制只由地址或主機(jī)碼以及競(jìng)爭(zhēng)主機(jī)發(fā)送的數(shù)據(jù)決定,沒(méi)有中央主機(jī),總線也沒(méi)有任何定制的優(yōu)先權(quán)。下圖顯示了兩個(gè)主機(jī)的仲裁過(guò)程,當(dāng)然可能包含更多28四、I2C注意事項(xiàng)1、關(guān)于400pF負(fù)載電容

(1)波形畸變:電容越大,其濾波效果越明顯。當(dāng)這個(gè)電容過(guò)大時(shí),很明顯部分通訊信號(hào)會(huì)被濾除,引起波形畸變,I2C將可能會(huì)產(chǎn)生誤碼,從而無(wú)法正常通信。(2)總線驅(qū)動(dòng)能力:負(fù)載電容決定了總線在某一速率下的穩(wěn)定性。當(dāng)輸出為高時(shí),電流通過(guò)上拉電阻對(duì)負(fù)載電容充電。上拉越大,電容越大,所需要的時(shí)間就越長(zhǎng),如果超過(guò)了通信周期的10%,那么這個(gè)上升沿就太緩了,相應(yīng)的建立時(shí)間會(huì)受到影響。I2C規(guī)范的最大負(fù)載電容是400pF,快速模式下是100pF,高速模式下是20pF(自己估的)、四、I2C注意事項(xiàng)1、關(guān)于400pF負(fù)載電容(1)波292、I2C的負(fù)載能力(1)負(fù)載電容。I2C的負(fù)載并不是純電阻負(fù)載,在負(fù)載的輸入端一般都會(huì)有一個(gè)等效輸入電容,一般情況下都是PF級(jí)的,而這些負(fù)載都是并聯(lián)的,所以負(fù)載越多,電容越大。(2)負(fù)載電感,它的作用跟電容差不多,這個(gè)電感主要是走線和引腳帶來(lái)的等效電感。(3)純負(fù)載。I2C的負(fù)載也可以等效為一個(gè)純電阻,負(fù)載越多,這個(gè)電阻就越小,對(duì)I2C的輸出能力要求就越高,超過(guò)I2C總線的帶載能力時(shí),它也不能正常工作。2、I2C的負(fù)載能力(1)負(fù)載電容。I2C的負(fù)載并不是純電阻30謝謝觀看謝謝觀看31I2C時(shí)序分析和基礎(chǔ)知識(shí)簡(jiǎn)介一、什么是I2C三、I2C基礎(chǔ)知識(shí)二、I2C時(shí)序分析四、I2C注意事項(xiàng)I2C時(shí)序分析和基礎(chǔ)知識(shí)簡(jiǎn)介一、什么是I2C三、I2C基礎(chǔ)知32I2C(Inter-IntegratedCircuit)總線是由PHILIPS公司(現(xiàn)在的NXP半導(dǎo)體)開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高等優(yōu)點(diǎn)。一、什么是I2C

I2C總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。I2C(Inter-IntegratedCircu33I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C總線通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均341、數(shù)據(jù)位的有效性規(guī)定I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。二、I2C時(shí)序分析1、數(shù)據(jù)位的有效性規(guī)定二、I2C時(shí)序分析352、起始和終止信號(hào)

SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。

SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。2、起始和終止信號(hào)SCL線為高電平期間,SDA線由高36I2C

總線是雙向傳輸?shù)目偩€,因此主機(jī)和從機(jī)都可能成為發(fā)送器和接收器。如果主機(jī)向從機(jī)發(fā)送數(shù)據(jù),則主機(jī)是發(fā)送器,而從機(jī)是接收器;如果主機(jī)從從機(jī)讀取數(shù)據(jù),則主機(jī)是接收器,而從機(jī)是發(fā)送器。不論主機(jī)是發(fā)送器還是接收器,時(shí)鐘信號(hào)

SCL

都要由主機(jī)來(lái)產(chǎn)生。

每個(gè)器件都有一個(gè)唯一的地址識(shí)別,而且都可以作為一個(gè)發(fā)送器和接收器(由器件的功能決定)。很明顯,LCD驅(qū)動(dòng)器只能是接收器,而存儲(chǔ)器既可以接收又可以發(fā)送數(shù)據(jù)。I2C

總線是雙向傳輸?shù)目偩€,因此主機(jī)和從機(jī)都可37

連接到I2C總線上的器件,若具有I2C總線的硬件接口,則很容易檢測(cè)到起始和終止信號(hào)。對(duì)于不具備I2C總線硬件接口的有些單片機(jī)來(lái)說(shuō),為了檢測(cè)起始和終止信號(hào),必須保證在每個(gè)時(shí)鐘周期內(nèi)對(duì)數(shù)據(jù)線SDA采樣兩次。

接收器件收到一個(gè)完整的數(shù)據(jù)字節(jié)后,有可能需要完成一些其它工作,如處理內(nèi)部中斷服務(wù)等,可能無(wú)法立刻接收下一個(gè)字節(jié),這時(shí)接收器件可以將SCL線拉成低電平,從而使主機(jī)處于等待狀態(tài)。直到接收器件準(zhǔn)備好接收下一個(gè)字節(jié)時(shí),再釋放SCL線使之為高電平,從而使數(shù)據(jù)傳送可以繼續(xù)進(jìn)行。

連接到I2C總線上的器件,若具有I2C總線的硬件接口383、數(shù)據(jù)傳送格式(1)字節(jié)傳送與應(yīng)答

每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。

3、數(shù)據(jù)傳送格式每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳39

由于某種原因從機(jī)不對(duì)主機(jī)尋址信號(hào)應(yīng)答時(shí)(如從機(jī)正在進(jìn)行實(shí)時(shí)性的處理工作而無(wú)法接收總線上的數(shù)據(jù)),它必須將數(shù)據(jù)線置于高電平,而由主機(jī)產(chǎn)生一個(gè)終止信號(hào)以結(jié)束總線的數(shù)據(jù)傳送。如果從機(jī)對(duì)主機(jī)進(jìn)行了應(yīng)答,但在數(shù)據(jù)傳送一段時(shí)間后無(wú)法繼續(xù)接收更多的數(shù)據(jù)時(shí),從機(jī)可以通過(guò)對(duì)無(wú)法接收的第一個(gè)數(shù)據(jù)字節(jié)的“非應(yīng)答”通知主機(jī),主機(jī)則應(yīng)發(fā)出終止信號(hào)以結(jié)束數(shù)據(jù)的繼續(xù)傳送。當(dāng)主機(jī)接收數(shù)據(jù)時(shí),它收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)結(jié)束傳送的信號(hào)。這個(gè)信號(hào)是由對(duì)從機(jī)的“非應(yīng)答”來(lái)實(shí)現(xiàn)的。然后,從機(jī)釋放SDA線,以允許主機(jī)產(chǎn)生終止信號(hào)。由于某種原因從機(jī)不對(duì)主機(jī)尋址信號(hào)應(yīng)答時(shí)(如從機(jī)正在進(jìn)40但如果從機(jī)要完成一些其他功能后才能接收或發(fā)送下一個(gè)完整的數(shù)據(jù)字節(jié),那么可以使時(shí)鐘信號(hào)保持低電平迫使主機(jī)進(jìn)入等待狀態(tài)。這也是唯一一個(gè)從機(jī)改變主機(jī)時(shí)鐘的情況。當(dāng)從機(jī)準(zhǔn)備好接受下一個(gè)字節(jié)時(shí),釋放時(shí)鐘線SCL,數(shù)據(jù)傳輸繼續(xù)。但如果從機(jī)要完成一些其他功能后才能接收或發(fā)送下一41(2)數(shù)據(jù)幀格式I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。在總線的一次數(shù)據(jù)傳送過(guò)程中,可以有以下幾種組合方式:在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7位),第8位是數(shù)據(jù)的傳送方向位(R/),用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。但是,若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從機(jī)進(jìn)行尋址。

(2)數(shù)據(jù)幀格式在總線的一次數(shù)據(jù)傳送過(guò)程中,可以有以42a、主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變:注:有陰影部分表示數(shù)據(jù)由主機(jī)向從機(jī)傳送,無(wú)陰影部分則表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。A表示應(yīng)答,A表示非應(yīng)答(高電平)。S表示起始信號(hào),P表示終止信號(hào)。a、主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變:注43b、主機(jī)在第一個(gè)字節(jié)后,立即由從機(jī)讀數(shù)據(jù)c、在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相。b、主機(jī)在第一個(gè)字節(jié)后,立即由從機(jī)讀數(shù)據(jù)c、在傳送過(guò)程中,當(dāng)444、總線的尋址I2C總線協(xié)議有明確的規(guī)定:采用7位的尋址字節(jié)(尋址字節(jié)是起始信號(hào)后的第一個(gè)字節(jié))。(1)尋址字節(jié)的位定義

D7~D1位組成從機(jī)的地址。D0位是數(shù)據(jù)傳送方向位,為“0”時(shí)表示主機(jī)向從機(jī)寫數(shù)據(jù),為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù)。4、總線的尋址I2C總線協(xié)議有明確的規(guī)定:采用7位45主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼與自己的地址進(jìn)行比較,如果相同,則認(rèn)為自己正被主機(jī)尋址,根據(jù)R/位將自己確定為發(fā)送器或接收器。從機(jī)的地址由固定部分和可編程部分組成。在一個(gè)系統(tǒng)中可能希望接入多個(gè)相同的從機(jī),從機(jī)地址中可編程部分決定了可接入總線該類器件的最大數(shù)目。如一個(gè)從機(jī)的7位尋址位有4位是固定位,3位是可編程位,這時(shí)僅能尋址8個(gè)同樣的器件,即可以有8個(gè)同樣的器件接入到該I2C總線系統(tǒng)中。主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼與自己的地址46(2)尋址字節(jié)中的特殊地址固定地址編號(hào)0000和1111已被保留作為特殊用途。

(2)尋址字節(jié)中的特殊地址47起始信號(hào)后的第一字節(jié)的8位為“00000000”時(shí),稱為通用呼叫地址。通用呼叫地址的用意在第二字節(jié)中加以說(shuō)明。格式為:

第二字節(jié)為06H時(shí),所有能響應(yīng)通用呼叫地址的從機(jī)器件復(fù)位,并由硬件裝入從機(jī)地址的可編程部分。能響應(yīng)命令的從機(jī)器件復(fù)位時(shí)不拉低SDA和SCL線,以免堵塞總線。第二字節(jié)為04H時(shí),所有能響應(yīng)通用呼叫地址并通過(guò)硬件來(lái)定義其可編程地址的從機(jī)器件將鎖定地址中的可編程位,但不進(jìn)行復(fù)位。起始信號(hào)后的第一字節(jié)的8位為“00000000”時(shí),48如果第二字節(jié)的方向位B為“1”,則這兩個(gè)字節(jié)命令稱為硬件通用呼叫命令。

在這第二字節(jié)的高7位說(shuō)明自己的地址。接在總線上的智能器件,如單片機(jī)或其他微處理器能識(shí)別這個(gè)地址,并與之傳送數(shù)據(jù)。硬件主器件作為從機(jī)使用時(shí),也用這個(gè)地址作為從機(jī)地址。格式為:

在系統(tǒng)中另一種選擇可能是系統(tǒng)復(fù)位時(shí)硬件主機(jī)器件工作在從機(jī)接收器方式,這時(shí)由系統(tǒng)中的主機(jī)先告訴硬件主機(jī)器件數(shù)據(jù)應(yīng)送往的從機(jī)器件地址,當(dāng)硬件主機(jī)器件要發(fā)送數(shù)據(jù)時(shí)就可以直接向指定從機(jī)器件發(fā)送數(shù)據(jù)了。如果第二字節(jié)的方向位B為“1”,則這兩個(gè)字節(jié)命令稱49(3)起始字節(jié)不具備I2C總線接口的單片機(jī),則必須通過(guò)軟件不斷地檢測(cè)總線,以便及時(shí)地響應(yīng)總線的請(qǐng)求。單片機(jī)的速度與硬件接口器件的速度就出現(xiàn)了較大的差別,為此,I2C總線上的數(shù)據(jù)傳送要由一個(gè)較長(zhǎng)的起始過(guò)程加以引導(dǎo)。

起始字節(jié)是提供給沒(méi)有I2C總線接口的單片機(jī)查詢I2C總線時(shí)使用的特殊字節(jié)。(3)起始字節(jié)不具備I2C總線接口的單片機(jī),則必須通50

引導(dǎo)過(guò)程由起始信號(hào)、起始字節(jié)、應(yīng)答位、重復(fù)起始信號(hào)(Sr)組成。請(qǐng)求訪問(wèn)總線的主機(jī)發(fā)出起始信號(hào)后,發(fā)送起始字節(jié)(00000001),另一個(gè)單片機(jī)可以用一個(gè)比較低的速率采樣SDA線,直到檢測(cè)到起始字節(jié)中的7個(gè)“0”中的一個(gè)為止。在檢測(cè)到SDA線上的高電平后,單片機(jī)就可以用較高的采樣速率,以便尋找作為同步信號(hào)使用的第二個(gè)起始信號(hào)Sr。在起始信號(hào)后的應(yīng)答時(shí)鐘脈沖僅僅是為了和總線所使用的格式一致,并不要求器件在這個(gè)脈沖期間作應(yīng)答。

引導(dǎo)過(guò)程由起始信號(hào)、起始字節(jié)、應(yīng)答位、重復(fù)起始信51(4)10位尋址10位尋址向下兼容7位尋址,而且可以結(jié)合使用。10位尋址不會(huì)影響已有的7位尋址。有7位和10位地址的器件可以連接到相同的I2C總線,它們都能用于F/S模式和Hs模式系統(tǒng)。10位從機(jī)地址是由在起始條件(S)或重復(fù)起始條件(Sr)后的頭兩個(gè)字節(jié)組成。第一個(gè)字節(jié)的頭7位是11110XX的組合,其中最后兩位(XX)是10位地址的兩個(gè)最高位(MSB);第一個(gè)字節(jié)的第8位是R/W位,決定了報(bào)文的方向。第一個(gè)字節(jié)的最低位是‘0’表示主機(jī)將寫信息到選中的從機(jī)?!?’表示主機(jī)將向從機(jī)讀信息。如果R/W位是0,則第二個(gè)字節(jié)是10位從機(jī)地址剩下的8位。如果R/W位是1,則下一個(gè)字節(jié)是從機(jī)發(fā)送給主機(jī)的數(shù)據(jù)。(4)10位尋址10位尋址向下兼容7位尋址,52主機(jī)-發(fā)送器用10位地址尋址從機(jī)-接收器主機(jī)-接收器用10位地址尋址從機(jī)-發(fā)送器主機(jī)-發(fā)送器用10位地址尋址從機(jī)-接收器主機(jī)-接收器用1053組合格式。主機(jī)用10位地址尋址從機(jī),然后發(fā)送數(shù)據(jù)到這個(gè)從機(jī)并向這個(gè)從機(jī)讀數(shù)據(jù)組合格式。主機(jī)用10位地址尋址從機(jī),然后發(fā)送數(shù)據(jù)到這個(gè)從機(jī)541、I2C總線數(shù)據(jù)傳送速率

I2C

總線的通信速率受主機(jī)控制,能快能慢。但是最高速率是有限制的,I2C

總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式(Standard-mode)下為

100kbps(每秒

100k

位)

,在快速模式下為400kbps。按照后來(lái)修訂的版本,位速率最高可達(dá)

3.4Mbps。2、子地址

帶有

I2C

總線的器件除了有從機(jī)地址(Slave

Address)外,還可能有子地址。從機(jī)地址是指該器件在

I2C

總線上被主機(jī)尋址的地址,

而子地址是指該器件內(nèi)部不同部件或存儲(chǔ)單元的編址。例如,帶

I2C

總線接口的

E2PROM

就是擁有子地址器件的典型代表。

某些器件(只占少數(shù))內(nèi)部結(jié)構(gòu)比較簡(jiǎn)單,可能沒(méi)有子地址,只有必須的從機(jī)地址。

與從機(jī)地址一樣,子地址實(shí)際上也是像普通數(shù)據(jù)那樣進(jìn)行傳輸?shù)?,傳輸格式仍然是與數(shù)據(jù)相統(tǒng)一的,區(qū)分傳輸?shù)牡降资堑刂愤€是數(shù)據(jù)要靠收發(fā)雙方具體的邏輯約定。子地址的長(zhǎng)度必須由整數(shù)個(gè)字節(jié)組成,可能是單字節(jié)(8

位子地址)

,也可能是雙字節(jié)(16

位子地址)

,還可能是

3

字節(jié)以上,這要看具體器件的規(guī)定。三、I2C基礎(chǔ)知識(shí)1、I2C總線數(shù)據(jù)傳送速率

2、子地址

三、I2C基礎(chǔ)知識(shí)553、仲裁是一個(gè)在有多個(gè)主機(jī)同時(shí)嘗試控制總線但只允許其中一個(gè)控制總線并使報(bào)文不被破壞的過(guò)程。所有主機(jī)在SCL線上產(chǎn)生它們自己的時(shí)鐘來(lái)傳輸I2C總線上的報(bào)文。數(shù)據(jù)只在時(shí)鐘的高電平周期有效。因此,需要一個(gè)確定的時(shí)鐘進(jìn)行逐位仲裁。時(shí)鐘同步通過(guò)線與連接I2C接口到SCL線來(lái)執(zhí)行。這就是說(shuō):SCL線的高到低切換會(huì)使器件開(kāi)始數(shù)它們的低電平周期,而且一旦器件的時(shí)鐘變低電平,它會(huì)使SCL線保持這種狀態(tài)直到到達(dá)時(shí)鐘的高電平。但是,如果另一個(gè)時(shí)鐘仍處于低電平周期,這個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論