單片機(jī)原理及應(yīng)用(c語言版)第2章_第1頁(yè)
已閱讀1頁(yè),還剩94頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理及應(yīng)用 (C語言版)第8章 單片機(jī)系統(tǒng)擴(kuò)展,主 編:周國(guó)運(yùn)本章制作:趙天翔中國(guó)水利水電出版社,第8章 單片機(jī)系統(tǒng)擴(kuò)展,目 錄 8.1 擴(kuò)展并行三總線 8.2 擴(kuò)展簡(jiǎn)單并行輸入/輸出口 8.3 擴(kuò)展并行數(shù)據(jù)存儲(chǔ)器 8.4 串行擴(kuò)展總線接口技術(shù),,第8章 單片機(jī)系統(tǒng)擴(kuò)展,本章主要介紹了MCS-51單片機(jī)系

2、統(tǒng)擴(kuò)展的方法。通過擴(kuò)展并行三總線來進(jìn)行并行總線接口擴(kuò)展;通過UART或I/O口模擬幾種串行通信的特點(diǎn)來進(jìn)行串行總線接口擴(kuò)展。,8.1 擴(kuò)展并行三總線,主要內(nèi)容 8.1.1 片外三總線結(jié)構(gòu) 8.1.2 MCS-51系統(tǒng)擴(kuò)展的實(shí)現(xiàn) 8.1.3 總線驅(qū)動(dòng),8.1.1 片外三總線結(jié)構(gòu),通常,微機(jī)的CPU外部都有單獨(dú)的并行地址總線、數(shù)據(jù)總線、控制總線。M

3、CS-51單片機(jī)由于引腳的限制,數(shù)據(jù)總線和地址總線是復(fù)用的。 地址需要鎖存:為了能把復(fù)用的數(shù)據(jù)總線和地址總線分離出來以便同外部的芯片正確的連接,需要在單片機(jī)的外部增加地址鎖存器,從而構(gòu)成與一般CPU相類似的三總線結(jié)構(gòu),如圖8-1所示。,,,,,,,P2,ALE,89C52,P0,PSEN,WR,RD,地址鎖存器,地址總線,數(shù)據(jù)總線,控制總線,A8~A15,A0~A7,D0~D7,8.1.1 片外三總線結(jié)構(gòu),圖8-1

4、89C52擴(kuò)展的三總線,,,,圖8-2 地址總線擴(kuò)展電路,8.1.1 片外三總線結(jié)構(gòu),地址鎖存器74HC573與單片機(jī)P0口連接,擴(kuò)展地址總線,如圖8-2所示。,,,,,,74HC573簡(jiǎn)介74HC573是有輸出三態(tài)門的電平允許8位鎖存器。引腳信號(hào)如下: OE:輸出允許端,為0時(shí)芯片有效。LE:鎖存控制端,高電平時(shí),鎖存器的數(shù)據(jù)輸出端Q的狀態(tài),與數(shù)據(jù)輸入端D相同,即鎖存器是透明的;當(dāng)LE端從高電平返回到低電

5、平時(shí)(下降沿后),輸入端的數(shù)據(jù)就被鎖存在鎖存器中,數(shù)據(jù)輸入端D的變化不再影響Q端。,8.1.1 片外三總線結(jié)構(gòu),,一、地址總線 地址總線(Address Bus,AB)用于傳送單片機(jī)送出的地址信號(hào),以便進(jìn)行存儲(chǔ)器單元和I/O端口的選擇。 地址總線是單向的,只能由單片機(jī)向外發(fā)送信息。 地址總線的數(shù)目決定了可直接訪問的存儲(chǔ)單元的數(shù)目。,8.1.1 片外三總線結(jié)構(gòu),二、數(shù)據(jù)總線 數(shù)據(jù)

6、總線(Data Bus,DB)用于單片機(jī)與存儲(chǔ)器或I/O端口之間的數(shù)據(jù)傳送。 一般數(shù)據(jù)總線的位數(shù)與CPU的字長(zhǎng)一致,MCS-51單片機(jī)的數(shù)據(jù)總線是8位的。 數(shù)據(jù)總線是雙向的,可以進(jìn)行兩個(gè)方向的數(shù)據(jù)傳送。三、控制總線 控制總線(Control Bus,CB)是單片機(jī)發(fā)出的以控制片外ROM、RAM和I/O口讀/寫操作的一組控制線。,8.1.1 片外三總線結(jié)構(gòu),8.1.2 MCS-51系統(tǒng)擴(kuò)展

