《單片機原理及應(yīng)用》課件第11章 I2C總線_第1頁
《單片機原理及應(yīng)用》課件第11章 I2C總線_第2頁
《單片機原理及應(yīng)用》課件第11章 I2C總線_第3頁
《單片機原理及應(yīng)用》課件第11章 I2C總線_第4頁
《單片機原理及應(yīng)用》課件第11章 I2C總線_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章I2C總線11.1I2C總線概述11.2I2C總線協(xié)議11.3

I2C總線信號的模擬11.424C02器件11.5實踐訓(xùn)練—I2C總線使用11.6思考與練習(xí)本章要點I2C總線(Inter-IntegratedCircuit)是PHILIPS公司80年代推出的芯片間串行傳輸總線,只利用2根線(SDA數(shù)據(jù)線、SCL時鐘線)即可實現(xiàn)完善的全雙工同步數(shù)據(jù)傳輸。I2C總線能夠方便地構(gòu)成多機系統(tǒng)和外圍器件擴展系統(tǒng)見圖11-1所示。I2C器件無需片選信號,是否選中是由主器件發(fā)出的I2C從器件地址編號決定,而I2C器件的從地址是由I2C總線委員會實行統(tǒng)一發(fā)配。在器件之間進行數(shù)據(jù)傳送時,數(shù)據(jù)傳送速率最高可達400KBS,所以I2C總線系統(tǒng)通常用于控制而無需高速傳送數(shù)據(jù)的應(yīng)用場合。I2C總線最主要的優(yōu)點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。I2C總線系統(tǒng)本章要點本章要點:I2C總線的特性和工作原理24C02讀寫操作I2C總線的信號模擬I2C總線的驅(qū)動程序設(shè)計CONTNTS11.1I2C總線概述11.1I2C總線概述01I2C總線(InterICBus)由PHILIPS公司推出,是近年來微電子通信控制領(lǐng)域廣泛采用的一種新型總線標準,它是同步通信的一種特殊形式,具有接口線少、控制簡單、器件封裝形式小、通信速率較高等優(yōu)點。在主從通信中,可以有多個I2C總線器件同時接到I2C總線上,所有與I2C兼容的器件都具有標準的接口,通過地址來識別通信對象,使它們可以經(jīng)由I2C總線互相直接通信。11.1I2C總線概述0111.1.1I2C總線的特性I2C總線由數(shù)據(jù)線SDA和時鐘線SCL兩條線構(gòu)成通信線路,既可發(fā)送數(shù)據(jù),也可接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間都可進行雙向傳送,最高傳送速率為400kbps,各種被控器件均并聯(lián)在總線上,但每個器件都有唯一的地址。在信息傳輸過程中,I2C總線上并聯(lián)的每一個器件既是被控器件(或主控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和數(shù)據(jù)碼兩部分:地址碼用來選址,即接通需要控制的電路;數(shù)據(jù)碼是通信的內(nèi)容,這樣各IC控制電路雖然掛在同一條總線上,卻彼此獨立。

與總線相連的每個器件都對應(yīng)一個特定的地址,采用軟件尋址方式,每個器件在整個通信過程中都是單一的主控器/從控器身份,主控器可用作主控發(fā)送器或主控接收器。I2C是一種真正的多主總線,含有錯誤檢測和總線仲裁功能,以防止2個或更多主控器同時啟動數(shù)據(jù)傳輸而產(chǎn)生數(shù)據(jù)混亂。I2C總線可雙向傳輸8位串行數(shù)據(jù),數(shù)據(jù)傳送速率有標準I2C模式下的100Kbit/s和快速模式下的400Kbit/s以及高速模式可高達3.4Mbit/s,并可濾除50ns數(shù)據(jù)線上的尖峰脈沖,以保持數(shù)據(jù)的完整性。連接到同一總線上的IC數(shù)目有限,整個I2C系統(tǒng)的總線電容不可超過400PF。11.1I2C總線概述0111.1.2I2C總線工作原理I2C總線是由SCL(串行時鐘)和SDA(串行數(shù)據(jù))兩根總線構(gòu)成,該總線有嚴格的時序要求:總線工作時,由串行時鐘線SCL傳送時鐘脈沖,由串行數(shù)據(jù)線SDA傳送數(shù)據(jù)。總線協(xié)議規(guī)定:各主節(jié)點進行通信時都要有起始、結(jié)束、發(fā)送數(shù)據(jù)和應(yīng)答信號。這些信號都是通信過程中的基本單元??偩€傳送的每1幀數(shù)據(jù)均是1個字節(jié),每當(dāng)發(fā)送完1個字節(jié)后,接收節(jié)點就相應(yīng)給一應(yīng)答信號。協(xié)議還規(guī)定:在啟動總線后的第1個字節(jié)的高7位是對從節(jié)點的尋址地址,第8位為方向位

(=0表示主節(jié)點對從節(jié)點的寫操作;

=1表示主節(jié)點對從節(jié)點的讀操作),其余的字節(jié)為操作數(shù)據(jù)。11.1I2C總線概述01圖11-2為I2C總線基本信號的時序。圖中包括起始信號、停止信號、應(yīng)答信號、非應(yīng)答信號以及傳輸數(shù)據(jù)"0"和數(shù)據(jù)"1"的時序。起始信號是在SCL線為高電平時,SDA線從高變化到低;停止信號是在SCL線為高電平時,SDA線從低變化到高;應(yīng)答信號是在SCL為高時SDA為低;非應(yīng)答信號相反,是在SCL為高時SDA為高。傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”與發(fā)送應(yīng)答位和非應(yīng)答位時序圖是相同的。1.開始條件和結(jié)束條件

僅當(dāng)總線空閑(SCL和SDA均為高電平)時,數(shù)據(jù)傳送才能開始。此時總線上的任何器件均可以控制總線。當(dāng)SCL為高電平時,SDA由高變到低為開始條件,當(dāng)SCL為高電平時,SDA由低變到高為結(jié)束條件。11.1I2C總線概述012.器件尋址I2C總線上可以掛載多個器件,主器件通過發(fā)送一個起始信號啟動發(fā)送過程,數(shù)據(jù)發(fā)送時序見圖11-3所示。從器件啟動后發(fā)送它所要尋址的從器件的編號8位地址,從器件地址格式如下表。器件編號地址的高4位固定為1010,低4位由A2、A1、A0和

位組成,A2、A1、A0用來定義器件編號;

為1,表示要對器件進行讀操作;位

為0表示寫操作。11.1I2C總線概述013.數(shù)據(jù)傳輸在數(shù)據(jù)傳送過程中,SCL為高電平時,SDA必須是一穩(wěn)定的高或低電平,此時數(shù)據(jù)有效。SDA線的改變只能發(fā)生在SCL為低電平。4.傳輸應(yīng)答所有數(shù)據(jù)都是按字節(jié)發(fā)送的,每次發(fā)送的字節(jié)數(shù)不限,但每發(fā)完每一個字節(jié)要釋放SDA線(呈高電平),然后由接收器下拉SDA線(呈低電平)產(chǎn)生應(yīng)答位,表示傳輸成功,此時主控器必須產(chǎn)生一個與此位相應(yīng)的額外時鐘脈沖。I2C總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后接收器都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答的器件在第9個時鐘周期時將SDA線拉低,表示其已收到一個8位數(shù),24C04在接收到起始信號和從器件地址之后響應(yīng)一個應(yīng)答信號,如果器件已選擇了寫操作,則在每接收一個8位字節(jié)之后響應(yīng)一個應(yīng)答信號。當(dāng)24C04工作于讀模式時,在發(fā)送一個8位數(shù)據(jù)后釋放SDA線,并監(jiān)視一個應(yīng)答信號,一旦接收到應(yīng)答信號24C04繼續(xù)發(fā)送數(shù)據(jù),如果單片機沒有發(fā)送應(yīng)答信號,器件停止傳送數(shù)據(jù)且等待一個停止信號。應(yīng)答時序如圖11-4所示。11.1I2C總線概述0111.1I2C總線概述0111.1.3I2C總線硬件結(jié)構(gòu)圖圖11-5為I2C總線系統(tǒng)的硬件結(jié)構(gòu)圖,其中,SCL是時鐘線,SDA是數(shù)據(jù)線??偩€上各器件都采用漏極開路結(jié)構(gòu)與總線相連,因此SCL和SDA均需接上拉電阻,總線在空閑狀態(tài)下均保持高電平,連到總線上任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C總線支持多主和主從兩種工作方式,通常為主從工作方式。在主從工作方式中,系統(tǒng)中只有一個主器件(單片機),其他器件都是具有I2C總線的外圍從器件。在主從工作方式中,主器件啟動數(shù)據(jù)的發(fā)送(發(fā)出啟動信號),產(chǎn)生時鐘信號,發(fā)出停止信號。CONTNTS11.2

I2C總線協(xié)議11.2I2C總線協(xié)議02圖11-6為I2C總線上進行一次數(shù)據(jù)傳輸?shù)耐ㄐ鸥袷健?1.2I2C總線協(xié)議021.總線上數(shù)據(jù)的有效性

