日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于PDIUSBD12的USB數(shù)據(jù)采集系統(tǒng)的設計

          基于PDIUSBD12的USB數(shù)據(jù)采集系統(tǒng)的設計

          作者: 時間:2012-01-31 來源:網(wǎng)絡 收藏

          1引 言

          隨著計算機微處理器芯片性能的高速發(fā)展,計算機逐漸在各種領域中廣泛使用,但隨之而來的問題是計算機本身軟資源的嚴重不足。為節(jié)省計算機的軟資源,接口應運而生。

          在誕生之初便面對許多已趨成熟

          的計算機接口的挑戰(zhàn),這既要求它有對于其他接口的明顯優(yōu)勢,并不斷完善,才可能被廣大用戶接受。表1[1]是和其他常見總線在幾個參數(shù)上的比較。

          表1 USB及其他常用總線的比較

          USB的優(yōu)勢特點:

          (1)速度快。高速模式速率為12Mbps,低速模式速率也可達到1.5Mbps。USB2.0理論上傳輸率可以達到480Mbps。

          (2)安裝配置容易。USB設備支持即插即用,支持熱拔插。系統(tǒng)對其進行自動配置,不占用中斷資源或者DMA資源。USB為接纜和連接頭提供了單一模型,解決了插槽緊張問題。

          (3)易于擴展。用USB連接的外圍設備數(shù)目最多達127個,通過集線器可以使外設距離達到12米。

          (4)總線供電。USB總線提供最大達5V,500mA電流,對于功耗較小的設備來說這是非常有效的。

          (5)使用靈活。USB共有4種傳輸模式以適應不同設備的需要。

          (6)價格便宜。實現(xiàn)USB功能的模塊具有低廉的價格。

          2 接口芯片[2]介紹

          是Philips公司推出的一種并行接口芯片,它支持多路復用、非多路復用和DMA并行傳輸。芯片遵循協(xié)議USB1.1,支持不同用途的傳輸類型。需要外接微控制器(MCU)來進行協(xié)議處理和數(shù)據(jù)交換,它對MCU沒有特殊的要求,因此設計者可以選擇適合類型的MCU對芯片進行控制,也可以利用Philips公司的結構來做開發(fā)。

          圖1 PDIUSBD12內部結構

          PIDUSBD12內部含有集成收發(fā)器接口,可通過端口電阻直接連接到USB通信電纜。PDIUSBD12片內集成有3.3V調節(jié)器,可給收發(fā)器提供電源。該電壓可以外接1.5kΩ的上拉電阻作為輸出,也可以連接內部集成的1.5kΩ的上拉電阻作為SoftConnectTM的內部電源;由于片內集成了6~48MHz 倍頻PLL,因此只需外接低頻晶振就可工作,EMI會相應降低。

          位時鐘恢復電路將時鐘從USB數(shù)據(jù)流中恢復出來,還可以對頻率漂移和信號抖動進行跟蹤。

          SIE(串行接口引擎)能完整地執(zhí)行USB協(xié)議,它已經(jīng)被完全固化在芯片內部,因此不需要任何干涉。這一部分包括同步識別、并行/串行轉換、CRC檢測/產(chǎn)生、PID確認/產(chǎn)生、地址識別以及握手評定/產(chǎn)生。

          SoftConnect(軟連接)可通過MCU將指令發(fā)到D+(全速設備)來實現(xiàn)。PDIUSBD12的初始化在MCU發(fā)命令之前完成。下一次連接無需拔出USB線就可完成。

          對MCU來說,PDIUSBD12是一個有8位數(shù)據(jù)總線和1位地址線的存儲設備,它支持地址數(shù)據(jù)總線復用、非地址數(shù)據(jù)總線復用以及DMA數(shù)據(jù)傳輸方式。

          當外設經(jīng)PDIUSBD12連接到集線器后,集線器就會檢測外設的連接狀態(tài)并向主機報告。一旦發(fā)現(xiàn)有設備連接,主機就發(fā)送一系列請求給集線器,使得集線器在主機和設備之間建立一個通信通道。然后主機開始列舉設備,列舉成功后,主機即可從外設獲得相關的配置信息對外設進行配置。只有經(jīng)過配置以后的外設才能被主機識別,并能和主機進行通信。

          3 硬 件 設計

          此數(shù)據(jù)采集系統(tǒng)的框圖如圖2所示。由于USB的協(xié)議框架比較大,所以MCU使用帶有8kEPROM的89C52。USB接口芯片為 PDIUSBD12。89C52和D12的連接有獨立的地址數(shù)據(jù)總線方式和復用的地址數(shù)據(jù)總線方式。由于PDIUSBD12既要接受來自89C52的命令又要和89C52進行通信,而他們使用共同的接口D[0…7],所以D12地址的含義是對命令和數(shù)據(jù)的選擇。在第一種方式中,用A0腳表示地址位:A0為 1表示命令,A0為0表示讀寫的是數(shù)據(jù),將它與89C52的一個IO口相連。在發(fā)送命令(數(shù)據(jù))前先對A0進行置1(0),然后再把命令(數(shù)據(jù))的內容送到數(shù)據(jù)總線上。此時,D12的ALE腳未使用,可直接接地。而我們在此處是使用第二種連接方式,命令和數(shù)據(jù)使用不同的地址,地址字節(jié)中僅LSB位具有實際意義。對偶數(shù)地址賦值表示送往D12的是讀/寫數(shù)據(jù),對奇數(shù)地址賦值表示往D12寫入一個命令。這種接法中,D12的ALE與89C52的ALE相連,ALE的時序關系與89C52跟一般存儲器相連相同,在下降沿對地址鎖存。此時,A0不使用,應該接高電平。89C52的P0口直接與D12的數(shù)據(jù)總線相連,作為并行數(shù)據(jù)和命令傳輸通道。它的時鐘可以直接從D12的CLKOUT接入,而不需要外接晶振。

          圖2 硬件框圖

          單片機采集外界模擬量,轉換成數(shù)字量,再經(jīng)過PDIUSBD12通過USB接口傳送給PC機。這其中主要的難點是89C52和PDIUSBD12之間的通信問題,所以我們把主要精力集中在USB協(xié)議這一部分上,重點調通它們之間的通信。

          4 軟 件 設 計

          4.1設計[3][4]

          USB單片機固件程序通常由三部分組成:第一、初始化單片機和所有的外圍電路(包括PDIUSBD12);第二、主循環(huán)部分:這部分是可中斷的;第三、中斷服務程序,可以立即執(zhí)行。根據(jù)USB協(xié)議,任何傳輸都是由主機開始的,這樣單片機作它的前臺工作,等待中斷。主機首先要發(fā)令牌包給USB設備(這里是PDIUSBD12),PDIUSBD12接收到令牌包后就給單片機發(fā)中斷,單片機進入中斷服務程序,首先讀PDIUSBD12的中斷寄存器,判斷 USB令牌包的類型,然后執(zhí)行相應的操作,因此USB單片機程序主要就是中斷服務程序的編寫。在 USB單片機程序中要完成對各種令牌包的響應,其中比較難處理的是SETUP包,主要是端口0的編程。

          單片機與PDIUSBD12的通信主要是靠單片機給PDIUSBD12發(fā)命令和數(shù)據(jù)來實現(xiàn)的。 PDIUSBD12的命令字分為三種:初始化命令字、數(shù)據(jù)流命令字和通用命令字。PDIUSBD12給出了各種命令的代碼和地址。單片機先給PDIUSBD12的命令地址發(fā)命令,根據(jù)不同命令的要求再發(fā)送或讀出不同的數(shù)據(jù)。因此,可以將每種命令做成函數(shù),用函數(shù)實現(xiàn)各個命令,以后直接調用函數(shù)即可。

          在編寫USB的單片機固件程序時,需要注意:

          單片機的中斷應設置為電平觸發(fā);中斷后一定要讀上次傳輸狀態(tài)寄存器(命令40-45H),以清除中斷寄存器中的中斷標志。這樣PDIUSBD12的中斷輸出才能變回高電平,這一點非常重要。

          4.2程序[4]

          盡管系統(tǒng)已經(jīng)提供了很多標準接口函數(shù),但編制程序仍然是USB開發(fā)中最困難的一件事情,通常采用Windows DDK來實現(xiàn)。目前有許多第三方軟件廠商提供了各種各樣的生成工具,像 Compuware的driver works,Blue Waters的Driver Wizard等,它們能夠很容易地在幾分鐘之內生成高質量的USB 的程序。作為WIN98和WIN2K推薦的一項新技術來說,USB的驅動程序和以往的直接跟硬件打交道的 WIN95的VXD方式的驅動程序不同。它是WDM類型的。

          在調試USB設備時,可使用UsbView程序檢測設備是否能被Windows枚舉并配置,如果成功,還可在該程序中查看設備描述符、配置描述符和端點描述符是否正確,之后可以使用Driver Wizard生成一個通用驅動程序,在Windows提示安裝驅動程序時,選擇Driver Wizard生成的驅動程序。其實Driver Wizard生成的僅是一個Windows控制臺的應用程序,它會調用安裝Driver Wizard時安裝在系統(tǒng)中的通用USB驅動程序。使用該程序就可測試設備是否能夠正確傳輸數(shù)據(jù)以及傳輸速度。該程序也可作為最終產(chǎn)品USB傳輸部分的框架;如果不能滿足要求,也可用WDM重新編制驅動程序,用調試好的USB設備來開發(fā)、調試主機軟件。

          4.3用戶程序

          用戶程序是系統(tǒng)與用戶的接口,它通過通用驅動程序完成對外設的控制和通信。主機用戶程序的編寫使用VC編譯環(huán)境下的API函數(shù)實現(xiàn)。程序中主要用到兩個API函數(shù):CreateFile( )和DeviceIoControl( )。首先查找設備,打開設備的句柄:調用Win32函數(shù)CreatFile( )得到設備驅動程序的句柄。然后進行讀寫和控制操作:調用Win32函數(shù)DeviceIoControl()通過得到的句柄把IOControlCode 和相關的輸入輸出緩沖區(qū)提交給驅動程序。最后關閉設備句柄:當退出用戶程序時,用CloseHandle ( )關閉設備。

          4.4軟件設計框圖及主要程序框架

          圖3 固件結構和數(shù)據(jù)流向

          這里只給出主循環(huán)程序和中斷程序的主要框架:

          void main (void)

          {

          init_port ( ); //初始化I/O口

          init_timer0 ( ); //初始化定時器0

          init_special_interrupts ( ); //設置中斷

          reconnect_USB( ); //重新連接USB

          while ( TRUE )

          {

          if (bEPPflags.bits.timer)

          //定時器溢出,檢測按鍵狀態(tài)

          if (bEPPflags.bits.bus_reset)

          //總線復位處理

          if (bEPPflags.bits.suspend)

          //掛起改變處理

          {

          if(D12SUSPD == 1)

          //掛起處理

          }

          if(bEPPflags.bits.setup_packet)

          //Setup包處理

          {

          control_handler( );

          //調用請求處理子程序

          }

          }

          }

          void control_handler( ) //請求處理子程序

          {

          if (type == USB_STANDARD_REQUEST) //調用標準請求

          ( *StandardDeviceRequest [ req ] ) ( );

          }

          5 總 結

          此數(shù)據(jù)采集系統(tǒng)已經(jīng)應用于一種自主開發(fā)的近紅外光譜儀中,它滿足此近紅外光譜儀采集速度快的要求。以上方案為中小型智能儀器和計算機的高速USB連接提供了一種參考。

          參 考 文 獻:

          [1]邊海龍,賈少華. USB2.0設備的設計與開發(fā)[M].北京:人民郵電出版社,2004年1月.

          [2]陳軍波,劉海華,陳亞光.USB接口芯片PDIUSBD12及應用[J].國外電子元器件,2002第11期.

          [3]程 讕,楊子杰. 基于PDIUSBD12的USB設備的固件程序開發(fā)[J]. 計算機應用,2004年第7期.

          [4]周立功. PDIUSBD12固件編程與驅動開發(fā)[M].北京:北京航空航天大學出版社.2003年2月.



          評論


          相關推薦

          技術專區(qū)

          關閉