單片機(jī)原理及接口技術(shù)第10章-串行擴(kuò)展技術(shù)課件_第1頁
單片機(jī)原理及接口技術(shù)第10章-串行擴(kuò)展技術(shù)課件_第2頁
單片機(jī)原理及接口技術(shù)第10章-串行擴(kuò)展技術(shù)課件_第3頁
單片機(jī)原理及接口技術(shù)第10章-串行擴(kuò)展技術(shù)課件_第4頁
單片機(jī)原理及接口技術(shù)第10章-串行擴(kuò)展技術(shù)課件_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第10章單片機(jī)系統(tǒng)的串行

擴(kuò)展技術(shù)1內(nèi)容概要單片機(jī)系統(tǒng)除并行擴(kuò)展外,串行擴(kuò)展技術(shù)也已得到廣泛應(yīng)用。與并行擴(kuò)展相比,串行接口器件與單片機(jī)相連需要的I/O口線很少(僅需1~4條),極大地簡化了器件間的連接,進(jìn)而提高了可靠性;串行接口器件體積小,占用電路板的空間小,減少了電路板空間和成本。常見的串行擴(kuò)展總線接口有單總線(1-Wire)、SPI串行外設(shè)接口以及I2C(InterInterfaceCircuit)串行總線接口,本章介紹這幾種串行擴(kuò)展接口總線的工作原理及特點(diǎn)以及如何進(jìn)行系統(tǒng)串行擴(kuò)展的典型設(shè)計(jì)。

210.1單總線串行擴(kuò)展單總線也稱1-Wirebus,由美國DALLAS公司推出的外圍串行擴(kuò)展總線。它只有一條數(shù)據(jù)輸入/輸出線DQ,總線上的所有器件都掛在DQ上,電源也通過這條信號(hào)線供給,這種只使用一條信號(hào)線的串行擴(kuò)展技術(shù),稱為單總線技術(shù)。單總線系統(tǒng)中配置的各種器件,由DALLAS公司提供的專用芯片實(shí)現(xiàn)。每個(gè)芯片都有64位ROM,廠家對(duì)每一芯片都用激光燒寫編碼,其中存有16位十進(jìn)制編碼序列號(hào),它是器件的地址編號(hào),確保它掛在總線上后,可唯一地被確定。除了器件的地址編碼外,芯片內(nèi)還包含收發(fā)控制和電源存儲(chǔ)電路,如圖10-1所示。這些芯片的耗電量都很小(空閑時(shí)幾μW,工作時(shí)幾mW),工作時(shí)從總線上饋送電能到大電容中就可以工作,故一般不需另加電源。34圖10-1

單總線芯片的內(nèi)部結(jié)構(gòu)示意圖10.1.1單總線系統(tǒng)的典型應(yīng)用-DS18B20的溫度測(cè)量系統(tǒng)單總線應(yīng)用典型案例是采用單總線溫度傳感器DS18B20的溫度測(cè)量系統(tǒng)。1.單總線溫度傳感器DS18B20簡介美國DALLAS公司推出的單總線接口的數(shù)字溫度傳感器,溫度測(cè)量范圍為?55~+128℃,在-10~+85℃范圍內(nèi),測(cè)量精度可達(dá)±0.5℃。DS18B20體積小、功耗低,現(xiàn)場溫度的測(cè)量直接通過“單總線”以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。非常適合于惡劣環(huán)境的現(xiàn)場溫度測(cè)量,也可用于各種狹小空間內(nèi)設(shè)備的測(cè)溫,如環(huán)境控制、過程監(jiān)測(cè)、測(cè)溫類消費(fèi)電子產(chǎn)品以及多點(diǎn)溫度測(cè)控系統(tǒng)等。由于DS18B20可直接將溫度轉(zhuǎn)化成數(shù)字信號(hào)傳送給單片機(jī)處理,因而可省去傳統(tǒng)的信號(hào)放大、A/D轉(zhuǎn)換等外圍電路。5圖10-2所示為單片機(jī)與多個(gè)帶有單總線接口的數(shù)字溫度傳感器DS18B20芯片的分布式溫度監(jiān)測(cè)系統(tǒng),圖中多個(gè)DS18B20都掛在單片機(jī)的1根I/O口線(即DQ線)上。單片機(jī)對(duì)每個(gè)DS18B20通過總線DQ尋址。DQ為漏極開路,須加上拉電阻。DS18B20的一種封裝形式如圖10-2所示。除DS18B20外,在該數(shù)字溫度傳感器系列中還有DS1820、DS18S20、DS1822等其他型號(hào)產(chǎn)品,工作原理與特性基本相同。圖10-2

