PICでUSBだも18(Bluetooth SDP編2)

PIC24FJ64GB002でUSBホスト Bluetoothドングルバージョン追記

なんとか、PC側でBluetooth接続機器が表示されるようになった
SDPプロトコルは理解しておりません、、、
PCとPCを接続したときのキャプチャログで0x07レスポンスデータと0x05レスポンスデータを
少し変更して送信しております
うーん、、、これでよいのだろうか?
まだ、切断要求のプログラムは組んでいない
a0147557_3123873.jpg


この画面が出たので接続をクリックすると、PC側からレスポンスが帰ってくるけれど、どうしてよいのか
皆目検討がつかない、、、
これもまた、キャプチャデータをそのまま送信することにしよう
[PR]

  # by komoremi | 2010-01-22 03:14 | PIC-USBホスト

PICでUSBだも17(Bluetooth SDP編)

PIC24FJ64GB002のUSB実験追記

ACLでデータの送受信が出来たまではよいのだけれど、
その先が全然進まん!!!
L2CAPでの通信はどうにかこうにか出来ているのだけれど、SDPプロトコルが
サッパリ理解できない;;

困った、先にすすまねぇ
取りあえず、パソコン同士をBluetoothで繋いで相手を探している所をキャプチャして
そのデータを眺めて、唸っています

a0147557_0581060.gif


UUIDとかね、どうなってるんだこれ???
[PR]

  # by komoremi | 2010-01-21 01:00 | PIC-USBホスト

PICでUSBだも16(ACLデータ送信)

PIC24FJ64GB002を使ったUSBホスト(Bluetoothドングル)の追記

ACLでデータ送信が出来た
L2CAPの接続プログラムをゴリゴリ書いてる最中です

とりあえず
***ACL RX_DATA***
26 20 0C 00 08 00 01 00 02 01 04 00 01 00 4C 00
GETReadAclData!
26 20 10 00 0C 00 01 00 03 01 08 00 4D 00 4C 00 00 00 00 00 ReturnCode = 00
***EVENT RX_DATA***
13 05 01 26 00 01 00
WAITReadAclData!
***ACL RX_DATA***
26 20 14 00 10 00 01 00 04 02 0C 00 4D 00 00 00 01 02 FF FF 02 02 FF FF
GETReadAclData!
***EVENT RX_DATA***
05 04 00 26 00 13

といったデータの送受信を行って、L2CAPの接続リクエストに対してレスポンスを返した所

まだまだ、先はながい、、、、、
[PR]

  # by komoremi | 2010-01-06 20:04 | PIC-USBホスト

PICでUSBだも15(ACLデータ受信)

PIC24FJ64GB002を使った実験の追記

PC側のBluetoothモジュールとPIC側のUSB-Bluetoothモジュールで
Connection Complete Eventが正常に返ってきた
タイムアウトのエラーコードが返ってくるばかりで、なんでだ?と悩んでいて、
頭をスッキリする為に風呂に入っている最中に、BDADDRの値が
デバイス側の値になっている事に気が付いた

ACLのデータが受信できるようになった
L2CAPより上位のプロトコルを実装する為には、ここのパケット概念も理解しなければいけないんだけれど
頭はまだUSBの段階、、、、

先は長い、、、

a0147557_1272840.gif

PICからのUARTでデバックしている電文の一部
[PR]

  # by komoremi | 2010-01-06 01:28 | PIC-USBホスト

PICでUSBだも14(Bluetooth初期化)

PIC24FJ64GB002でUSBホストの実験追記

Bluetoothデバイスの初期化がとりあえずできた
デバイス名とClass of Deviceを送信して、ScanEnableを発行した所
Windowsからデバイスとして認識しているようだ

これから上位のプロトコルを実装しなければ何の役にも立たない
はぁ~
USBプロトコルの記述が間違っているのか、Bluetoothプロトコルの記述が間違っているかが
難所になりそう

とりあえず写真添付
a0147557_17121027.jpg

Bletoothデバイスを接続したところ

a0147557_17123517.jpg

Windowsで接続機器として認識された所(デバイス名は設定どおりになっている)
[PR]

  # by komoremi | 2009-12-30 17:14 | PIC-USBホスト

PICでUSBだも13(usb_host_generic考察2)

PIC24FJ64GB002を使ったPICでUSBホストの実験追記

