畢業(yè)設(shè)計(jì)PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信_(tái)第1頁(yè)
畢業(yè)設(shè)計(jì)PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信_(tái)第2頁(yè)
畢業(yè)設(shè)計(jì)PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信_(tái)第3頁(yè)
畢業(yè)設(shè)計(jì)PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信_(tái)第4頁(yè)
畢業(yè)設(shè)計(jì)PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PC與單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信摘 要基于串口通訊的原理,分析和討論了計(jì)算機(jī)與單片機(jī)如何通過(guò)USB接口使用相關(guān)的通訊協(xié)議實(shí)現(xiàn)串行通信的。本設(shè)計(jì)主要介紹如何使用一臺(tái)計(jì)算機(jī)與一臺(tái)單片機(jī)通過(guò)USB接口實(shí)現(xiàn)串行通信。在本設(shè)計(jì)中單片機(jī)采用AT89C51,USB模塊CH375,軟件設(shè)計(jì)方面,PC機(jī)采用C語(yǔ)言編程,單片機(jī)方面用中斷方式完成數(shù)據(jù)的接收和發(fā)送,程序采用也采用C語(yǔ)言。關(guān)鍵字:計(jì)算機(jī),單片機(jī),USB,串行通信PC and SCM realizing serial communication via a USBAbstract: Based on the principle of serial

2、communication, this paper analyzes and discusses how computer and SCM via a USB communication protocol realized with related serial communication. This design mainly introduces how to use a computer and a single-chip microcomputer via the USB interface implementation serial communication. In this de

3、sign single-chip microcomputer AT89C51, USB module CH375, software design, PC machine adopts the C programming language used interrupt mode, microcontroller finish data by sending and receiving, the program also use C language.Key words: Computer, MCU, USB, Serial communication 34目 錄第1章 前 言11.1本課題研究

4、的目的和背景11.2 本課題研究的主要內(nèi)容2第2章 串行通信基礎(chǔ)32.1 串口通信的基本知識(shí)32.1.1 并行通信與串行通信32.1.2串行通信工作模式52.1.3異步傳輸和同步傳輸7第3章USB93.1 USB簡(jiǎn)介93.1.1 USB設(shè)備93.1.2 USB的優(yōu)點(diǎn)103.1.3傳輸方式113.2 USB的總線協(xié)議123.2.1 總線拓?fù)浣Y(jié)構(gòu)123.2.2USB的物理層133.2.3USB總線協(xié)議14第四章 串口通信接口設(shè)計(jì)234.1 設(shè)計(jì)選擇234.2 接口電路設(shè)計(jì)234.2.1 PC機(jī)串行通信接口標(biāo)準(zhǔn)RS-232C234.2.2 串口通信的接收過(guò)程254.2.3 USB模塊CH375264

5、.2.4 USB接口的軟件設(shè)計(jì)274.3 通信程序設(shè)計(jì)274.3.1 PC機(jī)通信程序284.3.2 AT8C951單片機(jī)端的通信程序29結(jié) 論31致 謝32參考文獻(xiàn)33成都理工大學(xué)2011屆本科畢業(yè)設(shè)計(jì)(論文)第1章 前 言1.1本課題研究的目的和背景通信是指不同的獨(dú)立系統(tǒng)利用線路互相交換數(shù)據(jù),它的主要目的是將數(shù)據(jù)從一端傳送到另一端,實(shí)現(xiàn)數(shù)據(jù)的交換。在現(xiàn)代工業(yè)控制中,通常采用計(jì)算機(jī)作為上位機(jī)與下層的實(shí)時(shí)控制與監(jiān)測(cè)設(shè)備進(jìn)行通訊?,F(xiàn)場(chǎng)數(shù)據(jù)必須通過(guò)一個(gè)數(shù)據(jù)收集器傳給上位機(jī),同樣上位機(jī)向現(xiàn)場(chǎng)設(shè)備發(fā)命令也必須通過(guò)數(shù)據(jù)收集器。串行通信因其結(jié)構(gòu)簡(jiǎn)單、執(zhí)行速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn),已被廣泛應(yīng)用于數(shù)據(jù)采集和過(guò)

6、程控制等領(lǐng)域。計(jì)算機(jī)與外界的信息交換稱為通信?;镜耐ㄐ欧绞接胁⑿型ㄐ藕痛型ㄐ艃煞N。串行通信是指一條信息額各位數(shù)據(jù)被逐位按順序傳送的通信方式。串行通信的特點(diǎn)是:數(shù)據(jù)位傳送,按位順序進(jìn)行,最少只需要一根傳輸線即可完成,成本低但傳送速度快,串行通信的距離可以從幾米到幾千米 。隨著計(jì)算機(jī)技術(shù)尤其是單片微型機(jī)技術(shù)的發(fā)展,人們已越來(lái)越多的采用單片機(jī)來(lái)對(duì)一些工業(yè)控制系統(tǒng)中如溫度、流量和壓力等參數(shù)進(jìn)行監(jiān)測(cè)和控制。PC機(jī)具有強(qiáng)大的監(jiān)控和管理能力,而單片機(jī)則具有快速及靈和的控制特點(diǎn),通過(guò)PC機(jī)的RS-232串行接口與外部設(shè)備進(jìn)行通信,是許多測(cè)控系統(tǒng)中常用的一種通信解決方案。而隨著USB 接口技術(shù)的成熟和使用的

7、普及,由于USB 接口大有著一系列RS-232(DB-9)串口無(wú)法比擬的優(yōu)點(diǎn),RS-232(DB-9)串口正在逐步的為USB 接口所替代。而在現(xiàn)在的大多數(shù)筆記本電腦中,出于節(jié)省物理空間和用處不大等原因,RS-232(DB-9)串口已不再設(shè)置,這就約束了基于RS-232(DB-9)串口與PC 機(jī)聯(lián)絡(luò)的單片機(jī)設(shè)備的使用范圍。當(dāng)前USB 接口逐步取代RS-232(DB-9)串口已是大勢(shì)所趨,單片機(jī)同計(jì)算機(jī)的USB 通信在實(shí)際工作中的應(yīng)用范圍也將越來(lái)越廣。本文所介紹的單片機(jī)和PC 機(jī)的USB 通信方法,電路簡(jiǎn)單,兼容性好,可移植性強(qiáng),故可作為單片機(jī)同計(jì)算機(jī)的USB通信模塊廣泛應(yīng)用于工業(yè)和電子產(chǎn)品的開(kāi)發(fā)

8、中。因此如何實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通訊具有非常重要的現(xiàn)實(shí)意義。1.2 本課題研究的主要內(nèi)容串行通信的基本原理;USB的相關(guān)知識(shí);如何使用USB的功能模塊;如何實(shí)現(xiàn)單片機(jī)和PC機(jī)通過(guò)USB實(shí)現(xiàn)串行通信;如何編寫(xiě)PC與單片機(jī)的數(shù)據(jù)收發(fā)程序;針對(duì)以上內(nèi)容,設(shè)計(jì)的功能模塊分為以下3個(gè)方面:(1)單片機(jī)系統(tǒng):實(shí)現(xiàn)和PC機(jī)通信的單片機(jī)選擇。(2)外圍電路:實(shí)現(xiàn)單片機(jī)和PC機(jī)之間的串行通信的USB模塊電路。(3)通信程序:一方面是單片機(jī)的程序,另一方面是PC機(jī)的通信程序。第2章 串行通信基礎(chǔ)2.1 串口通信的基本知識(shí)2.1.1 并行通信與串行通信微機(jī)的信息交換有兩種方式進(jìn)行:串行通信方式和并行通信方式。(

9、一)串行通信串行通信的設(shè)備是最古老的溝通機(jī)制之一。從IBM個(gè)人電腦和兼容式電腦的時(shí)代開(kāi)始,幾乎所有的計(jì)算機(jī)都配有一個(gè)或多個(gè)串行端口和一個(gè)并行端口。顧名思義,一個(gè)串行端口發(fā)送和接收串行數(shù)據(jù),一次一位數(shù)據(jù)。相反,一個(gè)并行端口一次發(fā)送和接收8位數(shù)據(jù),使用8個(gè)單獨(dú)的電線。提示:要使串行通信工作,你只需要一根三根線的電纜1根發(fā)送,1根用來(lái)接收,1根接地。對(duì)于并行通信,你需要采用8條導(dǎo)線。盡管相對(duì)較慢的傳輸速度遠(yuǎn)低于并行端口,串行端口通信依然因?yàn)樗?jiǎn)單的設(shè)備和高的成本效益而是一個(gè)受歡迎的連接選項(xiàng)。圖2-1顯示了設(shè)備的使用串口連接部分到計(jì)算機(jī)。使用串行端口,你可以連接到調(diào)制解調(diào)器,鼠標(biāo)或設(shè)備等作為一個(gè)橋梁/

