マイコン工作実験日記

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

PCM信号のつなげかた

2010-09-03 07:19:01 | W-SIM
しばらく前にW-SIMのPCM信号についての簡単な説明を書いたので、今回はPCM信号をどのようにして使うのかについて具体的な例を挙げて説明してみたいと思います。

まず一番簡単なのは、前回も書いたように適切なCODECを選択して、それとつなぐことです。何も難しいことはありません。似たような名前の線をつなげばいいようなもんです。例としてML7041を使った場合を下図に示します。



CODECを使う場合のメリットは、次のようなことです。
  1. 簡単な追加回路で、マイクやスピーカ、ヘッドフォンをつなぐことができる。
  2. 音量やミュートの制御をおこなうことができる。
  3. DTMF音やダイアル・トーン、着信音などの生成がおこなえる。
  4. 通話にはマイコンは介在しないので、マイコンに負荷を与えない。
ソフトについても通話中にはマイコンが介在しないので、呼の制御さえやってやれば良く、通話中には何の処理もいりません。簡単でいいのですが、用意されたメッセージを再生したり、通話を録音したりということがしたければ、マイコンを介在させる必要が生じます。

W-SIMのPCM信号をマイコンで送受するためには、ロング・フレーム形式のPCM信号を送受できるインタフェースがマイコン側に必要です。AT91SAM7シリーズの同期式シリアルインタフェースであるSSCは、設定によりロング/ショートいずれのフレーム形式のPCM信号も送受することができます。そのため、例えば次のようにして、W-SIMを直接マイコンと接続することができます。SSCはロング・フレーム形式のスレーブ側に設定して、W-SIMから供給されるPCMCLK, PCMSYNC信号に同期して動作させます。



マイコンでの処理では、毎秒8000回送受されるPCMデータを取りこぼさないようにする必要があります。AT91SAM7では、DMA機能を使って割り込み処理の負荷を減らすことができます。

今回のプロジェクトではBluetoothで音声を飛ばすことが目標ですが、使用するBluetoothモジュールであるWT32はPCM信号を送受することができ、ロング/ショートのいずれのフレーム形式もサポートしています。そこで、SSCの時と同じように、WT32側をロング・フレーム形式のスレーブ側に設定してやれば、次のようにW-SIMと直結できることになります。



W-SIMが送受するPCMデータは8ビットのu-Law形式ですが、WT32はこのu-Lawを扱うこともできます。適切にWT32を設定してやれば、受信したu-Law形式の音声データをBluetoothの無線区間上ではCVSDという符号に変換して送ることもできるハズです。

このようにW-SIMと同じロング・フレーム形式をサポートできる同期式シリアルのインタフェースがあればPCM信号は簡単につなぐことができます。今回マイコンとして使用するLPC2388は同期式シリアルインタフェースとしてSSPを持っており、SPI, 4-Wire TI SSI, NS Microwireの3種類のフレーム形式をサポートしています。このうち、TI SSIは、PCMのショート・フレーム形式と同一なのですが、残念ながらロング・フレーム形式はサポートされていません。そのため、SSPとW-SIMのPCM信号を直接つないでも正しく動作しません。しかしながら、ちょっとした工夫をすれば、LPC2388の機能を使ってW-SIMのPCM信号をつなぐことが可能なことに気が付きました。次回は、その方法と実験方法について紹介しようと思います。