[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)

上傳人:仙*** 文檔編號(hào):28394504 上傳時(shí)間:2021-08-27 格式:DOC 頁數(shù):53 大?。?.55MB
收藏 版權(quán)申訴 舉報(bào) 下載
[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)_第1頁
第1頁 / 共53頁
[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)_第2頁
第2頁 / 共53頁
[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)_第3頁
第3頁 / 共53頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《[優(yōu)秀畢業(yè)論文]基于單片機(jī)+PDIUSBD12芯片的USB協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)(53頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、本科生畢業(yè)論文 目  錄 第1章 緒論 1 1.1 概述 1 1.1.1 課題研究目的 1 1.1.2 國內(nèi)外發(fā)展?fàn)顩r 1 1.2 USB接口及USB器件分析 2 1.3 系統(tǒng)方案設(shè)計(jì) 4 1.4 預(yù)期實(shí)現(xiàn)目標(biāo) 4 第2章 USB概述及協(xié)議 6 2.1 USB體系結(jié)構(gòu)概述 6 2.1.1 USB系統(tǒng)描述 6 2.1.2 USB連接頭及其供電方式 8 2.1.3 USB系統(tǒng)軟硬件組成 8 2.2 USB編碼方式與傳輸類型 9 2.2.1 USB的編碼方式 9 2.2.2 USB傳輸 9 2.3 USB設(shè)備請(qǐng)求 12 2.3.1 USB標(biāo)準(zhǔn)請(qǐng)求格式 12 2.

2、3.2 USB標(biāo)準(zhǔn)請(qǐng)求命令 12 2.4 USB設(shè)備的描述符 13 2.4.1 設(shè)備描述符 13 2.4.2 配置描述符 14 2.4.3 接口描述符 14 2.4.4 端點(diǎn)描述符 16 2.4.5 字符串描述 16 2.5 總線協(xié)議 19 2.6 USB的枚舉過程 19 2.7 USB主機(jī)接口及系統(tǒng)的功能 20 2.8 本章小結(jié) 21 第3章 硬件特性及電路設(shè)計(jì) 22 3.1 單片機(jī)8051介紹 22 3.2 PDIUSBD12器件與微控制器的連接 24 3.2.1 PDIUSBD12功能描述 24 3.2.2 PDIUSBD12管腳配置 24 3.2.3 單

3、片機(jī)與PDIUSBD12的連接 25 3.3 系統(tǒng)硬件設(shè)計(jì) 26 3.3.1 單片機(jī)電路設(shè)計(jì) 26 3.3.2 外圍電路設(shè)計(jì) 27 3.4 本章小結(jié) 29 第4章 程序設(shè)計(jì)及調(diào)試 30 4.1 概述 30 4.1.1 集成開發(fā)環(huán)境Keil簡介 30 4.1.2 程序概述 30 4.2 固件程序 34 4.2.1 固件程序組成 34 4.2.2 PDIUSBD12的底層操作 35 4.2.3 PDIUSBDI2命令接口程序 36 4.2.4 PDIUSBDI2的中斷服務(wù)程序 37 4.2.5 主程序 42 4.3 程序調(diào)試 45 4.3.1 Keil編譯器的使用

4、45 4.3.2 系統(tǒng)調(diào)試 48 4.4 本章小結(jié) 51 結(jié)論 52 參考文獻(xiàn) 53 致謝 54 附錄 55 附錄1 電路原理圖 55 附錄2 PCB圖 56 第1章 緒論 1.1 概述 1.1.1 課題研究目的 隨著電子科技的發(fā)展與應(yīng)用,各種計(jì)算機(jī)外圍接口不斷推陳出新,USB接口已經(jīng)成為現(xiàn)今個(gè)人計(jì)算機(jī)上最重要的接口之一,各種電子消費(fèi)產(chǎn)品也逐漸配置這種接口。USB接口是速度比較高的串行接口,具有較廣闊的發(fā)展前景和應(yīng)用潛力。USB適用于低檔外設(shè)與主機(jī)之間的高速數(shù)據(jù)傳輸。從USB問世至今,USB在不斷的自我完善,并走向成熟。從普通計(jì)算機(jī)用戶、計(jì)算機(jī)工程師、到硬件芯片生產(chǎn)

5、廠商,都已經(jīng)完全認(rèn)可了USB。 傳統(tǒng)的設(shè)備主要是基于RS-232的串行接口,隨著計(jì)算機(jī)速度的提升,已經(jīng)明顯不能適應(yīng)發(fā)展的需要。不僅是速度上比較慢,而且由于其不支持熱插拔。而USB接口由于支持熱插拔,占有較少的系統(tǒng)軟件硬件資源,廠商對(duì)于USB的硬件軟件的支持也越來越完備,現(xiàn)在開發(fā)一個(gè)USB外設(shè)產(chǎn)品所需要的成本和時(shí)間大大降低了。USB技術(shù)取得了迅速的發(fā)展。 單片機(jī)作為最典型的嵌入式系統(tǒng),推動(dòng)了嵌入式系統(tǒng)的發(fā)展,成為現(xiàn)代電子系統(tǒng)中重要的智能化器件。因此,USB I/O外圍設(shè)備的設(shè)計(jì)已成為電子領(lǐng)域的主要技術(shù)之一[1]。本課題就是利用單片機(jī)設(shè)計(jì)一個(gè)功能簡單的嵌入式USB外設(shè),將其與PC機(jī)連接,通過U

6、SB接口實(shí)現(xiàn)PC機(jī)與外設(shè)之間的相互通信。 1.1.2 國內(nèi)外發(fā)展?fàn)顩r 1994年,Intel,Compaq,Digital,IBM,Microsoft,NEC,Northern Telecom等7家世界著名的計(jì)算機(jī)和通信公司成立了USB論壇,花了近兩年的時(shí)間形成了統(tǒng)一的意見,于1995年11月正式制定了USB 0.9通用串行總線(Universal Serial Bus)規(guī)范。在1996年,一些規(guī)模型經(jīng)營的公司,他們的PC機(jī)、監(jiān)視器,開始配備了USB接口。原有的所有接口和插槽依然保留,只增加一個(gè)USB接插件,其目的是為了在擴(kuò)展新的用途時(shí)使用。直到1997年,真正符合USB技術(shù)標(biāo)準(zhǔn)的外設(shè)才開

7、始出現(xiàn)。直至Windows98推出之前,推出的USB功能模塊并不多,原因除了因?yàn)閭鹘y(tǒng)的通信接口,如RS232,IEEE488等,一時(shí)難以退出應(yīng)用領(lǐng)域外,一些早期的USB應(yīng)用探索者步履艱難,抱怨的主因是宿主平臺(tái)的實(shí)用性。Windows98對(duì)USB驅(qū)動(dòng)軟件(USBD)完善,使其可提供對(duì)USB的強(qiáng)有力的支持,對(duì)USB技術(shù)的發(fā)展起到重要推進(jìn)作用。自此,市場上涌現(xiàn)出大批的USB產(chǎn)品。USB1.0是目前推出的在支持USB的計(jì)算機(jī)與外設(shè)上普遍采用的標(biāo)準(zhǔn)。目前普遍采用的USB1協(xié)議主要應(yīng)用在中低速外圍設(shè)備上,它提供的傳輸速度有低速1.5Mbps和全速12Mbps兩種。可分別支持顯示器、Modem、鼠標(biāo)、鍵盤、

8、掃描儀、打印機(jī)、光驅(qū)及大范圍的多媒體設(shè)備。 從國外的發(fā)展來看,人們對(duì)USB有著極大的重視程度,這從USB規(guī)范的改進(jìn)速度之快及國際市場上基于USB的產(chǎn)品普及的范圍可見一斑。從1994年公布V1.0FDR版本,短短一年時(shí)間版本增訂了五次。說明技術(shù)人員正大力研究改善USB的性能。市場上基于USB的外設(shè)己囊括了所有的數(shù)字產(chǎn)品??梢妵庠谶@方面已作了很多工作,并且目前也正以很快的速度發(fā)展[2]。 國內(nèi)對(duì)于USB的研究在這幾年才剛剛起步。市場上也可以見到各種USB產(chǎn)品,也有少量的專門討論USB開發(fā)的國內(nèi)網(wǎng)站。比較專業(yè)的穩(wěn)定的網(wǎng)站有USB開發(fā)網(wǎng)(),但因?yàn)樵谇皫啄赀€很少有人做這方面的工作,所以在相關(guān)網(wǎng)

