1. eggman

    Posted

    eggman
Changes in title
+Raspberry Pi2 に I2S DACを接続する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,103 @@
+Raspberry Pi2 で I2S DACを使ってみました。
+
+Raspberry Pi 3 でも手順は一緒だと思います。
+
+#環境
+* Raspberry Pi 2 model B
+ * OS:Raspbian
+* aliexepress で 7.59USDで売っている PCM5102Aのボード ([URL](https://www.aliexpress.com/item/PCM5102-DAC-Decoder-I2S-Player-Assembled-Board-32Bit-384K-Beyond-ES9023-PCM1794-compatible-Raspberry-Pi/32678406932.html))
+
+#Raspberry Pi2とDAC基板の接続
+
+| PCM5102A board | Raspberry Pi2 J8|
+|:--|:--|
+| BCK | 12 GPIO1 PCM_CLK |
+| DATA | 40 GPIO29 PCM_DOUT|
+| LRCK | 35 GPIO24 PCM_FS|
+| GND | 39 GND|
+| GND | 接続してない|
+| VCC | 02 5V|
+
+* PCM5102は3.3V駆動ですが、レギュレータで3.3Vを生成するためにボードには5Vを供給します。
+
+
+#RaspbianのI2S設定
+
+* HiFiBerry DACの設定を使います。
+
+##device treeの設定
+* /boot/config.txtを編集
+* ピンの設定をI2Sにして、ドライバとのマッピングをします。
+
+```
+dtoverlay=hifiberry-dac
+```
+
+##ドライバの設定
+* 最近のRaspbianにはドライバが含まれているのカーネルのコンパイルは不要。
+* /etc/modulesを編集。
+* 起動時にドライバ snd_soc_hifiberry_dac をロードするようにします。
+
+```
+snd_soc_hifiberry_dac
+```
+
+#I2Sのテスト
+* ドライバの確認
+
+```
+pi@raspberrypi:~ $ lsmod
+Module Size Used by
+binfmt_misc 6388 1
+cfg80211 427855 0
+rfkill 16037 1 cfg80211
+snd_bcm2835 20511 0
+bcm2835_gpiomem 3040 0
+snd_soc_bcm2835_i2s 6354 2
+bcm2835_wdt 3225 0
+snd_soc_pcm5102a 1763 1
+uio_pdrv_genirq 3164 0
+uio 8000 1 uio_pdrv_genirq
+snd_soc_hifiberry_dac 2511 0
+snd_soc_core 125885 3 snd_soc_bcm2835_i2s,snd_soc_hifiberry_dac,snd_soc_pcm5102a
+snd_pcm_dmaengine 3391 1 snd_soc_core
+snd_pcm 75698 4 snd_bcm2835,snd_soc_core,snd_soc_hifiberry_dac,snd_pcm_dmaengine
+snd_timer 19160 1 snd_pcm
+snd 51844 4 snd_bcm2835,snd_soc_core,snd_timer,snd_pcm
+i2c_dev 5859 0
+fuse 83461 3
+ipv6 347530 34
+```
+
+* サウンドデバイスの確認 card1に割り当てらています。
+ * card 0, card 1の割り当てが起動毎に異なることがあります。
+
+```
+pi@raspberrypi:~ $ aplay -l
+**** List of PLAYBACK Hardware Devices ****
+card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
+ Subdevices: 8/8
+ Subdevice #0: subdevice #0
+ Subdevice #1: subdevice #1
+ Subdevice #2: subdevice #2
+ Subdevice #3: subdevice #3
+ Subdevice #4: subdevice #4
+ Subdevice #5: subdevice #5
+ Subdevice #6: subdevice #6
+ Subdevice #7: subdevice #7
+card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
+ Subdevices: 1/1
+ Subdevice #0: subdevice #0
+card 1: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
+ Subdevices: 1/1
+ Subdevice #0: subdevice #0
+```
+
+* 音の再生 card1を指定して再生します。
+
+```
+$ aplay -D hw:1,0 test.wav
+Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
+```
+
+