Linux Computing
  1. ホーム
  2. BeagleBone Black で I2S DAC を接続する

BeagleBone Black で I2S DAC を接続する

使わずに買ったままの状態で箱に入っていた Beaglebone Black ですが、Raspberry Pi と同じように I2S DAC との接続が可能ですので試してみたいと思います。

BeagleBone Black with I2S,DSD and SPDIF interface を参考にして Botic Linux driver を使って音出しを行います。Botic Linux driver ということなので BeagleBone Black のカーネルをビルドしなおしたり色々手間がかかりそうだと思いっていましたがすでにこの Botic Linux driver を組み込んだディストロがイメージファイルとしてあるので Volumio などと同じように SD カードに書き込んで SD カードからブートすれば良いので比較的簡単にできそうです。

I2S DAC の接続ですが、BeagleBone Black ではオーディオ用としてサンプリング周波数が 48kHz ファミリーのマスタークロック 24.576MHz で動作しています。そのため 44.1kHz ファミリーのサンプリング周波数の音楽ファイルは 48kHz ファミリーのサンプリング周波数にリサンプリングされます。リサンプリングをしないようにするには 48kHz ファミリーのマスタークロック 24.576MHz と 44.1kHz ファミリーのマスタークロック 22.5792MHz の2つを外部に用意する必要があります。これはちょっとハードルが高いので、まずは外部クロックは使用しないで動作させその後外部クロックでの動作はプリント基板を試作することを考えます。

I2S DAC は Raspberry Pi model A+/B+ 用 DAC カードを使います。この基板は MCK 入力を持っていないので BCK を使ったスレーブモードで PLL モードで動作させることにして BeagleBone Black との接続は以下のようになります。

BBB		  DAC
P9_31:BCK	- CN4_11:BCK
P9_29:LRCK	- CN4_35:LRCK
P9_30:DATA	- CN4_40:DATA
P9_1:GND	- CN4_:GND
P9_7:SYS_5V	- CN4_:5V

BeagleBone Black と DAC カードを接続した状態です。

bbb-01.jpg(61905 byte)

Botic Linux Driver のダウンロードとインストール

作業は Linux PC で行います。ビルド済みのディストロのイメージファイル bbb-botic-v4-1gb.img.gz をここからダウンロードして解凍します。

$ gzip -d ./bbb-botic-v4-1gb.img.gz

FAT32 でフォーマットしたマイクロ SD カードに解凍したイメージファイルを書き込みます。

$ su
パスワード:
# dd if=bbb-botic-v4-1gb.img of=/dev/sdb
1433600+0 records in
1433600+0 records out
734003200 bytes (734 MB) copied, 230.838 s, 3.2 MB/s

これでインストールは完了です。

BBB-Boticの起動

LAN ケーブルを挿してBeagleBone Black の電源を入れます。BeagleBone Black 基板は電源を入れるとオンボードのフラッシュメモリにインストールされた Debian が起動します。マイクロ SD カードからブートするにはボード上のブートスイッチ (S2) を押しながら電源を入れ数秒間長押します。

ssh で Botic にログインします。事前に BeagleBone Black の IP アドレスを調査しておく必要がありますので NetEnum や Fing 等を使うとよいでしょう。

$ ssh root@192.168.xxx.xxx
Debian GNU/Linux 7 \n \l

Boticized BeagleBoard.org Debian Image 2015-02-15

default username:password is [root:botic] and [debian:botic]

root@192.168.xxx.xxx's password: 
Last login: Thu Jun  4 20:43:23 2015 from 192.168.xxx.xxx
root@botic:~#

Botic の設定

音楽ファイルを置いている NAS の設定とBeagleBone Black の kernel options の設定をします。

NAS の設定

NAS は Windows 7 のフォルダ c:\share\Music とし、マウントポイントを /data/remote とします。

root@botic:~# mkdir /data/remote

/etc/fstab を編集します。エディタは nano を使います。

root@botic:~# nano /etc/fstab

以下の1行を追加します。行末の sec=ntlm を追加するのを忘れないように。

//192.168.xxx.xxx/share/Music /data/remote cifs user=USER_NAME,pass=PASSWORD,cache=none,gid=audio,sec=ntlm

kernel option の設定

デフォルトでは外部クロックを使うようになっていますので外部クロックを使用しないでオンボードクロックを使うように設定します。/boot/uboot/uEnv.txt を編集します。