在I2C總線上進行數(shù)據(jù)傳送時,每一位數(shù)據(jù)位都與時鐘脈沖相對應(yīng),在時鐘信號為高電平期間,數(shù)據(jù)線上必須保持穩(wěn)定的邏輯電平狀態(tài),高電平表示數(shù)據(jù)1,低電平表示數(shù)據(jù)0。只有在時鐘線為低電平時,才允許數(shù)據(jù)線的電平發(fā)生變化。2.起始信號

當(dāng)SCL為高時,SDA由高電平到低電平的跳變作為I2C總線的起始信號。起始信號表明一次數(shù)據(jù)傳送的開始。在起始信號產(chǎn)生后,總線就處于被占用狀態(tài)。3.停止信號

當(dāng)SCL為高時,SDA從低電平到高電平的跳變作為I2C總線的停止信號。在終止信號產(chǎn)后一定時間后,總線就處于空閉狀態(tài)。11.2I2C總線協(xié)議024.應(yīng)答信號I2C總線數(shù)據(jù)傳送時,每次傳送一個字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答的器件在第9個時鐘周期時將SDA線拉低,表示其已收到一個8位數(shù)據(jù)。利用I2C總線進行數(shù)據(jù)傳送時,傳送的字節(jié)數(shù)是沒有限制的,但是每一個字節(jié)必須保證是8位長度,并且首先發(fā)送數(shù)據(jù)的最高位,每傳送一個字節(jié)數(shù)據(jù)后都必須跟隨一位應(yīng)答信號,與應(yīng)答信號相應(yīng)的時鐘由主機產(chǎn)生,主機必須在這一時鐘位上釋放數(shù)據(jù)線,使其處于高電平狀態(tài),以便從機在這一位上送出應(yīng)答信號。應(yīng)答信號在第9個時鐘位上出現(xiàn),從機輸出低電平變應(yīng)答信號(A),表示繼續(xù)接收,若從機輸出高電平則為非應(yīng)答信號(/A),表示結(jié)束接收。如果主機接收數(shù)據(jù)時,它收到最后一個數(shù)據(jù)字節(jié)后,必須向從機發(fā)送一個非應(yīng)答信號(/A),使從機釋放SDA線,以便主機產(chǎn)生終止信號,從而停止數(shù)據(jù)傳送。11.2I2C總線協(xié)議025.器件地址I2C總線上的每一個從機均有一個唯一的地址,每次主機發(fā)出起始信號后,必須接著發(fā)出一個字節(jié)的地址信息,以選取掛在總線上的某一從機。地址信息的格式如下:其中D7-D0位表示從機的地址,D0位是數(shù)據(jù)傳送方向,為0時,表示主機向從機發(fā)送數(shù)據(jù)(寫),為1時,表示主機由從機處讀取數(shù)據(jù)。主機發(fā)送地址時,總線上的每一個從機都將這7位地址碼與自已的器件地址進行比較,如果相同則認為自已正被主機尋址,根據(jù)讀寫位將自已確定為發(fā)送器或接收器。從機的地址由一個固定部分和一個可編程部分組成。固定部分為器件的編號地址,表明了器件的類型,出廠時固定的??删幊滩糠譃槠骷囊_地址,視硬件接線而定。11.2I2C總線協(xié)議02例如24C02的地址格式如下:其中高四位1010為器件標識類型。A2~A0:引腳地址,對應(yīng)于該芯片引腳A2~A0的取值,當(dāng)A2-A0引腳均接低電平時,該器件的地址為A0H或A1H,如果為A0H表示寫數(shù)據(jù)到該器件,A1H表示從該器件讀數(shù)據(jù)。說明:從機地址只表明選擇掛在總線的哪一個器件及傳送方向,而器件內(nèi)部的地址是由編程者傳送的第一數(shù)據(jù)中指定的,即第一個數(shù)據(jù)為器件內(nèi)的子地址。11.2I2C總線協(xié)議026.I2C總線數(shù)據(jù)傳送的時序要求為了保證數(shù)據(jù)傳送的可靠性,標準的I2C總線數(shù)據(jù)傳送有著嚴格的時序要求,用普通I/O線模擬I2C總線數(shù)據(jù)傳送時,必須遵從定時規(guī)范,圖11-7給出了啟動、停止、應(yīng)答信號、非應(yīng)答信號的時序規(guī)范。CONTNTS11.3

