[互聯(lián)網(wǎng)]基于單片機(jī)和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計_第1頁
[互聯(lián)網(wǎng)]基于單片機(jī)和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計_第2頁
[互聯(lián)網(wǎng)]基于單片機(jī)和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計_第3頁
[互聯(lián)網(wǎng)]基于單片機(jī)和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計_第4頁
[互聯(lián)網(wǎng)]基于單片機(jī)和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 i 頁 i 基于單片機(jī)和 usb 接口技術(shù)的高速數(shù)據(jù)采集 系統(tǒng)的設(shè)計 摘要摘要 數(shù)據(jù)采集系統(tǒng)是結(jié)合基于計算機(jī)的測量軟硬件產(chǎn)品實現(xiàn)靈活的、用戶自定義的 測量系統(tǒng)。數(shù)據(jù)采集包括從信號源采集信號,將其進(jìn)行數(shù)字化,存儲分析并傳遞到 個人 pc 上。通用串行總線(usb)作為一種新的微機(jī)總線接口規(guī)范具有便捷、易擴(kuò) 展、低成本、低干擾等特點,非常適合作為主機(jī)和外設(shè)之間的通信接口。usb 為數(shù) 據(jù)采集設(shè)備/儀器與 pc 機(jī)之間的連接提供了一個費用低廉且簡單易用的方案。usb 通訊技術(shù)的出現(xiàn),使高傳輸速度、強(qiáng)糾錯能力、易擴(kuò)展性、方便的即插即用,有機(jī) 的結(jié)合在一起。usb 技術(shù)

2、雖然出現(xiàn)的時間并不長,但是由于它的種種優(yōu)點,被越來 越多的廠商和用戶所接受.本次畢業(yè)設(shè)計(論文)設(shè)計了一種基于單片機(jī)和 usb 的高速 數(shù)據(jù)采集系統(tǒng)的硬件及固件 pdiusbd12 程序設(shè)計方案。 關(guān)鍵詞關(guān)鍵詞 數(shù)據(jù)采集系統(tǒng);usb 接口;單片機(jī) 4.7.8.9.10.11.14.26.27.31 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 ii 頁 ii abstract data acquisition uses a combination of pc-based measurement hardware and software to provide a flexible, user-define

3、d measurement system. data acquisition involves gathering signals from measurement sources and digitizing the signal for storage, analysis, and presentation on a personal computer (pc).as a new interface specificationthe universal serial bus (usb) has the advantages of convenient、expansibility、low c

4、ost and antidisturbance so it is fit for the communication interface between the host and available peripherals usb delivers an inexpensive, easy-to-use connection between data acquisition devices/instruments and pcs. usb communication technology can enable high- speed, strong error-correcting capab

5、ilities, easy extensibility, plug-and-play convenience, combined with organic. usb technology is not even in the face of a long time, but because of its many advantages, more and more accepted by manufacturers and users. this thesis introduce to the hardware and software design for the high speed da

6、ta acquisition system based on single chip micro computer and usb. key words data acquisition;universal serial bus interface;single chip micro computer 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 iii 頁 iii 目錄目錄 摘要 .i abstract.ii 第 1 章 緒論.1 1.1 研究的背景及目的.1 1.2 國內(nèi)外研究現(xiàn)狀及已有成果.1 1.3 課題的研究方法和內(nèi)容.2 第 2 章 總體方案設(shè)計.3 2.1 芯片比較.3 2.1.1 單片機(jī)選

7、型.3 2.1.2 usb 接口芯片的選擇.3 2.2 系統(tǒng)的原理及其組成.5 第 3 章 系統(tǒng)的程序設(shè)計.7 3.1 系統(tǒng)的硬件設(shè)計.7 3.1.1 pdiusbd12 的性能特點和內(nèi)部結(jié)構(gòu).7 3.1.2 pdiusbd12 的端點描述.9 3.1.3 pdiusbd12 的指令集.10 3.1.4 pdiusbd12 的管腳配置.11 3.1.5 a/d 與單片機(jī)接口電路.13 3.1.6 pdiusbd12 與單片機(jī)接口電路.14 3.2 系統(tǒng)的軟件設(shè)計.14 3.2.1 pdiusbd12 的固件編程思想.14 3.2.2 pdiusbd12 固件編程的結(jié)構(gòu).15 3.2.3 pdi

8、usbd12 固件編程的實現(xiàn).17 3.2.4 端點處理程序.18 3.2.5 主循環(huán) mainloop.c.21 3.2.6 驅(qū)動程序開發(fā)工具的介紹.22 3.2.7 usb 設(shè)備驅(qū)動程序設(shè)計.23 3.2.8 usb 設(shè)備驅(qū)動程序的調(diào)用.24 第 4 章 方案設(shè)計的分析及本研究的創(chuàng)新策略.26 4.1 方案的可行性、實驗過程、數(shù)據(jù)的處理及分析.26 4.1.1 系統(tǒng)硬件設(shè)計分析.26 4.1.2 系統(tǒng)軟件設(shè)計分析.26 4.2 本次設(shè)計的創(chuàng)新與改進(jìn).27 結(jié)論.29 致謝.30 參考文獻(xiàn).31 附錄 a.32 附錄 b.43 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 1 頁 1 第1章 緒論 1.

9、 1 研究的背景及目的 信息技術(shù)與電子技術(shù)的迅猛發(fā)展,使得計算機(jī)和外圍設(shè)備也得到飛速發(fā)展和應(yīng) 用。過去人們單純追求計算機(jī)與外設(shè)之間的傳輸速度,現(xiàn)在糾錯能力和操作安裝的 簡易性也成為人們關(guān)注的目標(biāo)。usb 通訊技術(shù)的出現(xiàn),使高傳輸速度、強(qiáng)糾錯能力、 易擴(kuò)展性、方便的即插即用,有機(jī)的結(jié)合在一起。usb 設(shè)備需要依據(jù) usb 協(xié)議進(jìn) 行數(shù)據(jù)的解包與打包,底層硬件設(shè)備與操作系統(tǒng)之間需要以驅(qū)動程序為橋梁。驅(qū)動 程序以 wdm 為模型,以 ddk 為開發(fā)工具,以 irp 為消息傳播載體,來實現(xiàn)與 windows 系統(tǒng)底層核心機(jī)制向交互的功能。 隨著控制系統(tǒng)的日益復(fù)雜,所要采集的量也會越來越多。因此尋求一種

