freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式usb數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)-資料下載頁

2024-11-29 03:50本頁面

【導(dǎo)讀】友善的設(shè)備應(yīng)用程序。該系統(tǒng)用傳統(tǒng)的USB總線取代了RS232串行總線,通過對(duì)。通過該數(shù)據(jù)采集系統(tǒng),我們可以對(duì)USB協(xié)議有很深刻的理解,對(duì)ISP1581. 接口芯片有很熟練的應(yīng)用,能更好領(lǐng)悟USB接口的優(yōu)勢(shì)。Keywords:USBbus;datacollection;fireware;WDM;devicedriveprogram

  

【正文】 7CS018DA019DA120DA221ORDY/READY22DGND23VCC()24CS25RD/(R/W)26WR/DS27INT28AO/ALE29AD030AD131AD232AD333AD434AD535DGND36VCC()37AD638AD739DATA040DATA141DGND42VCC()43DATA244DATA345DATA446DATA547DATA648DATA749DATA850DATA951DATA1052DATA1153DATA1254DATA1355DATA1456DATA1557VCC()58XTAL259XTAL160DGND61WAKEUP62TEST63VCC()64U3ISP1581VCC12KR4GNDAGNDDGNDDGNDDGNDDGNDDGNDVBUS1D2D+3GND4J1USB22pFC1422pFC1312Y1XTALGNDINT1WRRDALE1122S2P14P00P01P02P03P04P05P06P07 圖 211 ISP1581與 89C52的連接電路 在該數(shù)據(jù)采集系統(tǒng)中,用 ADC0809采集 05V的電壓信號(hào),經(jīng) A/D轉(zhuǎn)換后將數(shù)字量存入預(yù)先設(shè)定的緩沖區(qū)里,利用接口芯片 ISP1581將數(shù)據(jù)送至 USB總線上。設(shè)備應(yīng)用程序從緩沖區(qū)里取數(shù)據(jù)顯示,通過數(shù)值來說明 USB接口的采集速率比一般的串行總線速度高。當(dāng)前端的電壓信號(hào)不斷變化的同時(shí),在 PC上可以觀察到數(shù)據(jù)的變化,這就表明利用 USB接口在數(shù)字采集系統(tǒng)中進(jìn)行數(shù)據(jù)傳輸是能夠?qū)崿F(xiàn)的,而且能夠很好的實(shí)現(xiàn)。 19 第三章 軟件設(shè)計(jì) 固件的開發(fā)環(huán)境 Keil C51是美國 Keil Software公司出品的 51系列兼容單片機(jī) C語言軟件開發(fā)系統(tǒng),與匯編相比, C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。 Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全 Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到 Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。 Keil C51的工具包中, uVision是 C51 for Windows的集成開發(fā)環(huán)境 (IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用 IDE本身或其它編輯器編輯 C或匯編源文件。然后分別由 C51及 A51編譯器編譯生成目標(biāo)文件 (.OBJ)。目標(biāo)文件可由 LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng) L51連接定位生成絕對(duì)目標(biāo)文件 (.ABS)。 ABS文件由 OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的 Hex文件,以供調(diào)試器 dScope51或 tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如 EPROM中。 采用 ISP1581 的固件設(shè)計(jì) 固件要完成的主要工作 固件是 FIREWARE的對(duì)應(yīng)中文詞,它實(shí)際上是單片機(jī)的程序文件,其編寫語言可以采用 C語言或是匯編語言 .它的操作方式與硬件聯(lián)系緊密,包括 USB設(shè)備的連接 USB協(xié)議、中斷處理等,它不是單純的軟件,而是軟件和硬件的結(jié)合,開發(fā)者需要對(duì)端口、中斷和硬件結(jié)構(gòu)非常熟悉。固件程序一般放入 MCU中,當(dāng)把設(shè)備連接到主機(jī)上時(shí),上位機(jī)可以發(fā)現(xiàn)新設(shè)備,然后建立連接。因此,編寫固件程序的一個(gè)最主要的目的就時(shí)讓 Windows可以檢測(cè)和識(shí)別設(shè)備。 USB固件程序程序由三部分組成: ①初始化單片機(jī)和所有的外圍電路 (包括 ISP1581); ②主循環(huán)部分,其任務(wù)是可以中斷的; ③中斷服務(wù)程序,其任務(wù)是對(duì)時(shí)間敏感的,必須馬上執(zhí)行。 根據(jù) USB協(xié)議,任何傳輸都是由主機(jī)開始的。單片機(jī)作它的前臺(tái)工作,等待四川理工學(xué)院本科畢業(yè)(設(shè)計(jì))論文 20 中斷。主機(jī)首先要發(fā)令牌包給 USB設(shè)備(這里是 ISP1581), ISP1581接收到令牌包后就給單片機(jī)發(fā)中斷。單片機(jī)進(jìn)入中斷服務(wù)程序,首先讀 ISP1581的中斷寄存器,判斷 USB令牌包的類型,然后執(zhí)行相應(yīng)的操作。在 USB單片機(jī)程序中,要完成對(duì)各種令牌包的響應(yīng),其中比較難處理的是 SETUP包,主要是端口 0的編程。 單片機(jī)與 ISP1581的通信主要是靠單片機(jī)給 ISP1581發(fā)命令和數(shù)據(jù)來實(shí)現(xiàn)的。 ISP1581的命令字分為三種:初始化命令字、數(shù)據(jù)流命令字和通用命令字。ISP1581數(shù)據(jù)手冊(cè)給出了各種命令的代碼和地址。單片機(jī)先給 ISP1581的命令地址發(fā)命令,根據(jù)不同命令的要求再發(fā)送或讀出不同的數(shù)據(jù)。因此,可以將每種命令做成函數(shù),用函數(shù)實(shí)現(xiàn)各個(gè)命令,以后直接調(diào)用函數(shù)即可。 ISP1581 芯片特點(diǎn) ISP1581是一個(gè)性能優(yōu)化的 USB器件,通常用于基于微控制器的系統(tǒng),并通過高速通用并行接口與微控制器進(jìn)行通信,而且支持本地 DMA傳輸。該器件采用模塊化的方法實(shí)現(xiàn)一個(gè) USB接口,允許在眾多可用的微控制器中選擇最合適的作為系統(tǒng)微控制器,允許使用現(xiàn)存的體系結(jié)構(gòu)使固件投資減到最小。這種靈活性減少了開發(fā)時(shí)間、風(fēng)險(xiǎn)和成本。該器件使開發(fā)成本低且高效的 USB外圍設(shè)備的一種有效途徑。 ISP1581能適應(yīng)大多數(shù)設(shè)備類規(guī)范的設(shè)計(jì),非常適合做很多外圍設(shè)備,如打印機(jī)、掃描儀、外部大容量存儲(chǔ)器和數(shù)碼相機(jī)等的外部接口。 (注: ATA/A TAPI, Advanced Technology Attachmen t/AdvancedTechnology Attachment Peripheral Interface。中文名稱為高級(jí)技術(shù)附加裝置 /高級(jí)技術(shù)附加裝置外圍接口。 ATA是一種硬盤接口標(biāo)準(zhǔn), ATA標(biāo)準(zhǔn)的接口類型其實(shí)就是 IDE接口類型。 ) ISP1581 固件程序的編寫 USB設(shè)備啟動(dòng)流程如下: 1. USB設(shè)備接入 USB口,發(fā)出連接 USB命令; 2. 主機(jī)發(fā)出讀設(shè)備描述符兩次; 3. 主機(jī)根據(jù)設(shè)備描述符 — 廠商 ID、產(chǎn)品 ID,啟動(dòng)相應(yīng)設(shè)備驅(qū)動(dòng)程序; 4. 設(shè)備驅(qū)動(dòng)程序初始化 USB設(shè)備; ①讀設(shè)備描述符; ②讀配置描述符; 21 ③選擇接口、端點(diǎn)(管道),確定傳輸方 式。 USB設(shè)備在正常使用以前,必須由主機(jī)配置設(shè)備。主機(jī)一般會(huì)從 USB設(shè)備獲取配置信息后再確定此設(shè)備有哪些功能。作為配置操作的一部分,主機(jī)會(huì)設(shè)備設(shè)備的配置值,如果必要的話會(huì)選擇合適的接口備選設(shè)備。在發(fā)出連接 USB命令后,主機(jī)先讀取設(shè)備描述符,然后發(fā)出設(shè)置 USB地址 SETUP包,設(shè)置 USB地址后,進(jìn)行主機(jī)客戶驅(qū)動(dòng)與設(shè)備初始化。其余端點(diǎn)依此類推。在其頭文件里需定義 USB規(guī)范中的各種描述符格式,包括設(shè)備描述表、配置描述表、接口描述表、端點(diǎn)描述表、字符串描述表以及描述表類型。這樣,在發(fā)送配置聯(lián)合描述表時(shí),主機(jī) USBD可以根據(jù)描述類型標(biāo)識(shí)區(qū)分各種分描述表。 固件的文件結(jié)構(gòu) 本數(shù)據(jù)采集系統(tǒng)的固件有著如下的積木式結(jié)構(gòu): 圖 31 數(shù)據(jù)采集系統(tǒng)固件的文件結(jié)構(gòu) 固件設(shè)計(jì)的目標(biāo)就是使 ISP1581在 USB上達(dá)到最大的傳輸速率。外圍設(shè)備可使用 ISP1581 在 USB上傳輸數(shù)據(jù),這些設(shè)備的 CPU要忙于處理許多設(shè)備控制和數(shù)據(jù)處理等任務(wù)。 ISP1581 的固件設(shè)計(jì)成完全的中斷驅(qū)動(dòng),當(dāng) CPU處理前臺(tái)任務(wù)時(shí),USB的傳輸可在后臺(tái)進(jìn)行,這就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時(shí)簡(jiǎn)化了編程和調(diào)試。 后臺(tái) ISR中斷服務(wù)程序和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn),例如 ISP1581的批量輸出端點(diǎn)可使用循環(huán)的數(shù)據(jù)緩沖區(qū),當(dāng)主循環(huán):發(fā)送 USB請(qǐng)求、讀入數(shù)據(jù)、控制采集通道和處理 USB總線事件等等 標(biāo)準(zhǔn)請(qǐng)求 廠商請(qǐng)求 中斷服務(wù)程序 ISP1581 命令接口 硬件提取層 四川理工學(xué)院本科畢業(yè)(設(shè)計(jì))論文 22 ISP1581從 USB收到一個(gè)數(shù)據(jù)包,那么就對(duì) CPU產(chǎn)生一個(gè)中斷請(qǐng)求, CPU立即響應(yīng)中斷在 ISR中固件將數(shù)據(jù)包從 ISP1581內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并在隨后清零 ISP1581的內(nèi)部緩沖區(qū),以使能接收新的數(shù)據(jù)包 CPU可以繼續(xù)它當(dāng)前的前臺(tái)任務(wù)直到完成然后返回到主循環(huán)檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù)并開始其它的前臺(tái)任務(wù)。 圖 32 數(shù)據(jù)采集系統(tǒng)的固件結(jié)構(gòu) 由于這種結(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ù)的傳輸。相似的控制端點(diǎn)在數(shù)據(jù)包處理時(shí)采用了同樣的概念。 ISR接收和保存數(shù)據(jù)緩沖區(qū)中的控制傳輸并設(shè)置相應(yīng)的標(biāo)志寄存器。主循環(huán)向協(xié)議處理程序發(fā)出請(qǐng)求。由于所有的標(biāo)準(zhǔn)器件級(jí)別和廠商請(qǐng)求都是在協(xié)議處理程序中進(jìn)行處理, ISR得以保持它的效率。 硬件提取層 :這是固件中的最底層代碼,它執(zhí)行對(duì) ISP1581和硬件I/O相關(guān)訪問。 ISP1581命令接口 :為了進(jìn)一步簡(jiǎn)化 ISP1581的編程,固件定義了一套壓縮了所有訪問 ISP1581功能的命令接口,以對(duì) ISP1581芯片進(jìn)行操作。 中斷服務(wù)程序 :這部分代碼的處理由 ISP1581產(chǎn)生的中斷,在中斷服務(wù)程序中,它將數(shù)據(jù)從 ISP1581的內(nèi)部 FIFO取回到 CPU存儲(chǔ)器并建立正確的事件標(biāo)志,以通知主循環(huán)程序進(jìn)行處理。 ISR通過設(shè)定事件標(biāo)志“ EPPFLAGS”和 Setup包數(shù)據(jù)緩沖區(qū)“ CONROL_XFER”與 主循環(huán)進(jìn)行通信。 主循環(huán) :主循環(huán)在初始化完單片機(jī) CPU和 ISP1581芯片后,檢查事件標(biāo)志,并進(jìn)入對(duì)應(yīng)的子程序進(jìn)行進(jìn)一步的處理,在開發(fā)套件中,它還包含人機(jī)接口的代碼。 協(xié)議層 :協(xié)議層處理標(biāo)準(zhǔn)的 USB器件請(qǐng)求和特殊的廠商請(qǐng)求。 前臺(tái)主循環(huán)程序 后臺(tái)中斷服務(wù)程序( ISR) RXRP、主循環(huán)保持的讀指針 循環(huán)數(shù)據(jù)緩沖區(qū) RXWP、 ISR保持的寫指針 23 固件的編程實(shí)現(xiàn) 底層函數(shù) 最底層為兩個(gè)面向硬件電路的函數(shù) :outportb( ), inportb( ),用以完成CPU和 ISP1581之間的數(shù)據(jù)傳輸,這是所有其它函數(shù)的基礎(chǔ)。具體代碼如下 : void outportb(unsigned char port, unsigned char val) { unsigned char xdata *ext_address; ext_address=0xff00 + port; *ext_address = val; } unsigned char inportb(unsigned char port) { unsigned char c; unsigned char xdata *ext_address; ext_address=0xff00 + port; c = *ext_address ; return c; } 命令接口 在 ISP1581的數(shù)據(jù)手冊(cè)中定義了一套壓縮了所有訪問 ISP1581功能的命令集,命令接口部分就是將各命令用函數(shù)的形式加以實(shí)現(xiàn)。對(duì)應(yīng)的函數(shù)主要有 : void ISP1581_SetAddressEnable(unsigned char bAddress , unsigned char bEnable); //設(shè)置地址使能 void ISP1581_SetEndpointEnable(unsigned char bEnable); //設(shè)置端點(diǎn)使能 void ISP1581_SetMode(unsigned char bConfig, unsigned char bClkDiv); //四川理工學(xué)院本科畢業(yè)(設(shè)計(jì))論文 24 設(shè)置模式 unsigned short ISP1581_ReadInterruptRegister(void); //讀中斷寄存 器 unsigned char ISP1581_SelectEndpoint(unsigned char bEndp); //選擇端點(diǎn) unsigned char ISP1581_ReadLastTransactionStatus(unsigned char bEndp); //讀最后處理狀態(tài) unsigned char ISP1581_ReadEndpointStatus(unsigned char bEndp); //讀端點(diǎn)狀態(tài) void ISP1581_SetEndpointStatus(unsigned char bEndp , unsigned char bStal
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1