usb開(kāi)發(fā)的經(jīng)驗(yàn)_第1頁(yè)
已閱讀1頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Usb開(kāi)發(fā)的經(jīng)驗(yàn)開(kāi)發(fā)的經(jīng)驗(yàn)前段時(shí)間接手了課題組的一個(gè)開(kāi)發(fā)USB接口的項(xiàng)目。當(dāng)時(shí)幾乎是白手起家的狀況,除了老板給我PDIUSBD12的一些英文的PDF文檔和一些源代碼之外,就幾乎沒(méi)有其他任何資料。經(jīng)過(guò)幾個(gè)月的摸索,可以說(shuō)已經(jīng)基本上對(duì)Usb開(kāi)發(fā)的框架有了比較深入的了解,而且可以初步應(yīng)用到實(shí)際的設(shè)備中。其中可以說(shuō)走了不少?gòu)澛贰,F(xiàn)在想開(kāi)發(fā)USB的網(wǎng)友越來(lái)越多,我也不妨把這幾個(gè)月以來(lái)自己開(kāi)發(fā)中的經(jīng)歷告訴大家,也許少走些彎路。也許我的一些想法也是很

2、不成熟的,讓內(nèi)行見(jiàn)笑了。我個(gè)人覺(jué)得,要想搞USB的話起碼得有以下幾方面的知識(shí):計(jì)算機(jī)硬件技術(shù)基礎(chǔ),單片機(jī)原理以及Windows程序設(shè)計(jì)。當(dāng)然你的設(shè)備不一定非得用Phil的PDIUSBD12接口芯片,還有很多可以供選擇的接口芯片。大俠們可以舉例,呵呵。不過(guò)既然導(dǎo)師給我D12芯片的資料,所以我一開(kāi)始也不得不選擇它,現(xiàn)在看來(lái)D12芯片還是比較好用的,不過(guò)最大的缺點(diǎn)就是市場(chǎng)上太難買到了。我的這片也是老板通過(guò)朋友才搞到的,所以到現(xiàn)在我還一直舍不得

3、用,唉……剛開(kāi)始的時(shí)候大概看了一下USB2.0的英文規(guī)范,不過(guò)實(shí)在是太痛苦了。不過(guò)現(xiàn)在網(wǎng)上到處可以下1.1的中文規(guī)范,而且不少“開(kāi)發(fā)指南”的書(shū)就是1.1規(guī)范的翻譯,可以拿來(lái)看看,了解一下Usb到底是什么東西,有些什么特點(diǎn)。作為應(yīng)用,我覺(jué)得了解一下也就可以了,至于里面那些電氣特性和Hub的規(guī)范,先不看也罷。還有其中一些細(xì)節(jié)的東西,也不用看得太仔細(xì),有了點(diǎn)實(shí)踐經(jīng)驗(yàn)之后再回頭看看也許效果會(huì)更好。不過(guò)最好還是了解一點(diǎn)USB設(shè)備的“配置”,“接口

4、”,“端點(diǎn)”,“管道”的一些概念。因?yàn)橐院蟮能浖矫娴拈_(kāi)發(fā)和這些概念的是密不可分的。由于我現(xiàn)在弄的還是比較簡(jiǎn)單的單功能設(shè)備,一般來(lái)說(shuō)都是一個(gè)配置,一個(gè)接口,多個(gè)端點(diǎn)或管道的設(shè)備。所以我對(duì)“配置”和“接口”的概念還不是特別理解,但我覺(jué)得對(duì)于入門來(lái)說(shuō),理解EndPoint,Pipe這兩個(gè)概念還是很有必要的。起碼你得知道Usb支持哪幾種類型的端點(diǎn),管道,它們都有什么特點(diǎn)。而你的設(shè)備的端點(diǎn)又是什么類型的。照我的理解,USB其實(shí)就是一種外設(shè)與計(jì)算

5、機(jī)通訊的協(xié)議。而且現(xiàn)在的大部分的機(jī)器都支持USB設(shè)備,具體協(xié)議是怎么電氣化的實(shí)現(xiàn),我們可以根本不用知道。不管是PC端還是外設(shè),都可以用專用的芯片來(lái)實(shí)現(xiàn)USB傳輸?shù)碾姎馓匦院推渲兄饕膮f(xié)議。PDIUSBD12就是一種這樣的芯片,當(dāng)然這種芯片提供的僅僅是接口的功能,而另外有一些系列的芯片如Intel系列的本身就是一個(gè)微處理器。相比之下,D12芯片需要用單片機(jī)(通常就是51系列)和它配合工作才能起作用,這種情況下你甚至可以把它當(dāng)作8255A,

6、8279那樣的芯片,單片機(jī)和它們的通訊方式都是類似,只不過(guò)作為USB的接口芯片,D12的控制要復(fù)雜的多。當(dāng)然,這時(shí)你最好得對(duì)C51語(yǔ)言有一定的了解,畢竟用匯編來(lái)實(shí)現(xiàn)8051的USB傳輸實(shí)在是不敢想象。另外,要知道你的51單片機(jī)還要做很多其他的事情的,Usb只是實(shí)現(xiàn)就是,這個(gè)設(shè)備是你設(shè)計(jì)的,賣主就是你。呵呵整個(gè)程序的框架就是這樣。而照我自己理解,系統(tǒng)的整個(gè)工作原理應(yīng)該是這樣:當(dāng)系統(tǒng)連接到PC的Usb端口上時(shí)PC的Usb控制器采用默認(rèn)的地址

