




已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
畢業(yè)設計題目:PC與單片機通過USB接口實現(xiàn)串行通信畢業(yè)設計專業(yè):電子信息工程技術班級:姓名:*摘 要基于串口通訊的原理,分析和討論了計算機與單片機如何通過USB接口使用相關的通訊協(xié)議實現(xiàn)串行通信的。本設計主要介紹如何使用一臺計算機與一臺單片機通過USB接口實現(xiàn)串行通信。在本設計中單片機采用AT89C51,USB轉(zhuǎn)接芯片CH341;軟件設計方面,PC機采用C語言編程,單片機方面用中斷方式完成數(shù)據(jù)的接收和發(fā)送,程序開發(fā)采用匯編語言和Keil C語言。關鍵字:PC機,單片機,USB,串行通信 - 3 -目 錄第1章 前 言11.1本課題研究的目的和背景11.2 本課題研究的主要內(nèi)容1第2章 串行通信基礎32.1 串口通信的基本知識32.1.1并行通信與串行通信32.1.2串行通信工作模式52.1.3異步傳輸和同步傳輸6第3章 USB通信原理簡介73.1 USB簡介73.1.1 USB設備83.1.2 USB的優(yōu)點93.1.3傳輸方式103.2 USB的總線協(xié)議113.2.1總線拓撲結(jié)構(gòu)113.2.2 USB的物理層113.2.3 USB總線協(xié)議12第4章 PC與單片機通過USB的通信設計204.1 設計方案選擇204.1.1 PC機同單片機通信存在的問題214.1.2 USB接口同RS-232(DB-9)串口的比較214.1.3 USB轉(zhuǎn)接芯片的選擇214.2硬件設計224.2.1硬件電路設計224.2.2硬件驅(qū)動程序安裝234.3通信程序設計234.3.1 PC機與USB通信程序設計234.3.2單片機通信程序設計254.4 USB通信模塊調(diào)試27結(jié) 論28致 謝29參考文獻30河南工業(yè)職業(yè)技術學院畢業(yè)設計論文第1章 前 言1.1本課題研究的目的和背景通信是指不同的獨立系統(tǒng)利用線路互相交換數(shù)據(jù),它的主要目的是將數(shù)據(jù)從一端傳送到另一端,實現(xiàn)數(shù)據(jù)的交換。在現(xiàn)代工業(yè)控制中,通常采用計算機作為上位機與下層的實時控制與監(jiān)測設備進行通訊?,F(xiàn)場數(shù)據(jù)必須通過一個數(shù)據(jù)收集器傳給上位機,同樣上位機向現(xiàn)場設備發(fā)命令也必須通過數(shù)據(jù)收集器。串行通信因其結(jié)構(gòu)簡單、執(zhí)行速度快、抗干擾能力強等優(yōu)點,已被廣泛應用于數(shù)據(jù)采集和過程控制等領域。計算機與外界的信息交換稱為通信。基本的通信方式有并行通信和串行通信兩種。串行通信是指一條信息額各位數(shù)據(jù)被逐位按順序傳送的通信方式。串行通信的特點是:數(shù)據(jù)位傳送,按位順序進行,最少只需要一根傳輸線即可完成,成本低但傳送速度快,串行通信的距離可以從幾米到幾千米 。隨著計算機技術尤其是單片微型機技術的發(fā)展,人們已越來越多地采用單片機來對一些工業(yè)控制系統(tǒng)中如溫度、流量和壓力等參數(shù)進行監(jiān)測和控制。PC機具有強大的監(jiān)控和管理能力,而單片機則具有快速及靈和的控制特點,通過PC機的RS-232串行接口與外部設備進行通信,是許多測控系統(tǒng)中常用的一種通信解決方案。而隨著USB接口技術的成熟和使用的普及,由于USB 接口有著RS-232(DB-9)串口無法比擬的優(yōu)點,RS-232(DB-9)串口正在逐步地為USB 接口所替代。而在現(xiàn)在的大多數(shù)筆記本電腦中,出于節(jié)省物理空間和用處不大等原因,RS-232(DB-9)串口已不再設置,這就約束了基于RS-232(DB-9)串口與PC 機聯(lián)絡的單片機設備的使用范圍。當前USB接口逐步取代RS-232(DB-9)串口已是大勢所趨,單片機同計算機的USB通信在實際工作中的應用范圍也將越來越廣。本文所介紹的單片機和PC機的USB通信方法,電路簡單,兼容性好,可移植性強,故可作為單片機同計算機的USB通信模塊廣泛應用于工業(yè)和電子產(chǎn)品的開發(fā)中。因此研究如何實現(xiàn)PC機與單片機通過USB之間的通信具有非常重要的現(xiàn)實意義。1.2 本課題研究的主要內(nèi)容(1)串行通信原理介紹;(2)USB技術原理分析;(3)單片機和PC機通過USB實現(xiàn)串行通信設計與實現(xiàn)。本設計主要包含以下兩個方面:(1)硬件設計:單片機及外圍電路設計;(2)軟件設計:單片機的通信控制程序, PC機的通信程序。第2章 串行通信基礎2.1 串口通信的基本知識2.1.1并行通信與串行通信微機的信息交換有兩種方式進行:串行通信方式和并行通信方式。1.串行通信串行通信的設備是最古老的溝通機制之一。從IBM個人電腦和兼容式電腦的時代開始,幾乎所有的計算機都配有一個或多個串行端口和一個并行端口。顧名思義,一個串行端口發(fā)送和接收串行數(shù)據(jù),一次一位數(shù)據(jù)。相反,一個并行端口一次發(fā)送和接收8位數(shù)據(jù),使用8個單獨的線路。提示:要使串行通信工作,你只需要一根三根線的電纜1根發(fā)送,1根用來接收,1根接地。對于并行通信,你需要采用8條導線。盡管相對較慢的傳輸速度遠低于并行端口,串行端口通信依然因為它簡單的設備、高的成本效益以及差錯可控性強而成為一個受歡迎的連接選項。圖2-1顯示了使用串行口連接到計算機的設備。圖2-1 一些常見的串行設備,調(diào)制解調(diào)器,鼠標和路由器雖然今天的消費產(chǎn)品中在串行連接的地方使用USB連接,但還有很多的設備使用串行端口作為與外部世界的唯一連接。一個串行設備一次發(fā)送和接收一位數(shù)據(jù),有些設備因為在同一時間發(fā)送和接收數(shù)據(jù),被稱為全雙工設備。其他可以在任何時間發(fā)送或接收被稱為單雙工。開始傳輸時,設備先發(fā)送一個起始位,其次是數(shù)據(jù)位。該數(shù)據(jù)位可以是五,六,七,或8位,基于商定而定。兩個發(fā)送方和接收器必須設置為相同的數(shù)據(jù)通信比特或正確的比特率。數(shù)據(jù)位被發(fā)送完后,就會發(fā)送一個停止位。一個停止位可以是一位,一個半位,或兩位。波特率是數(shù)據(jù)從一個設備到另一個的傳輸速度。波特率通常以每秒的位數(shù)(bps)來計量。注意:大多數(shù)串行設備傳輸七-八位數(shù)據(jù)。為了檢測數(shù)據(jù)已被正確發(fā)送,一個可選的校驗位可以同數(shù)據(jù)位在一起。一個校驗位可以是以下內(nèi)容:奇數(shù),偶數(shù),mark,space或無(空的奇偶位標志幾乎總是被使用)。使用校驗位提供了一個基本的機制,以檢測已發(fā)送數(shù)據(jù)損壞,但不保證檢查數(shù)據(jù)本身的錯誤。然而,校驗位可用于改善完整性數(shù)據(jù)傳送。大多數(shù)串行端口使用RS232C標準,它指定了一個連接器25針或9針(見圖2-2)。大多數(shù)系列設備使用9針連接器。圖2-2 25針和9針串行接口2.并行通信在計算機和終端之間的數(shù)據(jù)傳輸通常是靠電纜或信道上的電流或電壓變化實現(xiàn)的。如果一組數(shù)據(jù)的各數(shù)據(jù)位在多條線上同時被傳送,這種傳輸被稱為并行通信,如圖2-3所示。并行通信時數(shù)據(jù)的各個位同時傳送,可以字或字節(jié)為單位并行進行。并行通信速度快,但用的通信線多、成本高,故不宜進行遠距離通信。計算機或PLC各種內(nèi)部總線就是以并行方式傳送數(shù)據(jù)的。圖2-3 并行通信2.1.2串行通信工作模式如果在通信過程的任意時刻,信息只能由一方A傳到另一方B,則稱為單工。如果在任意時刻,信息既可由A傳到B,又能由B傳A,但只能由一個方向上的傳輸存在,稱為半雙工傳輸。如果在任意時刻,線路上存在A到B和B到A的雙向信號傳輸,則稱為全雙工。電話線就是二線全雙工信道。由于采用了回波抵消技術,雙向的傳輸信號不致混淆不清。雙工信道有時也將收、發(fā)信道分開,采用分離的線路或頻帶傳輸相反方向的信號,如回線傳輸。在串行通信中,數(shù)據(jù)通常是在兩個站(如終端和微機)之間進行傳送,按照數(shù)據(jù)流的方向可分成三種基本的傳送方式:全雙工、半雙工、和單工。但單工目前已很少采用,下面僅介紹前兩種方式。1.半雙工方式若使用同一根傳輸線既作接收又作發(fā)送,雖然數(shù)據(jù)可以在兩個方向上傳送,但通信雙方不能同時收發(fā)數(shù)據(jù),這樣的傳送方式就是半雙工制,如圖2-4所示。采用半雙工方式時,通信系統(tǒng)每一端的發(fā)送器和接收器,通過收/發(fā)開關轉(zhuǎn)接到通信線上,進行方向的切換,因此,會產(chǎn)生時間延遲。收/發(fā)開關實際上是由軟件控制的電子開關。圖2-4半雙工方式當計算機主機用串行接口連接顯示終端時,在半雙工方式中,輸入過程和輸出過程使用同一通路。有些計算機和顯示終端之間采用半雙工方式工作,這時,從鍵盤打入的字符在發(fā)送到主機的同時就被送到終端上顯示出來,而不是用回送的辦法,所以避免了接收過程和發(fā)送過程同時進行的情況。目前多數(shù)終端和串行接口都為半雙工方式提供了換向能力,也為全雙工方式提供了兩條獨立的引腳。在實際使用時,一般并不需要通信雙方同時既發(fā)送又接收,像打印機這類的單向傳送設備,半雙工甚至單工就能勝任,也無需倒向。2.全雙工方式當數(shù)據(jù)的發(fā)送和接收分流,分別由兩根不同的傳輸線傳送時,通信雙方都能在同一時刻進行發(fā)送和接收操作,這樣的傳送方式就是全雙工制,如圖2-5所示。在全雙工方式下,通信系統(tǒng)的每一端都設置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時在兩個方向上傳送。全雙工方式無需進行方向的切換,因此,沒有切換操作所產(chǎn)生的時間延遲,這對那些不能有時間延誤的交互式應用(例如遠程監(jiān)測和控制系統(tǒng))十分有利。這種方式要求通訊雙方均有發(fā)送器和接收器,同時,需要2根數(shù)據(jù)線傳送數(shù)據(jù)信號(可能還需要控制線和狀態(tài)線,以及地線)。圖2-5全雙工2.1.3異步傳輸和同步傳輸串行傳輸中,數(shù)據(jù)是一位一位按照到達的順序依次傳輸?shù)模课粩?shù)據(jù)的發(fā)送和接收都需要時鐘來控制。發(fā)送端通過發(fā)送時鐘確定數(shù)據(jù)位的開始和結(jié)束,接收端需要在適當?shù)臅r間間隔對數(shù)據(jù)流進行采樣來正確的識別數(shù)據(jù)。接收端和發(fā)送端必須保持步調(diào)一致,否則數(shù)據(jù)傳輸就會出現(xiàn)差錯。為了解決以上問題,串行傳輸可采用以下兩種方法:異步傳輸和同步傳輸。1.異步傳輸通常,異步傳輸是以字符為傳輸單位,每個字符都要附加1位起始位和1位停止位,以標記一個字符的開始和結(jié)束,并以此實現(xiàn)數(shù)據(jù)傳輸同步。所謂異步傳輸是指字符與字符(一個字符結(jié)束到下一個字符開始)之間的時間間隔是可變的,并不需要嚴格地限制它們的時間關系。起始位對應于二進制值0,以低電平表示,占用1位寬度。停止位對應于二進制值1,以高電平表示,占用12位寬度。一個字符占用 58位,具體取決于數(shù)據(jù)所采用的字符集。例如,電報碼字符為5位、ASCII碼字符為7位、漢字碼則為8位。此外,還要附加1位奇偶校驗位,可以選擇奇校驗或偶校驗方式對該字符實施簡單的差錯控制。發(fā)送端與接收端除了采用相同的數(shù)據(jù)格式(字符的位數(shù)、停止位的位數(shù)、有無校驗位及校驗方式等)外,還應當采用相同的傳輸速率。典型的速率有:9600 b/s、19.2kb/s、56kb/s等。異步傳輸又稱為起止式異步通信方式,其優(yōu)點是簡單、可靠,適用于面向字符的、低速的異步通信場合。例如,計算機與Modem之間的通信就是采用這種方式。它的缺點是通信開銷大,每傳輸一個字符都要額外附加23位,通信效率比較低。例如,在使用Modem上網(wǎng)時,普遍感覺速度很慢,除了傳輸速率低之外,與通信開銷大、通信效率低也密切相關。2.同步傳輸通常,同步傳輸是以數(shù)據(jù)塊為傳輸單位。每個數(shù)據(jù)塊的頭部和尾部都要附加一個特殊的字符或比特序列,標記一個數(shù)據(jù)塊的開始和結(jié)束,一般還要附加一個校驗序列(如16位或32位CRC校驗碼),以便對數(shù)據(jù)塊進行差錯控制。所謂同步傳輸是指數(shù)據(jù)塊與數(shù)據(jù)塊之間的時間間隔是固定的,必須嚴格地規(guī)定它們的時間關系。和異步傳輸相比,數(shù)據(jù)傳輸單位的加長容易引起時鐘漂移。為了保證接收端能夠正確地區(qū)分數(shù)據(jù)流中的每個數(shù)據(jù)位,收發(fā)雙主必須通過某種方法建立起同步的時鐘??梢栽诎l(fā)送器和接收器之間提供一條獨立的時鐘線路,由線路的一端(發(fā)送器或者接收器)定期地在每個比特時間中向線路發(fā)送一個短脈沖信號,另一端則將這些有規(guī)律的脈沖作為時鐘。這種技術在短距離傳輸時表現(xiàn)良好,但在長距離傳輸中,定時脈沖可能會和信息信號一樣受到破壞,從而出現(xiàn)定時誤差。另一種方法是通過采用嵌有時鐘信息的數(shù)據(jù)編碼位向接收端提供同步信息。第3章 USB通信原理簡介3.1 USB簡介USB(Universal Serial Bus,通用串行總線)是以Intel為主,并有Compaq, Microsoft, IBM, DEC, Northern Telecom以及日本NEC等共七家公司共同制定的串行接口標準,1994年11月制定了第一個草案,1996年2月公布了USB規(guī)范版本1.0。USB可把多達127個外設同時聯(lián)到你的系統(tǒng)上,所有的外設通過協(xié)議來共享USB的帶寬,其12Mbps的帶寬對于鍵盤,鼠標等低中速外設是完全足夠的(注:在1999年2月發(fā)布的USB規(guī)范版本2.0草案中,已建議將12Mbps的帶寬提升到120-240Mbps。)。USB允許外設在主機和其它外設工作時進行連接、配置、使用及移除,即所謂的即插即用(Plug&Play)。同時USB總線的應用可以清除PC上過多的I/O端口,而以一個串行通道取代,使PC與外設之間的連接更容易。3.1.1 USB設備USB設備包括Hub和功能設備,而功能設備又可以細分為定位設備字符設備等等。為了進一步敘述,我們給出端點(endpoint)和管道(pipe)的概念。端點:每一個USB設備在主機看來就是一個端點的集合,主機只能通過端點與設備進行通訊,以使用設備的功能。每個端點實際上就是一個一定大小的數(shù)據(jù)緩沖區(qū),這些端點在設備出廠時就已定義好。在USB系統(tǒng)中,每一個端點都有唯一的地址,這是由設備地址和端點號給出的。每個端點都有一定的特性。其中包括:傳輸方式、總線訪問、頻率、帶寬、端點號、數(shù)據(jù)包的最大容量等等。端點必須在設備配置后才能生效(端點0除外)。端點0通常為控制端點。用于設備初始化參數(shù)等。端點12等一般用作數(shù)據(jù)端點存放主機與設備間往來的數(shù)據(jù)。管道:一個USB管道是驅(qū)動程序的一個數(shù)據(jù)緩沖區(qū)與一個外設端點的連接,它代表了一種在兩者之間移動數(shù)據(jù)的能力。一旦設備被配置,管道就存在了。管道有兩種類型,數(shù)據(jù)流管道(其中的數(shù)據(jù)沒有USB定義的結(jié)構(gòu))與消息管道(其中的數(shù)據(jù)必須有USB定義的結(jié)構(gòu))管道只是一個邏輯上的概念。所有的設備必須支持端點0以作為設備的控制管道。通過控制管道可以獲取完全描述USB設備的信息,包括:設備類型、電源管理、配置、端點描述等等只要設備連接到USB上并且上電端點0就可以被訪問與之對應的控制管道就存在了。一個USB設備可以分為三個層圖(如圖3-1所示)。最底層是總線接口,用來發(fā)送與接收包。中間層處理總線接口與不同的端點之間的數(shù)據(jù)流通。一個端點是數(shù)據(jù)最終的使用者或提供者,它可以看作數(shù)據(jù)的源或接收端。最上層就是USB設備所提供的功能,比如鼠標或鍵盤等。 圖3-1設備層次結(jié)構(gòu)3.1.2 USB的優(yōu)點USB通信有如下幾個優(yōu)點:1.USB為所有的USB外設提供了單一的、易于使用的標準的連接類型。這樣一來就簡化了USB外設的設計,同時也簡化了用戶在判斷哪個插頭對應哪個插槽時的任務,實現(xiàn)了單一的數(shù)據(jù)通用接口。2.整個的USB的系統(tǒng)只有一個端口和一個中斷,節(jié)省了系統(tǒng)資源。3.USB支持熱插拔(hot plug)和PNP(Plug-and-Play),也就是說在不關閉PC 的情況下可以安全的插上和斷開USB設備,計算機系統(tǒng)動態(tài)地檢測外設的插拔,并且動態(tài)地加載驅(qū)動程序。其他普通的外圍連接標準,如SCSI設備等必須在關掉主機的情況下才能插拔外圍設備。4. USB在設備供電方面提供了靈活性。USB直接連接到Hub或者是連接到Host的設備可以通過USB電纜供電,也可以通過電池或者其它的電力設備來供電,或使用兩種供電方式的組合,并且支持節(jié)約能源的掛機和喚醒模式。5.USB提供全速12Mbps的速率和低速1.5Mbps的速率來適應各種不同類型的外設,USB2.0還支持480Mbps的高速傳輸速率。6.為了適應各種不同類型外圍設備的要求,USB提供了四種不同的數(shù)據(jù)傳輸類型:控制傳輸Bulk數(shù)據(jù)、傳輸中斷數(shù)據(jù)傳輸和同步數(shù)據(jù)傳輸。同步數(shù)據(jù)傳輸可為音頻和視頻等實時設備的實時數(shù)據(jù)傳輸提供固定帶寬。7. USB的端口具有很靈活的擴展性,一個USB端口串接上一個USB Hub就可以擴展為多個USB端口。3.1.3傳輸方式USB有四種的傳輸方式:控制(Control)、同步(isochronous)、中斷(interrupt)、大量(bulk)。如果是從硬件開始來設計整個的系統(tǒng)那還要正確選擇傳輸?shù)姆绞剑鳛橐粋€驅(qū)動程序的書寫者就只需要弄清楚其采用的什么工作方式就行了。通常所有的傳輸方式下的主動權都在PC邊。1.控制(Control)方式傳輸:控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小。USB系統(tǒng)軟件用來主要進行查詢、配置和給USB設備發(fā)送通用的命令。控制傳輸方式可以包括8、16、32和64字節(jié)的數(shù)據(jù),這依賴于設備和傳輸速度??刂苽鬏?shù)湫偷赜迷谥饔嬎銠C和USB外設之間的端點(Endpoint)0之間的傳輸,但是指定供應商的控制傳輸能用到其它的端點。2.同步(isochronous)方式:傳輸同步傳輸提供了確定的帶寬和間隔時間latency)。它被用于時間嚴格并具有較強容錯性的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳輸率的即時應用中。例如,執(zhí)行即時通話的網(wǎng)絡電話應用時,使用同步傳輸模式是很好的選擇。同步數(shù)據(jù)要求確定的帶寬值和確定的最大傳輸次數(shù)。對于同步傳輸來說,即時的數(shù)據(jù)傳遞比完美的精度和數(shù)據(jù)的完整性更重要一些。3.中斷(interrupt)方式:傳輸中斷方式傳輸主要用于定時查詢設備是否有中斷數(shù)據(jù)要傳輸,設備的端點模式器的結(jié)構(gòu)決定了它的查詢頻率,從1到255ms之間,這種傳輸方式典型的應用在少量的分散的,不可預測數(shù)據(jù)的傳輸。鍵盤、操縱桿和鼠標就屬于這一類型。中斷方式傳輸是單向的并且對于host來說只有輸入的方式。4.大量(bulk)傳輸:主要應用在數(shù)據(jù)大量傳輸和接受數(shù)據(jù)上,同時又沒有帶寬和間隔時間要求的情況下,要求保證傳輸。打印機和掃描儀屬于這種類型。這種類型的設備適合于傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數(shù)據(jù)的傳輸完成之后再傳輸和接收數(shù)據(jù)。USB將其有效的帶寬分成各個不同的幀(frame),每幀通常是1ms時間長。每個設備每幀只能傳輸一個同步的傳輸包。在完成了系統(tǒng)的配置信息和連接之后,USB的host就對不同的傳輸點和傳輸方式做一個統(tǒng)籌安排,用來適應整個的USB 的帶寬。通常情況下,同步方式和中斷方式的傳輸會占據(jù)整個帶寬的90%剩下的就安排給控制方式傳輸數(shù)據(jù)。3.2 USB的總線協(xié)議3.2.1總線拓撲結(jié)構(gòu)圖 3-2 USB總線拓撲USB總線的物理連接是一種分層的菊花鏈結(jié)構(gòu),集線器(hub)是每個星形結(jié)構(gòu)的中心。PC機就是主機和根Hub,用戶可以將外設或附加的Hub與之相連。這些附加的Hub可以連接另外的外設以及下層HubUSB。支持最多5個Hub層以及127個外設。圖3-2描述了USB的物理拓撲結(jié)構(gòu),從中可以看出每一段的連接都是點對點的。3.2.2 USB的物理層USB的物理接口包括電氣特性和機械特性。USB通過一個四線電纜來傳輸信號與電源,如圖3-3所示。 圖3-3 USB電纜定義 其中,D+和D-是一對差模的信號線,而VBus和GND則提供了+5V的電源,它可以給一些設備(包括Hub)供電,但也要有一定的條件限制。USB提供了兩種數(shù)據(jù)傳輸率:一種是12Mb的高速(fullspeed)模式,另一種是1.5Mb的低速模式。這兩種模式可以同時存在于一個USB系統(tǒng)中。而引入低速模式,主要是為了降低要求不高的設備的成本,比如鼠標、鍵盤等等。USB信號線在高速模式下必須使用帶有屏蔽的雙絞線,而且最長不能超過5m;而在低速模式時中可以使用不帶屏蔽或不是雙絞的線,但最長不能超過3m。這主要是由于信號衰減的限制。為了提供信號電壓保證,以及與終端負載相匹配,在電纜的每一端都使用了不平衡的終端負載。這種終端負載也保證了能夠檢測外設與端口的連接或分離,并且可以區(qū)分高速與低速設備。所有的設備都有上行的接口。上行和下行的接頭是不能互換的,這保證了不會有非法的連接出現(xiàn)。插頭與插座有A和B兩個系列,系列A用于基本固定的外圍設備,而系列B用于經(jīng)常拔插的設備,這兩個系列是不能互換的 。3.2.3 USB總線協(xié)議所有總線操作都可以歸結(jié)為三種包的傳輸。任何操作都是從主機開始的,主機以預先排好的時序,發(fā)出一個描述操作類型、方向、外設地址以及端點號的包,我們稱之為令牌包(Token Packet)。然后在令牌中指定的數(shù)據(jù)發(fā)送者發(fā)出一個數(shù)據(jù)包或者指出它沒有數(shù)據(jù)可以傳輸。而數(shù)據(jù)的目的地一般要以一個確認包(Handshake Packet)來作出響應以表明傳輸是否成功。1域的類型同步域(SYNC field):所有的包都起始于SYNC域,它被用于本地時鐘與輸入信號的同步,并且在長度上定義為8位。SYNC的最后兩位作為一個記號表明PID域(標識域)的開始。標識域(Packet Identifier Field):對于每個包,PID都是緊跟著SYNC的,PID指明了包的類型及其格式。主機和所有的外設都必須對接收到的PID域進行解碼。如果出現(xiàn)錯誤或者解碼為未定義的值,那么這個包就會被接收者忽略。如果外設接收到一個PID,它所指明的操作類型或者方向不被支持,外設將不作響應。地址域(Address Field):外設端點都是由地址域指明的,它包括兩個子域:外設地址和外設端點。外設必須解讀這兩個域,其中若有任何一個不匹配,這個令牌就會被忽略。外設地址域(ADDR)指定了外設,它根據(jù)PID所說明的令牌的類型,指明了外設是數(shù)據(jù)包的發(fā)送者或接收者。ADDR共6位,因此最多可以有127個地址。一旦外設被復位或上電,外設的地址被缺省為0,這時必須在主機枚舉過程中被賦予一個獨一的地址。而0地址只能用于缺省值而不能分配作一般的地址。端點域(ENDP)有4位,它使設備可以擁有幾個子通道。所有的設備必須支持一個控制端點0(endpoint0)。低速的設備最多支持2個端點:0和一個附加端點。高速設備可以支持最多16個端點。幀號域(Frame Number Field):這是一個11位的域,指明了目前幀的排號,每過一幀(1ms)這個域的值加1,到達最大值XFF后返回0。這個域只存在于每幀開始時的SOF令牌中。數(shù)據(jù)域(Data Field):范圍是01023字節(jié),而且必須是整數(shù)個字節(jié)。CRC校驗:包括令牌校驗和數(shù)據(jù)校驗。2包的類型令牌包(Token Packed): 其中包括:IN(輸入)、OUT(輸出)、SETUP(設置)和SOF(Start of Frame,幀起始)四種類型。其中IN、OUT、SETUP的格式如圖3-4所示。圖3-4 IN、OUT、SETUP數(shù)據(jù)格式對于OUT和SETUP來說,ADDR和ENDP中所指明的端點將接收到主機發(fā)出的數(shù)據(jù)包,而對IN來說,所指定的端點將輸出一個數(shù)據(jù)包。Token和SOF在三個字節(jié)的時間內(nèi)以一個EOP(End of Packet)結(jié)束。如果一個包被解碼為Token包但是并沒有在3個字節(jié)時間內(nèi)以EOP結(jié)束,就會被看作非法包或該包被忽略。對于SOF包,它的格式如圖3-5所示。主機以一定的速率(1ms0.05一次)發(fā)送SOF包,SOF不引起任何操作。圖3-5 SOF數(shù)據(jù)格式數(shù)據(jù)包:包括Data0和Data1兩種類型。這兩種包的定義是為了支持數(shù)據(jù)觸發(fā)同步。數(shù)據(jù)包包含了PID、DATA和CRC三個域,如圖3-6所示。圖3-6 DATA數(shù)據(jù)格式應答包(Handshake Packet):僅包含一個如圖3-7所示的PID域。Handshake用來報告數(shù)據(jù)傳輸?shù)臓顟B(tài)。只有支持流控制的傳輸類型(控制中斷和批傳輸)才能返回Handshake。圖3-7 PID數(shù)據(jù)格式Handshake包有三種類型:(1)確認包ACK:表明數(shù)據(jù)接收成功。(2)無效包NAK:指出設備暫時不能傳送或接收數(shù)據(jù),但無需主機介入,可以解釋成設備忙。(3)出錯包STALL:指出設備不能傳送或接收數(shù)據(jù),但需要主機介入才能恢復,NAK和STALL不能由主機發(fā)出。特殊包(Special):PID名稱為PRE(preamble),用于低速操作的情形 。3.總線操作的格式圖3-8 批操作流程批操作(bulk transaction):批操作包括令牌、數(shù)據(jù)、應答三個階段,如圖3-8所示。對于輸入操作,如果設備不能返回數(shù)據(jù),那么必須發(fā)出NAK或STALL包;對于輸出如果設備不能接收數(shù)據(jù),也要返回NAK或STALL。 圖3-9描述了批操作的讀寫過程以及序列位(sequence bit)和數(shù)據(jù)包PID的使用。圖3-9批操作讀寫過程控制操作(control transaction):主要包括兩個操作階段(transaction stage):設置和狀態(tài)。圖3-10給出了設置操作的細節(jié),如果數(shù)據(jù)沒有正確接收,那么設備就會忽略它,而且不返回應答包。圖3-10 控制操作流程控制操作的詳細描述如圖3-11所示,其中我們要注意數(shù)據(jù)包PID的使用。圖3-11控制操作讀寫過程中斷操作(interrupt transaction):中斷操作只有輸入這一個方向,具體格式與批操作的輸入情形如圖3-12所示。圖3-12中斷操作流程同步操作(isochronous transaction): 同步操作不同于其他類型,如圖3-13所示,其只包含兩個階段:令牌和數(shù)據(jù)。因為同步傳輸不支持重發(fā)的能力,所以沒有應答階段。另外它也不支持數(shù)據(jù)的觸發(fā)同步與重試。圖3-13同步操作流程4.數(shù)據(jù)觸發(fā)同步與重試USB提供了保證數(shù)據(jù)序列同步的機制,這一機制確保了數(shù)據(jù)傳輸?shù)臏蚀_性。這一同步過程是通過Data0和Data1的PID以及發(fā)送者與接收者上的數(shù)據(jù)觸發(fā)序列位(data toggle sequence bit)來實現(xiàn)的。接收者的序列位只有當接收到一個正確的數(shù)據(jù)包時(包括正確的PID)才能被觸發(fā)。而發(fā)送者的序列位只有當接收到確認包ACK時才能被觸發(fā)。在總線傳輸?shù)拈_始,發(fā)送者與接收者的序列位必須一致,這是由控制命令來實現(xià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,同時接收者的序列位被觸發(fā)。如果數(shù)據(jù)可以被接收,但兩者的序列位不匹配,則接收者只發(fā)出ACK而不進行其它操作。對于發(fā)送者來說,在接收到NAK時或在規(guī)定時間內(nèi)沒有接收到ACK,則將上一次的數(shù)據(jù)重發(fā)。5低速操作Hub具有禁止高速信號進入低速設備的能力,這既防止了電磁干擾的發(fā)生,又保護了低速設備。圖3-17是一次低速的輸入操作,主機發(fā)送令牌與應答包并且接收了一個數(shù)據(jù)包。圖3-17 低速方式的輸入操作所有下行的低速傳輸?shù)陌?,必須先發(fā)送一個PRE包。Hub必須解釋PRE包,而所有其它的USB設備必須忽略這個包。主機在發(fā)送完PRE包后,必須等待至少4位的時間,而在這個期間,Hub完成必要的設置,使之能接收低速的信號。在接收到EOP信號之后,Hub關閉低速設備的端口。上行的操作則沒有上述的行為,低速與高速是一樣的。 低速操作還有其它的限制:(1)數(shù)據(jù)包最大限制為8個字節(jié)。(2)只支持中斷和控制傳輸方式。6.錯誤檢驗與恢復 USB具有檢查錯誤的能力,并且可以根據(jù)傳輸類型的要求進行相應的處理。例如,控制傳輸?shù)男枰芨叩臄?shù)據(jù)準確度,因此支持所有錯誤檢驗與重試來實現(xiàn)端對端的數(shù)據(jù)完整傳輸。而同步傳輸不允許重試,因此必須具有一定的容錯性。USB這種檢查錯誤的能力包括:PID檢驗、CRC檢驗、總線時間溢出以及EOP錯誤檢驗等等。第4章 PC與單片機通過USB的通信設計 4.1 設計方案選擇由于實際應用中單片機在數(shù)據(jù)處理能力、人機交互等方面往往不能滿足要求, 因而通常用PC來彌補單片機的這些不足。例如,在工程應用中,常常由一臺PC機和一臺單片機構(gòu)成主從式計算機測控系統(tǒng)。在這樣的系統(tǒng)中, 以單片機為核心的智能測控儀表(從機)作為現(xiàn)場測控設備, 完成數(shù)據(jù)的采集、處理和控制各種任務, 同時將數(shù)據(jù)傳給PC機(主機),PC機將這些數(shù)據(jù)加工處理后,進行顯示、打印報表等。PC機也可以將各種控制命令傳送給單片機, 干預單片機系統(tǒng)的運行, 從而發(fā)揮PC機的優(yōu)勢。要實現(xiàn)這樣的功能, 就涉及到PC機與單片機之間的通信問題?,F(xiàn)在的計算機提供了各種各樣的串口,他們支持不同的通信協(xié)議,有著不同的功能。目前計算機提供的串口有RS-232,RJ45,USB2.0等。4.1.1 PC機同單片機通信存在的問題目前,51單片機同PC機的通信在大多數(shù)情況下仍然是使用RS-232(DB-9)串口作為通信接口實現(xiàn)的。而隨著USB接口技術的成熟和使用的普及,由于USB 接口有著一系列RS-232(DB-9)串口無法比擬的優(yōu)點,RS-232(DB-9)串口正在逐步的為USB接口所替代。而在現(xiàn)在的大多數(shù)筆記本電腦中,出于節(jié)省物理空間和用處不大等原因,RS-232(DB-9)串口已不再設置,這就約束了基于RS-232(DB-9)串口與PC 機聯(lián)絡的單片機設備的使用范圍。4.1.2 USB接口同RS-232(DB-9)串口的比較 通過USB 接口和RS-232(DB-9)的比較,不難發(fā)現(xiàn):(1)USB 接口支持即插即用和熱插拔,而RS-232(DB-9)串口不支持即插即用和熱插拔,設備安裝后需重啟計算機方可使用。(2)USB 接口的傳輸速率較快,可達480Mbps(V2.0),而RS-232(DB-9)串口的最高速率僅為19200 波特。(3)USB 接口占用體積較小,插拔方便;而RS-232(DB-9)串口的的插拔需要使用改錐,且在機箱后操作,比較麻煩。綜上可知,USB 接口取代RS-232(DB-9)串口的趨勢不可逆轉(zhuǎn)。另外在本設計中選擇使用的單片機是AT8C951。AT89C51是一種低功耗、高性能的8位單片微型計算機,它采用了CMOS工藝和ATMEL公司的高密度NVRAM(非易失性隨機存儲器) 技術, 片內(nèi)帶有一個4KB 的FLASH FPROM(可擦除、可編程只讀存儲器) , 作為INTEL8051的換代產(chǎn)品, 其輸出引腳和指令系統(tǒng)與MCS-51 完全兼容。由于AT89C51單片機具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡單、價格便宜等諸多優(yōu)點, 因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測量等方面有著廣泛的應用。4.1.3 USB轉(zhuǎn)接芯片的選擇目前常用的USB 轉(zhuǎn)接芯片包括PL2303,CH341,CP2101,F(xiàn)T232等。在綜合考慮了各方面因素后,CH341成為了本次電路設計的首選芯片。CH341是南京沁恒電子公司生產(chǎn)的USB總線的轉(zhuǎn)接芯片,通過USB總線提供異步串口,打印口,并口及常用的2 線和4線等同步串行端口。其特點有:(1)提供全速USB 設備借口,兼容USB2.0,外圍設備只需要晶體和電容;(2)可通過外部的低成本串行EPROM 定義廠商ID,產(chǎn)品ID,序列號等;(3)成本低廉,可直接轉(zhuǎn)換原串口外圍設備;(4)采用SOP-28封裝,串口應用還提供小型的SSOP20封裝。正是由于在PC機同單片機通信電路中,USB轉(zhuǎn)接芯片CH341 具有以上其他芯片無法比擬的優(yōu)點,同時價格低廉并且提供中文技術支持,因此它成為了本電路USB轉(zhuǎn)接芯片的最優(yōu)選擇。本電路采用的是SSOP-20封裝的CH341T,其引腳圖如圖4-1所示。圖4-1 CH341T 引腳圖4.2硬件設計4.2.1硬件電路設計CH341T提供全速USB設備接口,兼容USB2.0,外圍器件只需要電容和晶體,電路如圖4-2 所示。圖4-2 USB 通信模塊電路圖其中,電源電壓為5V,USB接口的差分數(shù)據(jù)線對與CH341T的UD-和UD+直接相連。CH341T提供TTL電平,同AT89C51直接采用簡單的3線連接(RXDTXD;TXDRXD;GNDGND)。在5V電源的情況下,V3口需要外接0.01uF的退耦電容。TEN#為串口發(fā)送數(shù)據(jù)使能端,低電平有效。CH341T必須使用12Mhz晶振,否則無法正常工作。為保證單片機能夠產(chǎn)生與計算機匹配的波特率,單片機采用11.0592Mhz的晶振。4.2.2硬件驅(qū)動程序安裝在網(wǎng)站/download/index.htm可下載CH341T 驅(qū)動程序CH341SER.EXE,在確認驅(qū)動程序和硬件電路無誤后,打開驅(qū)動程序。彈出安裝對話框后選擇INSTALL,設備將自動安裝驅(qū)動程序。安裝完成后計算機將提示安裝成功。將硬件電路通過USB接口連接至計算機,計算機自動識別并彈出新硬件安裝對話框,選擇自動安裝,驅(qū)動程序即可成功安裝至計算機。在計算機設備管理器中,可顯示剛剛安裝成功的USB串口。如圖4-3所示。圖4-3 安裝完成后的設備管理器開始USB設置是否為TRUE?檢查設備是否配置調(diào)用I2cWriteRead();發(fā)送數(shù)據(jù)接收數(shù)據(jù)結(jié)束處理USB Setup包圖4-4計算機與USB通信處理流程圖4.3通信程序設計4.3.1 PC機與USB通信程序設計圖4-4為計算機與USB通信處理流程圖。部分關鍵代碼如下: void main(void) init_port();/*初始化I/O口*/ init_timer0();/*設置定時器0*/ init_special_interrupts();/*設置中斷*/ D12_DATA = 0xfb02;/*定義數(shù)據(jù)地址*/ D12_COMMAND = 0xfb03;/*定義命令地址*/ D12_DATA = 0x7002;/*定義數(shù)據(jù)地址*/ D12_COMMAND = 0x7003;/*定義命令地址*/ D12_SetDMA(0x0);/*不使用DMA功能*/ bEPPflags.value = 0;/*初始化USB寄存器*/ /*上電復位,USB總線重新連接指令 */ reconnect_USB(); while(TRUE ) if(bEPPflags.bits.configuration) I2cWriteRead();/*如果設備已配置,調(diào)用I2cWriteRead()*/outportb(port,a); /*發(fā)送數(shù)據(jù)usbserve();/*處理USB的setup包*/for(j=0;j9;j+) /*接收數(shù)據(jù)*/ while(!(inportb(port+5)&1); chj=inportb(port); for(j=0;j9;j+) printf(n %dn,chj); getch(); break; 4.3.2單片機通信程序設計為實現(xiàn)單片機同PC機的簡單通信功能,需要通過匯編指令使單片機完成一定的工作來驗證USB接口通信的暢通。若要使單片機串口能夠同PC機正常通信,單片機和USB接口需要使用相同的通信協(xié)議,在設備管理器中,可設置串口破特率為9600。而在單片機中,通過軟件設置串口波特率為9600,工作方式為方式一,每接收一個8 位數(shù)據(jù),將數(shù)據(jù)保存并回送至計算機,以此來實現(xiàn)對USB通信暢通與否的測試。程序流程圖如圖4-6所示。開始設定定時器和USB工作方式開中斷 等待中斷中斷產(chǎn)生接收數(shù)據(jù)關中斷回送數(shù)據(jù)開發(fā)送中斷等待數(shù)據(jù)接收完成返回初始狀態(tài)圖4-6 單片機的程序流程圖根據(jù)程序流程圖,單片機的指令代碼如下:ORG DDOOHSTART:MOV TMOD,#20H;定時器T1為方式2MOV TL1,#DFDH;波特率為9600SETB TR1MOV SCON,#50H;串口工作方式1,REN=1SETB ESSETB EA;開中斷SJMP $;等待中斷ORG 0023H;中斷入口地址JNB BI,SBR;RI為1時跳至發(fā)送,為0時說明發(fā)送已完成AJMP START;返回初始狀態(tài),等待下一次數(shù)據(jù)接收,實現(xiàn)數(shù)據(jù)的循環(huán)接收SBR:AJMP SBR1ORG 0100HSBR1:CLR RIMOV A,ABUF;接收數(shù)據(jù)MOV B1,AMOV SBUF,A;數(shù)據(jù)回送JNB T1,$CLR T14.4 USB通信模塊調(diào)試USB通信模塊的調(diào)試使用串口調(diào)試工具(ComTools),該工具是一款功能強大的串口調(diào)試免費軟件。其主要功能如下:(1)支持COM1COM8 串口的數(shù)據(jù)發(fā)送和接收,可重復發(fā)送和接收數(shù)據(jù);(2)支持HEX 格式數(shù)據(jù)和ASC 格式數(shù)據(jù)的串口發(fā)送和接收;(3)可自定義數(shù)據(jù)格式,校驗位,可自定義數(shù)據(jù)傳輸速率;(4)可自動記錄發(fā)送和接收的數(shù)據(jù)并保存。使用串口調(diào)試工具可以方便的通過計算機向USB 串口通信模塊發(fā)送數(shù)據(jù)并記錄所接收的數(shù)據(jù)。因此,本次USB 通信模塊的調(diào)試使用該串口調(diào)試工具完成PC 機同單片機的通信。打開串口調(diào)試工具。首先選擇串口設置,設置串口為設備管理器中對應的串口(COM1),設置波特率為9600,數(shù)據(jù)長度為8 位,停止位為1 位。在發(fā)送文本框中輸入2 字節(jié)16 進制數(shù)據(jù),點擊發(fā)送向串口發(fā)送16 進制8 位數(shù)據(jù)。觀察接收文本框,可以發(fā)現(xiàn),計算機成功接收到單片機回送的8 位數(shù)據(jù)。在清空發(fā)送文本框后,經(jīng)過多次的重復操作觀察確認,每一次都能正確接收數(shù)據(jù)。為了進一步測驗系統(tǒng)的穩(wěn)定性,在拔掉USB 通信模塊后重新插入,計算機能夠自動識別串口,重新打開串口調(diào)試工具后仍然能夠正確的發(fā)送和接收。因此,該USB通信模塊的數(shù)據(jù)準確性和系統(tǒng)的穩(wěn)定性都得到了驗證。通過測試,該USB通信模塊基本能達到如下設計要求:(1)通過USB 接口實現(xiàn)串口通信,能夠在USB 接口上完成以往需要使用RS-232(DB9)進行通信的計算機設備的通信;(2)支持熱插拔,驅(qū)動程序一次安裝即可永久使用,不必在每次插拔后重啟計算機;(3)硬件電路簡單,外圍器件少,制作方便,成本低廉;(4)可移植性強,支持絕大多數(shù)型號的單片機;可擴充性好,用戶可根
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會議簽到助手服務合同
- 互動體驗課程合同范本
- 2025至2031年中國銑削波浪型鋼纖維行業(yè)投資前景及策略咨詢研究報告
- 2025年安徽省滁州市單招職業(yè)適應性考試題庫含答案
- 2025年安徽工貿(mào)職業(yè)技術學院單招職業(yè)技能測試題庫及完整答案一套
- 2025年阿克蘇職業(yè)技術學院單招職業(yè)適應性考試題庫及完整答案1套
- 2025年安陽職業(yè)技術學院單招職業(yè)技能測試題庫往年題考
- 2025年安徽省池州市單招職業(yè)適應性測試題庫完美版
- 2025年安徽糧食工程職業(yè)學院單招職業(yè)適應性考試題庫完美版
- 2025年北??叼B(yǎng)職業(yè)學院單招職業(yè)技能考試題庫及完整答案1套
- 部編版小學語文三年級下冊第六單元教材解讀及教學建議
- DB11T 1315-2015 綠色建筑工程驗收規(guī)范
- 山東省2024年夏季普通高中學業(yè)水平合格考試地理試題02(解析版)
- 《ISO 41001-2018 設施管理- 管理體系 要求及使用指南》專業(yè)解讀與應用指導材料之16:“8運行”(雷澤佳編制-2024)
- 2024智慧城市數(shù)據(jù)分類標準規(guī)范
- Linux系統(tǒng)管理與服務器配置-基于CentOS 7(第2版) 課件 第1章CentOS Linux 7系統(tǒng)的安裝與介紹
- 新目標英語中考一輪教材梳理復習教案
- 2022新教材蘇教版科學5五年級下冊全冊教學設計
- 光伏電氣設備試驗方案
- 2024-2025學年全國中學生天文知識競賽考試題庫(含答案)
- 2024至2030年中國非標自動化行業(yè)需求領域與供需平衡預測分析報告
評論
0/150
提交評論