NXGのサンプルに引き続きLPCOpenのi2sを使用してみます。
LPCOpenは以下のページからダウンロードできます。
https://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43xx-packages
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の periph_i2sプロジェクトを使用します。
このサンプルには、ポーリングと割り込みとDMAを使ったサンプルが含まれています。
ただし、これを使用するには、UARTでコマンドを送る必要があります。幸いにもXBeeをつなげておいたのですんなりとコマンド送信ができました。
ビルドも難なく通り、書き込みも難なく終わりデバッグできますが、ギターを鳴らしても音が聞こえません。
Decimator volumeが大きくADC入力が減衰しすぎのようです。NXGのサンプルと同じ値にしました。
UDA1380_REG_DECVOL_DEFAULT_VALUEの0xE4E4を減衰でなく増幅側の0x0F0Fに変更しました。
音が聞こえるようになりました。音が大きすぎるのでこれもNXGのサンプルで変更したようにしました。
UDA1380_REG_MSTRVOL_DEFAULT_VALUEの0x0000を0x8080に変更しました。
その他の設定は、48kHzで16bitデータ長になっています。16bitなので送受信時にFIFOから1回の読み書きで行っています。
ポーリングは、転送が追い付いていないのか、ノイズだらけで使い物になりません。
割り込みは、リングバッファを使うとADとDAがかみ合わないのかノイズがでるのでNXGと同じようにバッファをつかず、直接転送すれば使用できます。
DMAは、ノイズありませんが、ADCからDACへ直接転送している設定なので入力を処理して出力に出すことができません。メモリに転送する方法を探ろうと思います。
当面、割り込みを改造して遊んでみようと思います。