10、路由器配置的目的。圖2-1 一些常見(jiàn)的串行設(shè)備,調(diào)制解調(diào)器,鼠標(biāo)和路由器雖然今天的消費(fèi)產(chǎn)品中在串行連接的地方使用USB連接,但還有很多的設(shè)備使用串行端口作為與外部世界的唯一連接。一個(gè)串行設(shè)備一次發(fā)送和接收一位數(shù)據(jù),有些設(shè)備因?yàn)樵谕粫r(shí)間發(fā)送和接收數(shù)據(jù),被稱為全雙工設(shè)備。其他可以在任何時(shí)間發(fā)送或接收被稱為單雙工。開(kāi)始傳輸時(shí),設(shè)備先發(fā)送一個(gè)起始位,其次是數(shù)據(jù)位。該數(shù)據(jù)位可以是五,六,七,或8位,基于商定而定。兩個(gè)發(fā)送方和接收器必須設(shè)置為相同的數(shù)據(jù)通信比特或正確的比特率。數(shù)據(jù)位被發(fā)送完后,就會(huì)發(fā)送一個(gè)停止位。一個(gè)停止位可以是一位,一個(gè)半位,或兩位。波特率是數(shù)據(jù)從一個(gè)設(shè)備到另一個(gè)的傳輸速度。波特率通常

11、以每秒的位數(shù)(bps)來(lái)計(jì)量。注意:大多數(shù)串行設(shè)備傳輸七,八位數(shù)據(jù)。為了檢測(cè)數(shù)據(jù)已被正確發(fā)送,一個(gè)可選的校驗(yàn)位可以同數(shù)據(jù)位在一起。一個(gè)校驗(yàn)位可以是以下內(nèi)容:奇數(shù),偶數(shù),mark,space或無(wú)(空的奇偶位標(biāo)志幾乎總是被使用)。使用校驗(yàn)位提供了一個(gè)基本的機(jī)制,以檢測(cè)已發(fā)送數(shù)據(jù)損壞,但不保證檢查數(shù)據(jù)本身的錯(cuò)誤。然而,校驗(yàn)位可用于改善完整性數(shù)據(jù)傳送。大多數(shù)串行端口使用RS232C標(biāo)準(zhǔn),它指定了一個(gè)連接器25針或9針,如圖2-2所示。大多數(shù)系列設(shè)備使用9針連接器。圖2-2 25針和9針串行接口(二)并行通信在計(jì)算機(jī)和終端之間的數(shù)據(jù)傳輸通常是靠電纜或信道上的電流或電壓變化實(shí)現(xiàn)的。如果一組數(shù)據(jù)的各數(shù)據(jù)位在

12、多條線上同時(shí)被傳送,這種傳輸被稱為并行通信,如圖2-3所示。并行通信時(shí)數(shù)據(jù)的各個(gè)位同時(shí)傳送,可以字或字節(jié)為單位并行進(jìn)行。并行通信速度快,但用的通信線多、成本高,故不宜進(jìn)行遠(yuǎn)距離通信。計(jì)算機(jī)或PLC各種內(nèi)部總線就是以并行方式傳送數(shù)據(jù)的。圖2-3 并行通信(1)各數(shù)據(jù)位同時(shí)傳輸,傳輸速度快、效率高,多用在實(shí)時(shí)、快速的場(chǎng)合。(2)微機(jī)系統(tǒng)中最基本的信息交換方式。(3)并行傳遞的信息不要求固定的格式。(4)并行接口的數(shù)據(jù)傳輸率比串行接口快8倍,標(biāo)準(zhǔn)并口的數(shù)據(jù)傳輸率理論值為1Mbps(兆比特/秒)。(5)并行傳輸?shù)臄?shù)據(jù)寬度可以是1128位,甚至更寬,但是有多少數(shù)據(jù)位就需要多少根數(shù)據(jù)線,因此傳輸?shù)某杀据^高

13、。(6)并行通信抗干擾能力差。(7)在集成電路芯片的內(nèi)部、同一插件板上各部件之間、同一機(jī)箱內(nèi)個(gè)插件板之間的數(shù)據(jù)傳輸都是并行的。(8)以計(jì)算機(jī)的字長(zhǎng),通常是8位、16位或32位為傳輸單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)。(9)適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、大量和快速的信息交換。(10)并行數(shù)據(jù)傳輸只適用于近距離的通信,通常傳輸距離小于30米。2.1.2串行通信工作模式如果在通信過(guò)程的任意時(shí)刻,信息只能由一方A傳到另一方B,則稱為單工。如果在任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但只能由一個(gè)方向上的傳輸存在,稱為半雙工傳輸。如果在任意時(shí)刻,線路上存在A到B和B到A的雙向信號(hào)傳輸,則稱為全雙工。

14、電話線就是二線全雙工信道。 由于采用了回波抵消技術(shù),雙向的傳輸信號(hào)不致混淆不清。雙工信道有時(shí)也將收、發(fā)信道分開(kāi),采用分離的線路或頻帶傳輸相反方向的信號(hào),如回線傳輸。在串行通信中,數(shù)據(jù)通常是在兩個(gè)站(如終端和微機(jī))之間進(jìn)行傳送,按照數(shù)據(jù)流的方向可分成三種基本的傳送方式:全雙工、半雙工、和單工。但單工目前已很少采用,下面僅介紹前兩種方式。(一)半雙工方式若使用同一根傳輸線既作接收又作發(fā)送,雖然數(shù)據(jù)可以在兩個(gè)方向上傳送,但通信雙方不能同時(shí)收發(fā)數(shù)據(jù),這樣的傳送方式就是半雙工制,如圖2-4所示。采用半雙工方式時(shí),通信系統(tǒng)每一端的發(fā)送器和接收器,通過(guò)收/發(fā)開(kāi)關(guān)轉(zhuǎn)接到通信線上,進(jìn)行方向的切換,因此,會(huì)產(chǎn)生時(shí)

15、間延遲。收/發(fā)開(kāi)關(guān)實(shí)際上是由軟件控制的電子開(kāi)關(guān)。圖2-4 半雙工通信示意圖當(dāng)計(jì)算機(jī)主機(jī)用串行接口連接顯示終端時(shí),在半雙工方式中,輸入過(guò)程和輸出過(guò)程使用同一通路。有些計(jì)算機(jī)和顯示終端之間采用半雙工方式工作,這時(shí),從鍵盤(pán)打入的字符在發(fā)送到主機(jī)的同時(shí)就被送到終端上顯示出來(lái),而不是用回送的辦法,所以避免了接收過(guò)程和發(fā)送過(guò)程同時(shí)進(jìn)行的情況。目前多數(shù)終端和串行接口都為半雙工方式提供了換向能力,也為全雙工方式提供了兩條獨(dú)立的引腳。在實(shí)際使用時(shí),一般并不需要通信雙方同時(shí)既發(fā)送又接收,像打印機(jī)這類(lèi)的單向傳送設(shè)備,半雙工甚至單工就能勝任,也無(wú)需倒向。(二)全雙工方式當(dāng)數(shù)據(jù)的發(fā)送和接收分流,分別由兩根不同的傳輸線傳

