畢業設計USB接口電路設計及通信編程_第1頁
畢業設計USB接口電路設計及通信編程_第2頁
畢業設計USB接口電路設計及通信編程_第3頁
畢業設計USB接口電路設計及通信編程_第4頁
畢業設計USB接口電路設計及通信編程_第5頁
已閱讀5頁,還剩61頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘 要通用串行總線,即Universal Serial Bus(USB)是一種應用前景非常廣闊的新型串行接口總線。它具有使用方便、易于擴展和傳輸速率高的特點,廣泛應用于各種中低速計算機外設及數字設備中,并在不斷發展完善之中。基于USB總線的數據傳輸方法有著其他方式所沒有的高速與方便,因此有著很高的實際應用價值。本課題的主要研究內容是:掌握USB通信協議及器件工作方式、利用MCS51系列單片機控制PDIUSBD12接口芯片及周邊電路、以及以此為依據設計的接口電路和通信函數,最終通過USB接口實現單片機與Windows平臺計算機之間的數據通信。本課題實現的是主機識別USB外設的過程與最基本的控制傳

2、輸,是USB數據通信的基礎,因此這種方式完成的接口設計具有相當的通用性,可以廣泛的應用與移動硬盤、讀卡器等設備的開發中。本課題使用的USB接口芯片是Philips公司的PDIUSBD12-08,所使用的驅動是用Microsoft公司提供的DDK(驅動開發工具包)編制的,完全保證了軟、硬件的可靠性、兼容性。關鍵詞 USB PDIUSBD12 控制傳輸 USB固件編程Abstract Universal Serial the Bus( USB) is a new serial bus that will be wildly used in the future. It has some advan

3、tages as convenience, easy to expend and high speed on transmitting, so it can be applied to various computer peripheral devices and digital equipments. In addition, its being improved every single day. The data transmission based on USB is more fast and convenient than the other methods, so it has

4、high value in practical application.The main content of our task is:Study the specification of USB and master the way of how USB device works; use singlechip 89C52 to handle PDIUSBD12 and other chips; design the interface circuit and firmware, and finally realize the dialogue between the USB control

5、ler and the host operated on Windows though the USB cable.This task is to complete the process of enumeration and configure and the basic control transfer. The design achieved by this means can be applied to many other developments such as mass storage and so on because the problems in the task are

6、the base of USB data communications.The USB controller we select is PDIUSBD12 that is produced by Philips and the driver we installed is compiled with the Device Drivers Kit(DDK) offered by Microsoft. So both the software and the hardware of the project is reliable and has good compatibility.Key wor

7、ds USB PDIUSBD12 Control transfer USB firmware programmingII目 錄摘 要IAbstractII第1章 緒 論111 研究的目的和意義112 USB技術的發展狀況及前景11.2.1 USB的發展歷史11.2.2 USB的特點21.2.3 USB的應用與前景413主要研究內容與完成情況5第2章 系統總體設計的軟硬件原理62.1 引言62.2 任務分析及技術指標62.3 硬件電路原理概述62.3.1 總體設計方案62.3.2 單片機89C52的連接方法72.3.3 接口芯片PDIUSBD12的連接方法72.4 固件程序開發及應用過程11第3

8、章 USB總線規范及傳輸原理簡介123.1 引言123.2 通用串行總線規范123.2.1 概述123.2.2 主要內容123.3 USB傳輸原理143.3.1 四種傳輸類型簡介143.3.2 USB數據傳輸原理153.3.3 控制傳輸分析173.3.4 批量傳輸193.4 差錯控制203.5 本章小結20第4章 USB控制器芯片PDIUSBD12介紹214.1 引言214.2 PDIUSBD12特點214.3 PDIUSBD12數據傳輸原理224.4 PDIUSBD12命令代碼功能與用法234.4.1初始化命令234.4.2 數據流命令244.4.3 通用命令274.3 本章小結27第5章

9、固件程序詳解285.1 前言285.2 程序總體結構285.2.1 概述285.2.2 硬件提取層HAL.C295.2.3 PDIUSBD12命令接口USBD12.C295.2.4 中斷服務程序ISR.C295.2.5 主循環MAIN.C、USB.C305.2.6 協議層CHAP9.C、VDOR.C305.3 各層程序流程詳解305.3.1 主循環MAIN.C305.3.2 協議層335.3.3 中斷服務程序395.4 本章小結46結 論47致 謝48參考文獻49附錄150附錄257附錄365附錄468II 第1章 緒 論11 研究的目的和意義隨著計算機技術的不斷提高,計算機已經逐漸深入生產生

10、活的各個層面,并帶來了翻天覆地的變革。隨之而來的是計算機外設的極大豐富,并對計算機的接口標準有了更高的要求。本課題研究的就是新一代的通用串行總線(USB)標準的開發及應用。具體而言,是利用MCS51系列單片機控制PDIUSBD12接口芯片并設計USB接口電路,掌握USB通信協議及器件工作方式,編制通信函數,實現單片機與windows平臺系統計算機之間的數據通信。USB接口具有使用方便、易于擴展和傳輸速率高等特點,因此應用范圍十分廣泛。本文中所研究的設計方法適用于大多數USB設備和主機間通信的建立,并可應用于移動硬盤、讀卡器等存儲設備中,具有很高的實用價值。12 USB技術的發展狀況及前景1.2