I2C總線信號的模擬11.3I2C總線信號的模擬02實際應(yīng)用中,多數(shù)單片機系統(tǒng)使用的是單主結(jié)構(gòu)形式,即掛在總線上的設(shè)備只有一個主機,其它設(shè)備均是從機。在這種方式下,I2C總線數(shù)據(jù)的傳輸比較簡單,沒有總線的競爭,只存在單片機對I2C總線器件的讀(單片機接收)、寫(單片機發(fā)送)操作。此時我們可以使用不帶I2C總線接口的單片機,如8051作為主機,利用這些單片機的普通I/O口完全可以實現(xiàn)主機對I2C總線器件的讀寫操作。采用的方法就是利用軟件實現(xiàn)I2C總線的數(shù)據(jù)傳送,即軟件與硬件結(jié)合的信號模擬。在總線的一次數(shù)據(jù)傳送過程中,可以有以下幾種組合方式:主機向從機發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個傳送過程中不變。主機在第一個字節(jié)后立即從從機讀數(shù)據(jù)。在傳送過程中,當(dāng)需要改變傳送方向時,需將起始信號和從機地址各重復(fù)產(chǎn)生一次,而兩次讀/寫方向位正好相反。11.3I2C總線信號的模擬02為了保證數(shù)據(jù)傳送的可靠性,標準I2C總線的數(shù)據(jù)傳送有嚴格的時序要求。I2C總線的起始信號、終止信號、應(yīng)答或發(fā)送“0”、非應(yīng)答或發(fā)送“1”的模擬時序如圖11-8所示。單片機在模擬I2C總線通信時,需寫出如下幾個關(guān)鍵部分的程序:總線初始化、啟動信號、應(yīng)答信號、停止信號、寫一個字節(jié)、讀一個字節(jié)等。11.3I2C總線信號的模擬021.總線初始化