9、站上開發(fā)USB的文章量少,更新速度慢;國內(nèi)知名高校的BBS(比如水木華:),上面相關(guān)的文章詢問USB的人多,但回答問題的人僅限于幾個(gè)。對(duì)USB芯片進(jìn)行開發(fā)、技術(shù)服務(wù)和應(yīng)用方案設(shè)計(jì)的公司更是寥寥無幾。 雖然在網(wǎng)上做調(diào)研所得到的信息并不完全,但由此可以看出國內(nèi)對(duì)USB技術(shù)研究的需求及欠缺。 1.2 USB接口及USB器件分析 USB(Universal Serial Bus通用串行總線),是一種快速、靈活的總線接口。與其它通信接口比較,USB接口的最大特點(diǎn)是易于使用,這也是USB的主要設(shè)計(jì)目標(biāo)。作為一種高速總線接口,USB適用于多種設(shè)備,如數(shù)碼相機(jī)、MP3播放機(jī)、高速數(shù)據(jù)采集設(shè)備等。易于使用

10、還表現(xiàn)在USB接口支持熱插拔,并且所有的配置過程都由系統(tǒng)自動(dòng)完成,無需用戶干預(yù)。USB接口支持1.5Mb/s(低速)和12Mb/s(全速)的數(shù)據(jù)傳輸速率,扣除用于總線狀態(tài)、控制和錯(cuò)誤監(jiān)測等的數(shù)據(jù)傳輸,USB的最大理論傳輸速率仍達(dá)1.2Mb/s或9.6Mb/s,遠(yuǎn)高于一般的串行總線接口。USB接口芯片價(jià)格低廉,這也大大促進(jìn)USB設(shè)備的開發(fā)與應(yīng)用。 在進(jìn)行一個(gè)USB設(shè)備開發(fā)之前,首先要根據(jù)具體使用要求選擇合適的USB控制器。目前,市場上供應(yīng)的USB控制器主要有兩種:帶USB接口的單片機(jī)(MCU)或純粹的USB接口芯片。帶USB接口的單片機(jī)從應(yīng)用上又可以分成兩類,一類是從底層設(shè)計(jì)專用于USB控制的

11、單片機(jī),另一類是增加了USB接口的普通單片機(jī),如Cypress公司的EZ-USB(基于8051),選擇這類USB控制器的最大好處在于開發(fā)者對(duì)系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開發(fā)工具簡單,但對(duì)于簡單或低成本系統(tǒng)。其價(jià)格因素也是在實(shí)際選擇過程中需要考慮的因素。純粹的USB接口芯片僅處理USB通信,必須有一個(gè)外部微處理器來進(jìn)行協(xié)議處理和數(shù)據(jù)交換。這類典型產(chǎn)品有Philips公司的PDIUSBD12(并行接口),NS公司USBN9603/9604(并行接口),NetChip公司的NET2888等。USB接口芯片的主要特點(diǎn)是價(jià)格便宜、接口方便、可靠性高,尤其適合于產(chǎn)品的改型設(shè)計(jì)(硬件上僅需對(duì)并行總線和中斷進(jìn)行

12、改動(dòng),軟件則需要增加微處理器的USB中斷處理和數(shù)據(jù)交換程序,PC機(jī)的USB接口通信程序,無需對(duì)原有產(chǎn)品系統(tǒng)結(jié)構(gòu)作很大的改動(dòng))[2]。 PDIUSBD12是在USB協(xié)議設(shè)備端使用最多的芯片之一。此芯片是帶有并行總線的全速USB接口器件,可與任何微控制器實(shí)現(xiàn)高速并行接口(2Mb/s),并用于許多外設(shè)。這種實(shí)現(xiàn)USB接口的標(biāo)準(zhǔn)組件,可以使設(shè)計(jì)者在不同類型的微控制器中選擇最合適的微控制器,使用已有的結(jié)構(gòu)和減少固件上的投資,從而用最快捷的方法實(shí)現(xiàn)最經(jīng)濟(jì)的USB設(shè)備,它具有以下特性: 1、符合USB1.0版規(guī)范; 2、高性能USB接口器件,集成了SIE, FIFO存儲(chǔ)器,收發(fā)器以及電壓調(diào)整器; 3

13、、可以與任何外部微控制器/微處理起實(shí)現(xiàn)高速并行接(2MB/s); 4、集成320B多結(jié)構(gòu)的FIFO存儲(chǔ)器; 5、完全自治的直接內(nèi)存存取(DMA)操作; 6、可以通過軟件控制與USB的連接; 7、采用GoodLink技術(shù)的連接指示器,在通信時(shí)使LED閃爍; 8、可編程的時(shí)鐘頻率輸出; 9、多中斷模式實(shí)現(xiàn)批量和同步傳輸[3]。 1.3 系統(tǒng)方案設(shè)計(jì) 以單片機(jī)原理,硬件資源的功能應(yīng)用,PDIUSBD12芯片功能與接口設(shè)計(jì),USB1.0協(xié)議等理論知識(shí)為基礎(chǔ),設(shè)計(jì)出完整的系統(tǒng)原理圖。根據(jù)原理圖,將硬件系統(tǒng)資源焊接成PCB板。根據(jù)系統(tǒng)功能,設(shè)計(jì)編寫固件程序,下載后進(jìn)行調(diào)試,實(shí)驗(yàn)板在單片機(jī)控

14、制下能單獨(dú)工作后,然后和上位機(jī)進(jìn)行聯(lián)機(jī)調(diào)試,通過USB接口實(shí)現(xiàn)與上位機(jī)的相互通信。 本課題涉及的理論知識(shí)主要是USB1.0協(xié)議,重點(diǎn)在于硬件設(shè)計(jì),難點(diǎn)在于編程和整機(jī)的調(diào)試。經(jīng)過論證,在實(shí)現(xiàn)設(shè)計(jì)要求的前提下,為了降低系統(tǒng)的成本,選用接口級(jí)芯片PDIUSBD12,控制器選取8051,它有64k的存儲(chǔ)容量,對(duì)于固件程序已經(jīng)足夠使用了;而且這款單片機(jī)支持在線編程,通過串口下載程序,這給程序的下載和使用帶來來方便。程序設(shè)計(jì)采用C語言進(jìn)行編程,軟件仿真采用Keil C51。 1.4 預(yù)期實(shí)現(xiàn)目標(biāo) 通過硬件電路和驅(qū)動(dòng)程序(包括設(shè)備端和上位機(jī)端的驅(qū)動(dòng)程序)實(shí)現(xiàn)以下目的: 1、保證電路連接的正確性和可行

15、性。完成以單片機(jī)與USB接口芯片為主要芯片的電路板; 2、完成程序的編寫,主要是設(shè)備端的固件編程; 3、通過硬件調(diào)試,單片機(jī)能獨(dú)立控制電路板上元件工作; 4、實(shí)現(xiàn)電路板與上位PC機(jī)雙向傳輸。這需要與上位機(jī)進(jìn)行聯(lián)機(jī)調(diào)試,主要在軟件部分實(shí)現(xiàn)。 第2章 USB概述及協(xié)議 USB以USB主機(jī)為核心,以外圍的USB設(shè)備為功能,組成了USB系統(tǒng)模型。主機(jī)是USB的核心,每次USB數(shù)據(jù)通信都必須是由USB主機(jī)來發(fā)起的,主機(jī)管理著USB設(shè)備。USB物理上是一個(gè)含有兩條電源線(VCC,GND)和兩條以差分方式產(chǎn)生信號(hào)的線(D+,D-),傳輸率可達(dá)12Mbps的串行接口,一個(gè)PC主機(jī)可以連接多達(dá)127