やっとUSBデバイスからのレスポンスが正常に返ってきた
長かった~
USBのプロトコルを全然理解しないまま始めたおかげで、二週間かかってしまったorz
まだUSBプロトコルの理解不足が多々あります
ここまで試行錯誤して行っていたUSBデバイスはBluetoothのデバイスです
BluetoothのUSBデバイスが近所のPCショップで980円で売っていたので
思わず二個購入してしまったのが、この難関の入り口でした
購入したBluetoothデバイスはこれ
a0147557_47835.jpg


HCIコマンドを打てども打てども、帰ってくるレスポンスは0x0Fなり~~

結局、コントロール転送のSETUP部分にデータ長を入力していなかったのが原因
STALLしまくりで、泣きが入っていました

とりあえず、HCIコマンドリセットを受け付けるようになりました

Bluetoothのプロトコルは全然理解していないので、まだまだ先は長い。。。。
[PR]

  # by komoremi | 2009-12-29 04:10 | PIC-USBホスト

PICでUSBだも12(usb_host_generic考察1)

うーん
色々とUSBのプロトコル勉強しています
232Cがユーザ任せな通信手段に対して、USBは様々な決まりごとがあって、
その理由が、「そういうものなのか、、、」と思えれば習得も早いのだろうけれど、
「なんでそうなるんだ??」と考えるとなかなか前進しません
全ての学習にいえる事なんでしょうけれど、諦めずに進めばそのうち道は開けると信じるしかない

その信条が途中で折れてしまうと、挫折となるんだろう
そんな事は重々承知のつもりだけれど、折れそう。。。

てな具合でPIC24FJ64GB002を使ったUSBホストの実験途中経過報告

Microchipのusb_host_genericサンプルプログラムで手元にあるUSBデバイスの
デバイス情報を取得してみました
コントロール転送で取得している構造体をprintf関数で出力した結果です
このUSBデバイスの情報をみて、何のデバイスを扱おうか分かる人がいたら師匠と呼ばせてください

**USB_ENDPOINT0_Address = 00
TransferType = Control
EndpointSynchronizationType = No Synchronization
EndpointUsageType = Implicit feedback Data endpoint
MaxPacketSize =0040
**USB_InterfaceNumber =01
**USB_DriverTable =01
**USB_InterfaceSettings =05
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0031
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0031
**USB_InterfaceSettings =04
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0021
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0021
**USB_InterfaceSettings =03
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0019
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0019
**USB_InterfaceSettings =02
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0011
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0011
**USB_InterfaceSettings =01
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0009
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0009
**USB_InterfaceSettings =00
**USB_EndpointAddress =83
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0000
**USB_EndpointAddress =03
** EndpointTransferType = Isochronous
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0000
**USB_InterfaceNumber =00
**USB_DriverTable =01
**USB_InterfaceSettings =00
**USB_EndpointAddress =82
** EndpointTransferType = Bulk
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0040
**USB_EndpointAddress =02
** EndpointTransferType = Bulk
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0040
**USB_EndpointAddress =81
** EndpointTransferType = Interrupt
** EndpointSynchronizationType = No Synchronization
** EndpointUsageType = Data endpoint
** MaxPacketSize =0010

[PR]

  # by komoremi | 2009-12-27 22:08 | PIC-USBホスト

PICでUSBだも11(usb_host_generic実験2)

PIC24FJ64GB002を使ったUSBホストusb_host_generic実験2
ここ数日、本を読んだりしてUSBプロトコルの入り口を勉強中

usb_host_genericの関数を利用して色々なデータ値を標準出力(printf)で吐き出している
なるほど~と思うものもあれば、サッパリ検討がつかないものまである

その中で、あれ?と思ったコードを訂正
コンパイラはC30を使用で、コンパイラがおかしいのかソースコードが
おかしいのかはよく分からないが、感覚的に間違っていると思う
様は、共有体のBYTEコードを16bit移動しようとしているのだ
案の定、Class定義でusb_host_genericを動かそうとしてもうまくいかない場合がある
ワーニングが出てコンパイラを通ってしまうので、悩む人がいる事だろう
訂正箇所は、usb_host.h の中の // Section: TPL Initializers

元は、
#define INIT_CL_SC_P(c,s,p) {((c)|((s)<<8)|((p)<<16))}
で、
#define INIT_CL_SC_P(c,s,p) {(((DWORD)c)|(((DWORD)s)<<8)|(((DWORD)p)<<16))}
こうしてキャスト演算子をつけた

