2021年4月23日金曜日

SANYO LC7881 DAC その9 (PIC32MX編)

SANYO LC7881への変換を検討せずに、数日かけてPIC32MXで
44.1kHzを出そうとするとノイズが入る原因について調べていた。
Micorochip社のサンプルプログラムは48kHzと32kHzしか対応
してなく44.1kHzが出せない。他にも挑戦した人が居る様だが、
うまく動作しなかった様だ。

Micorochip USB Digital Audio Accessory Board(DM320014)の
回路とサンプルプログラムを使ってみようと思う人の為に私の実験
結果を書いておく。

USBからのデータ読み込みは”USBRxOnePacket”で行っているが、
サンプルプログラムでは周波数による固定値になっている。これを
”USBRxOnePacket”の前に”USBHandleGetLength”で読む込むべき
サイズを取得すれば理論上44.1KHzでも全データを読み込む事が
できる。

しかし、実際にプログラムを修正した結果”USBRxOnePacket”を
修正すると処理時間が増えてしまい、パケットを処理中に割り込み
入った様な場合などに次のパケットを受信してしまうと考えられる
状態になった。つまり、処理が間に合っていない。

私もプログラムの大部分を調べてプログラムのスリム化や高速化を
行ってかなり良くはなったが、現状でノイズが入ったり止まったり
するのでもう少し改良が必要な状態だ。

結論はサンプルプログラムそのままでは、無料のC32コンパイラは
スピード不足で動作しない可能性が高い。現行のXC32でコンパイル
できる様に変更し有料オプションを使って高速化するか、CPUの
クロックを現在の40MHzから50MHzに設定変更するか、パケット
処理プログラムを高速化させる等の対策が必要と考えられる。

あと参考に書くと、Micorochip USB Digital Audio Accessory
Board(DM320014)で使用してるPICはPIC32MX250F128Bだが、
録音部分を削除してheapの量を減らすとPIC32MX220F032Bでも
使用可能だった。

0 件のコメント:

コメントを投稿