|
|
互動區: |
USB DIY 講座 (五) --- Enumeration ---------------------------------------------------------------------------------------------------------------------------------------- Enumeration 這個字要怎麼翻譯會比較得體呢? 答案是:照原文唸。說真的,有些英文照原來字面上來念還比較懂,但是您硬要拗成中文就很難傳達原來的神韻了。您不要覺得凡是所有的字都要翻成中文(我不是在說彼岸那邊),除非所有的規格是我們訂的。否則,說真的,我們頭腦裡面的思維模式不是用英文式的,所以,根本無法很傳神的表達他原來的意思,這些專有名詞有時還是滿好用的,比如您跟老外討論工程時,句子講得不怎麼樣,但這一兩個專有名詞就可以很清楚告訴他您想說什麼了?就像您聽一個老外說中文時,雖然他說的『二二六六』的時,但有時您還是知道他要說的是什麼一件事的道理是一樣的。怎麼上起英文課了?! USB DIY 第一個步驟就是USB Plug and Play,第一個動作就是Enumeration 。但很多人都被他搞得痛苦。因為規格寫的是死的,所以,這部分也完全照規格。沒有多大應用上的變化,自然很多人反而搞不懂。就是照著規格第九章作就對了,這也是最有名的『Chapter 9』,一般USB Controller IC 大部分都已經幫您做完大部分的工作了,所以,說真的您也不需要花太多心思。您只要稍微瞭解一下他的動作步驟就可以了,怎麼瞭解?不要在K規格了,再K就要K人了。直接看圖說故事: -------------------------------------------------------------------------------------------------------------------------------------------- (麻煩自己點一下圖放大看) 我就把幾個重點講一下就好了,您也不要問我為什麼?因為這順序步驟規格書裡沒說,是Microsoft 他愛怎麼玩就怎麼玩,反正您把Chapter 9 所有的命令都準備好就是了。(若不清楚的,還可以參考一下我另一篇USB 文章 : MP3 系統應用--USB篇)
話說這個Enumeration 過程是蠻平凡的,實在不值一提,不講,人家還以為我只是呼攏您而已。不過,對我們USB DIY 一族來說:當您用自己的String desciptor 外加自己改寫的驅動程式裡的 inf 檔掛起來,看到微軟的『裝置管理員』把您的字串SHOW出來時,那種成就感是別人無法比擬的。這是比作那些RS232 或Parallel 好玩的地方。(另外,我是不知道一般USB DIY一族中 您們的VID是用誰的? CYPRESS ? 這個可不能隨便自己取的,這是登記有案的,當您去參加所謂『插拔大會』(不知道這年頭誰還有興趣去做?),可是要有自己的VID 的。 -------------------------------------------------------------------------------------------------------------------------------------------- 若講完上面那一部份就結束,那我也不會特定寫這麼一篇囉。當然,雖然在USB Device 端的韌體或軟體針對這部分是沒什麼好講的,但您知道嗎?在硬體上他確有一個很好玩的應用。USB 裝置他厲害的地方(相對RS232 或 Parallel 來說),他是可以供電給我們USB Device 的。在Enumeration 您會回是Bus Power 或Self-Power 。但有些應用是我們可能要先從USB BUS上先取得電源,為我們的系統作Initialize 的動作,卻不太想理有關USB 的 Protocol 的東西(因為會有太多中斷影響我們程式),例子喔?!很簡單:MP3 產品就是囉。因為MP3 系統裡有個類似DOS 的File System,他的 Initialize 是比較長的時間(當然有時您也會感覺不出來,但對USB來說算是慢了),那我們該怎麼作?答案也是看圖: 這張圖說明了整個步驟,USB 的電源先進來,系統 Initialize 過程中檢查一下那根 Input pin,有被拉成LOW,就代表您的電源是由USB供的。當您所有的事情全作完了,想跟您HOST PC上應用程式溝通時,再把那根 Output 拉High(注意我圖上那的R30 標的是N.C. 喔) ,PC 就會對您作Enumeration 了,講完了,江湖一點訣,講破沒意思∼我說了會怎樣?我跟您說:您USB Controller IC 您還是不敢隨便用的耶。因為USB 的東西有太多您看不到的盲點,我講了這些也只不過冰山一角了。(注意:這根Output pin 您最好是找一根default 是tri-state 的 ,否則在USB BUS 上您還是會看到一個:
雖然可能馬上變成RESET 狀態,但終究這樣的現象是不合理的。USB 的速度真的很快的(就算是 1.1 也是的),只要您稍微讓D+ 稍微High 一下,南橋IC立刻發訊號並通知OS 。我想這是您在所有的地方都不會跟您說的。就算您用錯了,您可能也不知道。因為您也沒發現,但哪天出問題了∼您就頭大了。所以,為何USB Controller IC 大家喜歡用Cypress ,因為,錯誤他都幫您扛了。當然,用我的方案也不會有這個問題。我一開始就會留意的。 所以,人家前輩(CYPRESS)開宗明義就跟您說:USB is not simple !! 他講的還只不過是韌體或軟體而已。還沒跟您硬體呢!!您知道您 USB Device Suspend Current 有沒有超過 500 uA ?! 對不對?!您的USB Device Suspend 之後,會不會一覺不醒?回不來(resume)?這些都是跟硬體有關的耶。好好加油。
|
|
Telephone : 886-3-5439918 FAX : 886-3-5437632 Copyright(C) 2005 . ChamberPlus System Level Studio All rights reserved. Last Update: 2008年01月18日。 |