7、的實(shí)現(xiàn),一、以P0口作低8位地址及8位數(shù)據(jù)的復(fù)用總線 復(fù)用,即一段時(shí)間內(nèi)作兩種或兩種以上用途。 在這里指P0口在每個(gè)CPU周期的前半個(gè)周期輸出低8位地址,由地址鎖存器鎖存,然后由地址鎖存器代替P0口輸出低8位地址。后半個(gè)周期進(jìn)行8位數(shù)據(jù)的輸入輸出。,二、以P2口作為高8位的地址總線 P0口的低8位地址加上P2的高8位地址就可以形成16位的地址總線,達(dá)到64KB的尋址能力。 實(shí)際應(yīng)用中,

8、往往不需要擴(kuò)展那么多地址,擴(kuò)展多少用多少口線,剩余的口線仍可作一般I/O口來使用。,8.1.2 MCS-51系統(tǒng)擴(kuò)展的實(shí)現(xiàn),三、控制信號(hào)線ALE:地址鎖存信號(hào),用以實(shí)現(xiàn)對(duì)低8位地址的鎖存。PSEN:片外程序存儲(chǔ)器讀選通信號(hào)。EA:程序存儲(chǔ)器選擇信號(hào)。為低電平時(shí),訪問外部程序存儲(chǔ)器;為高電平時(shí),訪問內(nèi)部程序存儲(chǔ)器。WR:片外數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)。RD:片外數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)。,,,,,,,,,8.1.2

9、 MCS-51系統(tǒng)擴(kuò)展的實(shí)現(xiàn),8.1.3 總線驅(qū)動(dòng),總線驅(qū)動(dòng)的原因:在單片機(jī)應(yīng)用系統(tǒng)中,擴(kuò)展的三總線上掛接很多負(fù)載,如存儲(chǔ)器、并行接口、A/D接口、顯示接口等,但總線接口的負(fù)載能力有限,因此常常需要通過連接總線驅(qū)動(dòng)器進(jìn)行總線驅(qū)動(dòng)。,總線驅(qū)動(dòng)器的作用:對(duì)于單片機(jī)的I/O口只相當(dāng)于增加了一個(gè)TTL負(fù)載,因此驅(qū)動(dòng)器除了對(duì)后級(jí)電路驅(qū)動(dòng)外,還能對(duì)負(fù)載的波動(dòng)變化起隔離作用。 在對(duì)TTL負(fù)載驅(qū)動(dòng)時(shí),只需考慮驅(qū)動(dòng)電流的大小。

10、 在對(duì)MOS負(fù)載驅(qū)動(dòng)時(shí),MOS負(fù)載的輸入電流很小,更多地要考慮對(duì)分布電容的電流驅(qū)動(dòng)。,8.1.3 總線驅(qū)動(dòng),總線驅(qū)動(dòng)器的選擇: 系統(tǒng)總線中地址總線是單向的,因此驅(qū)動(dòng)器可以選用單向的,如74LS244,還帶有三態(tài)控制,能實(shí)現(xiàn)總線緩沖和隔離。 數(shù)據(jù)總線是雙向的,其驅(qū)動(dòng)器也要選用雙向的,如74LS245。74LS245也是三態(tài)的,有一個(gè)方向控制端DIR。DIR=1時(shí)輸出(An→Bn),DIR=0時(shí)輸入(An←

11、Bn)。,8.1.3 總線驅(qū)動(dòng),8.2 擴(kuò)展簡(jiǎn)單并行輸入/輸出口,89C52有P0~P3四組I/O口,但是在某些特定的場(chǎng)合,可能會(huì)出現(xiàn)I/O口不夠用的情況。這時(shí)就需要通過擴(kuò)展來增加I/O口的數(shù)量以滿足使用的需要。 在很多應(yīng)用系統(tǒng)中,采用74系列TTL電路或4000系列MOS電路芯片,擴(kuò)展并行數(shù)據(jù)輸入輸出。,例1 在圖8-4中,當(dāng)P2.0=0,WR=1,RD=0時(shí),通過74HC244(擴(kuò)展輸入)讀入按鍵狀態(tài),當(dāng)P2.0=