單總線構(gòu)成的分布式溫度監(jiān)測(cè)系統(tǒng)片內(nèi)有9個(gè)字節(jié)的高速暫存器RAM單元,9個(gè)字節(jié)的具體內(nèi)容如下:8第1字節(jié)和第2字節(jié)是在單片機(jī)發(fā)給DS18B20溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值,以兩字節(jié)補(bǔ)碼形式存放其中。一般情況下,用戶多使用第1字節(jié)和第2字節(jié)。單片機(jī)通過單總線可讀得該數(shù)據(jù),讀取時(shí)低位在前,高位在后。第3、4字節(jié)分別是由軟件寫入用戶報(bào)警的上下限值TH和TL。第5字節(jié)為配置寄存器,可對(duì)其更改DS18B20的測(cè)溫分辨率,高速暫存器的第6、7、8字節(jié)未用,為全1。第9字節(jié)是前面所有8個(gè)字節(jié)的CRC碼,用來保證正確通信。片內(nèi)還有1個(gè)E2PROM為TH、TL以及配置寄存器的映像。配置寄存器(第5字節(jié))各位的定義如下:9其中,最高位TM出廠時(shí)已被寫入0,用戶不能改變;低5位都為1;R1和R0用來設(shè)置分辨率。表10-1列出了R1、R0與分辨率和轉(zhuǎn)換時(shí)間的關(guān)系。用戶可通過修改R1、R0位的編碼,獲得合適的分辨率。由表10-1可看出,DS18B20的轉(zhuǎn)換時(shí)間與分辨率有關(guān)。當(dāng)設(shè)定分辨率為9位時(shí),轉(zhuǎn)換時(shí)間為93.75ms;……;當(dāng)設(shè)定分辨率為12位時(shí),轉(zhuǎn)換時(shí)間為750ms。

表10-2列出了DS18B20溫度轉(zhuǎn)換后所得到的16位轉(zhuǎn)換結(jié)果的典型值。10下面介紹溫度轉(zhuǎn)換的計(jì)算方法。當(dāng)DS18B20采集的溫度為+125℃時(shí),輸出為07D0H,則:實(shí)際溫度=(07D0H)/16=(0×163+7×162+13×161+0×160)/16=125℃當(dāng)DS18B20采集的溫度為-55℃時(shí),輸出為FC90H,由于是補(bǔ)碼,則先將11位數(shù)據(jù)取反加1得0370H,注意符號(hào)位不變,也不參加運(yùn)算,則:實(shí)際溫度=(0370H)/16=(0×163+3×162+7×161+0×160)/16=55℃注意,負(fù)號(hào)則需要對(duì)采集的溫度的結(jié)果數(shù)據(jù)進(jìn)行判斷后,再予以顯示。2.DS18B20的工作時(shí)序DS18B20對(duì)工作時(shí)序要求嚴(yán)格,延時(shí)時(shí)間需準(zhǔn)確,否則容易出錯(cuò)。工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序。11(1)初始化時(shí)序,單片機(jī)將數(shù)據(jù)線DQ電平拉低480~960μs后釋放,等待15~60μs,單總線器件即可輸出一持續(xù)60~240μs的低電平,單片機(jī)收到此應(yīng)答后即可進(jìn)行操作。(2)寫時(shí)序,當(dāng)單片機(jī)將數(shù)據(jù)線DQ電平從高拉到低時(shí),產(chǎn)生寫時(shí)序,有寫“0”和寫“1”兩種時(shí)序。寫時(shí)序開始后,DS18B20在15~60μs期間從數(shù)據(jù)線上采樣。如果采樣到低電平,則向DS18B20寫的是“0”;如果采樣到高電平,則向DS18B20寫的是“1”。這兩個(gè)獨(dú)立的時(shí)序間至少需要拉高總線電平1μs的時(shí)間。(3)讀時(shí)序,當(dāng)單片機(jī)從DS18B20讀取數(shù)據(jù)時(shí),產(chǎn)生讀時(shí)序。此時(shí)單片機(jī)將數(shù)據(jù)線DQ的電平從高拉到低使讀時(shí)序被初始化。如果在此后的15μs內(nèi),單片機(jī)在數(shù)據(jù)線上

12采樣到低電平,則從DS18B20讀的是“0”;如果在此后的15μs內(nèi),單片機(jī)在數(shù)據(jù)線上采樣到高電平,則從DS18B20讀的是“1”。3.DS18B20的命令DS18B20片內(nèi)都有唯一的64位光刻ROM編碼,出廠時(shí)已刻好。它是DS18B20的地址序列碼,目的是使每個(gè)DS18B20的地址都不相同,這樣就可實(shí)現(xiàn)在一根總線上掛接多個(gè)DS18B20的目的。64位光刻ROM的各位定義如下:13單片機(jī)寫入DS18B20的所有命令均為8位長,對(duì)ROM操作的命令見表10-3。14下面介紹表10-3中命令的用法。當(dāng)主機(jī)需要對(duì)多個(gè)單總線上的某一DS18B20進(jìn)行操作時(shí),首先應(yīng)將主機(jī)逐個(gè)與DS18B20掛接,讀出其序列號(hào)(命令代碼為33H);然后再將所有的DS18B20掛接到總線上,單片機(jī)發(fā)出匹配ROM命令(55H),緊接著主機(jī)提供的64位序列號(hào)之后的操作就是針對(duì)該DS18B20的。

