マイコン工作実験日記

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

無理やりデジタルマイクを動かす

2011-02-09 23:01:42 | Weblog
TLV320AIC3253と格闘中です。なんとかヘッドフォンとデジタルマイクの動作を確認することができたものの、まだ設定の調整が必要だと思われます。

TLV320AIC3253は電源とパスコンをつなげる程度の工作でデジタル・マイクとヘッドフォンをほぼ直結できてしまい、ハードウェア的にはとっても簡単に使えたのですが、使いこなすための設定/制御はなかなか大変そうです。設定はI2Cでレジスタを設定すればいいだけなのですが、そのレジスタ数がものすごい数あります。1ページ最大256ケの8ビットレジスタが、50ページ以上あるのですが、あまりにもたくさんあるので数える気にもなれません。もっとも、これら全てのレジスタを設定する必要があるわけもなく、ページ0とページ1のいくつかのレジスタさせ設定すれば基本的な機能の動作はできるようになっているようで、今のところこれらのレジスタしか使っていません。

基本的なI2Sストリームの再生やデジタルマイクの設定については、アプリケーションノートにその設定例が示されていたので、それを参考にすることで何とか動かすことができ、WT32からのA2DPストリーム(44.1KHz)とHFPの音声(8KHz)での動作を確認できました。アプリケーションノートの設定をなるべくそのまま使って確認したかったので、今回はWT32側をI2SマスターにしてCODEC側をスレーブにしています。

最初に8KHzでHFPでの通話を試した時には、ブチブチというノイズがDACから出力される再生音声に時折混じっていました。このノイズは44.1KのA2DPでは混入しないので、設定の違いを調べていったところHFPではマイクからの音を拾うためにデジタルマイクとADC部分を動作させているのに対し、A2DPでは再生しかしないのでデジタルマイク/ADC部分を動作させていないためであるということが判明。つまり、マイク入力関連のどこかでノイズが混入していることがわかりました。さらに切り分けを進めていったところ、マイク/ADC部分をモノラルで動作させればノイズは無く、ステレオで動作させた場合に発生することがわかりました。どうしてマイク入力の設定の違いが、ヘッドフォン出力に影響を与えるのか、その原因が理解できませんが、とりあえず対処療法だけは見いだせたという状態です。

デジタルマイクの接続も、本当は不安だらけでした。デジタルマイクは下図のようにつなぐのですが、実際にはモノラルしか必要ないのでマイクはひとつしかつながっていません。マイク出力のタイミングとCODECの期待するタイミングを下部に示してありますが、CODECがクロックの立ち上がり/立下りでデータをサンプリングするとすると、ちゃんとデータが拾えるかどうか不安なところでした。



実際に動作させてみるとちゃんと音声を拾えるのですが、マイクの設定を左右のチャンネルのどちらにしても、音が拾えてしまっています。どうしてなんでしょうか?

CODECの設定をモノラルに変更すると、CODECは右チャンネルのデータしか処理しないようなのですが、今度はマイクのチャネル設定に関係なく全く音声を拾えなくなってしまいました。音声データをI2SでWT32に送信する際にも、右チャンネルのデータしか送信しないために、左チャンネルは無音になっているものと思われます。そのため、WT32がHFPの場合には左チャンネルしか拾わないと想定すると、このような現象もつじつまが合います。幸いなことにWT32側のI2Sの設定を変更することで、ワードクロックと左右チャネルの関係を入れ替えることができましたので、これを変更することでCODECをモノラルにしてもちゃんと音声が通るようになりました。

こんな調子で現在のところ設定でごまかして無理やり音を通しているのですが、A2DPで音楽を再生する際にも左右が逆になってしまうのが問題です。

最新の画像もっと見る

コメントを投稿

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