12、0,WR=0,RD=1時(shí),通過74HC573(擴(kuò)展輸出)根據(jù)按鍵狀態(tài)驅(qū)動(dòng)發(fā)光二極管發(fā)光。 74HC244、74HC573的操作地址設(shè)為0xfeff。,,,,,8.2 擴(kuò)展簡(jiǎn)單并行輸入/輸出口,P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.789C52 WRP2.0RD,D0 Q0D1 Q1D2 Q2D3

13、Q3D4 Q4D5 Q5D6 Q6D7 Q7LE VCC,Q0 D0Q1 D1Q2 D2Q3 D3Q4 D4Q5 D5Q6 D6Q7 D7G,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

14、,,,,,,,,,+,+,,,,,,,,,,,,,74HC573,74HC244,+5V,圖8-4 簡(jiǎn)單I/O接口擴(kuò)展,,,8.2 擴(kuò)展簡(jiǎn)單并行輸入/輸出口,C語言程序清單:#include voidmain(){unsigned char data tmp1, tmp2=0;unsigned char xdata *pt1;pt1=0xfeff; //給指針賦地址值0xfeffwhile(

15、1) //循環(huán) {tmp1=*pt1;//從74HC244輸入數(shù)據(jù) if (tmp1!=tmp2)//判斷輸入改變時(shí),{ *pt1 =tmp1;//從74HC573輸出數(shù)據(jù) tmp2=tmp1;}} },匯編語言程序清單:MOV30H,#00H ;設(shè)一初值MOVDPTR,#0FEFFH;設(shè)端口地址LOOP:MOVXA,

16、@DPTR;從244讀鍵盤新值CJNEA, 30H, NEXT;與上次值比較SJMP LOOP;相等再讀鍵盤值NEXT:MOV 30H,A;保存新鍵盤值MOVX@DPTR,A;從573輸出鍵盤值SJMP LOOP;繼續(xù)讀取鍵盤值,8.2 擴(kuò)展簡(jiǎn)單并行輸入/輸出口,8.3 擴(kuò)展并行數(shù)據(jù)存儲(chǔ)器,主要內(nèi)容 8.3.1 擴(kuò)展存儲(chǔ)器概述

17、 8.3.2 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展,8.3 擴(kuò)展并行數(shù)據(jù)存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器即隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),用于存放可隨時(shí)修改的數(shù)據(jù)信息。 單片機(jī)使用的主要是靜態(tài)RAM。 MCS-51系列單片機(jī)片外數(shù)據(jù)存儲(chǔ)器的空間可達(dá)64KB,而片內(nèi)數(shù)據(jù)存儲(chǔ)器的空間只有128B或256B。如果片內(nèi)的數(shù)據(jù)存儲(chǔ)器不夠用時(shí),則需進(jìn)行數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。,8.3.1 擴(kuò)展存

18、儲(chǔ)器概述,存儲(chǔ)器擴(kuò)展的核心問題是存儲(chǔ)器的編址問題。所謂編址就是給存儲(chǔ)單元分配地址。 由于存儲(chǔ)器通常由多個(gè)芯片組成,為此存儲(chǔ)器的編址分為兩個(gè)層次: 即存儲(chǔ)器芯片的選擇和存儲(chǔ)器芯片內(nèi)部存儲(chǔ)單元的選擇。,一、地址線的譯碼 存儲(chǔ)器芯片的選擇有兩種方法:線選法和譯碼法。 1、線選法。所謂線選法,就是直接以系統(tǒng)的地址線作為存儲(chǔ)器芯片的片選信號(hào),為此只需把用到的地址線與存儲(chǔ)器芯片的片選端直接相連即可。

19、 2、譯碼法。所謂譯碼法,就是使用地址譯碼器對(duì)系統(tǒng)的片外地址進(jìn)行譯碼,以其譯碼輸出作為存儲(chǔ)器芯片的片選信號(hào)。譯碼法又分為完全譯碼和部分譯碼兩種。,8.3.1 擴(kuò)展存儲(chǔ)器概述,(1)完全譯碼。地址譯碼器使用了全部地址線,地址與存儲(chǔ)單元一一對(duì)應(yīng),也就是1個(gè)存儲(chǔ)單元只占用1個(gè)唯一的地址。(2)部分譯碼。地址譯碼器僅使用了部分地址線,地址與存儲(chǔ)單元不是一一對(duì)應(yīng),而是1個(gè)存儲(chǔ)單元占用了幾個(gè)地址。,8.3.1 擴(kuò)展存儲(chǔ)器概述,,,,,,

