tunozemichanの日記 / tunozemichan's diary

SORD社のコンピューターM68やM68MXの解析についての備忘録です。This blog is a memorandum about the analysis of SORD's computers M68 and M68MX.

raspberry pi 3にmikroe audio code board PROTOを接続して、再生、録音するまでの方法

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