USB接口信號發生器_第1頁
USB接口信號發生器_第2頁
USB接口信號發生器_第3頁
USB接口信號發生器_第4頁
USB接口信號發生器_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE34天津工程師范學院2009屆本科生畢業設計目錄TOC\o"1-4"\u1引言 31.1課題背景及意義 31.2課題的主要任務和技術指標 42系統總體設計和工作原理 52.1方案設計與論證 52.2工作原理 52.2.1USB主機 52.2.2USB設備 62.3USB接口芯片 72.3.1USB主控制器芯片 82.3.2USB集線器芯片 82.3.3USB功能設備芯片 82.4USB信號 92.4.1USB信號的發送 93系統硬件電路的設計 113.1主控制器——單片機AN2131QC的特點 113.1.1芯片結構 113.2系統硬件模塊電路的設計 133.2.1電路總體方框圖 133.2.2USB接口單元 143.2.3DDFS控制單元 143.2.4波形輸出單元 154軟件的設計與實現 174.1軟件功能及作用 174.1.1主函數 174.2上位機程序設計 174.2.2上位機程序功能和界面 184.3設備驅動程序 194.3.1固件程序 194.3.2波形功能程序 19結論 21參考文獻 22附錄1:原理圖 23附錄2:程序(主函數部分) 26致謝 35當今的計算機外部設備,都在追求高速度和高通用性。為了滿足用戶的需求,以Intel為首的七家公司于1994年推出了USB(UniversalSerialBus,通用串行總線)總線協議,專用于低、中速的計算機外設。目前,USB端口已成為了微機主板的標準端口;而在不久的將來,所有的微機外設,包括鍵盤、鼠標、顯示器、打印機、數字相機、掃描儀和游戲柄等等,都將通過USB與主機相連。這種連接較以往普通并口和串口的連接而言,主要的優點是速度高、功耗低、支持即插即用(Plug&Play)和維護方便。1.1課題背景及意義在USB產生之前,外設與PC機的通信主要是通過PC機主板所提供的各種接口來實現的,如ISA接口,PCI接口,PS/2接口、串行接口、并行接口等。這些老式的接口最初是由IBM公司在20世紀80年代早期設計提出的,存在很多缺陷。1.它們是非共享式接口。只支持單個外設的連接,即在同一時刻一個接口只能連接一個外設;而當前PC機接口的數量是有限的,根本無法滿足大量外設連接的需要。這時,PC機的可用接口數就顯得越來越緊張了。2.這些接口的體積龐大。它們幾乎占用了PC機主板面積的一半,而硬件廠商不可能無限制地增加主板的面積來擴充這些老式的接口。另外,大體積的接口不利于PC機外設的小型化。3.這些接口的規格不一。當用戶需要把一些外設連接到PC機時,他們不得不面對種類繁多的I/O擴展槽和外部端口,這會使用戶覺得很不方便。4.這些接口采用傳統的I/O模式。外設被映射為CPU的I/O地址空間,并被分配一個指定的IRQ(中斷請求),或是一個DMA通道。這種模式會帶來諸如I/O地址沖突、所指定的IRQ已被別的外設占用等諸多問題。這時用戶需要采用手工的方法來設置一些開關和跳線以重新配置這些設備,有些還必須打開機箱蓋,而且在設置完畢后,用戶必須重新啟動計算機才能使這些新的配置生效。不論對外設的開發者還是使用者來說,這個過程都是相當繁瑣的。為了克服老式接口的上述缺陷,PC機制造商和用戶迫切需要一種新型的外設連接方式。這時USB應運而生,它是一種快速、雙向、同步、廉價,并支持熱插拔功能的串行接口。隨著USB2.0版本的發布,USB越來越流行,它已經成為一個標準接口,目前市場上出售的所有PC機都完全支持USB,而且很多外設只推出了USB版本,如移動硬盤和電子盤等。可以預見,USB的應用肯定會越來越廣泛,其傳輸速率也越來越高。1.2課題的主要任務和技術指標本系統采用直接數字頻率合成(DDFS)技術,實時將USB接收到的數據轉換成各種頻率的波形輸出,所使用的USB傳輸方式為全速同步傳輸。可以輸出5種波形:正鋸齒波、反鋸齒波、三角波、方波和正弦波。本課題的主要工作任務為:1.采用USB總線或外部+5V電源供電,并具有供電指示燈。2.采用TLC7524完成波形數據的DA轉換,并具有DA轉換指示燈。3.采用DAC0832完成波形幅度峰峰值的調節,范圍是0V~+5V,步進值為20mV.4.采用DDFS技術完成波形頻率調節,范圍是0.5Hz~15999.5Hz,步進值為0.5Hz。5.采用全速同步端點8、9、10米傳輸系統控制命令和波形數據。6.可讀取該USB設備的各種描述符和USB總線的當前幀號。2.1方案設計與論證方案1:采用模擬分立元件或單片機控制函數發生器MAX8038,可產生正弦波、方波、三角波,通過外部元件可改變輸出頻率,但采用模擬器件由于元件分散性太大,即使用單片機控制函數發生器,參數也與外部元件有關,外接的電阻電容對參數影響很大,應而產生的頻率穩定度較差、精度低、抗干擾能力低、成本高而且靈活性較差,不能實現任意波形及波形運算輸出等智能化的功能。方案2:采用傳統的直接頻率合成器。這種方法能快速實現頻率變換,具有低相位噪聲以及所有方法中最高的工作頻率。但由于采用大量的倍頻、分頻、混頻和濾波環節,導致直接頻率合成器的結構復雜,體積龐大,成本高,難以達到較高的頻譜純度。更重要的是,這種方法只能實現正弦波,或者進行積分,微分等方法實現方波,三角波等標準波形,而對于我們所要求的任意波形卻無法實現。方案3:USB接口波形發生器。采用直接頻率合成技術,它可以實時將USB接收到的數據轉換成各種頻率的波形輸出,所使用的USB傳輸方式為全速同步傳輸。這種方法產生的頻率穩定度較好,精度高,抗干擾能力強,成本低且靈活性好。綜合考慮各種因素,選擇方案3。2.2工作原理2.2.1USB主機在終端用戶看來,USB系統就是外設通過一根USB電纜和PC機連接起來。USB在外設和PC機之間提供通信服務,通常把外設稱為USB設備,把其所連接的PC機稱為USB主機,且把指向USB主機的數據傳輸稱為上行通信,把指向USB設備的傳輸稱為下行通信。在USB主機內部含有USB主控制器,負責完成主機和USB設備之間的物理數據傳輸。目前,USB主控制器分為兩種類型:開放型主控制器(OHC)和通用性主控制器(UHC),這兩種主控制器執行相同的操作,只是在處理方式上稍有差異。主控制器內部包含一個USB根集線器,用于給USB系統提供一個或多個連接點(端口),現在PC機箱后面的那兩個USB端口就是由集線器提供的。進入Windows操作系統的“設備管理器”,并選擇“按類型查看設備”,其中的“通用串行總線控制器”項列出了PC機所使用USB主控器和根集線器。USB主機中還有客戶軟件:USB設備驅動程序和界面應用程序,用于和指定的USB設備進行通信,以實現其特殊功能,如傳輸文件、播放聲音等。客戶軟件是專用的,根據具體設備的不同而不同,且一般需開發人員自行編寫。2.2.2USB設備按USB設備功能的不同,可以把其分為兩大類:集線器和功能設備。其中,集線器為USB系統提供額外的連接點,它使得一個USB端口可以連接多個設備;功能設備為主機提供額外的功能,如USB鍵盤、數碼相機等。1.集線器集線器(Hub)在USB結構中是一個關鍵,它提供了附加的USB節點,這些節點被稱為端口。Hub可以檢測出每一個下行端口的狀態,并且可以給下端的設備提供電源。圖2-1是一個典型的Hub。圖2-1USB集線器示意圖對于USB2.0集線器,其上行端口既可采用高速傳輸速率又可采用全速傳輸速率,下行端口支持高速、全速和低速USB設備的連接,也就是說,它可以做為高速、全速和低速集線器。當做為高速集線器時(上行端口采用高速傳輸),不論其下行端口連接的是高速、全速還是低速USB設備,其上行通信都是高速的,這樣可以減少低速和全速傳輸對高速USB總線帶寬造成的影響。對于USB1.1集線器,其上行端口采用全速傳輸速率,下行端口支持全速和低速USB設備的連接,即它可以做為全速和低速集線器。2.功能設備功能設備可以和USB主機進行數據和控制信息的交互,并為主機提供額外的功能。在每個功能設備內部都含有描述其功能和資源需求的配置,如USB帶寬、接口種類等。在它們能夠被使用前,主機必須對其進行配置。功能設備通常是一個獨立的外圍設備,具有單一的功能。但有的USB設備實現了兩個或多個不同的功能,如具有鍵盤和音效功能的傳真機,這時稱其為合成設備。對主機而言,合成設備是一個單獨的USB設備,其只有一個設備地址。對某些特殊應用,有時需要將一個或多個功能設備嵌入到一個集線器中,并通過一根USB電纜進行連接,這被稱為復合設備,如集成了集線器的USB鍵盤。對主機而言,一個復合設備就是一個永遠連接有一個或多個USB功能設備的集線器。3.USB的連接USB物理連接是指一個集線器下行端口和另一個集線器上行端口或USB功能設備之間通過USB電纜的連接。USB高速(480Mb/s)和全速(12Mb/s)傳輸需要使用外殼屏蔽,而且數據線雙絞的USB電纜;而低速(1.5Mb/s)電纜不需要屏蔽和雙絞。所有USB電纜都是支持熱插拔的,其插頭上USB圖標的觸角指明了正確連接的方向。USB采用層次星型的拓撲連接結構。通過USB集線器,一臺含有一個USB主控制器的PC機最多可以連接126個外設。=1\*GB3①連接器USB定義了兩種類型的連接器:A系列和B系列,A系列連接器包括A型插頭和A型插座,它們相互匹配;A型插座總是作為USB主機或集線器的下行端口,所以A型插頭總是指向上行USB主機。B系列連接器也包括B型插頭和B型插座,它們相互匹配;B型插座總是作為USB設備或集線器的上行端口,所以B型插頭總是指向下行USB設備或集線器。=2\*GB3②電纜USB電纜線內部含有4根導線:VBUS、GND、D+和D-。其中,VBUS是+5V電源線,GND是地線,D+和D-是差分數據線對。在USB連接器上也有4個管腳,分別對應這四根導線,而且電源管腳比數據管腳長,以保證電源信號先于數據信號到達USB設備。這些管腳都有編號,其對應導線的顏色也不相同。見表2-1:表2-1USB連接器的四個管腳管腳編號導線名稱導線顏色管腳編號導線名稱導線顏色1VBUS紅3D+綠2D-白4GND黑為了保證數據能在USB電纜中無錯誤的傳輸,USB規范規定全速/高速電纜必須具有外層屏蔽和銅漏線,且差分數據線必須雙絞,對低速電纜來說,其傳輸速率較低,所以不需要以上特殊處理,且其一般不含B型插頭,而需要與USB設備永久連接。低速電纜不能傳輸高速和全速信號,只是可以使用全速/高速電纜來傳輸低速信號,只是要注意其長度不能超過低速電纜所允許的最大長度。另外,全速/高速電纜既可以是束縛電纜也可以是分離電纜,而低速電纜必須是束縛電纜。2.3USB接口芯片USB接口芯片(或稱USB芯片)是一個集成了USB協議的微處理器,它能自動對各種USB事件做出響應,以處理USB總線上的數據傳輸。按其功能,可以分為USB主控制器芯片、USB集線器芯片和USB功能設備芯片。所有的主機和設備上都至少含有一塊實現其功能的USB芯片。2.3.1USB主控制器芯片USB主控制器芯片負責實現主機和USB設備間的物理數據傳輸,它是構成USB主機的必須部件。Intel公司在1996年2月首次推出了支持USB1.0功能的440Hx和440VxPCI芯片組,其實現USB主控制器接口的模塊為82371SB。它標志著USB主控制器芯片的正式誕生,但它是集成在PCI控制器中的。世界上第一塊單片USB2.0主控制器是2001年6月NEC公司發布的Upd720100,它具有5個USB端口,并支持PCI總線。隨著嵌入式技術的飛速發展,USB主機已不再局限于單純的PC機,其可以是含有USB主控制器的任何設備,如PDA,MP3播放機等2.3.2USB集線器芯片USB集線器芯片負責將一個USB上行端口轉化為多個下行端口,它是構成USB集線器的必需部件。也有一些集線器芯片提供了驅動外圍電路的I/O口,可構成USB復合設備,如Intel公司在1996年11月推出的世界上第一塊USB集成芯片;8x930Hx,就是一塊提供32個外部I/O口的USB1.0集線器芯片。世界上第一塊USB2.0集線器芯片是NEC公司于2001年8月發布的uPD720110,它支持4個下行端口。2.3.3USB功能設備芯片USB功能設備芯片負責實現功能設備和USB主機間的物理數據傳輸,它是構成USB功能設備的必需部件。按其所支持的傳輸速率,可以分為低速設備芯片、全速設備芯片和高速設備芯片。通常這些USB芯片都含有多個驅動外圍電路的I/O口,以實現USB設備的特殊功能。一般來說,USB功能設備的組成結構如下:1.CPU:負責執行存儲在芯片程序存儲的代碼,以控制整個USB芯片的活動。CPU可以是通用的微控制器,如8051單片機;也可以是專用的CPU,如RISC。2.程序存儲器:負責保存CPU執行的程序代碼(或稱固件)。類型通常為ROM、EPROM、EEPROM、FlashEPROM、RAM中的一種,存儲容量一般在幾千字節左右。3.數據存儲器:負責保護芯片固件執行時產生臨時數據。其類型通常為RAM,存儲容量一般在1KB以下。4.寄存器:用于存儲有特殊功能的、臨時性的數據。按其功能,可分為狀態寄存器、數據寄存器和控制寄存器。訪問速度通常比數據存儲器快,但數量較少,一般為幾十個。5.USB接口:負責發送和接收USB總線上的數據,完成位填充、NRZI(反向非歸零)編解碼等工作,也可以稱為(串行接口引擎)。6.USB緩沖器:負責存儲在USB總線上發送和接收的USB數據,可分為發送緩沖器和接收緩沖器。它們可以是數據存儲器的一部分,也可以是單獨的一塊存儲器,如FIFO等。7.外部I/O:每種USB功能設備芯片都含有驅動其外圍電路的I/O口,如數據總線、地址總線、I2C總線、SPI接口等。8.其他部件:有些USB功能設備芯片中還含有諸如定時器、看門狗、UART等特殊功能模塊。世界上第一塊支持USB1.0的功能設備芯片是Intel公司在1996年11月推出的8x930Ax,采用增強型8051CPU,并提供32個外部I/O口。Cypress公司在2000年11月推出的CY7C68013是世界上第一塊USB2.0功能設備芯片,其采用增強型8051CPU,最多可提供40個外部I/O口。2.4USB信號數據在USB總線上實際傳輸時,使用的是NRZI編碼的差分信號,這種USB信號有利于保證數據的完整性和消除噪聲干擾。USB根據數據的傳輸方向和傳輸類型,對USB信號在D+和D-線上的電壓(或電壓差)提出了具體要求,以完成主機和USB設備間的物理通信。2.4.1USB信號的發送USB使用差分驅動器把USB信號發送到總線上,但具體實現方式根據USB信號傳輸速率的不同而不同。但是,差分驅動器必須支持三態(高電平、低電平和高阻),以滿足USB雙向數據和半雙工數據傳輸的需要。1.低速/全速信號的發送對于低速/全速傳輸,其D+和D-線上輸出低電位的電壓必須小于VOL(max):0.3V;輸出高電位時的電壓必須大于VOH(min):2.8V。為盡量減少信號失真,高低電位之間的輸出擺動應被很好平衡,這要求在差分驅動器中使用擺動比率控制機制。表2-2列出了低速/全速信號的輸出電平。其中,交叉電平表示高低電位交叉點的電壓值;SE1狀態表示D+和D-線上的電壓都大于VOSE1(min):0.8V,它不是差分驅動器自動產生的。低速USB設備在連接時一般使用束縛型低速電纜,它不需要外層屏蔽和數據雙絞,最大傳輸延時為18ns。在低速電纜與USB設備的連接處,其D+和D-線上通常表2-2低速/全速信號的輸出電平狀態符號最小值/V最大值/V低電位VOL0.00.3高電位VOH2.83.6SE1VOSE10.8交叉電平VCRS1.32.0各需要一個200pF~450pF的電容接地。全速USB設備在連接時必須使用具有外層屏蔽和數據線雙絞的全速電纜,其差分特征阻抗為90(1±15%),共模阻抗為30(1±30%),單向最大傳輸延時為26ns。通常,全速差分驅動器的輸出阻抗為28Ω~44Ω;但當它是高速設備的一部分時,其輸出阻抗必須大于40.5Ω而小于49.5Ω。2.高速信號的發送對于高速傳輸,其D+和D-線上的輸出低電位時的電壓(VHSOL)必須為0V±10mV;輸出高電位時的電壓(VHSOH)必須為400(1±10%)mV。但實質上,高速差分驅動器使用的是差分電壓。高速USB設備在連接時必須使用具有外層屏蔽和數據線雙絞的高速電纜,其差分特征阻抗為90(1±15%),共模阻抗為30(1±30%),單向最大傳輸延時為26ns。通常,高速差分驅動器的輸出阻抗為90(1±10%)Ω;但當它工作在全速和低速一部分時,其輸出阻抗為45(1±10%)Ω。3.1主控制器——單片機AN2131QC的特點EZ-USB系列USB接口芯片是Anchor公司最早的產品(從1999年開始Anchor成為Cypress公司的一個銷售部門),它支持12Mb/s的全速傳輸,可使用4種USB傳輸模式:控制傳輸、中斷傳輸、塊傳輸和同步傳輸,完成兼容USB1.1協議。該系列芯片的典型應用是MP3播放機、掃描儀、打印機和數碼相機等設備。3.1.1芯片結構EZ-USB系列芯片的顯著特點是固件升級容易,它是在主機上而不是在芯片內部存儲固件。當連接并接通電源時,設備驅動程序會發送這些固件到芯片的RAM中,所以在升級固件時,不需替換芯片或使用特殊的程序。這樣做的不利之處是增加了固件代碼和設備驅動的復雜性,但Cypress公司為用戶提供了很多范例代碼和一個可用的設備驅動程序,并為該系列芯片提供了開發裝置AN2131-DK001,以縮短產品的開發周期。EZ-USB為塊傳輸、控制傳輸和中斷傳輸提供了16個端點:EP0IN~EP7IN和EP0OUT~EP7OUT,它們的數據長度均為64字節;為同步傳輸提供了16個端點:EP8IN~EP15IN和EP8OUT~EP15OUT,它們的最大數據長度為1024字節。其中,EP0用于控制端點,EP1~EP7均可用于塊端點,EP1IN~EP7IN用于中斷端點,EP8~EP15均為同步端點。 EZ-USB系列芯片的上述特性決定了它具有一種非常獨特的結構,以80管腳的AN2131QC為例,其主要包括USB收發器、AnchorCore、增強型8051、8KB的片內RAM、2KB的FIFO存儲器、I/O口、數據總線、地址總線和I2C接口。圖3-1是EZ-USB系列芯片的結構1.AnchorCore在EZ-USB系列芯片內部有一個AnchorCore,它由串行接口引擎(SIE)和USB接口兩部分組成。SIE負責和USB收發器、USB接口進行數據交換,以完成串行數據的編解碼、差錯控制、位填充等與USB協議有關的功能。這樣,客戶在編寫8051固件代碼時就不用過多考慮USB的傳輸協議了。當EZ-USB上電時,先由AnchorCore完成USB設備的列舉,它把8051的固件代碼下載至芯片內部的RAM中,并啟動8051。之后,8051運行該固件程序,并進行USB設備的重列舉。完成后,用戶就可以使用該設備了。I/O端口I/O端口外部存儲器+5VD+D-GNDUSB連接器USB收發器串行接口引擎(SIE)USB接口程序和數據存儲器通用微處理器(增強型8051)地址總線數據總線EZ-USB圖3-1EZ-USB系列芯片的結構2.增強型8051EZ-USB系列芯片采用增強型8051內核,其性能是標準8051的5倍,負責控制芯片的外圍連接,以使它們可以和AnchorCore完成USB數據交換。簡單的說,可以認為EZ-USB是一個具有USB功能的增強型8051單片機,用戶必須編寫8051固件程序對它進行控制,其指令集和標準8051完全兼容。增強型8051內核給用戶開發帶來了很大的方便,如果熟悉8051,那么就很容易掌握EZ-USB,即便以前不了解8051,用戶也可以很容易得到其相關資料和編程工具。為了進一步節省產品的開發周期,還可以使用Keil公司提供的C編譯器C51,其比原有匯編語言要簡單得多,不足之處是它的代碼冗余度較高,不如匯編語言精簡。3.RAM EZ-USB系列芯片內部具有4KB或8KB的RAM,它們兼做程序存儲器和數據存儲器,增強型8051的固件代碼就存儲在該區域中。RAM在斷電后不能保存數據,同樣,EZ-USB斷電后存儲在RAM中的固件也會消失。為了解決這個問題,EZ-USB在每一次上電時,將自動從主機或外部的EEPROM中自動加載8051固件代碼。用戶也可以自己加載8051固件代碼,并可以多次加載、隨時加載。這給開發人員帶來了極大的方便,他們可以隨時更改或升級固件代碼,而不需使用額外的編程器和其它的開發裝置。這種機制的不利之處是延長了USB設備的列舉時間,增加了驅動程序的復雜性。4.其它組件EZ-USB系列芯片內部還包含I2C總線,以便其能從外部EEPROM中下載8051的固件代碼。如果芯片支持USB同步輸出,其內部還會包含有容量為2KB的FIFO緩沖區,該系列芯片采用3.3V供電,且可使用USB總線電源,它們具有44腳、48腳和80腳三種封裝形式,最多可支持24個I/O口,16根地址總線和8根數據總線,芯片最小面積只有1英寸25.應用范圍EZ-USB系列芯片的典型應用是MP3播放機、掃描儀、打印機和數碼相機等設備。為了滿足不同用戶的需要,Cypress公司為EZ-USB提供了多種不同的類型芯片,如設備只需使用USB塊傳輸且需8位數據總線和較高數據傳輸速率,就可選用AN2131SC。圖3-2是80腳AN2131QC的封裝形式,它是該系列芯片中引腳最多、功能最強的一款,其它型號都是它的簡化。圖3-280腳AN2131QC的封裝形式3.2系統硬件模塊電路的設計3.2.1電路總體方框圖單片機串行通信可編程邏輯器件單片機串行通信可編程邏輯器件列隊緩沖器D/A轉換運算放大示波器PC機圖3-3硬件原理框圖3.2.2USB接口單元USB接口單元的主要實現芯片為Cypress公司的AN2131QC,負責完成硬件系統和PC機之間的數據傳輸。其中,AN2131QC的DISCON#和USBD+管腳間接有1.5K電阻,以選擇全速USB傳輸:PC1用于控制TLC7524的工作狀態,以決定是否輸出波形;數據總線D0~D7負責將主機發出的數據輸出到IDT7202,以供TLC7524進行DA轉換;PC4~PC7用于向EPM7064發出DDFS頻率控制字,以選擇波形輸出的頻率;PB0~PB7用于向DAC0832提供數據,以控制波形輸出的幅度;PA6和PA7用于控制發光二極管LED1與LED2的點亮和熄滅,以指示硬件系統是否正在工作。圖3-4是USB接口原理圖。圖3-4USB接口單元部分3.2.3DDFS控制單元DDFS控制單元的主要芯片為Altera公司的EPM7064,負責控制系統輸出波型的頻率。圖3-5是DDFS控制單元。圖3-5DDFS控制單元其中,EPM7064的CLOCK和DATA管腳負責以串行數據方式接收AN2131QC發出的頻率控制字(設為M),共15位,高位在前,低位在后。因系統波形采樣點數為64點,所以最終輸出波形的頻率為:=0.48828125其中,為EPM7064所選用的頻率,本例為4.096MHz。因此系統輸出的最低頻率為0.488Hz(約0.5Hz),最高頻率為15999.5Hz,頻率分辨率為0.5Hz,相對誤差為2.4%。表3-1列出了幾種典型頻率所對應的控制字。表3-1典型輸出頻率所對應的控制字控制字輸出頻率/Hz控制字(M)輸出頻率/Hz10.48840962000157.3281924000255124.51638480002048124.532767159波形輸出單元波形輸出單元的主要實現芯片為TI公司的TLC7524和美國國家半導體公司的DAC0832,它們的輸出形式均為電流。為了得到電壓信號,使用了運算放大器OP07和OP27。本系統中,TLC7524的片選信號和DAC寄存器寫選通信號。都與AN2131QC芯片的PC1連接,這時,只要PC1管腳輸出低電平,TLC7524就開始進行DA轉換,并將FIFO存儲器IDT7202輸出的數據直接寫入DAC寄存器,系統輸出的波形也就隨之變化。DAC0832工作于直通方式:即數據允許鎖存信號ILE接高電平,片選信號、數據傳送信號和寫選通信號與均接低電平。這時,DAC0832會實時將AN2131QC芯片PB口的輸出數據轉換成模擬量,以控制TLC7524的參考電壓REF。圖3-6是波形輸出單元。圖3-6波形輸出單元4.1軟件功能及作用AN2131QC芯片的固件程序控制整個硬件系統的運行,并負責處理PC機發來的各種USB請求。本例固件開發所使用的編程語言為德國Keil公司的C51編譯器,集成開發環境為uVision2。固件共包含8個程序文件:main.c、function.c、delayms.a51、dscrptr.a51、jmptable.a51、testheader.h、testregs.inc。其中,頭文件testheader.h、testregs.inc對AN2131QC中的各種寄存器進行了定義;testheader.h定義了通用的EZ-USB常量、數據類型和宏;dscrptr.a51定義了系統所使用的各種USB描述符;Delayms.a51中包含了延時1ms子程序和芯片掛起處理子程序;jmptable.a51文件定義了EZ-USB的INT2中斷跳轉表;main.c是固件運行的主程序文件,負責處理各種USB設備請求;function.c中包含各種功能函數的定義,用于完成系統的主要功能,如處理USB同步傳輸等。4.1.1主函數Main.c是固件運行的主程序文件,負責處理主機發出的各種USB設備請求,圖4-1所示是其流程圖。該程序首先初始化所有的內部狀態的變量,然后調用TD_Init(以前綴“TD_”開頭的函數均在function.c文件中定義)用戶函數進行初始化,并打開中斷,最后固件程序開始列舉USB設備,直至在端點0上接收到SETUP令牌包時為止。一旦接收到SETUP令牌包,并將重復執行下面的任務分配過程。1.調用函數TD_Poll,以完成用戶指定的任務。2.判斷是否有USB設備請求(SETUP令牌包)。如果有,則調用ParseControlTrans-fer函數進行相應的處理;如果沒有,則繼續向下執行。3.檢測USB總線是否空閑。如果空閑,則調用程序TD_Suspend返回值后,它將調用EZ-USB_Suap,以使8051處于空閑狀態。這時,只有USB總線活動或芯片WAKEUP#管腳活動,才可能將8051重新激活。4.8051被激活后,固件程序將首先調用EZUSB_Resume函數,以使8051從空閑狀態中恢復出來,然后在調用TD_Resume函數來處理用戶指令。4.2上位機程序設計VisualC++是一種功能強大、簡單易學的程序設計語言。它不但保留了原先Basic語言的全部功能,而且還增加了面向對象程序設計功能。不需要設計者編寫大量的代碼去描述界面外觀和位置,只要把預先建立的控件直接應用到屏幕上,簡上電復位上電復位初始化狀態變量初始化狀態變量調用TD_Init()調用TD_Init()使能中斷使能中斷是否接收到SETUP包N延時1S、重列舉是否接收到SETUP包N延時1S、重列舉YY調用TD_PO11()調用TD_PO11()是否接收到SETUP包YY是否接收到SETUP包YY執行設備要求執行設備要求NNNUSB總線空閑?NUSB總線空閑?標志是否有效YY調用TD_Suspend()調用TD_Suspend()FALSETRUETRUE掛起處理器掛起處理器調用TD_Resume()調用TD_Resume()圖4-1系統流程圖化了設計過程,應用簡單信息交互方便。它不僅可以方便快捷地編制適用于數據處理、多媒體等方面的程序,而且利用ActiveX控件MSComm還能十分方便地開發出使用計算機串口的計算機通信程序。利用VC進行Windows應用程序開發的一個顯著特點就是應用程序與操作系統的聯系非常密切。4.2.2上位機程序功能和界面上位機部分的功能主要是完成人機交互,實現上位機對檢測儀的控制;將界面中的人機交互動作轉變為機器可以識別的二進制數據,并通過串行接口發出控制指令,并承擔將單片機上串的數據處理后進行顯示等任務,實現檢測信息的交互。上位機部分采用VisualC++編寫程序完成界面設計,界面內有以下幾個功能區域可供操作者點擊:坐標區、坐標指針實時區、station區(LINE、SINE、FREE功能鍵)、頻率振幅顯示區、編輯提示區。圖4-2為其上位機界面。上位機VisualC++編寫界面中使用了文本控件、命令按紐控件、標題控件、SSTAB控件、MSCom控件等,對其屬性進行了相關設置。使用了VisualC++中的對話*.Show、*.Hide和MSComm1_OnComm等系統函數。在模塊級范圍內聲明了一個公共數組作為數據傳遞和存儲使用,在子模塊中使用局域變量。這樣的設計使各個模塊中數值可以直接傳遞,且不會造成過多的系統消耗,使全局和模塊直接的關系直觀,邏輯清晰。圖4-2上位機界面上位機部分采用VisualC++編寫程序完成界面設計,界面內有以下幾個功能區域可供操作者點擊:坐標區、坐標指針實時區、station區(LINE、SINE、FREE功能鍵)、頻率振幅顯示區、編輯提示區。4.3設備驅動程序USB設備驅動的組要功能是是WIN32應用程序能正確訪問本波形發生器的硬件設備。本系統中將AN2131QC的固件代碼存放在主機上,當系統上電或USB連接時,再將它下載至芯片的RAM中,由增強型8051執行。這需要使用兩個驅動程序:一個是loaderwave.sys,專用于下載芯片的固件程序;另一usbwave.sys,用于實現本波形發生器的具體功能。4.3.1固件程序loaderwave.sys的主要任務是將固件程序下載至AN2131QC芯片的RAM中,由增強型8051執行。loaderwave.sys中不包含分發例程,且電源管理例程和即插即用例程由同一函數TestPnpIrp來處理,其主要實現文件有兩個:TestInit.c和TestPnp.c。另外,還有兩個C文件需要參加編譯:loader.c和Tagtest.h,它們都是AN2131QC芯片固件程序。其中,loader.c實現了將數據下載至AN2131QC芯片RAM中的供應商自定義請求,由Cypress公司提供;Tagtest.c為本系統所使用的芯片固件。為將KeilC51語言編譯連接所得到的Intel十六進制記錄(.hex文件)轉換為C代碼(.C文件),需使用Cypress公司提供的hex2c工具,它是一個Win32控制臺應用程序,用法為hex2c<intel_hexfile_name><c_filename>[varname]。其中,參數intel_hexfile_name指明輸入文件名,即由Keil工具建立的.hex文件,本例中為Tagtest.hex;參數c_filename指明輸出的C文件名,本例中為Tagtest.c。4.3.2波形功能程序usbwave.sys,是本波形發生器運行時所使用的驅動程序,負責完成上位機Win32應用程序和系統硬件設備間的數據傳輸。自開題以來,我常常到圖書館查閱相關的書籍,期刊,通過互聯網查詢有關USB工程開發的相關知識。并不時向這方面理論掌握扎實和實踐經驗豐富的老師和同學請教學習,請求指導解決課題進行中遇到的種種問題,直到徹底弄懂為止。此課題,基于USB接口波形發生器設計:主要針對AN2131QC單片機的實驗和開發,通過對AN2131QC單片機的學習,來了解USB的工程開發,同時通過畫電路PCB的制作,掌握制版的一些知識。在軟件編程中,對CPLD的編程是一個難點,需要對CPLD的管腳定義有所了解。畢業設計過程中主要進行了AN2131QC單片機電路的設計,首先確定了設計任務,其次查找資料,研究設計方案,進行方案比較并確定了一個最佳方案,然后就開始設計工作,畫電路圖和PCB板,焊接電路并調試。設計包括硬件的設計和軟件的設計,其硬件設計中主要是外圍電路和單片機的結合,使得整個實驗板可以完成多項功能。在這些日子的學習和思考中,我品嘗了“書到用時方恨少”的苦惱,也感受到了學以致用的快樂。通過自己動手進一步發現理論與實際存在這一定的距離,在實施過程中遇到了很多預先沒有想到的困難。在今后的理論學習中要加強與實際動手的聯系,能把先進的理論更快的運用于實際工作中。參考文獻[1]尹勇,王洪成編著單片機開發環境μVision2使用指南2004[2]李英偉編著USB2.0原理與工程開發2007[3]武安河編著Windows2000/XPWDM設備驅動程序開發2005[4]周立功編著USB2.0與OTG規范及開發指南2004[5]蕭世文編著USB2.0硬件設計2002[6]廖濟林編著USB2.0應用系統開發實例精講2006[7]薛園園編著USB應用開發技術大全2007[8]許永和編著健蓮科技改編USB外圍設備設計與應用2002[9]張弘編著USB接口設計2002[10]胡曉軍,張愛成編著USB接口開發技術2005[11]李肇慶廖峰劉建存編著USB接口技術2004[12]劉韜,樓興華編著FPGA數字電子系統設計與開發實例導航2005[13]錢峰編著EZ-USBFX2單片機原理、編程及應用2006[14]許永和編著8051單片機USB接口程序設計2004[15]劉兵編著微型計算機通信與接口技術2008[16]厲榮衛主編微機原理與接口技術2006[17]馬偉編著計算機USB系統原理及其主/從機設計2004[18](美)HydeJohn著USB設計應用實例2003[19]網絡資源:、#include"testheader.h"#defineALLOCATE_EXTERN#include"testregs.h"#include<stdio.h>#define DELAY_COUNT 0x9248 #define min(a,b)(((a)<(b))?(a):(b))#define max(a,b)(((a)>(b))?(a):(b))#defineWRITEDELAY(){charwritedelaydummy=0;}volatileBOOL GotSUD;BOOL Rwuen;BOOL Selfpwr;volatileBOOL Sleep;externcodeDEVICEDSCR DeviceDscr;externcodeCONFIGDSCR ConfigDscr;externcodeSTRINGDSCR StringDscr;voidParseControlTransfer(void);voidTD_Init(void);voidTD_Poll(void);BOOLTD_Resume(void);BOOLTD_Suspend(void);BOOLDR_GetDescriptor(void);BOOLDR_SetConfiguration(void);BOOLDR_GetConfiguration(void);BOOLDR_SetInterface(void);BOOLDR_GetInterface(void);BOOLDR_GetStatus(void);BOOLDR_ClearFeature(void);BOOLDR_SetFeature(void);BOOLDR_VendorCmnd(void);voidUsbDisconnect(BOOLrenum);voidDelay(WORDms);externvoidDelay1ms(void);externvoidEZUSB_Susp(void);voidEZUSB_Resume(void);CONFIGDSCR*GetConfigDscr(BYTEConfigIdx);STRINGDSCR*EZUSB_GetStringDscr(BYTEStrIdx);voidmain(void){ DWORDj=0; Sleep=FALSE; Rwuen=FALSE; Selfpwr=TRUE; GotSUD=FALSE; TD_Init();EUSB=1; EICON|=0x20; USBBAV=USBBAV|1&~bmBREAK; USBIEN|=bmSUDAV|bmSUTOK|bmSUSP|bmURES; EA=1; #ifndefNO_RENUMUsbDisconnect(TRUE);#endifCKCON=(CKCON&(~bmSTRETCH))|FW_STRETCH_VALUE; while(TRUE) { if(GotSUD) { ParseControlTransfer(); GotSUD=FALSE; } if(Sleep) { if(TD_Suspend()) { Sleep=FALSE; do { EZUSB_Susp(); }while(!Rwuen&&EZUSB_EXTWAKEUP()); EZUSB_Resume(); TD_Resume(); } } TD_Poll(); }}voidParseControlTransfer(void){void *dscr_ptr; DWORD i; switch(SETUPDAT[1]) { caseSC_GET_DESCRIPTOR: if(DR_GetDescriptor()) switch(SETUPDAT[3]) { caseGD_DEVICE: SUDPTRH=MSB(&DeviceDscr); SUDPTRL=LSB(&DeviceDscr); break; caseGD_CONFIGURATION: if(dscr_ptr=(void*)GetConfigDscr(SETUPDAT[2])) { SUDPTRH=MSB(dscr_ptr); SUDPTRL=LSB(dscr_ptr); } else EZUSB_STALL_EP0(); break; caseGD_STRING: if(dscr_ptr=(void*)EZUSB_GetStringDscr(SETUPDAT[2])) { STRINGDSCR*sdp; BYTElen; sdp=dscr_ptr; len=sdp->length; if(len>SETUPDAT[6]) len=SETUPDAT[6]; while(len) { for(i=0;i<min(len,64);i++) *(IN0BUF+i)=*((BYTExdata*)sdp+i); EZUSB_SET_EP_BYTES(IN0BUF_ID,min(len,64)); len-=min(len,64); while(EP0CS&0x04) ; } EZUSB_SET_EP_BYTES(IN0BUF_ID,0); EP0CS=bmHS; } else EZUSB_STALL_EP0(); break; default: EZUSB_STALL_EP0(); } break; caseSC_GET_INTERFACE: DR_GetInterface(); break; caseSC_SET_INTERFACE: DR_SetInterface(); break; caseSC_SET_CONFIGURATION: DR_SetConfiguration(); break; caseSC_GET_CONFIGURATION: DR_GetConfiguration(); break; caseSC_GET_STATUS: if(DR_GetStatus()) switch(SETUPDAT[0]) { caseGS_DEVICE: IN0BUF[0]=((BYTE)Rwuen<<1)|(BYTE)Selfpwr; IN0BUF[1]=0; EZUSB_SET_EP_BYTES(IN0BUF_ID,2); break; caseGS_INTERFACE: IN0BUF[0]=0; IN0BUF[1]=0; EZUSB_SET_EP_BYTES(IN0BUF_ID,2); break; caseGS_ENDPOINT: IN0BUF[0]=EPIO[EPID(SETUPDAT[4])].cntrl&~bmEPBUSY; IN0BUF[1]=0; EZUSB_SET_EP_BYTES(IN0BUF_ID,2); break; default: EZUSB_STALL_EP0(); } break; caseSC_CLEAR_FEATURE: if(DR_ClearFeature()) switch(SETUPDAT[0]) { caseFT_DEVICE: if(SETUPDAT[2]==1) Rwuen=FALSE; else EZUSB_STALL_EP0(); break; caseFT_ENDPOINT: if(SETUPDAT[2]==0){ EZUSB_UNSTALL_EP(EPID(SETUPDAT[4]));EZUSB_RESET_DATA_TOGGLE(SETUPDAT[4]

溫馨提示

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

評論

0/150

提交評論