如果主機(jī)只對(duì)一個(gè)DS18B20進(jìn)行操作,就不需要讀取ROM編碼以及匹配ROM編碼,只要使用跳過讀ROM序列號(hào)(CCH)命令,就可按表10-4執(zhí)行如下溫度轉(zhuǎn)換和讀取命令。15

10.1.2單總線DS18B20溫度測(cè)量系統(tǒng)的設(shè)計(jì)

【例10-1】利用DS18B20和LED數(shù)碼管實(shí)現(xiàn)單總線溫度測(cè)量系統(tǒng),原理仿真電路如圖10-3所示。DS18B20的測(cè)量范圍是?55~128℃。本例由于只接有兩只數(shù)碼管,所以顯示的數(shù)值為00~99。讀者通過本例應(yīng)掌握DS18B20的特性以及單片機(jī)I/O實(shí)現(xiàn)單總線協(xié)議的方法。在Proteus環(huán)境下進(jìn)行虛擬仿真時(shí),用手動(dòng)調(diào)整DS18B20的溫度值,即用鼠標(biāo)單擊DS18B20圖標(biāo)上的“↑”或“↓”來改變溫度,注意手動(dòng)調(diào)節(jié)溫度的同時(shí),LED數(shù)碼管上會(huì)顯示出與DS18B20窗口相同的2位溫度數(shù)值,表示測(cè)量結(jié)果正確。16圖10-3

單總線DS18B20溫度測(cè)量與顯示系統(tǒng)圖10-374LS47為BCD-7段譯碼器/驅(qū)動(dòng)器,用于將單片機(jī)P0口輸出的欲顯示的BCD碼轉(zhuǎn)化成相應(yīng)的數(shù)字顯示的段碼,并直接驅(qū)動(dòng)LED數(shù)碼管顯示。電路中的兩個(gè)三極管用于兩個(gè)數(shù)碼管的位控端的選通和驅(qū)動(dòng)。參考程序如下。