10、高速、 安全、方便的通訊形式是十分必要的。usb 技術(shù)雖然出現(xiàn)的時間并不長,但是由于 它的種種優(yōu)點,被越來越多的廠商和用戶所接受,出現(xiàn)了 usb 打印機(jī)、攝像頭等產(chǎn) 品。隨著 pc 機(jī)日益廣泛的應(yīng)用,其外設(shè)也逐日增多,但 pc 機(jī)接口的數(shù)量是一定的,這 就限制了 pc 機(jī)掛接外設(shè)的數(shù)量。在很多應(yīng)用場合,如工業(yè)數(shù)據(jù)采集,常使用采集板卡 來完成工作,采用板卡不僅安裝麻煩、易受機(jī)箱內(nèi)環(huán)境的干擾,而且受計算機(jī)插槽數(shù) 量和地址、中斷資源的限制,不可能掛接很多設(shè)備,而通用串行總線可以很容易的實 現(xiàn)高可靠性、多點的數(shù)據(jù)采集。 1. 2 國內(nèi)外研究現(xiàn)狀及已有成果 在國際和國內(nèi),現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究對數(shù)據(jù)采集

11、的要求日益提高,在瞬態(tài) 信號測量、圖像處理等一些高速、高精度的測量中,需要進(jìn)行高速數(shù)據(jù)采集?,F(xiàn)在 研究通用的高速數(shù)據(jù)采集卡一般多是 pci 卡, ad 卡及 422、485 卡或 isa 卡,存 在以下缺點:安裝麻煩、價格昂貴、受計算機(jī)插槽數(shù)量、地址、中斷資源限制、可 擴(kuò)展性差,同時在一些電磁干擾性強(qiáng)的測試現(xiàn)場,可能無法專門對其做電磁屏蔽, 從而導(dǎo)致采集的數(shù)據(jù)失真。傳統(tǒng)的外設(shè)與主機(jī)的通訊接口一般是基于總線、 isa 總線或者是 rs232c 串行總線。pci 總線雖然具有較高的傳輸速度 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 2 頁 2 (132mbps) ,并支持“即插即用”功能,但其缺點是插拔麻

12、煩,且擴(kuò)展槽有限(一般 為 56 個) ,isa 總線顯然存在同樣的問題。rs232c 串行總線雖然連結(jié)簡單,但 其傳輸速度慢(56kbps) ,且主機(jī)的串口數(shù)目也有限。 隨著時代的發(fā)展,1995 年康 柏、微軟、ibm、dec 等公司為解決傳統(tǒng)總線不足而推廣的一種新型的通信標(biāo)準(zhǔn), 就是通用串行總線 usb。該總線接口具有安裝方便、高帶寬、易于擴(kuò)展、使用靈活 等優(yōu)點,已逐漸成為現(xiàn)代數(shù)據(jù)傳輸研究的發(fā)展趨勢。基于單片機(jī)和 usb 的高速數(shù)據(jù) 采集充分利用 usb 總線的上述優(yōu)點,有效解決了傳統(tǒng)高速數(shù)據(jù)采集的缺陷。 在國內(nèi)外研究中,高速數(shù)據(jù)采集領(lǐng)域在很多方面均有應(yīng)用,例如采用 avr 單 片機(jī) at

13、megal28 作為主控制器,通過基于 ch375 的 usb 接口實現(xiàn)數(shù)據(jù)傳輸。給出 了高速模數(shù)轉(zhuǎn)換及 usb 接口的電路原理,實現(xiàn) usb 數(shù)據(jù)傳輸?shù)纳?、下位機(jī)的程序 設(shè)計。經(jīng)實驗測試,該系統(tǒng)采集速度快,死時間小,計數(shù)率高。該系統(tǒng)采集速率最 高可以達(dá)到 5 ms/s,有軟件觸發(fā)、后觸發(fā)、前觸發(fā)三種采集模式,已成功應(yīng)用到高 速數(shù)據(jù)采集領(lǐng)域,它適用于作用大范圍場地的輻射監(jiān)測系統(tǒng)。 1.3 課題的研究方法和內(nèi)容 本次設(shè)計主要基于單片機(jī)和 usb 接口的數(shù)據(jù)采集??刂葡到y(tǒng)的硬件模塊主要是 由 a/d 轉(zhuǎn)換器、d/a 轉(zhuǎn)換器、微處理器、usb 接口控制芯片、串行口控制芯片、放 大器等組成。本數(shù)據(jù)采集

14、和控制系統(tǒng)是以飛利浦 公司的 pdiusbd12 作為系統(tǒng)的 微控制器,管理和控制整個系統(tǒng)。該芯片集成度高,與 51 單片機(jī)兼容,有效的解決 了傳統(tǒng)高速數(shù)據(jù)采集的缺陷。本文內(nèi)容安排如下: 第一章對基于單片機(jī)和 usb 的高速數(shù)據(jù)采集進(jìn)行了綜合,首先介紹了粒子單片 機(jī)和 usb 的高速數(shù)據(jù)采集研究背景及目的,接著對單片機(jī)和 usb 的高速數(shù)據(jù)采集 的國內(nèi)外研究現(xiàn)狀和相關(guān)領(lǐng)域中已有的研究成果進(jìn)行了說明。 第二章對本次畢業(yè)設(shè)計的總體方案與選擇的論證進(jìn)行了說明。首先介紹了單片 機(jī)芯片和 usb 接口固件的選擇,接著論證了總體設(shè)計方案。 第三章對系統(tǒng)的硬件與軟件部分進(jìn)行了設(shè)計計算。包括對 pdiusbd

15、12 的多方 面介紹、與單片機(jī)的連接,系統(tǒng)程序設(shè)計等等。 第四章對研究設(shè)計進(jìn)行分析,對內(nèi)容中的創(chuàng)新,改進(jìn)及實際意義進(jìn)行說明。 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 3 頁 3 第 2 章 總體方案設(shè)計 2. 1 芯片比較 本文應(yīng)用了單片機(jī)芯片和 usb 接口固件,下面對其進(jìn)行介紹。 2.1.1 單片機(jī)選型 當(dāng)今單片機(jī)廠商琳瑯滿目,產(chǎn)品性能各異。常用的單片機(jī)有很多種:intel8051 系列、motorola 和 m68hc 系列、atmel 的 at89 系列、臺灣 winbond(華邦)w78 系 列、荷蘭 pilips 的 pcf80c51 系列、microchip 公司的 pic 系列、zi

16、log 的 z86 系列、 atmel 的 at90s 系列、韓國三星公司的 ks57c 系列 4 位單片機(jī)、臺灣義隆的 em- 78 系列等。我們最終選用了 atmel 公司的 at89c52 單片機(jī)。at89c52 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos8 位單片機(jī),片內(nèi)含 8kbytes 的可反復(fù)擦 寫的只讀程序存儲器(perom)和 256bytes 的隨機(jī)存取數(shù)據(jù)存儲器(ram) ,器件 采用 atmel 公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn) mcs-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容,片內(nèi)置通用 8 位中央處理器(cpu)和 flash 存儲單元,功 能

