USB設(shè)備收發(fā)數(shù)據(jù)實驗_第1頁
USB設(shè)備收發(fā)數(shù)據(jù)實驗_第2頁
USB設(shè)備收發(fā)數(shù)據(jù)實驗_第3頁
USB設(shè)備收發(fā)數(shù)據(jù)實驗_第4頁
USB設(shè)備收發(fā)數(shù)據(jù)實驗_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上計算機學院綜合性實驗實 驗 報 告 課程名稱 嵌入式系統(tǒng)基礎(chǔ) 實驗學期 至 學年 第 1 學期學生所在學院部 計算機學院 年級 專業(yè)班級 學生姓名 學號 任課教師 實驗成績 計算機學院制嵌入式系統(tǒng)基礎(chǔ)課程綜合性實驗報告 開課實驗室: 組成原理實驗室 2017 年 11月18 日實驗題目USB設(shè)備收發(fā)數(shù)據(jù)實驗1、 實驗目的1、了解USB工作的基本組成原理;2、深入理解固件程序的編寫;二、設(shè)備與環(huán)境1、EL-ARM-860教學實驗箱,Pentium以上的PC機,仿真調(diào)試電纜,USB扁平線纜、扁平方頭電纜、串口直連電纜。2、PC操作系統(tǒng)WIN98或WIN2000或WINXP

2、,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動程序。三、實驗內(nèi)容1、實驗內(nèi)容 在PC上運行一個應用程序,通過USB總線發(fā)送數(shù)據(jù),并接受實驗箱送回的數(shù)據(jù)。2、 實驗原理USB(Universal Serial Bus)即通用串行總線,是現(xiàn)代非常流行的一種快遞、雙向、廉價、可以進行熱插拔的接口,在現(xiàn)代的每一臺PC機上都可以找到一對USB接口。在遵循USB1.1規(guī)范的基礎(chǔ)上,USB接口最高傳輸速度可達12 Mb/s,而在最新的USB2.0規(guī)范下,更可以達到480 Mb/s,同時它可以連接127個USB設(shè)備,而且連接的方式也十分靈活,既可以使用串行連接,也可以使用集線器(Hub)把多個設(shè)備連接在一起,再同P

3、C機的USB接口相連。此外,它還可以從系統(tǒng)中直接汲取電流,無需單獨的供電系統(tǒng),USB的這些特點使它獲得了廣泛的應用。在設(shè)計開發(fā)一個USB外設(shè)的時候,主要需要編寫三部分的程序:固件程序USB驅(qū)動程序客戶應用程序固件是FIREWARE的對應中文詞,它實際上是程序文件,其編寫語言可以采用C語言或是匯編語言.它的操作方式與硬件聯(lián)系緊密,包括USB設(shè)備的連接USB協(xié)議、中斷處理等,它不是單純的軟件,而是軟件和硬件的結(jié)合,需要編寫人員對端口、中斷和硬件結(jié)構(gòu)非常熟悉。固件程序一般放入MPU中,當把設(shè)備連接到主機上(USB連接線插入插孔)時,上位機可以發(fā)現(xiàn)新設(shè)備,然后建立連接。因此。編寫固件程序的一個最主要的

4、目的就時讓Windows可以檢測和識別設(shè)備。USB的驅(qū)動程序和客戶的應用程序?qū)儆谥小⑸蠈映绦颉?實驗箱上的USB驅(qū)動器采用的是PDIUSBD12。 USB固件程序由三部分組成:初始化S3C2410相關(guān)接口電路(包括PDIUSBD12);主循環(huán)部分,其任務是可以中斷的;中斷服務程序,其任務是對時間敏感的,必須馬上執(zhí)行。根據(jù)USB協(xié)議,任何傳輸都是由主機(Host)開始的。S3C2410作它的前臺工作,等待中斷。主機首先要發(fā)令牌包給USB設(shè)備(這里是PDIUSBD12),PDIUSBD12接收到令牌包后就給S3C2410發(fā)中斷。S3C2410進入中斷服務程序,首先讀 PDIUSBD12的中斷寄存器