16、個(gè)外圍設(shè)備。USB協(xié)議是以令牌包為主的通信協(xié)議,12Mbps的總線帶寬被分割成1ms的幀,所有任務(wù)以時(shí)分傳輸(TDM)來分享總線。 2.1 USB體系結(jié)構(gòu)概述 2.1.1 USB系統(tǒng)描述 一個(gè)USB系統(tǒng)主要被定義為三個(gè)部分: USB的互連; USB的設(shè)備; USB的主機(jī)。 USB的互連是指USB設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作,主要包括以下幾方面: 總線的拓?fù)浣Y(jié)構(gòu):USB設(shè)備與主機(jī)之間的各種連接方式; 內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB的任務(wù)被分配到系統(tǒng)的每一個(gè)層次; 數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過USB從產(chǎn)生方

17、到使用方的流動(dòng)方式; USB的調(diào)度:USB提供了一個(gè)共享的連接。對(duì)可以使用的連接進(jìn)行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級(jí)判別的開銷。 USB連接了USB設(shè)備和USB主機(jī),USB的物理連接是有層次性的星型結(jié)構(gòu)。每個(gè)網(wǎng)絡(luò)集線器是在星型的中心,每條線段是點(diǎn)點(diǎn)連接。從主機(jī)到集線器或其功能部件,或從集線器到集線器或其功能部件,從圖2.1中可看出何USB系圖2.1 總線的拓?fù)浣Y(jié)構(gòu) 拓?fù)浣Y(jié)構(gòu)。 其中,USB集線器Hub是一組設(shè)備的連接點(diǎn),主機(jī)中有一個(gè)被嵌入的Hub叫根Hub(root Hub)。主機(jī)端通常是指PC主機(jī)或是另外再附加USB端口的擴(kuò)充卡,主機(jī)通過根Hub提供若干個(gè)連接點(diǎn)。集線器除了

18、擴(kuò)增系統(tǒng)的連接點(diǎn)外,還負(fù)責(zé)中繼(repeat)上游或下游的信號(hào)以及控制各個(gè)下游端口的電源管理。 當(dāng)PC上電時(shí),所有USB設(shè)備與Hub都默認(rèn)地址為0,PC機(jī)啟動(dòng)程序向USB查詢,地址1分配給發(fā)現(xiàn)的第一個(gè)設(shè)備,地址2分配給第二個(gè)設(shè)備或Hub,如此重復(fù)尋找并分配地址,直到所有設(shè)備賦完地址,并加載相應(yīng)的的驅(qū)動(dòng)程序。 當(dāng)設(shè)備突然被拔移后,PC機(jī)通過D+或D-的電壓變化檢測到設(shè)備被移除掉后,將其地址收回,并列入可使用的地址名單中。 在任何USB系統(tǒng)中,只有一個(gè)主機(jī)。USB和主機(jī)系統(tǒng)的接口稱作主機(jī)控制器,主機(jī)控制器可由硬件、固件和軟件綜合實(shí)現(xiàn)。根集線器是由主機(jī)系統(tǒng)整合的,用以提供更多的連接點(diǎn)。 US

19、B的設(shè)備如下所示: 網(wǎng)絡(luò)集線器,向USB提供了更多的連接點(diǎn); 功能器件:為系統(tǒng)提供具體功能,如ISDN的連接,數(shù)字的游戲桿或揚(yáng)聲器。 USB設(shè)備提供的USB標(biāo)準(zhǔn)接口的主要依據(jù): 對(duì)USB協(xié)議的運(yùn)用; 對(duì)標(biāo)準(zhǔn)USB操作的反饋,如設(shè)置和復(fù)位; 標(biāo)準(zhǔn)性能的描述性信息。 2.1.2 USB連接頭及其供電方式 為了避免連接錯(cuò)誤,USB定義了兩種不同規(guī)格的星形USB連接頭:序列A與B連接頭,其中序列A接頭用來連接下游的設(shè)備。每個(gè)連接頭內(nèi)擁有4個(gè)針腳,其中兩個(gè)是用來傳遞差分?jǐn)?shù)據(jù)的,另兩個(gè)則用于USB設(shè)備的電源供給。 USB的供電方式有兩種: 1、總線供電集線器

20、電源由上游連接端口供應(yīng),最多只能從上游端消耗500mA。一個(gè)4個(gè)連接端口的集線器,每個(gè)下游端口最多消耗為100mA,外圍電路消耗100mA。 2、自我供電集線器 集線器本身有電源,可以提供給本身的控制器以及下游端口至少500mA的電流,集線器最多可從上游端消耗100mA。 2.1.3 USB系統(tǒng)軟硬件組成 USB系統(tǒng)的軟硬件資源可以分為3個(gè)層次:功能層、設(shè)備層和接口層。 功能層提供USB設(shè)備所需的特定的功能,主機(jī)端的這個(gè)功能由用戶軟件和設(shè)備類驅(qū)動(dòng)程序提供,而設(shè)備就由功能單元來實(shí)現(xiàn)。 設(shè)備層主要提供USB基本的協(xié)議棧,執(zhí)行通用的USB的各種操作和請(qǐng)求命令。從邏輯上講,就是USB系統(tǒng)軟

21、件與USB邏輯設(shè)備之間的數(shù)據(jù)交換。 接口層涉及的是具體的物理層,其主要實(shí)現(xiàn)物理信號(hào)和數(shù)據(jù)包的交互,即在主機(jī)端的USB主控制器和設(shè)備的USB總線接口之間傳輸實(shí)際的數(shù)據(jù)流。 無論在軟件還是硬件層次上,USB主機(jī)都處于USB系統(tǒng)的核心。主機(jī)系統(tǒng)不僅包含了用于和USB外設(shè)進(jìn)行通信的USB主機(jī)控制器及用于連接的 USB接口(SIE),更重要的是,主機(jī)系統(tǒng)是USB系統(tǒng)軟件和USB客戶軟件的載體。USB主機(jī)軟件系統(tǒng)可以分為三個(gè)部分: 1、客戶軟件部分(CSW),在邏輯上和外設(shè)功能部件部分進(jìn)行資料的交換; 2、USB系統(tǒng)軟件部分(即HCDI),在邏輯和實(shí)際中作為HCD和USBD之間的接口;

22、3、USB主機(jī)控制器軟件部分(即HCD和USBD),用于對(duì)外設(shè)和主機(jī)的所有USB有關(guān)部分的控制和管理,包括外設(shè)的SIE部分、USB資料發(fā)送接收器(Transreceiver)部分及外設(shè)的協(xié)議層等[2]。 2.2 USB編碼方式與傳輸類型 2.2.1 USB的編碼方式 USB采用不歸零翻轉(zhuǎn)(Non Return to Zero Invert,簡稱NRZI)編碼方式,對(duì)于不同步的脈沖信號(hào)也能產(chǎn)生同步的數(shù)據(jù)存取,能有效地解決USB纜線信號(hào)延遲產(chǎn)生的誤差。 NRZI的編碼規(guī)則是:當(dāng)數(shù)據(jù)位為“1”時(shí)電平保持不變,為“0”時(shí)電平翻轉(zhuǎn)。如果原始的串行數(shù)據(jù)中含有連續(xù)6個(gè)“1",就在其后填充一個(gè)“0"。

23、在NRZI解碼的過程中發(fā)現(xiàn)連續(xù)的6個(gè)“1”時(shí),則移走其后原填入的“0"。NRZI編碼、位填充過程分析如下: 原數(shù)據(jù) 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 位填充 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 1 NRZI碼 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 2.2.2 USB傳輸 USB總線是一種串行總線,即它的資料是一個(gè)bit一個(gè)bit來傳送的。雖然USB總線是把這些bit形式的資料打成資料包來傳送,但資料的同步也是必不可少的。USB1.0協(xié)議規(guī)定,USB的標(biāo)準(zhǔn)脈沖時(shí)鐘為12MH