16、送時(shí),通信雙方都能在同一時(shí)刻進(jìn)行發(fā)送和接收操作,這樣的傳送方式就是全雙工制,如圖2-5所示。在全雙工方式下,通信系統(tǒng)的每一端都設(shè)置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時(shí)在兩個(gè)方向上傳送。全雙工方式無(wú)需進(jìn)行方向的切換,因此,沒(méi)有切換操作所產(chǎn)生的時(shí)間延遲,這對(duì)那些不能有時(shí)間延誤的交互式應(yīng)用(例如遠(yuǎn)程監(jiān)測(cè)和控制系統(tǒng))十分有利。這種方式要求通訊雙方均有發(fā)送器和接收器,同時(shí),需要2根數(shù)據(jù)線傳送數(shù)據(jù)信號(hào)。(可能還需要控制線和狀態(tài)線,以及地線)。圖2-5 全雙工通信示意圖2.1.3異步傳輸和同步傳輸串行傳輸中,數(shù)據(jù)是一位一位按照到達(dá)的順序依次傳輸?shù)?,每位?shù)據(jù)的發(fā)送和接收都需要時(shí)鐘來(lái)控制。發(fā)送端通過(guò)發(fā)送時(shí)鐘確

17、定數(shù)據(jù)位的開(kāi)始和結(jié)束,接收端需要在適當(dāng)?shù)臅r(shí)間間隔對(duì)數(shù)據(jù)流進(jìn)行采樣來(lái)正確的識(shí)別數(shù)據(jù)。接收端和發(fā)送端必須保持步調(diào)一致,否則數(shù)據(jù)傳輸就會(huì)出現(xiàn)差錯(cuò)。為了解決以上問(wèn)題,串行傳輸可采用以下兩種方法:異步傳輸和同步傳輸。(一)異步傳輸通常,異步傳輸是以字符為傳輸單位,每個(gè)字符都要附加 1 位起始位和 1 位停止位,以標(biāo)記一個(gè)字符的開(kāi)始和結(jié)束,并以此實(shí)現(xiàn)數(shù)據(jù)傳輸同步。所謂異步傳輸是指字符與字符(一個(gè)字符結(jié)束到下一個(gè)字符開(kāi)始)之間的時(shí)間間隔是可變的,并不需要嚴(yán)格地限制它們的時(shí)間關(guān)系。起始位對(duì)應(yīng)于二進(jìn)制值 0,以低電平表示,占用 1 位寬度。停止位對(duì)應(yīng)于二進(jìn)制值 1,以高電平表示,占用 12 位寬度。一個(gè)字符占用

18、 58位,具體取決于數(shù)據(jù)所采用的字符集。例如,電報(bào)碼字符為 5 位、ASCII碼字符為 7 位、漢字碼則為8 位。此外,還要附加 1 位奇偶校驗(yàn)位,可以選擇奇校驗(yàn)或偶校驗(yàn)方式對(duì)該字符實(shí)施簡(jiǎn)單的差錯(cuò)控制。發(fā)送端與接收端除了采用相同的數(shù)據(jù)格式(字符的位數(shù)、停止位的位數(shù)、有無(wú)校驗(yàn)位及校驗(yàn)方式等)外,還應(yīng)當(dāng)采用相同的傳輸速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。異步傳輸又稱為起止式異步通信方式,其優(yōu)點(diǎn)是簡(jiǎn)單、可靠,適用于面向字符的、低速的異步通信場(chǎng)合。例如,計(jì)算機(jī)與Modem之間的通信就是采用這種方式。它的缺點(diǎn)是通信開(kāi)銷(xiāo)大,每傳輸一個(gè)字符都要額外附加23位,通信效率比較

19、低。例如,在使用Modem上網(wǎng)時(shí),普遍感覺(jué)速度很慢,除了傳輸速率低之外,與通信開(kāi)銷(xiāo)大、通信效率低也密切相關(guān)。 (二)同步傳輸通常,同步傳輸是以數(shù)據(jù)塊為傳輸單位。每個(gè)數(shù)據(jù)塊的頭部和尾部都要附加一個(gè)特殊的字符或比特序列,標(biāo)記一個(gè)數(shù)據(jù)塊的開(kāi)始和結(jié)束,一般還要附加一個(gè)校驗(yàn)序列(如16位或32位CRC校驗(yàn)碼),以便對(duì)數(shù)據(jù)塊進(jìn)行差錯(cuò)控制。所謂同步傳輸是指數(shù)據(jù)塊與數(shù)據(jù)塊之間的時(shí)間間隔是固定的,必須嚴(yán)格地規(guī)定它們的時(shí)間關(guān)系。和異步傳輸相比,數(shù)據(jù)傳輸單位的加長(zhǎng)容易引起時(shí)鐘漂移。為了保證接收端能夠正確地區(qū)分?jǐn)?shù)據(jù)流中的每個(gè)數(shù)據(jù)位,收發(fā)雙主必須通過(guò)某種方法建立起同步的時(shí)鐘??梢栽诎l(fā)送器和接收器之間提供一條獨(dú)

20、立的時(shí)鐘線路,由線路的一端(發(fā)送器或者接收器)定期地在每個(gè)比特時(shí)間中向線路發(fā)送一個(gè)短脈沖信號(hào),另一端則將這些有規(guī)律的脈沖作為時(shí)鐘。這種技術(shù)在短距離傳輸時(shí)表現(xiàn)良好,但在長(zhǎng)距離傳輸中,定時(shí)脈沖可能會(huì)和信息信號(hào)一樣受到破壞,從而出現(xiàn)定時(shí)誤差。另一種方法是通過(guò)采用嵌有時(shí)鐘信息的數(shù)據(jù)編碼位向接收端提供同步信息。第3章USB 3.1 USB簡(jiǎn)介USB(Universal Serial Bus,通用串行總線)是以Intel為主,并有Compaq, Microsoft, IBM,DEC, Northern Telecom以及日本NEC等共七家公司共同制定的串行接口標(biāo)準(zhǔn),1994年11月制定了第一個(gè)草案,199

21、6年2月公布了USB規(guī)范版本1.0。USB可把多達(dá)127個(gè)外設(shè)同時(shí)聯(lián)到你的系統(tǒng)上,所有的外設(shè)通過(guò)協(xié)議來(lái)共享USB的帶寬,其12Mbps的帶寬對(duì)于鍵盤(pán),鼠標(biāo)等低中速外設(shè)是完全足夠的。(注在1999年2月發(fā)布的USB規(guī)范版本2.0草案中,已建議將12Mbps的帶寬提升到120-240Mbps。)USB允許外設(shè)在主機(jī)和其它外設(shè)工作時(shí)進(jìn)行連接、配置、使用及移除,即所謂的即插即用(Plug&Play)。同時(shí)USB總線的應(yīng)用可以清除PC上過(guò)多的I/O端口,而以一個(gè)串行通道取代,使PC與外設(shè)之間的連接更容易。3.1.1 USB設(shè)備USB設(shè)備包括Hub和功能設(shè)備,而功能設(shè)備又可以細(xì)分為定位設(shè)備字符設(shè)備