11、.1 USB的發展歷史USB(Universal Serial Bus)即通用串行總線,是一種通用接口標準,它可以在所有類型的計算機上代替現有接口來連接低中速標準和定制的類型。如果現有的接口對所有應用中的外設有很強的適應性,新的接口不會在短期內推出,因為使用一個現有的接口可以剩去設計新接口所需要的時間和花費。但是隨著計算機電源和外設數目的增加,老的接口如RS-232已經成為低速通信的瓶頸,而且其可以改進的地方很有限。于是USB做為一種通用接口應運而生,其改進所帶來的好處遠遠大于改變過程中的不便和花費。USB的新標準和開發問題是由標準的開發者形成一個新的組織來發布和處理。USB1.1版的白皮書版

12、權屬于康柏、Intel、微軟和NEC,他們都同意任何人可以免費使用這個白皮書版本。USB開發者論壇網站為開發者和用戶提供了所有USB白皮書的最新版本和其他信息。1996年1月,USB白皮書1.0版公布。1998年10月,USB白皮書1.1版公布。2000年4月,USB白皮書2.0版公布1。1.2.2 USB的特點USB之所以能得到廣泛支持和快速普及,是因為它具備下列的很多特點:1使用方便使用USB接口可以連接多個不同的設備,而且支持熱插拔。在軟件方面,為USB設計的驅動程序和應用軟件可以自動啟動,無需用戶干預。USB設備也不涉及IRQ沖突等問題,它單獨使用自己的保留中斷,不會同其它設備爭用PC

13、機有限的資源,為用戶省去了硬件配置的煩惱。USB設備能真正做到“即插即用”。2速度較快傳輸速度快速是USB技術的突出特點之一。USB1.1接口的最高傳輸率目前可達12Mbs,比串口快了整整100倍,與并口相比也快了十多倍。而USB2.0的速度已經提高到400Mbs。3連接靈活USB接口支持多個不同設備的串列連接,一個USB口理論上可以連接127個USB設備,而每個外設間距離(線纜長度)可達5米。連接的方式也十分靈活,既可以使用串行連接,也可以使用中樞轉接頭(Hub),把多個設備連接在一起,再同PC機的USB口相接。在USB方式下,所有的外設都在機箱外連接,不必打開機箱;允許外設熱插拔,而不必關

14、閉主機電源。USB還能智能識別USB鏈上外圍設備的接入或拆卸。USB總線拓撲結構如下圖所示:圖11 USB總線拓撲結構4總線供電普通使用串口、并口的設備都需要單獨的供電系統,而USB設備則不需要,因為USB接口提供了內置電源。USB電源能向低壓設備提供5V的電源,因此新的設備就不需要專門的交流電源了,從而降低了這些設備的成本并提高了性價比。5支持多媒體USB提供了對電話的兩路數據支持,USB可支持異步以及等時數據傳輸,使電話可與PC集成,共享語音郵件及其它特性。USB還具有高保真音頻。由于USB音頻信息生成于計算機外,因而減少了電子噪音干擾聲音質量的機會,從而使音頻系統具有更高的保真度。6US

15、B存在的問題盡管在理論上,USB可以實現高達127個設備的串列連接,但是在實際應用中,也許串聯3到4個設備就可能導致一些設備失效。而且大多數USB產品,只有一個輸入口,根本無法再連接下一個USB設備。另外,盡管USB本身可以提供500mA的電流,但一旦碰到高耗電的設備,就會導致供電不足。解決這些問題的辦法是使用USBHub,但Hub的價格目前還太貴了點。此外,對開發者而言,協議的復雜與操作系統的支持都是目前遇到的困難。1.2.3 USB的應用與前景到目前為止,USB已經在PC機的多種外設上得到應用,包括掃描儀、數碼相機、數碼攝像機、音頻系統、顯示器、輸入設備等等。 掃描儀和數碼相機、數碼攝像機

16、是從USB中最早獲益的產品。傳統的掃描儀,在執行掃描操作之前,用戶必須先啟動圖像處理軟件和掃描驅動軟件,然后通過軟件操作掃描儀。而USB掃描儀則不同,用戶只需放好要掃描的圖文,按一下掃描儀的按鈕,屏幕上會自動彈出掃描儀驅動軟件和圖像處理軟件,并實時監視掃描的過程。USB數碼相機、攝像機更得益于USB的高速數據傳輸能力,使大容量的圖像文件傳輸在短時間內即可完成。USB在音頻系統可以把數字音頻信號傳送到音箱,不再需要聲卡進行數模轉換,音質也較以前有一定的提高。USB技術在輸入設備上的應用也很成功,USB鍵盤、鼠標器以及游戲桿都表現得極為穩定,很少出現問題。早在1997年,市場上就已經出現了具備US