181920212210.2SPI總線串行擴(kuò)展SPI(SerialPeriperalInterface,串行外設(shè)接口)是Motorola公司推出的一種同步串行外設(shè)接口,允許單片機(jī)與多廠家的帶有標(biāo)準(zhǔn)SPI接口的外圍器件直接連接。所謂同步,就是串行口每發(fā)送、接收一位數(shù)據(jù)都伴隨有一個(gè)同步時(shí)鐘脈沖來控制。SPI外圍串行擴(kuò)展結(jié)構(gòu)如圖10-4所示。SPI使用4條線:串行時(shí)鐘SCK,主器件輸入/從器件輸出數(shù)據(jù)線MISO,主器件輸出/從器件輸入數(shù)據(jù)線MOSI和從器件選擇線CS*。27圖10-4SPI外圍串行擴(kuò)展結(jié)構(gòu)圖典型的SPI系統(tǒng)是單主器件系統(tǒng),從器件通常是外圍器件,如存儲(chǔ)器、I/O接口、A/D、D/A、鍵盤、日歷/時(shí)鐘和顯示驅(qū)動(dòng)等。單片機(jī)使用SPI擴(kuò)展多個(gè)外圍器件時(shí),SPI無法通過地址線譯碼選擇,故外圍器件都有片選端。在擴(kuò)展單個(gè)SPI器件時(shí),外圍器件的片選端可以接地或通過I/O口控制;在擴(kuò)展多個(gè)SPI器件時(shí),單片機(jī)應(yīng)分別通過I/O口線來分時(shí)選通外圍器件。在SPI串行擴(kuò)展系統(tǒng)中,如果某一從器件只作輸入(如鍵盤)或只作輸出(如顯示器)時(shí),可省去一條數(shù)據(jù)輸出(MISO)線或一條數(shù)據(jù)輸入(MOSI)線,從而構(gòu)成雙線系統(tǒng)(接地)。SPI系統(tǒng)中單片機(jī)對(duì)從器件的選通需控制其CS*端,由于省去了地址字節(jié),數(shù)據(jù)傳送軟件十分簡單。但在擴(kuò)展器件較多時(shí),需要控制較多的從器件端,連線較多。29在SPI串行擴(kuò)展系統(tǒng)中,作為主器件的單片機(jī)在啟動(dòng)一次傳送時(shí),便產(chǎn)生8個(gè)時(shí)鐘,傳送給外圍器件作為同步時(shí)鐘,控制數(shù)據(jù)的輸入和輸出。數(shù)據(jù)的傳送格式是高位(MSB)在前,低位(LSB)在后,如圖10-5所示。數(shù)據(jù)線上輸出數(shù)據(jù)的變化以及輸入數(shù)據(jù)時(shí)的采樣,都取決于SCK。但對(duì)于不同的外圍芯片,有的可能是SCK的上升沿起作用,有的可能是SCK的下降沿起作用。SPI有較高的數(shù)據(jù)傳輸速度,最高可達(dá)1.05Mbit/s。30圖10-5SPI數(shù)據(jù)傳送格式目前世界各大公司為用戶提供了一系列具有SPI接口的單片機(jī)和外圍接口芯片,例如Motorola公司存儲(chǔ)器MC2814、顯示驅(qū)動(dòng)器MC14499和MC14489等各種芯片;美國TI公司的8位串行A/D轉(zhuǎn)換器TLC549、10位串行A/D轉(zhuǎn)換器TLC1549、12位串行A/D轉(zhuǎn)換器TLC2543等。SPI外圍串行擴(kuò)展系統(tǒng)的從器件要具有SPI接口。主器件是單片機(jī)。AT89S51單片機(jī)不帶有SPI接口,可采用軟件與I/O口結(jié)合來模擬SPI的接口時(shí)序。在SPI總線系統(tǒng)擴(kuò)展的應(yīng)用設(shè)計(jì)中,擴(kuò)展串行D/A轉(zhuǎn)換器和串行A/D轉(zhuǎn)換器應(yīng)用較多,AT89S51單片機(jī)與帶有SPI串行接口的12位A/D轉(zhuǎn)換器TLC2543的擴(kuò)展設(shè)計(jì)案例將在11.7節(jié)介紹。3110.3I2C總線的串行擴(kuò)展I2C(InterInterfaceCircuit)全稱為芯片間總線,是應(yīng)用廣泛的芯片間串行擴(kuò)展總線。目前世界上采用的I2C總線有兩個(gè)規(guī)范,分別由荷蘭飛利浦公司和日本索尼公司提出,現(xiàn)在多采用飛利浦公司的I2C總線技術(shù)規(guī)范,它已成為電子行業(yè)認(rèn)可的總線標(biāo)準(zhǔn)。采用I2C技術(shù)的單片機(jī)以及外圍器件種類很多,目前已廣泛用于各類電子產(chǎn)品、家用電器及通信設(shè)備中。10.3.1I2C串行總線系統(tǒng)的基本結(jié)構(gòu)I2C串行總線只有兩條信號(hào)線,一條是數(shù)據(jù)線SDA,另一條是時(shí)鐘線SCL。SDA和SCL是雙向的,I2C總線上各器件的數(shù)據(jù)線都接到SDA線上,各器件的時(shí)鐘線均接到SCL線上。I2C總線系統(tǒng)的基本結(jié)構(gòu)如圖10-6所示。3233圖10-6I2C串行總線系統(tǒng)的基本結(jié)構(gòu)帶有I2C總線接口的主器件可直接與具有I2C總線接口的各種從器件(如存儲(chǔ)器、I/O芯片、A/D或D/A轉(zhuǎn)換器、鍵盤、顯示器、日歷/時(shí)鐘芯片)連接。由于I2C總線采用純軟件的尋址方法,無需片選線的連接,這樣就大大簡化了總線數(shù)量。I2C串行總線的運(yùn)行由主器件控制。主器件是指啟動(dòng)數(shù)據(jù)的發(fā)送(發(fā)出起始信號(hào))、發(fā)出時(shí)鐘信號(hào)、傳送結(jié)束時(shí)發(fā)出終止信號(hào)的器件,通常由單片機(jī)來擔(dān)當(dāng)。從器件可以是存儲(chǔ)器、LED或LCD驅(qū)動(dòng)器、A/D或D/A轉(zhuǎn)換器、時(shí)鐘/日歷器件等,從器件必須帶有I2C串行總線接口。當(dāng)I2C總線空閑時(shí),SDA和SCL兩條線均為高電平。由于連接到總線上器件的輸出級(jí)必須是漏級(jí)或集電極開路的,只要有一個(gè)器件任意時(shí)刻輸出低電平,都將使總線上的信號(hào)變低,即各器件的SDA及SCL都是“線與”的關(guān)系。由于各器件輸出端為漏級(jí)開路,故必須通過上拉電阻接正電源(圖10-6中的兩個(gè)電阻),以保證SDA和SCL在空閑時(shí)被上拉為高電平。