17、強(qiáng)大 at89c52 單片機(jī)適用于許多較為復(fù)雜控制應(yīng)用場合。本次設(shè)計選用 at89c52。 2.1.2 usb 接口芯片的選擇 基于 usb 的外置式硬件電路的設(shè)計核心是 usb 控制器的選擇,在進(jìn)行一個具 體的 usb 設(shè)備開發(fā)之前,首先要根據(jù)具體要求選擇合適的 usb 控制器,整個 usb 外圍設(shè)備的設(shè)計將圍繞該控制器展開。在選定 usb 控制器以后,如果是帶 usb 接 口的單片機(jī),則是一般單片機(jī)應(yīng)用系統(tǒng)的開發(fā);若是 usb 外設(shè)接口芯片,就是 usb 外設(shè)接口芯片與單片機(jī)應(yīng)用系統(tǒng)的接口問題。一般 usb 接口芯片都支持多種并行總 線結(jié)構(gòu)(復(fù)用/非復(fù)用),可以方便地與多種單片機(jī)連接。 目

18、前,市場上可供選擇的 usb 接口芯片很多,按照功能基本上分為兩類:一類 是純粹的 usb 接口芯片或通用 usb 外設(shè)接口芯片(也稱 usb 設(shè)備器件);另一類是帶 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 4 頁 4 有 usb 接口芯片的單片機(jī)(也稱 usb 主控制器)。 (1)帶 usb 接口的單片機(jī)(usb 主控制器) 這類芯片主要有 cypress 公司的 cy7c63xxx/cy7c64xxx 系列和 ez-usb, intel 公司的 8x930/8x931, philips 公司的 isp 1161 (usb 1.1) / isp i 561 (usb2.0 ), scanlogic

19、 的 sl11r 以及 motorola 的 mc68hc908jb8 系列等。這種方案的最大好處 在于開發(fā)難度較小,因為大多數(shù)這樣的單片機(jī)芯片都是基于 8051 結(jié)構(gòu)或者其它常見 的結(jié)構(gòu),有自己的精簡指令集,與單片機(jī)類似,熟悉單片機(jī)開發(fā)的開發(fā)者對系統(tǒng)結(jié) 構(gòu)和指令集非常熟悉,但其開發(fā)一般需要專用的仿真器,對于簡單或低成本系統(tǒng), 價格高將會是最大的障礙。 (2)純粹的 usb 外設(shè)接口芯片(usb 設(shè)備器件) 這類芯片主要有 ns 公司的 usbn9602/9603/9604, scan logic 的 suit 以及 philips 公司的 pdiusbd11/pdiusbd12 (usb1.

20、1) /isp1581 (usb2.0)等。純粹的 usb 外設(shè)接口芯片僅處理 usb 總線相關(guān)事務(wù),必須有一個外部微處理器來進(jìn)行協(xié)議處理 和數(shù)據(jù)交換。這種方案的主要特點是價格便宜、接口形式多樣、可靠性高、靈活性 大,尤其適合于產(chǎn)品的改型設(shè)計,缺點是開發(fā)者需要非常熟悉 usb 協(xié)議,還必須用 微處理器來控制 usb 外設(shè)接口芯片的工作。 綜合比較,pdiusbd 12 是一款性價比很高的 usb 器件,可使設(shè)計者選擇最合 適的微控制器,減少開發(fā)時間、風(fēng)險及費用,是最實用最快捷的方法實現(xiàn)最經(jīng)濟(jì)的 usb 外設(shè)的方案。該芯片支持一個控制端點以及 4 個額外的端點地址。一個端點的 緩沖區(qū)可以儲存到

21、128 個字節(jié),而雙緩沖區(qū)可以到 256 個字節(jié)。pdiusbd 12 通常 用作微控制器系統(tǒng)中實現(xiàn)與微控制器進(jìn)行通信的高速通用并千示接口,并支持本地 dma 傳輸。pdiusbd 12 完全符合 usb1.1 規(guī)范,并符合大多數(shù)器件的分類規(guī)格:成 像類、海量存儲器件、通信器件、打印設(shè)備以及人機(jī)接口設(shè)備。同樣地,pdiusbd 12 還適用于打印機(jī)、掃描儀、外部存儲設(shè)備和數(shù)碼相機(jī)等等。另外,該芯片還集成 了許多特性,包括 softconnect, goodlink、可編程時鐘輸出、低頻晶振和終止寄存 器集合,簡化 usb 功能在外設(shè)上的應(yīng)用。 由于 51 系列的單片機(jī)是應(yīng)用非常廣泛的一種微處理

22、器,在其基礎(chǔ)上開發(fā)了大量 的軟件包,對其內(nèi)部結(jié)構(gòu)和工作原理我們都非常了解,故本系統(tǒng)中我們采用 8902 進(jìn) 行核心程序的設(shè)計來實現(xiàn)其所需的功能。a/d 選用我們熟悉而且能滿足要求的 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 5 頁 5 ad0809。而 pdiusbdi2 能夠完成將數(shù)據(jù)信號到符合 usb 規(guī)范的信號的轉(zhuǎn)換。為此, 我們利用 89c52 中豐富的軟件資源和 usb 總線技術(shù)即插即用、熱插拔特性來完成 高速數(shù)據(jù)采集系統(tǒng)。這樣可以降低開發(fā)成本,縮短開發(fā)周期、降低風(fēng)險。 2.2 系統(tǒng)的原理及其組成 基于 usb 的數(shù)據(jù)采集和控制系統(tǒng)的硬件模塊主要是由 a/d 轉(zhuǎn)換器、d/a 轉(zhuǎn)換 器、微處理

23、器、usb 接口控制芯片、串行口控制芯片、放大器等組成。本數(shù)據(jù)采集 和控制系統(tǒng)是以飛利浦 公司的 pdiusbd12 作為系統(tǒng)的微控制器,管理和控制整 個系統(tǒng)。該芯片集成度高,與 51 單片機(jī)兼容。 整個數(shù)據(jù)采集和控制系統(tǒng)的總體結(jié) 構(gòu)框圖如圖 2.1 所示: 圖 2.1 設(shè)計數(shù)據(jù)采集和控制系統(tǒng)原理圖 從結(jié)構(gòu)圖中可知,模擬輸入信號通過信號處理(放大和濾波)后,輸出到 a/d 轉(zhuǎn) 換器,微控制器把經(jīng)過 a/d 轉(zhuǎn)換器轉(zhuǎn)換后的數(shù)字信號通過 usb 控制芯片輸出給計 算機(jī),同時可以在計算機(jī)上實現(xiàn)數(shù)據(jù)的顯示和鍵盤控制;另一方面,經(jīng)過 a/d 轉(zhuǎn)換器 采集到的數(shù)字信號可以通過算法實現(xiàn)控制后,經(jīng)過 d/a

