2007年5月4日 星期五

USB DIY in PCB Fail ??

自從版主從前一年開始寫USB DIY 相關文章後,

好像迴響不少,其中一項蠻好玩的事,讓版主可以透過這個機緣,

可以認識不少人....其中,還包括一些以前在學校時的學長學弟...

而這個問題就是版主學校系上的一位學長的問題....

這一件多不簡單的事啊~因為版主本身不是念電子電機的...

所以,系上的學長學弟就本來很少會在這個領域...既然我還可以遇到只差一屆的學長...

誠屬不易啊!

-------------------------------------------------

學長是出國唸書後,念無線通訊的....也算是喜歡DIY 的一位性情中人...

學長是作 Blue-tooth 的,還是用ARM平台的,這是版主一直很羨慕的技術領域...

這點還不得不肅然起敬...

但卻聽到說:一個USB Blue-Tooth Dongle 只賣台幣一兩百塊?!怎麼這麼賤賣呢?!...

---

     話說學長一天DIY了一個無線通訊的USB 平台,卻常常通訊不正常(USB介面),

找不到問題發生的地方...所以請教版主有何方向釐清問題。

所以,一天中午學長就抱著平台來版主上班的辦公室找版主討論...

答案就在幾分鐘內就找到了...其實這個答案相信許多想作 USB DIY 的人值得參考一下...

-----

圖一:我們順便複習一下USB基礎的東西,雖然版主不知道 Blue-Tooth 的東西,

但是從USB還可以解讀一些東西....

(所以,有機會學會一套技術之後,您就可以從此擴散自己的技術領域....)

這個東西,基本上就是所謂的三三架構吧!不知道的人可以複習一下:

http://chamberplus.myweb.hinet.net/usb_diy2.htm

從這張圖看來沒有多大問題喔!

那在那三三之後怎麼會有一個 In Token 呢?!

嘻~嘻~答案是這個 In token 是不同的 Endpoint 的 (Endp = 0x01)

所以,他是屬於 Bulk-In 的...不甚了解箇中道理的就得好好再努力一下USB 喔!

圖二:很明顯我們已經看到一些問題點了...分析儀『見紅』...

糟糕,這極大可能是硬體的問題了...繼續往下看...

圖三:我們發現在 Bulk Out 之後的 In token 之後,出現許多 紅色的PID (Packet ID)...

這代表是USB Device 回的電器特性跑掉了...

以版主的經驗來說:這個紅色的PID 有可能是應該回 NAK !....

所以,我們把USB 分析儀的NAK檢視機制打開....就得到圖四了!


圖四:果然我們看到了許多  NAK 原本的面貌了...(NAK 的PID 為 0x5A)

所以,很明顯的USB傳輸線上的電器特性跑掉了...

(如果,猜得沒錯的話,一般我們稱之為 Eyes Diagram 一定偏離了...)

----

   回頭看學長的DIY實驗版, 糟糕....他PCB 版許多DIY的跳線...

裡面竟然也有USB 的 D+ 與D- ....您們不要笑。所謂 DIY 就是這樣子,

不是每個DIY 的人都可以隨隨便便得出PCB圖去作PCB版的...

發表這一篇是要告訴大家:作USB 也不能隨隨便便的用跳線 DIY一下的,

他的下場就是如此....或許,您沒有親身經歷過...但這種東西就是如此。

這個還只是USB  1.1 的東西而已呢!

----

   後來,學長的這個問題不知有沒有解掉了沒?!

(實在抱歉了,版主作電子這麼久了...唯一學不起來的就是PCB layout,

不之有哪為善心人士或大德人士願意教一下的呢?!)

但也希望每個喜歡DIY 的人士都能慢慢的從中找到一些屬於自己的樂趣!

學長,加油了喔!...