將總線都拉高以釋放總線。2.啟動總線函數(shù)

函數(shù)原型:voidstart();功能:啟動I2C總線,即發(fā)送起始信號。11.3I2C總線信號的模擬023.結(jié)束總線函數(shù)

函數(shù)原型:voidstop();功能:結(jié)束I2C總線,即發(fā)送I2C結(jié)束信號。11.3I2C總線信號的模擬024.發(fā)送應(yīng)答位函數(shù)函數(shù)原型:voidack_I2C(void);功能:向從器件發(fā)送應(yīng)答信號。5.發(fā)送非應(yīng)答位函數(shù)函數(shù)原型:voidnack_I2C(void);功能:向從器件發(fā)送非應(yīng)答信號。I2C總線數(shù)據(jù)模擬傳送除了上述基本的啟動、停止、發(fā)送應(yīng)答位、發(fā)送非應(yīng)答位之外,還需要發(fā)送一個字節(jié)數(shù)據(jù)、接收一個字節(jié)數(shù)據(jù)、發(fā)送n個字節(jié)數(shù)據(jù)、接收n個字節(jié)數(shù)據(jù)的函數(shù)。11.3I2C總線信號的模擬026.向I2C總線發(fā)送一個字節(jié)函數(shù)原型:voidsendbyte(ucharc);功能:將數(shù)據(jù)c發(fā)送出去,c可以是從器件地址或器件的子地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,如果沒有應(yīng)答,ack_mk=0,表示發(fā)送失敗,否則ack_mk=1,發(fā)送成功。11.3I2C總線信號的模擬027.從I2C總線接收一個字節(jié)數(shù)據(jù)的函數(shù)函數(shù)原型:ucharrcvbyte();功能:從I2C總線接收一個字節(jié)數(shù)據(jù)。11.3I2C總線信號的模擬028.向無子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù)