24、z,而其總線時(shí)鐘為1ms,即每隔1ms,USB器件應(yīng)為USB線纜產(chǎn)生一個(gè)時(shí)鐘脈沖序列。這個(gè)脈沖序列稱為幀開始資料包(SOF),主機(jī)利用SOF來同步USB資料的發(fā)送和接收。 為實(shí)現(xiàn)多外設(shè)、多信道地同時(shí)工作,USB總線使用資料包的方式來傳輸資料和控制信息。USB數(shù)據(jù)傳輸中的每一個(gè)資料包都以一個(gè)同步字段開始,它的最后兩個(gè)bit作為PID字段開始的標(biāo)志。緊跟在同步字段之后的一段8bit的脈沖序列稱為PID(資料包標(biāo)識(shí)字段),PID字段的前四位用來標(biāo)記該資料包的類型,后四位則作為對(duì)前四位的校驗(yàn)。PID字段被分為標(biāo)記PID(共有IN、OUT、SETUP或SOF四種)、資料PID(DATA0或DATA1)

25、、握手PID(ACK、NAK或STALL)及特殊PID等。主機(jī)根據(jù)PID字段的類型來判斷一個(gè)資料包中所包含的數(shù)據(jù)類型,并執(zhí)行相應(yīng)的操作。 當(dāng)一個(gè)USB外設(shè)初次連接時(shí),USB系統(tǒng)會(huì)為這臺(tái)外設(shè)分配唯一的USB地址,這個(gè)地址通過地址寄存器(ADDR)來標(biāo)記,以保證資料包不會(huì)傳送到別的USB外設(shè)。7bit的ADDR使得USB系統(tǒng)最大尋址為127臺(tái)設(shè)備(ADDR字段)。由于一臺(tái)USB外設(shè)可能具有多個(gè)信道,因而在ADDR字段后會(huì)有一個(gè)附加的端點(diǎn)字段(EndpointField,簡標(biāo)為ENDP)來標(biāo)記不同的信道。所有的USB外設(shè)都必須支持Endpoint0信道,用0000來標(biāo)記。對(duì)于高速設(shè)備,可以最大支持

26、16個(gè)信道,而低速設(shè)備在Endpoint0之外僅能有一個(gè)信道。 數(shù)據(jù)域位作為一次USB數(shù)據(jù)傳輸?shù)闹行哪康?,在一個(gè)USB資料包中可以包含0~1203Byte的資料。而幀數(shù)量字段則包含在幀開始資料包中,對(duì)有的應(yīng)用場合,可以用幀數(shù)量字段作為資料的同步信號(hào)。為保證控制、塊傳送及中斷傳送中資料包的正確性,CRC校驗(yàn)字段被引用到如標(biāo)記、資料、幀開始(SOF)這樣的資料包中。CRC校驗(yàn)(資料冗余校驗(yàn))可以給予資料以100% 的正確性檢驗(yàn)。 在USB系統(tǒng)中,有四種形式的資料包:信令包(Token Packets)、DATA 資料包(DATA Packets)、幀開始包(SOF Packets)和握手包(H

27、andshake Packets)。每個(gè)資料包的結(jié)束都會(huì)有兩個(gè)bit寬的EOP字段作為資料包結(jié)束的標(biāo)志(圖7-18),EOP在差模信號(hào)中表現(xiàn)為D+和D-都處于“0”狀態(tài)。對(duì)于高速USB外設(shè)而言,這個(gè)脈沖寬度在160~175ns之間,而低速設(shè)備則在1.25~1.50μs之間。無論其后是否有其它的資料包,USB線纜都會(huì)在EOP字段后緊跟1bit的總線空閑位。USB主機(jī)或外設(shè)利用EOP來判斷一個(gè)資料包的結(jié)束。 為了滿足不同外設(shè)和用戶的要求,USB提供了四種傳輸方式:控制傳輸;同步傳輸;中斷傳輸;批傳輸。它們?cè)跀?shù)據(jù)格式、傳輸方向、數(shù)據(jù)包容量限制、總線訪問限制等方面有著各自不同的特征: 1、控制傳輸

28、(Control Transfer):可靠的,非周期的,由主機(jī)軟件發(fā)起的請(qǐng)求或者回應(yīng)的傳送,通常用于命令事務(wù)和狀態(tài)事務(wù)。 2、同步傳輸(Isochronous Transfer);在主機(jī)和設(shè)備之間的周期性的,連續(xù)的通信,一般用于傳送與時(shí)間相關(guān)的信息。這種類型保留了將時(shí)間概念包含于數(shù)據(jù)中的能力。但并不意味著用于同步傳送的數(shù)據(jù)的時(shí)間是很重要的,即傳送并不一定很急。 3、中斷傳輸(Interrupt Transfer):小規(guī)模數(shù)據(jù)的,低速的,固定延遲的傳送。 4、批量傳輸(Bulk Transfer):非周期的,大包的,可靠的傳送。典型用于傳送可以利用任何帶寬的數(shù)據(jù),這些數(shù)據(jù)沒有帶寬時(shí),是可以

29、容忍等待。 對(duì)于PDIUSBD12,端點(diǎn)的工作方式可通過Set Mode命令配置為4種不同的模式,分別為: 1、模式0(Non-ISO模式):非同步傳輸; 2、模式1(ISO-OUT模式):同步輸出傳輸; 3、模式2(ISO-IN模式):同步輸入傳輸; 4、模式3(ISO-IO模式): 同步輸入輸出傳輸。 端點(diǎn)2在有些方面是比較特別的,端點(diǎn)2是進(jìn)行吞吐大量數(shù)據(jù)的主要端點(diǎn),一般稱其為主端點(diǎn),主端點(diǎn)執(zhí)行主機(jī)的特性以減輕傳輸大量數(shù)據(jù)的任務(wù),具體包括: 1、雙緩沖; 2、支持DMA; 3、可以配置為同步傳輸或非同步(批量和中斷)傳輸。 2.3 USB設(shè)備請(qǐng)求 USB的標(biāo)準(zhǔn)設(shè)備請(qǐng)求

30、是用來完成USB設(shè)備枚舉的命令,USB設(shè)備必須對(duì)標(biāo)準(zhǔn)設(shè)備請(qǐng)求作出響應(yīng),不管該設(shè)備是否已經(jīng)被分配了一個(gè)默認(rèn)的地址或者該設(shè)備目前正在被配置。所有的標(biāo)準(zhǔn)設(shè)備請(qǐng)求都是使用默認(rèn)的管道來傳輸?shù)摹? 2.3.1 USB標(biāo)準(zhǔn)請(qǐng)求格式 USB的設(shè)備請(qǐng)求由八個(gè)字節(jié)組成,格式定義如表2.1所示。 2.3.2 USB標(biāo)準(zhǔn)請(qǐng)求命令 USB標(biāo)準(zhǔn)請(qǐng)求有11個(gè)命令,如下: 1、 獲取狀態(tài)請(qǐng)求:該命令用于返回特定接受者的狀態(tài)。 2、 清除特性請(qǐng)求:該命令用于清除或禁用接受者的某些特性。 3、 設(shè)置特性請(qǐng)求:該命令是主機(jī)用來啟用或激活命令接受者某些特性。 4、 設(shè)置地址請(qǐng)求:該命令用于主機(jī)給設(shè)備分配地址。 5、

31、獲取描述請(qǐng)求:該命令用于主機(jī)獲取設(shè)備的特定描述符。 6、 設(shè)置描述符請(qǐng)求:主機(jī)利用該命令來修改設(shè)備中的有關(guān)描述或增加新的描述符等。 7、 獲取配置請(qǐng)求:主機(jī)利用該命令獲得設(shè)備當(dāng)前的配置值。 8、 設(shè)置配置請(qǐng)求:主機(jī)通過該命令來指示設(shè)備采用要求的配置。 9、 獲取接口請(qǐng)求:主機(jī)利用該命令來獲取當(dāng)前的某個(gè)接口的接口描述符的編號(hào)。 10、 設(shè)置接口請(qǐng)求:主機(jī)可以通過該命令來要求設(shè)備用某個(gè)接口描述符來描述接口。 11、 同步幀請(qǐng)求:該命令用于設(shè)備設(shè)置和報(bào)告一個(gè)端點(diǎn)的同步幀。 表2.1 USB設(shè)備請(qǐng)求格式 偏移值 字段名稱 字段長度 字段取值 說明 0 設(shè)備請(qǐng)求類型