root@botic:~# nano /boot/uboot/uEnv.txt

uEnv.txt の以下の行を

optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MMMM

以下のように修正します。

optargs=snd_soc_botic.ext_masterclk=0 snd_soc_botic.serconfig=MMMM

BeagleBone Black をリブートします。

root@botic:~# shutdown now -r

音楽ファイルの再生

NAS がマウントされていることを確認します。

root@botic:~# ls -la /data/remote/
total 453181
drwxr-xr-x 2 root audio     12288 Jun  7 09:01 .
drwxr-xr-x 4 root root       4096 Sep 21  2015 ..
-rwxr-xr-x 1 root audio   9806968 Mar 14 00:11 01 - St Thomas.mp3
-rwxr-xr-x 1 root audio   7932868 Mar 14 09:01 Keep your side_16bit441kHz_short.wav
-rwxr-xr-x 1 root audio 429860796 Apr 18  2014 SOUVENIR part II_04_SOUVENIR de Florence op. 70  I. Allegro con spi.flac
-rwxr-xr-x 1 root audio  16408448 Nov 26  2014 SOUVENIR part II_04_SOUVENIR de Florence op. 70  I. Allegro con spi.mp3
drwxr-xr-x 2 root audio         0 May  3 07:25 TestSignals
-rwxr-xr-x 1 root audio     22016 May  4 08:30 Thumbs.db
-rwxr-xr-x 1 root audio        44 Jan  1  1995 Track01.cda

ファイルを再生するには BeagleBone Black のコマンドラインから行うことも WEB からも可能です。コマンドラインから行う場合は以下のようにファイルを指定して再生します。

root@botic:~# play /data/remote/TestSignals/192kHz_24bit/192KHz_24bit_1000Hz_0dB_LR.WAV

/data/remote/TestSignals/192kHz_24bit/192KHz_24bit_1000Hz_0dB_LR.WAV:

 File Size: 69.1M     Bit Rate: 9.22M
  Encoding: Signed PCM
  Channels: 2 @ 24-bit
Samplerate: 192000Hz
Replaygain: off
  Duration: 00:01:00.00

In:64.5% 00:00:38.68 [00:00:21.32] Out:7.42M [!=====|=====!] Hd:0.0 Clip:0    play WARN alsa: under-run
In:100%  00:01:00.00 [00:00:00.00] Out:11.5M [!=====|=====!] Hd:0.0 Clip:0    
Done.

web MPC を使う場合はブラウザで http://192.168.xxx.xxx:8080 と直接入力します。

bbb-02.jpg(16157 byte)

[Browse database] をクリックし表示される NAS をマウントしたディレクトリ remote をクリックするとファイルが表示されます。

bbb-03.jpg(23051 byte)

ここでファイルをクリックすれば再生が開始されます。

さて、とりあえずは BeagleBone Black に I2S DAC を接続して音楽ファイルを再生することができました。まずは BeagleBone Black のオンボードクロックのみで動作させましたが次は外部クロックを使用して動作させることにチャレンジです。そのためにプリント基板を試作していますのでもう少し時間がかかりそうですね。

外部クロック動作の確認

2015年6月18日 追記。

プリント基板ができあがってきました。基板は BeagleBone Black(以下 BBB)に亀の子状に実装しこの基板に Raspberry Pi 用の DAC カードが接続されるいわば BBB と DAC カードとのブリッジ基板になります。もちろんオーディオ用のクロック生成機能がメインとなっていますが。

まずはじめにピンヘッダーのみを実装して確認します。この状態は上で実験したケーブル接続を単に基板化したものと同等です。

bbb-04.jpg(55753 byte)

次に発信器などの部品を実装して外部クロック動作の確認をします。とりあえずクロックの生成、切換えが正しく行われているかオシロスコープで観測します。このとき uEnv.txt はデフォルトの外部クロックを使用する設定(optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MMM)に戻しておきます。

bbb-06.jpg(52959 byte)

いよいよ DAC カードを接続して確認します。DAC カードの接続は Raspberry Pi と同じでスペーサを M2.6 のタッピングネジを取り付け40ピンのコネクタを接続します。Raspberry Pi model A+/B+ 用 DAC カード ハイグレード版を接続しました。

bbb-07.jpg(51479 byte)

