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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論