22、等等。為了進(jìn)一步敘述,我們給出端點(diǎn)(endpoint)和管道(pipe)的概念。端點(diǎn):每一個(gè)USB設(shè)備在主機(jī)看來(lái)就是一個(gè)端點(diǎn)的集合,主機(jī)只能通過(guò)端點(diǎn)與設(shè)備進(jìn)行通訊,以使用設(shè)備的功能。每個(gè)端點(diǎn)實(shí)際上就是一個(gè)一定大小的數(shù)據(jù)緩沖區(qū),這些端點(diǎn)在設(shè)備出廠時(shí)就已定義好。在USB系統(tǒng)中,每一個(gè)端點(diǎn)都有唯一的地址,這是由設(shè)備地址和端點(diǎn)號(hào)給出的。每個(gè)端點(diǎn)都有一定的特性。其中包括:傳輸方式、總線訪問(wèn)、頻率、帶寬、端點(diǎn)號(hào)、數(shù)據(jù)包的最大容量等等。端點(diǎn)必須在設(shè)備配置后才能生效(端點(diǎn)0除外)。端點(diǎn)0通常為控制端點(diǎn)。用于設(shè)備初始化參數(shù)等。端點(diǎn)12等一般用作數(shù)據(jù)端點(diǎn)存放主機(jī)與設(shè)備間往來(lái)的數(shù)據(jù)。管道: 一個(gè)USB管道是驅(qū)動(dòng)程序

23、的一個(gè)數(shù)據(jù)緩沖區(qū)與一個(gè)外設(shè)端點(diǎn)的連接,它代表了一種在兩者之間移動(dòng)數(shù)據(jù)的能力。一旦設(shè)備被配置,管道就存在了。管道有兩種類(lèi)型,數(shù)據(jù)流管道(其中的數(shù)據(jù)沒(méi)有USB定義的結(jié)構(gòu))與消息管道(其中的數(shù)據(jù)必須有USB定義的結(jié)構(gòu))管道只是一個(gè)邏輯上的概念。所有的設(shè)備必須支持端點(diǎn)0以作為設(shè)備的控制管道。通過(guò)控制管道可以獲取完全描述USB設(shè)備的信息,包括:設(shè)備類(lèi)型、電源管理、配置、端點(diǎn)描述等等只要設(shè)備連接到USB上并且上電端點(diǎn)0就可以被訪問(wèn)與之對(duì)應(yīng)的控制管道就存在了。一個(gè)USB設(shè)備可以分為三個(gè)層圖(2.3)。最底層是總線接口,用來(lái)發(fā)送與接收包。中間層處理總線接口與不同的端點(diǎn)之間的數(shù)據(jù)流通。一個(gè)端點(diǎn)是數(shù)據(jù)最終的使用者

24、或提供者,它可以看作數(shù)據(jù)的源或接收端。最上層就是USB設(shè)備所提供的功能,比如鼠標(biāo)或鍵盤(pán)等。 圖2.3設(shè)備層次結(jié)構(gòu)3.1.2 USB的優(yōu)點(diǎn)1 USB 為所有的USB外設(shè)提供了單一的、易于使用的標(biāo)準(zhǔn)的連接類(lèi)型。這樣一來(lái)就簡(jiǎn)化了USB 外設(shè)的設(shè)計(jì),同時(shí)也簡(jiǎn)化了用戶在判斷哪個(gè)插頭對(duì)應(yīng)哪個(gè)插槽時(shí)的任務(wù),實(shí)現(xiàn)了單一的數(shù)據(jù)通用接口。2.整個(gè)的USB的系統(tǒng)只有一個(gè)端口和一個(gè)中斷,節(jié)省了系統(tǒng)資源。3. USB 支持熱插拔(hot plug)和PNP(Plug-and-Play),也就是說(shuō)在不關(guān)閉PC 的情況下可以安全的插上和斷開(kāi)USB設(shè)備,計(jì)算機(jī)系統(tǒng)動(dòng)態(tài)地檢測(cè)外設(shè)的插拔,并且動(dòng)態(tài)地加載驅(qū)動(dòng)程序。其他普通的外圍連

25、接標(biāo)準(zhǔn),如SCSI設(shè)備等必須在關(guān)掉主機(jī)的情況下才能插拔外圍設(shè)備。4. USB在設(shè)備供電方面提供了靈活性。USB直接連接到Hub或者是連接到Host的設(shè)備可以通過(guò)USB電纜供電,也可以通過(guò)電池或者其它的電力設(shè)備來(lái)供電,或使用兩種供電方式的組合,并且支持節(jié)約能源的掛機(jī)和喚醒模式。5. USB 提供全速12Mbps的速率和低速1.5Mbps的速率來(lái)適應(yīng)各種不同類(lèi)型的外設(shè),USB2.0還支持480Mbps的高速傳輸速率。6.為了適應(yīng)各種不同類(lèi)型外圍設(shè)備的要求,USB提供了四種不同的數(shù)據(jù)傳輸類(lèi)型:控制傳輸Bulk數(shù)據(jù)、傳輸中斷數(shù)據(jù)傳輸和同步數(shù)據(jù)傳輸。同步數(shù)據(jù)傳輸可為音頻和視頻等實(shí)時(shí)設(shè)備的實(shí)時(shí)數(shù)據(jù)傳輸提供

26、固定帶寬。7. USB的端口具有很靈活的擴(kuò)展性,一個(gè)USB 端口串接上一個(gè)USB Hub 就可以擴(kuò)展為多個(gè)USB端口。3.1.3傳輸方式USB有四種的傳輸方式控制(Control)同步(isochronous)中斷(interrupt)大量(bulk)如果你是從硬件開(kāi)始來(lái)設(shè)計(jì)整個(gè)的系統(tǒng)你還要正確選擇傳輸?shù)姆绞蕉鳛橐粋€(gè)驅(qū)動(dòng)程序的書(shū)寫(xiě)者就只需要弄清楚他是采用的什么工作方式就行了通常所有的傳輸方式下的主動(dòng)權(quán)都在PC邊,也就是host邊1控制(Control)方式傳輸:控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小。USB系統(tǒng)軟件用來(lái)主要進(jìn)行查詢、配置和給USB設(shè)備發(fā)送通用的命令??刂苽鬏敺绞娇梢园?、16、

27、32和64字節(jié)的數(shù)據(jù),這依賴于設(shè)備和傳輸速度??刂苽鬏?shù)湫偷赜迷谥饔?jì)算機(jī)和USB外設(shè)之間的端點(diǎn)(Endpoint)0之間的傳輸,但是指定供應(yīng)商的控制傳輸能用到其它的端點(diǎn)。2.同步(isochronous)方式:傳輸同步傳輸提供了確定的帶寬和間隔時(shí)間latency)。它被用于時(shí)間嚴(yán)格并具有較強(qiáng)容錯(cuò)性的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳輸率的即時(shí)應(yīng)用中。例如執(zhí)行即時(shí)通話的網(wǎng)絡(luò)電話應(yīng)用時(shí),使用同步傳輸模式是很好的選擇。同步數(shù)據(jù)要求確定的帶寬值和確定的最大傳輸次數(shù)。對(duì)于同步傳輸來(lái)說(shuō),即時(shí)的數(shù)據(jù)傳遞比完美的精度和數(shù)據(jù)的完整性更重要一些。3.中斷(interrupt)方式:傳輸中斷方式傳輸主要用于定時(shí)查

