![基于單片機和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計說明_第1頁](http://file4.renrendoc.com/view/955f89429bccd77f30717eaa20817cf1/955f89429bccd77f30717eaa20817cf11.gif)
![基于單片機和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計說明_第2頁](http://file4.renrendoc.com/view/955f89429bccd77f30717eaa20817cf1/955f89429bccd77f30717eaa20817cf12.gif)
![基于單片機和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計說明_第3頁](http://file4.renrendoc.com/view/955f89429bccd77f30717eaa20817cf1/955f89429bccd77f30717eaa20817cf13.gif)
![基于單片機和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計說明_第4頁](http://file4.renrendoc.com/view/955f89429bccd77f30717eaa20817cf1/955f89429bccd77f30717eaa20817cf14.gif)
![基于單片機和USB接口技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計說明_第5頁](http://file4.renrendoc.com/view/955f89429bccd77f30717eaa20817cf1/955f89429bccd77f30717eaa20817cf15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
YyyyYyyy圖3.8控制端的安處理程序轉(zhuǎn)換從上面的流程圖3.8中可以看出,MCU需要通過選擇控制輸出端點提取建立包的容來決定端點是為滿還是空。如果控制端點為滿,MCU將從緩沖區(qū)讀出容并將其存入存儲區(qū)。之后,它將從存儲區(qū)使主設(shè)備請求生效。如果是一個有效的請求,MCU必須向控制輸出端點發(fā)送應(yīng)答建立命令以重新使能下一個建立階段接下來MCU需要證實控制傳輸是控制讀還是寫,這可以通過讀建立包中bmRequestType的第8位來實現(xiàn)。如果控制傳輸是一個控制讀類型,那就是說器件需要在下一個數(shù)據(jù)階段向主機發(fā)回數(shù)據(jù)包。MCU需要設(shè)置一個標(biāo)志以指示USB設(shè)備現(xiàn)在正處于傳輸模式,即準(zhǔn)備在主機發(fā)送請求時發(fā)送數(shù)據(jù)。如圖3.9所示為控制輸出處理程序。為了說明它,舉一個主機請求的例子叫做“GetDescriptor()”的標(biāo)準(zhǔn)設(shè)備請求。當(dāng)USB器件D12接收到建立包,將產(chǎn)生一個中斷通知MCU,微控制器響應(yīng)中斷,通過讀D12中斷寄存器決定包是發(fā)到控制端點還是普通端點。如果包是送往控制端點,MCU要通過讀D12的最后處理狀態(tài)寄存器進一步確定數(shù)據(jù)是否是一個建立包,第一個包必須是建立包。NONONONONOYesYesYes讀端點處理狀態(tài)清中斷標(biāo)志控制輸入入口發(fā)送狀態(tài)子程序結(jié)束剩下0字節(jié)發(fā)送16個字節(jié)數(shù)據(jù)設(shè)置為發(fā)送狀態(tài)發(fā)送剩下數(shù)據(jù)設(shè)置為等待狀態(tài)態(tài)圖3.9控制輸入處理流程建立階段結(jié)束之后,主機會執(zhí)行數(shù)據(jù)階段。D12等待接收Control_In包,如下圖3.10。NONONONONONONOYesYesYesYesYesYesYes控制輸出入口讀端點處理狀態(tài)清中斷標(biāo)志建立包?接收數(shù)據(jù)出錯讀取斷電數(shù)據(jù)并保對控制輸入端點和控制輸出斷電進行建立數(shù)據(jù)對應(yīng)包設(shè)置等待狀態(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圖3.10控制輸出處理流程MCU首先需要通過讀D12的最后處理狀態(tài)寄存器清零Control_In中斷標(biāo)志位,接著MCU再確認D12處于傳輸模式后進行數(shù)據(jù)包的發(fā)送。由于D12的控制端點只有16字節(jié)FIFO,如果傳輸?shù)拈L度大于16字節(jié),MCU在傳輸階段就必須控制數(shù)據(jù)的數(shù)量。MCU必須檢查要發(fā)送到主機的當(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ā)送,MCU需要發(fā)送一個空的包以指示主機數(shù)據(jù)已經(jīng)發(fā)送完畢。如果建立包為Set-Descriptor()請求,那么建立包中的控制傳輸將指示此包為控制寫類型。在執(zhí)行完Set_Descriptor請求過程后,MCU等待數(shù)據(jù)階段。主機發(fā)送一個Control_Out標(biāo)志,MCU從D12緩沖區(qū)中減去數(shù)據(jù)。流程現(xiàn)在處于Control_Out處理程序的右端。MCU首先確認D12是否處于USB_Receive模式。然后MCU通過檢查選擇控制輸出端點確認緩沖區(qū)是否己滿并將數(shù)據(jù)從緩沖區(qū)讀出。普通端點:端點1和端點2這里定義為普通輸入輸出。普通輸出端點配置為從主機接收數(shù)據(jù)包。當(dāng)MCU從主機接收Generic_Out標(biāo)志(通過讀中斷寄存器識別)時,D12中斷位必須清零。選擇端點將清零Generic_Out緩沖區(qū),接下來MCU需要確認數(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)志是指在主機的一個有效的IN事務(wù)后才發(fā)生的。當(dāng)主機發(fā)出IN事務(wù)而設(shè)備沒有送出數(shù)據(jù)時,是不會產(chǎn)生中斷的3.2.5主循環(huán)MAINLOOP.CMCU一旦上電就需要初始化其所有端口、存儲區(qū)、定時器和中斷服務(wù)程序。之后MCU將重新連接USB,包括將Soft_Connect寄存器設(shè)置為ON。這些過程是很重要的,因為它確保了在MCU準(zhǔn)備好服務(wù)D12之前D12不會進行操作。在主循環(huán)程序中MCU對鍵盤進行輪詢。如果任何一個特定的按鍵被按下,鍵處理命令將執(zhí)行子程序并返回主循環(huán)。增加該子程序的目的僅僅是為了調(diào)試。1ms定時器用于激活該子程序以檢測在評估板上的任何按鍵。當(dāng)輪詢到了檢測建立包時,它確認建立標(biāo)志在之前是否被中斷服務(wù)程序所置位。如果建立標(biāo)志置位,它將向協(xié)議層發(fā)送一個器件請求進行處理。3.2.6驅(qū)動程序開發(fā)工具的介紹WindowsDDKWindowsDDK是Microsoft公司提供的一個開發(fā)Windows驅(qū)動程序的工具,是Microsoft出品的設(shè)備驅(qū)動程序開發(fā)工具包DDK(DeviceDeveloperKit),它有Windows98DDK和Windows2000DDK兩個版本。前者能夠開發(fā)Windows95/98/Me/NT下的VxD,KMD和WDM驅(qū)動程序,后者可以開發(fā)Windows98/Me/NT/2000下的KMD和WDM驅(qū)動程序。利用DDK開發(fā)Windows驅(qū)動程序是一種比較傳統(tǒng)的方法。它要求設(shè)計者必須對Windows的體系結(jié)構(gòu)、設(shè)備驅(qū)動程序的結(jié)構(gòu)、虛擬機管理器(VMM)以與IntelCPU體系結(jié)構(gòu)有深入的了解,而且需要保護模式的匯編語言編程經(jīng)驗。因此,在實際的開發(fā)過程中,DDK一般不常被人們所使用,取而代之的是另外兩種工具:DriverStudio和WinDriverDriverStudio是由Compuware公司提供的驅(qū)動程序開發(fā)工具,簡化了Windows驅(qū)動程序的開發(fā)、調(diào)試和測試,完整的版本是由SoftICE,DriverWorks,DriverNetWorks、VtoolsD,BoundsChecker,TrueTimeDriver,TrueCoverageDriver等工具組成。WinDriver是美國KRFTech公司出品的用于編寫驅(qū)動程序的另一種工具包。它包括代碼生成器WinDriverWizard,WinDriverDebuggingMonitor,WinDriver發(fā)行包和一些公用程序和實例。WinDriver支持ISA,EISA,PCI,Plug&Play和DMA,它能自動地發(fā)現(xiàn)硬件并產(chǎn)生驅(qū)動程序,不需要牽涉到很低層的東西即可在很短的時間里編出驅(qū)動程序。使用WinDriver的優(yōu)點是:開發(fā)者并不需要熟悉任何部操作系統(tǒng)或kernelprogramming或DDK與任何驅(qū)動程式。WinDriver同時允許開發(fā)者能在自己所熟悉的開發(fā)環(huán)境下,利用使用者模式(UserMode)來開發(fā)出所需的驅(qū)動程序,如使用MSDEVVisualC/C++,BorlandC++Builder,Delphi或任何Win32編譯器。使用WinDriver所開發(fā)的驅(qū)動程式均可用于WindowsXP,Windows9x,NT/2000,CE,LinuxandSolaris等平臺。3.2.7USB設(shè)備驅(qū)動程序設(shè)計USB設(shè)備驅(qū)動程序是支持即插即用功能的標(biāo)準(zhǔn)WDM(WindowsDriverModel)驅(qū)動程序,它與VXD和NT式的驅(qū)動程序不同,它是核態(tài)程序,采用了分層處理的方式,不需要直接和硬件打交道。當(dāng)USB設(shè)備插入USB集線器時,USB集線器驅(qū)動程序會檢測到一個新設(shè)備的插入。PnP管理器使用廠商ID或設(shè)備類信息選擇要運行的驅(qū)動程序。一般情況下,調(diào)用驅(qū)動程序的AddDevice例程,并發(fā)出其他的PnPIRP。USB設(shè)備驅(qū)動程序決不會收到任何硬件資源(如端口或中斷),因為USB類驅(qū)動程序處理所有的低層I/O。在編寫驅(qū)動程序時,需要包含以下幾個頭文件:USBl00.h:包含有USB設(shè)備驅(qū)動程序中所用到的各種常量和結(jié)構(gòu);USBioctl.h:IOCTL的定義,包括各種驅(qū)動程序通用的數(shù)據(jù)結(jié)構(gòu);USBdlib.h:URB構(gòu)造和各種例程,定義了USBD所輸出的服務(wù);USBdi.h:USBDI例程,包括URB結(jié)構(gòu)、各種驅(qū)動程序通用的數(shù)據(jù)結(jié)構(gòu)。在編譯驅(qū)動程序時,build將會在欲編譯的驅(qū)動程序所在的目錄中尋找一個叫sources的文件,這個文件將告訴編譯程序,應(yīng)該怎么做。在該文件中,以下五個容是必須包含的:(1)TARGETNAME:表示編譯出的結(jié)果名稱;(2)TARGETTYPE:表示編譯出的結(jié)果類型(例如驅(qū)動程序);(3)TARGETPATH:表示在當(dāng)前目錄(sources文件所在的目錄)中建立一個什么名稱的子目錄來保存中間結(jié)果;(4)TARGETLIBS:表示編譯過程中需要那些庫;(5)SOURCE:表示需要編譯那些文件。在本系統(tǒng)的驅(qū)動程序開發(fā)中,主要的分發(fā)例程有:DriverEntry():是驅(qū)動程序的入口,主要完成各種初始化操作,同時把注冊表復(fù)制到一個全局變量中,并告訴系統(tǒng)那些IRP由哪個例程處理,這部分被I/O系統(tǒng)直接調(diào)用。USB_D12_Create():主要是用來在USB設(shè)備和驅(qū)動程序之間建立連接,當(dāng)以打開文件的名義打開設(shè)備準(zhǔn)備讀寫時,調(diào)用它。USB_D12_pnp():處理即插即用的操作。USB_D12_power():處理和電源相關(guān)的操作。USB_D12_Read()/USB_D12_Write():用來讀寫數(shù)據(jù),把數(shù)據(jù)讀到數(shù)據(jù)緩存區(qū)或把數(shù)據(jù)從緩存區(qū)寫到端點專用寄存器,由此發(fā)往USB主機。USB_D12_DeviceloControl():設(shè)備操作,一般是用來對硬件發(fā)出一些控制命令。USB_D12_closeHandle():當(dāng)用戶關(guān)閉文件時,調(diào)用它清掃系統(tǒng),卸載驅(qū)動程序。。USB_D12_AddDevice()第一次安裝硬件(插上板子)時使用USB_D12_DriverUnload():卸載硬件時使用,當(dāng)硬件完全卸載后,調(diào)用它清理此硬件在系統(tǒng)中留下的痕跡,釋放全局變量中注冊表路徑字符串所占的存。以上是驅(qū)動程序中的幾個重要的分發(fā)歷程,只有上述這些例程正確執(zhí)行,編譯生成的*.SYS文件才是有效的,驅(qū)動程序才可以使用,設(shè)備才能和上位機通信。設(shè)備插上主機后,主機發(fā)現(xiàn)新硬件并提示安裝驅(qū)動程序。3.2.8USB設(shè)備驅(qū)動程序的調(diào)用USB設(shè)備通過客戶驅(qū)動程序與設(shè)備打交道并響應(yīng)核或用戶應(yīng)用程序請求。在核級,命令由客戶驅(qū)動程序使用部的IOCTL發(fā)送給USB系統(tǒng),而不能用于用戶態(tài)應(yīng)用程序。最有用的IOCTL是IOCT_INTERNALUSB_SUBMIT_URB,它發(fā)出USB請求塊(URB)給系統(tǒng)USB驅(qū)動程序。URB允許發(fā)出多個功能調(diào)用給USB系統(tǒng),通過URB進行與USB設(shè)備的大多數(shù)交互。用戶只需在相應(yīng)的分發(fā)例程中構(gòu)造URB塊(讀取USB的描述表、選擇配置和接口),并根據(jù)設(shè)備所支持的傳輸類型和設(shè)備自有的命令字將其通過USBDI發(fā)送下去,由USB類驅(qū)動程序處理所有的低層I/O,從而實現(xiàn)對USB設(shè)備的控制。USB總線驅(qū)動程序由操作系統(tǒng)提供,它位于USB功能驅(qū)動程序的下面,負責(zé)與實際的硬件打交道,實現(xiàn)煩瑣的低層通信。USB功能驅(qū)動程序由設(shè)備開發(fā)者編寫,位于USB總線驅(qū)動程序的上面,不與實際的硬件打交道,而是通過向USB總線驅(qū)動程序發(fā)送包含URB(RequestBlock,USB請求塊)的IRP(I/ORequestPacket,IRP請求包),來實現(xiàn)對USB設(shè)備信息的發(fā)送或接收。采用這種分層驅(qū)動程序的方法有兩個優(yōu)點:(1)多個USB設(shè)備可以通過USB總線驅(qū)動程序來協(xié)調(diào)它們的工作;(2)編寫分層驅(qū)動程序較之編寫單一驅(qū)動程序相對簡單,且可以節(jié)省存和資源,不易出錯。整個驅(qū)動程序模型如圖3.11所示。圖3.11USB設(shè)備驅(qū)動程序的調(diào)用第4章方案設(shè)計的分析與本研究的創(chuàng)新策略4.1方案的可行性、實驗過程、數(shù)據(jù)的處理與分析4.1.1系統(tǒng)硬件設(shè)計分析89C52通過P1.4和讀、寫控制線來控制轉(zhuǎn)換器的模擬輸入通道地址鎖存、啟動和允許輸出。編程時注意啟動AD0809后,EOC在一定時間才能變成低電平。89C52的ALE和PD12的ALE相接,表示采用單獨地址和數(shù)據(jù)總線配置。其AO腳接高電平用于控制命令或數(shù)據(jù)輸入到PDIUSBDI2,也就是編程中outportcmd()和outportdata()函數(shù)。此外89C52的多位地址/數(shù)據(jù)復(fù)用總線PO可直接與PDIUSBD12的數(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)中進行數(shù)據(jù)傳輸是能夠?qū)崿F(xiàn)的,而且能夠很好的實現(xiàn)。4.1.2系統(tǒng)軟件設(shè)計分析在編寫PDIUSBDI2固件程序時需要注意:[1]單片機的中斷應(yīng)設(shè)置為電平觸發(fā):中斷后一定要讀上次傳輸狀態(tài)寄存器(命令40-45H),以清除中斷寄存器中的中斷標(biāo)志。這樣,PDIUSBD12的中斷輸出才能變回高電平。這一點非常重要。[2]在接收到Setup包后,一定要調(diào)用ACKsetup命令重新使能端口0。[3]在向IN端點寫完數(shù)據(jù)后,一定要調(diào)用ValidateBuffer(命令FAH),指明緩沖區(qū)中的數(shù)據(jù)有效,可以發(fā)送到主機。[4]讀完數(shù)據(jù)后,一定要調(diào)用ClearBuffer(命令F2H),以保證可以接收新的包。[5]可以通過調(diào)用ReadChipID(命令FDH)檢查PDIUSBDI2是否工作。該命令要讀兩個字節(jié)數(shù)據(jù)。USB初始化過程為:[1]SetAddressEnable;[2]SetEndpointEnable(此時LED亮);[3]Disconnect;[4]delay(1-2s);[5]Connect(即用43h參數(shù)調(diào)用SetMode,此時LED滅);[6]ReadInterruptRegister;完成初始化工作后就可作其它的前臺工作了,并在前臺判斷是否有Setup包(通過一個變量,當(dāng)中斷服務(wù)程序檢測到有Setup包時,設(shè)置該變量),然后執(zhí)行響應(yīng)的控制傳輸。若USB驅(qū)動程序想對設(shè)備進行I/O操作,它便使用WindowsAPI函數(shù)對WIN32子系統(tǒng)進行WIN32調(diào)用。此調(diào)用由I/O系統(tǒng)服務(wù)接收并通知I/O管理器,I/O管理器將此請求構(gòu)造成一個合適的I/O請求包(I/ORequestPacketIRP)并把它傳送給USB功能驅(qū)動程序。USB功能驅(qū)動程序接收到這個IRP以后,根據(jù)IRP中包含的具體操作代碼,構(gòu)造相應(yīng)的USB請求塊把該URP放到一個新的IRP中,并通過USBDI傳送給USB驅(qū)動程序(USBD),USBD驅(qū)動程序根據(jù)IRP包含的不同傳輸類型將IRPs分解開來,并調(diào)用主控制器驅(qū)動程序來處理IRPs,同時將處理結(jié)果返還給I/O管理器,并最終返還給應(yīng)用程序,從而實現(xiàn)了應(yīng)用程序?qū)υO(shè)備的讀寫操作。在此過程中,應(yīng)用程序通過文件名(即設(shè)備名)和文件描述符找到設(shè)備驅(qū)動程序,驅(qū)動程序通過設(shè)備描述符和設(shè)備標(biāo)識使用設(shè)備,三者為一鏈?zhǔn)秸{(diào)用方式。功能驅(qū)動程序除負責(zé)處理應(yīng)用程序的I/O請求外,還要處理PnP管理器發(fā)送給它的PnP請求(如設(shè)備啟動請求IRP_MN_START_DEVICE,設(shè)備刪除請IRPMNREMOVEDEVICE等)。通過對這些請求的處理,USB功能驅(qū)動程序可支持設(shè)備的熱插拔和即插即用功能。4.2本次設(shè)計的創(chuàng)新與改進本次設(shè)計沒有采用以往以AVR單片機ATmegal28作為主控制器,通過基于CH375的USB接口實現(xiàn)數(shù)據(jù)傳輸?shù)姆绞剑遣捎肁T89C52單片機和Philips公司的PDIUSBD12(USB1.1)接口芯片配合的方式。由于51系列的單片機是應(yīng)用非常廣泛的一種微處理器,在其基礎(chǔ)上開發(fā)了大量的軟件包,對其部結(jié)構(gòu)和工作原理我們都非常了解。而PDIUSBDI2能夠完成將數(shù)據(jù)信號到符合USB規(guī)的信號的轉(zhuǎn)換。為此,我們利用89C52中豐富的軟件資源和USB總線技術(shù)即插即用、熱插拔特性來完成高速數(shù)據(jù)采集系統(tǒng)。PDIUSBD12可使設(shè)計者選擇最合適的微控制器,減少開發(fā)時間、風(fēng)險與費用,是最實用最快捷的方法實現(xiàn)最經(jīng)濟的USB外設(shè)的方案。這樣配合方式使的數(shù)據(jù)采集速度更快,設(shè)計周期更短。這種方案的實際體現(xiàn)是價格便宜、接口形式多樣、可靠性高、靈活性大,尤其適合于產(chǎn)品的改型設(shè)計這樣可以降低開發(fā)成本,縮短開發(fā)周期、降低風(fēng)險。結(jié)論通過實際系統(tǒng)的設(shè)計、開發(fā)和調(diào)試,我們覺得對于現(xiàn)在各種以串行口、并行口為接口的產(chǎn)品,都可以設(shè)計成帶USB接口的產(chǎn)品。在硬件設(shè)計時,只需把串口控制芯片或并口控制芯片換成USB接口芯片即可。目前USB芯片的價格也不是很高,一般的只需十幾元或幾十元人民幣即可,這樣不僅沒有增加成本,而且極大提高了數(shù)據(jù)傳輸速度,同時也使得系統(tǒng)具有USB所具有的支持即插即用、熱插拔、靈活、方便等技術(shù)優(yōu)勢,極改善了系統(tǒng)的性能,給用戶帶來了極大的方便,尤其是適用于產(chǎn)品改造型設(shè)計。USB接口完全可以代替串行口和并行口實現(xiàn)數(shù)據(jù)傳輸。從實用性的角度來說,本系統(tǒng)的數(shù)據(jù)庫管理軟件還需進一步完善,操作界面可以采用更直觀的圖形化按鈕;將AD轉(zhuǎn)換的核做到FPGA當(dāng)中,將采集設(shè)備中的數(shù)字器件集成到FPGA中,會大大的簡化電路,并且有利于將來系統(tǒng)的升級。也可以把USB控制的核一并做到FPGA中,則電路將會更加簡單,不過對于FPGA的工作量就會比較繁重一些。USB2.0的出現(xiàn)極提高了USB的通信速度,但是,隨著USB應(yīng)用領(lǐng)域的逐漸擴大,人們對USB的期望也越來越高.無線USB(WUSB)技術(shù)的提出是USB技術(shù)的又一革命性創(chuàng)新。2004年春季Intel技術(shù)峰會(美國)上,無線USB促進聯(lián)盟(WirelessUSBPromoterGroup)宣布成立。這個聯(lián)盟包括7家有相當(dāng)實力的業(yè)界巨擎:AgereSystems惠普,英特爾,微軟,NEC,飛利浦半導(dǎo)體和國三星。這個聯(lián)盟的每個成員都被授權(quán)可以制訂WUSB的詳細規(guī)格。在詳細規(guī)格上,已經(jīng)達成共識的是每秒480Mb的傳輸速率,這一規(guī)格和有線的USB2.0設(shè)備間高速傳輸規(guī)格維持一致。未來,WUSB將會向整合的方向發(fā)展,變成一個標(biāo)準(zhǔn)芯片組的一部分。如同有線的USB技術(shù)一樣,無線的WUSB將會提供一些USB所不能提供的功能。無線WUSB聯(lián)盟正在努力的制訂一個標(biāo)準(zhǔn)的規(guī)格書,同時,工業(yè)上也在開發(fā)WUSB產(chǎn)品,為消費者提供更好的方便性和移動性。無線USB的實現(xiàn)將把人們的生活全面帶進無線環(huán)境當(dāng)中。致本文是在雪嬌老師的指導(dǎo)下完成的,感導(dǎo)師這么久以來對我在畢業(yè)設(shè)計上的悉心指導(dǎo),因為從開始指導(dǎo)到個人編寫程序,設(shè)計修改,直到完成,老師無不傾注著心血和辛勞。就是再忙,老師也經(jīng)常對我進行悉心教導(dǎo)。我所取得的每一點成績和進步都凝聚了老師對我的教誨和心血,這讓我深受感動。導(dǎo)師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、認真的求學(xué)精神、腳踏實地的工作作風(fēng)、敏銳的思維、淵博的專業(yè)學(xué)識、超前的學(xué)術(shù)眼光、深邃的學(xué)術(shù)思想、勤勉塌實的治學(xué)作風(fēng)、誨人不倦的精神無不讓人感動,給我留下了深刻的印象,成為我一生中一筆寶貴的財富,使我終生受益。在這里我衷心的說一聲,老師,辛苦了!同時在整個設(shè)計的過程中,也十分感唐老師,文獻作者,圖書管理員和信息技術(shù)學(xué)院2005級電子2班同學(xué)的幫助,他們使我獲得了不少啟發(fā),讓我受益匪淺。在此對他們表示誠摯的意。論文的編寫過程就是一個知識不斷積累的過程。在寫論文的過程中,我感到指導(dǎo)老師們的知識是那么的豐富,而我與之比較真是相差甚遠。這更加激勵我要不斷的學(xué)習(xí)。只有不斷學(xué)習(xí)才能不斷的進步。我得到了老師的指導(dǎo)和幫助,學(xué)到了很多課本中學(xué)習(xí)不到的知識,提高了自己的動手能力,得到了巨大的收獲。今后,我將繼續(xù)努力,爭取把在本次論文中學(xué)到的知識運用到工作和學(xué)習(xí)當(dāng)中,努力發(fā)揚吃苦耐勞的精神,取得更大的進步。由于時間倉促和自己水平有限,在論文中難免存在很多不足之處,懇請各位老師批評指正。最后,對雪嬌老師的耐心指導(dǎo)再次表示感!并祝老師在今后的工作里工作愉快!合家歡樂!參考文獻[1]田良.王堯.黃正瑾.建元.束海泉.綜合電子設(shè)計與實踐[M].:東南大學(xué),2002,1-314.[2]自美.電子線路設(shè)計[M].:華中科技大學(xué),2000,1-514.[3]康華光.鄒壽彬.電子技術(shù)基礎(chǔ)數(shù)字部分[M].:高等教育,2000,1-536.[4]涵芳.徐愛卿.MCS-51/96系列單片機原理與應(yīng)用[M].:航空航天大學(xué),1996,1-409.[5]吳產(chǎn)樂.微機系統(tǒng)與接口技術(shù)[M].:華中科技大學(xué),2002,1-384.[6]美明.溫冬嬋.IBM-PC匯編語言程序設(shè)計[M].:清華大學(xué),1991,1-482.[7]StevenLaub.AT89C52datesheets[OL]./read.php?tid=26915,1991.[8]幸云輝.16位微型計算機原理與應(yīng)用[M].:郵電大學(xué),1992,1-404.附錄AAt89c52datesheetsAT89C52Chipexplains
CompatiblewithMCS-51TMProducts
8KbytesofIn-SystemReprogrammableFlashMemory
Endurance:1,000Write/EraseCycles
FullyStaticOperation:0Hzto24MHz
Three-LevelProgramMemoryLock
256x8-BitInternalRAM
32ProgrammableI/OLines
Three16-BitTimer/Counters
EightInterruptSources
ProgrammableSerialChannel
LowPowerIdleandPowerDownModes
Description
TheAT89C52isalow-power,high-performanceCMOS8-bitmicrocomputerwith8KbytesofFlashprogrammableanderasablereadonlymemory(PEROM).ThedeviceismanufacturedusingAtmel’shighdensitynonvolatilememorytechnologyandiscompatiblewiththeindustrystandard80C51and80C52instructionsetandpinot.Theon-chipFlashallowstheprogrammemorytobereprogrammedin-systemorbyaconventionalonvolatilememoryprogrammer.Bycombiningaversatile8-bitCPUwithFlashonamonolithicchip,theAtmelAT89C52isapowerfulmicrocomputer,whichprovidesahighlyflexibleandcosteffectivesolutiontomanyembeddedcontrolapplications.
TheAT89C52providesthefollowingstandardfeatures:8KbytesofFlash,256bytesofRAM,32I/Olines,three16-bittimer/counters,asix-vectortwo-levelinterruptarchitecture,afullduplexserialport,on-chiposcillator,andclockcircuitry.Inaddition,theAT89C52isdesignedwithstaticlogicforoperationdowntozerofrequencyandsupportstwosoftwareselectablepowersavingmodes.TheIdleModestopstheCPUwhileallowingtheRAM,timer/counters,serialport,andinterruptsystemtocontinuefunctioning.
ThePowerDownModesavestheRAMcontentsbutfreezestheoscillator,disablingallotherchipfunctionsuntilthenexthardwarereset.
PinDescription
VCC
Supplyvoltage.
GND
Ground.
Port0
Port0isan8-bitopendrainbidirectionalI/Oport.Asanoutputport,eachpincansinkeightTTLinputs.When1sarewrittentoport0pins,thepinscanbeusedashigh-impedanceinputs.
Port0canalsobeconfiguredtobethemultiplexedlow-orderaddress/databusduringaccessestoexternalprogramanddatamemory.Inthismode,P0hasinternalpullups.
Port0alsoreceivesthecodebytesduringFlashprogrammingandoutputsthecodebytesduringprogramverification.Externalpullupsarerequiredduringprogramverification.
Port1
Port1isan8-bitbidirectionalI/Oportwithinternalpullups.ThePort1outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort1pins,theyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port1pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpullups.Inaddition,P1.0andP1.1canbeconfiguredtobethetimer/counter2externalcountinput(P1.0/T2)andthetimer/counter2triggerinput(P1.1/T2EX),respectively,asshowninthefollowingtable.
Port1alsoreceivesthelow-orderaddressbytesduringFlashprogrammingandprogramverification.
Port2
Port2isan8-bitbidirectionalI/Oportwithinternalpullups.ThePort2outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort2pins,theyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port2pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpullups.Port2emitsthehigh-orderaddressbyteduringfetchesfromexternalprogrammemoryandduringaccessestoexternaldatamemorythatuse16-bitaddresses(MOVXDPTR).Inthisapplication,Port2usesstronginternalpullupswhenemitting1s.Duringaccessestoexternaldatamemorythatuse8-bitaddresses(MOVXRI),Port2emitsthecontentsoftheP2SpecialFunctionRegister.Port2alsoreceivesthehigh-orderaddressbitsandsomecontrolsignalsduringFlashprogrammingandverification.
Port3
Port3isan8-bitbidirectionalI/Oportwithinternalpullups.ThePort3outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort3pins,theyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port3pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseofthepullups.
Port3alsoservesthefunctionsofvariousspecialfeaturesoftheAT89C51,asshowninthefollowingtable.
Port3alsoreceivessomecontrolsignalsforFlashprogrammingandprogrammingverification.
RST
Resetinput.Ahighonthispinfortwomachinecycleswhiletheoscillatorisrunningresetsthedevice.
PSEN
ProgramStoreEnableisthereadstrobetoexternalprogram
memory.
WhentheAT89C52isexecutingcodefromexternalprogrammemory,PSENisactivatedtwiceeachmachinecycle,exceptthattwoPSENactivationsareskippedduringeachaccesstoexternaldatamemory.
EA/VPP
ExternalAccessEnable.EAmustbestrappedtoGNDinordertoenablethedevicetofetchcodefromexternalprogrammemorylocationsstartingat0000HuptoFFFFH.Note,however,thatiflockbit1isprogrammed,EAwillbeinternallylatchedonreset.
EAshouldbestrappedtoVCCforinternalprogramexecutions.Thispinalsoreceivesthe12-voltprogrammingenablevoltage(VPP)duringFlashprogrammingwhen12-voltprogrammingisselected.
XTAL1
Inputtotheinvertingoscillatoramplifierandinputtotheinternalclockoperatingcircuit.
XTAL2
Outputfromtheinvertingoscillatoramplifier.
SpecialFunctionRegisters
Amapoftheon-chipmemoryareacalledtheSpecialFunctionRegister(SFR)spaceisshowninTable1.
Notethatnotalloftheaddressesareoccupied,andunoccupiedaddressesmaynotbeimplementedonthechip.Readaccessestotheseaddresseswillingeneralreturnrandomdata,andwriteaccesseswillhaveanindeterminateeffect.
Usersoftwareshouldnotwrite1stotheseunlistedlocations,sincetheymaybeusedinfutureproductstoinvokenewfeatures.Inthatcase,theresetorinactivevaluesofthenewbitswillalwaysbe0.
Timer2RegistersControlandstatusbitsarecontainedinregisters
T2CON(showninTable2)andT2MOD(showninTable4)forTimer2.Theregisterpair(RCAP2H,RCAP2L)aretheCapture/ReloadregistersforTimer2in16-bitcapturemodeor16-bitauto-reloadmode.InterruptRegistersTheindividualinterruptenablebitsareintheIEregister.TwoprioritiescanbesetforeachofthesixinterruptsourcesintheIPregister.
DataMemory
TheAT89C52implements256bytesofon-chipRAM.Theupper128bytesoccupyaparalleladdressspacetotheSpecialFunctionRegisters.Thatmeanstheupper128byteshavethesameaddressesastheSFRspacebutarephysicallyseparatefromSFRspace.
Whenaninstructionaccessesaninternallocationaboveaddress7FH,theaddressmodeusedintheinstructionspecifieswhethertheCPUaccessestheupper128bytesofRAMortheSFRspace.InstructionsthatusedirectaddressingaccessSFRspace.
Forexample,thefollowingdirectaddressinginstructionaccessestheSFRatlocation0A0H(whichisP2).
MOV0A0H,#dataInstructionsthatuseindirectaddressingaccesstheupper128bytesofRAM.Forexample,thefollowingindirectaddressinginstruction,whereR0contains0A0H,accessesthedatabyteataddress0A0H,ratherthanP2(whoseaddressis0A0H).
MOVR0,#data
Notethatstackoperationsareexamplesofindirectaddressing,sotheupper128bytesofdataRAMareavailableasstackspace.
Timer0and1
Timer0andTimer1intheAT89C52operatethesamewayasTimer0andTimer1intheAT89C51.
Timer2
Timer2isa16-bitTimer/Counterthatcanoperateaseitheratimeroraneventcounter.ThetypeofoperationisselectedbybitC/T2intheSFRT2CON(showninTable2).Timer2hasthreeoperatingmodes:capture,auto-reload(upordowncounting),andbaudrategenerator.ThemodesareselectedbybitsinT2CON,asshowninTable3.
Timer2consistsoftwo8-bitregisters,TH2andTL2.IntheTimerfunction,theTL2registerisincrementedeverymachinecycle.Sinceamachinecycleconsistsof12oscillatorperiods,thecountrateis1/12oftheoscillatorfrequency.
IntheCounterfunction,theregisterisincrementedinresponsetoal-to-0transitionatitscorrespondingexternalinputpin,T2.Inthisfunction,theexternalinputissampledduringS5P2ofeverymachinecycle.Whenthesamplesshowahighinonecycleandalowinthenextcycle,thecountisincremented.ThenewcountvalueappearsintheregisterduringS3P1ofthecyclefollowingtheoneinwhichthetransitionwasdetected.Sincetwomachinecycles(24oscillatorperiods)arerequiredtorecognizea1-to-0transition,themaximumcountrateis1/24oftheoscillatorfrequency.Toensurethatagivenlevelissampledatleastoncebeforeitchanges,thelevelshouldbeheldforatleastonefullmachinecycle.
CaptureMode
Inthecapturemode,twooptionsareselectedbybitEXEN2inT2CON.IfEXEN2=0,Timer2isa16-bittimerorcounterwhichuponoverflowsetsbitTF2inT2CON.Thisbitcanthenbeusedtogenerateaninterrupt.IfEXEN2=1,Timer2performsthesameoperation,butal-to-0transitionatexternalinputT2EXalsocausesthecurrentvalueinTH2andTL2tobecapturedintoRCAP2HandRCAP2L,respectively.Inaddition,thetransitionatT2EXcausesbitEXF2inT2CONtobeset.TheEXF2bit,likeTF2,cangenerateaninterrupt.ThecapturemodeisillustratedinFigure1.
Auto-Reload(UporDownCounter)
Timer2canbeprogrammedtocountupordownwhenconfiguredinits16-bitauto-reloadmode.ThisfeatureisinvokedbytheDCEN(DownCounterEnable)bitlocatedintheSFRT2MOD(seeTable4).Uponreset,theDCENbitissetto0sothattimer2willdefaulttocountup.WhenDCENisset,Timer2cancountupordown,dependingonthevalueoftheT2EXpin.
Figure2showsTimer2automaticallycountingupwhenDCEN=0.Inthismode,twooptionsareselectedbybitEXEN2inT2CON.IfEXEN2=0,Timer2countsupto0FFFFHandthensetstheTF2bituponoverflow.Theoverflowalsocausesthetimerregisterstobereloadedwiththe16-bitvalueinRCAP2HandRCAP2L.ThevaluesinRCAP2HandRCAP2Larepresetbysoftware.IfEXEN2=1,a16-bitreloadcanbetriggeredeitherbyanoverfloworbyal-to-0transitionatexternalinputT2EX.ThistransitionalsosetstheEXF2bit.BoththeTF2andEXF2bitscangenerateaninterruptifenabled.
SettingtheDCENbitenablesTimer2tocountupordown,asshowninFigure3.Inthismode,theT2EXpincontrolsthedirectionofthecount.Alogic1atT2EXmakesTimer2countup.
Thetimerwilloverflowat0FFFFHandsettheTF2bit.Thisoverflowalsocausesthe16-bitvalueinRCAP2HandRCAP2Ltobereloadedintothetimerregisters,TH2andTL2,respectively.
Alogic0atT2EXmakesTimer2countdown.ThetimerunderflowswhenTH2andTL2equalthevaluesstoredinRCAP2HandRCAP2L.TheunderflowsetstheTF2bitandcauses0FFFFHtobereloadedintothetimerregisters.
TheEXF2bittoggleswheneverTimer2overflowsorunderflowsandcanbeusedasa17thbitofresolution.Inthisoperatingmode,EXF2doesnotflaganinterrupt.At89c52數(shù)據(jù)表AT89C52單片機芯片說明與MCS-51產(chǎn)品指令和引腳完全兼容
8KB字節(jié)可重擦寫FLASH閃存存儲器
1000次寫/擦除周期
完全靜態(tài)操作:0Hz到24MHz
三級程序存儲器鎖定
256×8位部存
32個可編程I/O線
3個16位定時器/計數(shù)器8個中斷源
可編程串行UART通道
低功耗空閑和掉電模式
描述
該AT89C52單片機是一種低功耗,高性能CMOS8位單片機與8KB的閃存和可擦除可編程只讀存儲器(PEROM)。該設(shè)備是采用Atmel的高密度,非易失性儲存技術(shù),并兼容業(yè)界標(biāo)準(zhǔn)的80C51和80C52指令集的片上閃存.允許程序存儲器重新編程的系統(tǒng)或常規(guī)記憶程序相結(jié)合的多功能8位CPU與Flash的單片芯片.Atmel公司的AT89C52是一個功能強大的微型計算機,從而提供了高度靈活的和成本有效地解決許多嵌入式控制應(yīng)用。
在AT89C52單片機提供以下標(biāo)準(zhǔn)功能:8KB的閃存,256B的RAM,32I/O線,三個16位定時器/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),全雙工串行端口,對片上振蕩器和時鐘電路。此外,AT89C52單片機設(shè)計的靜態(tài)邏輯操作到零頻率和支持兩種軟件可選節(jié)電模式??臻e模式停止的CPU,同時允許的RAM,定時器/計數(shù)器,串行接口和中斷系統(tǒng)繼續(xù)運作。
在斷電模式保存RAM的容,但停止振蕩器,停用所有其他芯片的功能,直到下一個硬件復(fù)位。
引腳描述
虛擬通道連接電源電壓。
接地地面。
端口0
端口0是一個8位漏極開路雙向I/O端口。作為一個輸出端口,每個引腳可匯8的TTL投入。當(dāng)1秒寫入端口0引腳,該引腳可作為高阻抗輸入。
端口0也可以配置為復(fù)8位地址/數(shù)據(jù)總線,在訪問外部程序和數(shù)據(jù)存儲器。在這種模式下,P0了部pullups。
端口還收到0字節(jié)的代碼在Flash編程和產(chǎn)出字節(jié)的代碼在程序核查。外部pullups必須在計劃的核查。
端口1
端口1是一個8位雙向I/O端口與部pullups。端口1輸出緩沖器可以匯/源四的TTL投入。當(dāng)1秒寫入端口1針,他們是拉高的部pullups,可作為投入。作為投入,端口1引腳的外部被拉低將電源電流(IIL)由于部pullups。此外,P1.0和P1.1可配置為定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2觸發(fā)輸入(P1.1/T2EX),分別顯示,下列表格中。
端口1還收到低字節(jié)為了解決在Flash編程和程序驗證。
端口2
端口2是一個8位雙向I/O端口與部pullups。端口2輸出緩沖器可以匯/源四的TTL投入。當(dāng)1秒寫入港2針,他們是拉高的部pullups,可作為投入。作為投入,端口2引腳的外部被拉低將電源電流(IIL)由于部pullups。端口2排放高階地址字節(jié)在獲取外部程序存儲器和在訪問外部數(shù)據(jù)存儲器,使用16位地址(MOVXDPTR)。在此應(yīng)用程序,端口2使用強大的部pullups當(dāng)發(fā)光譜。在訪問外部數(shù)據(jù)存儲器,使用8位地址(MOVX里),端口2發(fā)出的容,P2的特殊功能寄存器。端口2還收到高階地址位和一些控制信號在Flash編程和核查。
端口3
端口3是8位雙向I/O端口與部pullups。端口3輸出緩沖器可以匯/源四的TTL投入。當(dāng)1秒寫入端口3針,他們是拉高的部pullups,可作為投入。作為
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年元器件測試儀器合作協(xié)議書
- 2025年硫精砂合作協(xié)議書
- 2025年農(nóng)業(yè)科學(xué)研究與試驗發(fā)展服務(wù)合作協(xié)議書
- 2025年二次加工材相關(guān)板材合作協(xié)議書
- 2024-2025學(xué)年四川省成都市崇州市四年級(上)期末數(shù)學(xué)試卷
- 2025年中國建設(shè)銀行企業(yè)網(wǎng)上銀行國際結(jié)算協(xié)議(2篇)
- 2025年親屬的股權(quán)轉(zhuǎn)讓協(xié)議范文(2篇)
- 2025年二手車帶牌轉(zhuǎn)讓協(xié)議模板(2篇)
- 2025年個人自建房購房合同標(biāo)準(zhǔn)版本(2篇)
- 2025年五年級1班第一學(xué)期班主任工作總結(jié)模版(2篇)
- 全面新編部編版四年級下冊語文教材解讀分析
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- 三年級上冊脫式計算100題及答案
- VDA6.3 2023過程審核教材
- 烹飪實訓(xùn)室安全隱患分析報告
- 《金屬加工的基礎(chǔ)》課件
- 運輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
- 體驗式沙盤-收獲季節(jié)
- 老年護理陪護培訓(xùn)課件
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
- 醫(yī)院投訴糾紛及處理記錄表
評論
0/150
提交評論