20、,圖8-5 地址譯碼關(guān)系圖,8.3.1 擴(kuò)展存儲(chǔ)器概述,芯片譯碼地址:在設(shè)計(jì)地址譯碼器電路時(shí),常采用地址譯碼關(guān)系圖。所謂地址譯碼關(guān)系圖,就是一種用簡(jiǎn)單的符號(hào)來表示全部地址譯碼關(guān)系的示意圖,如圖8-5所示。,二、擴(kuò)展存儲(chǔ)器所需芯片數(shù)目的確定 若所選存儲(chǔ)器芯片字長(zhǎng)與單片機(jī)字長(zhǎng)一致,則只需擴(kuò)展容量。所需芯片數(shù)目按下式確定: 芯片數(shù)目=,系統(tǒng)擴(kuò)展容量存儲(chǔ)器芯片容量,,8.3.1 擴(kuò)展存儲(chǔ)器概述,若所

21、選存儲(chǔ)器芯片字長(zhǎng)與單片機(jī)字長(zhǎng)不一致,則不僅需擴(kuò)展容量,還需字?jǐn)U展。所需芯片數(shù)目按下式確定: 芯片數(shù)目= ×,系統(tǒng)字長(zhǎng)存儲(chǔ)器芯片字長(zhǎng),系統(tǒng)擴(kuò)展容量存儲(chǔ)器芯片容量,,,三、3—8譯碼器74LS138 3—8譯碼器74LS138為一種常用的地址譯碼器芯片。其中,G1、G2A、G2B為控制端。只有當(dāng)G1為“1”,且G2A、G2B均為“0”時(shí),譯碼器才能進(jìn)行譯碼輸

22、出。否則譯碼器的8個(gè)輸出端全為高阻狀態(tài)。譯碼輸入端與輸出端之間的譯碼關(guān)系如表8-1所示。,,,,,8.3.1 擴(kuò)展存儲(chǔ)器概述,,,,,,,,,表8-1 74LS138的譯碼關(guān)系,8.3.1 擴(kuò)展存儲(chǔ)器概述,8.3.2 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展,一、常用靜態(tài)RAM芯片 常見的靜態(tài)RAM芯片有6264(8K×8位)、62256(32K×8位)、628128(128K×8位)等。二

23、、擴(kuò)展數(shù)據(jù)存儲(chǔ)器舉例 例8-2 采用6264芯片在89C52片外擴(kuò)展24KB數(shù)據(jù)存儲(chǔ)器,如圖8-8所示。,圖8-8 6264擴(kuò)展24KB數(shù)據(jù)存儲(chǔ)器,P2.0~P2.4P0ALEP2.5P2.6P2.7WERD,74HC573D QLE,,,,74LS138A Y0B Y1C Y2,,,,,,,,,,,,,,,,,,,,

24、,,,,,,,,,,A8~A12,D0~D7,A0~A7,,,8.3.2 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展,8.4 串行擴(kuò)展總線接口技術(shù),主要內(nèi)容 8.4.1 常用的串行總線接口簡(jiǎn)介 8.4.2 I2C總線 8.4.3 SPI串行外設(shè)接口總線,8.4 串行擴(kuò)展總線接口技術(shù),串行擴(kuò)展總線技術(shù)是新一代單片機(jī)技術(shù)發(fā)展的一個(gè)顯著特點(diǎn)。 相對(duì)于并行總線接口,串行總線接口有著占

25、用I/O口線少(一般3~4根),編程相對(duì)簡(jiǎn)單,易于實(shí)現(xiàn)用戶系統(tǒng)軟硬件的模塊化、標(biāo)準(zhǔn)化等優(yōu)點(diǎn)。 隨著串行總線接口技術(shù)(SPI、I2C等)和各種串行接口芯片的發(fā)展,串行總線接口技術(shù)越來越受到人們的推崇。,8.4.1 常用的串行總線接口簡(jiǎn)介,一、I2C(Inter Integrated Circuit) I2C總線是Philips公司推出的芯片間串行傳輸總線。 I2C總線是二線制,采用器件地址的硬件

26、設(shè)置方法,通過軟件尋址完全避免了器件的片選線尋址方法,從而使硬件系統(tǒng)具有簡(jiǎn)單靈活的擴(kuò)展方法。,二、SPI SPI總線是Motorola公司提出的一種同步串行外設(shè)接口。 SPI總線是三線制,可直接與多種標(biāo)準(zhǔn)外圍器件直接接口。 三、Microware Microware總線是NS公司提出的串行同步雙工通信接口。 Microware總線是三線制,由一根數(shù)據(jù)輸出(SO)線、一