24、轉(zhuǎn)換器輸出,進(jìn)而可以對其 它設(shè)備進(jìn)行控制;同時,該系統(tǒng)還可以作為一種 usb 和串行口的轉(zhuǎn)接卡,通過串行 口與 usb 接口實現(xiàn)數(shù)據(jù)之間的交互,充分利用了 usb 的快速性和 rs-232 遠(yuǎn)距離的 優(yōu)勢,實現(xiàn)了資源優(yōu)勢互補,可以通過該板卡實現(xiàn)數(shù)據(jù)的遠(yuǎn)程控制和數(shù)據(jù)傳輸,既 提高了傳輸速率,又增加了傳輸距離。 而 usb 主機(jī)及顯示部分則通過輸出接口在 pc 機(jī)上顯示,采用軟件來模擬顯示 輸入信號的波形。同時可以控制 a/d 轉(zhuǎn)換器的啟停、數(shù)據(jù)存取器的存取、usb 外設(shè) 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 6 頁 6 芯片的工作、顯示圖形的放大和縮小等。 usb 數(shù)據(jù)傳輸?shù)挠布Y(jié)構(gòu)由以下三部分組成

25、:通用 usb 控制芯片,微處理器, usb 接口。它們構(gòu)成了一個 usb 數(shù)據(jù)傳輸?shù)淖钚∠到y(tǒng)。其功能為:usb 收發(fā)器負(fù)責(zé) 處理所有與 usb 總線事務(wù)有關(guān)的任務(wù),如總線喚醒、數(shù)據(jù)接受/發(fā)送、打包、crc 校驗等,但該收發(fā)器不負(fù)責(zé)解釋這些數(shù)據(jù)的意義;微處理器負(fù)責(zé)處理數(shù)據(jù)、響應(yīng)主機(jī) 請求、以及控制 usb 收發(fā)器的工作;內(nèi)存負(fù)責(zé)存儲和提供數(shù)據(jù)。 其中,狀態(tài)監(jiān)視器是一個高速的單穩(wěn)態(tài)多頻振蕩器,用來實現(xiàn)掉電和恢復(fù)操作 的,當(dāng)系統(tǒng)連續(xù) 3ms 檢測不到主機(jī)的請求時,系統(tǒng)就會進(jìn)入掛起狀態(tài);當(dāng)系統(tǒng)從掛 起狀態(tài)退出以后,狀態(tài)監(jiān)控器就產(chǎn)生一個正脈沖以復(fù)位/喚醒整個系統(tǒng)。 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 7

26、 頁 7 第 3 章 系統(tǒng)的程序設(shè)計 3.1 系統(tǒng)的硬件設(shè)計 基于 usb 的數(shù)據(jù)采集和控制系統(tǒng)主要利用了 a/d 轉(zhuǎn)換技術(shù)、d/a 轉(zhuǎn)換技術(shù)和 usb 技術(shù),是伴隨著 usb 技術(shù)的迅速發(fā)展與新的數(shù)據(jù)采集技術(shù)的發(fā)展而發(fā)展起來 的。采集到的數(shù)據(jù)通過主機(jī)接口(usb 口)發(fā)送到上位機(jī)并實時顯示出來,其波形保 真性能與 a/d 轉(zhuǎn)換器的轉(zhuǎn)換速率、分辨率與精度密切相關(guān)。a/d 轉(zhuǎn)換速率越高,復(fù) 現(xiàn)的波形的分辨率也就越高;a/d 轉(zhuǎn)換器位數(shù)越多,精度越高,波形保真性越高。 3.1.1 pdiusbd12 的性能特點和內(nèi)部結(jié)構(gòu) pdiusbd12 集成了許多新的特性,包括可編程時鐘輸出、softconn

27、et, goodlink、低頻晶振。 (1)可編程時鐘輸出:不必考慮電路設(shè)計時使用高頻晶振產(chǎn)生的 emi 問題 d12 的 clkout 引腳輸出時鐘信號,可用作 mcu 時鐘,最低 4mhz,最高達(dá) 48mhz. d12 內(nèi)部有倍頻電路,外部只需 6m 晶振即可提供 d12 自身工作時鐘(48mhz)及 輸出時鐘。 (2)軟連接(softconnet)技術(shù):芯片內(nèi)集成有 1.5 k 的 usb 上拉電阻,連接此電阻 將 d+置為高設(shè)置為高速 usb 設(shè)備。連接的建立通過外部 mcu 發(fā)送命令來實現(xiàn), 這就允許設(shè)備在決定與 usb 總線建立連接之前完成初始化時序。usb 總線連接 的連接可以重

28、新初始化而不需要拔插 usb 電纜。 (3)goodlink 技術(shù):可提供良好的 usb 連接指示。在枚舉中,led 指示根據(jù)通信 情況間歇閃爍。當(dāng)成功枚舉和配置后,led 指示將一直點亮。usb 支持兩種信號 速率。usb 的最高速率是 12mb/s,但它可以工作在 1. 5mb/s 的較低速率,同一個 usb 系統(tǒng)可同時支持這兩種模式,但 1. 15mb/s 低速率方式主要為了降低對速度 要求不高的設(shè)備的成本,只支持少數(shù)像鼠標(biāo)這樣的低帶寬要求的設(shè)備。 (4)可編程的時鐘頻率輸出:集成 320 字節(jié)多結(jié)構(gòu) fifo 存儲器,具體組成如字 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 8 頁 8 節(jié)數(shù)端點

29、 0 端點 1 端點 320=16(in)+16(out)+16(in)+16(out)+64(in)+64(out) * 2(雙緩沖)主端點的雙緩沖配置增加了數(shù)據(jù)吞吐量,并輕松實現(xiàn)實時數(shù)據(jù)傳輸; (5)多中斷模式實現(xiàn)批量和同步傳輸。端點可通過 set mode 命令配置為 4 種不 同的模式,分別為: 模式 0 non-iso 模式(非同步傳輸) 模式 1 iso-out 模式(同步輸出傳輸) 模式 2 iso-in 模式(同步輸入傳輸) 模式 3 iso-io 模式(同步輸入輸出傳輸) usb 電纜可以允許使用不同長度的電纜,最長可達(dá)幾米。為了提供可靠的輸入 電壓和適當(dāng)?shù)慕K端阻抗,在電纜的

30、每一端帶偏壓的終端。該終端可以發(fā)現(xiàn)任一端口 上 usb 設(shè)備的“插入”和“拔除”操作,并能區(qū)分全速和低速設(shè)備。圖 2 指示了高 速 usb 設(shè)備在集線器的終端位置及其所連的功能設(shè)備,從中可以看出在電纜的下行 端的電阻 rpu 是接在 d+線上的,在低速設(shè)備中,rpu 電阻是接在 d-線上的。pd 工 usbd12 的軟連接(softconnet)技術(shù)使得在電路設(shè)計中可以省去此電阻,并可以通 過軟件設(shè)置。 圖 3.1 pdiusbd12 的原理圖 (1)模擬收發(fā)器:集成的收發(fā)器接口可通過終端電阻直接與 usb 電纜相連。 (2)電壓調(diào)整器:片內(nèi)集成了一個 3. 3v 的調(diào)整器用于模擬收發(fā)器的供電