その後、Class定義のものでも正常にデバイスアドレスが振り分けられるようになった
MicrochipのAN1141(USB Embedded Host Stack Programmer’s Guide FIGURE 9:)
の説明でも #define INIT_CL_SC_P(c,s,p) {((c)|((s)<<8)|((p)<<16))} なってる

これで躓く人、、、いないか、、、
[PR]

  # by komoremi | 2009-12-18 01:31 | PIC-USBホスト

PICでUSBだも10(usb_host_generic実験)

PIC24FJ64GB002を利用したUSBホスト実験の続き
usb_host_generic(汎用コード?)を使って、手元にあるUSBデバイスを繋げてみる

使ったMicrochipサンプルプログラムは、”USB Host - MCHPUSB - Generic Driver Demo”
に収録の物

USB-SD変換器を接続した場合、DEBUG_MODEを有効にしてシリアル出力を眺めてみた
接続する機器のVIDとPIDをWindowsのSnoopyProを利用してゲット
VIDは14CD PIDは8123
このVIDとPIDをサンプルプログラムのそれらしい箇所に記入

その他、サンプルプログラムは多々の周辺IOが繋がっているので、
そこら辺りのプログラムを全削除
USB-SD変換器を繋ぐとデバック内容がUART2で出力される(オリジナルの出力も含まれる)

System....Initialize OK
HOST: Initializing DETACHED state.
USB_INIT - USB_IDLE
>HOST: Starting settling delay.
HOST: Resetting the device.
HOST: Reset complete.
HOST: Reset complete.
HOST: Getting Device Descriptor size.
HOST: GET_DEVICE_DESCRIPTOR_SIZE_COMPLETE.
HOST: Getting device descriptor.
HOST: Validating VID and PID.
HOST: Device validated by VID/PID
HOST: Setting device address.
HOST: Getting Config Descriptor size.
HOST: Getting Config Descriptor.
HOST: Parse Descriptor success
HOST: Determine OTG capability.
HOST: ...No OTG.
HOST: Set configuration.
HOST: Initializing client drivers...
HOST: Using device client driver.
USBHostGenericInit!!
GEN: USB Generic Client Initalized:
flags=0x0000 address=0001 VID=0x14CD PID=0x8123
Device Attach!!
Device Adress = 0001


今度は、USB-SD変換器以外の物を接続してみた

System....Initialize OK
HOST: Initializing DETACHED state.
USB_INIT - USB_IDLE
>HOST: Starting settling delay.
HOST: Resetting the device.
HOST: Reset complete.
HOST: Reset complete.
HOST: Getting Device Descriptor size.
HOST: GET_DEVICE_DESCRIPTOR_SIZE_COMPLETE.
HOST: Getting device descriptor.
HOST: Validating VID and PID.
HOST: Device not yet validated
HOST: Setting device address.
HOST: Getting Config Descriptor size.
HOST: Getting Config Descriptor.
HOST: Client driver NOT found.
HOST: Client driver NOT found.
HOST: Client driver NOT found.
HOST: No supported interfaces.
HOST: Holding.


なるほど、、VIDとPIDが一致しないとデバイスドライバが見つからないとか出る
これで、USBのプロトコルを理解してプログラムを書けば、PICでUSBホスト機能が動くみたいだ
と、ここまで簡単に書いたが、ここに来るまでは長い道のりがあったです
[PR]

  # by komoremi | 2009-12-15 03:31 | PIC-USBホスト

PICでUSBだも9(USB-SD変換書込実験)

近所のPCショップでUSB接続のSDメモリリーダを購入した(500円也)
これでやる実験は、PICのUSBホスト機能でUSB-SDメモリ変換が可能か?

結果) 可能

考察) SDカード直接叩いた方が良いだろ

いやまてよ、、、SDメモリ対応と明記しロゴを商品に表示するには
SDメモリ団体の認可が必要なはず
で、このUSB-SDメモリ変換器にSDメモリ対応と明記されていれば
このシステム自体はSDメモリ対応と明記できるわけだ!!

で早速書き込み速度の実験
10KHzのAD値(20Kbyte/sec)で頭打ち也

a0147557_18525513.jpg

[PR]

  # by komoremi | 2009-12-11 18:54 | PIC-USBホスト

SEM SKIN - DESIGN by SEM EXE