函數(shù)原型:bitI2C_SendByte(ucharsla,ucahrc);功能:該函數(shù)與sendbyte()不同,它包含了從啟動總線、發(fā)送從器件地址、數(shù)據(jù)到結(jié)束總線的全過程,如果返回1表示操作成功,否則操作有錯。SDA上數(shù)據(jù)的格式如下所示:其中:start:起始信號;sla:器件地址(寫);c:要寫入器件的數(shù)據(jù);ack:器件應(yīng)答信號;stop:停止信號;注:start、sla、c、stop表示數(shù)據(jù)由主機向從器件傳送,ack表示數(shù)據(jù)由從器件向主機傳送。11.3I2C總線信號的模擬029.向無子地址器件讀字節(jié)數(shù)據(jù)函數(shù)函數(shù)原型:bitI2C_rcvbyte(ucharsla,uchar*c);功能:該函數(shù)與rcvbyte()不同,它包含了從啟動總線、發(fā)送從器件地址、讀數(shù)據(jù)到結(jié)束總線的全過程。如果返回1表示操作成功,否則操作有錯。SDA上相應(yīng)的數(shù)據(jù)格式如下所示:其中:sla:從器件地址c:指向讀到的數(shù)據(jù)sla+1:從器件地址(讀);*c:讀到的數(shù)據(jù).nack:非應(yīng)答信號。11.3I2C總線信號的模擬0210.向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)

函數(shù)原型:bitI2C_sendstr(ucharsla,ucharsuba,ucahr*s,ucharn);功能:該函數(shù)包含了從啟動總線到發(fā)送器件地址、器件子地址、數(shù)據(jù)、結(jié)束總線的全過程。如果返回1表示操作成功,否則操作有誤。SDA上相應(yīng)的數(shù)據(jù)格式如下所示:其中:sla:從器件地址(寫)suba:子地址。s:指向要發(fā)送數(shù)據(jù)。n:要發(fā)送數(shù)據(jù)的字節(jié)數(shù)。11.3I2C總線信號的模擬0211.向有子地址器件讀取多字節(jié)數(shù)據(jù)函數(shù)

函數(shù)原型:bitI2C_rcvstr(ucharsla,ucharsuba,uchar*s,ucharno);功能:該函數(shù)包含了從啟動總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的全過程。如果返回1表示操作成功,否則操作有誤。SDA上相應(yīng)的數(shù)據(jù)格式如下所示:其中:sla:從器件地址suba:器件子地址。s::讀出的內(nèi)容放在s指向的存儲區(qū)。n:讀取的字節(jié)數(shù)。

說明:主機首先通過發(fā)送起始信號、從器件地址sla和它想讀取的字節(jié)數(shù)據(jù)所在地址suba(器件子地址),執(zhí)行一個偽寫操作,在從器件應(yīng)答之后,主器件重新發(fā)送起始信號和從器件地址Sla+1,此時R/W位置1,從器件響應(yīng)并發(fā)送應(yīng)答信號后,輸出所要求的一個字節(jié)數(shù)據(jù)DATA1,主器件隨后發(fā)送應(yīng)答信號ACK,以后從器件每輸出一個字節(jié)數(shù)據(jù),主機均回送ACK應(yīng)合,當(dāng)從器件輸出最后字節(jié)數(shù)據(jù)DATAn后,主機回送非應(yīng)答信號,接著發(fā)送停止信號結(jié)束總線傳送。11.3I2C總線信號的模擬02

CONTNTS11.4

