audio code board PROTOとraspberry pi 3との接続
proto raspberry
----- -----
sck(I2S_SCK) -> rpi 12 GPIO 18 / PCM_CLK
miso(I2S_DOUT) -> rpi 38 GPIO 20 / PCM_DIN
mosi(I2S_DIN) -> rpi 40 GPIO 21 / PCM_DOUT
adcl+dacl(I2S_LRCK) -> rpi 35 //both proto pins go to the same rpi pin GPIO 19 / PCM_FS
sda -> rpi 3
scl -> rpi 5
3.3v -> rpi 1
gnd -> rpi 6(GNDなら何でもよい)
adclとdaclは同じクロックを使うので結線します。sda、sclをraspberry piに繋がないと認識されないので注意が必要です。
raspberry pi 3の設定
raspberry pi Imagerで、Legacy(debian bullseye)を選択して、OSをインストールします。
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
(追記)最新のbookwormでも動きました。
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
/boot/config.txtに以下の修正を加えました。bookwarmでは、/boot/firmware/config.txtです。
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on
#dtoverlay=vc4-kms-v3d
#max_framebuffers=2
#dtparam=audio=on
dtoverlay=rpi-proto
rebootし、再起動時のdmesgを見ます。盛大にエラーが出ていますが気にしなくてよいです。まずは、PROTOが認識されているか確認します。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpiproto [snd_rpi_proto], device 0: WM8731 HiFi wm8731-hifi-0 [WM8731 HiFi wm8731-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
上記のように出力されれば認識されています。次に、WM8731の設定をいます。以後、sudoでやった方が良いよです。
$ sudo amixer controls
numid=2,iface=MIXER,name='Master Playback ZC Switch'
numid=1,iface=MIXER,name='Master Playback Volume'
numid=4,iface=MIXER,name='Line Capture Switch'
numid=5,iface=MIXER,name='Mic Boost Volume'
numid=6,iface=MIXER,name='Mic Capture Switch'
numid=8,iface=MIXER,name='ADC High Pass Filter Switch'
numid=3,iface=MIXER,name='Capture Volume'
numid=10,iface=MIXER,name='Playback Deemphasis Switch'
numid=14,iface=MIXER,name='Input Mux'
numid=13,iface=MIXER,name='Output Mixer HiFi Playback Switch'
numid=11,iface=MIXER,name='Output Mixer Line Bypass Switch'
numid=12,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
numid=7,iface=MIXER,name='Sidetone Playback Volume'
numid=9,iface=MIXER,name='Store DC Offset Switch'
最初に、numid 13の'Output Mixer HiFi Playback Switch'をONにします。
$ sudo amixer cset numid=13 on
次に、numid 6の'Mic Capture Switch'をONにします。PROTOは入力にLINE INでなくMICを使用しているのでこれをONにする必要があります。
$ sudo amixer cset numid=6 on
capture volumeを設定します。これはLINE INの為の設定かもしれないので不要かもしれません。
$ sudo amixer cset numid=3 29
マスターボリュームを設定します。
$ sudo amixer cset numid=1 123
不要かもしれませんが、Mic boost volumeも設定しました。
$ sudo amixer cset numid=5 120
よくわからないですが、Sidetone Playback Volume'を0にしておきます。
$ sudo amixer cset numid=7 0
こちらもよくわからないですが、'Input Mux'を1にしました。これでMIC入力になる?
$ sudo amixer cset numid=14 1
最後に設定を記録します。以下のコマンドはPROTOが応答しなかったときも実行すると動作が復帰することがあります。
$ sudo alsactl store
最後にrebootします。
$ sudo reboot
再起動後はPROTOを使用できるようになっているはずです。
録音は、以下のコマンドで行います。
$ arecord -c 2 -D hw:0,0 -f S24_LE -r48000 save.wav
このコマンドで、Signed 24 bit Little Endian, Rate 48000 Hz, Stereoで保存されます。96kHzはうまく録音できません。この辺が限界かもしれません。
再生は、以下の通りにします。
$ aplay save.wav