31、,該電壓 還作為輸出連接到外部上拉電阻??蛇x擇 d12 提供的帶有上拉電阻的軟件連接 技術(shù)。 (3)倍頻電路(pll)片內(nèi)集成了 6m 到 48m 時鐘乘法 pll,就可使用低成本的 6m 晶振。 (4) 位時鐘恢復(fù):位時鐘恢復(fù)電路使用 4x 過采樣規(guī)則,從進(jìn)入的 usb 數(shù)據(jù)流中 恢復(fù)時鐘。它能跟蹤 usb 規(guī)定范圍內(nèi)的抖動和頻漂。 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 9 頁 9 (5)串行接口引擎(sie):串行接口引擎實現(xiàn)了全部的 usb 協(xié)議層,完全由硬件實 現(xiàn)而不需要固件的參與。該模塊的功能包括同步模式的識別、并行/串行轉(zhuǎn)換、位填 充/解除填充、crc 校驗/產(chǎn)生、pid 校驗/產(chǎn)生、

32、地址識別和握手評估等。 (6)存儲器管理單元(me)和集成 ram:在進(jìn)行數(shù)據(jù)傳輸并與微處理器的并口相連 時,mmu 和集成 ram 作為 usb 間傳輸?shù)木彌_區(qū),允許 mcu 以它自己速率對 usb 信息包讀寫。 pdiusbd12 內(nèi)部結(jié)構(gòu)框圖如圖 3.2 所示: 圖 3.2 pdiusbd12 的內(nèi)部框圖 3.1.2 pdiusbd12 的端點描述 端點(endpoint)是一個 usb 設(shè)備唯一可以確認(rèn)的部分,它是主機(jī)與設(shè)備之間的 通信流終點。一系列相互獨立的端點在一起構(gòu)成了 usb 邏輯設(shè)備。 (1)端點 0 要求:所有 usb 設(shè)備都需要實現(xiàn)一個缺省的控制方法。這種方法將端 點 0

33、 作為輸入端點,同時也將端點 0 作為輸出端點。usb 系統(tǒng)用這個缺省方法初始 化及一般地使用邏輯設(shè)備(即設(shè)置此設(shè)備)。缺省控制通道支持了對控制的傳送,一 旦設(shè)備接上,并加電,且又收到一個總線復(fù)位命令,端點 0 就是可訪問的了。 (2)非 0 端點要求:設(shè)備可以有除 0 以外的其它端點,這取決于這些設(shè)備的實現(xiàn)。 低速設(shè)備在 0 號輸入及輸出端點外,只能有 2 個額外的可選端點。而高速設(shè)備可具 有的額外端點數(shù)僅受限于協(xié)議的定義,協(xié)議中規(guī)定,最多 15 個額外的輸入端點和最 6mhz d+ 3.3v 1.5k 電壓調(diào)整器電壓調(diào)整器 analog tx/ax softconnect d- 上行端口上

34、行端口 pll 位時鐘恢復(fù)位時鐘恢復(fù) philips sie 內(nèi)內(nèi)存存管管 理理單單元元 集成集成 ram 并行并行 和和 dam 接口接口 d+ 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 10 頁 10 多 15 個額外的輸出端點。非 0 端點在被配置前處于未知狀態(tài),在設(shè)備配置以后才能 使用。 d12 的端點適用于不同類型的設(shè)備,并可通過“set mode”命令配置為 4 種不 同的模式:模式 0(非同步模式),模式 1(同步輸出模式),模式 2(同步輸入模式),模式 3(同步輸入輸出模式)。本設(shè)計中只用到了模式 0 配置,同步模式配置未使用。端點 可用來存放從主機(jī)接受到或者設(shè)備發(fā)送來的數(shù)據(jù),每個端

35、點都有屬于自己的緩沖區(qū)。 模式 0 配置下的端點緩沖區(qū)如表 3.1 所示。 端點 2(主端點)是進(jìn)行吞吐大數(shù)據(jù)量的主要端點,具有 64 字節(jié)雙緩沖區(qū)結(jié)構(gòu), 可以減輕傳輸大量數(shù)據(jù)的任務(wù): (1)雙緩沖。允許 usb 與本地 cpu 之間的并行讀寫操作這樣就增加了數(shù)據(jù)的吞 吐量緩沖區(qū)切換是自動處理的這導(dǎo)致了透明的緩沖區(qū)操作。 (2)支持 dma 直接存儲器訪問操作??梢院蛯ζ渌它c的正常 i/0 操作交叉進(jìn) 行。 (3) dma 操作中的自動指針處理。在跨過緩沖區(qū)邊界時不需要本地 cpu 的干預(yù)。 (4)可配置為同步傳輸或非同步批量和中斷傳輸。 表表 3.1 端點緩沖區(qū)配置端點緩沖區(qū)配置( (模式

36、模式 0) ) 端點號 端點索 引傳輸類型 端點類型 方向 緩沖區(qū)長度(字節(jié)) 0 0 控制輸出 默認(rèn) 輸出 16 0 1 控制輸出 默認(rèn) 輸入 16 1 2 普通輸出 普通 輸出 16 1 3 普通輸出 普通 輸入 16 2 4 普通輸出 普通 輸出 64 2 5 普通輸出 普通 輸入 64 3.1.3 pdiusbd12 的指令集 pdiusbd12 有自己的專用指令集,用于設(shè)置 usb 芯片、讀取 usb 芯片的狀態(tài) 和控制 usb 總線傳輸。d12 芯片內(nèi)有一系列的寄存器對應(yīng)著這些指令,微處理器把 要設(shè)置的值按字節(jié)寫入 d12 的這些寄存器,或者從 d12 的這些寄存器中讀出 usb

37、總線的狀態(tài)。d12 有三種基本的類型的命令:初始化、數(shù)據(jù)流和通用命令。 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 11 頁 11 (1)初始化命令 初始化命令在 usb 總線進(jìn)行枚舉處理時使用,這些命令用于使能端點的功能, 還可用來設(shè)置 usb 分配的地址,包括:設(shè)置地址/使能、設(shè)置端點使能、設(shè)置模式(設(shè) 置分頻系數(shù)、軟連接、端點模式以及中斷模式等)、dma 設(shè)置等命令。 表表 3.2 初始化命令指令集初始化命令指令集 命令名 接收者 編碼 數(shù)據(jù) 設(shè)置地址使能器件 d0h 寫 1 字節(jié) 設(shè)置端點使能器件 d8h 寫 1 字節(jié) 設(shè)置模式器件 f3h 寫 2 字節(jié) 設(shè)置 dma器件 fbh 寫/讀 1 字