32、 1 位圖 請(qǐng)求特性: D7:數(shù)據(jù)傳輸方向 0=主機(jī)到設(shè)備 1=設(shè)備到主機(jī) D6..5:類型 0=標(biāo)準(zhǔn);1=類型 2=廠商;3=保留 D4..0:接受方 0=設(shè)備;1=接口 2=端點(diǎn);3=其他 4..31=保留 1 設(shè)備請(qǐng)求 1 數(shù)值 USB設(shè)備請(qǐng)求 2 值 2 值 根據(jù)不同的請(qǐng)求,以字節(jié)為單位來定義 4 索引 2 字段編號(hào)索引 根據(jù)不同的請(qǐng)求,以字節(jié)為單位來定義 6 長度 2 計(jì)數(shù) 如果傳輸一組數(shù)據(jù),指出要傳輸?shù)淖止?jié)數(shù) 2.4 USB設(shè)備的描述符 USB設(shè)備描述符是說明設(shè)備的通用信息,這包括對(duì)設(shè)備及所有設(shè)備設(shè)置全程起作用的信

33、息。 2.4.1 設(shè)備描述符 一個(gè)USB總線設(shè)備只能有一個(gè)設(shè)備描述表。設(shè)備描述表的結(jié)構(gòu)如表2.2所示: 表2.2 設(shè)備描述符 偏移值 字段名稱 字段大小 字段取值 說明 0 bLength 1 數(shù)字 描述符的大小=12H 1 bDescriptorType 1 常數(shù) 設(shè)備描述符類型=01H 2 bcdUSB 2 BCD USB規(guī)劃發(fā)布號(hào) 4 bDeviceClass 1 類型 類型代碼(由USB指定) 5 bDeviceSubClass 1 子類型 子類型代碼(由USB分配) 6 bDeviceProtocol 1 協(xié)議

34、 協(xié)議代碼(由USB分配) 7 bMaxPacketSize0 1 數(shù)字 端點(diǎn)0最大分組大小(只有8,16,32或64有效) 8 idVendor 2 ID 供應(yīng)商ID(由USB分配) 10 idProduct 2 ID 產(chǎn)品ID(由廠商分配) 12 bcdDevice 2 BCD 設(shè)備出廠編碼 14 iManufacture 1 索引 廠商描述符字符串索引 15 iProduct 1 索引 產(chǎn)品描述符字符串索引 16 iSerialNumber 1 索引 設(shè)備序列號(hào)字符串索引 17 bNumConfiguations

35、 1 數(shù)字 可能的配置數(shù) 2.4.2 配置描述符 配置描述符定義了設(shè)備的配置信息,結(jié)構(gòu)如表2.3所示。 2.4.3 接口描述符 接口描述符說明了接口所提供的配置,接口描述符的結(jié)構(gòu)如表2.4所示。 表2.3 配置描述符 偏移值 字段名稱 字段大小 字段取值 說明 0 bLength 1 數(shù)字 描述符的大小=09H 1 bDescriptorType 1 常數(shù) 配置描述符類型=02 H 2 wTotalLength 2 數(shù)字 此設(shè)置信息的總長(包括設(shè)置,接口,端點(diǎn)和設(shè)備類及廠商定義的描述表) 4 bNumInterfaces 1 數(shù)字

36、 此設(shè)置所支持的接口個(gè)數(shù) 5 bConfigurationValue 1 數(shù)字 作為Set Configuration的一個(gè)參數(shù)選擇配置值 6 iConfiguration 1 索引 用于描述該配置字符串描述符的索引 7 bmttributes 1 位圖 配置特性: D7:總線供電 D6:自供電 D5:遠(yuǎn)程喚醒 D4…0;保留(復(fù)位為0) 8 MaxPower 1 mA 在此設(shè)置下的總線電源耗費(fèi)量,以2mA為一個(gè)單位 表2.4 接口描述符 偏移值 字段名稱 字段大小 字段取值 說明 0 bLength 1 數(shù)

37、字 描述符的大小=09H 1 bDescriptorType 1 常數(shù) 接口描述符的類型=04H 2 bNumInterfaces 1 數(shù)字 接口的編號(hào) 3 bAlternate Setting 1 數(shù)字 用于為上一個(gè)字段選擇可供替換的設(shè)置 4 bNumEndpoint 1 數(shù)字 使用的端點(diǎn)數(shù)目(端點(diǎn)0除外) 5 bInterface Class 1 類型 類型代碼(由USB分配) 6 bInterfaceSubClass 1 子類型 子類型代碼(由USB分配) 7 bInterface Protocal 1 協(xié)議 協(xié)議代

38、碼(由USB分配) 8 iInterface 1 索引 字符串描述符的索引 2.4.4 端點(diǎn)描述符 端點(diǎn)描述符包括了端點(diǎn)的類型,大小等信息。USB設(shè)備中的每一個(gè)端點(diǎn)都有自己的描述符。端點(diǎn)描述符的結(jié)構(gòu)如表2.5所示。 2.4.5 字符串描述 字符串描述是可選的。如果一個(gè)設(shè)備不支持字符串描述符,在設(shè)備,配置和接口描述符內(nèi)的所用字符串描述符的索引都必須為0。字符串描述符的結(jié)構(gòu)如表2.6所示。 表2.5 端點(diǎn)描述符 偏移值 字段名稱 字段大小 字段取值 說明 0 bLength 1 數(shù)字 描述符的大小=07H 1 bDescriptorTyp

39、e 1 常數(shù) 接口描述符的類型=05H 2 bEndpointAddress 1 端點(diǎn) USB設(shè)備的端點(diǎn)地址: Bit 0..3: 端點(diǎn)號(hào) Bit 4..6: 保留,復(fù)位為0 Bit 7:方向,對(duì)于控制端點(diǎn)可以忽略 0:OUT端點(diǎn); 1:IN端點(diǎn) 3 bmAttributes 1 位圖 端點(diǎn)屬性,當(dāng)進(jìn)行配置時(shí)采用以下的配置值 Bit0..1 傳輸類型 00 控制 01 同步 02 批量 03 中斷 其他位保留 4 wMaxPacketSize 2 數(shù)字 本端點(diǎn)接受或發(fā)送的最大信息包的大小 6 bInterval 1 數(shù)字 輪

40、詢數(shù)據(jù)傳傳送端點(diǎn)的時(shí)間間隔。 表2.6 字符串描述符 偏移值 字段名稱 字段大小 字段取值 說明 0 bLength 1 數(shù)字 描述符的大小 1 bDescriptorType 1 常數(shù) 字符串描述符的類型 2 bString N 數(shù)字 UNICODE編碼字符串 各個(gè)描述符的樹狀結(jié)構(gòu)如圖2.2所示: 圖2.2 USB描述符層次結(jié)構(gòu) 所有的USB設(shè)備都有缺省控制管道,缺省控制管道的最大包長在描述表中得到了說明。設(shè)置描述表中包括設(shè)置與接口的定義,但其中不包括端點(diǎn)描述表。除了最大包長度信息外,缺省管

41、道的特性由USB規(guī)范定義,并且對(duì)所有的USB總線設(shè)備都一樣[4]。 2.5 總線協(xié)議 USB總線屬一種輪訊方式的總線,主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸。 每一總線執(zhí)行動(dòng)作最多傳送三個(gè)數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時(shí),主機(jī)控制器發(fā)送一個(gè)描述傳輸運(yùn)作的種類、方向,USB設(shè)備地址和終端號(hào)的USB數(shù)據(jù)包,這個(gè)數(shù)據(jù)包通常稱為標(biāo)志包(token packet)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當(dāng)位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機(jī)到設(shè)備就是從設(shè)備到主機(jī)。在傳輸開始時(shí),由標(biāo)志包來標(biāo)志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送