17、B接口的顯示器,為PC機提供附加的USB口。這主要是因為大多數的PC機外設都是桌面設備,同顯示器連接要比同主機連接更方便、簡單。目前市場上出現的USB設備還有USB Modem、Iomega的USB ZIP驅動器以及eTek的USB PC網卡等等。 對于筆記本電腦來說,使用USB接口的意義更加重大,通用的USB接口不僅使筆記本電腦對外的連接變得方便,更可以使筆記本電腦生產廠商不再需要為不同配件在主板上安置不同的接口,這使主板的線路、組件的數量以及復雜程度都有不同程度的削減,從而使系統運行中的散熱問題得到了改善。也將促進更高主頻的處理器可以迅速應用在移動計算機中,使筆記本電腦與桌面PC的差距進一

18、步縮小。現在,支持USB的PC及外設越來越多,在軟件上USB也已成為Windows98的一個關鍵部分,并很快在WindowsCE/ME和Windows2000/XP中得到支持。Apple的操作平臺早已提供對USB的支持,預計今后Sun和Digital的平臺也將會提供對這一技術的支持。USB的應用會越來越廣泛,一些業界人士甚至預測,未來的PC將是一個密封設備,所有外設都將通過USB或其他外部接口連接2。13主要研究內容與完成情況本課題的主要研究內容有:1 USB1.1協議分析。2 PDIUSBD12的工作原理和操作方法。3 根據USB協議編制通信函數,實現與計算機之間的數據通信。經過調試,已經可

19、以實現主機識別過程,正常進行控制傳輸。但是為了主機能夠正確識別設備,需要加載驅動程序;為了控制LED燈以顯示控制結果,需要安裝上層控制程序。第2章 系統總體設計的軟硬件原理2.1 引言作為一個計算機外部設備的開發工程,需要軟件與硬件、主機與設備之間的相互協調。因此,良好的結構設計、開發計劃以及編程規范是非常必要的。本章將概括性地介紹本設計的各個開發模塊。2.2 任務分析及技術指標本設計主要用于初步實現USB的數據傳輸功能,以便將來擴展應用于大容量數據存儲或其它設備上。因此,本設計要求有良好的標準性、擴展性以及可重復利用性。具體而言,本電路要求主機能夠正確枚舉這標志著控制傳輸以及標準請求的順利實

20、現;同時,需要有對LED燈的成功控制,做為控制傳輸的應用同時方便調試的實現;另外,良好的模塊化設計也應從固件設計中體現。因此,我們將從硬件電路和固件程序兩方面來介紹。2.3 硬件電路原理概述2.3.1 總體設計方案本設計電路的核心芯片選用的是Atmel公司的MCU芯片AT89C52和Philips公司的USB控制芯片PDIUSBD12。外圍電路主要使用了Flashrom、串行接口ADC、數據鎖存器74HC373等邏輯器件。MCU與D12之間通過并行傳輸交換數據,然后由D12轉換為串行數據通過USB電纜發送出去。主機可以控制Flash-rom的讀寫,這一功能的加入是為了方便將來大容量存儲設備的實

21、現。2.3.2 單片機89C52的連接方法關于89C51/52系列單片機大家都已經很熟悉,具體的管腳信息可以查閱相關資料,在此不再贅述。本電路中單片機與其他器件的連接方法如下:1)PIN1即P1.0,接LED,這樣可以通過此腳控制燈的亮滅。2)PIN10、11即串行輸入、輸出RXD、TXD,接MAX232的PIN11、12即TIIN、R1OUT,這樣可以實現串口通信。3)PIN12即外部中斷0,接D12的PIN14,這樣可以接受D12的中斷請求。4)PIN16、17即外部數據存儲器寫、讀控制,接D12對應的寫、讀控制,這樣控制對D12的讀寫。5)PIN21-28即P2.0-2.7,接Flash

22、-ROM芯片AT29C010的PIN8-15,這樣可以傳遞高8位地址。6)PIN29即外部程序存儲器選通信號PSEN,可通過跳線接Flash-ROM芯片AT29C010的PIN22,用于提供外部程序器讀信號。7)PIN30即地址鎖存ALE,接D12的ALE和地址鎖存器74HC373的LE,用于鎖存低位地址。8)PIN31即EA,通過跳線選接高或低,這樣可以選擇是否只訪問外部程序存儲器。9)PIN32-39即P0.0-0.7,接地址鎖存器74HC373輸入和Flash-ROM芯片AT29C010的I/O以及D12的并行數據接口,這樣可以實現傳遞8位地址和讀寫Flash-ROM兩種功能,即數據與地

23、址線的復用;D12與單片機之間的并行數據傳遞也通過這8個管腳實現。2.3.3 接口芯片PDIUSBD12的連接方法1管腳介紹PDIUSBD12共有28個管腳,其分布如下圖:圖21 PDIUSBD12管腳圖例各管腳功能如下:表21 PDIUSBD12管腳說明管腳符號類型描述1DATAIO2雙向數據位02DATAIO2雙向數據位13DATAIO2雙向數據位24DATAIO2雙向數據位35GNDP接地6DATAIO2雙向數據位47DATAIO2雙向數據位58DATAIO2雙向數據位69DATAIO2雙向數據位710ALEI地址鎖存使能。在多路地址/數據總線中,下降沿關閉地址信息鎖存。將其固定為低電平