28、詢?cè)O(shè)備是否有中斷數(shù)據(jù)要傳輸,設(shè)備的端點(diǎn)模式器的結(jié)構(gòu)決定了它的查詢頻率,從1 到255ms 之間,這種傳輸方式典型的應(yīng)用在少量的分散的,不可預(yù)測(cè)數(shù)據(jù)的傳輸。鍵盤(pán)、操縱桿和鼠標(biāo)就屬于這一類(lèi)型。中斷方式傳輸是單向的并且對(duì)于host 來(lái)說(shuō)只有輸入的方式。4.大量(bulk)傳輸:主要應(yīng)用在數(shù)據(jù)大量傳輸傳輸和接受數(shù)據(jù)上,同時(shí)又沒(méi)有帶寬和間隔時(shí)間要求的情況下,要求保證傳輸。打印機(jī)和掃描儀屬于這種類(lèi)型。這種類(lèi)型的設(shè)備適合于傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類(lèi)型的數(shù)據(jù)的傳輸完成之后再傳輸和接收數(shù)據(jù)。USB將其有效的帶寬分成各個(gè)不同的幀(frame),每幀通常是1ms時(shí)間長(zhǎng)。每個(gè)設(shè)備每幀只能傳輸一個(gè)

29、同步的傳輸包。在完成了系統(tǒng)的配置信息和連接之后,USB的host就對(duì)不同的傳輸點(diǎn)和傳輸方式做一個(gè)統(tǒng)籌安排,用來(lái)適應(yīng)整個(gè)的USB 的帶寬。通常情況下,同步方式和中斷方式的傳輸會(huì)占據(jù)整個(gè)帶寬的90%剩下的就安排給控制方式傳輸數(shù)據(jù)。3.2 USB的總線協(xié)議3.2.1 總線拓?fù)浣Y(jié)構(gòu)USB總線的物理連接是一種分層的菊花鏈結(jié)構(gòu),集線器(hub)是每個(gè)星形結(jié)構(gòu)的中心。PC機(jī)就是主機(jī)和根Hub,用戶可以將外設(shè)或附加的Hub與之相連。這些附加的Hub可以連接另外的外設(shè)以及下層HubUSB。支持最多5個(gè)Hub層以及127個(gè)外設(shè)。圖2.1描述了USB的物理拓?fù)浣Y(jié)構(gòu),從中可以看出每一段的連接都是點(diǎn)對(duì)點(diǎn)的。圖 2.1

30、USB總線拓?fù)?.2.2USB的物理層USB的物理接口包括電氣特性和機(jī)械特性。USB通過(guò)一個(gè)四線電纜來(lái)傳輸信號(hào)與電源,如圖2.2所示 圖2.2 USB電纜定義 其中D+和D-是一對(duì)差模的信號(hào)線,而VBus和GND則提供了+5V的電源,它可以給一些設(shè)備(包括Hub)供電,當(dāng)然要有一定的條件限制。USB提供了兩種數(shù)據(jù)傳輸率:一種是12Mb的高速(fullspeed)模式,另一種是1.5Mb的低速模式。這兩種模式可以同時(shí)存在于一個(gè)USB系統(tǒng)中而引入低速模式,主要是為了降低要求不高的設(shè)備的成本,比如鼠標(biāo)、鍵盤(pán)等等USB信號(hào)線在高速模式下必須使用帶有屏蔽的雙絞線,而且最長(zhǎng)不能超過(guò)5m;而在低速模式時(shí)中可

31、以使用不帶屏蔽或不是雙絞的線,但最長(zhǎng)不能超過(guò)3m。這主要是由于信號(hào)衰減的限制。為了提供信號(hào)電壓保證,以及與終端負(fù)載相匹配,在電纜的每一端都使用了不平衡的終端負(fù)載。這種終端負(fù)載也保證了能夠檢測(cè)外設(shè)與端口的連接或分離,并且可以區(qū)分高速與低速設(shè)備。所有的設(shè)備都有上行的接口。上行和下行的接頭是不能互換的,這保證了不會(huì)有非法的連接出現(xiàn)。插頭與插座有兩個(gè)系列分別為A和B,系列A用于基本固定的外圍設(shè)備,而系列B用于經(jīng)常拔插的設(shè)備,這兩個(gè)系列是不能互換的 。3.2.3USB總線協(xié)議所有總線操作都可以歸結(jié)為三種包的傳輸。任何操作都是從主機(jī)開(kāi)始的,主機(jī)以預(yù)先排好的時(shí)序,發(fā)出一個(gè)描述操作類(lèi)型、方向、外設(shè)地址以及端點(diǎn)

32、號(hào)(這將在以下部分給予解釋)的包,我們稱之為令牌包(Token Packet)。然后在令牌中指定的數(shù)據(jù)發(fā)送者發(fā)出一個(gè)數(shù)據(jù)包或者指出它沒(méi)有數(shù)據(jù)可以傳輸。而數(shù)據(jù)的目的地一般要以一個(gè)確認(rèn)包(Handshake Packet)作出響應(yīng)以表明傳輸是否成功。一 域的類(lèi)型同步域(SYNC field):所有的包都起始于SYNC域,它被用于本地時(shí)鐘與輸入信號(hào)的同步,并且在長(zhǎng)度上定義為8位。SYNC的最后兩位作為一個(gè)記號(hào)表明PID域(標(biāo)識(shí)域)的開(kāi)始。在以后的敘述中,SYNC域?qū)⒈皇∪?。?biāo)識(shí)域(Packet Identifier Field):對(duì)于每個(gè)包,PID都是緊跟著SYNC的,PID指明了包的類(lèi)型及其格式。

33、主機(jī)和所有的外設(shè)都必須對(duì)接收到的PID域進(jìn)行解碼。如果出現(xiàn)錯(cuò)誤或者解碼為未定義的值,那么這個(gè)包就會(huì)被接收者忽略。如果外設(shè)接收到一個(gè)PID,它所指明的操作類(lèi)型或者方向不被支持,外設(shè)將不作出響應(yīng)。地址域(Address Field):外設(shè)端點(diǎn)都是由地址域指明的,它包括兩個(gè)子域:外設(shè)地址和外設(shè)端點(diǎn)。外設(shè)必須解讀這兩個(gè)域,其中有任何一個(gè)不匹配,這個(gè)令牌就會(huì)被忽略。外設(shè)地址域(ADDR)指定了外設(shè),它根據(jù)PID所說(shuō)明的令牌的類(lèi)型,指明了外設(shè)是數(shù)據(jù)包的發(fā)送者或接收者。ADDR共6位,因此最多可以有127個(gè)地址。一旦外設(shè)被復(fù)位或上電,外設(shè)的地址被缺省為0,這時(shí)必須在主機(jī)枚舉過(guò)程中被賦予一個(gè)獨(dú)一的地址。而0地

34、址只能用于缺省值而不能分配作一般的地址。端點(diǎn)域(ENDP)有4位,它使設(shè)備可以擁有幾個(gè)子通道。所有的設(shè)備必須支持一個(gè)控制端點(diǎn)0(endpoint0)。低速的設(shè)備最多支持2個(gè)端點(diǎn):0和一個(gè)附加端點(diǎn)。高速設(shè)備可以支持最多16個(gè)端點(diǎn)。幀號(hào)域(Frame Number Field):這是一個(gè)11位的域,指明了目前幀的排號(hào),每過(guò)一幀(1ms)這個(gè)域的值加1,到達(dá)最大值XFF后返回0。這個(gè)域只存在于每幀開(kāi)始時(shí)的SOF令牌中SOF令牌在下面將詳細(xì)介紹。數(shù)據(jù)域(Data Field):范圍是01023字節(jié),而且必須是整數(shù)個(gè)字節(jié)。CRC校驗(yàn):包括令牌校驗(yàn)和數(shù)據(jù)校驗(yàn)。二包的類(lèi)型令牌包(Token Packed):

