PSoCでUSB

by K.I
2006/07/19〜

Index


概要

→このパッケージの半田付けをしなくて済むだけで嬉しい。
[top]

準備

PS-USP01ボード側

ベース基板側

→でも指でボタン押せません。竹串が必須。。。
12列のピンのいずれかのみ接続すること、両方接続すると当然ショートします。。

[top]

動くかな

接続してみる

PCアプリ起動

書き込めない。。

MiniProgのファームが古かった

Example2

Example3


[top]

PC側アプリケーション

何処から手をつけたら良いものか

・Private Function ReadInReport() As Integer
 - Success = ReadFile(ReadHandle, InReport(0), 3, BytesRead, ReadOverlap)

・Private Sub Continuous_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Continuous.Click
 - Success = WriteFile(WriteHandle, Sample_Rate(0), 2, BytesWritten, 0)

・Private Sub GetOneSample()
 - Success = WriteFile(WriteHandle, Sample_Rate(0), 2, BytesWritten, 0)

[top]

汎用USBドライバを使ってみる

USBマウス

Device Descriptor:
bcdUSB:             0x0110
bDeviceClass:         0x00
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x08 (8)
idVendor:           0x056E (Elecom Co., Ltd.)
idProduct:          0x0040
bcdDevice:          0x0230
iManufacturer:        0x01
iProduct:             0x02
iSerialNumber:        0x00
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed:      Low
Device Address:       0x03
Open Pipes:              1

Endpoint Descriptor:
bEndpointAddress:     0x81
Transfer Type:   Interrupt
wMaxPacketSize:     0x0008 (8)
bInterval:            0x0A

uusbd.infの設定

何で'!'になるの?

SnoopyProを使ってみる

1       in down n/a     0.204   GET_DESCRIPTOR_FROM_DEVICE              
1       in up   n/a     0.219   CONTROL_TRANSFER        12 01 10 01 00 00 00 08 0x00000000
2       in down n/a     0.219   GET_DESCRIPTOR_FROM_DEVICE              
2       in up   n/a     0.219   CONTROL_TRANSFER        09 02 22 00 01 01 00 a0 0x00000000

最初の状態に戻したいけど。。

VBについて

ちょっと横道に逸れちゃうけど、VBをいざ読んでみると、なかなか難しい。

ちゃんと動く

uusbdのアンインストール

標準的な2ボタンマウスの信号

Example1はどうなの?

        1       in down n/a     0.000   GET_DESCRIPTOR_FROM_DEVICE              
        1       in up   n/a     0.016   CONTROL_TRANSFER        12 01 00 02 00 00 00 08 0x00000000
        2       in down n/a     0.016   GET_DESCRIPTOR_FROM_DEVICE              
        2       in up   n/a     0.016   CONTROL_TRANSFER        09 02 22 00 01 01 00 80 0x00000000
        3       in down n/a     0.016   GET_DESCRIPTOR_FROM_DEVICE              
        3       in up   n/a     0.032   CONTROL_TRANSFER        09 02 22 00 01 01 00 80 0x00000000
        4       ??? down        n/a     0.032   SELECT_CONFIGURATION            
        4       ??? up  n/a     0.032   SELECT_CONFIGURATION            0x00000000
        5       out down        n/a     0.032   CLASS_INTERFACE -       
        5       out up  n/a     0.032   CONTROL_TRANSFER        -       0x00000000
        6       in down n/a     0.032   GET_DESCRIPTOR_FROM_INTERFACE           
        6       in up   n/a     0.032   CONTROL_TRANSFER        06 00 ff 09 01 a1 01 19 0x00000000
        7       ??? down        n/a     0.047   BULK_OR_INTERRUPT_TRANSFER      -       
        8       ??? down        n/a     0.047   BULK_OR_INTERRUPT_TRANSFER      -       

結局、動かず

pipedumpで認識されない

レジストリを消してみる

Windows2000の新規インストール

USBドライバって難しい

マウスじゃなければ


2来るのか?来ると良いなぁ。
3自分が勝手に付けた名前だけど。。

[top]

PCアプリケーションを作ろう

pipedumpをWindowsアプリケーションに

データ出力はどうするの?

データ出力できた!

Part Description HexData
bmRequestType 00100001 21
bRequest SET_REPORT 09
wValue Report Type and Report ID 00 02
wIndex Interface 00 00
wLength Report Length 01 00
Data Report 実際のデータ

AN2298のEx1用アプリ

プログラムの簡単な説明

注意点


40は入力で使ってるので1からだと思う。実際0でやると固まるし。。
5uusbdが、汎用USBドライバを使ったデバイスを検索してくれるので。でも、結局はuusbd.infで指定してるワケですが。
6VC5とかではそんなことなかったが。。インストーラを作れば良いみたいだが自分にはよく分からなかった。。。


comments powered by Disqus