42、一個(gè)握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機(jī)和設(shè)備的端口之間,可視為一個(gè)通道。存在兩種類型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USB所定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端口特性(如方向和緩沖區(qū)大?。┯嘘P(guān)。多數(shù)通道在USB設(shè)備設(shè)置完成后即存在。USB中有一個(gè)特殊的通道——缺省控制通道,它屬于消息通道,當(dāng)設(shè)備一啟動(dòng)即存在,從而為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供一個(gè)入口。 事務(wù)預(yù)處理允許對(duì)一些數(shù)據(jù)流的通道進(jìn)行控制,從而在硬件級(jí)上防止了對(duì)緩沖區(qū)的高估或低估,通過發(fā)送不確認(rèn)握手信號(hào)從而阻塞了數(shù)據(jù)的傳輸速度。當(dāng)不確認(rèn)信號(hào)發(fā)過后,若總線

43、有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機(jī)制允許靈活的任務(wù)安排,可使不同性質(zhì)的流通道同時(shí)正常工作,這樣多種流通??稍诓煌g隔進(jìn)行工作,傳送不同大小的數(shù)據(jù)包[5]。 2.6 USB的枚舉過程 USB設(shè)備接入計(jì)算機(jī)后,設(shè)備需要經(jīng)過初始化和枚舉才能被計(jì)算機(jī)識(shí)別,初始化主要有MCU完成,而枚舉是在計(jì)算機(jī)的控制下完成的。 枚舉過程如下: 1、設(shè)備連接。USB設(shè)備接入U(xiǎn)SB總線。 2、設(shè)備上電。USB設(shè)備可以使用總線供電,也可以使用外部總線供電。 3、主機(jī)檢測到設(shè)備,發(fā)出復(fù)位。設(shè)備連接到總線后,主機(jī)拉電阻檢測到有新的設(shè)備接入,然后向端口發(fā)送一個(gè)復(fù)位信號(hào)。 4、設(shè)備默認(rèn)狀態(tài)。設(shè)備要從總線上接收到

44、一個(gè)復(fù)位的信號(hào)后,才可以對(duì)總線的處理操作作出響應(yīng)。設(shè)備接收到復(fù)位信號(hào)后,使用默認(rèn)的地址(00H)來對(duì)其進(jìn)行尋址。 5、地址分配。當(dāng)主機(jī)接收到有設(shè)備對(duì)默認(rèn)地址(00H)響應(yīng)的時(shí)候,就對(duì)設(shè)備分配一個(gè)空閑的地址。以后設(shè)備就只對(duì)該地址進(jìn)行響應(yīng)。 6、讀取USB設(shè)備描述符。主機(jī)讀取USB設(shè)備描述符,確認(rèn)USB設(shè)備的屬性。 7、設(shè)備配置。主機(jī)依照讀取的USB設(shè)備描述符來進(jìn)行配置,如果設(shè)備所需的USB資源得以滿足,就發(fā)送配置命令給USB設(shè)備,表示配置完成。 8、掛起。為了節(jié)省電源,當(dāng)總線保持空閑狀態(tài)超過3ms以后,設(shè)備驅(qū)動(dòng)程序就會(huì)進(jìn)入掛起狀態(tài)。 完成以上步驟后,USB設(shè)備即可以使用。在枚舉過程中,

45、設(shè)備不一定要求進(jìn)入掛起狀態(tài)。 2.7 USB主機(jī)接口及系統(tǒng)的功能 從具體的USB主機(jī)的實(shí)現(xiàn)角度上來講,在遵行USB協(xié)議1.0的基礎(chǔ)上,目前有2套工業(yè)標(biāo)準(zhǔn): 1、通用式主機(jī)控制器接口(簡寫成UHCI),由Inter公司提出。 2、開放式主機(jī)控制器接口(簡寫成OHCI或Open HCI),由Compaq等公司提出。 UHCI和OHCI實(shí)現(xiàn)USB主機(jī)的功能基本上是一樣的。只是具體的實(shí)現(xiàn)過程有些不同,兩者均由2部分組成,即主機(jī)控制器(Host Control,簡寫成HC)和主機(jī)控制器驅(qū)動(dòng)(Host Control Driver,簡寫成HCD)。主機(jī)控制器更多的是面向硬件部分及其廠商,怪頂了主

46、機(jī)控制器硬件與PC系統(tǒng)內(nèi)存之間的接口、主機(jī)控制器在PCI總線上的接口定義、主機(jī)USB事務(wù)的各種功能模塊以及提供給用戶交互的各種寄存器定義等;主機(jī)控制器驅(qū)動(dòng)更多的是基于軟件層次的標(biāo)準(zhǔn),是USB協(xié)議棧與USB主機(jī)控制器硬件之間聯(lián)系的接口,直接負(fù)責(zé)主機(jī)控制器硬件的配置和管理,一般這部分軟件廠商提供。 按照USB的規(guī)定以及USB系統(tǒng)的組成的需要,USB主機(jī)完成的主要功能包括以下幾個(gè)方面: 1、檢測USB設(shè)備的連接和斷開。通過USB電纜信號(hào)線的電平變換來實(shí)現(xiàn)該功能,并得到主機(jī)控制器的處理。 2、管理主機(jī)和設(shè)備之間標(biāo)準(zhǔn)的控制管道。以保證端點(diǎn)0和缺損管道的正常通信。 3、收集設(shè)備的狀態(tài),統(tǒng)計(jì)總線的活

47、動(dòng)。USB的總線上最多可以同時(shí)掛接127個(gè)設(shè)備,這么多的設(shè)備都要正常的工作,就是靠主機(jī)來進(jìn)行管理的,同時(shí)主機(jī)會(huì)根據(jù)收集到的各種設(shè)備和總線信息來執(zhí)行某些操作。 4、控制和管理主機(jī)控制器與設(shè)備之間的電器接口,包括為端口提供一點(diǎn)數(shù)量的電流[1]。 2.8 本章小結(jié) 在本章中,簡要的介紹了相關(guān)的USB1.0協(xié)議內(nèi)容,根據(jù)本次課題設(shè)計(jì)的要求,重點(diǎn)介紹了USB體系,軟硬件組成、編碼方式與傳輸類型、總線協(xié)議以及主機(jī)系統(tǒng)功能等內(nèi)容。它們是開發(fā)USB設(shè)備,進(jìn)行通信的應(yīng)用的基礎(chǔ)。實(shí)際應(yīng)用中,這里的大部分工作由控制器完成。 第3章 硬件特性及電路設(shè)計(jì) 3.1 單片機(jī)8051介紹 本課題設(shè)計(jì)USB系統(tǒng)比

48、較簡單,單片機(jī)執(zhí)行的功能不多,在確保實(shí)驗(yàn)功能的情況下,為了降低成本,因此選用性價(jià)比高的8051單片機(jī)。 MCS-51是Intel公司生產(chǎn)的一個(gè)單片機(jī)系列名稱。屬于這一系列的單片機(jī)有多種。8051便是其中一種性價(jià)比高的單片機(jī)。 8051單片機(jī)內(nèi)部結(jié)構(gòu)按其功能部件劃分可以看出由8大部分組成的。這8大部分是: 1、一個(gè)8位中央處理機(jī)CPU。 2、128個(gè)字節(jié)的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM。 3、4KB的片內(nèi)程序只讀存儲(chǔ)器ROM或EPROM。 4、18個(gè)特殊功能寄存器SFR。 5、4個(gè)8位并行輸入輸出I/O接口: P0口、 P1口、 P2口、 P3口(共32線), 用于并行

49、輸入或輸出數(shù)據(jù)。 6、1個(gè)串行I/O接口。 7、2個(gè)16位定時(shí)器/計(jì)數(shù)器。 8、1個(gè)具有5個(gè)中斷源, 可編程為2個(gè)優(yōu)先級(jí)的中斷系統(tǒng)。 它可以接收外部中斷申請(qǐng), 定時(shí)器/計(jì)數(shù)器中斷申請(qǐng)和串行口中斷申請(qǐng)。 本課題選用的8051單片機(jī)芯片為40個(gè)引腳,它是HMOS工藝制造的芯片,采用雙列直插(DIP)方式封裝。 1、主電源引腳Vcc和Vss VCC(40腳):接+5V電源正端; VSS(20腳):接+5V電源地端。 2、外接晶體引腳XTAL1和XTAL2 XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部, 它是一個(gè)反相放大器的輸入端,這個(gè)

50、放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地; XTAL2(18腳):接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。 3、控制信號(hào)或與其它電源復(fù)用引腳 4、I/O口線引腳排列 (1)P0口——8位、漏極開路的雙向I/O口。 當(dāng)使用片外儲(chǔ)存器及外擴(kuò)I/O口時(shí),P0口做為低字節(jié)地址/數(shù)據(jù)復(fù) 線。在編程時(shí),P0口可用于接收指令代碼字節(jié);在程序校檢時(shí),P0口可輸出指令字節(jié)(這是需要外加上拉電阻)。 (2)P0口也可作為通用I/O使用,變成準(zhǔn)雙向口。當(dāng)作為普通輸入時(shí),應(yīng)

51、將輸出鎖存器置1。P0口可驅(qū)動(dòng)8個(gè)TTL負(fù)載。 P1口——8位、準(zhǔn)雙口I/O,具有內(nèi)部上拉電阻。 P1口是為用戶準(zhǔn)備的I/O雙向口。在編程和校檢時(shí),可用做輸入低8位地址;用做輸入時(shí),應(yīng)先將輸出鎖存器置1;P1口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。 P1口的P1.0和P1.1具有替代功能。 (3)P2口——8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。 當(dāng)使用片外儲(chǔ)存器或外擴(kuò)I/O端口時(shí),P2口輸出高8位地址;在編程 校檢時(shí),P2口可接收高字節(jié)地址和某些控制信號(hào);P2口也可作為I/O口使用。用做輸入時(shí),應(yīng)先將輸出鎖存器置1;P2口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。 (4)P3口——8位、準(zhǔn)雙向I/

52、O口,具有內(nèi)部上拉電阻。 P3口可作為普通I/O口。用作輸入時(shí),應(yīng)先將輸出鎖存器置1;在編程校檢時(shí),P3口接收某些控制信號(hào);可驅(qū)動(dòng)4個(gè)TTL。P3口還提供各種替代功能。 整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,8051設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯

53、片功能,直到下一個(gè)硬件復(fù)位為止[6]。 3.2 PDIUSBD12器件與微控制器的連接 3.2.1 PDIUSBD12功能描述 PHILIPS公司推出的PDIUSBD12是一款性價(jià)比很高的USB器件。它通常用做微控制器系統(tǒng)中實(shí)現(xiàn)與微控制器進(jìn)行通信的高速通用并行接口,而且還 支持本地的DMA傳輸。PDIUSBD12完全符合USB1.0協(xié)議規(guī)范。PDIUSBD12所具有的低掛起功耗連同LazyClock輸出可以滿足使用ACPI、OnNOW和USB電源管理的要求。低的操作功耗可以應(yīng)用于使用總線供電的外設(shè)。 1、PHILIPS串行接口引擎 PSIE實(shí)現(xiàn)了全部的USB協(xié)議層,且完全由硬件實(shí)現(xiàn)

54、而不需要固件的參與。該模塊的功能包括:同步模式的識(shí)別,并行/串行的轉(zhuǎn)換,位填充/解除填充,CRC校驗(yàn)/產(chǎn)生,PID校驗(yàn)/產(chǎn)生,地址識(shí)別和握手評(píng)估/產(chǎn)生。 2、SoftConnect技術(shù) SoftConnect與USB的連接是通過1.5kΩ上拉電阻將D+設(shè)置為高電平實(shí)現(xiàn)的。1.5kΩ上拉電阻集成在PDIUSBD12片內(nèi),默認(rèn)狀態(tài)下不與電源相連,其連接的建立是通過外部/系統(tǒng)微控制器發(fā)送命令實(shí)現(xiàn)的。 3、GoodLink技術(shù) GoodLink技術(shù)可以提供良好的USB連接指示。在枚舉過程中,LED指示燈根據(jù)通信狀況間歇閃爍。配置完成并裝安驅(qū)動(dòng)程序后指示燈將一直亮[7]。 3.2.2 PDIU

55、SBD12管腳配置 PDIUSBD12的管腳排列如圖3.1所示: 圖3.1 PDIUSBD12管腳排列圖 3.2.3 單片機(jī)與PDIUSBD12的連接 單片機(jī)與PDIUSBD12的連接如圖3.2所示: 對(duì)上圖中的電路說明如下: 1、電路中使用A0作為命令數(shù)據(jù)選擇位 2、端點(diǎn)2使用批量傳輸(Bulk),所以DMACK_N和EOT_N接上拉電阻,否則,PDIUSBD12將不能接受任何數(shù)據(jù); 3、單片機(jī)外接晶振,所以PDIUSBD12的CLKOUT腳空; 4、從圖上可以看出,當(dāng)選擇命令時(shí),PDIUSBD12的地址為0xf1ff;當(dāng)選擇數(shù)據(jù)時(shí)PDIUSBD12的地址為0xf0

56、ff; 5、單片機(jī)使用P0口進(jìn)行輸入輸出,由于P0是開漏的,所以,需要接上拉電阻,在電路中使用排阻; 6、GL_N通過一個(gè)電阻和LED串接到VCC,在USB設(shè)備枚舉期間,燈一直閃爍,當(dāng)USB設(shè)備枚舉成功后,燈會(huì)滅,安裝完驅(qū)動(dòng)程序后,燈一直亮著,傳送數(shù)據(jù)期間,燈會(huì)閃爍; 圖3.2 PDIUSBD12與單片機(jī)連接圖 7、USB_D+,USB_D-線上的1M上拉電阻下拉電阻對(duì)實(shí)際沒有什么影響,它們主要在噪聲比較大的情況下,起到抗干擾的作用; 8、采用總線供電,總開關(guān)S1負(fù)責(zé)電源的連接與斷開,LED指示整個(gè)電路是否有電。在這種方式下,確保電路的正確連接很重要,否則,容易損壞計(jì)算機(jī)[4]。

57、 在使用的同時(shí),應(yīng)注意一個(gè)問題。由于PHILIPS公司生產(chǎn)的PDIUSBD12芯片自身存在一個(gè)小小的問題,即當(dāng)片選沒有選中時(shí)它的第14角仍然會(huì)輸出低電平的中斷信號(hào),由于它接單片機(jī)的P3.3,所以與矩陣鍵盤共用的P3.3口有沖突,使用PDIUSBD12芯片時(shí)請(qǐng)將該芯片左邊的INT1兩線柱短接。在不使用該芯片時(shí)不用接。 3.3 系統(tǒng)硬件設(shè)計(jì) 3.3.1 單片機(jī)電路設(shè)計(jì) 單片機(jī)最小系統(tǒng)主要包括其供電系統(tǒng),時(shí)鐘電路和復(fù)位電路。本次單片機(jī)的系統(tǒng)供電電路和時(shí)鐘電路都做了簡化處理,單片機(jī)的系統(tǒng)復(fù)位電路采用手動(dòng)復(fù)位。單片機(jī)電路如圖3.4所示。 對(duì)電路說明如下: 1、單片機(jī)采用外接晶振的方法,是外接

58、晶振,頻率為11.0592MHz; 2、復(fù)位電路采用按鍵復(fù)位; 3、PDIUSBD12使用單片機(jī)的外部中斷0。在程序里將單片機(jī)和PDIUSBD12設(shè)置為相同的中斷方式,即電平中斷。然后由PDIUSBD12自動(dòng)清除中斷腳上的低電平,以便接受下次中斷[8]。 3.3.2 外圍電路設(shè)計(jì) 本次課題的外圍硬硬件系統(tǒng)資源包括:串口通信、6位動(dòng)態(tài)數(shù)碼顯示、8位流水燈、蜂鳴器、4*4矩陣鍵盤、溫度傳感器、液晶顯示器接口、PDIUSBD12芯片接口等。 每個(gè)元件與單片機(jī)都有單獨(dú)的電路連接,他們均以單片機(jī)為控制核心。使單片機(jī)能獨(dú)立的控制每個(gè)元件的正常工作。再通過PDIUSBD12芯片,USB接口,上位機(jī)

59、能與單片機(jī)實(shí)現(xiàn)通信,上位機(jī)發(fā)送信息到單片機(jī),單片機(jī)根據(jù)上位機(jī)信息控制外圍電路的工作;外圍設(shè)備發(fā)送信息到單片機(jī),單片機(jī)反饋到上位機(jī),在上位機(jī)的控制界面上顯示狀態(tài)信息。 其整體框圖如圖3.5所示。 根據(jù)整體框圖,將每個(gè)分塊電路設(shè)計(jì)成整體電路原理圖,生成PCB圖(見附錄)。 整個(gè)電路圖的設(shè)計(jì)是在Protel 99的軟件環(huán)境下完成的。 圖3.4 單片機(jī)電路 上位機(jī) USB接口 PDIUSBD12 8051單片機(jī) 4*4矩陣鍵盤 串口通信 蜂鳴器 8位流水燈 液晶顯示器 6位動(dòng)態(tài)數(shù)碼顯示

60、 溫度傳感器 圖3.5 整體框圖 3.4 本章小結(jié) 本章介紹了單片機(jī),PDIUSBD12芯片的基礎(chǔ)知識(shí),根據(jù)課題需求,重點(diǎn)討論了PDIUSBD12芯片在批量傳輸時(shí)與單片機(jī)的接法。外圍硬件資源根據(jù)框圖設(shè)計(jì)出實(shí)驗(yàn)電路圖,這些電路是做出單片機(jī)實(shí)驗(yàn)板,上位機(jī)軟件能夠正確運(yùn)行的基礎(chǔ)。 第4章 程序設(shè)計(jì)及調(diào)試 4.1 概述 4.1.1 集成開發(fā)環(huán)境Keil簡介 單片機(jī)開發(fā)中出必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要邊成CPU可以執(zhí)行的機(jī)器碼有兩種方法,一中是手工匯編,另一種是機(jī)器匯編,目前已經(jīng)極少使用匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變成機(jī)器碼,用于M

61、CS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普通使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來個(gè)仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。 Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。 Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。Keil提供了包括C編譯器

62、、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,同過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)[9]。 4.1.2 程序概述 軟件程序是固件編程。 固件是FIREWARE的對(duì)應(yīng)中文詞,它實(shí)際上是單片機(jī)的程序文件,其編寫語言可以采用C語言或是匯編語言.它的操作方式與硬件聯(lián)系緊密,包括USB設(shè)備的連接USB協(xié)議、中斷處理等,它不是單純的軟件,而是軟件和硬件的結(jié)合,開發(fā)者需要對(duì)端

