2011年8月25日 星期四

V-USB 簡介

什麼是 V-USB ?

V-USB 是一個專門為 Atmel AVR microcontrollers 設計相容於 USB 1.1 的純軟體低速 USB device (software-only implementation of a low-speed USB device ),它讓開發者能夠用幾乎任何 AVR microcontroller 建立 USB 硬體。

V-USB 可以採用 GNU GPL (General Public License) 授權或者是用商業授權。

官網提供很充份的範例,示範廣泛的可能的應用。

特色

底下是 V-USB 的特色:

  • 完全與 USB 1.1 低速設備相容,通訊錯誤的處理與電氣規範除外。
  • 支援多重 endpoints: 1 個 control endpoint, 2 個 interrupt/bulk-in endpoints 與最多 7 個 interrupt/bulk-out endpoints (USB 標準禁止低速裝置使用 Bulk endpoints)
  • 傳輸量預設最多 254 bytes,需要更多可在設定選項中調整
  • 提供免費使用的 USB identifiers (Vendor-ID 與 Product ID)
  • 可在硬體最低需求為 2 kB Flash, 128 bytes RAM, 12 MHz 時脈的任何 AVR microcontroller 上跑
  • 可使用 12 MHz, 15 MHz, 16 MHz 或 20 MHz 振盪晶體或者 12.8 MHz 或 16.5 MHz 的內部 RC 振盪器  
下載

http://www.obdev.at/products/vusb/download.html

硬體電路

由於 USB 的 D+ 和 D- 需要 3.3V 電壓,而 USB 供應的是 5V 的電壓,因此必須進行電壓位準轉換 (level conversion)。有幾種方法可以辦到,請參考底下的電路:

1. 使用低電壓降電壓穩壓器 (low drop voltage),例如 LE33:

 

image

2. 在 D+ 和 D- 上使用稽納二極體 (Zener diodes),必須確保 D- 準位在 2.5V 與 3.6V 之間:

image

 

3. 使用整流二極體 (rectifier diode),如下圖的 D3 與 D4,這是最低成本的接法:

 

image 

延伸閱讀

2 意見:

提到...

請問一下,如果我要使用整流二極體製作,

我已經有arduino的板子,
而且我的arduino板子可以接電池(1.5v AAA x3),
請問我可以直接把USB的5v電壓接到電池接入的地方嗎?(圖片最左邊的5v)

我也需要用到Wii的Nunchuck(雙節棍)。
因為雙節棍需要小於4.0v的電壓。

我可以像下面圖片這樣製作嗎?
https://plus.google.com/u/0/photos/104122324856232209042/albums/5728547254141954945/5728547256008247938

謝謝您!

coopermaa 提到...

"直接把USB的5v電壓接到電池接入的地方" ?
你的意思是不接電池,用 USB 供電給 Arduino 嗎?還是把 USB 的電壓灌到電池(額?)?

如果是用 USB 供電給 Arduino 的話,是可以的,只要把 USB +5V 接到 Arduino 的 +5V 那個 pin 腳就好。