5、,判斷USB令牌包的類型,然后執(zhí)行相應的操作。在USB程序中,要完成對各種令牌包的響應,其中比較難處理的是SETUP包,主要是端口0的編程。 S3C2410與PDIUSBD12的通信主要是靠S3C2410給PDIUSBD12發(fā)命令和數(shù)據(jù)來實現(xiàn)的。PDIUSBD12的命令字 分為三種:初始化命令字、數(shù)據(jù)流命令字和通用命令字。PDIUSBD12數(shù)據(jù)手冊給出了各種命令的代碼和地址。S3C2410先給PDIUSBD12的命令地址發(fā) 命令,根據(jù)不同命令的要求再發(fā)送或讀出不同的數(shù)據(jù)。因此,可以將每種命令做成函數(shù),用函數(shù)實現(xiàn)各個命令,以后直接調(diào)用函數(shù)即可。 本實驗隨機帶的上層應用程序usbhid.exe的基

6、本的設(shè)計原理是在USB設(shè)備初始化完之后,PC通過USB總線給設(shè)備寫數(shù)據(jù)到數(shù)據(jù)端口,設(shè)備收到數(shù)據(jù)后,把數(shù)據(jù)放到數(shù)據(jù)輸出端口,供PC讀取。而PC端通過上層程序的Once或Continuous按鈕,讀一次或連續(xù)讀USB設(shè)備的端口,從而把數(shù)據(jù)端口的數(shù)據(jù)讀出。 3、 實驗步驟(1) 本實驗使用實驗教學系統(tǒng)的CPU板,USB單元、CPU板上的串口。在進行本實驗時,音頻的左右聲道開關(guān)、A/D通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)、LCD電源開關(guān)等均應處在關(guān)閉狀態(tài)。 (2) 在PC機并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。以及串口間連接公/母接頭串口線。 (3) 打開超級終端,配置串口的屬性(

7、如COM1),配置波特率為,校驗位無,數(shù)據(jù)位為8,停止位為1,數(shù)據(jù)控制流為無,如圖 1;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住“空格”鍵,進入VIVI狀態(tài)。 圖1(4) 打開ADS1.2開發(fā)環(huán)境,從里面打開實驗程序HARDWAREADS實驗十五D12.mcp項目文件,進行編譯。 (5) 編譯通過后,進入ADS1.2調(diào)試界面,加載實驗程序HARDWAREADS實驗十五D12_DataDebug中的映象文件程序映像D12.axf。 顯示圖 2 圖2(6) 在ADS調(diào)試環(huán)境下全速運行映象文件。使用USB電纜線,扁頭接PC機端,方頭插入實驗箱底板的USB單元的接口處。觀察D3指示燈的

8、變化,同時,若是第一次實驗,則在PC機上會出現(xiàn)自動安裝USB設(shè)備的過程,安裝上后,D3燈應該不停的閃爍。同時,如圖3 在控制面板/系統(tǒng)/硬件/設(shè)備管理器欄里自動添加了一個名為人體學輸入設(shè)備的USB設(shè)備。圖3(7) 此時,打開隨箱提供的/實驗軟件syrj/tools/目錄下的上層應用程序usbhidio.exe文件,如圖2-15-2,在Bytes to send欄中選擇要發(fā)送的數(shù)據(jù),之后,點擊一下Write Report按鈕,在Send and Receive Data欄中選擇Once或Continuous,Once是發(fā)一次收一次,而Continuous是連續(xù)發(fā)和連續(xù)收,接收到的數(shù)據(jù)在Bytes

9、 Receive 欄中顯示,在連續(xù)發(fā)的過程中也可以更改要發(fā)送的數(shù)據(jù),而接收數(shù)據(jù)實時更換。圖4(8) 關(guān)閉程序usbhidio.exe,關(guān)閉ADS調(diào)式環(huán)境,拔出USB電纜,關(guān)閉電源。4、 關(guān)鍵代碼 #define SETDATA *(volatile unsigned char*)0xf8 /設(shè)定數(shù)據(jù)發(fā)送地址處#define SETADDR *(volatile unsigned char*)0xf9 /設(shè)定命令發(fā)送地址處void MLsup_StallEP0 (void) / Give a needle hole for Setup Overwritten as well as ISR SET