63、口、中斷和硬件結(jié)構(gòu)非常熟悉。固件程序一般放入MCU中,當(dāng)把設(shè)備連接到主機(jī)上(USB連接線插入插孔)時(shí),上位機(jī)可以發(fā)現(xiàn)新設(shè)備,然后建立連接。因此,編寫固件程序的一個(gè)最主要的目的就時(shí)讓W(xué)indows可以檢測和識(shí)別設(shè)備。 在設(shè)計(jì)USB系統(tǒng)的過程中,固件程序的編寫是非常重要的一個(gè)環(huán)節(jié),它直接影響到開發(fā)產(chǎn)品的數(shù)據(jù)傳輸速度。固件設(shè)計(jì)的目標(biāo)就是使PDIUSBD12在USB上達(dá)到最大的傳輸速率。PDIUSBD12設(shè)計(jì)成完全的中斷驅(qū)動(dòng)。當(dāng)CPU處理前臺(tái)任務(wù)時(shí),USB的傳輸可以在后臺(tái)進(jìn)行,這樣就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時(shí)簡化了編程和調(diào)試。 后臺(tái)ISR(中斷服務(wù)程序)和前臺(tái)主程序的循環(huán)之間的數(shù)據(jù)

64、交換可以通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn),其原理如圖所示: 圖4.1 前后臺(tái)工作原理 對(duì)于這種結(jié)構(gòu),主循環(huán)不關(guān)心數(shù)據(jù)是來自USB,串口還是并口,其只檢查循環(huán)緩沖區(qū)內(nèi)需要處理的數(shù)據(jù)。這樣,主循環(huán)可以專注于數(shù)據(jù)的處理,而ISR能夠以最大的可能的速率進(jìn)行數(shù)據(jù)的傳輸[10]。 固件程序采用51單片機(jī)的C語言進(jìn)行編寫,采用Keil開發(fā)環(huán)境。它的積木結(jié)構(gòu)如圖所示,圖中的箭頭表示數(shù)據(jù)的傳輸方向。 圖4.2 固件結(jié)構(gòu)和數(shù)據(jù)流方向 硬件提取層:對(duì)單片機(jī)的I/O口,數(shù)據(jù)總線等硬件接口進(jìn)行操作。 命令接口層:對(duì)PDIUSBD12器件進(jìn)行操作的模塊子程序集。 中斷服務(wù)程序:當(dāng)PDIUSBD12