このブリッジ基板は Raspberry Pi model A/B 用 DAC カードも接続できるようになっています。DAC カードのピンソケット(CN4)の1番ピンをブリッジ基板のピンヘッダー(CN2)の10番ピンに合わせて接続するようにします。

bbb-08.jpg(59349 byte)

テスト信号の再生をします。とりあえず 44.1kHz 16bit、192kHz 24bit そして 384kHz 32bit のデータを確認しました。BBB では 384kHz/32bit の再生が可能なので、これまで確認できていなかった DAC カードの PCM5102A の最大サンプリング周波数とデータ深度の動作確認ができました。

root@botic:/data/usb# play 384KHz_32bit_1000Hz_0dB_L.WAV 

384KHz_32bit_1000Hz_0dB_L.WAV:

 File Size: 184M      Bit Rate: 24.6M
  Encoding: Signed PCM    
  Channels: 2 @ 32-bit   
Samplerate: 384000Hz     
Replaygain: off         
  Duration: 00:01:00.00  

In:100%  00:01:00.00 [00:00:00.00] Out:23.0M [      |=====!] Hd:0.0 Clip:0    
Done.
root@botic:/data/usb# play test_signal_1000Hz_0dB_LR.WAV 

test_signal_1000Hz_0dB_LR.WAV:

 File Size: 10.6M     Bit Rate: 1.41M
  Encoding: Signed PCM    
  Channels: 2 @ 16-bit   
Samplerate: 44100Hz      
Replaygain: off         
  Duration: 00:01:00.00  

In:100%  00:01:00.00 [00:00:00.00] Out:2.65M [      |      ] Hd:0.0 Clip:0    
Done.
root@botic:/data/usb# play 192KHz_24bit_400Hz_0dB_LR.WAV 

192KHz_24bit_400Hz_0dB_LR.WAV:

 File Size: 69.1M     Bit Rate: 9.22M
  Encoding: Signed PCM    
  Channels: 2 @ 24-bit   
Samplerate: 192000Hz     
Replaygain: off         
  Duration: 00:01:00.00  

In:100%  00:01:00.00 [00:00:00.00] Out:11.5M [!=====|=====!] Hd:0.0 Clip:0    
Done.

ジッターレス動作

今回この基板を作った目的は BBB を外部クロックで動作させて 44.1kHz ファミリーと 48kHz ファミリーのサンプリング周波数のファイルをリサンプリングなしに再生可能にすることもありますが、もっとも大きいのは PCM5102A を PLL モードを使わずにマスタークロックモードで動作させることで PLL によるジッターの影響を無くすことにあります。Raspberry Pi ではマスタークロックを出力できませんのでこれは BBB の利点です。

さて確認にはRaspberry Pi model A+/B+ 用 DAC カードを使いますがこの基板にはマスタークロックを入力するコネクタピンの割り当てがないのとそもそも PCM5102A のマスタークロック入力端子を GND に接続しているため改造が必要になります。改造は PCM5102A の12番ピン SCK 端子を足上げしてその端子とコネクタとジャンパー接続することです。この程度のことは昔であれば簡単にできたのですが今では超困難な技になっています。

これが改造した結果です。思っていた以上に上手くいきました。

bbb-10.jpg(73147 byte)

ブリッジ基板で生成したマスタークロックは Raspberry Pi model A+/B+ 用 DAC カードのコネクタ CN4 の32ピンに割り当てています。Raspberry Pi model A/B 用 DAC カードでは空きピンが無くマスタークロックを割り当てることができません。そのためマスタークロックモードで動作させることはできません。もっともブリッジ基板から直接 PCM5102A に接続すれば可能ですが・・・(^^ゞ

PCM5102A をマスタークロックモードで動作しているかを視覚的に確認することはできませんが、PCM5102A の SCK 端子にクロックが入力されればマスタークロックモードになるのが仕様となっています。

頒布

試作したプリント基板は生板を送料のみで頒布するのが恒例?でしたが今回は部品を実装してほぼ部品費のみの価格(送料別)で頒布します。試作したプリント基板10枚のうち7枚だけになります。LINUXCOM ネットショップにて。

ここで紹介したブリッジ基板を頒布しています。興味のある方は LINUXCOM ネットショップを覗いてください。

B2R-04.jpg(171428 byte)
このページは2015年6月7日にはじめてアップされました。

目次
PR
コンテンツ
最近のトピック
週間アクセスランキング
デル株式会社
Copyright (C) 2017 Linux Computing All rights reserved