34SCL線上的時(shí)鐘信號(hào)對(duì)SDA線上的各器件間的數(shù)據(jù)傳輸起同步控制作用。SDA線上的數(shù)據(jù)起始、終止及數(shù)據(jù)的有效性均要根據(jù)SCL線上的時(shí)鐘信號(hào)來判斷。在標(biāo)準(zhǔn)的I2C普通模式下,數(shù)據(jù)的傳輸速率為100kbit/s,高速模式下可達(dá)400kbit/s。總線上擴(kuò)展的器件數(shù)量不是由電流負(fù)載決定的,而是由電容負(fù)載確定的。I2C總線上的每個(gè)器件的接口處都有一定的等效電容,器件越多,電容值就越大,就會(huì)造成信號(hào)傳輸?shù)难舆t??偩€上允許的器件數(shù)以器件的電容量不超過400pF(通過驅(qū)動(dòng)擴(kuò)展可達(dá)4000pF)為宜,據(jù)此可計(jì)算出總線長度及連接器件的數(shù)量。每個(gè)連到I2C總線上的器件都有一個(gè)唯一的地址,擴(kuò)展器件數(shù)目的多少也要受器件地址數(shù)目的限制。35I2C總線應(yīng)用系統(tǒng)允許多主器件,但是在實(shí)際應(yīng)用中,經(jīng)常遇到的是以單一單片機(jī)為主器件,其他外圍接口器件為從器件的情況。10.3.2I2C總線的數(shù)據(jù)傳送規(guī)定1.?dāng)?shù)據(jù)位的有效性規(guī)定I2C總線在進(jìn)行數(shù)據(jù)傳送時(shí),每一數(shù)據(jù)位的傳送都與時(shí)鐘脈沖相對(duì)應(yīng)。時(shí)鐘脈沖為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,在I2C總線上,只有在時(shí)鐘線SCL為低電平期間,數(shù)據(jù)線SDA上的電平狀態(tài)才允許變化,如圖10-7所示。36圖10-7

數(shù)據(jù)位的有效性規(guī)定2.起始信號(hào)和終止信號(hào)根據(jù)I2C總線協(xié)議,總線上數(shù)據(jù)信號(hào)的傳送由起始信號(hào)(S)開始、由終止信號(hào)(P)結(jié)束。起始信號(hào)和終止信號(hào)都由主器件發(fā)出,在起始信號(hào)產(chǎn)生后,總線就處于占用狀態(tài);在終止信號(hào)產(chǎn)生后,總線就處于空閑狀態(tài)。下面結(jié)合圖10-8介紹有關(guān)起始信號(hào)和終止信號(hào)的規(guī)定。38圖10-8

