マイコン工作実験日記

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

IISCをつなげる

2013-06-01 01:09:40 | SAM4
SAM4LとWCA-009の間のシリアルはつながったので、続いてオーディオ信号です。今回は、I2Sを使ってつなぎます。

SAM4LにはI2S用のインタフェースとしてIISC (Inter-IC Sound Controller)が備わっているので、これを使います。IISCで受信したデータは、ABDACB(Audio Bit Stream DAC)を使って再生する計画。SAM4Lではペリフェラル間でCPUを介さずに直接DMAすることはできないので、いったんCPUのメモリを介してDMAする必要があります。このあたりの制約は、SAM7/SAM3と同じですね。



I2Sでつなぐには、どちらをマスターにするかを決めねばなりません。今回も、WT32側をマスターとして、上図のように接続しています。SAM4L側をマスターにすると、クロックの生成が必要になりますが、IISCのクロック源として使用するGCLK6はABDACBのクロック源ともなっています。GCLK6をABDACBの要求するクロック速度にしてしまうと、IISCからWT32に対して供給するクロック速度としては適さなくなってしまうので、IISCはスレーブ側にせざるを得ないという事情もあります。

WT32側は2点の設定が必要です。
  1. PSTOOLをつかって、PSKEY_DIGITAL_CONFIGの値を0x0406に設定。これで16ビット左詰めのデータフォーマットを選択します。
  2. iWRAPで SET CONTROL AUDIO I2S I2Sを設定し、I2Sマスターモード動作を選択。
ソフトの方は、まずはIISCの動作確認から始めることとします。DMAの割り込みをかけてみて受信フレーム数にみあう割り込みがかかるかどうかを調べてみました。128サンプル毎にDMAすることとし、およそ10秒間受信してみました。



受信しているMP3を再生したデータは44.1Kサンプル/秒ですので、44100 × 10 / 128 = 3445回の割り込みが発生するはずです。測定実験は手動でおこなっていますので、この程度の誤差は生じるでしょうから、問題無く受信できている見て良いでしょう。現在は単に空読みしているだけですが、これをABDACに流してやれば音を出せるハズです。




最新の画像もっと見る

コメントを投稿

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