之前在樹莓派3上順利用Android Things調(diào)通了I2S Audio輸出跟匆,享受于高信噪比的音樂之余罩抗,不禁想起來了我那能聽瞎耳朵的樹莓派2還被我流放在遍布破爛零件的荒蠻之地。其實(shí)樹莓派2應(yīng)該還能再搶救一下吧?這次我們就在搗鼓安裝Raspbian的樹莓派2B+
經(jīng)過了3天不懈努力地踩坑,我終于成功了!
0. 硬軟件環(huán)境
硬件平臺(tái):
樹莓派2B+操作系統(tǒng):
Raspbian stretch with desktop
version: September 2017
release date: 2017.09.07
kernel version: 4.9
debian version: stretch-
I2S方案:
PCM5102A我自己是基于上面的環(huán)境來嘗試的跌榔,所以本文里提及的方法也基于此,如果你使用其他的硬軟件或其他的版本捶障,本文介紹的方法不保證能成功僧须。
1. 確認(rèn)I2S解碼芯片
Raspbian內(nèi)置了很多硬件支持,但對于I2S DAC/ADC的支持貌似也不會(huì)太多项炼,所以大家購買I2S解碼器時(shí)盡量購買主流一點(diǎn)的方案担平。Raspbian的支持的硬件可以在/boot/overlays/README
里查閱,在[RaspberryPI] Raspbian內(nèi)建硬件驅(qū)動(dòng)中也會(huì)詳細(xì)介紹Raspbian現(xiàn)在支持的硬件锭部。
現(xiàn)在我大概確認(rèn)了一下暂论,至少能夠支持的I2S DAC有PCM5102, PCM512x, WM8731, WM8741這幾個(gè)系列。
2. 連接硬件
樹莓派2/3的GPIO口的排布是一樣的拌禾,可以相互兼容取胎,見下圖:
I2S音頻總線的詳細(xì)說明可以參閱[Android Things] I2S
I2S音頻總線要連接的線有下面幾條:
- BCLK - Pin12,位時(shí)鐘(Bit Clock)湃窍,由I2S Master Device(I2S主設(shè)備)產(chǎn)生闻蛀,也稱為SCLK,對應(yīng)數(shù)字音頻的每一位數(shù)據(jù)您市,SCLK都有1個(gè)脈沖觉痛,BCLK的頻率 = 2 × 采樣頻率 × 采樣位數(shù)
- LRCLK - Pin35,左右聲道選擇時(shí)鐘茵休,LRCK的頻率等于采樣頻率薪棒,它輸出低電平時(shí)手蝎,SDOUT和SDIN的數(shù)據(jù)都為左聲道數(shù)據(jù),它輸出高電平時(shí)盗尸,SDIN和SDIN的數(shù)據(jù)都為右聲道數(shù)據(jù)柑船,也稱為FS(Frame Select)或WS(Word Select)
- SDIN - Pin38帽撑,為PCM數(shù)據(jù)輸入泼各,外部從設(shè)備的PCM信號輸入到主設(shè)備上錄制或處理等
- SDOUT - Pin40,為PCM數(shù)據(jù)輸出亏拉,把主設(shè)備的音頻信號輸出到外部從設(shè)備去播放或錄制等
- GND - Pin6/9/14/20/25/30/34/39扣蜻,公共接地,為主從設(shè)備提供低電平參考及塘,隨便接哪一個(gè)都行
3. 配置Raspbian
1. 禁用板載音頻輸出(3.5mm耳機(jī)輸出)
- 打開/boot/config.txt
sudo nano /boot/config.txt
- 找到
dtparam=audio=on
莽使,并修改為dtparam=audio=off
- 保存修改后退出:
Ctrl + o
-><enter>
->Ctrl + x
2. 加載PCM5102A設(shè)備驅(qū)動(dòng)
-
打開/boot/config.txt
sudo nano /boot/config.txt
-
在末尾添加一行
dtoverlay=hifiberry-dac
(其他音頻設(shè)備請查閱添加對應(yīng)的驅(qū)動(dòng), PCM512x系列的DAC可以加載
dtoverlay=hifiberry-dacplus
) 保存修改后退出:
Ctrl + o
-><enter>
->Ctrl + x
3. 掛載I2S DAC設(shè)備到ALSA
-
打開
/boot/config.txt
sudo nano /boot/config.txt
-
在末尾添加一行
dtoverlay=i2s-mmap
保存修改后退出:
Ctrl + o
-><enter>
->Ctrl + x
-
打開
/etc/asound.conf
sudo nano /etc/asound.conf
-
添加下面配置
pcm.i2s_dac { type hw card 0 } pcm.!default { type plug slave.pcm "dmixer" } pcm.dmixer { type dmix ipc_key 1024 slave { pcm "i2s_dac" channels 2 } } ctl.dmixer { type hw card 0 }
保存修改后退出:
Ctrl + o
-><enter>
->Ctrl + x
4. 重啟Raspbian
直接在菜單中選擇重啟也可以,在命令行中重啟也可以
sodo reboot
重啟后你就可以通過I2S DAC來播放音頻了
4. 問題點(diǎn)
目前這樣配置后笙僚,還不能通過系統(tǒng)的音量調(diào)節(jié)來調(diào)整I2S DAC輸出的音量芳肌。系統(tǒng)會(huì)提示No ALSA audio devices were detected.
,后續(xù)我找到解決方法后再繼續(xù)更新到本文了肋层。