![](https://blogimg.goo.ne.jp/user_image/0c/73/ec053d5f98931b027c55698f7290c995.jpg)
今回は、AIC3253を用いたスペアナ表示の後半。いよいよLCDへの表示です。PurePath Studioで生成したminiDSPのコードを AIC3253の初期化時にダウンロードしてやります。その後、I2S経由で楽曲のデータが与えられれば、miniDSPが随時その解析をおこなって、設定したバンド毎のレベルを対応する係数バッファに格納してくれます。
![](https://blogimg.goo.ne.jp/user_image/5d/42/eb41fc0109780d3bd8adeb13dde3e56e.jpg)
係数バッファはデュアルバンク構成になっており、ホスト側のマイコンが内容を読み出している間にも、miniDSPはもう片方のバンク側のバッファに次の解析結果を格納することができます。バッファの切り替えもI2Cのレジスタを設定することで行えますので、ホスト側マイコンの処理の流れは次のようになります。
- バッファの切り替えをおこなう。前回の解析結果が読み出し可能になる。
- 解析結果である係数バッファの内容を全て読み出す。
- 解析結果をスケーリングして、LCDに棒グラフ表示する。
- 1に戻る。
と、まぁこのような経緯を経てようやくと表示できるようになりました。そして各種改良を加えた現在の状況がコレ↓です。
残念ながら動画ではわかりにくいのですが、32段階のレベル表示には色の変化もつけています。連続してデータの読み出しとグラフ表示を繰り返しているわけですが、毎秒18回ほどの書き換えができています。1回毎に10msのディレイを挿入しているので、まだ早くできる可能性が残されていますが、これだけ速ければ充分でしょう。ヘッドフォン出力の音量ももちろん、I2Cレジスタで調節することができます。出力を大きくしてやれば小さなスピーカなら鳴らせるので、100円ショップで買った簡易ステレオスピーカをつないで動画を撮影しました。
各モジュールのつながり方は下図のようになっています。マイコンは各モジュールの制御をおこなってはいますが、音の再生や音声信号処理には関わっていません。上述したようにCODEC(AIC3253)が処理してくれた結果をI2Cで読み出して、それをSPI経由でLCDに表示しているだけです。
![](https://blogimg.goo.ne.jp/user_image/62/0b/db60e0dd41c1748c89126fa3b2979018.jpg)