




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
I2C串行總線的組成及工作原理8.1I2C串行總線的組成及工作原理采用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化、系統(tǒng)的體積減小、可靠性提高。同時(shí),系統(tǒng)的更改和擴(kuò)充極為容易。常用的串行擴(kuò)展總線有:I2C(InterICBUS)總線、單總線(1-WIREBUS)、SPI(SerialPeripheralInterface)總線及Microwire/PLUS等。
本課僅討論I2C串行總線。8.1.1I2C串行總線概述
I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。
I2C總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。I2C總線通過(guò)上拉電阻(阻值常為1k8,4k7and10k,1k8時(shí)性能最好)接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系(總線上的信號(hào)是所有器件輸出到該線路上的信號(hào)相“與”的結(jié)果)。
連接上I2C總線的器件的引腳可以輸出/輸入信號(hào)到總線上。器件引腳輸出的信號(hào)可能是:高電平/低電平(器件工作時(shí))、高阻態(tài)(器件不工作時(shí))。
當(dāng)器件不工作時(shí),其輸出為高阻態(tài),由于總線通過(guò)上拉電阻接正電源,所以總線上的信號(hào)為高電平。即:當(dāng)總線空閑時(shí),兩根線均為高電平。將SDA、SCL均置為1,用來(lái)釋放總線。當(dāng)器件工作時(shí),若輸出為高電平,總線上的信號(hào)為高電平(前提是沒(méi)有別的部件輸出低電平到總線上);若輸出為低電平,總線上的信號(hào)恒為低電平(不管有沒(méi)有別的部件輸出什么信號(hào)到總線上)。
即如果一方輸出低,另一方即使輸出高也不能使SDA為高,相當(dāng)于,輸出低的一方占住了SDA口,所以兩個(gè)口一個(gè)輸出高一個(gè)輸出低,則線上電平是低的。這是因?yàn)檩敵龈叩尿?qū)動(dòng)能力不及輸出低的拉電流的能力??偩€封鎖狀態(tài):如果需要禁止所有發(fā)生在I2C總線上的通信活動(dòng),封鎖或關(guān)閉總線是一種可行途徑,只要掛接于該總線上的任意一個(gè)器件將時(shí)鐘線SCL鎖定在低電平上即可。
每個(gè)接到I2C總線上的器件都有唯一的地址。主機(jī)與其它器件間的數(shù)據(jù)傳送可以是由主機(jī)發(fā)送數(shù)據(jù)到其它器件,即主機(jī)寫(xiě)從機(jī),這時(shí)主機(jī)為發(fā)送器,從機(jī)為接收器;也可以由從機(jī)發(fā)送數(shù)據(jù)到主機(jī),即主機(jī)讀從機(jī),這時(shí)從機(jī)為發(fā)送器,主機(jī)為接收器。雖然二者都可以傳輸數(shù)據(jù),但是從設(shè)備不能發(fā)起傳輸,且傳輸是受到主設(shè)備控制的。所以主機(jī)讀從機(jī)時(shí),需先由主機(jī)向從機(jī)發(fā)讀命令,然后由從機(jī)發(fā)送數(shù)據(jù)到主機(jī)。
在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù)。為了避免混亂,I2C總線要通過(guò)總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。
器件釋放總線是通過(guò)不驅(qū)動(dòng)總線來(lái)釋放,停止驅(qū)動(dòng)后總線應(yīng)該為“1”,但是發(fā)現(xiàn)總線還是“0”,說(shuō)明還有主機(jī)在競(jìng)爭(zhēng)總線使用權(quán),自己線驅(qū)動(dòng)到“1”,卻檢測(cè)到“0”,意味著自己已經(jīng)失去了仲裁(失去了總線使用權(quán))。所以即其仲裁原則為:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送高電平的那個(gè)器件將自動(dòng)關(guān)閉其輸出級(jí)。若均為低電平后則比較從機(jī)的器件地址,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較。所以
I2C總線的控制只由地址碼以及要發(fā)送的數(shù)據(jù)決定,沒(méi)有中央主機(jī),總線也沒(méi)有任何定制的優(yōu)先權(quán)。假如在某I2C總線系統(tǒng)中存在兩個(gè)主器件節(jié)點(diǎn),分別記為主器件1和主器件2,其數(shù)據(jù)輸出端分別為DATA1和DATA2,它們都有控制總線的能力,這就存在著發(fā)生總線沖突(即寫(xiě)沖突)的可能性。
假設(shè)在某一瞬間兩者相繼向總線發(fā)出了啟動(dòng)信號(hào),鑒于:I2C總線的“線與”特性,使得在數(shù)據(jù)線SDA上得到的信號(hào)波形是DATA1和DATA2兩者相與的結(jié)果。
在總線被啟動(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)了總線仲裁的功能。
從以上總線仲裁的完成過(guò)程可以得出:仲裁過(guò)程主器件1和主器件2都不會(huì)丟失數(shù)據(jù);各個(gè)主器件沒(méi)有優(yōu)先級(jí)別之分,總線控制權(quán)是隨機(jī)裁定的,即使是搶先發(fā)送啟動(dòng)信號(hào)的主器件1最終也并沒(méi)有得到控制權(quán)。
系統(tǒng)實(shí)際上遵循的是“低電平優(yōu)先”的仲裁原則,將總線判給在數(shù)據(jù)線上先發(fā)送低電平的主器件,而其他發(fā)送高電平的主器件將失去總線控制權(quán)。一、數(shù)據(jù)位的有效性規(guī)定
I2C總線在時(shí)鐘信號(hào)為高電平期間,進(jìn)行數(shù)據(jù)傳送(讀寫(xiě))時(shí),所以此時(shí)間段內(nèi)數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定。亦即:只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化,所以在向SDA上送數(shù)據(jù)之前,要將SCL置為低,等待數(shù)據(jù)穩(wěn)定后,將SCL置為高,再進(jìn)行讀寫(xiě)。8.1.2I2C總線的數(shù)據(jù)傳送二、起始和終止信號(hào)初始化時(shí)(總線空閑時(shí))SCL、SDA均為高電平
。在SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);在SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。
可以理解為什么前面說(shuō):在SCL線為高電平期間,進(jìn)行讀寫(xiě),此時(shí)SDA線的數(shù)據(jù)必須穩(wěn)定。起始和終止信號(hào)都是由主機(jī)發(fā)出的,在起始信號(hào)產(chǎn)生后,總線就處于被占用的狀態(tài);在終止信號(hào)產(chǎn)生后,總線就處于空閑狀態(tài)。連接到I2C總線上的器件,若具有I2C總線的硬件接口,則很容易檢測(cè)到起始和終止信號(hào)。接收器件收到一個(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)行。
三、數(shù)據(jù)傳送格式(1)字節(jié)傳送與應(yīng)答
每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位),但是應(yīng)答位由從機(jī)(即接收器)發(fā)出的。發(fā)送器每發(fā)送一個(gè)字節(jié),就在時(shí)鐘脈沖9期間釋放數(shù)據(jù)線,由接收器反饋一個(gè)應(yīng)答信號(hào)(發(fā)送端在發(fā)送一個(gè)字節(jié)數(shù)據(jù)后,要在SCL第9個(gè)脈沖來(lái)臨前把SDA拉高,以等待接收端發(fā)來(lái)ACK信號(hào))。三、數(shù)據(jù)傳送格式(1)字節(jié)傳送與應(yīng)答
在第9個(gè)SCL時(shí)鐘周期的高電平期間,讀SDA,若為低電平表示應(yīng)答(接收器在第9個(gè)時(shí)鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時(shí)鐘的高電平期間為穩(wěn)定的低電平),若為高電平表示非應(yīng)答(從機(jī)輸出高電平)或無(wú)應(yīng)答(從機(jī)無(wú)任何輸出)。所以檢測(cè)非應(yīng)答時(shí),要通過(guò)持續(xù)循環(huán)一定長(zhǎng)的時(shí)間,檢測(cè)SDA是否為高,因?yàn)閺臋C(jī)的反應(yīng)速度慢。非應(yīng)答信號(hào)的使用由于某種原因從機(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)。非應(yīng)答信號(hào)的使用如果接收器是主控器,則在它收到最后一個(gè)字節(jié)后,發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放SDA線,以便主控接收器發(fā)送一個(gè)停止信號(hào)P。
主機(jī)檢測(cè)到從機(jī)應(yīng)答信號(hào)后才能進(jìn)行下一次操作,如檢測(cè)到非應(yīng)答信號(hào)主機(jī)則發(fā)出終止信號(hào),結(jié)束數(shù)據(jù)的傳送,或重發(fā)數(shù)據(jù)。
主機(jī)收到應(yīng)答信號(hào)后,若無(wú)數(shù)據(jù)傳送,也可發(fā)終止信號(hào),結(jié)束傳送。(2)數(shù)據(jù)幀格式
I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。
在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7位),第8位是數(shù)據(jù)的傳送方向位(R/T),用“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)行尋址。
工作過(guò)程1.主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù)主設(shè)備發(fā)送起始位,這會(huì)通知總線上的所有設(shè)備傳輸開(kāi)始了,接下來(lái)主機(jī)發(fā)送設(shè)備地址,與這一地址匹配的slave將繼續(xù)這一傳輸過(guò)程,而其它slave將會(huì)忽略接下來(lái)的傳輸并等待下一次傳輸?shù)拈_(kāi)始。
主設(shè)備尋址到從設(shè)備后,發(fā)送它所要寫(xiě)入的從設(shè)備的內(nèi)部寄存器地址;之后,發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送完畢后,發(fā)送停止位。寫(xiě)入過(guò)程如下:發(fā)送起始位。發(fā)送從設(shè)備的地址和讀/寫(xiě)選擇位。釋放總線,等到EEPROM拉低總線進(jìn)行應(yīng)答(如果EEPROM接收成功,則進(jìn)行應(yīng)答;若沒(méi)有握手成功或者發(fā)送的數(shù)據(jù)錯(cuò)誤時(shí)EEPROM不產(chǎn)生應(yīng)答,此時(shí)重發(fā)或者終止,轉(zhuǎn)到1或7)。發(fā)送想要寫(xiě)入的內(nèi)部寄存器地址。EEPROM對(duì)其發(fā)出應(yīng)答(若無(wú)應(yīng)答,轉(zhuǎn)到1或7)。寫(xiě)入過(guò)程如下:發(fā)送數(shù)據(jù)。(可向一個(gè)連續(xù)地址區(qū)域發(fā)送多個(gè)字節(jié)的數(shù)據(jù),不需要再寫(xiě)入內(nèi)部地址,因?yàn)槊總魉鸵粋€(gè)字節(jié)(并有應(yīng)答信號(hào)),內(nèi)部存儲(chǔ)地址會(huì)自加1,但每個(gè)字節(jié)的數(shù)據(jù)都要有應(yīng)答信號(hào),才能去發(fā)下一個(gè)字節(jié))發(fā)送停止位。EEPROM收到停止信號(hào)后,進(jìn)入到一個(gè)內(nèi)部的寫(xiě)入周期,大概需要10ms,此間任何操作都不會(huì)被EEPROM響應(yīng)(所以在兩次寫(xiě)入之間要插入一個(gè)延時(shí),否則會(huì)導(dǎo)致失敗)。工作過(guò)程2.主控器讀取數(shù)據(jù)的過(guò)程:讀的過(guò)程比較復(fù)雜,在從slave讀出數(shù)據(jù)前,你必須先要告訴它哪個(gè)內(nèi)部寄存器是你想要讀取的,因此必須先對(duì)其進(jìn)行寫(xiě)入(dummywrite):先寫(xiě)入從器件設(shè)備地址(對(duì)設(shè)備尋址)以及從器件內(nèi)部地址(對(duì)設(shè)備內(nèi)部存儲(chǔ)單元尋址),然后再寫(xiě)一遍從器件設(shè)備地址設(shè)置第8位數(shù)據(jù)傳送方向位為1(R),通知從設(shè)備發(fā)送數(shù)據(jù)。讀入過(guò)程如下:發(fā)送起始位;發(fā)送slave地址+writebitset;發(fā)送內(nèi)部寄存器地址;重新發(fā)送起始位,即restart;重新發(fā)送slave地址+readbitset;讀取數(shù)據(jù)的主機(jī)接收器,在接收到最后一個(gè)字節(jié)后,發(fā)出NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,于是,從機(jī)發(fā)送器釋放SDA線,以便主機(jī)發(fā)出終止信號(hào)結(jié)束傳輸(當(dāng)單片機(jī)作為接收端時(shí),如果接收多個(gè)字節(jié)數(shù)據(jù),那么,在每接收完一字節(jié)的數(shù)據(jù)后,都要發(fā)送應(yīng)答信號(hào),最后一個(gè)字節(jié)除外
)。主機(jī)發(fā)送停止位
在總線的一次數(shù)據(jù)傳送過(guò)程中,可以有以下幾種組合方式:a、主機(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)。。這里的“數(shù)據(jù)”是指廣義的數(shù)據(jù),可以是從機(jī)內(nèi)部地址也可以是數(shù)據(jù)b、主機(jī)從從機(jī)讀數(shù)據(jù)c、在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫(xiě)方向位正好反相(見(jiàn)上圖)。四、總線的尋址I2C總線協(xié)議有明確的規(guī)定:采用7位的尋址字節(jié)(尋址字節(jié)是起始信號(hào)后的第一個(gè)字節(jié))。(1)尋址字節(jié)的位定義
D7~D1位組成從機(jī)的地址。D0位是數(shù)據(jù)傳送方向位,為“0”時(shí)表示主機(jī)向從機(jī)寫(xiě)數(shù)據(jù),為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù)。主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼與自己的地址進(jìn)行比較,如果相同,則認(rèn)為自己正被主機(jī)尋址,根據(jù)R/T位將自己確定為發(fā)送器或接收器。從機(jī)的地址由固定部分和可編程部分組成。在一個(gè)系統(tǒng)中可能希望接入多個(gè)相同的從機(jī),從機(jī)地址中可編程部分決定了可接入總線該類器件的最大數(shù)目。如一個(gè)從機(jī)的7位尋址位有4位是固定位,3位是可編程位,這時(shí)僅能尋址8個(gè)同樣的器件,即可以有8個(gè)同樣的器件接入到該I2C總線系統(tǒng)中。一、典型信號(hào)模擬為了保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)的I2C總線的數(shù)據(jù)傳送有嚴(yán)格的時(shí)序要求。I2C總線的起始信號(hào)、終止信號(hào)、發(fā)送“0”及發(fā)送“1”的模擬時(shí)序:
總線數(shù)據(jù)傳送的模擬
主機(jī)可以采用不帶I2C總線接口的單片機(jī),如80C51、AT89C2051等單片機(jī),利用軟件實(shí)現(xiàn)I2C總線的數(shù)據(jù)傳送,即軟件與硬件結(jié)合的信號(hào)模擬。
二、典型信號(hào)模擬子程序通過(guò)空操作來(lái)實(shí)現(xiàn)延時(shí)(對(duì)于延時(shí)很短的,要求在us級(jí)的)在keilC51中,直接調(diào)用intrins.h頭文件中的庫(kù)函數(shù)_nop_(),其原型為:void_nop_(void);//產(chǎn)生一條NOP指令
這個(gè)函數(shù)相當(dāng)匯編NOP指令,延時(shí)幾微秒(NOP指令為單周期指令,可由晶振頻率算出延時(shí)時(shí)間,對(duì)于12M晶振,延時(shí)1uS)。#defineNOP5(){_nop_();_nop_();_nop_();_nop_();_nop_();}二、典型信號(hào)模擬子程序(1)起始信號(hào)VoidI2CStart(void){SDA=1; SCL=1;//起始之前總線空閑SDA、SCL均為1 NOP5();//NOP5()>4.7us SDA=0;//在SDA上產(chǎn)生下降沿 NOP5();//NOP5()>4usSCL=0;//拉低SCL為輸出數(shù)據(jù)到SDA做準(zhǔn)備}(2)終止信號(hào)voidI2cStop(void){ SDA=0;//為在SDA上產(chǎn)生上升沿做準(zhǔn)備 SCL=1; NOP5();//NOP5()>4us SDA=1;//在SDA上產(chǎn)生上升沿 NOP5();//NOP5()>4.7us}//終止信號(hào)發(fā)出后,總線回到空閑狀態(tài),SDA、SCL均為1(3)發(fā)送應(yīng)答/非應(yīng)答信號(hào)//ack=0表示應(yīng)答;ack=1表示非應(yīng)答voidI2cS_Ack(bit
ack){ SCL=0;//拉低SCL為輸出數(shù)據(jù)到SDA做準(zhǔn)備 SDA=ack;//輸出ack到SDA,表示應(yīng)答/不應(yīng)答 SCL=1; NOP5();//NOP5()>4usSCL=0;//SCL從0-1-0為一個(gè)完整的時(shí)鐘周期SDA=1;//釋放總線}存在總線控制權(quán)交替時(shí)就需要釋放總線(4)查詢/接收應(yīng)答信號(hào)ucharI2cR_Ack(void)//返回值為0表示應(yīng)答,為1表示非應(yīng)答{uchar
i,ack;
SCL=0;//拉低SCL為輸出數(shù)據(jù)到SDA做準(zhǔn)備SDA=1;//釋放總線,讓從設(shè)備能輸出數(shù)據(jù)到SDASCL=1;while((SDA==1)&&(i<250))i++;//等待從設(shè)備發(fā)送應(yīng)答信號(hào),若為0,表示應(yīng)答,循環(huán)結(jié)束;若為1,可能是從機(jī)還未將信號(hào)送上來(lái),循環(huán)延時(shí)到i>250,若仍為1,此時(shí)才認(rèn)為是未應(yīng)答。ack=SDA;SCL=0;//SCL從0-1-0為一個(gè)完整的時(shí)鐘周期SDA=1;//釋放總線return(ack);}
8.2.2I2C總線器件的擴(kuò)展一、擴(kuò)展電路
二、串行E2PROM的擴(kuò)展
(1)串行E2PROM典型產(chǎn)品AT24C01:128字節(jié)(128×8位);
AT24C02:256字節(jié)(256×8位);AT24C04:512字節(jié)(512×8位)AT24C08:1K字節(jié)(1K×8位);AT24C16:2K字節(jié)(2K×8位);ATMEL公司的AT24C系列:
1、引腳的功能24CXX系列的E2PROM管腳排列圖分別為如圖9-14的(a)、(b)、(c)所示VCC:電源+5V。VSS:地線。SCL:串行時(shí)鐘輸入端,用于發(fā)送數(shù)據(jù)或接收數(shù)據(jù)時(shí)產(chǎn)生所需的時(shí)鐘。SDA:串行數(shù)據(jù)I/O端,用于輸入和輸出串行數(shù)據(jù)。該引腳是漏極開(kāi)路的端口,需接上拉電阻到VCC。WP:寫(xiě)保護(hù)端,該引腳提供了硬件數(shù)據(jù)保護(hù),當(dāng)WP接地時(shí),允許對(duì)芯片執(zhí)行寫(xiě)操作;當(dāng)WP接VCC時(shí),則對(duì)芯片實(shí)施寫(xiě)保護(hù)。(a)24C01/02/04/08/16/32/64管腳(b)24C128管腳(c)24C256管腳圖9-1424CXX系列E2PROM引腳圖
(2)寫(xiě)入過(guò)程
AT24C系列E2PROM芯片地址的固定部分為1010,A2、A1、A0引腳接高、低電平后得到確定的3位編碼。形成的7位編碼即為該器件的地址碼。
單片機(jī)進(jìn)行寫(xiě)操作時(shí),首先發(fā)送該器件的7位地址碼和寫(xiě)方向位“0”(共8位,即一個(gè)字節(jié)),發(fā)送完后釋放SDA線并在SCL線上產(chǎn)生第9個(gè)時(shí)鐘信號(hào)。被選中的存儲(chǔ)器器件在確認(rèn)是自己的地址后,在SDA線上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為相應(yīng),單片機(jī)收到應(yīng)答后就可以傳送數(shù)據(jù)了。
傳送數(shù)據(jù)時(shí),單片機(jī)首先發(fā)送一個(gè)字節(jié)的被寫(xiě)入器件的存儲(chǔ)區(qū)的首地址,收到存儲(chǔ)器器件的應(yīng)答后,單片機(jī)就逐個(gè)發(fā)送各數(shù)據(jù)字節(jié),但每發(fā)送一個(gè)字節(jié)后都要等待應(yīng)答。
AT24C系列器件片內(nèi)地址在接收到每一個(gè)數(shù)據(jù)字節(jié)地址后自動(dòng)加1,在芯片的“一次裝載字節(jié)數(shù)”(不同芯片字節(jié)數(shù)不同)限度內(nèi),只需輸入首地址。裝載字節(jié)數(shù)超過(guò)芯片的“一次裝載字節(jié)數(shù)”時(shí),數(shù)據(jù)地址將“上卷”,前面的數(shù)據(jù)將被覆蓋。
當(dāng)要寫(xiě)入的數(shù)據(jù)傳送完后,單片機(jī)應(yīng)發(fā)出終止信號(hào)以結(jié)束寫(xiě)入操作。寫(xiě)入n個(gè)字節(jié)的數(shù)據(jù)格式:
(3)讀出過(guò)程單片機(jī)先發(fā)送該器件的7位地址碼和寫(xiě)方向位“0”(“偽寫(xiě)”),發(fā)送完后釋放SDA線并在SCL線上產(chǎn)生第9個(gè)時(shí)鐘信號(hào)。被選中的存儲(chǔ)器器件在確認(rèn)是自己的地址后,在SDA線上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為回應(yīng)。
然后,再發(fā)一個(gè)字節(jié)的要讀出器件的存儲(chǔ)區(qū)的首地址,收到應(yīng)答后,單片機(jī)要重復(fù)一次起始信號(hào)并發(fā)出器件地址和讀方向位(“1”),收到器件應(yīng)答后就可以讀出數(shù)據(jù)字節(jié),每讀出一個(gè)字節(jié),單片機(jī)都要回復(fù)應(yīng)答信號(hào)。當(dāng)最后一個(gè)字節(jié)數(shù)據(jù)讀完后,單片機(jī)應(yīng)返回以“非應(yīng)答”(高電平),并發(fā)出終止信號(hào)以結(jié)束讀出操作。
(5)向總線寫(xiě)一個(gè)字節(jié)數(shù)據(jù)voidWriteByte(unsignedcharsendbyte){unsignedchardataj=8;for(;j>0;j--){SCL=0;//拉低SCL為輸出數(shù)據(jù)到SDA做準(zhǔn)備sendbyte<<=1;//左移時(shí)最低位補(bǔ)0,最高位移入PSW的CY位SDA=CY;//輸出數(shù)據(jù)到SDA
SCL=1;//產(chǎn)生時(shí)鐘信號(hào)上升沿,完成數(shù)據(jù)位傳送
NOP5();}SCL=0;//SCL從0-1-0為一個(gè)完整的時(shí)鐘周期SDA=1;//釋放總線}(6)從總線讀一個(gè)字節(jié)數(shù)據(jù)unsignedcharReadByte(void){unsignedchardataj=8,recbyte;SCL=0;//拉低SCL為從設(shè)備輸出數(shù)據(jù)到SDA做準(zhǔn)備SDA=1;//釋放總線for(;j>0;j--){SCL=1;//在時(shí)鐘為高電平期間讀
NOP5();recbyte=(recbyte<<1)|SDA;//讀SDASCL=0;//SCL從0-1-0為一個(gè)完整的時(shí)鐘周期}
return(recbyte);//返回所讀數(shù)據(jù)}【例】將數(shù)據(jù)“0x0f”寫(xiě)入AT24C02再讀出送P1口顯示。電路源程序虛擬儀器I2C
DEBUGGER虛擬儀器I2C
DEBUGGER前面是數(shù)據(jù)后面是應(yīng)答AT24C02有兩種讀寫(xiě)方式:字節(jié)讀寫(xiě)方式(一次讀寫(xiě)一個(gè)字節(jié))、頁(yè)讀寫(xiě)方式(可連續(xù)讀寫(xiě)最多一個(gè)頁(yè)【8B】的數(shù)據(jù))。前面的例子是字節(jié)讀寫(xiě)方式。AT24C02共256B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 風(fēng)險(xiǎn)管理中的溝通渠道優(yōu)化試題及答案
- 2025年公司戰(zhàn)略與行業(yè)風(fēng)險(xiǎn)趨勢(shì)研究試題及答案
- 2025年法學(xué)概論考試的法律實(shí)務(wù)技能與試題及答案
- 2025年生態(tài)風(fēng)險(xiǎn)與公司戰(zhàn)略的關(guān)系試題及答案
- 2025冷凍鮑魚(yú)買賣合同書(shū)
- 建立并維護(hù)客戶關(guān)系的計(jì)劃
- 風(fēng)險(xiǎn)管理中的團(tuán)隊(duì)協(xié)作與溝通試題及答案
- 公司未來(lái)發(fā)展的藍(lán)圖計(jì)劃
- 2025年度物品保管合同示范文本
- 數(shù)據(jù)通信原理試題及答案
- 區(qū)域消防安全風(fēng)險(xiǎn)評(píng)估規(guī)程DB50-T 1114-2021
- 幼教培訓(xùn)課件:《家園共育體系建構(gòu)與實(shí)施策略》
- 最新易制毒化學(xué)品管理制度大全
- 安全輸血管理制度培訓(xùn)課件
- 小學(xué)美術(shù)1色彩的情感課件
- 奧沙利鉑過(guò)敏反應(yīng)
- 項(xiàng)目部臨時(shí)動(dòng)火作業(yè)審批表
- 機(jī)載直流用電設(shè)備電源特性要求及試驗(yàn)方法
- 項(xiàng)目質(zhì)量管理評(píng)價(jià)表
- 飲料生產(chǎn)公司應(yīng)急預(yù)案匯編參考范本
- 藍(lán)色大氣商務(wù)商業(yè)計(jì)劃書(shū)PPT模板
評(píng)論
0/150
提交評(píng)論