35、 其中包括:IN(輸入)、OUT(輸出)、SETUP(設(shè)置)和SOF(Start of Frame,幀起始)四種類(lèi)型。其中IN、OUT、SETUP的格式如圖2.8所示。圖2.8 INOUTSETUP數(shù)據(jù)格式對(duì)于OUT和SETUP來(lái)說(shuō),ADDR和ENDP中所指明的端點(diǎn)將接收到主機(jī)發(fā)出的數(shù)據(jù)包,而對(duì)IN來(lái)說(shuō),所指定的端點(diǎn)將輸出一個(gè)數(shù)據(jù)包。Token和SOF在三個(gè)字節(jié)的時(shí)間內(nèi)以一個(gè)EOP(End of Packet)結(jié)束。如果一個(gè)包被解碼為T(mén)oken包但是并沒(méi)有在3個(gè)字節(jié)時(shí)間內(nèi)以EOP結(jié)束,它就會(huì)被看作非法或被忽略。對(duì)于SOF包,它的格式如圖2.9所示。主機(jī)以一定的速率(1ms±0.05一

36、次)發(fā)送SOF包,SOF不引起任何操作。圖2.9 SOF數(shù)據(jù)格式數(shù)據(jù)包:包括Data0和Data1兩種類(lèi)型。這兩種包的定義是為了支持?jǐn)?shù)據(jù)觸發(fā)同步。數(shù)據(jù)包包含了PID、DATA和CRC三個(gè)域圖2.10。圖2.10 DATA數(shù)據(jù)格式應(yīng)答包(Handshake Packet):僅包含一個(gè)PID域圖2.11。Handshake用來(lái)報(bào)告數(shù)據(jù)傳輸?shù)臓顟B(tài)。只有支持流控制的傳輸類(lèi)型(控制中斷和批傳輸)才能返回Handshake。圖2.11 PID數(shù)據(jù)格式Handshake包有三種類(lèi)型:(1)確認(rèn)包ACK:表明數(shù)據(jù)接收成功。(2)無(wú)效包NAK:指出設(shè)備暫時(shí)不能傳送或接收數(shù)據(jù),但無(wú)需主機(jī)介入,可以解釋成設(shè)備忙。(

37、3)出錯(cuò)包STALL:指出設(shè)備不能傳送或接收數(shù)據(jù),但需要主機(jī)介入才能恢復(fù),NAK和STALL不能由主機(jī)發(fā)出。特殊包(Special):PID名稱為PRE(preamble),用于低速操作的情形 三總線操作的格式批操作bulk transaction:批操作包括令牌、數(shù)據(jù)、應(yīng)答三個(gè)階段,如圖2.12所示。對(duì)于輸入操作,如果設(shè)備不能返回?cái)?shù)據(jù),那么必須發(fā)出NAK或STALL包;對(duì)于輸出如果設(shè)備不能接收數(shù)據(jù),也要返回NAK或STALL。 圖2.12 批操作流程圖2.13描述了批操作的讀寫(xiě)過(guò)程以及序列位(sequence bit)和數(shù)據(jù)包PID的使用詳見(jiàn)圖2.13 批操作讀寫(xiě)過(guò)程控制操作(control

38、 transaction): 控制操作(control transfer)主要包括兩個(gè)操作階段(transaction stage):設(shè)置和狀態(tài)。圖2.14給出了設(shè)置操作的細(xì)節(jié),如果數(shù)據(jù)沒(méi)有正確接收,那么設(shè)備就會(huì)忽略它,而且不返回應(yīng)答包。圖2.14 控制操作流程下面是控制操作的詳細(xì)描述圖2.15,其中我們要注意數(shù)據(jù)包PID的使用。圖2.15 控制操作讀寫(xiě)過(guò)程中斷操作(interrupt transaction): 中斷操作只有輸入這一個(gè)方向,具體格式與批操作的輸入情形類(lèi)似圖2.16。圖2.16 中斷操作流程同步操作(isochronous transaction): 同步操作不同于其他類(lèi)型,只

39、包含兩個(gè)階段:令牌和數(shù)據(jù)圖2.17。因?yàn)橥絺鬏敳恢С种匕l(fā)的能力,所以沒(méi)有應(yīng)答階段。另外它也不支持?jǐn)?shù)據(jù)的觸發(fā)同步與重試。圖2.17 同步操作流程四數(shù)據(jù)觸發(fā)同步與重試USB提供了保證數(shù)據(jù)序列同步的機(jī)制這一機(jī)制,確保了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。這一同步過(guò)程是通過(guò)Data0和Data1的PID以及發(fā)送者與接收者上的數(shù)據(jù)觸發(fā)序列位(data toggle sequence bit)來(lái)實(shí)現(xiàn)的。接收者的序列位只有當(dāng)接收到一個(gè)正確的數(shù)據(jù)包時(shí)(包括正確的PID)才能被觸發(fā)。而發(fā)送者的序列位只有當(dāng)接收到確認(rèn)包ACK時(shí)才能被觸發(fā)。在總線傳輸?shù)拈_(kāi)始,發(fā)送者與接收者的序列位必須一致,這是由控制命令來(lái)實(shí)現(xiàn)的。同步傳輸方式不支持

40、數(shù)據(jù)觸發(fā)同步。圖2.182.192.20說(shuō)明了數(shù)據(jù)觸發(fā)同步的基本原理圖2.18 數(shù)據(jù)觸發(fā)與同步一圖2.19 數(shù)據(jù)觸發(fā)與同步二圖2.20 數(shù)據(jù)觸發(fā)與同步三每次總線操,作接收者將發(fā)送者的序列位(被譯碼成數(shù)據(jù)包PID的一位,即Data0或Data1)與本身的相比較。如果數(shù)據(jù)不能接收,則必須發(fā)送NAK。如果數(shù)據(jù)可以被接收,并且兩者的序列位匹配,則該數(shù)據(jù)被接收并且發(fā)送ACK,同時(shí)接收者的序列位被觸發(fā)。如果數(shù)據(jù)可以被接收,但兩者的序列位不匹配,則接收者只發(fā)出ACK而不進(jìn)行其它操作。對(duì)于發(fā)送者來(lái)說(shuō),在接收到NAK時(shí)或在規(guī)定時(shí)間內(nèi)沒(méi)有接收到ACK,則將上一次的數(shù)據(jù)重發(fā)。五低速操作Hub具有禁止高速信號(hào)進(jìn)入低速

41、設(shè)備的能力,這既防止了電磁干擾的發(fā)生,又保護(hù)了低速設(shè)備。圖2.21是一次低速的輸入操作,主機(jī)發(fā)送令牌與應(yīng)答包并且接收了一個(gè)數(shù)據(jù)包。圖2.21 低速方式的輸入操作所有下行的低速傳輸?shù)陌仨毾劝l(fā)送一個(gè)PRE包。Hub必須解釋PRE包,而所有其它的USB設(shè)備必須忽略這個(gè)包。主機(jī)在發(fā)送完P(guān)RE包后,必須等待至少4位的時(shí)間,而在這個(gè)期間,Hub完成必要的設(shè)置,使之能接收低速的信號(hào)。在接收到EOP信號(hào)之后,Hub關(guān)閉低速設(shè)備的端口。上行的操作則沒(méi)有上述的行為,低速與高速是一樣的。 低速操作還有其它的限制 :(1)數(shù)據(jù)包最大限制為8個(gè)字節(jié)。(2)只支持中斷和控制傳輸方式。六錯(cuò)誤檢驗(yàn)與恢復(fù) USB具有檢查錯(cuò)