38、節(jié) (2)數(shù)據(jù)流命令 數(shù)據(jù)流命令用于管理 usb 端點和外部微控制器之間的數(shù)據(jù)傳輸,d12 通過微控 制器中斷初始化大量的數(shù)據(jù)流。微控制器利用這些命令訪問和決定端點的 fifo 是 否含有有效的數(shù)據(jù)。包括:讀中斷寄存器、選擇端點、讀最后處理狀態(tài)寄存器、讀緩 沖區(qū)、寫緩沖區(qū)、使緩沖區(qū)有效、清除緩沖區(qū)、設(shè)置端點狀態(tài)、應(yīng)答建立等命令。 如表 3.4。 (3)普通命令:包括發(fā)送恢復(fù)、讀當(dāng)前幀數(shù)目兩個命令。 表表 3.3 普通命令指令集普通命令指令集 命令指令集 發(fā)送恢復(fù) f6h 無 讀當(dāng)前楨數(shù) f5h 讀 1 或 2 字節(jié) 3.1.4 pdiusbd12 的管腳配置 pd12 共有 28 個管腳,具有

39、 s028 和 tssop28 兩種封裝形式,管腳圖如下圖 3.3 所示: 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 12 頁 12 圖 3.3 pbiusbbi2 的管腳配置 表表 3.4 數(shù)據(jù)流命令指令集數(shù)據(jù)流命令指令集 數(shù)據(jù)流命令 讀中斷寄存器 器件 f4h 讀 2 字節(jié) 選擇端點 控制輸出 00h 讀 1 字節(jié)(可選) 控制輸入 01h 讀 1 字節(jié)(可選) 端點 1 輸出 02h 讀 1 字節(jié)(可選) 端點 1 輸入 03h 讀 1 字節(jié)(可選) 端點 2 輸出 04h 讀 1 字節(jié)(可選) 端點 2 輸入 05h 讀 1 字節(jié)(可選) 讀最后處理狀態(tài) 控制輸出 40h 讀 1 字節(jié) 控制輸

40、入 41h 讀 1 字節(jié) 端點 1 輸出 42h 讀 1 字節(jié) 端點 1 輸入 43h 讀 1 字節(jié) 端點 2 輸出 44h 讀 1 字節(jié) 端點 2 輸入 45h 讀 1 字節(jié) 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 13 頁 13 讀緩沖區(qū) 選擇的端點 f0h 寫 n 字節(jié) 寫緩沖區(qū) 選擇的端點 f0h 寫 n 字節(jié) 設(shè)置端點狀態(tài)控制輸出 40h 寫 1 字節(jié) 控制輸入 41h 寫 1 字節(jié) 端點 1 輸出 42h 寫 1 字節(jié) 端點 1 輸入 43h 寫 1 字節(jié) 端點 2 輸出 44h 寫 1 字節(jié) 端點 2 輸入 45h 寫 1 字節(jié) 應(yīng)答設(shè)置 選擇的端點f1h 無 緩沖區(qū)清零 選擇的端點f

41、2h 無 使緩沖區(qū)有效 選擇的端點 fah 無 3.1.5 a/d 與單片機(jī)接口電路 adc0809 允許的最大時鐘頻率為 1280khz,主要管腳功能如下: ino-in7: 8 路模擬量輸入端,可從這 8 個腳輸入 0v-5v 待轉(zhuǎn)換的模擬電壓 adda,addb,addc:管道地址輸入端。通過編碼的方式來實現(xiàn)管道地址的選擇。 clock:時鐘輸入端。adc0809 只有在時鐘脈沖信號的同步下才能進(jìn)行 a/d 轉(zhuǎn) 換時鐘頻率越高轉(zhuǎn)換得越快。典型時鐘頻率是 640khz。 ale:地址鎖存允許端。 start:啟動脈沖輸入端。在時鐘脈沖頻率為 640khz 時,start 脈寬應(yīng)大于 100

42、ns-200ns。 eoc:轉(zhuǎn)換結(jié)束信號端。在 a/d 轉(zhuǎn)換期間,eoc=0 表示轉(zhuǎn)換正在進(jìn)行,輸出數(shù) 據(jù)不可信,轉(zhuǎn)換完畢后立即使 eoc=1 表示轉(zhuǎn)換已經(jīng)完成,輸出數(shù)據(jù)可信。 d7-do:轉(zhuǎn)換所得八位輸出數(shù)據(jù),d7 是最高位,而 do 是最低位。 oe:允許輸出端。oe 端控制輸出鎖存器的三態(tài)門。當(dāng) oe=1 時,轉(zhuǎn)換所得數(shù)據(jù) 出現(xiàn)在 d7-d0 腳,當(dāng) oe-0 時 d7-do 腳對外是高阻抗。 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 14 頁 14 89c52 通過 p1.4 和讀、寫控制線來控制轉(zhuǎn)換器的模擬輸入通道地址鎖存、啟動 和允許輸出。編程時注意啟動 ad0809 后,eoc 在一定時

43、間才能變成低電平。 圖 3.4 adc0809 與 89c52 的接口電路 3.1.6 pdiusbd12 與單片機(jī)接口電路 圖 3.5 pdiusbd12 與 89c52 的連接電路 pdiusbd12 與 89c52 的連接電路如圖 3.5 所示。89c52 的 ale 和 pd12 的 ale 相接,表示采用單獨地址和數(shù)據(jù)總線配置。其 ao 腳接高電平用于控制命令或 數(shù)據(jù)輸入到 pdiusbd i2,也就是編程中 outportcmd()和 outportdata()函數(shù)。此外 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 15 頁 15 89c52 的多位地址/數(shù)據(jù)復(fù)用總線 po 可直接與 pdi

44、usbd12 的數(shù)據(jù)總線相連, clkout 時鐘輸出為 89c52 提供時鐘輸入。在該數(shù)據(jù)采集系統(tǒng)中,用 adc0809 采 集 0-5v 的電壓信號,經(jīng) a/d 轉(zhuǎn)換后將數(shù)字量存入預(yù)先設(shè)定的緩沖區(qū)里,利用接口 芯片 d12 將數(shù)據(jù)送至 usb 總線上。設(shè)備應(yīng)用程序從緩沖區(qū)里取數(shù)據(jù)顯示,通過數(shù) 值來說明 usb 接口的采集速率比一般的串行總線速度高。當(dāng)前端的電壓信號不斷變 化的同時,在 pc 上可以觀察到數(shù)據(jù)的變化,這就表明利用 usb 接口在數(shù)字采集系 統(tǒng)中進(jìn)行數(shù)據(jù)傳輸是能夠?qū)崿F(xiàn)的,而且能夠很好的實現(xiàn),硬件電路原理圖祥見附圖 b1。 3.2 系統(tǒng)的軟件設(shè)計 3.2.1 pdiusbd12

