找硬件驱动
连接好DAC硬件后,发现找不到设备,aplay -l 只能看到板载声卡bcm2835,这是因为没有加载的原因。
数莓派由于没有BIOS ,需要/boot/config.txt 来加载配置。
而Volumio、Moode 是整体烧录,软件界面中可以有DAC输出的相关设置,但最终都是树莓派。
其工作原理:当Linux内核加载时,会读取/boot/config.txt中的设备配置和设备参数配置来把设备动态加载到Device Tree。
config.txt 中要用到的配置
dtoverlay上配你想要加载设备,这个可以在官方Github 上查询最新支持的 设备,dtparam是设备的参数配置。https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README ,这上面有详细信息。
我这里用的ES9038Q2M,官方是用Q2M的
Name: i-sabre-q2m
Info: Configures the Audiophonics I-SABRE Q2M DAC
Load: dtoverlay=i-sabre-q2m
Params:
使用nano命令编辑config.txt 文件中的内容
sudo nano /boot/config.txt
配置 dtoverlay=i-sabre-q2m,
再配置dtparam=i2s=on ,打开i2s
配置的条目前需去掉#号,使其生效。比如要开SPI 也是一样的。保存后退出, 重启即可加载DAC,可以选择DAC为输出默认声卡,可以软件中选择输出为DAC。
硬件加载也可以用rpi-dac、hifiberry-dac,但我这是9038Q2M,官方有Q2M的芯片驱动加载,所以我就加载这个,PCM512X的就可以用前面这两个,因为版本太多,比如plus版、pro 版,里面区别还是很大,所以最好搞清买的板子是什么芯片或什么版本,官方或播放软件上是否支持完善(因为很多卖家是不清楚的,全叫你选择通用驱动加载)。
I2S 协议
通俗来说I2S 就是芯片与芯片之间的数字音频硬件通信协议规范,(Inter—IC Sound),也为I2S。
是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。
I2S 是串行数据。
串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。
数字音频源通常会创建两个数据字,一个用于左声道,一个用于右声道,每个采样间隔一次。例如,具有 44.1 kHz 采样率的 CD 音频源每秒将传送两个 16 位字 44,100 次。在单条串行线路上,这是高达每秒 1,411,200 位(44100 x 16 x 2)。
这样串行传输怎么保证的,这就是I2S提供了字选择线:
帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK的频率等于采样频率。
串行数据SDATA,就是用二进制补码表示的音频数据
树莓派上的I2S输出口
VCC – 5V 电源
GND——接地
地线
LRCK – BCM GPIO 19 (FS)
数据 – BCM GPIO21 (DOUT)
BCK——GPIO 18(时钟)
安装DAC
芯处很多,有些配件(如显示屏)等是单独加的,可以拿盒子装起来,只连接需要的线路,自行组装,装上盒子肯定还是要漂亮得多。
我就是在淘宝上买的成品板子了,使用排插组装好就可以。
组装好后,我是连接我的书架箱系统,并使用plexamp 进行播放,没有安装volumio或moode,带上屏用于听下音乐。
我喜欢plexamp 的播放和功能,但没有中文版,官方也在着手处理语言,但中文进度太低了,翻译见这里:https://explore.transifex.com/plex-1/plex-labs/
评论区