42、誤的能力,并且可以根據(jù)傳輸類(lèi)型的要求進(jìn)行相應(yīng)的處理。例如,控制傳輸?shù)男枰芨叩臄?shù)據(jù)準(zhǔn)確度,因此支持所有錯(cuò)誤檢驗(yàn)與重試來(lái)實(shí)現(xiàn)端對(duì)端的數(shù)據(jù)完整傳輸。而同步傳輸不允許重試,因此必須具有一定的容錯(cuò)性。USB這種檢查錯(cuò)誤的能力包括:PID檢驗(yàn)、CRC檢驗(yàn)、總線時(shí)間溢出以及EOP錯(cuò)誤檢驗(yàn)等等。第四章 串口通信接口設(shè)計(jì) 4.1 設(shè)計(jì)選擇由于實(shí)際應(yīng)用中單片機(jī)在數(shù)據(jù)處理能力、人機(jī)交互等方面往往不能滿足要求, 因而通常用PC 來(lái)彌補(bǔ)單片機(jī)的這些不足。例如, 在工程應(yīng)用中, 常常由一臺(tái)PC 機(jī)和一臺(tái)單片機(jī)構(gòu)成主從式計(jì)算機(jī)測(cè)控系統(tǒng)。在這樣的系統(tǒng)中, 以單片機(jī)為核心的智能測(cè)控儀表( 從機(jī)) 作為現(xiàn)場(chǎng)測(cè)控設(shè)備, 完成數(shù)據(jù)

43、的采集、處理和控制各種任務(wù), 同時(shí)將數(shù)據(jù)傳給PC 機(jī)( 主機(jī)) , PC 機(jī)將這些數(shù)據(jù)加工處理后, 進(jìn)行顯示、打印報(bào)表等。 PC 機(jī)也可以將各種控制命令傳送給單片機(jī), 干預(yù)單片機(jī)系統(tǒng)的運(yùn)行, 從而發(fā)揮PC機(jī)的優(yōu)勢(shì)。要實(shí)現(xiàn)這樣的功能, 就涉及到PC機(jī)與單片機(jī)之間的通信問(wèn)題。在本設(shè)計(jì)中選擇選擇PC機(jī)上的通信串口RS-232負(fù)責(zé)PC機(jī)上的數(shù)據(jù)發(fā)送和接收,使用的單片機(jī)是AT8C951。 AT 89C51 是一種低功耗、高性能的8 位單片微型計(jì)算機(jī), 它采用了CMOS 工藝和ATMEL 公司的高密度NVRAM( 非易失性隨機(jī)存儲(chǔ)器) 技術(shù), 片內(nèi)帶有一個(gè)4KB 的FLASH FPROM( 可擦除、可編程

44、只讀存儲(chǔ)器) , 作為INTEL8051 的換代產(chǎn)品, 其輸出引腳和指令系統(tǒng)與MCS- 51 完全兼容。由于AT89C51單片機(jī)具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜等諸多優(yōu)點(diǎn), 因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測(cè)量等方面有著廣泛的應(yīng)用。因本設(shè)計(jì)在實(shí)現(xiàn)PC機(jī)與單片機(jī)的串行通信的中間介質(zhì)是USB,因此在USB的模塊選擇上選擇USB模塊CH375。4.2 接口電路設(shè)計(jì)在設(shè)計(jì)硬件接口電路時(shí), 應(yīng)充分考慮到電路的電氣特性、邏輯電平以及驅(qū)動(dòng)能力的匹配問(wèn)題, 若匹配得不好, 將會(huì)導(dǎo)致通信失敗。4.2.1 PC機(jī)串行通信接口標(biāo)準(zhǔn)RS-232CPC 機(jī)上均帶有標(biāo)準(zhǔn)的RS- 232C 接口。RS-2

45、32C 是由美國(guó)電子工業(yè)協(xié)會(huì)( Electronic IndustryAssociation)于1969 年正式公布的在異步串行通信中應(yīng)用最為廣泛的標(biāo)準(zhǔn)總線接口, 它的全稱是/ 數(shù)據(jù)終端設(shè)備( DTE ) 和數(shù)據(jù)通信設(shè)備( DCE) 之間的串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)0, 適合于短距離通信或帶調(diào)制解調(diào)器的通信應(yīng)用場(chǎng)合。RS- 232C 標(biāo)準(zhǔn)規(guī)定在碼元畸變小于4% 的情況下, 傳輸電纜長(zhǎng)度應(yīng)為15m, 其實(shí)這個(gè)4%的碼元畸變是很保守的,在實(shí)際應(yīng)用中, 約有99% 的用戶是按碼元畸變0% 20% 的范圍工作的, 所以實(shí)際使用中最大距離會(huì)超過(guò)15m。采用RS- 232 標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)傳輸時(shí), 最大傳

46、輸速率為20kbit/ s。另外傳輸速率與傳輸距離之間具有相關(guān)性, 適當(dāng)降低傳輸速率就可加大傳輸距離, 反之, 適當(dāng)減少傳輸距離就可提高傳輸速率。1.RS-232C 的接口信號(hào):RS- 232C 采用負(fù)邏輯, 用- 5 - 15V 表示邏輯/ l0, 用+ 5 + 15V 表示邏輯/ 00。噪聲容限為2V, 即要求接收器能識(shí)別低至+ 3V 的信號(hào)作為邏輯/ 00, 高到- 3V 的信號(hào)作為邏輯/ 10 。RS- 232C只能進(jìn)行一對(duì)一的通信, RS- 232C 可使用9 針或25 針的D 型連接器, 圖4-1 列出了RS- 232C 接口各引腳信號(hào)的定義以及9 針與25 針引腳的對(duì)應(yīng)關(guān)系。圖4

47、-1 RS- 232C 接口引腳信號(hào)定義2RS-232的不足:由于RS232接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn): (1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。 (2)傳輸速率較低,在異步傳輸時(shí),波特率20Kbps。 (3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。 (4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺(實(shí)際15米)。 4.2.2 串口通信的接收過(guò)程異步通信:接收器和發(fā)送器有各自的時(shí)鐘;同步通信:發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制。RS2

48、32采用的是異步通信。(1)開(kāi)始通信時(shí),信號(hào)線為空閑(邏輯1),當(dāng)檢測(cè)到由1到0的跳變時(shí),開(kāi)始對(duì)“接收時(shí)鐘”計(jì)數(shù)。(2)當(dāng)計(jì)到8個(gè)時(shí)鐘時(shí),對(duì)輸入信號(hào)進(jìn)行檢測(cè),若仍為低電平,則確認(rèn)這是“起始位”,而不是干擾信號(hào)。(3)接收端檢測(cè)到起始位后,隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D0位數(shù)據(jù)。若為邏輯1, 作為數(shù)據(jù)位1;若為邏輯0,作為數(shù)據(jù)位0。(4)再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù),直到全部數(shù)據(jù)位都輸入。(5)檢測(cè)校驗(yàn)位P(如果有的話)。(6)接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位后,通信接口電路希望收到停止位S(邏輯1),若此時(shí)未收到邏輯1,說(shuō)明出現(xiàn)了錯(cuò)誤,

49、在狀態(tài)寄存器中置“幀錯(cuò)誤”標(biāo)志。若沒(méi)有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無(wú)校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器中送數(shù)據(jù)輸入寄存器。若校驗(yàn)錯(cuò),在狀態(tài)寄存器中置奇偶錯(cuò)標(biāo)志。(7)本幀信息全部接收完,把線路上出現(xiàn)的高電平作為空閑位。(8)當(dāng)信號(hào)再次變?yōu)榈蜁r(shí),開(kāi)始進(jìn)入下一幀的檢測(cè)。單片機(jī)常用11.0592M的的晶振,這個(gè)奇怪?jǐn)?shù)字是有來(lái)歷的:波特率為9600BPS每位位寬t1=1/9600s晶振周期t2=1/11.0592/1000000S單片機(jī)機(jī)器周期t3=12*t2t1/t3=96即對(duì)于9600BPS的串口,單片機(jī)對(duì)其以96倍的速率進(jìn)行采樣。如果單片機(jī)晶振用的不正確,會(huì)對(duì)串口接受產(chǎn)生誤碼。4.2.3 USB

