マイコン工作実験日記

Microcontroller を用いての工作、実験記録

スペアナに挑戦する -- LCD表示編

2011-03-21 14:53:56 | Weblog


今回は、AIC3253を用いたスペアナ表示の後半。いよいよLCDへの表示です。PurePath Studioで生成したminiDSPのコードを AIC3253の初期化時にダウンロードしてやります。その後、I2S経由で楽曲のデータが与えられれば、miniDSPが随時その解析をおこなって、設定したバンド毎のレベルを対応する係数バッファに格納してくれます。



係数バッファはデュアルバンク構成になっており、ホスト側のマイコンが内容を読み出している間にも、miniDSPはもう片方のバンク側のバッファに次の解析結果を格納することができます。バッファの切り替えもI2Cのレジスタを設定することで行えますので、ホスト側マイコンの処理の流れは次のようになります。
  1. バッファの切り替えをおこなう。前回の解析結果が読み出し可能になる。
  2. 解析結果である係数バッファの内容を全て読み出す。
  3. 解析結果をスケーリングして、LCDに棒グラフ表示する。
  4. 1に戻る。
このように、ひたすら読み出しと表示を繰り返すだけです。解析結果は左右独立に16バンドずつ、合計32の係数レジスタを読み出すことで得られます。ひとつの係数レジスタは24ビット幅の値をもっているため、8ビット幅でアクセスするI2Cを使ってのアクセスでは、32 x 3 = 96回の読み出し処理が必要となります。しかしながら、良く考えてみると24ビットの情報をもらったところで、LCDにはそんなに細かい精度で表示できるわけはありません。今回は32段階で表示することにしましたので、頭の8ビットだけ読み出せば充分に用が足りるということに後から気が付きました。

と、まぁこのような経緯を経てようやくと表示できるようになりました。そして各種改良を加えた現在の状況がコレ↓です。



残念ながら動画ではわかりにくいのですが、32段階のレベル表示には色の変化もつけています。連続してデータの読み出しとグラフ表示を繰り返しているわけですが、毎秒18回ほどの書き換えができています。1回毎に10msのディレイを挿入しているので、まだ早くできる可能性が残されていますが、これだけ速ければ充分でしょう。ヘッドフォン出力の音量ももちろん、I2Cレジスタで調節することができます。出力を大きくしてやれば小さなスピーカなら鳴らせるので、100円ショップで買った簡易ステレオスピーカをつないで動画を撮影しました。

各モジュールのつながり方は下図のようになっています。マイコンは各モジュールの制御をおこなってはいますが、音の再生や音声信号処理には関わっていません。上述したようにCODEC(AIC3253)が処理してくれた結果をI2Cで読み出して、それをSPI経由でLCDに表示しているだけです。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。