24C02器件11.424C02器件03串行E2PROM是在各種串行器件應(yīng)用中使用較頻繁的器件,和并行E2PROM相比,串行E2PROM的數(shù)據(jù)傳送的速度較低,但是其體積較小,容量小,所含的引腳也較少。所以,它特別適合于需要存放非揮發(fā)數(shù)據(jù),要求速度不高,引腳少的單片機的應(yīng)用。24CXX系列的E2PROM有10種型號,其中典型的型號有24C01/02/04/08/16等5種,它們的存儲容量分別是128/256/512/1024/2048字節(jié)。24CXX系列的E2PROM支持I2C總線數(shù)據(jù)傳送協(xié)議,通過器件地址輸入端A0、A1、A2可以將最多8個24C01/24/C02器件,4個24C04器件,2個24C08器件,1個24C16器件連接到總線上。這里我們就24C02進行分析,其它型號與此類似。24C01/24c02是一個1K/2K/4K/8K/16K位串行CMOSE2PROM,內(nèi)部含有128/256/512/1024/2048個8位字節(jié),CATALYST公司的先進CMOS技術(shù)實質(zhì)上減少了器件的功耗。CAT24WC01有一個8字節(jié)頁寫緩沖器。24C01/24C02有一個16字節(jié)頁寫緩沖器。該器件通過I2C總線接口進行操作有一個專門的寫保護功能。11.424C02器件031.引腳的功能24C02器件的引腳圖及封裝外形如圖11-9。其中:Vcc:電源+5V。Vss:地線。SCL:串行時鐘輸入端。用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘。SDA:串行數(shù)據(jù)I/O端,用于輸入和輸出串行數(shù)據(jù)。這個引腳是漏極開路的端口,可與其它開漏輸出或集電極開路輸出組成“線或”結(jié)構(gòu)。通常需要用外部上拉電阻將其電平拉高。A0、A1、A2:器件地址輸入端,用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)這些腳懸空時默認值為0,對于24C02時最大可級聯(lián)8個器件,如果只有一個24C02被總線尋址,這三個地址輸入腳A0A1A2可懸空或連接到GND。WP:寫保護端。這個端提供了硬件數(shù)據(jù)保護。當(dāng)把WP接地時,允許芯片執(zhí)行一般讀寫操作;當(dāng)把WP接VCC時,則對芯片實施寫保護11.424C02器件032.