50、模塊CH375USB模塊CH375是一個(gè)USB總線的通用設(shè)備接口芯片,用戶無(wú)需編寫(xiě)驅(qū)動(dòng)程序,內(nèi)置有USB通訊中的底層協(xié)議,完全滿足USB1.1標(biāo)準(zhǔn)。具有8位數(shù)據(jù)總線(D0D7)、地址輸入(A0)、讀(RD#)、 寫(xiě)(WR#)、片選控制線(CS#)以及中斷輸出(INT#),可以方便地掛接到單片機(jī)的數(shù)據(jù)總線上。當(dāng)A0為低電平時(shí)選擇數(shù)據(jù)端口,單片機(jī)通過(guò)8位并口對(duì)CH375進(jìn)行讀寫(xiě)數(shù)據(jù);為高電平時(shí)選擇命令端口,可以向其寫(xiě)入命令。圖4-6是由CH375構(gòu)成的USB接口電路原理圖、圖4-7即是由USB模塊CH375構(gòu)成的通信接口電路圖。 圖4-6 CH375構(gòu)成的USB接口電路原理圖 圖4-6USB模塊C

51、H375構(gòu)成的通信接口電路在本地端,單片機(jī)對(duì)CH375的操作是采用命令加數(shù)據(jù)的I/O操作方式,任何操作都是先發(fā)命令(其命令格式參考文獻(xiàn)3)給CH375,然后執(zhí)行數(shù)據(jù)輸入輸出。CH375接收到上位機(jī)發(fā)送的數(shù)據(jù)或者發(fā)送完給上位機(jī)的數(shù)據(jù)后,以中斷方式通知單片機(jī)。 將CH375芯片的驅(qū)動(dòng)程序、動(dòng)態(tài)鏈接庫(kù)拷貝到上位機(jī)中,利用CH375動(dòng)態(tài)鏈接庫(kù)DLL提供的API函數(shù)對(duì)其進(jìn)行操作,對(duì)USB設(shè)備的通信就幾乎和訪問(wèn)本地硬盤(pán)中的文件差不多了4.2.4 USB接口的軟件設(shè)計(jì)各通道的USB模塊CH375在計(jì)算機(jī)應(yīng)用層與其本地端單片機(jī)AT89C51之間提供了端對(duì)端的連接。統(tǒng)一采用數(shù)據(jù)加應(yīng)答方式進(jìn)行通信,所有的通信都由

52、計(jì)算機(jī)應(yīng)用層發(fā)起,然后以接收到單片機(jī)的應(yīng)答結(jié)束。單一通道完整的通信過(guò)程包括: 計(jì)算機(jī)應(yīng)用層按事先約定的格式將數(shù)據(jù)請(qǐng)求發(fā)送給CH375; CH375以中斷方式通知單片機(jī); 單片機(jī)進(jìn)入中斷服務(wù)程序,獲取CH375的中斷狀態(tài)并分析; 如果是上傳(上傳緩沖區(qū)的數(shù)據(jù)被計(jì)算機(jī)成功讀?。?,則釋放當(dāng)前USB緩沖區(qū),然后退出中斷程序; 如果是下傳(下傳緩沖區(qū)成功接收到計(jì)算機(jī)發(fā)送的數(shù)據(jù)),則從數(shù)據(jù)下傳緩沖區(qū)讀取數(shù)據(jù)塊; 分析接收到的數(shù)據(jù)塊,如果是數(shù)據(jù)請(qǐng)求上傳命令,準(zhǔn)備應(yīng)答數(shù)據(jù)(采集數(shù)據(jù)); 單片機(jī)將采集數(shù)據(jù)寫(xiě)入數(shù)據(jù)上傳緩沖區(qū)中,然后退出中斷程序; CH375將采集數(shù)據(jù)返回給計(jì)算機(jī); 計(jì)算機(jī)應(yīng)用層接收到應(yīng)答數(shù)據(jù),傳

53、輸結(jié)束; 該通訊方式具有數(shù)據(jù)自動(dòng)同步、程序設(shè)計(jì)簡(jiǎn)單、較好的交互性和可控性等優(yōu)點(diǎn)。計(jì)算機(jī)定時(shí)以此方式順次訪問(wèn)各通道,獲取各通道采集到的數(shù)據(jù)4.3 通信程序設(shè)計(jì)關(guān)于通信程序設(shè)計(jì), 本文只舉一個(gè)簡(jiǎn)單的例子:PC 機(jī)從鍵盤(pán)上輸入一個(gè)字符, 然后將這個(gè)字符發(fā)送給USB,USB又傳送給單片機(jī), 單片機(jī)接收到這個(gè)字符后, 不做任何處理, 又將它發(fā)送給USB,USB又傳送給PC 機(jī), PC 機(jī)將這個(gè)字符顯示在屏幕上, 如果顯示的字符與輸入的字符一致, 則表明PC 機(jī)與單片機(jī)通過(guò)USB通信正常。在設(shè)計(jì)PC 機(jī)與單片機(jī)通信程序時(shí), 應(yīng)首先明確數(shù)據(jù)傳輸協(xié)議, 例如: 數(shù)據(jù)傳輸?shù)膸袷健⒉ㄌ芈?、PC 機(jī)與單片機(jī)在實(shí)現(xiàn)

54、異步通信時(shí)的工作方式等。為了實(shí)現(xiàn)通信, 雙方約定如下:波特率: 2400bit/ s;幀格式: 10 位為一幀, 包括1 個(gè)起始位, 8 個(gè)數(shù)據(jù)位和1 個(gè)停止位;傳送方式: PC 機(jī)采用查詢方式收發(fā)數(shù)據(jù), 單片機(jī)采用中斷方式收發(fā)數(shù)據(jù)。4.3.1 PC機(jī)通信程序PC 機(jī)的通信程序采用T urbo C 編寫(xiě), 程序清單如下:# include studio.hmain( )char c1, c2;int coms;outportb( 0x3fb, 0x80) ; / * 初始化 * /outportb( 0x3f8, 0x30) ;outportb( 0x3f9, 0x00) ;outportb(

55、 0x3fb, 0x03) ; / * 8 位數(shù)據(jù), 1 位停止位* /outportb( 0x3fc, 0x03) ;c1= getchar( ) ;do / * 查詢發(fā)送緩沖器是否為空* /coms= inportb( 0x3fd)&0x20; while( coms! = 0x20) ;outportb( 0x3f8, c1) ;waitok: / * 查詢接收數(shù)據(jù)是否為有效* /coms= inportb( 0x3fd) ;if( ( coms&0x01) = = 0)goto waitok;c2= inportb( 0x3f8) ;printf(dThe r etur

56、n char is:d) ;putchar( 2) ;4.3.2 AT8C951單片機(jī)端的通信程序采用C語(yǔ)言編程,編寫(xiě)單片機(jī)端AT89c51中斷1服務(wù)處理程序的基本框架如下所示:void int1_isr (void) /USB中斷入口程序CH375_WR_CMD_PORT(CMD_GET_STATUS); /向CH375發(fā)送中斷狀態(tài)獲取命令I(lǐng)nterruptStatus = CH375_RD_DAT_PORT();/獲取中斷狀態(tài),并通知CH375取消中斷請(qǐng)求/ 分析中斷狀態(tài),并做相應(yīng)處理if ( InterruptStatus= =USB_INT_EP2_OUT) / 數(shù)據(jù)下傳CH375_WR_CMD_PORT( CMD_RD_USB_DATA );/ 向CH375發(fā)送讀數(shù)據(jù)命令RD_Data =CH375_RD_DAT_PORT( );/從CH375下傳緩沖區(qū)讀取數(shù)據(jù)塊 /分析接收到的數(shù)據(jù)塊CH375_WR_CMD_PORT(CMD_WR_USB_DATA7); / 向CH375發(fā)送寫(xiě)數(shù)據(jù)命令CH375_WR_DAT_PORT( DATA);/ 將采集數(shù)據(jù)DATA寫(xiě)

溫馨提示

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