45、的固件編程思想 pdiusbd 12 的固件設(shè)計成完全的中斷驅(qū)動。當(dāng) cpu 處理前臺任務(wù)時,usb 的 傳輸可在后臺進(jìn)行。這就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時簡化了編 程和調(diào)試。后臺 isr(中斷服務(wù)程序)和前臺主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志 和數(shù)據(jù)緩沖區(qū)來實現(xiàn)。 其原理圖如圖 3.6 所示 圖 3.6 前后臺工作原理 由于這種結(jié)構(gòu),主循環(huán)不關(guān)心數(shù)據(jù)是來自 usb 串口還是并口,它只檢查循環(huán)緩 沖區(qū)內(nèi)需要處理的新數(shù)據(jù)。這個概念很重要,這樣主循環(huán)程序?qū)W⒂跀?shù)據(jù)的處理而 isr 能夠以最大可能的速度進(jìn)行數(shù)據(jù)的傳輸。 相似的,控制端點在數(shù)據(jù)包處理時采用了同樣的概念。isr 接收和保

46、存數(shù)據(jù)緩 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 16 頁 16 沖區(qū)中的控制傳輸并設(shè)置相應(yīng)的標(biāo)志寄存器。主循環(huán)向協(xié)議處理程序發(fā)出請求。由 于所有的標(biāo)準(zhǔn)器件,級別和廠商請求都是在協(xié)議處理程序中進(jìn)行處理,isr 得以保 持它的效率,而且一旦增加新的請求只需要在協(xié)議層進(jìn)行修改。 3.2.2 pdiusbd12 固件編程的結(jié)構(gòu) 固件的積木式結(jié)構(gòu)如圖 3.7 所示,圖中箭頭表示數(shù)據(jù)傳輸方向。 下面是事件標(biāo)志“eppflags”和 setup 包數(shù)據(jù)緩沖區(qū)“conrol_ xfer”的 結(jié)構(gòu)體: /事件標(biāo)志 typedef union_ epp_ flags struct_flags unsigned cha

47、r timer:1; unsigned char bus-reset:1; unsigned char suspend:1; unsigned char setup_packet:1; unsigned char remote_wakeup:1; unsigned char in_isr:1; unsigned char control_state:2; unsigned char configuration:1; unsigned char verbose:1; unsigned char epl_rxdone:1; unsigned char setup_dma:1; unsigned c

48、har dma_state:2; bits; unsigned short value eppflags; /usb 設(shè)備請求寄存器 typedef struct_ device_request 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 17 頁 17 unsigned char bmrequesettype; unsigned char brequest; unsigned short wvalue; unsigned short windex; unsigned short wlength; device_ request; /setup 包數(shù)據(jù)緩沖區(qū) typedef struct_control

49、_ xfer device_ requset devicerequest; unsigned short wlength unsigned short wcount; unsigned char*pdata; unsigned char databuffermax_ controldata_ size: control_ xfer; 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 18 頁 18 圖 3.7 固件結(jié)構(gòu)和數(shù)據(jù)流向 3.2.3 pdiusbd12 固件編程的實現(xiàn) 中斷服務(wù)程序-isr.c 這部分代碼處理由 pdiusbd12 產(chǎn)生的中斷,它將數(shù)據(jù)從 pd 工 usbd12 的內(nèi)部 fifo 取回

50、到 cpu 存儲器并建立正確的事件標(biāo)志-通知主循環(huán) 進(jìn)行處理。在 isr 的入口固件使用 d12_ read interrupt register( )來決定中斷源, 然后將進(jìn)入相應(yīng)的子程序進(jìn)行處理。pdiusbd12 的固件完全由中斷驅(qū)動 isr 的流程 圖 8 如下所示:例如,在 out 數(shù)據(jù)階段的建立包時,工 sr 將建立包和 out 數(shù)據(jù)都 存入control_ xfer”緩沖區(qū)中,然后將“setup_packer”標(biāo)志就到主循環(huán)這將 減少主循環(huán)不必要的服務(wù)時間,并且簡化了主循環(huán)的編程??偩€復(fù)位和掛起并不要 求在 isr 中進(jìn)行特殊的處理。isr 只需在 eppflags 中設(shè)置“bu

51、s_ reset”或 “suspends”標(biāo)志位,然后退出即可。isr 與前臺主循環(huán)通過事件標(biāo)志 eppflags 和 數(shù)據(jù)緩沖區(qū) conrol_ xfer 進(jìn)行通信。主循環(huán)和 isr 之間的任務(wù)分配是這樣的: 主循環(huán):采集數(shù)據(jù),發(fā)出 usb 請求,和處理 usb 總線事件和用戶功能等等 mainloop.c 中斷服務(wù)程序 isr. c 標(biāo)準(zhǔn)請求處理 chap 9. c 廠商請求處理 protodma.c pdiusbd12 命令接口 d12ci. c 硬件提取層 epphal. c 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 19 頁 19 isr 從 d12 收集數(shù)據(jù)而主循環(huán)對數(shù)據(jù)進(jìn)行處理。當(dāng)工 s

52、r 收集了足夠的數(shù)據(jù)時,它 只通知主循環(huán)己經(jīng)準(zhǔn)備好等待處理。 3.2.4 端點處理程序 控制端點:控制傳輸總是在 setup 階段開始,之后為可選的 data 階。然后 在 status 階段結(jié)束。如圖 3.8 所示為控制端點不同狀態(tài)的轉(zhuǎn)變。固件使用這 3 種 狀態(tài)來正確地處理控制傳輸。 圖 3.8 控制端的安處理程序轉(zhuǎn)換 從上面的流程圖 3.8 中可以看出,mcu 需要通過選擇控制輸出端點提取建立包 的內(nèi)容來決定端點是為滿還是空。如果控制端點為滿,mcu 將從緩沖區(qū)讀出內(nèi)容并 無數(shù)據(jù)控制 返回狀態(tài) 空閑 接收 發(fā)送 輸入 輸出 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 20 頁 20 將其存入存儲區(qū)

53、。之后,它將從存儲區(qū)使主設(shè)備請求生效。如果是一個有效的請求, mcu 必須向控制輸出端點發(fā)送應(yīng)答建立命令以重新使能下一個建立階段接下來 mcu 需要證實控制傳輸是控制讀還是寫,這可以通過讀建立包中 bmrequesttype 的 第 8 位來實現(xiàn)。如果控制傳輸是一個控制讀類型,那就是說器件需要在下一個數(shù)據(jù) 階段向主機(jī)發(fā)回數(shù)據(jù)包。mcu 需要設(shè)置一個標(biāo)志以指示 usb 設(shè)備現(xiàn)在正處于傳輸 模式,即準(zhǔn)備在主機(jī)發(fā)送請求時發(fā)送數(shù)據(jù)。 如圖 3.9 所示為控制輸出處理程序。為了說明它,舉一個主機(jī)請求的例子叫做 “get descriptor()”的標(biāo)準(zhǔn)設(shè)備請求。當(dāng) usb 器件 d12 接收到建立包,將