65、向單片機(jī)發(fā)出中斷請(qǐng)求時(shí),讀取PDIUSBD12的中斷傳輸來的數(shù)據(jù),并設(shè)定時(shí)間標(biāo)志“EPPFLAGS”和Setup包數(shù)據(jù)緩沖區(qū)“CONROL_XFER”進(jìn)行通信。 標(biāo)準(zhǔn)請(qǐng)求處理程序:對(duì)USB的標(biāo)準(zhǔn)請(qǐng)求進(jìn)行處理。 廠商請(qǐng)求處理:對(duì)用戶添加的廠商請(qǐng)求進(jìn)行處理,這一部分可選。 主循環(huán)程序:發(fā)送USB請(qǐng)求,處理USB總線事件和用戶功能處理等。 固件程序的主要部分是前臺(tái)的主循環(huán)(main.c)和后臺(tái)的中斷服務(wù)程序ISR,固件程序定義了兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):事件標(biāo)志(EPPFLAGS)和數(shù)據(jù)緩沖區(qū)(CONTROL_XFER),它們是主循環(huán)和中斷服務(wù)例程之間的橋梁,兩者之間的數(shù)據(jù)交換通過它們來實(shí)現(xiàn)。其任

66、務(wù)分配為:ISR負(fù)責(zé)全部與PDIUSBD12的接口操作并更新這兩個(gè)數(shù)據(jù)結(jié)構(gòu),如從PDIUSBD12收發(fā)數(shù)據(jù),設(shè)置事件標(biāo)志等;主循環(huán)負(fù)責(zé)初始化,處理位于數(shù)據(jù)緩沖區(qū)的數(shù)據(jù),清除時(shí)間標(biāo)志以及其他總線事務(wù),如掛起、復(fù)位等。 1、USB事件標(biāo)志結(jié)構(gòu)體 USB事件標(biāo)志結(jié)構(gòu)體,用符號(hào)定義了USB傳送過程中事件標(biāo)志位,并賦予初值,事件標(biāo)志在運(yùn)行中隨狀態(tài)的改變而改變,下面是事件標(biāo)志: typedef union _epp_flags { struct _flags { unsigned char bus_reset :1; //總線復(fù)位標(biāo)志 unsigned char suspend :1; //掛起改變標(biāo)志 unsigned char setup_packet :1; //收到SETUP包 unsigned char remote_wakeup :1; //遠(yuǎn)程喚醒標(biāo)志(未使用) unsigned

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!