24、時,用于單地址/數據總線配置。11CS_NI片選(低電平有效)12SUSPENDI,OD4器件處于掛起狀態13CLKOUTO2可編程時鐘輸出14INT_NOD4中斷(低電平有效)15RD_NI讀選通(低電平有效)16WR_NI寫選通(低電平有效)17DMREQO4DMA請求18DMACK_NIDMA應答(低電平有效)19EOT_NIDMA傳輸結束(低電平有效),需與DMACK_N、RD_N或WR_N一同激活20RESET_NI復位(低電平有效且不同步)。片內有上電復位電路,可固定接VCC21GL_NOD8GoodLink LED指示器,(低電平有效)22XTAL_1I晶振連接端1(6MHz)2

25、3XTAL_2O晶振連接端2(6MHz)。當采用外部時鐘信號取代晶振時,接XTAL_1,XTAL_2應當懸空24VCCP電源電壓(4.0V5.5V),要使器件工作在3.3V,對VCC和VOUT3.3腳都提供3.3V。25D-AUSB D-數據線26D+AUSB D+數據線27VOUT3.3P3.3V調整輸出。要使器件工作在3.3V,對VCC和VOUT3.3腳都提供3.3V。28A0I地址位。A0=1選擇命令指令,A0=0選擇數據。該位在多路地址/數據總線配置時可忽略,應將其接高電平。注:O2表示2mA驅動輸出,O4表示4mA驅動開漏輸出, OD8表示8mA驅動開漏輸出,IO2表示4mA輸出。2

26、PDIUSBD12與單片機的標準連接方法:圖22 PDIUSBD12與單片機89C51的標準連接方法在該例中,ALE接為低電平,表示一個獨立的地址和數據總線配置。PDIUSBD12的A0腳與80C51的任意一個I/O口相連,該端口控制PDIUSBD12的命令和數據狀態。80C51的多位地址和數據總線可直接與PDIUSBD12的數據總線相連,80C51的頻率輸入可由PDIUSBD12的CLKOUT提供。3本設計電路中PDIUSBD12與各邏輯器件的連接方法:1)PIN1-4和6-9與89C52的P0口相連,完成兩者間并行數據傳輸。2)PIN10為ALE,接89C52的ALE,實現地址鎖存。下降沿

27、用于關閉對地址/數據總線復用中的地址信息的鎖定。在地址與數據總線分開使用時始終接低電平。3)PIN11為片選CS,低電平。4)PIN12為掛起suspend,接89C52的P1.7,這樣可實現掛起控制。5)PIN13為外部時鐘,接晶振,并可由跳線選擇不同頻率。6)PIN14為中斷INT,接89C52的外部中斷0,可以發送中斷請求。7)PIN14、15為讀寫控制信號,與89C52的讀寫控制信號對應相連。8)PIN21為LED監測信號燈,接發光二極管,可以顯示芯片狀態是否正常。9)PIN25、26為數據傳輸線D+、D-,接USB接口實現與主機之間的串行通信。注:電源、地線從略。PIN28在地址/數

28、據總線復用的模式下不起作用。具體電路原理圖見附錄4。2.4 固件程序開發及應用過程本設計中的固件程序是用Keil C51 Vision編譯環境編譯的。C51是一種專為8051單片機設計的高級語言C編譯器,支持符合ANSI標準的C語言程序設計,同時針對8051單片機的自身特點做了一些特殊擴展。由于整個電路設計的核心是PDIUSBD12接口控制芯片,所以程序的設計也是以PHILIPS公司提供的例程為基礎進行設計的。原固件設計的目標是使PDIUSBD12在USB上達到最大的傳輸速率,一些外圍設備例如打印機、掃描儀、外部的海量存儲器和數碼相機都可使用PDIUSBD12在USB上傳輸數據。這些設備的CP

29、U要忙于處理許多設備控制、數據以及圖像處理等任務。PDIUSBD12的固件程序被設計成完全的中斷驅動,即當CPU處理前臺任務時USB的傳輸可在后臺進行。這就確保了最佳的傳輸速率和更好的軟件結構,同時簡化了編程和調試。本設計中的固件程序保留了原有程序的結構和設計思想,因此同樣具有較高的傳輸速率和良好的模塊化設計。但是由于沒有針對大容量的數據傳輸和處理的應用,所以沒有繼承例程中的Tpbulk.c;同時為了處理自定義的請求,加入了“廠商請求”處理函數VDOR.C。編譯后的固件程序下載到89C52中控制整個電路。第3章 USB總線規范及傳輸原理簡介3.1 引言在之前的介紹中我們已經對USB總線的特點有

30、了一定了解,接下來將要深入分析USB數據傳輸的原理及其細節。在這一章中,我們將從協議入手,重點研究USB數據傳輸的層次與結構,從而建立對固件設計思路的初步理解。3.2 通用串行總線規范3.2.1 概述USB從問世的開始就是一種通用的、標準化的接口形式,它在硬件發展的同時有著一個規范文件與之相適應,即通用串行總線規范,也就是我們常說的USB協議。由于規范是完全開放的,而且在規范里詳細規定了USB的方方面面,使得每一個開發者依據它開發出的產品都是符合標準的,這使得USB設備的開發更加容易。3.2.2 主要內容以1.1版的規范為例,它為USB外設開發者、驅動設計者、主機控制者等各種技術人員提供了詳盡