54、產(chǎn)生一個 中斷通知 mcu,微控制器響應(yīng)中斷,通過讀 d12 中斷寄存器決定包是發(fā)到控制端 點還是普通端點。如果包是送往控制端點,mcu 要通過讀 d12 的最后處理狀態(tài)寄 存器進(jìn)一步確定數(shù)據(jù)是否是一個建立包,第一個包必須是建立包。 圖 3.9 控制輸入處理流程 建立階段結(jié)束之后,主機(jī)會執(zhí)行數(shù)據(jù)階段。d12 等待接收 control_ in 包,如下圖 3.10。 nono no no no no yes yes yes yes yes yes yes 控制輸出入口 讀端點處理狀態(tài) 清中斷標(biāo)志 建立包? 接收數(shù)據(jù)出錯 讀取斷電數(shù)據(jù)并保 對控制輸入端點和控制輸 出斷電進(jìn)行建立數(shù)據(jù)對應(yīng) 包 設(shè)置等

55、待狀態(tài) 停止控制端點 設(shè)置為等待狀態(tài) 數(shù)據(jù)長度出錯 子程序結(jié)束 處于接收狀態(tài) 設(shè)置等待 狀態(tài),設(shè) 置建立包 標(biāo)志標(biāo)志 設(shè)置發(fā)送 狀態(tài),設(shè) 置建立包 標(biāo)志標(biāo)志 設(shè)置等待狀態(tài) 帶數(shù)據(jù)的要求: 讀取要求? 讀取端點數(shù)據(jù)并保 存 接收完畢 ? 設(shè)置為等待狀態(tài) 設(shè)置建立包標(biāo)志 no nono no yesyes yes 讀端點處理狀 態(tài) 清中斷標(biāo) 志 控制輸入入口 發(fā)送狀態(tài) 剩下數(shù)據(jù) 16 字節(jié) 子程序結(jié)束 剩下 0 字 節(jié) 發(fā)送 16 個字 節(jié)數(shù)據(jù) 設(shè)置為發(fā)送狀 態(tài) 發(fā)送剩下數(shù)據(jù) 設(shè)置為等待狀 態(tài) 發(fā)送一個空包 設(shè)置為等待狀 態(tài) 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 21 頁 21 圖 3.10 控制輸出

56、處理流程 mcu 首先需要通過讀 d12 的最后處理狀態(tài)寄存器清零 control_ in 中斷標(biāo)志位, 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 22 頁 22 接著 mcu 再確認(rèn) d12 處于傳輸模式后進(jìn)行數(shù)據(jù)包的發(fā)送。由于 d12 的控制端點只 有 16 字節(jié) fifo,如果傳輸?shù)拈L度大于 16 字節(jié),mcu 在傳輸階段就必須控制數(shù)據(jù) 的數(shù)量。mcu 必須檢查要發(fā)送到主機(jī)的當(dāng)前和剩余的數(shù)據(jù)大小。如果剩下的字節(jié)數(shù) 大于 16, mcu 將先發(fā)送 16 字節(jié)并用減去參考長度(要求的長度)16。當(dāng)下一個 corntol_ in 標(biāo)志來到時,mcu 將確定剩余的字節(jié)是否為零。如果己經(jīng)沒有數(shù)據(jù)要發(fā) 送,

57、mcu 需要發(fā)送一個空的包以指示主機(jī) 數(shù)據(jù)已經(jīng)發(fā)送完畢。如果建立包為 set-descriptor( )請求,那么建立包中的控制傳輸 將指示此包為控制寫類型。 在執(zhí)行完 set_ descriptor 請求過程后,mcu 等待數(shù)據(jù)階段。主機(jī)發(fā)送一個 control_ out 標(biāo)志,mcu 從 d12 緩沖區(qū)中減去數(shù)據(jù)。流程現(xiàn)在處于 control_ out 處 理程序的右端。mcu 首先確認(rèn) d12 是否處于 usb_ receive 模式。然后 mcu 通過 檢查選擇控制輸出端點確認(rèn)緩沖區(qū)是否己滿并將數(shù)據(jù)從緩沖區(qū)讀出。 普通端點:端點 1 和端點 2 這里定義為普通輸入輸出。 普通輸出端點配

58、置為從主機(jī)接收數(shù)據(jù)包。當(dāng) mcu 從主機(jī)接收 generic_ out 標(biāo) 志(通過讀中斷寄存器識別)時,d12 中斷位必須清零。選擇端點將清零 generic_ out 緩沖區(qū),接下來 mcu 需要確認(rèn)數(shù)據(jù)的長度并把數(shù)據(jù)讀出,然后設(shè)置收到數(shù)據(jù)標(biāo)志 位 beppflag。 對于普通輸入端點的中斷,只要讀取端點號的最后處理狀態(tài)寄存器來消除中斷 寄存器的相應(yīng)位,把狀態(tài)清零就可以了。generic_ in 標(biāo)志是在發(fā)送完數(shù)據(jù)后才產(chǎn)生 的,當(dāng)還有數(shù)據(jù)要發(fā)送時可以在中斷程序里接著繼續(xù)發(fā)。注意:這里的數(shù)據(jù)發(fā)送完成 標(biāo)志是指在主機(jī)的一個有效的 in 事務(wù)后才發(fā)生的。當(dāng)主機(jī)發(fā)出 in 事務(wù)而設(shè)備沒有 送出數(shù)據(jù)

59、時,是不會產(chǎn)生中斷的 3.2.5 主循環(huán) mainloop.c mcu 一旦上電就需要初始化其所有端口、存儲區(qū)、定時器和中斷服務(wù)程序。之 后 mcu 將重新連接 usb,包括將 soft_ connect 寄存器設(shè)置為 on。這些過程是很 重要的,因為它確保了在 mcu 準(zhǔn)備好服務(wù) d12 之前 d12 不會進(jìn)行操作。 在主循環(huán)程序中 mcu 對鍵盤進(jìn)行輪詢。如果任何一個特定的按鍵被按下,鍵 處理命令將執(zhí)行子程序并返回主循環(huán)。增加該子程序的目的僅僅是為了調(diào)試。1ms 遼寧科技大學(xué)畢業(yè)設(shè)計(論文) 第 23 頁 23 定時器用于激活該子程序以檢測在評估板上的任何按鍵。當(dāng)輪詢到了檢測建立包時, 它

60、確認(rèn)建立標(biāo)志在之前是否被中斷服務(wù)程序所置位。如果建立標(biāo)志置位,它將向協(xié) 議層發(fā)送一個器件請求進(jìn)行處理。 3.2.6 驅(qū)動程序開發(fā)工具的介紹 windows ddk windows ddk 是 microsoft 公司提供的一個開發(fā) windows 驅(qū)動程 序的工具,是 microsoft 出品的設(shè)備驅(qū)動程序開發(fā)工具包 ddk(device developer kit), 它有 windows98 ddk 和 windows2000 ddk 兩個版本。前者能夠開發(fā) windows95/98/me/nt 下的 vxd, kmd 和 wdm 驅(qū)動程序,后者可以開發(fā) windows98/me/nt/2

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論