USB_CUSTOM

PIC32MX_USBCDC


PIC32MXでUSB高速カスタムデバイスを実装してみる。

https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/pic32mx220.jpg

  • MicroChipのUSBフレームワークの「USB Device - WinUSB - High Bandwidth 」を試してみます。
  • これは、Windowsで規定されているどのクラスドライバーにも属さない、いわゆるバルクデバイスになります。
  • Windowsドライバーは標準のものが存在しないのでカスタムで作るしかないのですが、WinUSBというWindowsに用意されたDLLを呼び出すことで、LibUSBとほぼ同じように手軽にアプリケーションを書くことも出来ます。
  • では、早速MX220F032Bに移植してみました。


ダウンロード

  • 上記アーカイブは例によってブートローダー起動、PicKit2ライター直接書き込みの両対応HEXになっています。
  • 書き込んだら、Windows_Infにあるドライバーを組み込んで、HighBandwidthWinUSB.exe を起動します。
  • GUIのボタンを押すとスループットを計測してくれます。

https://raw.github.com/iruka-/ATMEL_AVR/master/web/upload/PIC/winusb-bench.png

  • 毎秒1MBのスループットが実現できました。
  • FullSpeed USBの信号の変調速度は12M b.p.sなので、ほぼ理論値に近い転送が行なわれています。
    • 実際にはUSBパケットのプリアンブルやチェックサムなどのオーバヘッドと、連続した1が並んだ場合のbit stuffingが行なわれますので、それを加味しても充分に速いといえます。