31、的說明。由于這些內容是完全公開的,本文只做概括性的介紹,供提示下文之用。1、USB總線系統概述這一章闡述了USB總線的體系結構以及幾個關鍵概念。在USB總線上主機可以和許多外設同時進行數據傳輸,這時所有外設根據一個由主機規定的基于令牌的協議來共享USB的總線帶寬。在主機和其它外設工作時,同樣可以插入、配置、使用和拔下一個新的USB設備,這就是我們在前面提到的熱插拔(即動態插拔)功能。2、USB數據流模型這一章闡述了對所有開發人員都有意義的有關數據是如何沿USB總線進行傳輸的問題。本章的內容是介紹在系統定義的信令和協議層之上的信息,目的是為之后的電氣特性、協議層的進一步擴展提供一個信息框架。在此

32、章,還給出了許多USB技術的關鍵概念。3、USB總線機械規范本章將介紹USB總線規范中的機械規范和電氣規范。其中機械規范給出了有關USB集線器、功能模塊和主機的連接器和電纜的機械特性,包括尺寸、材料、電氣和可靠性的要求。而電氣規范則描述了USB協議中規定的電氣特性,包括信令、功率分配和物理層規范。4、USB總線電氣特性這一章說明了USB電氣規范。它包括信息、功率分配和物理層規范。5、協議層本章將從域和分組定義開始,來說明USB協議。然后將描述不同事務類型的事務包格式。之后還要提到鏈路層流控和差錯恢復等內容。最后介紹有關重試同步,串擾和總線操作恢復的內容。6、USB設備構架一個USB設備可以分成

33、三層。最低一層是用于傳送和接收分組的總線接口。中間一層則用于控制總線接口和設備上的各個端點之間所形成的數據路由。一個端點是數據的最終使用者或提供者,可以認為它是一個信源或信宿。最高一層則是串行總線設備所提供的功能模塊:例如,一個鼠標或ISDN接口。這一章描述了一個USB設備的中間層的共同屬性和操作。設備中的某些功能部分將使用這些屬性和操作,通過總線接口并最終同主機進行通信。對于固件開發人員而言,本章內容是十分重要的。7、USB主機:硬件和軟件USB互連支持在一個主機和一個USB設備之間傳輸數據。本章闡述了為了簡化駐留在主機上的一個客戶軟件和在一個設備上實現的一個功能模塊之間所進行的USB通信,

34、所必需的主機接口。8、集線器規范這一章將介紹USB集線器的體系結構要求。它包括對兩個主要的子模塊的描述:集線器中繼器和集線器控制器。另外這一章也描述了用于差錯恢復、復位和掛起重新開始的集線器操作。在這章第二部分則定義了USB集線器的請求行為和集線器描述符。在集線器規范中給出了實現集線器所必需的充足的信息,從而允許開發人員可以開發出完全符合USB規范的USB集線器3。3.3 USB傳輸原理USB接口的本質功能是數據傳輸,而它在提供方便、易用的連接方式的同時,還有著傳輸速率較高的優點。這正是USB接口被廣泛使用的原因之一。這一節里本文將從USB數據傳輸原理的層面入手,分析它是如何保證數據傳輸的可靠

35、性和有效性的。3.3.1 四種傳輸類型簡介USB被設計成可以處理對響應速率、響應時間、和錯誤校正有不同要求的很多類型的外設。USB的規范說明書中定義了4種傳輸類型,它們每一個都反映了USB設備的端點可能要求的傳輸性質。1 控制傳輸控制傳輸是唯一一種由USB規范定義了功能的類型。這些傳輸經常在設備配置過程中使用,使主機能從設備列出的范圍中讀取和選擇配置和其他設置。控制傳輸也能發送自定義請求來為任何目的而發送或接收數據塊。所有的USB設備必須支持控制傳輸。2 批量傳輸批量傳輸是為了應付數據量大但是傳輸速率不是很關鍵的情況的,例如發送一個文件到打印機或從一個掃描儀接收數據。在這些情況下,快速傳輸是很

36、好,但如果必要則可以等待數據。如果總線忙于處理其他需要保證傳輸速率的傳輸,那么批量傳輸必須等待,但如果總線空閑,批量傳輸將會非常的快。只有全速設備能處理批量傳輸。設備不需要支持批量傳輸,但一個特殊設備類也可能需要支持批量傳輸。3 同步傳輸同步傳輸要求有一個恒定的發送速率,用于那些必須按一個常數速率傳輸數據的設備,例如一個需要被實時播放的聲音文件,或一個需要保證傳輸速率或時間的其他數據。這是唯一一種不支持有錯誤的數據自動重發送的傳輸類型。只有全速設備能處理同步傳輸。使用同步傳輸的應用程序必須保證在發送方和接收方之間能夠實現傳輸速率的匹配。4 中斷傳輸中斷傳輸是為那些必須快速接收到主機或設備的消息