起始信號(hào)和終止信號(hào)(1)起始信號(hào)S。在SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào),只有在起始信號(hào)以后,其他命令才有效。(2)終止信號(hào)P。在SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。隨著終止信號(hào)的出現(xiàn),所有外部操作都結(jié)束。3.I2C總線上數(shù)據(jù)傳送的應(yīng)答I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),首先要由主器件對(duì)從器件進(jìn)行尋址,發(fā)出尋址字節(jié),而傳送的數(shù)據(jù)字節(jié)數(shù)沒有限制,但是每字節(jié)必須為8位。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),如圖10-9所示。I2C總線在傳送每1字節(jié)數(shù)據(jù)后都必須有接收數(shù)據(jù)方發(fā)出的應(yīng)答信號(hào)A,應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn),與應(yīng)答信號(hào)對(duì)應(yīng)的時(shí)鐘信號(hào)由主器件產(chǎn)生,這時(shí)發(fā)送方必須在這一時(shí)鐘位上使SDA線處于高電平狀態(tài),以便接收方在這一位上送出低電平的應(yīng)答信號(hào)A。圖10-9I2C總線上的應(yīng)答信號(hào)由于某種原因接收方不對(duì)主器件尋址信號(hào)應(yīng)答時(shí),例如接收方正在進(jìn)行其他處理而無法接收總線上的數(shù)據(jù)時(shí),必須釋放總線,將數(shù)據(jù)線SDA置為高電平,而由主器件產(chǎn)生一個(gè)終止信號(hào)以結(jié)束總線的數(shù)據(jù)傳送。當(dāng)主器件接收來自從器件的數(shù)據(jù)時(shí),接收的最后一個(gè)數(shù)據(jù)字節(jié)后,必須給從器件發(fā)送一個(gè)非應(yīng)答信號(hào)(),使從機(jī)釋放數(shù)據(jù)總線,以便主器件發(fā)送一個(gè)終止信號(hào),從而結(jié)束數(shù)據(jù)的傳送。4.尋址字節(jié)上面已經(jīng)介紹,I2C總線系統(tǒng)中主器件完成與從器件的數(shù)據(jù)傳輸(讀或?qū)懀紫纫芍髌骷?duì)從器件尋址,并確定數(shù)據(jù)的傳輸方向(讀或?qū)懀@是由主器件發(fā)出的尋址字節(jié)來控制的。尋址字節(jié)格式如下:41尋址字節(jié)包含了7位從器件地址和1位數(shù)據(jù)傳輸方向(讀或?qū)懀┛刂莆弧?位從器件地址為“DA3、DA2、DA1、DA0”和“A2、A1、A0”,其中“DA3、DA2、DA1、DA0”為器件固有的類型號(hào)編碼,出廠時(shí)就已經(jīng)給定?!癆2、A1、A0”為引腳地址,由器件引腳A2、A1、A0在電路中接高電平或接地決定(見后面的圖10-11)。尋址字節(jié)的最低位為數(shù)據(jù)方向位(R/),規(guī)定了總線上的主器件(單片機(jī))與從器件的數(shù)據(jù)傳送方向。R/=1,表示主器件接收(讀)。R/=0,表示主器件發(fā)送(寫)。5.I2C總線上的數(shù)據(jù)幀格式I2C總線上傳送的信號(hào)即包括數(shù)據(jù)信號(hào),也包括地址信號(hào)。I2C總線規(guī)定,在起始信號(hào)后必須傳送一個(gè)尋址字節(jié),即7位從器件的地址,1位數(shù)據(jù)傳送的方向位(R/),用“0”表示主器件發(fā)送數(shù)據(jù)(),“1”表示主器件接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主器件產(chǎn)生的終止信號(hào)結(jié)束。但是,若主器件希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從器件發(fā)尋址字節(jié)。因此,在總線一次數(shù)據(jù)傳送過程中,通常有以下幾種組合方式:(1)主器件向從器件發(fā)送n字節(jié)數(shù)據(jù)的寫操作,數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變,數(shù)據(jù)傳送的格式如下:44其中:字節(jié)1~字節(jié)n為主機(jī)寫入從器件的n字節(jié)的數(shù)據(jù)。格式中陰影部分表示主器件向從器件發(fā)送數(shù)據(jù),無陰影部分表示從器件向主器件發(fā)送,以下同。上述格式中的尋址字節(jié)中的7位為“從器件地址”,緊接其后的“1”為讀,“0”為寫。(2)主器件接收來自從器件的n字節(jié)的讀操作。除第1個(gè)尋址字節(jié)由主器件發(fā)出,n字節(jié)都由從器件發(fā)送,主器件接收,數(shù)據(jù)傳送的格式如下:其中:字節(jié)1~字節(jié)n為從器件被讀出的n字節(jié)數(shù)據(jù)。主器件發(fā)送終止信號(hào)前應(yīng)發(fā)送非應(yīng)答信號(hào),向從器件表明讀操作要結(jié)束。