7、0和你這個(gè)新接入系統(tǒng)的設(shè)備進(jìn)行通訊(大部分工作應(yīng)該都是USB的總線驅(qū)動(dòng)干的)。我想設(shè)備干的第一件事情應(yīng)該是Reset吧(也可能不是)然后Pc向D12的端點(diǎn)0(默認(rèn)的控制端點(diǎn),無(wú)需進(jìn)行特殊的配置)發(fā)送一些標(biāo)準(zhǔn)請(qǐng)求,也就是前面提到的Chap9里定義的一些標(biāo)準(zhǔn)的設(shè)備請(qǐng)求。比如查詢?cè)O(shè)備的狀態(tài),設(shè)備的描述符,設(shè)置設(shè)備的狀態(tài),設(shè)置設(shè)備的地址等。這些請(qǐng)求應(yīng)該是由系統(tǒng)的總線驅(qū)動(dòng)發(fā)送到D12,然后51響應(yīng)D12的中斷,判斷檢測(cè)到是端點(diǎn)的輸入中斷,然后再根

8、據(jù)請(qǐng)求的一些參數(shù)來(lái)調(diào)用Chap9里定義的函數(shù)來(lái)實(shí)現(xiàn)這些主機(jī)的請(qǐng)求,比如設(shè)置地址。因?yàn)榈刂?是Usb設(shè)備默認(rèn)的地址,所有新接入的Usb設(shè)備都通過(guò)這個(gè)地址和主機(jī)進(jìn)行通訊,所以你不能占用這個(gè)地址太久,必須迅速的給你分配一個(gè)合適的地址,以后主機(jī)就通過(guò)這個(gè)地址和你進(jìn)行通訊,地址0就讓出來(lái)給新的設(shè)備。這時(shí)51檢測(cè)到D12的中斷之后調(diào)用SetAddress函數(shù)為設(shè)備設(shè)置地址,地址的參數(shù)當(dāng)然是從主機(jī)傳過(guò)來(lái)的了。完成初始化系統(tǒng)的配置之后,主機(jī)就可以和設(shè)備

9、提供的各個(gè)端點(diǎn)進(jìn)行通訊了,也可以實(shí)現(xiàn)一些“賣主”定義的特殊的請(qǐng)求。比如,讓51外接一個(gè)小發(fā)光二極管,可以定義幾個(gè)自己的請(qǐng)求,比如點(diǎn)亮小燈LedOn,熄滅LedOff和閃動(dòng)小燈LedFlash,這些函數(shù)實(shí)現(xiàn)起來(lái)應(yīng)該很簡(jiǎn)單,就可以把它們加入你的VendRequest函數(shù)集中,以后可以在驅(qū)動(dòng)中進(jìn)行調(diào)用。雖然簡(jiǎn)單,但是當(dāng)你看到通過(guò)你的Windows中的一個(gè)小程序可以控制設(shè)備的小燈一亮一滅閃閃發(fā)光的,是不是很有成就感???呵呵,雖然只是你的一小步,

10、卻是人類的一大步呀,hiahia。BTW:C51的編譯環(huán)境推薦使用KeilC51uVision6.20版的完全解密版。沒(méi)有解密的版本用起來(lái)有很多的不便。而且會(huì)有寫bug,當(dāng)然這個(gè)版本據(jù)說(shuō)也是有一些bug,但是至少現(xiàn)在覺(jué)得還是比較好用的。說(shuō)了那么多,其實(shí)設(shè)備端的Firmware的設(shè)計(jì)相比于整個(gè)“工程”來(lái)說(shuō)只是很小的一部分,真正的困難的地方是開(kāi)發(fā)Windows端的驅(qū)動(dòng)。在我自己的經(jīng)歷中,研究驅(qū)動(dòng)的開(kāi)發(fā)這段過(guò)程幾乎占據(jù)了80%的時(shí)間,可以說(shuō)現(xiàn)

11、在也在研究,以后還得繼續(xù)研究。有點(diǎn)慶幸自己大一的時(shí)候C語(yǔ)言學(xué)得還可以,現(xiàn)在的整個(gè)工程幾乎沒(méi)有那個(gè)環(huán)節(jié)和c語(yǔ)言沒(méi)有關(guān)系的。從設(shè)備端的Firmware開(kāi)發(fā),設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)和驅(qū)動(dòng)程序的編寫,沒(méi)有一樣離得開(kāi)C語(yǔ)言的。當(dāng)然,開(kāi)發(fā)驅(qū)動(dòng)所用到的C語(yǔ)言環(huán)境有和以前所接觸到的C語(yǔ)言的環(huán)境有很大的不一樣,也許語(yǔ)法結(jié)構(gòu)是一樣的。但是以前很多標(biāo)準(zhǔn)的有用的C庫(kù)函數(shù)就不能隨便亂用了。剛開(kāi)始的時(shí)候,包括我和我的老板都有那樣的想法,Windows本身已經(jīng)有了Usb總線

溫馨提示

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

評(píng)論

0/150

提交評(píng)論