37、而準備的。不像控制傳輸那樣,中斷傳輸是低速設備可以傳輸數據的唯一方法。鍵盤和鼠標可以用中斷傳輸來發送按鍵和鼠標移動數據。全速和低速設備都可以使用中斷傳輸。43.3.2 USB數據傳輸原理1結構主機把時間分成1ms的幀,然后每個傳輸都被分配到每一幀的一部分。每個幀以一個幀開始包開始,然后就是傳輸數據的事務。主機可以按自己的希望把事務安排在一幀的任何地方,一個傳輸事務可以在一個幀里完成,或者使用多個幀。每一次傳輸由一個或多個事務(Transaction)組成,而每個事務都是由包(Package)組成的,所以說,信息包是USB事務處理的基本構成單位。一個傳輸事務分為三個階段:信令階段、數據階段、握手

38、階段,對應于相應的三種信息包。其中,數據階段并不是必需的。一次典型的傳輸可用下圖表示:傳輸傳輸傳輸事務事務事務信令包數據包握手包PID設備地址等信息CRC圖3-1 USB傳輸的結構2傳輸類型、事務類型及段事務根據它們的目的和數據流的方向被定義為三種類型:Setup是發送控制控制傳輸請求給一個設備;IN是從一個設備接收數據;OUT是發送數據給設備。每個事務包括識別、錯誤檢測、狀態和控制信息,還有要被交換的數據。一個完整的傳輸可以包括多個幀,而一個事務是一個單個通信,必須被無中斷的完成。沒有其他通信可以插入到一個事務的中間。一個少量數據的傳輸可能只需要一個事務,但如果數據量很大,則一個傳輸可以使用

39、多個事務,每個事務負責傳輸一部分數據。設備必須能快速的提供被請求的數據或狀態信息。每個事務最多有三個段或部分:標記(信令)、數據和交換(握手)。每個段由一個或兩個被傳輸的包組成。傳輸類型、事務類型及包的關系如下表:表3-1 傳輸類型、事務類型及包的關系傳輸類型階段(0或多個)段(包)控制Setup標記數據交換數據(IN或OUR)(可選)標記數據交換狀態(IN或OUR)標記數據交換批量數據(IN或OUR)標記數據交換中斷數據(IN或OUR)標記數據交換同步數據(IN或OUR)標記數據交換3解析USB傳輸中的信息包除了上一節提到的三種與傳輸數據事務的各個段相對應的信息包外,還有兩種類型,分別為幀起

40、始包和低速先導包。所有的包都是以包含了識別信息的一個包的ID(PID)開始,根據事務,PID之后可能是一個終端地址、數據、狀態信息或一個幀的編號,還有錯誤檢驗位。PID包是識別包的唯一標識:表3-2 PID包詳解類型名稱值(高位在前)描述記號OUT0001主機到設備的事務IN1001設備到主機的事務SOF0101幀開始標記和幀編號SETUP1101主機到設備的Setup事務數據DATA00011有偶同步位的數據包DATA11011有奇同步位的數據包交換ACK0010接收器接收到無錯誤數據包NAK1010接收器不能接收數據或發送者不能發送數據或沒有數據要傳輸STALL1110一個控制請求不支持或

41、終端被終止特殊PRE1100主機發送的的先導。允許到低速設備的下游通信關于這五種包類型的特性,見下表:表3-3 五種包類型詳解包類型用于何種傳輸類型來源內容(附加PID)標記所有主機終端地址數據所有主機或設備數據或交換交換控制、中斷、批量主機或設備無(PID包含交換代碼)幀起始無(只發送自己)主機幀起始計時低速先導所有低速設備主機無標記包主要用于在信令階段攜帶通信請求,也可能攜帶一個幀起始(SOF)記號;數據用于在數據階段傳輸信息;交換包用于在握手階段攜帶狀態或交換信息。3.3.3 控制傳輸分析控制傳輸是規范中唯一定義的形式,主要用來發送與設備的能力和配置有關的請求和數據,也可以傳輸任何有其他

42、用途的信息塊。因此,控制傳輸是最重要的一種傳輸模式,同時也是本設計的核心功能。本節將對它進行詳細分析。首先,控制傳輸符合上一節中介紹的結構,即一個控制傳輸有兩個或三個階段,每個階段有一個或多個事務組成。具體來講,每個控制傳輸必須有設置和狀態階段,而數據階段是可選的。由于每個控制傳輸需要雙向傳輸某些信息,所有控制傳輸的消息流程使用了終端的IN和OUT地址。在一個控制寫傳輸中,數據由主機流向設備。在一個控制讀傳輸中,數據由設備流向主機。以控制寫傳輸為例:1)先進入的是設置階段,主機通過發送請求信息來啟動一個設置事務。在這個事務中將傳輸三個包標記包包含了一個標志這個傳輸為控制傳輸的PID(見表3-2

43、中SETUP項),用于指定接收方并指定這個事物為設置事務;數據包包括了請求信息、請求號,若有這個傳輸有數據階段還將包括數據流向;設備在受到主機發送的請求時必須返回一個交換包ACK。需要說明的是,在控制傳輸的設置階段中,數據包的大小總是8B。而且這個8B的數據包的格式是完全固定的,用于發送USB規范定義的11中標準請求或特定的請求。這種結構化的關鍵數據,有利于提取其中的信息,對固件和驅動的編寫非常有用。表3-4 設置階段數據包格式偏移量字段字節數描述0bmRequestType1請求特性: D7 表示數據傳輸方向 0為主機到設備;1為設備到主機D65表示請求類型 0為標準請求 1為類請求 2為廠

