【正文】
widely application.The paper is mainly concerned with design process of data acquisition system that is based on USB bus. The design scheme, developing method and developing process of a suit of data acquisition system used with CH372 and ATMEL’s AT89C51 are expatiate. In addition, the paper also gives the material realization scheme.At fist, the paper introduces the protocol of USB bus in brief, and then discusses the design of data acquisition system, which includes four parts, hardware design, firmware design, device driver and application program. In hardware part, the performance of CH372 is fistly described。 the questions which should be paid attention to in design is explained. Drivers and applications of the main equipment and USB plug and play function, and provide a friendly humanmachine interface, control of data acquisition system and display the data collection.The paper has finished the design of data acquisition system based on USB bus and realized the basal data acquisition foundation. Using USB bus to transfer data blazed a way in munication between data acquisition system and puter.Keywords: USB、Drive、Applications、AT89C5CH372目 錄第1章 緒論 1 引言 1 USB的特點(diǎn) 1 USB實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)方案 3第2章 USB體系簡(jiǎn)介 4 體系概述 4 USB的傳輸類型 5 USB的設(shè)備狀態(tài) 7第3章 USB數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì) 11 USB 接口方案 11 USB接口的硬件設(shè)計(jì) 11 CH372簡(jiǎn)介 11 USB接口的硬件電路設(shè)計(jì) 16 USB接口硬件的實(shí)現(xiàn) 17 17 復(fù)位電路 18 A/D轉(zhuǎn)換電路 18 CH372接口電路 19 單片機(jī)擴(kuò)展RAM接口電路 20第4章 USB數(shù)據(jù)采集系統(tǒng)設(shè)備固件編寫 21 固件設(shè)計(jì)方案及工作流程 21 21 21 22() 22 22 CH375_INIT初始化模塊 23 23 23第5章 USB設(shè)備驅(qū)動(dòng)程序及應(yīng)用程序 24 24 WDM概述 24 主要模塊設(shè)計(jì) 25 初始化模塊 25 26 I\O控制模塊 28 應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn) 28 操作例程及初始化 28 設(shè)備讀寫接口程序的實(shí)現(xiàn) 29 數(shù)據(jù)傳輸程序的設(shè)計(jì)和實(shí)現(xiàn) 30 用戶應(yīng)用程序的具體實(shí)現(xiàn) 34結(jié)束語(yǔ) 35致謝 36參考文獻(xiàn) 37附錄一 38附錄二 39第1章 緒論 引言現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究對(duì)數(shù)據(jù)采集系統(tǒng)的要求日益提高,目前比較通用的方法已逐漸不能適應(yīng)其要求。這些數(shù)據(jù)采集系統(tǒng)存在以下缺陷:安裝麻煩;價(jià)格昂貴;受計(jì)算機(jī)插槽數(shù)量、地址、終端資源的限制,可擴(kuò)展性差;在一些電磁干擾性強(qiáng)的測(cè)試現(xiàn)場(chǎng),無(wú)法專門對(duì)其做電磁屏蔽,導(dǎo)致采集的數(shù)據(jù)失真等。USB是一種外設(shè)總線,所不同的是,它是由Intel、Compaq、Digital、IBM、Microsoft、NEC及Northern Tele等幾家計(jì)算機(jī)和通信公司聯(lián)合制訂的,并成為了行業(yè)標(biāo)準(zhǔn)。2000年初,USB ,USB ,在一定基礎(chǔ)上代表了計(jì)算機(jī)接口的發(fā)展趨勢(shì)。為了把外圍設(shè)備連接到計(jì)算機(jī)上去,USB提供了一種低成本的解決方案,所有系統(tǒng)的智能機(jī)制都駐留在主機(jī)并嵌入芯片組中,方便了外設(shè)的制造。USB實(shí)現(xiàn)了真正的“即插即用”功能。在操作系統(tǒng)方面,由主機(jī)負(fù)責(zé)掃描總線上的所有接口,自動(dòng)識(shí)別USB設(shè)備的插拔,并相應(yīng)的加載或卸載設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)了即插即用功能。USB定義了一種簡(jiǎn)單的連接器,僅使用一個(gè)四芯電纜,即可用來(lái)連接任何一個(gè)USB設(shè)備。(4)最多可通過(guò)網(wǎng)絡(luò)連接127個(gè)設(shè)備,每個(gè)USB總線支持127個(gè)設(shè)備的連主機(jī) RootHubRoot Hub設(shè)備設(shè)備設(shè)備設(shè)備設(shè)備設(shè)備HubHub 樹形拓?fù)浣Y(jié)構(gòu)示意圖接。由于協(xié)議中規(guī)定使用8位數(shù)據(jù)尋址,因此每一個(gè)主機(jī)最多可連接127個(gè)設(shè)備。(6)USB有兩種設(shè)備傳輸率:,并且兩種速率能夠自適應(yīng)轉(zhuǎn)換。(7)獨(dú)立供電。當(dāng)外設(shè)的電源要求電壓為5伏且電源小于500mA時(shí),可以直接從USB總線獲取電源,這樣USB設(shè)備就無(wú)需專用電源線,從而降低了設(shè)備的成本。USB事物處理包括錯(cuò)誤檢測(cè)機(jī)制,它們用于確保數(shù)據(jù)無(wú)錯(cuò)誤發(fā)送。(9)電源保護(hù)。(10)支持四種類型的傳輸方式?;赨SB總線的數(shù)據(jù)采集系統(tǒng),充分利用了USB總線的優(yōu)點(diǎn),有效解決了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的缺陷,是數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)的一種較好選擇。微控制器USB芯片 模擬開(kāi)關(guān)A/D轉(zhuǎn)換器PC機(jī) 多 路 信 號(hào) USB實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的硬件模塊系統(tǒng)的模擬開(kāi)關(guān)、A/D轉(zhuǎn)換器均采用傳統(tǒng)的設(shè)計(jì)方法,根據(jù)系統(tǒng)功能、采集的精度、速率、通道數(shù)等諸元素選擇合適的芯片。USB數(shù)據(jù)采集系統(tǒng)的軟件包括USB設(shè)備驅(qū)動(dòng)程序、設(shè)備固件、主機(jī)端應(yīng)用程序三部分。其中設(shè)備固件對(duì)數(shù)據(jù)采集系統(tǒng)進(jìn)行控制,還要控制USB接口芯片實(shí)現(xiàn)USB協(xié)議。第2章 USB體系簡(jiǎn)介 體系概述USB 體系包括“主機(jī)”、“設(shè)備”以及“物理連接”三個(gè)部分。主機(jī)管理總線,就必須知道總線上有哪些設(shè)備,以及每個(gè)設(shè)備的功能。主機(jī)必須讓每一個(gè)設(shè)備都可以正確地發(fā)送和接收數(shù)據(jù)。USB 集線器最基本的作用是作為與設(shè)備融合為一體的分離器和中繼器。集線器直接負(fù)責(zé)支持能使 USB 用戶友好并讓用戶方便易用的各種屬性。集線器可以檢測(cè)其下行端口上的連接與斷開(kāi)情況,并將此信息報(bào)告給主機(jī)。此外,集線器負(fù)責(zé)為其下行端口管理電源,并將所有的電源問(wèn)題報(bào)告給主機(jī)從而通知用戶。USB設(shè)備是帶有USB接口并可以完成特定功能的外設(shè),它通過(guò)USB總線發(fā)送和接收數(shù)據(jù)/控制信息。在功能部件使用前,主機(jī)要對(duì)其進(jìn)行設(shè)置。目前USB設(shè)備是USB總線中發(fā)展最快的部分,常見(jiàn)USB外設(shè)有:鼠標(biāo)或光筆、鍵盤等。在消息通道中傳遞的數(shù)據(jù)具有USB定義的格式,它在數(shù)據(jù)凈荷區(qū)中包含的數(shù)據(jù)允許具有設(shè)備指定的格式。USB協(xié)議中規(guī)定了四種不同的數(shù)據(jù)傳送類型,每種傳送類型在以下的幾個(gè)傳送特征上會(huì)有不同:● USB規(guī)定的數(shù)據(jù)格式;● 信息流的方向;● 數(shù)據(jù)凈荷區(qū)的長(zhǎng)度限制;● 總線訪問(wèn)的限制;● 延時(shí)的限制;● 出錯(cuò)處理。一旦為這個(gè)端點(diǎn)建立了一個(gè)通道,這個(gè)通道的絕大多數(shù)傳送特征也就固定下來(lái)了,一直到這個(gè)通道被取消為止。控制傳送一般由三個(gè)階段組成:首先是設(shè)置階段,通過(guò)(Setup Stage)包建立聯(lián)系,把請(qǐng)求信息從主機(jī)傳到它的應(yīng)用設(shè)備;接下來(lái)是數(shù)據(jù)階段(Data Stage),零個(gè)或多個(gè)數(shù)據(jù)傳送事物按照Setup包中指明的方向傳送數(shù)據(jù);最后是狀態(tài)信息的回傳,應(yīng)用設(shè)備將狀態(tài)信息傳到主機(jī)。所以,一旦一個(gè)控制通道被確認(rèn)之后,這個(gè)通道就使用了具有某個(gè)端點(diǎn)號(hào)的兩個(gè)端點(diǎn),一個(gè)輸入,一個(gè)輸出。只有高速設(shè)備可以使用等時(shí)傳送。等時(shí)傳送不支持因總線錯(cuò)誤而進(jìn)行的重傳。一般情況下,可以由握手信號(hào)來(lái)通知發(fā)送者包是否被成功的接收??紤]到總線的錯(cuò)誤率較低,協(xié)議認(rèn)為傳送一般均能成功。(3) 中斷傳送 中斷傳送是低頻率、固定延遲的通信。一般的應(yīng)用包括USB的鍵盤、鼠標(biāo)、游戲桿和集線器的狀態(tài)報(bào)告。要在USB上進(jìn)行中斷傳送,必須在每個(gè)周期對(duì)端口進(jìn)行訪問(wèn)。如果端口無(wú)數(shù)據(jù)需要中斷傳送,就請(qǐng)求其回送一個(gè)NAK信號(hào)。長(zhǎng)度為0的數(shù)據(jù)凈荷區(qū)的傳送是合法的,而且對(duì)某些實(shí)現(xiàn)是很有用的。中斷傳送支持像游戲手柄,鼠標(biāo)和鍵盤等輸入設(shè)備,這些設(shè)備與主機(jī)間數(shù)據(jù)傳輸量小,無(wú)周期性,但對(duì)響應(yīng)時(shí)間敏感,要求馬上響應(yīng)。如果USB有較多的空閑帶寬0則批量傳送發(fā)生地相對(duì)頻繁,如果空閑帶寬較少,則可能有很長(zhǎng)時(shí)間沒(méi)有批量傳送發(fā)生。 USB的設(shè)備狀態(tài)USB設(shè)備狀態(tài)共有6個(gè),分別是連接(Attached)、加電(Powered)、缺省(Default)、地址(Address)、配置(Configured)和掛起(Suspended),下面將分別對(duì)各個(gè)狀態(tài)的具體含義進(jìn)行介紹:(1) 連接狀態(tài) 連接狀態(tài)又稱接入狀態(tài),表示設(shè)備剛接入集線器的某下游接口上,如果此集線器是配置好的,集線器會(huì)通過(guò)中斷傳輸通知給運(yùn)行于主機(jī)端的集線器驅(qū)動(dòng)程序,設(shè)備進(jìn)入加電狀態(tài);否則設(shè)備將停留在接入狀態(tài)。通過(guò)總線的端口獲得電源的模式稱為總線供電模式(Buspowered)。一個(gè)設(shè)備可以既支持自供電模式,又支持總線供電模式。當(dāng)設(shè)備處于加電狀態(tài)后,集線器發(fā)出一個(gè)復(fù)位命令,激活連接端口,使連接的設(shè)備可以與主機(jī)進(jìn)行通信,這時(shí)設(shè)備進(jìn)入缺省狀態(tài)。設(shè)備在加電以后,端口在收到復(fù)位信號(hào)之前不應(yīng)響應(yīng)總線的任何傳輸,因?yàn)樗€沒(méi)有地址??偩€的缺省地址0是被總線上所有設(shè)備共享的,每一個(gè)時(shí)刻只能有一個(gè)設(shè)備處于缺省狀態(tài),這種按次序占用總線缺省地址的功能一般由集線器驅(qū)動(dòng)程序?qū)崿F(xiàn)。(4) 地址狀態(tài)地址狀態(tài)表示設(shè)備獲得一個(gè)唯一的設(shè)備地址。當(dāng)USB設(shè)備處于掛起狀態(tài)時(shí),它仍然保持這個(gè)地址不變。這些工作完成后設(shè)備將進(jìn)入配置完成狀態(tài)(簡(jiǎn)稱配置狀態(tài))。在USB設(shè)備正常工作以前,設(shè)備必須被正確配置。需要注意的是,即使是在I/O設(shè)備已經(jīng)處于設(shè)置的狀態(tài),主機(jī)仍然可以發(fā)送控制請(qǐng)求。(6) 掛起狀態(tài)如果一個(gè)I/O設(shè)備檢測(cè)到總線沒(méi)有活動(dòng)的時(shí)間達(dá)到3ms,它就要轉(zhuǎn)移到低功耗的掛起狀態(tài)??偩€沒(méi)有活動(dòng)的時(shí)間達(dá)到3ms,表明主機(jī)已經(jīng)停止發(fā)送SOF包。如果主機(jī)關(guān)機(jī),則沒(méi)有必要使大多數(shù)I/O設(shè)備保持加電狀態(tài)。I/O設(shè)備也可以使PC主機(jī)走出睡眠狀態(tài),這種能力稱為REMOTE_WAKEUP。例如,若I/O設(shè)備是一部電話,電話鈴響,它就要喚醒主機(jī)。I/O設(shè)備要先驅(qū)動(dòng)一個(gè)遠(yuǎn)程喚醒信號(hào)向它的本地集線器報(bào)警,集線器再把這個(gè)信號(hào)傳到根集線器,喚醒主機(jī)。另外,USB設(shè)備必須在所連接的集線器端口失效時(shí)進(jìn)入掛起狀態(tài),這就是所謂的選擇性掛起(Selective Suspend)。此時(shí),USB設(shè)備處于加電狀態(tài),它所連接的端口是無(wú)效的。3.主機(jī)一旦得知新設(shè)備已連上以后,它至少等待100ms以使得插入操作的完成以及設(shè)備電源穩(wěn)定工作。4.集線器將發(fā)向端口的復(fù)位信號(hào)持續(xù)10ms。這時(shí)USB設(shè)備處于缺省狀態(tài),并且可從VBUS汲取小于100mA的電流,所有設(shè)備寄存器及狀態(tài)己經(jīng)被復(fù)位,設(shè)備可對(duì)缺省地址產(chǎn)生響應(yīng)。6.在USB設(shè)備接受設(shè)備地址之前,它的缺省控制通道(Default Control Pipe)在缺省地址處自然是可尋址的,主機(jī)通過(guò)讀取設(shè)備描述表,判決設(shè)備缺省通道的地址。如果設(shè)備有多個(gè)配置,驅(qū)動(dòng)程序通常也要全部讀出。第3章 USB數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì)系統(tǒng)的模擬開(kāi)關(guān)、A/D轉(zhuǎn)換器均采用傳統(tǒng)的設(shè)計(jì)方法。 USB 接口方案USB接口設(shè)計(jì)中有三種芯片選擇方案:第一種方案是選用設(shè)計(jì)成標(biāo)準(zhǔn)USB控制器的低層芯片,例如Cypress公司的CY7C63XXX系列,這類芯片是完全按照USB協(xié)議設(shè)計(jì)的,但由于其結(jié)構(gòu)不同于其它常用控制芯片,開(kāi)發(fā)者需要較長(zhǎng)的學(xué)習(xí)時(shí)間,不利于快速開(kāi)始一個(gè)項(xiàng)目;另一種方案是采用具備USB通信功能的單片機(jī),例如Intel/Cypress的8X93Cypress的EZUSB,這些單片機(jī)采用開(kāi)發(fā)者熟悉的結(jié)構(gòu)和指令集,處理能力強(qiáng),構(gòu)成系統(tǒng)的電路簡(jiǎn)單,調(diào)試方便,是目前常用的一種方案。另外由于采用一般單片機(jī),熟悉單片機(jī)的開(kāi)發(fā)人員可以很快的開(kāi)始一個(gè)項(xiàng)目。根據(jù)本系統(tǒng)的設(shè)計(jì)要求和實(shí)際情況,在設(shè)計(jì)中選擇了第三種方案。在本地端,CH372具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機(jī)/DSP/MCU/MPU等控制器的系統(tǒng)總線上;在計(jì)算機(jī)系統(tǒng)中,CH372的配套軟件提供了簡(jiǎn)潔易用的操作接口,與本地端的單片機(jī)通訊就如同讀寫文件。(2)提供一對(duì)主端點(diǎn)和一對(duì)輔助端點(diǎn),支持控制傳輸、批量傳輸、中斷傳輸。(4)內(nèi)置固件模式下屏蔽了相關(guān)的USB協(xié)議,自動(dòng)完成標(biāo)準(zhǔn)的USB枚舉配置過(guò)程,完全不需要本地端控制器作任何處理,簡(jiǎn)化了單片機(jī)的固件編程。(6)產(chǎn)品制造商可以自定義廠商標(biāo)識(shí)(Vendor ID)和產(chǎn)品標(biāo)識(shí)(Product ID)。(8) 主端點(diǎn)上傳下傳緩沖區(qū)各64字節(jié),輔助端點(diǎn)上傳下傳緩沖區(qū)各8字節(jié)。表31 CH372引腳CH372用到的命令如下表32所示:表32 CH372的命令如果命令的輸出數(shù)據(jù)是操作狀態(tài),參考表33。返回的一個(gè)字節(jié)數(shù)據(jù)是版本號(hào),其