(3)主器件的讀、寫操作。在一次數(shù)據(jù)傳送過程中,主器件先發(fā)送1字節(jié)數(shù)據(jù),然后再接收1字節(jié)數(shù)據(jù),此時(shí)起始信號(hào)和從器件地址都被重新產(chǎn)生一次,但兩次讀寫的方向位正好相反。數(shù)據(jù)傳送的格式如下:45格式中的“Sr”表示重新產(chǎn)生的起始信號(hào),“從器件地址r”表示重新產(chǎn)生的從器件地址。由上可見,無論哪種方式,起始信號(hào)、終止信號(hào)和從器件地址(尋址字節(jié)中的高7位)均由主器件發(fā)送,數(shù)據(jù)字節(jié)的傳送方向則由主器件發(fā)出的尋址字節(jié)的最低位規(guī)定,每個(gè)字節(jié)的傳送都必須有應(yīng)答位(A或)相隨。6.?dāng)?shù)據(jù)傳送的時(shí)序I2C總線上每傳送一位數(shù)據(jù)都與一個(gè)時(shí)鐘脈沖相對(duì)應(yīng),傳送的每一幀數(shù)據(jù)均為一字節(jié)。但啟動(dòng)I2C總線后傳送的字節(jié)數(shù)沒有限制,只要求每傳送一個(gè)字節(jié)后,對(duì)方回答一個(gè)應(yīng)答位。在時(shí)鐘線為高電平期間,數(shù)據(jù)線的狀態(tài)就是要傳送的數(shù)據(jù)。數(shù)據(jù)線上數(shù)據(jù)的改變必須在時(shí)鐘線為低電平期間完成。在數(shù)據(jù)傳輸期間,只要時(shí)鐘線為高電平,數(shù)據(jù)線都必須穩(wěn)定,否則數(shù)據(jù)線上的任何變化都當(dāng)作起始或終止信號(hào)。I2C總線數(shù)據(jù)傳送必須遵循的數(shù)據(jù)傳送格式見圖10-10。圖10-10所示為一次完整的數(shù)據(jù)傳送應(yīng)答時(shí)序。根據(jù)總線規(guī)范,起始信號(hào)表明一次數(shù)據(jù)傳送的開始,其后為尋址字節(jié)。在尋址字節(jié)后是按指定讀、寫的數(shù)據(jù)字節(jié)與應(yīng)答位。在數(shù)據(jù)傳送完成后主器件都必須發(fā)送終止信號(hào)。在起始與終止信號(hào)之間傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)由主器件(單片機(jī))決定,沒有字節(jié)數(shù)限制。46圖10-10I2C總線一次完整的數(shù)據(jù)傳送應(yīng)答時(shí)序10.3.3AT89S51的I2C總線系統(tǒng)擴(kuò)展目前,許多公司都推出帶有I2C總線接口的單片機(jī)及各種外圍擴(kuò)展器件,常見的有ATMEL公司的AT24Cxx系列存儲(chǔ)器、PHILIPS公司的PCF8553(時(shí)鐘/日歷且?guī)в?56×8RAM)和PCF8570(256×8RAM)、MAXIM公司的MAX117/118(A/D轉(zhuǎn)換器)和MAX517/518/519(D/A轉(zhuǎn)換器)等。主器件通常由帶有I2C總線接口的單片機(jī)來擔(dān)當(dāng)。從器件必須帶有I2C總線接口。AT89S51單片機(jī)沒有I2C接口,可利用并行I/O口線結(jié)合軟件來模擬I2C總線時(shí)序。因此,在許多的應(yīng)用中,都將I2C總線的模擬傳送作為常規(guī)的設(shè)計(jì)方法。圖10-11所示為AT89S51單片機(jī)與具有I2C總線器件的擴(kuò)展接口電路。圖中,AT24C02為E2PROM芯片,PCF8570為靜態(tài)256×8RAM,48圖10-11AT89S51單片機(jī)擴(kuò)展I2C總線器件的接口電路PCF8574為8位I/O接口,SAA1064為4位LED驅(qū)動(dòng)器。雖然各種器件的原理和功能有很大的差異,但它們與AT89S51單片機(jī)的連接是相同的。10.3.4I2C總線數(shù)據(jù)傳送的模擬使用I2C總線進(jìn)行單片機(jī)系統(tǒng)擴(kuò)展時(shí),多為單主器件結(jié)構(gòu),這樣總線數(shù)據(jù)的傳送控制比較簡單,沒有總線的競爭與同步,只存在單片機(jī)對(duì)I2C總線上各從器件的讀、寫操作。由于AT89S51單片機(jī)沒有I2C接口,通常采用I/O口線結(jié)合軟件來實(shí)現(xiàn)I2C總線的數(shù)據(jù)傳送的信號(hào)模擬。1.典型信號(hào)模擬為了保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)I2C總線的數(shù)據(jù)傳送有嚴(yán)格的時(shí)序要求。I2C總線的起始信號(hào)、終止信號(hào)、應(yīng)答/數(shù)據(jù)“0”及非應(yīng)答/數(shù)據(jù)“1”的模擬時(shí)序如圖10-12~圖10-15所示。50對(duì)于發(fā)送應(yīng)答位、非應(yīng)答位來說,與發(fā)送數(shù)據(jù)“0”和“1”的信號(hào)定時(shí)要求完全相同。只需要滿足在時(shí)鐘線SCL高電平大于4μs期間,SDA線上有確定的電平狀態(tài)即可。2.典型信號(hào)及字節(jié)收發(fā)的模擬子程序設(shè)主器件采用AT89S51單片機(jī),晶振頻率為12MHz(即機(jī)器周期為1μs),對(duì)常用的幾個(gè)典型信號(hào)的波形模擬如下。(1)起始信號(hào)S。對(duì)于一個(gè)新的起始信號(hào),要求起始前總線的空閑時(shí)間大于4.7μs,而對(duì)于一個(gè)重復(fù)的起始信號(hào),要求建立時(shí)間也須大于4.7μs。圖10-12所示的起始信號(hào)的時(shí)序波形在SCL高電平期間SDA發(fā)生負(fù)跳變,該時(shí)序波形適用于數(shù)據(jù)模擬傳送中任何情況下的起始操作。起始信號(hào)到第1個(gè)時(shí)鐘脈沖的時(shí)間間隔應(yīng)大于4.0μs。52圖10-12