44、商請求 3為保留1bRequest1特殊請求2wValue2依請求不同而變4wIndex2通常用于傳遞一個指針或偏移量6wLength2有數據階段時傳輸的數據量2)如果在這個控制寫傳輸中有數據階段,那么它的標志包的PID一定是OUT,而且在這個階段的所有數據包必須是同一個方向的。具體分析數據階段,同樣有三種信息包:帶有IN或OUT PID的標志包;PID為DATA0或DATA1的數據包;以及設備返回給主機的交換包,根據傳輸狀態可能為ACK、NAK或STALL。3)狀態階段的數據源是前一個事務的數據接收者當有一個數據階段時,數據的接收者發送這個狀態階段的數據;當沒有數據階段時,設備發送狀態階段的

45、數據。需要注意的是,上面提到的數據源是指的數據包的來源,標志包不管是IN還是OUT都是由主機發送的。即:主機發送PID為IN或OUT的標志包;在本例中,設備應發送一個零長度的數據包表示數據接收成功,或用NAK、STALL表示數據錯誤;當主機無誤的接收到數據將返回一個ACK包。至此,一次控制寫傳輸完成。對控制讀傳輸而言,其原理與寫傳輸是一樣的,只是在一些數據包的發送方向上有所不同,因此本文不再分析。3.3.4 批量傳輸批量傳輸對傳輸時間不嚴格的數據傳輸來說是很有用的。一個批量傳輸可以發送大量的數據而不會阻塞總線,因為這個傳輸會為其他類型的傳輸而延遲,并且會等到總線可用的時候再傳輸。批量傳輸可用于

46、從主機發送數據到一個打印機、從一個掃描儀發送數據到主機、或對一個磁盤的讀和寫。在一個空閑的總線上,批量傳輸是很快的。由于本文所討論的技術主要的應用方向是大容量存儲領域,所以批量傳輸是必不可少的,在此也作簡要介紹:從表3-1可以看出,批量傳輸由一個或多個IN或OUT事務組成,但在一個批量傳輸中的事務必須都是IN或OUT事務,因為它是單向的。若要在兩個方向傳輸數據,每個方向都需要一個獨立的流程和傳輸。1)批量傳輸的IN事務:主機向設備發送IN標志包,然后設備向主機發送數據包或NAK、STALL響應,主機收到數據后返回ACK交換包。2)批量傳輸的OUT事務:主機向設備發送OUT標志包,然后繼續向設備

47、發送數據包。設備根據數據接收情況放回ACK、NAK或STALL交換包。由于規范中并沒有對批量傳輸作出規定,在實際應用中,是需要依照特定的協議來確定傳輸格式的。53.4 差錯控制從前一節的介紹可以看出,USB傳輸有著很健全的差錯控制方法。首先,它的每一個信息包都包含一個CRC(循環冗余校驗)校驗字段,用來驗證那些跟在PID后面的信息。這些信息特征隨著信息包的類型和大小不同而不同。在多事務的傳輸中,還有數據循環位來確保通過保持傳輸和接收設備同步而沒有事務被丟失。其次,每一次傳輸事務(階段)完成后都有一個交換包的傳遞報告這個事務的完成情況。最后,整個一個控制傳輸的最后還有一個狀態階段,用于報告整個控

48、制傳輸的成功與失敗。可以看出,USB傳輸的每一個階段都有良好的校驗措施,這些措施都有利于保證數據的有效性。關于各個階段對ACK、NAK、STALL及數據錯誤等情況的具體解決方案在協議中有詳細的規定,不在本文討論范圍。3.5 本章小結以上,我們分析了USB傳輸的原理以及數據的組織結構,初步了解了USB在數據傳輸上的優勢。這對我們第五章的固件分析將是很有幫助的。第4章 USB控制器芯片PDIUSBD12介紹在處理與主機數據通信的任務中,PDIUSBD12是本電路的核心器件,其命令處理格式,也是固件程序代碼編寫的基礎,因此這一章中將介紹一下D12的用法。4.1 引言對于本課題而言,有很多芯片的功能可

49、以滿足我們的需要,但它們并不是都可以勝任這個工程,因為選擇什么樣的芯片直接影響著產品性能、開發成本及復雜程度。因此,了解各種不同控制器芯片的特點是非常重要的。USB協議的復雜性意味著USB外設必須具有智能。控制器芯片必須知道如何檢測并對USB端口的事件做出反應,它必須為設備提供存儲要發送的數據和獲得已經接收到的數據的一種方法。一些控制器芯片上有通用功能的CPU,而其他的控制器芯片則采取最簡單的方法和接口與一個外部CPU連接,這個按需要處理與USB控制器之間的非USB任務和通信。所有的USB控制器都有一個或多個USB端口和緩存、寄存器和其他I/O。帶有通用功能CPU的控制器芯片在芯片上也有程序和

