![基于USB單片機(jī)與PC的串行通信_第1頁](http://file4.renrendoc.com/view11/M00/20/0D/wKhkGWVv1saAHrxaAAEuaDDT-YI829.jpg)
![基于USB單片機(jī)與PC的串行通信_第2頁](http://file4.renrendoc.com/view11/M00/20/0D/wKhkGWVv1saAHrxaAAEuaDDT-YI8292.jpg)
![基于USB單片機(jī)與PC的串行通信_第3頁](http://file4.renrendoc.com/view11/M00/20/0D/wKhkGWVv1saAHrxaAAEuaDDT-YI8293.jpg)
![基于USB單片機(jī)與PC的串行通信_第4頁](http://file4.renrendoc.com/view11/M00/20/0D/wKhkGWVv1saAHrxaAAEuaDDT-YI8294.jpg)
![基于USB單片機(jī)與PC的串行通信_第5頁](http://file4.renrendoc.com/view11/M00/20/0D/wKhkGWVv1saAHrxaAAEuaDDT-YI8295.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計(jì)題目:PC與單片機(jī)通過USB接口實(shí)現(xiàn)串行通信畢業(yè)設(shè)計(jì)專業(yè):電子信息工程技班級:電子1001姓名:***摘要基于串口通訊的原理,分析和討論了計(jì)算機(jī)與單片機(jī)如何通過USB接口使用相關(guān)的通訊協(xié)議實(shí)現(xiàn)串行通信的。本設(shè)計(jì)主要介紹如何使用一臺計(jì)算機(jī)與一臺單片機(jī)通過USB接口實(shí)現(xiàn)串行通信。在本設(shè)計(jì)中單片機(jī)采用AT89C51,USB轉(zhuǎn)接芯片CH341;軟件設(shè)計(jì)方面,PC機(jī)采用C語言編程,單片機(jī)方面用中斷方式完成數(shù)據(jù)的接收和發(fā)送,程序開發(fā)采用匯編語言和KeilC語言。關(guān)鍵字:PC機(jī),單片機(jī),USB,串行通信目錄第1章前言11.1本課題研究的目的和背景11.2本課題研究的主要內(nèi)容1第2章串行通信根底32.1串口通信的根本知識3并行通信與串行通信3串行通信工作模式5異步傳輸和同步傳輸6第3章USB通信原理簡介73.1USB簡介73.1.1USB設(shè)備83.1.2USB的優(yōu)點(diǎn)9傳輸方式103.2USB的總線協(xié)議11總線拓?fù)浣Y(jié)構(gòu)113.2.2USB的物理層113.2.3USB總線協(xié)議12第4章PC與單片機(jī)通過USB的通信設(shè)計(jì)204.1設(shè)計(jì)方案選擇204.1.1PC機(jī)同單片機(jī)通信存在的問題214.1.2USB接口同RS-232(DB-9)串口的比較214.1.3USB轉(zhuǎn)接芯片的選擇214.2硬件設(shè)計(jì)22硬件電路設(shè)計(jì)22硬件驅(qū)動程序安裝234.3通信程序設(shè)計(jì)234.3.1PC機(jī)與USB通信程序設(shè)計(jì)23單片機(jī)通信程序設(shè)計(jì)254.4USB通信模塊調(diào)試27結(jié)論28致謝29參考文獻(xiàn)30第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)測設(shè)備進(jìn)行通訊?,F(xiàn)場數(shù)據(jù)必須通過一個(gè)數(shù)據(jù)收集器傳給上位機(jī),同樣上位機(jī)向現(xiàn)場設(shè)備發(fā)命令也必須通過數(shù)據(jù)收集器。串行通信因其結(jié)構(gòu)簡單、執(zhí)行速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn),已被廣泛應(yīng)用于數(shù)據(jù)采集和過程控制等領(lǐng)域。計(jì)算機(jī)與外界的信息交換稱為通信。根本的通信方式有并行通信和串行通信兩種。串行通信是指一條信息額各位數(shù)據(jù)被逐位按順序傳送的通信方式。串行通信的特點(diǎn)是:數(shù)據(jù)位傳送,按位順序進(jìn)行,最少只需要一根傳輸線即可完成,本錢低但傳送速度快,串行通信的距離可以從幾米到幾千米。隨著計(jì)算機(jī)技術(shù)尤其是單片微型機(jī)技術(shù)的開展,人們已越來越多地采用單片機(jī)來對一些工業(yè)控制系統(tǒng)中如溫度、流量和壓力等參數(shù)進(jìn)行監(jiān)測和控制。PC機(jī)具有強(qiáng)大的監(jiān)控和管理能力,而單片機(jī)那么具有快速及靈和的控制特點(diǎn),通過PC機(jī)的RS-232串行接口與外部設(shè)備進(jìn)行通信,是許多測控系統(tǒng)中常用的一種通信解決方案。而隨著USB接口技術(shù)的成熟和使用的普及,由于USB接口有著RS-232(DB-9)串口無法比較的優(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)串口已是大勢所趨,單片機(jī)同計(jì)算機(jī)的USB通信在實(shí)際工作中的應(yīng)用范圍也將越來越廣。本文所介紹的單片機(jī)和PC機(jī)的USB通信方法,電路簡單,兼容性好,可移植性強(qiáng),故可作為單片機(jī)同計(jì)算機(jī)的USB通信模塊廣泛應(yīng)用于工業(yè)和電子產(chǎn)品的開發(fā)中。因此研究如何實(shí)現(xiàn)PC機(jī)與單片機(jī)通過USB之間的通信具有非常重要的現(xiàn)實(shí)意義。1.2本課題研究的主要內(nèi)容〔1〕串行通信原理介紹;〔2〕USB技術(shù)原理分析;〔3〕單片機(jī)和PC機(jī)通過USB實(shí)現(xiàn)串行通信設(shè)計(jì)與實(shí)現(xiàn)。本設(shè)計(jì)主要包含以下兩個(gè)方面:〔1〕硬件設(shè)計(jì):單片機(jī)及外圍電路設(shè)計(jì);〔2〕軟件設(shè)計(jì):單片機(jī)的通信控制程序,PC機(jī)的通信程序。第2章串行通信根底2.1串口通信的根本知識2.1.1并行通信與串行通信微機(jī)的信息交換有兩種方式進(jìn)行:串行通信方式和并行通信方式。1.串行通信串行通信的設(shè)備是最古老的溝通機(jī)制之一。從IBM個(gè)人電腦和兼容式電腦的時(shí)代開始,幾乎所有的計(jì)算機(jī)都配有一個(gè)或多個(gè)串行端口和一個(gè)并行端口。顧名思義,一個(gè)串行端口發(fā)送和接收串行數(shù)據(jù),一次一位數(shù)據(jù)。相反,一個(gè)并行端口一次發(fā)送和接收8位數(shù)據(jù),使用8個(gè)單獨(dú)的線路。提示:要使串行通信工作,你只需要一根三根線的電纜——1根發(fā)送,1根用來接收,1根接地。對于并行通信,你需要采用8條導(dǎo)線。盡管相對較慢的傳輸速度遠(yuǎn)低于并行端口,串行端口通信依然因?yàn)樗唵蔚脑O(shè)備、高的本錢效益以及過失可控性強(qiáng)而成為一個(gè)受歡送的連接選項(xiàng)。圖2-1顯示了使用串行口連接到計(jì)算機(jī)的設(shè)備。圖2-1一些常見的串行設(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ā)送或接收被稱為單雙工。開始傳輸時(shí),設(shè)備先發(fā)送一個(gè)起始位,其次是數(shù)據(jù)位。該數(shù)據(jù)位可以是五,六,七,或8位,基于商定而定。兩個(gè)發(fā)送方和接收器必須設(shè)置為相同的數(shù)據(jù)通信比特或正確的比特率。數(shù)據(jù)位被發(fā)送完后,就會發(fā)送一個(gè)停止位。一個(gè)停止位可以是一位,一個(gè)半位,或兩位。波特率是數(shù)據(jù)從一個(gè)設(shè)備到另一個(gè)的傳輸速度。波特率通常以每秒的位數(shù)〔bps〕來計(jì)量。注意:大多數(shù)串行設(shè)備傳輸七-八位數(shù)據(jù)。為了檢測數(shù)據(jù)已被正確發(fā)送,一個(gè)可選的校驗(yàn)位可以同數(shù)據(jù)位在一起。一個(gè)校驗(yàn)位可以是以下內(nèi)容:奇數(shù),偶數(shù),mark,space或無〔空的奇偶位標(biāo)志幾乎總是被使用〕。使用校驗(yàn)位提供了一個(gè)根本的機(jī)制,以檢測已發(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-225針和9針串行接口2.并行通信在計(jì)算機(jī)和終端之間的數(shù)據(jù)傳輸通常是靠電纜或信道上的電流或電壓變化實(shí)現(xiàn)的。如果一組數(shù)據(jù)的各數(shù)據(jù)位在多條線上同時(shí)被傳送,這種傳輸被稱為并行通信,如圖2-3所示。并行通信時(shí)數(shù)據(jù)的各個(gè)位同時(shí)傳送,可以字或字節(jié)為單位并行進(jìn)行。并行通信速度快,但用的通信線多、本錢高,故不宜進(jìn)行遠(yuǎn)距離通信。計(jì)算機(jī)或PLC各種內(nèi)部總線就是以并行方式傳送數(shù)據(jù)的。圖2-3并行通信2.1.2串行通信工作模式如果在通信過程的任意時(shí)刻,信息只能由一方A傳到另一方B,那么稱為單工。如果在任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但只能由一個(gè)方向上的傳輸存在,稱為半雙工傳輸。如果在任意時(shí)刻,線路上存在A到B和B到A的雙向信號傳輸,那么稱為全雙工。線就是二線全雙工信道。由于采用了回波抵消技術(shù),雙向的傳輸信號不致混淆不清。雙工信道有時(shí)也將收、發(fā)信道分開,采用別離的線路或頻帶傳輸相反方向的信號,如回線傳輸。在串行通信中,數(shù)據(jù)通常是在兩個(gè)站〔如終端和微機(jī)〕之間進(jìn)行傳送,按照數(shù)據(jù)流的方向可分成三種根本的傳送方式:全雙工、半雙工、和單工。但單工目前已很少采用,下面僅介紹前兩種方式。1.半雙工方式假設(shè)使用同一根傳輸線既作接收又作發(fā)送,雖然數(shù)據(jù)可以在兩個(gè)方向上傳送,但通信雙方不能同時(shí)收發(fā)數(shù)據(jù),這樣的傳送方式就是半雙工制,如圖2-4所示。采用半雙工方式時(shí),通信系統(tǒng)每一端的發(fā)送器和接收器,通過收/發(fā)開關(guān)轉(zhuǎn)接到通信線上,進(jìn)行方向的切換,因此,會產(chǎn)生時(shí)間延遲。收/發(fā)開關(guān)實(shí)際上是由軟件控制的電子開關(guān)。圖2-4半雙工方式當(dāng)計(jì)算機(jī)主機(jī)用串行接口連接顯示終端時(shí),在半雙工方式中,輸入過程和輸出過程使用同一通路。有些計(jì)算機(jī)和顯示終端之間采用半雙工方式工作,這時(shí),從鍵盤打入的字符在發(fā)送到主機(jī)的同時(shí)就被送到終端上顯示出來,而不是用回送的方法,所以防止了接收過程和發(fā)送過程同時(shí)進(jìn)行的情況。目前多數(shù)終端和串行接口都為半雙工方式提供了換向能力,也為全雙工方式提供了兩條獨(dú)立的引腳。在實(shí)際使用時(shí),一般并不需要通信雙方同時(shí)既發(fā)送又接收,像打印機(jī)這類的單向傳送設(shè)備,半雙工甚至單工就能勝任,也無需倒向。2.全雙工方式當(dāng)數(shù)據(jù)的發(fā)送和接收分流,分別由兩根不同的傳輸線傳送時(shí),通信雙方都能在同一時(shí)刻進(jìn)行發(fā)送和接收操作,這樣的傳送方式就是全雙工制,如圖2-5所示。在全雙工方式下,通信系統(tǒng)的每一端都設(shè)置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時(shí)在兩個(gè)方向上傳送。全雙工方式無需進(jìn)行方向的切換,因此,沒有切換操作所產(chǎn)生的時(shí)間延遲,這對那些不能有時(shí)間延誤的交互式應(yīng)用〔例如遠(yuǎn)程監(jiān)測和控制系統(tǒng)〕十分有利。這種方式要求通訊雙方均有發(fā)送器和接收器,同時(shí),需要2根數(shù)據(jù)線傳送數(shù)據(jù)信號〔可能還需要控制線和狀態(tài)線,以及地線〕。圖2-5全雙工2.1.3異步傳輸和同步傳輸串行傳輸中,數(shù)據(jù)是一位一位按照到達(dá)的順序依次傳輸?shù)?,每位?shù)據(jù)的發(fā)送和接收都需要時(shí)鐘來控制。發(fā)送端通過發(fā)送時(shí)鐘確定數(shù)據(jù)位的開始和結(jié)束,接收端需要在適當(dāng)?shù)臅r(shí)間間隔對數(shù)據(jù)流進(jìn)行采樣來正確的識別數(shù)據(jù)。接收端和發(fā)送端必須保持步調(diào)一致,否那么數(shù)據(jù)傳輸就會出現(xiàn)過失。為了解決以上問題,串行傳輸可采用以下兩種方法:異步傳輸和同步傳輸。1.異步傳輸通常,異步傳輸是以字符為傳輸單位,每個(gè)字符都要附加1位起始位和1位停止位,以標(biāo)記一個(gè)字符的開始和結(jié)束,并以此實(shí)現(xiàn)數(shù)據(jù)傳輸同步。所謂異步傳輸是指字符與字符(一個(gè)字符結(jié)束到下一個(gè)字符開始)之間的時(shí)間間隔是可變的,并不需要嚴(yán)格地限制它們的時(shí)間關(guān)系。起始位對應(yīng)于二進(jìn)制值0,以低電平表示,占用1位寬度。停止位對應(yīng)于二進(jìn)制值1,以高電平表示,占用1~2位寬度。一個(gè)字符占用5~8位,具體取決于數(shù)據(jù)所采用的字符集。例如,電報(bào)碼字符為5位、ASCII碼字符為7位、漢字碼那么為8位。此外,還要附加1位奇偶校驗(yàn)位,可以選擇奇校驗(yàn)或偶校驗(yàn)方式對該字符實(shí)施簡單的過失控制。發(fā)送端與接收端除了采用相同的數(shù)據(jù)格式(字符的位數(shù)、停止位的位數(shù)、有無校驗(yàn)位及校驗(yàn)方式等)外,還應(yīng)當(dāng)采用相同的傳輸速率。典型的速率有:9600b/s、19.2kb/s、56kb/s等。異步傳輸又稱為起止式異步通信方式,其優(yōu)點(diǎn)是簡單、可靠,適用于面向字符的、低速的異步通信場合。例如,計(jì)算機(jī)與Modem之間的通信就是采用這種方式。它的缺點(diǎn)是通信開銷大,每傳輸一個(gè)字符都要額外附加2~3位,通信效率比較低。例如,在使用Modem上網(wǎng)時(shí),普遍感覺速度很慢,除了傳輸速率低之外,與通信開銷大、通信效率低也密切相關(guān)。2.同步傳輸通常,同步傳輸是以數(shù)據(jù)塊為傳輸單位。每個(gè)數(shù)據(jù)塊的頭部和尾部都要附加一個(gè)特殊的字符或比特序列,標(biāo)記一個(gè)數(shù)據(jù)塊的開始和結(jié)束,一般還要附加一個(gè)校驗(yàn)序列(如16位或32位CRC校驗(yàn)碼),以便對數(shù)據(jù)塊進(jìn)行過失控制。所謂同步傳輸是指數(shù)據(jù)塊與數(shù)據(jù)塊之間的時(shí)間間隔是固定的,必須嚴(yán)格地規(guī)定它們的時(shí)間關(guān)系。和異步傳輸相比,數(shù)據(jù)傳輸單位的加長容易引起時(shí)鐘漂移。為了保證接收端能夠正確地區(qū)分?jǐn)?shù)據(jù)流中的每個(gè)數(shù)據(jù)位,收發(fā)雙主必須通過某種方法建立起同步的時(shí)鐘。可以在發(fā)送器和接收器之間提供一條獨(dú)立的時(shí)鐘線路,由線路的一端〔發(fā)送器或者接收器〕定期地在每個(gè)比特時(shí)間中向線路發(fā)送一個(gè)短脈沖信號,另一端那么將這些有規(guī)律的脈沖作為時(shí)鐘。這種技術(shù)在短距離傳輸時(shí)表現(xiàn)良好,但在長距離傳輸中,定時(shí)脈沖可能會和信息信號一樣受到破壞,從而出現(xiàn)定時(shí)誤差。另一種方法是通過采用嵌有時(shí)鐘信息的數(shù)據(jù)編碼位向接收端提供同步信息。第3章USB通信原理簡介3.1USB簡介USB(UniversalSerialBus,通用串行總線)是以Intel為主,并有Compaq,Microsoft,IBM,DEC,NorthernTelecom以及日本NEC等共七家公司共同制定的串行接口標(biāo)準(zhǔn),1994年11月制定了第一個(gè)草案,1996年2月公布了USB標(biāo)準(zhǔn)版本1.0。USB可把多達(dá)127個(gè)外設(shè)同時(shí)聯(lián)到你的系統(tǒng)上,所有的外設(shè)通過協(xié)議來共享USB的帶寬,其12Mbps的帶寬對于鍵盤,鼠標(biāo)等低中速外設(shè)是完全足夠的〔注:在1999年2月發(fā)布的USB標(biāo)準(zhǔn)版本2.0草案中,已建議將12Mbps的帶寬提升到120-240Mbps?!?。USB允許外設(shè)在主機(jī)和其它外設(shè)工作時(shí)進(jìn)行連接、配置、使用及移除,即所謂的即插即用〔Plug&Play〕。同時(shí)USB總線的應(yīng)用可以去除PC上過多的I/O端口,而以一個(gè)串行通道取代,使PC與外設(shè)之間的連接更容易。3.1.1USB設(shè)備USB設(shè)備包括Hub和功能設(shè)備,而功能設(shè)備又可以細(xì)分為定位設(shè)備字符設(shè)備等等。為了進(jìn)一步表達(dá),我們給出端點(diǎn)(endpoint)和管道(pipe)的概念。端點(diǎn):每一個(gè)USB設(shè)備在主機(jī)看來就是一個(gè)端點(diǎn)的集合,主機(jī)只能通過端點(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)號給出的。每個(gè)端點(diǎn)都有一定的特性。其中包括:傳輸方式、總線訪問、頻率、帶寬、端點(diǎn)號、數(shù)據(jù)包的最大容量等等。端點(diǎn)必須在設(shè)備配置后才能生效(端點(diǎn)0除外)。端點(diǎn)0通常為控制端點(diǎn)。用于設(shè)備初始化參數(shù)等。端點(diǎn)12等一般用作數(shù)據(jù)端點(diǎn)存放主機(jī)與設(shè)備間往來的數(shù)據(jù)。管道:一個(gè)USB管道是驅(qū)動程序的一個(gè)數(shù)據(jù)緩沖區(qū)與一個(gè)外設(shè)端點(diǎn)的連接,它代表了一種在兩者之間移動數(shù)據(jù)的能力。一旦設(shè)備被配置,管道就存在了。管道有兩種類型,數(shù)據(jù)流管道〔其中的數(shù)據(jù)沒有USB定義的結(jié)構(gòu)〕與消息管道〔其中的數(shù)據(jù)必須有USB定義的結(jié)構(gòu)〕管道只是一個(gè)邏輯上的概念。所有的設(shè)備必須支持端點(diǎn)0以作為設(shè)備的控制管道。通過控制管道可以獲取完全描述USB設(shè)備的信息,包括:設(shè)備類型、電源管理、配置、端點(diǎn)描述等等只要設(shè)備連接到USB上并且上電端點(diǎn)0就可以被訪問與之對應(yīng)的控制管道就存在了。一個(gè)USB設(shè)備可以分為三個(gè)層圖〔如圖3-1所示〕。最底層是總線接口,用來發(fā)送與接收包。中間層處理總線接口與不同的端點(diǎn)之間的數(shù)據(jù)流通。一個(gè)端點(diǎn)是數(shù)據(jù)最終的使用者或提供者,它可以看作數(shù)據(jù)的源或接收端。最上層就是USB設(shè)備所提供的功能,比方鼠標(biāo)或鍵盤等。圖3-1設(shè)備層次結(jié)構(gòu)3.1.2USB的優(yōu)點(diǎn)USB通信有如下幾個(gè)優(yōu)點(diǎn):1.USB為所有的USB外設(shè)提供了單一的、易于使用的標(biāo)準(zhǔn)的連接類型。這樣一來就簡化了USB外設(shè)的設(shè)計(jì),同時(shí)也簡化了用戶在判斷哪個(gè)插頭對應(yīng)哪個(gè)插槽時(shí)的任務(wù),實(shí)現(xiàn)了單一的數(shù)據(jù)通用接口。2.整個(gè)的USB的系統(tǒng)只有一個(gè)端口和一個(gè)中斷,節(jié)省了系統(tǒng)資源。3.USB支持熱插拔(hotplug)和PNP(Plug-and-Play),也就是說在不關(guān)閉PC的情況下可以平安的插上和斷開USB設(shè)備,計(jì)算機(jī)系統(tǒng)動態(tài)地檢測外設(shè)的插拔,并且動態(tài)地加載驅(qū)動程序。其他普通的外圍連接標(biāo)準(zhǔn),如SCSI設(shè)備等必須在關(guān)掉主機(jī)的情況下才能插拔外圍設(shè)備。4.USB在設(shè)備供電方面提供了靈活性。USB直接連接到Hub或者是連接到Host的設(shè)備可以通過USB電纜供電,也可以通過電池或者其它的電力設(shè)備來供電,或使用兩種供電方式的組合,并且支持節(jié)約能源的掛機(jī)和喚醒模式。5.USB提供全速12Mbps的速率和低速1.5Mbps的速率來適應(yīng)各種不同類型的外設(shè),USB2.0還支持480Mbps的高速傳輸速率。6.為了適應(yīng)各種不同類型外圍設(shè)備的要求,USB提供了四種不同的數(shù)據(jù)傳輸類型:控制傳輸Bulk數(shù)據(jù)、傳輸中斷數(shù)據(jù)傳輸和同步數(shù)據(jù)傳輸。同步數(shù)據(jù)傳輸可為音頻和視頻等實(shí)時(shí)設(shè)備的實(shí)時(shí)數(shù)據(jù)傳輸提供固定帶寬。7.USB的端口具有很靈活的擴(kuò)展性,一個(gè)USB端口串接上一個(gè)USBHub就可以擴(kuò)展為多個(gè)USB端口。3.1.3傳輸方式USB有四種的傳輸方式:控制(Control)、同步(isochronous)、中斷(interrupt)、大量(bulk)。如果是從硬件開始來設(shè)計(jì)整個(gè)的系統(tǒng)那還要正確選擇傳輸?shù)姆绞?,而作為一個(gè)驅(qū)動程序的書寫者就只需要弄清楚其采用的什么工作方式就行了。通常所有的傳輸方式下的主動權(quán)都在PC邊。1.控制(Control)方式傳輸:控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小。USB系統(tǒng)軟件用來主要進(jìn)行查詢、配置和給USB設(shè)備發(fā)送通用的命令??刂苽鬏敺绞娇梢园?、16、32和64字節(jié)的數(shù)據(jù),這依賴于設(shè)備和傳輸速度。控制傳輸?shù)湫偷赜迷谥饔?jì)算機(jī)和USB外設(shè)之間的端點(diǎn)(Endpoint)0之間的傳輸,但是指定供給商的控制傳輸能用到其它的端點(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ù)。對于同步傳輸來說,即時(shí)的數(shù)據(jù)傳遞比完美的精度和數(shù)據(jù)的完整性更重要一些。3.中斷(interrupt)方式:傳輸中斷方式傳輸主要用于定時(shí)查詢設(shè)備是否有中斷數(shù)據(jù)要傳輸,設(shè)備的端點(diǎn)模式器的結(jié)構(gòu)決定了它的查詢頻率,從1到255ms之間,這種傳輸方式典型的應(yīng)用在少量的分散的,不可預(yù)測數(shù)據(jù)的傳輸。鍵盤、操縱桿和鼠標(biāo)就屬于這一類型。中斷方式傳輸是單向的并且對于host來說只有輸入的方式。4.大量(bulk)傳輸:主要應(yīng)用在數(shù)據(jù)大量傳輸和接受數(shù)據(jù)上,同時(shí)又沒有帶寬和間隔時(shí)間要求的情況下,要求保證傳輸。打印機(jī)和掃描儀屬于這種類型。這種類型的設(shè)備適合于傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數(shù)據(jù)的傳輸完成之后再傳輸和接收數(shù)據(jù)。USB將其有效的帶寬分成各個(gè)不同的幀(frame),每幀通常是1ms時(shí)間長。每個(gè)設(shè)備每幀只能傳輸一個(gè)同步的傳輸包。在完成了系統(tǒng)的配置信息和連接之后,USB的host就對不同的傳輸點(diǎn)和傳輸方式做一個(gè)統(tǒng)籌安排,用來適應(yīng)整個(gè)的USB的帶寬。通常情況下,同步方式和中斷方式的傳輸會占據(jù)整個(gè)帶寬的90%剩下的就安排給控制方式傳輸數(shù)據(jù)。3.2USB的總線協(xié)議3.2.1總線拓?fù)浣Y(jié)構(gòu)圖3-2USB總線拓?fù)銾SB總線的物理連接是一種分層的菊花鏈結(jié)構(gòu),集線器(hub)是每個(gè)星形結(jié)構(gòu)的中心。PC機(jī)就是主機(jī)和根Hub,用戶可以將外設(shè)或附加的Hub與之相連。這些附加的Hub可以連接另外的外設(shè)以及下層HubUSB。支持最多5個(gè)Hub層以及127個(gè)外設(shè)。圖3-2描述了USB的物理拓?fù)浣Y(jié)構(gòu),從中可以看出每一段的連接都是點(diǎn)對點(diǎn)的。3.2.2USB的物理層USB的物理接口包括電氣特性和機(jī)械特性。USB通過一個(gè)四線電纜來傳輸信號與電源,如圖3-3所示。圖3-3USB電纜定義其中,D+和D-是一對差模的信號線,而VBus和GND那么提供了+5V的電源,它可以給一些設(shè)備(包括Hub)供電,但也要有一定的條件限制。USB提供了兩種數(shù)據(jù)傳輸率:一種是12Mb的高速(fullspeed)模式,另一種是1.5Mb的低速模式。這兩種模式可以同時(shí)存在于一個(gè)USB系統(tǒng)中。而引入低速模式,主要是為了降低要求不高的設(shè)備的本錢,比方鼠標(biāo)、鍵盤等等。USB信號線在高速模式下必須使用帶有屏蔽的雙絞線,而且最長不能超過5m;而在低速模式時(shí)中可以使用不帶屏蔽或不是雙絞的線,但最長不能超過3m。這主要是由于信號衰減的限制。為了提供信號電壓保證,以及與終端負(fù)載相匹配,在電纜的每一端都使用了不平衡的終端負(fù)載。這種終端負(fù)載也保證了能夠檢測外設(shè)與端口的連接或別離,并且可以區(qū)分高速與低速設(shè)備。所有的設(shè)備都有上行的接口。上行和下行的接頭是不能互換的,這保證了不會有非法的連接出現(xiàn)。插頭與插座有A和B兩個(gè)系列,系列A用于根本固定的外圍設(shè)備,而系列B用于經(jīng)常拔插的設(shè)備,這兩個(gè)系列是不能互換的。3.2.3USB總線協(xié)議所有總線操作都可以歸結(jié)為三種包的傳輸。任何操作都是從主機(jī)開始的,主機(jī)以預(yù)先排好的時(shí)序,發(fā)出一個(gè)描述操作類型、方向、外設(shè)地址以及端點(diǎn)號的包,我們稱之為令牌包(TokenPacket)。然后在令牌中指定的數(shù)據(jù)發(fā)送者發(fā)出一個(gè)數(shù)據(jù)包或者指出它沒有數(shù)據(jù)可以傳輸。而數(shù)據(jù)的目的地一般要以一個(gè)確認(rèn)包(HandshakePacket)來作出響應(yīng)以說明傳輸是否成功。1.域的類型同步域(SYNCfield):所有的包都起始于SYNC域,它被用于本地時(shí)鐘與輸入信號的同步,并且在長度上定義為8位。SYNC的最后兩位作為一個(gè)記號說明PID域(標(biāo)識域)的開始。。標(biāo)識域(PacketIdentifierField):對于每個(gè)包,PID都是緊跟著SYNC的,PID指明了包的類型及其格式。主機(jī)和所有的外設(shè)都必須對接收到的PID域進(jìn)行解碼。如果出現(xiàn)錯(cuò)誤或者解碼為未定義的值,那么這個(gè)包就會被接收者忽略。如果外設(shè)接收到一個(gè)PID,它所指明的操作類型或者方向不被支持,外設(shè)將不作響應(yīng)。地址域(AddressField):外設(shè)端點(diǎn)都是由地址域指明的,它包括兩個(gè)子域:外設(shè)地址和外設(shè)端點(diǎn)。外設(shè)必須解讀這兩個(gè)域,其中假設(shè)有任何一個(gè)不匹配,這個(gè)令牌就會被忽略。外設(shè)地址域(ADDR)指定了外設(shè),它根據(jù)PID所說明的令牌的類型,指明了外設(shè)是數(shù)據(jù)包的發(fā)送者或接收者。ADDR共6位,因此最多可以有127個(gè)地址。一旦外設(shè)被復(fù)位或上電,外設(shè)的地址被缺省為0,這時(shí)必須在主機(jī)枚舉過程中被賦予一個(gè)獨(dú)一的地址。而0地址只能用于缺省值而不能分配作一般的地址。端點(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)。幀號域(FrameNumberField):這是一個(gè)11位的域,指明了目前幀的排號,每過一幀(1ms)這個(gè)域的值加1,到達(dá)最大值XFF后返回0。這個(gè)域只存在于每幀開始時(shí)的SOF令牌中。數(shù)據(jù)域(DataField):范圍是0~1023字節(jié),而且必須是整數(shù)個(gè)字節(jié)。CRC校驗(yàn):包括令牌校驗(yàn)和數(shù)據(jù)校驗(yàn)。2.包的類型令牌包(TokenPacked):其中包括:IN(輸入)、OUT(輸出)、SETUP(設(shè)置)和SOF(StartofFrame,幀起始)四種類型。其中IN、OUT、SETUP的格式如圖3-4所示。圖3-4IN、OUT、SETUP數(shù)據(jù)格式對于OUT和SETUP來說,ADDR和ENDP中所指明的端點(diǎn)將接收到主機(jī)發(fā)出的數(shù)據(jù)包,而對IN來說,所指定的端點(diǎn)將輸出一個(gè)數(shù)據(jù)包。Token和SOF在三個(gè)字節(jié)的時(shí)間內(nèi)以一個(gè)EOP(EndofPacket)結(jié)束。如果一個(gè)包被解碼為Token包但是并沒有在3個(gè)字節(jié)時(shí)間內(nèi)以EOP結(jié)束,就會被看作非法包或該包被忽略。對于SOF包,它的格式如圖3-5所示。主機(jī)以一定的速率(1ms±0.05一次)發(fā)送SOF包,SOF不引起任何操作。圖3-5SOF數(shù)據(jù)格式數(shù)據(jù)包:包括Data0和Data1兩種類型。這兩種包的定義是為了支持?jǐn)?shù)據(jù)觸發(fā)同步。數(shù)據(jù)包包含了PID、DATA和CRC三個(gè)域,如圖3-6所示。圖3-6DATA數(shù)據(jù)格式應(yīng)答包(HandshakePacket):僅包含一個(gè)如圖3-7所示的PID域。Handshake用來報(bào)告數(shù)據(jù)傳輸?shù)臓顟B(tài)。只有支持流控制的傳輸類型〔控制中斷和批傳輸〕才能返回Handshake。圖3-7PID數(shù)據(jù)格式Handshake包有三種類型:(1)確認(rèn)包ACK:說明數(shù)據(jù)接收成功。(2)無效包NAK:指出設(shè)備暫時(shí)不能傳送或接收數(shù)據(jù),但無需主機(jī)介入,可以解釋成設(shè)備忙。(3)出錯(cuò)包STALL:指出設(shè)備不能傳送或接收數(shù)據(jù),但需要主機(jī)介入才能恢復(fù),NAK和STALL不能由主機(jī)發(fā)出。特殊包〔Special〕:PID名稱為PRE〔preamble〕,用于低速操作的情形。3.總線操作的格式圖3-8批操作流程批操作〔bulktransaction〕:批操作包括令牌、數(shù)據(jù)、應(yīng)答三個(gè)階段,如圖3-8所示。對于輸入操作,如果設(shè)備不能返回?cái)?shù)據(jù),那么必須發(fā)出NAK或STALL包;對于輸出如果設(shè)備不能接收數(shù)據(jù),也要返回NAK或STALL。圖3-9描述了批操作的讀寫過程以及序列位(sequencebit)和數(shù)據(jù)包PID的使用。圖3-9批操作讀寫過程控制操作(controltransaction):主要包括兩個(gè)操作階段〔transactionstage〕:設(shè)置和狀態(tài)。圖3-10給出了設(shè)置操作的細(xì)節(jié),如果數(shù)據(jù)沒有正確接收,那么設(shè)備就會忽略它,而且不返回應(yīng)答包。圖3-10控制操作流程控制操作的詳細(xì)描述如圖3-11所示,其中我們要注意數(shù)據(jù)包PID的使用。圖3-11控制操作讀寫過程中斷操作〔interrupttransaction〕:中斷操作只有輸入這一個(gè)方向,具體格式與批操作的輸入情形如圖3-12所示。圖3-12中斷操作流程同步操作〔isochronoustransaction〕:同步操作不同于其他類型,如圖3-13所示,其只包含兩個(gè)階段:令牌和數(shù)據(jù)。因?yàn)橥絺鬏敳恢С种匕l(fā)的能力,所以沒有應(yīng)答階段。另外它也不支持?jǐn)?shù)據(jù)的觸發(fā)同步與重試。圖3-13同步操作流程4.數(shù)據(jù)觸發(fā)同步與重試USB提供了保證數(shù)據(jù)序列同步的機(jī)制,這一機(jī)制確保了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。這一同步過程是通過Data0和Data1的PID以及發(fā)送者與接收者上的數(shù)據(jù)觸發(fā)序列位〔datatogglesequencebit〕來實(shí)現(xiàn)的。接收者的序列位只有當(dāng)接收到一個(gè)正確的數(shù)據(jù)包時(shí)(包括正確的PID)才能被觸發(fā)。而發(fā)送者的序列位只有當(dāng)接收到確認(rèn)包ACK時(shí)才能被觸發(fā)。在總線傳輸?shù)拈_始,發(fā)送者與接收者的序列位必須一致,這是由控制命令來實(shí)現(xiàn)的。同步傳輸方式不支持?jǐn)?shù)據(jù)觸發(fā)同步。圖3-14、圖3-15、圖3-16說明了數(shù)據(jù)觸發(fā)同步的根本原理。圖3-14數(shù)據(jù)觸發(fā)與同步一圖3-15數(shù)據(jù)觸發(fā)與同步二圖3-16數(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)行其它操作。對于發(fā)送者來說,在接收到NAK時(shí)或在規(guī)定時(shí)間內(nèi)沒有接收到ACK,那么將上一次的數(shù)據(jù)重發(fā)。5.低速操作Hub具有禁止高速信號進(jìn)入低速設(shè)備的能力,這既防止了電磁干擾的發(fā)生,又保護(hù)了低速設(shè)備。圖3-17是一次低速的輸入操作,主機(jī)發(fā)送令牌與應(yīng)答包并且接收了一個(gè)數(shù)據(jù)包。圖3-17低速方式的輸入操作所有下行的低速傳輸?shù)陌?,必須先發(fā)送一個(gè)PRE包。Hub必須解釋PRE包,而所有其它的USB設(shè)備必須忽略這個(gè)包。主機(jī)在發(fā)送完P(guān)RE包后,必須等待至少4位的時(shí)間,而在這個(gè)期間,Hub完成必要的設(shè)置,使之能接收低速的信號。在接收到EOP信號之后,Hub關(guān)閉低速設(shè)備的端口。上行的操作那么沒有上述的行為,低速與高速是一樣的。低速操作還有其它的限制:(1)數(shù)據(jù)包最大限制為8個(gè)字節(jié)。(2)只支持中斷和控制傳輸方式。6.錯(cuò)誤檢驗(yàn)與恢復(fù)USB具有檢查錯(cuò)誤的能力,并且可以根據(jù)傳輸類型的要求進(jìn)行相應(yīng)的處理。例如,控制傳輸?shù)男枰芨叩臄?shù)據(jù)準(zhǔn)確度,因此支持所有錯(cuò)誤檢驗(yàn)與重試來實(shí)現(xiàn)端對端的數(shù)據(jù)完整傳輸。而同步傳輸不允許重試,因此必須具有一定的容錯(cuò)性。USB這種檢查錯(cuò)誤的能力包括:PID檢驗(yàn)、CRC檢驗(yàn)、總線時(shí)間溢出以及EOP錯(cuò)誤檢驗(yàn)等等。第4章PC與單片機(jī)通過USB的通信設(shè)計(jì)4.1設(shè)計(jì)方案選擇由于實(shí)際應(yīng)用中單片機(jī)在數(shù)據(jù)處理能力、人機(jī)交互等方面往往不能滿足要求,因而通常用PC來彌補(bǔ)單片機(jī)的這些缺乏。例如,在工程應(yīng)用中,常常由一臺PC機(jī)和一臺單片機(jī)構(gòu)成主從式計(jì)算機(jī)測控系統(tǒng)。在這樣的系統(tǒng)中,以單片機(jī)為核心的智能測控儀表(從機(jī))作為現(xiàn)場測控設(shè)備,完成數(shù)據(jù)的采集、處理和控制各種任務(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í)現(xiàn)這樣的功能,就涉及到PC機(jī)與單片機(jī)之間的通信問題?,F(xiàn)在的計(jì)算機(jī)提供了各種各樣的串口,他們支持不同的通信協(xié)議,有著不同的功能。目前計(jì)算機(jī)提供的串口有RS-232,RJ45,USB2.0等。4.1.1PC機(jī)同單片機(jī)通信存在的問題目前,51單片機(jī)同PC機(jī)的通信在大多數(shù)情況下仍然是使用RS-232(DB-9)串口作為通信接口實(shí)現(xiàn)的。而隨著USB接口技術(shù)的成熟和使用的普及,由于USB接口有著一系列RS-232(DB-9)串口無法比較的優(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è)備的使用范圍。4.1.2USB接口同RS-232(DB-9)串口的比較通過USB接口和RS-232(DB-9)的比較,不難發(fā)現(xiàn):〔1〕USB接口支持即插即用和熱插拔,而RS-232(DB-9)串口不支持即插即用和熱插拔,設(shè)備安裝后需重啟計(jì)算機(jī)方可使用?!?〕USB接口的傳輸速率較快,可達(dá)480Mbps(V2.0),而RS-232(DB-9)串口的最高速率僅為19200波特。〔3〕USB接口占用體積較小,插拔方便;而RS-232(DB-9)串口的的插拔需要使用改錐,且在機(jī)箱后操作,比較麻煩。綜上可知,USB接口取代RS-232(DB-9)串口的趨勢不可逆轉(zhuǎn)。另外在本設(shè)計(jì)中選擇使用的單片機(jī)是AT8C951。AT89C51是一種低功耗、高性能的8位單片微型計(jì)算機(jī),它采用了CMOS工藝和ATMEL公司的高密度NVRAM(非易失性隨機(jī)存儲器)技術(shù),片內(nèi)帶有一個(gè)4KB的FLASHFPROM(可擦除、可編程只讀存儲器),作為INTEL8051的換代產(chǎn)品,其輸出引腳和指令系統(tǒng)與MCS-51完全兼容。由于AT89C51單片機(jī)具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡單、價(jià)格廉價(jià)等諸多優(yōu)點(diǎn),因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測量等方面有著廣泛的應(yīng)用。4.1.3USB轉(zhuǎn)接芯片的選擇目前常用的USB轉(zhuǎn)接芯片包括PL2303,CH341,CP2101,F(xiàn)T232等。在綜合考慮了各方面因素后,CH341成為了本次電路設(shè)計(jì)的首選芯片。CH341是南京沁恒電子公司生產(chǎn)的USB總線的轉(zhuǎn)接芯片,通過USB總線提供異步串口,打印口,并口及常用的2線和4線等同步串行端口。其特點(diǎn)有:〔1〕提供全速USB設(shè)備借口,兼容USB2.0,外圍設(shè)備只需要晶體和電容;〔2〕可通過外部的低本錢串行EPROM定義廠商ID,產(chǎn)品ID,序列號等;〔3〕本錢低廉,可直接轉(zhuǎn)換原串口外圍設(shè)備;〔4〕采用SOP-28封裝,串口應(yīng)用還提供小型的SSOP-20封裝。正是由于在PC機(jī)同單片機(jī)通信電路中,USB轉(zhuǎn)接芯片CH341具有以上其他芯片無法比較的優(yōu)點(diǎn),同時(shí)價(jià)格低廉并且提供中文技術(shù)支持,因此它成為了本電路USB轉(zhuǎn)接芯片的最優(yōu)選擇。本電路采用的是SSOP-20封裝的CH341T,其引腳圖如圖4-1所示。圖4-1CH341T引腳圖4.2硬件設(shè)計(jì)4.2.1硬件電路設(shè)計(jì)CH341T提供全速USB設(shè)備接口,兼容USB2.0,外圍器件只需要電容和晶體,電路如圖4-2所示。圖4-2USB通信模塊電路圖其中,電源電壓為5V,USB接口的差分?jǐn)?shù)據(jù)線對與CH341T的UD-和UD+直接相連。CH341T提供TTL電平,同AT89C51直接采用簡單的3線連接〔RXD—TXD;TXD—RXD;GND—GND〕。在5V電源的情況下,V3口需要外接0.01uF的退耦電容。TEN#為串口發(fā)送數(shù)據(jù)使能端,低電平有效。CH341T必須使用12Mhz晶振,否那么無法正常工作。為保證單片機(jī)能夠產(chǎn)生與計(jì)算機(jī)匹配的波特率,單片機(jī)采用11.0592Mhz的晶振。4.2.2硬件驅(qū)動程序安裝可下載CH341T驅(qū)動程序CH341SER.EXE,在確認(rèn)驅(qū)動程序和硬件電路無誤后,翻開驅(qū)動程序。彈出安裝對話框后選擇INSTALL,設(shè)備將自動安裝驅(qū)動程序。安裝完成后計(jì)算機(jī)將提示安裝成功。將硬件電路通過USB接口連接至計(jì)算機(jī),計(jì)算機(jī)自動識別并彈出新硬件安裝對話框,選擇自動安裝,驅(qū)動程序即可成功安裝至計(jì)算機(jī)。在計(jì)算機(jī)設(shè)備管理器中,可顯示剛剛安裝成功的USB串口。如圖4-3所示。圖4-3安裝完成后的設(shè)備管理器開始開始USB設(shè)置是否為TRUE?檢查設(shè)備是否配置調(diào)用I2cWriteRead();發(fā)送數(shù)據(jù)接收數(shù)據(jù)結(jié)束處理USBSetup包圖4-4計(jì)算機(jī)與USB通信處理流程圖4.3通信程序設(shè)計(jì)4.3.1PC機(jī)與USB通信程序設(shè)計(jì)圖4-4為計(jì)算機(jī)與USB通信處理流程圖。局部關(guān)鍵代碼如下:voidmain(void){init_port(); /*初始化I/O口*/init_timer0(); /*設(shè)置定時(shí)器0*/init_special_interrupts(); /*設(shè)置中斷*///D12_DATA=0xfb02; /*定義數(shù)據(jù)地址*///D12_COMMAND=0xfb03; /*定義命令地址*/D12_DATA=0x7002; /*定義數(shù)據(jù)地址*/D12_COMMAND=0x7003; /*定義命令地址*/D12_SetDMA(0x0); /*不使用DMA功能*/bEPPflags.value=0; /*初始化USB存放器*//*上電復(fù)位,USB總線重新連接指令*/reconnect_USB();while(TRUE){if(bEPPflags.bits.configuration){I2cWriteRead();/*如果設(shè)備已配置,調(diào)用I2cWriteRead()*/ }outportb(port,a);/*發(fā)送數(shù)據(jù)usbserve();/*處理USB的setup包*/for(j=0;j<9;j++)/*接收數(shù)據(jù)*/{while(!(inportb(port+5)&1));ch[j]=inportb(port);}for(j=0;j<9;j++)printf("n%d\n",ch[j]);getch();break;}4.3.2單片機(jī)通信程序設(shè)計(jì)為實(shí)現(xiàn)單片機(jī)同PC機(jī)的簡單通信功能,需要通過匯編指令使單片機(jī)完成一定的工作來驗(yàn)證USB接口通信的暢通。假設(shè)要使單片機(jī)串口能夠同PC機(jī)正常通信,單片機(jī)和USB接口需要使用相同的通信協(xié)議,在設(shè)備管理器中,可設(shè)置串口破特率為9600。而在單片機(jī)中,通過軟件設(shè)置串口波特率為9600,工作方式為方式一,每接收一個(gè)8位數(shù)據(jù),將數(shù)據(jù)保存并回送至計(jì)算機(jī),以此來實(shí)現(xiàn)對USB通信暢通與否的測試。程序流程圖如圖4-6所示。開始開始設(shè)定定時(shí)器和USB工作方式開中斷等待中斷中斷產(chǎn)生接收數(shù)據(jù)關(guān)中斷回送數(shù)據(jù)開發(fā)送中斷等待數(shù)據(jù)接收完成返回初始狀態(tài)圖4-6單片機(jī)的程序流程圖根據(jù)程序流程圖,單片機(jī)的指令代碼如下:ORGDDOOHSTART:MOVTMOD,#20H;定時(shí)器T1為方式2MOVTL1,#DFDH;波特率為9600SETBTR1MOVSCON,#50H;串口工作方式1,REN=1SETBESSETBEA;開中斷SJMP$;等待中斷ORG0023H;中斷入口地址JNBBI,SBR;RI為1時(shí)跳至發(fā)送,為0時(shí)說明發(fā)送已完成AJMPSTART;返回初始狀態(tài),等待下一次數(shù)據(jù)接收,實(shí)現(xiàn)數(shù)據(jù)的循環(huán)接收SBR:AJMPSBR1ORG0100HSBR1:CLRRIMOVA,ABUF;接收數(shù)據(jù)MOVB1,AMOVSBUF,A;數(shù)據(jù)回送JNBT1,$CLRT14.4USB通信模塊調(diào)試USB通信模塊的調(diào)試使用串口調(diào)試工具〔ComTools〕,該工具是一款功能強(qiáng)大的串口調(diào)試免費(fèi)軟件。其主要功能如下:〔1〕支持COM1—COM8串口的數(shù)據(jù)發(fā)送和接收,可重復(fù)發(fā)送和接收數(shù)據(jù);〔2〕支持HEX格式數(shù)據(jù)和ASC格式數(shù)據(jù)的串口發(fā)送和接收;〔3〕可自定義數(shù)據(jù)格式,校驗(yàn)位,可自定義數(shù)據(jù)傳輸速率;〔4〕可自動記錄發(fā)送和接收的數(shù)據(jù)并保存。使用串口調(diào)試工具可以方便的通過計(jì)算機(jī)向USB串口通信模塊發(fā)送數(shù)據(jù)并記錄所接收的數(shù)據(jù)。因此,本次USB通信模塊的調(diào)試使用該串口調(diào)試工具完成PC機(jī)同單片機(jī)的通信。翻開串口調(diào)試工具。首先選擇串口設(shè)置,設(shè)置串口為設(shè)備管理器中對應(yīng)的串口〔COM1〕,設(shè)置波特率為9600,數(shù)據(jù)長度為8位,停止位為1位。在發(fā)送文本框中輸入2字節(jié)16進(jìn)制數(shù)據(jù),點(diǎn)擊發(fā)送向串口發(fā)送16進(jìn)制8位數(shù)據(jù)。觀察接收文本框,可以發(fā)現(xiàn),計(jì)算機(jī)成功接收到單片機(jī)回送的8位數(shù)據(jù)。在清空發(fā)送文本框后,經(jīng)過屢次的重復(fù)操作觀察確認(rèn),每一次都能正確接收數(shù)據(jù)。為了進(jìn)一步測驗(yàn)系統(tǒng)的穩(wěn)定性,在拔掉USB通信模塊后重新插入,計(jì)算機(jī)能夠自動識別串口,重新翻開串口調(diào)試工具后仍然能夠正確的發(fā)送和接收。因此,該USB通信模塊的數(shù)據(jù)準(zhǔn)確性和系統(tǒng)的穩(wěn)定性都得到了驗(yàn)證。通過測試,該USB通信模塊根本能到達(dá)如下設(shè)計(jì)要求:〔1〕通過USB接口實(shí)現(xiàn)串口通信,能夠在USB接口上完成以往需要使用RS-232(DB9)進(jìn)行通信的計(jì)算機(jī)設(shè)備的通信;〔2〕支持熱插拔,驅(qū)動程序一次安裝即可永久使用,不必在每次插拔后重啟計(jì)算機(jī);〔3〕硬件電路簡單,外圍器件少,制作方便,本錢低廉;〔4〕可移植性強(qiáng),支持絕大多數(shù)型號的單片機(jī);可擴(kuò)充性好,用戶可根據(jù)需要擴(kuò)充各種功能,可自定義廠商ID和產(chǎn)品序列號。結(jié)論串行通信端口在系統(tǒng)控制的范
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版歷史九年級下冊:第11課 《蘇聯(lián)的社會主義建設(shè)》 聽課評課記錄
- 《溝通中外文明的“絲綢之路”》名師聽課評課記錄(新部編人教版七年級上冊歷史)
- 生物醫(yī)藥產(chǎn)業(yè)園監(jiān)理合同(2篇)
- 電力價(jià)格調(diào)整合同(2篇)
- 五年級上冊數(shù)學(xué)聽評課記錄《7.1 誰先走》(3)-北師大版
- 部編人教版歷史九年級上冊第15課《探尋新航路》聽課評課記錄
- 湘教版數(shù)學(xué)八年級上冊《小結(jié)練習(xí)》聽評課記錄5
- 人教版數(shù)學(xué)七年級上冊3.2《解一元一次方程(一)-合并同類項(xiàng)與移項(xiàng)》聽評課記錄1
- 五年級上冊數(shù)學(xué)聽評課記錄-總復(fù)習(xí)2-北師大版
- 新版湘教版秋八年級數(shù)學(xué)上冊第二章三角形課題三角形的內(nèi)角和定理聽評課記錄
- 必修3《政治與法治》 選擇題專練50題 含解析-備戰(zhàn)2025年高考政治考試易錯(cuò)題(新高考專用)
- 二零二五版電商企業(yè)兼職財(cái)務(wù)顧問雇用協(xié)議3篇
- 課題申報(bào)參考:流視角下社區(qū)生活圈的適老化評價(jià)與空間優(yōu)化研究-以沈陽市為例
- 《openEuler操作系統(tǒng)》考試復(fù)習(xí)題庫(含答案)
- 2024-2025學(xué)年人教版生物八年級上冊期末綜合測試卷
- 創(chuàng)傷急救-止血、包扎課件
- 大數(shù)據(jù)背景下網(wǎng)絡(luò)輿情成因及治理
- 道教系統(tǒng)諸神仙位寶誥全譜
- 中國經(jīng)濟(jì)轉(zhuǎn)型導(dǎo)論-政府與市場的關(guān)系課件
- 新視野大學(xué)英語讀寫教程 第三版 Book 2 unit 8 教案 講稿
- 村務(wù)公開表格
評論
0/150
提交評論