27、根數(shù)據(jù)輸入(SI)線和一根時(shí)鐘(SK)線組成。,8.4.1 常用的串行總線接口簡(jiǎn)介,四、單總線(1-wire) 單總線及應(yīng)用: 1-wire總線是Dallas公司研制開發(fā)的一種協(xié)議,主要用于便攜式儀表和現(xiàn)場(chǎng)監(jiān)控系統(tǒng)。 單總線結(jié)構(gòu):是利用一根線實(shí)現(xiàn)雙向通信,由一個(gè)總線主節(jié)點(diǎn)、一個(gè)或多個(gè)從節(jié)點(diǎn)組成系統(tǒng),通過一根信號(hào)線對(duì)從芯片進(jìn)行數(shù)據(jù)的讀取。,8.4.1 常用的串行總線接口簡(jiǎn)介,五、USB(Universal

28、Serial Bus) USB總線及應(yīng)用:USB總線是Compaq、Intel、Microsoft、NEC等公司聯(lián)合制定的一種計(jì)算機(jī)串行通信協(xié)議。 USB總線的主要優(yōu)點(diǎn):比較于其他傳統(tǒng)接口的一個(gè)優(yōu)勢(shì)是即插即用的實(shí)現(xiàn),即插即用(Plug-and-Play)也稱為熱插拔(Hot Plugging),8.4.1 常用的串行總線接口簡(jiǎn)介,六、CAN(Controller Area Network)

29、CAN總線及應(yīng)用: CAN總線是德國(guó)Bosch公司最先提出的多主機(jī)局域網(wǎng)總線,是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。 CAN總線的主要優(yōu)點(diǎn):在由CAN總線構(gòu)成的單一網(wǎng)絡(luò)中,理論上可以掛接無數(shù)個(gè)節(jié)點(diǎn)。,8.4.1 常用的串行總線接口簡(jiǎn)介,8.4.2 I2C總線,一、I2C總線的特點(diǎn) I2C總線最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性。 I2C總線的特點(diǎn):其接口直接集成在組件之上,因此I2C總線占用的空間非常小,減

30、少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。 I2C總線的其它優(yōu)點(diǎn):它支持多主控(Multimastering),其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備(節(jié)點(diǎn))都可以成為主控器。,圖8-9 典型I2C總線系統(tǒng)示意圖,8.4.2 I2C總線,I2C總線的主控器:一個(gè)主控器能夠控制信號(hào)的傳輸和時(shí)鐘頻率。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控器。如圖8-9所示。,I2C總線支持多主和主從兩種工作模式多主方式:通過硬件和軟

31、件的仲裁,主控器取得總線控制權(quán)。 主從方式:從器件地址包括器件編號(hào)地址和引腳地址兩部分,器件編號(hào)地址由I2C總線委員會(huì)分配,引腳地址由外界電平的高低決定。 器件內(nèi)部子地址:當(dāng)器件內(nèi)部有連續(xù)的子地址空間時(shí),對(duì)這些空間進(jìn)行連續(xù)讀寫,子地址會(huì)自動(dòng)加1。,8.4.2 I2C總線,CPU發(fā)出的控制信號(hào):分為地址碼和控制量?jī)刹糠帧?地址碼:用來選址,即接通需要控制的電路,確定控制的種類。 控制量

