2021年8月25日水曜日

SANYO LC7881 DAC その17(PIC32MX編)

PIC32MXのUSB Audio部分は概ね問題無いと思うが、
長期試験するにあたりPIC32MXの状態をRS-232Cで
通信するのはケーブルが2本になる上に変換基板まで
ついて面倒だと考えた。

以前書いたUSB複合デバイスにする手は無いかと再度
調べたところ、古いMicrochip Application Librariesに
サンプルがある事が判った。サンプルを調べたところ、
異なる種類の複合デバイスではUSB Framework内で
パケットを振り分けてくれるみたいなのでプログラムは
追加するデバイスの分を書き足せば良いだけで、思った
よりは簡単だった。

初めてだったので手順が判らなかった。複合デバイスを
作る為にこのブログを見つけた人の為にお勧めの手順を
書いておく。

①主となるデバイス(私の場合はUSB Audio Class)を
動作する状態にする。

②①で作ったプログラムのusb_descriptors.cを編集し、
主となるデバイスの部分をコメントにして、副となる
デバイス(CDCやHID)のdescriptorを書く。この状態で
①で作った状態のプログラムに副となるデバイスの
プログラムを追加し、主となるデバイスのプログラムが
ある状態で単独で副となるデバイスのみで動作させる。
(CDCやHIDの単独デバイスで完全動作を確認する。)

③descriptorの内容を主にすれば主のみが動作し、副に
すれば副のみが動く様になる。この状態が完成したら
descriptorを複合デバイスに変更する。

注意点はusb_config.h内に書くインターフェースIDと
エンドポイントがそれぞれデバイスで異なる様にする
事だ。

複合デバイスにを考える時にCDC(仮想COMポート等)に
するかHIDにするかを考える必要がある。CDCの場合は
ドライバが必要になる。仮想COMポートにする場合、
Microchip Application Librariesにドライバがあるが、
このPID/VIDは当然AudioのIDと異なる。PID/VIDを
CDCと同じにすれば動くかもしれない。ドライバ内に
書いてあるPID/VIDを変更すれば良さそうに見えるが、
変更すれば署名が要求される可能性がある。一方HIDの
場合はRS-232Cの様にターミナルソフトで接続できない
のでWindowsのプログラムを書く必要がある。考えた
結果、過去にPIC16F1454でHIDを作った経験がある
のでHIDにする事にした。

ここまで作ってから書くのも何だが、複合デバイスに
したのにサンプルプログラムのPID/VIDをそのまま使う
のも何だと思う。仕方が無いからマイクロチップ社の
ページでPID/VIDのサブライセンスを申請した。

0 件のコメント:

コメントを投稿