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点の設定が必要です。

受信しているMP3を再生したデータは44.1Kサンプル/秒ですので、44100 × 10 / 128 = 3445回の割り込みが発生するはずです。測定実験は手動でおこなっていますので、この程度の誤差は生じるでしょうから、問題無く受信できている見て良いでしょう。現在は単に空読みしているだけですが、これをABDACに流してやれば音を出せるハズです。
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点の設定が必要です。
- PSTOOLをつかって、PSKEY_DIGITAL_CONFIGの値を0x0406に設定。これで16ビット左詰めのデータフォーマットを選択します。
- iWRAPで
SET CONTROL AUDIO I2S I2S
を設定し、I2Sマスターモード動作を選択。

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