8051單片機與24C02的連接8051單片機與24C02的連接,其中P1.0作為24C02的數(shù)據(jù)線SDA,P1.1作為24C02的時鐘線SCL,兩條線均接10K的上接電阻,24C02的器件標識地址為1010,由于系統(tǒng)中只有一片24C02,所以直接將器件地址輸入端A2、A1、A0接地處理,這樣24C02在系統(tǒng)中的器件地址SLAW=0xA0,SLAR=0xA1。由于8051需對24C02進行寫操作,所以應(yīng)把WP腳接地電平,即允許寫操作。3.8051對24C02的讀寫程序讀寫程序是以前面所介紹的函數(shù)為基礎(chǔ)設(shè)計的,24C02的內(nèi)部有連續(xù)的子地址空間,對這些空間進行n個字節(jié)的連續(xù)讀/寫時,都具有地址自動加1功能。只要設(shè)定好要讀/寫的器件內(nèi)起始子地址及字節(jié)數(shù),就能完成整個操作。注意:對于24C02連續(xù)寫的字節(jié)數(shù)不應(yīng)超過頁容量16,一次連續(xù)寫所形成的總線傳送結(jié)束后(主機發(fā)出停止信號后),24C02執(zhí)行內(nèi)部擦寫過程,大約需要10ms左右,24C02不再應(yīng)答主器件的任何請求。24C02內(nèi)有一個8位的地址計數(shù)器,連續(xù)讀操作時,24C02每次輸出一個數(shù)據(jù)字節(jié)后,地址計數(shù)器自動加1,當(dāng)?shù)刂酚嫈?shù)器加到255,并輸出一個字節(jié)數(shù)據(jù)后,地址計數(shù)器將翻轉(zhuǎn)到0,并繼續(xù)輸出數(shù)據(jù)字節(jié),這樣整個存儲區(qū)域可以在一個讀操作內(nèi)全部讀完。11.424C02器件0311.424C02器件034.24C02器件的選用無論是智能儀器儀表還是單片機工業(yè)控制系統(tǒng)都要求其數(shù)據(jù)能夠安全可靠而不受干擾,特別是一些重要的設(shè)定參數(shù)(如溫度控制設(shè)定值)受到干擾后變成一個很大的數(shù)字,那么就有可能發(fā)生燒箱毀物的破壞性后果,給生產(chǎn)和經(jīng)濟帶來損失,因此必須選用可靠的24C02器件作為數(shù)據(jù)儲存單元。對于只用一片24C02器件的系統(tǒng),因為不需要分辨不同的地址,只要WP保護功能正常就可以了,這只要斷開WP與CPU連線且保持高電平,再試一下系統(tǒng)數(shù)據(jù)讀寫功能是否正常就可以了。而這一點對軟件抗干擾技術(shù)也是至關(guān)重要的。一般來說,同種牌號的24C02器件性能是一樣的,可以采用抽樣試驗決定取舍;對于有2片24C02以上的系統(tǒng),必須嚴格檢查其器件尋址功能,這可以輪流撥下其中一片24C02器件,檢查相應(yīng)的數(shù)據(jù)存取功能,若沒有交叉出錯現(xiàn)象則可以選用。11.424C02器件035.提高24C02數(shù)據(jù)安全的軟件措施(1)建議數(shù)據(jù)以十進制BCD碼方式存入24C02,這樣可以提高有效數(shù)據(jù)的冗余度,即24C02中的存儲單元其有效數(shù)據(jù)為0-9,大于9則為無效數(shù)據(jù)。這樣,在數(shù)據(jù)寫入24C02之前就可以插入校驗子程序,對預(yù)備寫入的數(shù)據(jù)進行檢查,若該RAM數(shù)據(jù)已經(jīng)受到干擾,其值大多數(shù)應(yīng)落在大于9的范圍內(nèi)(可能性百分比系數(shù)為246/256),故此當(dāng)數(shù)據(jù)大于9時就禁止執(zhí)行寫入24C02的子程序,以免錯誤數(shù)據(jù)寫入24C02,而對正常需要修改的參數(shù)無影響。(2)24C02中數(shù)據(jù)保持冗余度后,還可以對讀出數(shù)據(jù)進行檢查,若為大于9的非正常數(shù)據(jù),說明24C02中數(shù)據(jù)已經(jīng)受到干擾,此干擾值是絕對不能用的,對于特定的系統(tǒng)可以采取不同的方法,比如溫度控制系統(tǒng),如其溫控范圍為0~50℃,則數(shù)據(jù)出錯后,讀入值可能變成200℃或更高值,這是非常危險的,針對這種情況可以將設(shè)定值硬性規(guī)定為某一個安全值比如25℃。(3)對寫入24C02子程序設(shè)置軟件口令,口令符合可以執(zhí)行寫入,否則拒絕寫入。具體做法是:設(shè)置寫口令寄存器EPSW,按正常CPU執(zhí)行程序的脈絡(luò),找出所有的數(shù)據(jù)寫入24C02前的必經(jīng)之路,比如,一般下在功能鍵按下后經(jīng)過一些數(shù)據(jù)處理,最終將要保存的參數(shù)寫入24C02,這時可以在鍵掃描子程序里,當(dāng)有鍵輸入時,對寫口令寄存器EPSW置數(shù)5AH,然后在寫24C02子程序中插入檢查口令語句,判斷EPSW值若為5AH,則允許繼續(xù)執(zhí)行,否則立即返回,不許執(zhí)行寫入數(shù)據(jù)。當(dāng)正確執(zhí)行完寫入24C02子程序后需對EPSW清0,并且在主程序適當(dāng)?shù)牡胤郊由螮PSW清0指令,反復(fù)冗余執(zhí)行。這樣程序受到干擾時,EPSW多數(shù)為0,即使EPSW數(shù)受到干擾時,也很少有機會剛好等于5AH,使錯誤數(shù)據(jù)非正常寫入24C02的機會大大減少。11.424C02器件036.保護24C02數(shù)據(jù)的硬件措施抗干擾硬件連接典型電路如圖11-10所示。在某些干擾特別嚴重的場合,24C02數(shù)據(jù)還是有可能被沖掉,最徹底的方法是利用硬件來干預(yù)寫入數(shù)據(jù)過程。一般情況下,是將WP引腳與CPU引腳斷開,而與功能鍵連接起來,功能鍵沒按下時,WP保持高電平,只有功能鍵按下時,WP才是低電平,允許寫操作。當(dāng)然,這樣一來對于某些過程量需要程控存入24C02時就辦不到了,這也是利用功能鍵同步保護24C02數(shù)據(jù)的一種不方便之處。如果寫入24C02的數(shù)據(jù)跟2個按鍵有關(guān),則可以用二極管隔離,采用如圖11-11的形式。這樣兩鍵本身互不影響,而任一鍵按下都能使WP變低,使數(shù)據(jù)寫入操作有效,對于多鍵關(guān)聯(lián),依此類推多放幾個二極管隔離就可以了。11.424C02器件03【例11-1】以24C02為從器件,單片機為主器件,完成I2C總線程序設(shè)計,其中P2.6連接24C02的SCL端,P2.7連接SDA端。11.424C02器件0311.424C02器件0311.424C02器件03CONTNTS11.5實踐訓(xùn)練—I2C總線使用11.5實踐訓(xùn)練—I2C總線使用0411.5.1I2C總線應(yīng)用概述I2C(Inter-IntegratedCi

溫馨提示

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

最新文檔

評論

0/150

提交評論