50、數據存儲器或一個到外部存儲器的接口。從實際應用的角度考慮,本課題中選用了飛利浦半導體公司的USB控制器芯片PDIUSBD12。這個控制器芯片只處理USB通信,必須被一個外部微處理器控制。而由于本設計中還有其他器件需要控制,所以外部的微處理器本來就是必須的,并沒有增加成本。此芯片的定位是最小要求的USB控制器,因此非常適合本設計。4.2 PDIUSBD12特點PDIUSBD12是一款帶有并行總線和局部DMA傳輸能力的高速USB接口器件,具有很高的性價比。它通常用作微控制器系統中實現與微控制器進行通信的高速通用并行接口,同時還支持本地的DMA傳輸。這是一種用標準組件方式實現USB接口的方式,能夠使

51、得設計者可以在各種不同類型微控制器中選擇出最合適的微控制器。這種靈活性無疑減小了開發的時間以及費用風險,因為它使用的是已有的結構從而減少了固件上的投資。這是用最快捷的方法實現最經濟的USB外設的解決方案。PDIUSBD12完全符合USB1.1版的規范,它還符合大多數器件的分類規格:成像類、海量存儲器件、通信器件、打印設備以及人機接口設備。因此,PDIUSBD12理想地適用于許多外設,例如打印機、掃描儀、外部的存儲設備(Zip驅動器)和數碼相機等等。它使得當前使用SCSI的系統可以立即降低成本。PDIUSBD12所具有的低掛起功耗連同LazyClock輸出可以滿足使用ACPI、OnNOW和USB

52、電源管理的要求。這樣低的操作功耗使得它可以應用于使用總線供電的外設。此外,它還集成了許多特性,包括SoftConnetTM 、GoodLinkTM 、可編程時鐘輸出、低頻晶振和終止寄存器集合。所有這些特性都為系統顯著節約了成本,同時使USB功能在外設上的應用變得容易。4.3 PDIUSBD12數據傳輸原理PDIUSBD12的控制較為簡單,它不需要用戶記憶繁瑣的功能寄存器,而是直接提供了簡便的命令代碼。用戶支需要向特定的地址發送命令代碼,然后向另一個地址發送相關的數據即可。具體的操作方法將在下一章的固件程序中體現。PDIUSBD12有8位并行接口與89C52的P0口相連,用于實現與單片機之間快速

53、的并行通信。然后由PDIUSBD12將并行數據轉換為串行方式,通過USB數據線在設備和主機之間傳遞。另外,還有片選及讀寫控制的管腳用于功能選通。所以,用戶所要做的只是發送命令,然后向PDIUSBD12的FIFO中寫入或從中讀出數據,其他的工作由芯片功能完成。用于吞吐大量數據的終端主要是Endpoint2,也就是通常所說的主終端(MainEndpoint),它有一些特性使PDIUSBD12能夠更簡便的實現數據處理的功能:1、雙緩存:使得USB與本地CPU之間可以進行并行讀寫操作,這樣就增加了數據的吞吐量。緩沖區切換是自動處理的,這讓對緩沖區的操作更加方便易用。2、支持DMA(直接存儲器訪問)操作

54、:這一操作可以和對其它端點的正常I/O操作交叉進行,因此提高了數據傳輸效率。3、在DMA操作中的自動處理指針:在數據亮超過緩沖區邊界時不需要本地CPU的干預,因此保證了數據傳輸的連續性。4、可配置為同步傳輸或非同步(批量或中斷)傳輸。4.4 PDIUSBD12命令代碼功能與用法PDIUSBD12的控制命令有三種基本類型:初始化命令、數據流命令、通用命令。它們分別對應于于功能初始化;主機與功能器件之間的數據流;以及一些通用命令。4.4.1初始化命令初始化命令在USB網絡進行枚舉處理時使用。這些命令用于使能端點的功能,還可用來設置USB分配的地址。1. Set Address/Enable 此命令

55、用于指定主機與設備通信的地址。當上電后端口使用默認地址0(上電復位值為零)直到它從主機接收到一個Set Address請求。設備直到通過發送零長度數據包完成請求的狀態階段才執行這個請求。主機發送狀態階段標志包到默認地址,因此設備必須在改變地址之前發送這個包。2. Set endpoint enable 值字段共8位,17位寫零;第零位為類/同步終端使能,上電初始值為0,置1表示使能。只有當設備由Set Address/Enable命令使能后,類/同步終端才能使能。3. Set mode值字段共16位,各位上電初始值及功能及上電復位初始值如下:表4-1配置值第一字節00001110終端配置,是否同步讀寫保留SoftConnect中斷模式時鐘運行無LazyClock保留表4-2配置值第二字節00XX1011SOF-only中斷模式置1保留時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論