起始信號(hào)S的模擬時(shí)序產(chǎn)生圖10-12所示的起始信號(hào)S的子程序如下:53上述的延時(shí)4.7μs和延時(shí)4μs的子程序分別如下:(2)終止信號(hào)P。對(duì)于終止信號(hào),要保證有大于4.7μs的信號(hào)建立時(shí)間。終止信號(hào)結(jié)束時(shí),要釋放總線,使SDA、SCL維持在高電平,在大于4.7μs后才可以進(jìn)行第1次起始操作。在單主器件系統(tǒng)中,為防止非正常傳送,終止信號(hào)后SCL可以設(shè)置在低電平。在SCL高電平期間SDA發(fā)生正跳變。終止信號(hào)P的時(shí)序波形如圖10-13所示。54圖10-13

終止信號(hào)P的模擬時(shí)序產(chǎn)生圖10-13所示的終止信號(hào)P的子程序如下:

(3)發(fā)送應(yīng)答位/數(shù)據(jù)“0”。在SDA低電平期間SCL發(fā)生一個(gè)正脈沖,時(shí)序波形如圖10-14所示。55圖10-14

應(yīng)答位/數(shù)據(jù)“0”的模擬時(shí)序產(chǎn)生圖10-14所示的發(fā)送應(yīng)答位/數(shù)據(jù)“0”的子程序如下:(4)發(fā)送非應(yīng)答位/數(shù)據(jù)“1”。在SDA高電平期間SCL發(fā)生一個(gè)正脈沖,時(shí)序波形如圖10-15所示。56圖10-15非應(yīng)答位/數(shù)據(jù)“1”的模擬時(shí)序產(chǎn)生圖10-15所示的發(fā)送非應(yīng)答位/數(shù)據(jù)“1”的子程序如下:10.3.5利用I2C總線擴(kuò)展E2PROMAT24C02的IC卡設(shè)計(jì)IC卡是由通用存儲(chǔ)器芯片封裝而成,由于其結(jié)構(gòu)和功能簡單,成本低、使用方便,已得到廣泛應(yīng)用。目前用于IC卡的通用存儲(chǔ)器芯片多為E2PROM,且采用I2C總線接口,典型器件為ATMEL公司的I2C接口的AT24Cxx系列。該系列具有AT24C01/02/04/08/16等型號(hào),它們的封裝形式、引腳功能及內(nèi)部結(jié)構(gòu)類似,只是容量不同,分別為128B/256B/512B/1KB/2KB。下面以AT24C02為例,介紹單片機(jī)如何通過I2C總線對(duì)AT24C02/進(jìn)行讀寫。1.AT24C02芯片簡介(1)封裝與引腳AT24C02的封裝形式有雙列直插(DIP)8腳式和貼片8腳式兩種,無57論何種封裝,其引腳功能都是一樣的。AT24C02的DIP形式引腳如圖10-16所示。58圖10-16AT24C02的DIP引腳AT24C02的引腳功能見表10-5。59(2)存儲(chǔ)單元的尋址AT24C02的存儲(chǔ)容量為256B,分為32頁,每頁8B。對(duì)片內(nèi)單元訪問操作,先發(fā)尋址字節(jié)對(duì)芯片尋址,然后再進(jìn)行片內(nèi)子地址尋址。①芯片尋址。AT24C02芯片地址固定為1010,它是I2C總線器件的特征編碼,其尋址字節(jié)的格式為1010A2A1A0R/。A2A1A0引腳接高、低電平后得到確定的3位編碼,與1010形成7位編碼,即為該器件的地址碼。由于A2A1A0共有8種組合,故系統(tǒng)最多可外接8片AT24C02,R/是對(duì)芯片的讀/寫控制位。②片內(nèi)子地址尋址。在確定了AT24C02芯片的7位地址碼后,片內(nèi)的存儲(chǔ)空間可再用1字節(jié)的地址碼進(jìn)行尋址,尋址范圍為00H~FFH,可對(duì)片內(nèi)的256個(gè)單元進(jìn)行讀/寫操作。(3)寫操作AT24C02有兩種寫入方式,即字節(jié)寫入方式與頁寫入方式。60①字節(jié)寫入方式。主器件(單片機(jī))先發(fā)送啟動(dòng)信號(hào)和1字節(jié)的尋址字節(jié),從器件AT24C02發(fā)出應(yīng)答信號(hào)后,單片機(jī)再發(fā)送1字節(jié)的存儲(chǔ)單元子地址(AT24C02芯片內(nèi)部單元的地址碼),單片機(jī)收到AT24C02應(yīng)答后,再發(fā)送8位數(shù)據(jù)和1位終止信號(hào)。②頁寫入方式。單片機(jī)先發(fā)送啟動(dòng)信號(hào)和1字節(jié)的尋址字節(jié),再發(fā)送1字節(jié)的存儲(chǔ)器起始單元地址,上述幾個(gè)字節(jié)都得到AT24C02的應(yīng)答后,就可以發(fā)送最多1頁的數(shù)據(jù),并順序存放在已指定的起始地址開始的相繼單元中,最后以終

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論