2011年9月16日 星期五

V-USB hid-custom-rq

hid-custom-rq 是 V-USB 所附的一個範例,它示範如何定義 HID class device。hid-custom-rq 功能跟 custom-class 範例一樣,不過它宣告成 HID device,由於 Windows 內建 HID driver,因此 Windows 不會要求安裝驅動程式。

hid-custom-rq 一樣可以用 custom-data 所附的 commandline 工具,透過 libusb-win32 來控制裝置。libusb-win32 dll 必須跟 commandline 工具放在同一個資料夾。

下載

hid-custom-rq 包在 V-USB 套件裏:

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

韌體調整

hid-custom-rq 需要調整的地方跟 custom-data 一樣:

● usbconfig.h:


定義所用的 D+ 和 D- data lines 腳位。必須根據你的硬體調整 USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT 和 USB_CFG_DPLUS_BIT。

● Makefile:


定義所用的 MCU 跟時脈頻率,必須根據你的硬體調整 DEVICE 和 F_CPU。

  • main.c

定義所用的 LED 接腳,必須根據你的硬體調整 LED_PORT_DDR, LED_PORT_OUTPUT 和 LED_BIT。

編譯韌體

下指令編譯韌體,你會需要 WinAVR:

cd hid-custom-rq/firmware 
make hex

接著把韌體燒錄到板子上,讓裝置重新上電,然後,「裝置管理員」視窗裏就會出現剛剛安裝的裝置,不用安裝驅動程式:

image
▲ Windows 會將新裝置當成「HID-compliant device」

編譯 PC 端指令列工具 (commandline)

下指令編譯 PC 端指令列工具,你會需要 MingGW, MSYS 和 libusb-win32 函式庫:

cd hid-custom-rq/commandline 
make -f Makefile.windows

這會產生 set-led.exe。

註:libusb-win32 函式庫的安裝方法為,把 include\usb.h 複製到 C:\MingW\include\,而把 lib\gcc\libusb.a 複製到 C:\MingW\lib。

使用 hid-custom-rq

hid-custom-rq 的用法跟 custom-class 一樣:

打開 LED:

set-led on

關閉 LED:

set-led off

查詢 LED 狀態

set-led status

假如 LED 是開的,set-led status 會顯示 "LED is on",否則的話會顯示 "LED is off"。

註:雖然指令列工具是同一支,但因為 hid-custom-rq 用的 VID/PID 跟 custom-data 不一樣,custom-data 用的是 0x16c0/0x05dc,而 hid-custom-rq 的是 0x16c0/0x05df,所以 set-led 指令列工具必須重新編譯才行,不然執行時會找不到 device。

延伸閱讀

2011年9月15日 星期四

V-USB custom-class

custom-class 是 V-USB 所附的一個 custom class device 範例,它示範如何直接使用 default control pipe 傳送與接收小量的資料。

下載

custom-class 包在 V-USB 套件裏:

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

韌體調整

● usbconfig.h:


定義所用的 D+ 和 D- data lines 腳位。必須根據你的硬體調整 USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT 和 USB_CFG_DPLUS_BIT。

● Makefile:


定義所用的 MCU 跟時脈頻率,必須根據你的硬體調整 DEVICE 和 F_CPU。

  • main.c

定義所用的 LED 接腳,必須根據你的硬體調整 LED_PORT_DDR, LED_PORT_OUTPUT 和 LED_BIT。

編譯韌體

下指令編譯韌體,你會需要 WinAVR:

cd custom-class/firmware 
make hex

接著把韌體燒錄到板子上,讓裝置重新上電,安裝 libusb driver,然後「裝置管理員」視窗裏就會出現剛剛安裝的裝置:

image

編譯 PC 端指令列工具 (commandline)

下指令編譯 PC 端指令列工具,你會需要 MingGW, MSYS 和 libusb-win32 函式庫:

cd custom-class/commandline 
make -f Makefile.windows

這會產生 set-led.exe。

註:libusb-win32 函式庫的安裝方法為,把 include\usb.h 複製到 C:\MingW\include\,而把 lib\gcc\libusb.a 複製到 C:\MingW\lib。

使用 custom-class

custom-class 範例的使用方法為:

打開 LED:

set-led on

關閉 LED:

set-led off

查詢 LED 狀態

set-led status

假如 LED 是開的,set-led status 會顯示 "LED is on",否則的話會顯示 "LED is off"。

延伸閱讀

V-USB hid-mouse

HID-Mouse 是 V-USB 提供的一個範例,它實作了一個很簡單的滑鼠裝置。這個範例示範 HID device 的實作。

因為現在大部份作業系統都有內建 USB 滑鼠驅動程式,所以跑 HID-Mouse 不需要安裝驅動程式。

下載

HID-Mouse 包在 V-USB 套件裏:

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

硬體電路

基本上,HID-Mouse 可以用在所有 V-USB 支援的電路上。底下是一個參考電路,由於 USB D+ 和 D- 用 3.3V 的電壓,因此在 D+ 和 D- 上使用稽納二極體 (Zener diodes)。你必須確保 D- 準位在 2.5V 與 3.6V 之間。

image_thumb13

韌體調整

● usbconfig.h:


定義所用的 D+ 和 D- data lines 腳位。必須根據你的硬體調整 USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT 和 USB_CFG_DPLUS_BIT。其它不需要改變。

● Makefile:


定義所用的 MCU 以及時脈頻率。必須根據你的硬體調整 DEVICE 和 F_CPU。

編譯與執行

Hid-mouse 在 "vusb-xxxx/examples/hid-mouse" 資料夾裏。

下指令編譯韌體,你會需要 WinAVR:

cd examples/hid-mouse/firmware 
make hex

接著把韌體燒錄到板子上,讓裝置重新上電,然後你就會看到電腦畫面上的滑鼠指標會自己移動。

延伸閱讀