32、:決定該調(diào)整的類別(如對(duì)比度、亮度等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。,8.4.2 I2C總線,二、I2C總線的時(shí)序 I2C總線的信號(hào):I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號(hào),分別是:開始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。 I2C總線 開始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。 結(jié)束信號(hào):SCL為低電平時(shí),SDA由低電平向高電

33、平跳變,結(jié)束傳送數(shù)據(jù)。 應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。,8.4.2 I2C總線,SDASCL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,開始信號(hào)允許數(shù)據(jù)變化 允許數(shù)據(jù)變化 允許數(shù)據(jù)變化 結(jié)束信號(hào),,圖8-10 I2C總線的時(shí)序,8.4.2 I2C總線,如圖8-10所示,為I2

34、C總線的一般時(shí)序。即起始信號(hào)、結(jié)束信號(hào)、允許數(shù)據(jù)線改變的條件等。,三、I2C總線的數(shù)據(jù)傳輸過程 數(shù)據(jù)傳輸時(shí),主機(jī)先發(fā)送啟動(dòng)信號(hào)和時(shí)鐘信號(hào),隨后發(fā)送尋址字節(jié)來尋址被控器件,并規(guī)定數(shù)據(jù)傳送方向。 尋址字節(jié)由7位從機(jī)地址(D7~D1)和1位方向位(D0,讀0/寫1)組成。 從機(jī)地址包括器件編號(hào)地址和引腳地址兩部分。,8.4.2 I2C總線,,,R/,,,I2C總線器件的7位從器件(機(jī))地址:,8.4.2

35、 I2C總線,從機(jī)對(duì)地址的響應(yīng):當(dāng)主機(jī)發(fā)送尋址字節(jié)時(shí),總線上所有器件都將其中的高7位地址與自己的比較,若相同,則該器件根據(jù)讀/寫位確定是從發(fā)送器還是從接收器。 對(duì)從接收器:在尋址字節(jié)之后,主控發(fā)送器通過SDA線向從接收器發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送完畢后發(fā)送終止信號(hào),以結(jié)束傳送過程。 對(duì)從發(fā)送器:在尋址字節(jié)之后,主控接收器通過SDA線接收被控發(fā)送器的發(fā)送數(shù)據(jù)。,8.4.2 I2C總線,每傳輸一位數(shù)據(jù),都有一個(gè)時(shí)鐘脈沖

36、相對(duì)應(yīng)。時(shí)鐘脈沖不必是周期性的,它的時(shí)鐘間隔可以不同。 I2C總線的備用狀態(tài)(“非忙”狀態(tài)):SDA和SCL都為“1”;只有當(dāng)總線處于“非忙”狀態(tài)時(shí),數(shù)據(jù)傳輸才能被初始化。I2C總線的關(guān)閉狀態(tài):SCL箝位在低電平。 I2C總線上傳輸?shù)臄?shù)據(jù)和地址字節(jié)均為8位,且高位在前,低位在后。,8.4.2 I2C總線,數(shù)據(jù)線SDA上的一般情況:I2C總線以開始信號(hào)為啟動(dòng)信號(hào);接著傳輸?shù)氖堑刂泛蛿?shù)據(jù)字節(jié),數(shù)據(jù)字節(jié)是

37、沒有限制的;每個(gè)字節(jié)后必須跟隨一個(gè)應(yīng)答位(0);全部數(shù)據(jù)傳輸完畢后,以結(jié)束信號(hào)結(jié)尾。 SCL的“線與”特性:任一器件的SCL為低電平時(shí),便時(shí)時(shí)鐘線SCL變低,SDA上數(shù)據(jù)就被停止傳送。,8.4.2 I2C總線,接收器的應(yīng)答:正常應(yīng)答位為0;當(dāng)接收器接收到一個(gè)字節(jié)后無法立即接收下一個(gè)字節(jié)時(shí),便向SCL線輸出低電平而箝住SCL(SCL=0),迫使SDA線處于等待狀態(tài)。被控器箝住SCL線為低電平,使主控發(fā)送器處于等待狀態(tài)

38、的情況:如圖8-11中的A處,當(dāng)接收器在A點(diǎn)接收完主控器發(fā)來的一個(gè)字節(jié)時(shí),需要處理接收中斷而無法繼續(xù)接收,則被控器便可箝住SCL線為低電平,使主控發(fā)送器處于等待狀態(tài),直到被控器處理完接收中斷后,再釋放SCL線。,8.4.2 I2C總線,圖8-11 I2C總線的數(shù)據(jù)傳送字節(jié)格式,,開始信號(hào),從地址,來自接收器響應(yīng)信號(hào),發(fā)送器等待,數(shù)據(jù),來自接收器響應(yīng)信號(hào),方向位,停止信號(hào),重復(fù)開始信號(hào),若傳送多個(gè)字節(jié)則重復(fù),SCL,S,SDA,M

