《單片機(jī)應(yīng)用技術(shù)》第9章.ppt
《《單片機(jī)應(yīng)用技術(shù)》第9章.ppt》由會員分享,可在線閱讀,更多相關(guān)《《單片機(jī)應(yīng)用技術(shù)》第9章.ppt(66頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第9章 串行擴(kuò)展技術(shù),教學(xué)目的,了解串行擴(kuò)展的分類和特點。 了解Microware、1-wire、USB和CAN總線。 掌握I2C總線的原理。 掌握SPI總線的原理。,學(xué)習(xí)重點和難點,I2C總線的軟件模擬。 SPI總線的軟件模擬。,第9章 串行擴(kuò)展技術(shù),9.1 串行擴(kuò)展概述 9.2 UART串行擴(kuò)展接口 9.3 I2C串行擴(kuò)展總線 9.4 SPI串行擴(kuò)展接口 本章小結(jié) 習(xí)題,9.1 串行擴(kuò)展概述,9.1.1 串行擴(kuò)展的種類 9.1.2 串行擴(kuò)展的特點,,9.1.1 串行擴(kuò)展的種類,新一代單片機(jī)技術(shù)的顯著特點之一就是串行擴(kuò)展總線和接口的推出。常用的串行擴(kuò)展總線和接口有I2C總線、SPI總線、Mi
2、croware總線、1-wire總線和CAN總線等。 (1)UART串行擴(kuò)展接口 (Universal Asynchronous Receiver/Transmitter) UART通用異步收發(fā)器,既能同步又能異步通信的硬件電路稱為UART。UART是用于控制計算機(jī)與串行設(shè)備的芯片,它提供了RS232C數(shù)據(jù)終端設(shè)備接口,這樣計算機(jī)就可以和調(diào)制解調(diào)器或其它使用RS232C接口的串行設(shè)備通信了。,9.1.1 串行擴(kuò)展的種類,(2)I2C(Inter Integrated Circuit)串行擴(kuò)展總線 I2C總線是Philip公司推出的芯片間串行傳輸總線。它用兩根線實現(xiàn)了完善的全雙工同步數(shù)據(jù)傳
3、送,可以極為方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。 (3)SPI(Serial Peripheral Interface) 串行擴(kuò)展接口 SPI總線是Motorola公司提出的一種同步串行外設(shè)接口。允許MCU與各種外圍設(shè)備以同步串行方式進(jìn)行通信。其外圍設(shè)備種類繁多,從最簡單的TTL移位寄存器到復(fù)雜的LCD顯示驅(qū)動器、網(wǎng)絡(luò)控制器等,可謂應(yīng)有盡有。,9.1.1 串行擴(kuò)展的種類,(4)Microware串行擴(kuò)展接口 Microware總線是NS公司提出的串行同步雙工通信接口,用于8位COP800系列單片機(jī)和16位HPC系列單片機(jī)。 (5)單總線(1-wire)串行擴(kuò)展總線 1-wire總線是D
4、allas公司研制開發(fā)的一種協(xié)議,用于便攜式儀表和現(xiàn)場監(jiān)控系統(tǒng)。 (6)USB(Universal Serial BUS)串行擴(kuò)展總線 USB總線是Compaq、Intel、Microsoft、NEC等公司聯(lián)合制定的一種計算機(jī)串行通信協(xié)議。,9.1.1 串行擴(kuò)展的種類,(7)CAN(Controller Area Network)串行擴(kuò)展總線 CAN總線是德國Bosch公司最先提出的多主機(jī)局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。最初,CAN被設(shè)計作為汽車環(huán)境中的微控制器通信,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)絡(luò)。比如:發(fā)動機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備。,9.
5、1.2 串行擴(kuò)展的特點,串行擴(kuò)展總線技術(shù)是新一代單片機(jī)技術(shù)發(fā)展的一個顯著特點。與并行擴(kuò)展總線相比,串行擴(kuò)展總線有電路結(jié)構(gòu)簡單,程序編寫方便,易于實現(xiàn)用戶系統(tǒng)軟硬件的模塊化、標(biāo)準(zhǔn)化等優(yōu)點。 常用串行擴(kuò)展總線和接口的特點簡要說明如下: (1)UART串行擴(kuò)展接口 UART接口是二線制,8051單片機(jī)的UART既能作通用異步接收和發(fā)送器,又能作同步移位寄存器。它可以實現(xiàn)8051單片機(jī)系統(tǒng)之間點對點的單機(jī)通信或多機(jī)通信,也可以實現(xiàn)擴(kuò)展I/O口。,9.1.2 串行擴(kuò)展的特點,(2)I2C總線 I2C總線是二線制,采用器件地址的硬件設(shè)置方法,通過軟件尋址完全避免了器件的片選線尋址方法,從而使硬件系統(tǒng)
6、具有簡單靈活的擴(kuò)展方法。I2C總線簡單,結(jié)構(gòu)緊湊,易于實現(xiàn)模塊化和標(biāo)準(zhǔn)化。 (3)SPI串行擴(kuò)展接口 SPI總線是三線制,可直接與多種標(biāo)準(zhǔn)外圍器件直接接口,在SPI從設(shè)備較少而沒有總線擴(kuò)展能力的單片機(jī)系統(tǒng)中使用特別方便。即使在有總線擴(kuò)展能力的系統(tǒng)中采用SPI設(shè)備也可以簡化電路設(shè)計,省掉很多常規(guī)電路中的接口器件,從而提高了設(shè)計的可靠性。,9.1.2 串行擴(kuò)展的特點,(4)Microware串行擴(kuò)展接口 Microware總線是三線制,由一根數(shù)據(jù)輸出(SO)線、一根數(shù)據(jù)輸入(SI)線和一根時鐘(SK)線組成。所有從器件的時鐘線連接到同一根SK線上,主器件向SK線發(fā)送時鐘脈沖信號,從器件在時鐘信
7、號的同步沿輸出/輸入數(shù)據(jù)。主器件的數(shù)據(jù)輸出線SO和所有從器件的數(shù)據(jù)輸入線相接,從器件的數(shù)據(jù)輸出線都接到主器件的數(shù)據(jù)輸入線SI上。 (5)1-wire總線 1-wire總線是利用一根線實現(xiàn)雙向通信,由一個總線主節(jié)點、一個或多個從節(jié)點組成系統(tǒng),通過一根信號線對從芯片進(jìn)行數(shù)據(jù)的讀取。每一個符合1-wire協(xié)議的從芯片都有一個唯一的地址,包括8位分類碼、48位的序列號和8位CRC代碼。主芯片對各個從芯片的尋找依據(jù)這64位的不同來進(jìn)行。單總線節(jié)省I/O引腳資源、結(jié)構(gòu)簡單、成本低廉、便于總線擴(kuò)展和維護(hù)。,9.1.2 串行擴(kuò)展的特點,(6)USB串行擴(kuò)展接口 USB比較于其他傳統(tǒng)接口的一個優(yōu)勢是即插即用的
8、實現(xiàn),即插即用(Plug-and-Play)也稱為熱插拔(Hot Plugging)。數(shù)據(jù)傳輸速度快,USB1.1接口的最高傳輸率可達(dá)12 Mb/s;USB2.0接口的最高傳輸率可達(dá)480 Mb/s。擴(kuò)展方便,使用USB Hub擴(kuò)展,可以連接127個USB設(shè)備,連接的方式十分靈活。 (7)CAN總線 在由CAN 總線構(gòu)成的單一網(wǎng)絡(luò)中,理論上可以掛接無數(shù)個節(jié)點。實際應(yīng)用中,節(jié)點數(shù)目受網(wǎng)絡(luò)硬件的電氣特性所限制。CAN 可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,這使實時控制變得非常容易。另外,硬件的錯誤檢定特性也增強(qiáng)了CAN的抗電磁干擾能力。當(dāng)信號傳輸距離達(dá)到10km時,CAN 仍可提供高達(dá)50Kb
9、it/s的數(shù)據(jù)傳輸速率。,9.2 UART串行擴(kuò)展接口,9.2.1 串行口工作方式 9.2.2 UART串行擴(kuò)展應(yīng)用實例,,9.2.1 串行口工作方式,串行口有四種工作方式,每一種工作方式都有自己的特點。其中方式0是8位同步通信方式,用于串/并或并/串轉(zhuǎn)換中,常用的串/并轉(zhuǎn)換芯片有74LS164和并/串轉(zhuǎn)換芯片74LS165等。 74LS164 是一個雙列直插式8位串入/并出移位寄存器,其引腳如下圖所示。其引腳定義如下: A:同步串行數(shù)據(jù)輸入端 B:同步串行數(shù)據(jù)輸入端 Q0Q7:8位并行數(shù)據(jù)輸出端 CK:時鐘脈沖輸入端 CLR:數(shù)據(jù)清除端(清除輸出數(shù)據(jù),通常用在移位完成時) GND:接地端 V
10、CC:電源端,9.2.1 串行口工作方式,74LS165 是一個雙列直插式8位并入/串出移位寄存器,其引腳如下圖所示。 其引腳定義如下: LD:重新裝載數(shù)據(jù)端(通常用在數(shù)據(jù)完全移出后) CK:內(nèi)部數(shù)據(jù)移位時鐘脈沖輸入端 D0D7:并行數(shù)據(jù)輸入端 Q11:取反串行輸出端 GND:接地端 Q11:串行輸出端 SE:用于填充數(shù)據(jù)移出后的空位的邏輯電平信號 COK:和CK聯(lián)合控制數(shù)據(jù)移動 VCC:電源端,9.2.1 串行口工作方式,,,74LS164引腳圖 74LS165引腳圖,9.2.2 UART串行擴(kuò)展應(yīng)用實例,【例1】 利用74LS164串行輸入并行輸出芯片作一個簡單的電子鐘,要
11、求四個數(shù)碼管顯示時鐘;其中LED1顯示小時的十位,LED2顯示小時的個位,LED3顯示分鐘的十位,LED4顯示分鐘的個位。 解:原理圖如下圖,采用單片機(jī)的串行口輸出字形碼,用74LS164和74LS138作為擴(kuò)展芯片。 74LS164的功能是將AT89C2051串行通信口輸出的串行數(shù)據(jù)譯碼并在其并口線上輸出,從而驅(qū)動LED數(shù)碼管。 74LS138是一個3線-8線譯碼器,它將單片機(jī)輸出的地址信號譯碼后動態(tài)驅(qū)動相應(yīng)的LED。因74LS138電流驅(qū)動能力較小,故用末級驅(qū)動三極管9013作為地址驅(qū)動。將4只LED的字段位都連在一起,它們的公共端則由74LS138分時選通,這樣任何一個時刻,都只有一
12、位LED在點亮,也即動態(tài)掃描顯示方式,其優(yōu)點使用串行口進(jìn)行LED通信程序編寫相當(dāng)簡單,用戶只需將需顯示的數(shù)據(jù)直接送串口發(fā)送緩沖器,等待串行中斷即可。,9.2.2 UART串行擴(kuò)展應(yīng)用實例,,串行動態(tài)LED掃描電路,P3.2 P3.3,TX RX,9.2.2 UART串行擴(kuò)展應(yīng)用實例,下面是一個簡單的動態(tài)掃描程序,如果再利用上第六章的定時器就可做成一個完整的電子鐘,四個數(shù)碼管顯示為00:00這種形式。在本例中冒號就不顯示出來了,分別用20H、21H、22H、23H地址存放時間的時鐘的十位、時鐘的個位、分鐘的十位、分鐘的個位。用中斷方式做一個不帶時鐘芯片的電子鐘,請讀者自己完成。,9.2.2 UA
13、RT串行擴(kuò)展應(yīng)用實例,參考程序:,9.2.2 UART串行擴(kuò)展應(yīng)用實例,參考程序:,9.3 I2C串行擴(kuò)展總線,9.3.1 I2C總線的結(jié)構(gòu)原理 9.3.2 I2C總線的軟件模擬 9.3.3 I2C串行擴(kuò)展應(yīng)用實例,,9.3.1 I2C總線的結(jié)構(gòu)原理,I2C總線是芯片間串行傳輸總線。它用數(shù)據(jù)線SDA和時鐘線SCL兩根線實現(xiàn)全雙工同步數(shù)據(jù)傳送,可方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。 I2C總線采用了器件地址的硬件設(shè)置方法,通過軟件尋址完全避免了器件的片選線尋址方法,從而使硬件系統(tǒng)具有簡單靈活的擴(kuò)展方法。 按照I2C總線規(guī)范,總線傳輸中的所有狀態(tài)都生成相對應(yīng)的狀態(tài)碼,系統(tǒng)中的主機(jī)能夠依照這些狀態(tài)
14、碼自動地進(jìn)行總線管理,用戶只要在程序中裝入這些標(biāo)準(zhǔn)處理模塊,根據(jù)數(shù)據(jù)操作要求完成I2C總線的初始化,啟動I2C總線,就能自動完成規(guī)定的數(shù)據(jù)傳送操作。,9.3.1 I2C總線的結(jié)構(gòu)原理,,I2C總線接口電路結(jié)構(gòu),9.3.1 I2C總線的結(jié)構(gòu)原理,I2C總線接口為開漏或開集電極輸出,需加上拉電阻。 系統(tǒng)中所有的單片機(jī)、外圍器件都將數(shù)據(jù)線SDA和時鐘線SCL的同名端相連在一起,總線上的所有節(jié)點都由器件和管腳給定地址。 系統(tǒng)中可以直接連接具有I2C總線接口的單片機(jī),也可以通過總線擴(kuò)展芯片或I/O口的軟件仿真與I2C總線相連。 在I2C總線上可以掛接各種類型的外圍器件,如RAM/EEPROM、日歷/時鐘
15、芯片、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、以及由I/O口、顯示驅(qū)動器構(gòu)成的各種模塊。,9.3.1 I2C總線的結(jié)構(gòu)原理,SDA 和SCL 都是雙向線路,都通過一個電流源或上拉電阻連接到正的電源電壓;當(dāng)總線空閑時,這兩條線路都是高電平;連接到總線的器件輸出級必須是漏極開路或集電極開路才能執(zhí)行線與的功能。 I2C 總線上數(shù)據(jù)的傳輸速率 在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s。 在快速模式下可達(dá)400kbit/s。 在高速模式下可達(dá)3.4Mbit/s 。 連接到總線的接口數(shù)量只由總線電容是400pF 的限制決定關(guān)于高速模式主機(jī)器件的信息。,9.3.1 I2C總線的結(jié)構(gòu)原理,I2C總線上數(shù)據(jù)傳送的基本單位為字節(jié),
16、采用低位在前的格式。主從器件之間一次傳輸?shù)臄?shù)據(jù)稱為一幀,由啟動信號、若干個數(shù)據(jù)字節(jié)和應(yīng)答位以及停止信號組成。 I2C的主要命令只有讀、寫兩種,雖然讀寫的字節(jié)根據(jù)具體器件的不同而不同,但其時序關(guān)系不會發(fā)生改變。 下位機(jī)只要具備I2C的基本時序即可。 這些基本時序包括:啟動、寫字節(jié)、讀字節(jié)、應(yīng)答位、停止信號,并可以組合成兩個子程序:讀N字節(jié)子程序、寫N字節(jié)子程序。,9.3.1 I2C總線的結(jié)構(gòu)原理,I2C總線最顯著的特點是規(guī)范的完整性、結(jié)構(gòu)的獨立性和用戶使用時的“傻瓜”化。 I2C總線有嚴(yán)格的規(guī)范,如接口的電氣特性、信號時序、信號傳輸?shù)亩x、總線狀態(tài)設(shè)置、總線管理規(guī)則及總線狀態(tài)處理等。 在I2C總
17、線規(guī)范中,總線上的器件節(jié)點的電氣特性及地址給定都具有較強(qiáng)的獨立性,而且各節(jié)點上的器件、模塊都有相對獨立的地址編號。 嚴(yán)格、完善的規(guī)范,并將這些規(guī)范的應(yīng)用盡可能“傻瓜”化,除了有充分的硬件支持外,在軟件方面,Philips公司為用戶提供了一套完善的總線狀態(tài)處理軟件包,以致于用戶可以不去熟悉I2C總線的規(guī)范,不去理睬總線的管理方法,只要掌握I2C總線的應(yīng)用程序設(shè)計方法就可方便地使用I2C總線,并且能很快地掌握I2C總線系統(tǒng)的軟、硬件設(shè)計方法。,9.3.2 I2C總線的軟件模擬,1.產(chǎn)生起始位和停止位 I2C總線的起始和停止條件如下圖所示。 分別用P1.0和P1.1模擬I2C總線的時鐘線和數(shù)
18、據(jù)線,則可給時鐘線SCL和數(shù)據(jù)線SDA賦值。程序如下:,,9.3.2 I2C總線的軟件模擬,2.發(fā)送起始條件 當(dāng)時鐘SCL為高電平時,數(shù)據(jù)線SDA從高電平向低電平切換表示起始條件,即啟動I2C總線數(shù)據(jù)傳送。模擬時序產(chǎn)生時鐘SCL和SDA發(fā)送的起始條件子程序如下: 使用不同頻率的晶體振蕩器,則要相應(yīng)增刪程序段中NOP指令的條數(shù),以滿足時序的要求。,,9.3.2 I2C總線的軟件模擬,3.發(fā)送停止條件 當(dāng)時鐘SCL為高電平時,數(shù)據(jù)線SDA由低電平向高電平切換表示停止條件,即停止I2C總線數(shù)據(jù)傳送。模擬時序產(chǎn)生時鐘SCL和SDA發(fā)送的停止條件子程序如下: 使用不同頻率的晶體振蕩器,則要相應(yīng)增刪
19、程序段中NOP指令的條數(shù),以滿足時序的要求。,,9.3.2 I2C總線的軟件模擬,4.發(fā)送應(yīng)答位、非應(yīng)答位子程序 I2C總線上的第9個時鐘脈沖對應(yīng)于應(yīng)答位,當(dāng)該位為低電平表示應(yīng)答ACK,當(dāng)該位為高電平表示非應(yīng)答ACK。 I2C總線的應(yīng)答位和非應(yīng)答位如下圖所示。發(fā)送ACK和ACK子程序如下。,,,,,SDA,SCL,9.3.2 I2C總線的軟件模擬,(1) 發(fā)送應(yīng)答位ACK 由上圖可知,當(dāng)發(fā)送應(yīng)答位ACK時,只需將SDA設(shè)為低電平、SCL設(shè)為高電平,其區(qū)間的長短根據(jù)晶振的頻率確定,即改變下列子程序中的NOP數(shù)即可達(dá)到要求,發(fā)送ACK子程序如下:,,,9.3.2 I2C總線的軟件模擬,(2) 發(fā)
20、送非應(yīng)答位 由上圖可知,當(dāng)發(fā)送非應(yīng)答位ACK時,只需將SDA設(shè)為高電平、SCL設(shè)為高電平,其區(qū)間的長短根據(jù)晶振的頻率確定,即改變下列子程序中的NOP數(shù)即可達(dá)到要求,發(fā)送ACK子程序如下:,,,,,9.3.2 I2C總線的軟件模擬,5.應(yīng)答位檢查子程序 根據(jù)I2C總線協(xié)議,在接收到一個字節(jié)后,要發(fā)送一個應(yīng)答位以供檢查,此時可設(shè)置一個標(biāo)志位表示應(yīng)答狀態(tài)。當(dāng)檢查結(jié)果為正常應(yīng)答時,則標(biāo)志位置0;否則,標(biāo)志位置0。應(yīng)答位檢查子程序如下:,,,9.3.2 I2C總線的軟件模擬,6.字節(jié)數(shù)據(jù)發(fā)送子程序 根據(jù)I2C總線協(xié)議,數(shù)據(jù)在時鐘線為低電平時變化,高電平時穩(wěn)定,每一個時鐘脈沖傳送一位。模擬I2C總線的S
21、DA接在并行口線,并口中無移位寄存器,要通過指令完成移位后再從SDA串行輸出。I2C總線的字節(jié)數(shù)據(jù)傳送如下圖所示。將待發(fā)送的字節(jié)存于累加器A中,字節(jié)數(shù)據(jù)發(fā)送子程序如下:,,,,9.3.2 I2C總線的軟件模擬,,,,字節(jié)數(shù)據(jù)發(fā)送子程序,9.3.2 I2C總線的軟件模擬,7.字節(jié)數(shù)據(jù)接收子程序 根據(jù)I2C總線協(xié)議,數(shù)據(jù)必須在時鐘處于高電平期間,數(shù)據(jù)穩(wěn)定時才能讀取數(shù)據(jù),在經(jīng)過八次的時鐘轉(zhuǎn)換后,讀出八位即一個字節(jié)數(shù)據(jù)。I2C總線起始字節(jié)如下圖所示。將讀出的字節(jié)數(shù)據(jù)存于R5中,接收字節(jié)數(shù)據(jù)子程序如下:,,,,,9.3.2 I2C總線的軟件模擬,,,,接收字節(jié)數(shù)據(jù)子程序,9.3.2 I2C總線的軟件模擬
22、,8.多個字節(jié)數(shù)據(jù)發(fā)送子程序 在完成上述模擬子程序后,根據(jù)I2C總線協(xié)議,可編寫多個字節(jié)數(shù)據(jù)發(fā)送子程序。要發(fā)送的字節(jié)數(shù)存放在R5中,要發(fā)送的數(shù)據(jù)塊的第一個數(shù)據(jù)的地址為40H,外圍器件的地址存放在60H中,參考程序如下:,,,,,9.3.2 I2C總線的軟件模擬,9.多個字節(jié)數(shù)據(jù)接收子程序 根據(jù)I2C總線協(xié)議,同樣可編寫多個字節(jié)數(shù)據(jù)接收子程序。要接收的字節(jié)數(shù)存放在R5中,要接收的數(shù)據(jù)塊存放的首地址為50H,外圍器件的地址存放在60H中,參考程序如下:,,,,,9.3.3 I2C串行擴(kuò)展應(yīng)用實例,【例2】 將AT89C2051片內(nèi)RAM40H47H單元中的八個8位數(shù)據(jù)通過I2C總線接口傳送到存
23、儲器AT24C01的50H57H單元中。 解:AT24C01是Atmel公司生產(chǎn)的具有I2C總線接口的E2PROM,是目前應(yīng)用較多的AT24C系列存儲器中的一種,芯片存儲容量為1Kb(1288位)。AT24C01引腳如下圖所示。 其引腳定義如下: SCL:串行時鐘端。 SDA:串行數(shù)據(jù)端,漏極開路, 需接上拉電阻到VCC。 WP:寫保護(hù), 當(dāng)WP為高電平時存儲器只讀; 當(dāng)WP為低電平時存儲器可讀可寫。 A2A0:芯片地址。,,9.3.3 I2C串行擴(kuò)展應(yīng)用實例,AT89C2051與AT24C01通過串行總線接口傳送數(shù)據(jù)的接線如下圖所示。因AT89C2051沒有I2C總線接口,可用軟件的
24、辦法來模擬I2C總線操作。P1.0模擬I2C總線的時鐘線SCL,P1.1模擬I2C總線的數(shù)據(jù)線SDA。,,AT89C2051與AT24C01的接口接線,9.3.3 I2C串行擴(kuò)展應(yīng)用實例,AT24C01的讀寫操作有多種形式,寫操作有兩種類型:字節(jié)寫和頁面寫;讀操作有三種類型:讀當(dāng)前地址內(nèi)容、讀隨機(jī)地址內(nèi)容和讀順序地址內(nèi)容。 AT24C01寫N個字節(jié)數(shù)據(jù)的操作時序如下圖所示, AT24C01讀N個字節(jié)數(shù)據(jù)的操作時序如下圖所示。,,9.3.3 I2C串行擴(kuò)展應(yīng)用實例,上圖中器件地址說明如下: 器件地址碼的第74位從器件地址位,用于確認(rèn)器件的類型。 AT24C01的器件地址碼為1010,1
25、010 表示從器件為串行E2PROM。 器件地址碼的第31位18片的片選或存儲器內(nèi)的頁面地址選擇位。此三個控制位用于選片或者內(nèi)部頁面選擇。 如在存儲容量8Kb(10248位)的AT24C08內(nèi)部,存儲矩陣分為4個頁面,每一頁面有256個字節(jié)。通過器件地址碼的第2位和第1位,可以選擇數(shù)據(jù)讀寫的頁面。 器件地址碼的第0位讀、寫(R/W)操作控制碼。若此位為1,下一字節(jié)進(jìn)行讀操作(R);此位為0,下一字節(jié)進(jìn)行寫操作(W)。,,9.3.3 I2C串行擴(kuò)展應(yīng)用實例,編程說明: AT24C01每接收一個字節(jié)后,都必須發(fā)送一個確認(rèn)應(yīng)答信號位ACK,即時序中的響應(yīng)信號。此時AT89C2051必須產(chǎn)生一個與此
26、確認(rèn)位相應(yīng)的時鐘脈沖。 AT24C01在讀寫操作時,具有地址自動加1功能,即讀、寫完某一地址空間后,會自動指向下一個地址單元。 將AT89C2051片內(nèi)RAM40H47H單元中的八個8位數(shù)據(jù)通過I2C總線接口傳送到存儲器AT24C01的50H57H單元中,參考子程序如下。 程序中用到的子程序均為9.3.2節(jié)所編寫的模擬I2C總線的子程序。,,參考子程序,,9.4 SPI串行擴(kuò)展接口,9.4.1 SPI總線的結(jié)構(gòu)原理 9.4.2 SPI總線的軟件模擬 9.4.3 SPI串行擴(kuò)展應(yīng)用實例,,9.4.1 SPI總線的結(jié)構(gòu)原理,SPI總線系統(tǒng)是一種同步串行外設(shè)接口,允許MCU與各種外圍設(shè)備以同步串行方
27、式進(jìn)行通信來交換信息。 SPI總線接口一般使用4根線:串行時鐘線SCK、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS。 由于SPI系統(tǒng)總線只需3根公共的時鐘數(shù)據(jù)線和若干位獨立的從機(jī)選擇線,在SPI從設(shè)備較少而沒有總線擴(kuò)展能力的單片機(jī)系統(tǒng)中使用特別方便。 SPI總線包括1根串行同步時鐘信號線以及2根數(shù)據(jù)線。SPI總線接口電路結(jié)構(gòu)如下圖所示。,9.4.1 SPI總線的結(jié)構(gòu)原理,,SPI總線接口電路結(jié)構(gòu),9.4.1 SPI總線的結(jié)構(gòu)原理,SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出的串行同步時鐘極性和相位可以進(jìn)行配置。 時鐘極性(CPO
28、L)對傳輸協(xié)議沒有重大的影響。 如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平; 如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。 時鐘相位(CPHA)能夠用于選擇兩種不同的傳輸協(xié)議進(jìn)行數(shù)據(jù)傳輸。 如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣; 如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。 SPI主模塊和與之通信的外設(shè)間時鐘相位和極性應(yīng)該一致。,9.4.1 SPI總線的結(jié)構(gòu)原理,特點:由于SPI系統(tǒng)總線一共只需34位數(shù)據(jù)線和控制線即可實現(xiàn)與具有SPI總線接口功能的各種I/O器件進(jìn)行連接,而擴(kuò)展并行總線則需要8根數(shù)據(jù)線、816位地址線、2
29、3位控制線,因此,采用SPI總線接口可以簡化電路設(shè)計,節(jié)省很多常規(guī)電路中的接口器件和I/O口線,提高設(shè)計的可靠性。 應(yīng)用:在MCS51系列等不具有SPI接口的單片機(jī)組成的智能儀器和工業(yè)測控系統(tǒng)中,當(dāng)傳輸速度要求不是太高時,使用SPI總線可以增加應(yīng)用系統(tǒng)接口器件的種類,提高應(yīng)用系統(tǒng)的性能。,9.4.2 SPI總線的軟件模擬,對于沒有提供SPI接口的單片機(jī)而言,通??墒褂密浖霓k法來模擬SPI的總線操作,包括串行時鐘、數(shù)據(jù)輸入和輸出。 Atmel公司生產(chǎn)的EEPROM具有SPI接口,存儲容量為4Kb的AT25040就有SPI接口,MCS51系列單片機(jī)與AT25010的SPI總線接口接線如下圖所示。
30、 圖中,P1.0模擬SPI的數(shù)據(jù)輸出端(MOSI),P1.1模擬SPI的SCK輸出端,P1.2模擬SPI的從機(jī)選擇端(SS),P1.3模擬SPI的數(shù)據(jù)輸入端(MISO)。下面給出模擬SPI串行輸入、串行輸出和串行輸入/輸出的3個子程序。,,1. MCU串行輸入子程序SPIIN 從AT25040的SO端接收8位數(shù)據(jù)并放入寄存器R0中。參考程序如下:,,2. MCU串行輸出子程序SPIOUT 將MCS51單片機(jī)中R0寄存器的內(nèi)容傳送到AT25040的SI端。參考程序如下:,,3. MCU串行輸入/輸出子程序SPIIO 將MCS51單片機(jī)R0寄存器的內(nèi)容傳送到AT25040的SI端,同時從
31、AT25040的SO端接收8位數(shù)據(jù)。參考程序如下:,,9.4.2 SPI總線的軟件模擬,這些子程序適用于在串行時鐘的上升沿輸入和下降沿輸出的各種串行外圍接口芯片(如D/A和A/D轉(zhuǎn)換芯片、實時時鐘芯片、LED顯示驅(qū)動芯片等)。 對于下降沿輸入、上升沿輸出的各種串行外圍接口芯片,只要改變P1.1的輸出電平順序,這些子程序也同樣適用。如先置P1.1為低電平,之后再次置P1.1為高電平,再置P1.1為低電平等等。,,9.4.3 SPI串行擴(kuò)展應(yīng)用實例,【例3】 將AT89C2051片內(nèi)RAM30H、31H單元中的16位數(shù)據(jù)通過SPI總線接口傳送到數(shù)/模轉(zhuǎn)換器TLC5615。 解:TLC5615是3線
32、串行總線接口10位電壓輸出數(shù)/模轉(zhuǎn)換器,它既可與單片機(jī)的SPI總線接口相連接,又可與單片機(jī)的Microwire總線接口相連接。TLC5615內(nèi)部結(jié)構(gòu)如下圖所示。,9.4.3 SPI串行擴(kuò)展應(yīng)用實例,,TLC5615內(nèi)部結(jié)構(gòu),9.4.3 SPI串行擴(kuò)展應(yīng)用實例,TLC5615通過固定增益為2的運放緩沖電阻網(wǎng)絡(luò),把10位數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為模擬電壓。在TLC5615芯片上電時,內(nèi)部電路把D/A寄存器復(fù)位為0。其輸出具有與基準(zhǔn)輸入相同的極性,表達(dá)式為 VO=2REFCODE/1024 其中,CMOD是通過串行總線接口輸入的待轉(zhuǎn)換的數(shù)據(jù);REF是基準(zhǔn)電壓。 TLC5615最大的串行時鐘速率不超過14M
33、Hz,10位DAC的建立時間為12.5s,通常更新速率限制至80kHz以內(nèi)。 TLC5615的16位移位寄存器在SCLK的控制下從DIN引腳輸入數(shù)據(jù),高位在前,低位在后。16位移位寄存器中間的10位數(shù)據(jù)在上升沿的作用下輸入10位的D/A寄存器供給D/A轉(zhuǎn)換。,9.4.3 SPI串行擴(kuò)展應(yīng)用實例,AT89C2051與TLC5615通過串行總線接口傳送8位數(shù)據(jù)的接線如下圖所示。 因AT89C2051沒有SPI接口,可用軟件的辦法來模擬SPI的總線操作。P1.1模擬SPI的數(shù)據(jù)輸出端(MOSI),P1.2模擬SPI的SCK輸出端,P1.2模擬SPI的從機(jī)選擇端(SS);TLC5615是數(shù)/模轉(zhuǎn)換器
34、,不會向AT89C2051發(fā)送數(shù)據(jù),故不需要模擬SPI的數(shù)據(jù)輸入端(MISO)。,,9.4.3 SPI串行擴(kuò)展應(yīng)用實例,AT89C2051將片內(nèi)RAM30H、31H單元中的16位數(shù)據(jù)傳送到TLC5615的參考程序如下:,,9.4.3 SPI串行擴(kuò)展應(yīng)用實例,,參考程序,本章小結(jié),單片機(jī)中目前常用的串行擴(kuò)展總線和接口可分為以下幾類:UART串行擴(kuò)展接口、I2C總線、SPI總線、Microware總線、1-wire總線、USB總線和CAN總線。 I2C總線是芯片間串行傳輸總線。它用兩根線實現(xiàn)全雙工同步數(shù)據(jù)傳送,可方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。I2C總線簡單,結(jié)構(gòu)緊湊,易于實現(xiàn)模塊化和標(biāo)準(zhǔn)化
35、。 SPI總線是同步串行外設(shè)接口。允許MCU與各種外圍設(shè)備以同步串行方式進(jìn)行通信來交換信息??芍苯优c多種標(biāo)準(zhǔn)外圍器件直接接口,采用SPI設(shè)備可簡化電路設(shè)計。 模擬I2C總線的應(yīng)用程序可使沒有I2C總線的單片機(jī)也能使用I2C總線技術(shù)。模擬SPI總線的應(yīng)用程序也可使沒有SPI總線的單片機(jī)也能使用I2C總線技術(shù)。 CAN總線是多主機(jī)局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。 USB總線是計算機(jī)串行通信協(xié)議。是即插即用的,數(shù)據(jù)傳輸速度快,擴(kuò)展方便,連接的方式十分靈活。 Microware總線是串行同步雙工通訊接口。1-wire總線也是一種串行通信協(xié)議。,,習(xí) 題,1. 串行擴(kuò)展與并行擴(kuò)展相比的主要優(yōu)點是什么? 2. 簡述I2C總線的數(shù)據(jù)傳輸方法。 3. 常用模擬I2C總線的應(yīng)用子程序有哪些? 4. 簡述SPI總線的數(shù)據(jù)傳輸方法。 5. 常用模擬SPI總線的應(yīng)用子程序有哪些?,,Q & A?Thanks!,,
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代文閱讀之小說人物形象課件
- 3第12課蘇東的艱難探索
- 《第二節(jié)--探究環(huán)境污染對生物的影響》課件-(同課異構(gòu))2022年課件
- 牛津譯林版七下英語7bunit1dreamhomesreading課件1
- 六年級語文《一個這樣的老師》教學(xué)課件
- 六年級安全教育-運動的自我監(jiān)控課件
- 五年級下冊數(shù)學(xué)優(yōu)秀教學(xué)課件《解決問題》人教新課標(biāo)
- 27清澈的湖水 (2)
- 49稍復(fù)雜的分?jǐn)?shù)乘法應(yīng)用題練習(xí)
- 江蘇省高考物理二輪復(fù)習(xí)專題一力與物體的平衡課件
- 小松鼠找花生課件(教育精品)
- 22跨越海峽的生命橋 (2)
- 人力資源環(huán)境分析
- 《空氣》課件-(省優(yōu))2022年人教版化學(xué)課件-2
- 鐵路與城市軌道交通振動與噪聲