EZ-USB FX2 Device Descriptor

e-tipsmemo.hatenablog.com

SlaveFIFOの利用を始める。
ベースはBulkloopサンプルであり、TD_Init、TD_Poll、デバイスディスクリプタを編集することになる。
http://www.cypress.com/file/386321/download
のp11から。

ここが項目ごとにまとまっている。
EZ−USB FX2LPの概要 (その2)

ここのp32からレジスタの概要が載っている
http://www.cypress.com/file/113936/download

詳細は
http://www.cypress.com/file/126446/download
のp211からである。

エンドポイントは以下の12パターン
f:id:katakanan:20180103104645p:plain
の中から選ぶが、上記PDFのサンプルコードによると、
EP2をOUTの512byte 4重バッファ。
EP6をINの512byte 4重バッファに設定しているので
Device Descriptorもその設定に合わせる。
画像中の設定5に対応する。

Interface Descriptorなどはほとんど変更しなくても良さそうなので
Endpoint Descriptorなどを変更していく。

;; Endpoint Descriptor
      .db   DSCR_ENDPNT_LEN      ;; Descriptor length
      .db   DSCR_ENDPNT         ;; Descriptor type
      .db   0x04               ;; Endpoint number, and direction
      .db   ET_BULK            ;; Endpoint type
      .db   0x00               ;; Maximun packet size (LSB)
      .db   0x02               ;; Max packect size (MSB)
      .db   0x00               ;; Polling interval

Endpoint Descriptorの上から3つ目のエンドポイント方向と番号は以下のようになっている。
f:id:katakanan:20180316120721p:plain:w300
DIRは1が入力、0が出力。

EP2ならOUTなので0x02
EP6ならINなので0x86となる

EP4,8は使わないから書かなくてもよいかと思われたが、それではプログラムを書き込んだ際に認識しなかった。
最大パケットサイズは0x0200(512byte)の上位8bitを示している。

USBを差し込んだときにPC側がもらうデバイスディスクリプタをWDKのツールによって確認することができる。
WDKはWindowsデバイスドライバを開発するときに必要になるが、
Visual Studio 2015をインストールすれば自動でインストールされた気がする。
デフォルトでは
C:\Program Files (x86)\Windows Kits\10\Tools\x64\usbview.exe
にそのツールがある。

USB2.0インターフェース設計術

USB2.0インターフェース設計術