Raspberry PiのI2Sにパワー・アンプを追加する (1)

■I2Sインターフェースだと音がいいものだと思ったのでパワー・アンプも実験

 シーラスロジックなどでは、古くからI2S入力のパワー・アンプをラインナップしていました。テキサス・インスツルメンツでもTAS5701などを現在販売しています。

 ここでは、Adafruit製の「Adafruit MAX98357 I2S Class-D Mono Amp(マニュアルのタイトル)」をスイッチサイエンスから入手したので、実験します。スイッチサイエンスでは、「MAX98357A搭載 I2S 3W D級アンプボード」という商品名なので、モノラルであることはわかりませんが、出力は1系統しかありません。

I2Sのステレオ入力だが出力は1系統しかないIC

 I2Sの信号の規格では、LRCLK(LRCK)という右チャネル、左チャネルを切り替えるタイミング信号があるように、ステレオ信号を受け取ります。マキシムのMAX98357は、I2SのうちMCLK(MCK)は不要です。16/24/32ビットで、最大96kHzまでのサンプリング周波数に対応しています。

 出力OUTpとOUTn端子は、フィルタなしでスピーカにそのままつなぎます。

入力信号 出力信号 電源
BCK(Bit Clock Input) OUTp Vdd 2.5~5.5V
LRCLK(Frame Clock) OUTn GND
Din(Digital Input Signal)    

 

 制御信号によって出力を変更できます。ボード上には「SD」というシルク印刷された信号です。

SD_mode ピンの電圧[V] 機能
1.4以上 Lチャネル出力
1.4~0.77 Rチャネル出力
0.77~0.16 L+R出力
0.16 シャットダウン

 

 「Adafruit MAX98357 I2S Class-D Mono Amp」はデフォルトで「L+R出力」に設定されています。2枚使って、ステレオにしたいと思います。ステレオにするとき、データシートには、I2S信号をパラレルにつなげばよいと書かれています。

L、Rチャネルの単独出力を実験

 SDピンは、100kΩでプルダウンされています。したがって、抵抗をVddへつないで、必要な電圧を得ます。電源には1.2Vのエネループを4本使う予定です。約5Vとすれば、

  • 300kΩをVddにつなげば、ほぼ0.825VでRチャネル
  • Vddに直接つなげば1.4V以上になるので、Lチャネル

になると思われます。

 実験用の音源を作ります。WeveGeneを使って、左500Hz、右2kHzの正弦波のデータを録音します。作成条件は、24ビット96kHzです。USBメモリにコピーします。

 音楽再生環境として、Volumio2 RC2(2016年6月30日現在)をRaspberry Pi 2 Model Bにインストールしました。I2Sの3本と電源(5V)をつなぎます。

 Playback Optionsの画面では、I2S DAC をONにし、DAC Model をGeneric I2S DACを選び、 Output Deviceは Hifiberry DACを選びSaveします。

 デフォルトでは、L+Rが出力されます。SD端子を3.3Vにつなぐと、Lチャネルの500Hzだけが出力されます。Vddへ330kΩをつなぐと電圧は1.4V以上でした。680kΩを直列に入れるとSD端子は約1.0Vになり、Rチャネルが出力されました。

 Gain設定端子は、デフォルトの何もつながない状態で6dBの設定です。

 テスト用の小型スピーカからオーディオ用スピーカにつなぎ替えました。中低音が充実した音楽が流れてきました。

※ この環境では、曲の切り替え時のノイズが大きいです。