5 則留言:

  1. 板主忽略了另外一點,也沒多少人有機會摸到你那台CATC
    (更別說DIY一族),靠土法煉鋼 USB debug 的功夫自然差的遠了

    回覆刪除
  2. >(實在抱歉了,版主作電子這麼久了...唯一學不起來的就是PCB layout,
    >不之有哪為善心人士或大德人士願意教一下的呢?!)
    版主,您是在開玩笑吧!
    如果不是,我倒可提供一些小小的經驗,足夠應付一般pcb板子、demo kit板子製作,再也不用看layout小姐臉色。如果是高速電路layout,那就要另請高人了。

    回覆刪除
    回覆
    1. 嗯....您的小小經驗呢?!...
      或是要偷偷的告訴版主呢?!
      lchamber@ms8.hinet.net

      刪除
  3. 錢伯兄講的正是在下小弟我. 很高興錢伯兄把我的DIY經驗提出, 這裏我也野人獻曝, 把我DIY的歷程談談.
    我是想自己業餘DIY做一個特殊應用的板子上面要有Bluetooth的功能. 本來想說找一個Bluettoh模組放上去就好了, 可是找了老半天, 不是傳輸速率不錯的價格高昂(美元60元一個), 就是便宜的(800)傳輸速率很慢. 而且選擇也很少. 想了老半天, 想到乾脆用USB 的 Bluetooth Dongle吧, 傳輸速率是最快, 而且很好買, 拍賣網站上一個賣149台票(不要懷疑, 我們做的這麼辛苦, 結果就是這麼賤價, 臺灣電子業的悲哀).
    但是這個決定又帶來另一個新的問題, 也是DIY一族經常碰到的問題, Bluetooth模組一般都是用UART(或是I2C)連接, 拿來應用很容易, 可是用USB的Bluetooth Dongle卻在系統上要加一個USB Host的功能, 反而搞的很複雜.
    (如果您想知道為什麼Bluetooth模組簡便但價高難買, 反而USB的Bluetooth Dongle複雜反而便宜好找, 原因是需求, Bluetooth模組一般是用在手機, 電腦裏, 會有這種需求的是系統廠商需求量大, 一般普羅大眾沒有管道去拿, 就算有管道, 量不大人家也不理你, 況且功能也不見得符合你的需求, 你也沒法改. 而Bluetooth usb Dongle是屬於終端用戶產品, 是出給通路商直接賣給一般消費者, 所以容易買)
     
    所以搞到後來不得以, 只好再度發揮臺灣人不怕苦不怕難的水牛精神, 搞了一個8051 USB平台修改, 改了老半天, 好不容易動起來了, 可是DIY一族的惡夢又再度出現了, Code size太大, 超過64kByte, 加上8051速度太慢, 結果跑起來龜速. 網路找了老半天, 看看有沒有高速8051加上128kByte內建Flash. 可是實在是難找, 勉強找到一個又貴又難買. 只好怎麼辦呢, 想起ARM, 研究了一下突然發現ARM好像沒有想像中的難及貴, 而且很好買, 內建Flash及SRAM又大, 速度又快, 擴充性又足, 很適合我要做的板子. 搞了一塊ARM開發板, 把8051的C code改了改, 約一禮拜就可以在ARM上面跑起來了(這也是C的好處). 只不過要把性能調適到最佳, 又花了好幾個月仔細把ARM的手冊讀讀. 所以跟8051比起來學習曲線還是陡峭很多.
    至於錢伯兄說的DIY USB跳線板, 其由來是因為最早的8051 USB板用的USB host controller, 跟後來用的ARM開發板所附的USB host controller是不同家出的, 而原先的USB firmeware 又全部要改寫, 工程實在太浩大了,  已經沒力了, 而且USB並不是我主要的目標, 不想花太大精力在上面. 加上洗一片板子費用太高, 所以只好自己DIY一塊, 反正只是先驗證一下Firmware, 等到Firmware ok都沒問題後再要求性能. 結果Firmware都弄好了後要催速度時發現傳輸到一半會當掉. Debug了一陣子越來越覺得是USB的問題, 但是因為沒有儀器所以不敢確定, 所以才帶了一堆機絲去錢大請他幫忙看一看. 結果就是上面的那些圖.
     
    至於我那塊特殊應用的板子, 因為不是只有Bluetooth及USB, 上面又加了一堆東西, 所以又搞了一陣子, 距離上次請錢大幫忙又過了半年了吧! 最近終於把整塊板子Lay好前天已經送洗, 過幾天即可驗證結果! 
     
    (說到Layout送洗, 我的板子是四層板, 對DIY一族來說價格驚人, 而且中間又有一些故事, 在此就不說了)
     
    這一路下來, 每天沒日沒夜地埋頭猛作, 已經累斃了, 老婆臉色也越來越難看了 (如果您想知道這些是花費多久, 到現在大概一年半吧!). DIY其實是一條辛苦的不歸路, 限制太多. 中間其實想放棄好幾次, 只是不干心吧, 一直撐到終於板子搞的差不多了, 終於可以鬆了一大口氣.
     
    錢伯兄, 過陣子再找您吃飯聊聊囉!
     
     
     

    回覆刪除
    回覆
    1.    學長...辛苦您了....學弟真的不會PCB  layout...(雖然有PCB廠資源...)
      當您把這些Bluetooth 打通之後...或許我也可以拿來玩一些DIY 的東西...
      至於吃飯,有什麼困難的呢?!隨時嘛都可以....
      PS. 『錢伯』這個名字聽起來不錯....
       

      刪除