10、ADDR = 0x40;/ 0 端點停止(用于發(fā)送Stall包) SETDATA = 0x01; SETADDR = 0x41;/ 1 端點停止(用于發(fā)送Stall包) SETDATA = 0x01; SETADDR = 0xF1;/ 應答SETUP包,使能(清 OUT 緩沖區(qū)、使能 IN 緩沖區(qū))命令void Chap9_GetStatus (void) XmtBuff.b1 = 0x00; switch (XmtBuff.b0) case 0x80:/返回設(shè)備狀態(tài) /發(fā)送兩個字節(jié)數(shù)據(jù):第一字節(jié)D1為1支持遠程喚醒,D0為0是總線供電,其它位為0;第二字節(jié)為0。 XmtBuff.b0 = 0

11、x03; break; case 0x81:/返回接口狀態(tài) /發(fā)送兩個字節(jié)數(shù)據(jù):第一字節(jié)為0;第二字節(jié)為0。 /XmtBuff.b5 為接口號 XmtBuff.b0 = 0x00; break; case 0x82:/返回端點狀態(tài) /發(fā)送兩個字節(jié)數(shù)據(jù):第一字節(jié)D0為1端點處于暫停,否則D0為0,其它位為0;第二字節(jié)為0。 /XmtBuff.b5 D7為方向,D30為端點號 XmtBuff.b0 = 0x00; break; XmtBuff.wrLength = 2; XmtBuff.p = XmtBuff.b; rx_0 ();void rx_0 () INT8 tmp; if (XmtBuf

12、f.pNum XmtBuff.wrLength) XmtBuff.b6 = XmtBuff.wrLength; else XmtBuff.b6 = XmtBuff.pNum; bIsOrig = 0; tmp = XmtBuff.in; SETADDR = tmp;/ 選擇 IN 端點(指針指向0位置) SETADDR = 0xF0;/ 寫緩沖區(qū) SETDATA = 0x00; tmp = XmtBuff.b6; SETDATA = tmp; for (XmtBuff.b7 = 0; XmtBuff.b7 XmtBuff.b6; XmtBuff.b7+) tmp = *(XmtBuff.p+)

13、; SETDATA = tmp; XmtBuff.wrLength -= XmtBuff.b6; if (XmtBuff.wrLength = 0) bIsOrig = 1; SETADDR = 0xFA;/ 設(shè)置 IN 緩沖區(qū)有效(滿標志) tmp = XmtBuff.in; SETADDR = tmp | 0x40; tmp = SETDATA;void tx_0 () int i; SETADDR = 0x00; SETADDR = 0xF0; XmtBuff.b0 = SETDATA; XmtBuff.b1 = SETDATA; for (i = 0; i 8; i+) XmtBuff

14、.bi = SETDATA; SETADDR = 0xF1;/ 應答SETUP包,使能(清 OUT 緩沖區(qū)、使能 IN 緩沖區(qū))命令 SETADDR = 0xF2;/ 清 OUT 緩沖區(qū) SETADDR = 0x01;/ 選擇端點 1(指針指向0位置) SETADDR = 0xF1;/ 應答SETUP包,使能(清 OUT 緩沖區(qū)、使能 IN 緩沖區(qū))命令 if (XmtBuff.b0 & 0x20)/廠商請求跳轉(zhuǎn)表 (*NonStandardDeviceRequestXmtBuff.b1) (); return; else if (XmtBuff.b1 = 0x0B)/標準請求跳轉(zhuǎn)表 (*St

15、andardDeviceRequestXmtBuff.b1) (); return; void tx_1 () int i; SETADDR = XmtBuff.out;/ 選擇端點0(指針指向0位置) SETADDR = 0xF0;/ 讀標準控制碼 XmtBuff.b0 = SETDATA; XmtBuff.b1 = SETDATA; for (i = 0; i 8; i+) XmtBuff.bi = SETDATA; SETADDR = 0xF2;/ 清 OUT 緩沖區(qū)void read_out () INT8 i; SETADDR = XmtBuff.out;/ 選擇端點0(指針指向0位置) SETADDR = 0xF0;/ 讀標準控制碼 XmtBuff.b0 = SETDATA; XmtBuff.b1 = SETDATA; for (i = 0; i 8; i+) XmtBuff.bi = SETDATA; SETADDR = 0xF2;/ 清 OUT 緩沖區(qū)四、實驗結(jié)果及分析在Bytes to send欄中選擇要發(fā)送的數(shù)據(jù),之后,點擊一下Write Report按鈕,在Send and Receive Data欄中選擇Continuous選項,接收到的數(shù)據(jù)在Bytes Rece

溫馨提示

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

評論

0/150

提交評論