39、SB,ACK,ACK,R/W,P/S,A,,8.4.2 I2C總線,關(guān)于應(yīng)答信號(hào):(1)應(yīng)答信號(hào)的發(fā)送時(shí)刻:數(shù)據(jù)傳輸時(shí),發(fā)送器每發(fā)完一個(gè)字節(jié),都要求接收方發(fā)回一個(gè)應(yīng)答信號(hào)(0)。 (2)應(yīng)答信號(hào)的過程:發(fā)送時(shí)鐘仍由主控器在SCL上產(chǎn)生。主控發(fā)送器必須在被控接收器發(fā)送應(yīng)答信號(hào)前,預(yù)先釋放對(duì)SDA線的控制(SDA=1),以便主控器對(duì)SDA線上應(yīng)答信號(hào)的檢測(cè)。,8.4.2 I2C總線,正常應(yīng)答:主控器發(fā)送時(shí),被控器接收

40、完每個(gè)字節(jié)需發(fā)回應(yīng)答信號(hào)“0”,主控器據(jù)此進(jìn)行下一字節(jié)的發(fā)送。 異常應(yīng)答:如果被控器由于某種原因無法繼續(xù)接收SDA上數(shù)據(jù)時(shí),可向SDA輸出一個(gè)非應(yīng)答信號(hào)(1),主控器據(jù)此便產(chǎn)生一個(gè)Stop來終止SDA線上的數(shù)據(jù)傳輸。 主控器接收時(shí)也應(yīng)給被控器發(fā)應(yīng)答信號(hào)。主控器接收時(shí)的結(jié)束應(yīng)答:當(dāng)主控器要結(jié)束傳輸時(shí),必須給被控器發(fā)一個(gè)非應(yīng)答信號(hào)“1”,令被控器釋放SDA線,以便主控器發(fā)送Stop信號(hào)來結(jié)束數(shù)據(jù)的傳輸,如圖

41、8-12所示。,8.4.2 I2C總線,圖8-12 I2C總線的應(yīng)答信號(hào),8.4.2 I2C總線,四、I2C的數(shù)據(jù)格式 1、主控器寫數(shù)據(jù) 主機(jī)寫數(shù)據(jù)過程:整個(gè)過程均為主機(jī)發(fā)送,從機(jī)接收,數(shù)據(jù)的方向位R/W=0。應(yīng)答位ACK由從機(jī)發(fā)送,當(dāng)主機(jī)產(chǎn)生結(jié)束信號(hào)后,數(shù)據(jù)傳輸停止。格式如下:,8.4.2 I2C總線,A/,SLA,S為開始信號(hào),P為結(jié)束信號(hào),A為應(yīng)答信號(hào), 為非應(yīng)答信號(hào),,SLA,為尋址字節(jié)(寫

42、),Data 1~Data n為被傳送的n個(gè)數(shù)據(jù)。,,為主控器發(fā)送,被控器接收。,,為被控器發(fā)送,主控器接收。,8.4.2 I2C總線,2、主控器讀數(shù)據(jù) 主機(jī)讀數(shù)據(jù)過程:尋址字節(jié)為主機(jī)發(fā)送、從機(jī)接收,方向位R/W=1,n個(gè)數(shù)據(jù)字節(jié)均為從機(jī)發(fā)送、主機(jī)接收。主機(jī)接收完全部數(shù)據(jù)后發(fā)非應(yīng)答位(1),表明讀操作結(jié)束。格式如下:,,SLA R為尋址字節(jié)讀。,8.4.2 I2C總線,3、主控器讀/寫數(shù)據(jù) 改變傳送方向的數(shù)據(jù)傳輸過

43、程:由于讀/寫方向有變化,開始信號(hào)和尋址字節(jié)都會(huì)重復(fù)一次,但讀/寫方向(R/W)相反。格式如下:,Sr為重復(fù)開始信號(hào),Data 1~Data n為主控器的讀數(shù)據(jù),DATA 1~DATA n為主控器的寫數(shù)據(jù)。,SLA,A/,8.4.2 I2C總線,三、I2C總線的應(yīng)用 帶有I2C接口的單片機(jī):Cygnal的 C8051 F0XX系列,Philips的P87LPC7XX系列,Microchip的PIC16C6XX系列等。很多

44、外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供I2C接口。 圖8-13為I2C總線外圍擴(kuò)展示意圖。,8.4.2 I2C總線,圖8-13 I2C總線外圍擴(kuò)展示意圖,MCU SDA SCL,,,LED顯示器LED驅(qū)動(dòng)控制器SDA SCL,,,,LCD顯示器LCD驅(qū)動(dòng)控制器SDA SCL,,,,鍵盤I/OSDA SCL,,,,打印機(jī)I/OSDA SCL,,,,,,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論