WM8960 Audio HAT
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品简介
前言
本产品是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。板载标准3.5mm耳机接口,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。
产品特性
- 供电电压:5V
- 逻辑电压:3.3V
- 音频编解码芯片:WM8960
- 控制接口:I2C
- 音频接口:I2S
- DAC信噪比:98dB
- ADC信噪比:94dB
- 耳机驱动:40mW (16Ω@3.3V)
- 扬声器驱动:1W per channel (8Ω BTL)
硬件资源
LP、LN分别对应左扬声器的正、负极; RP、RN分别对应右扬声器的正、负极。
功能引脚 | 树莓派引脚(BCM) | 描述 |
5V | 5V | 电源正(5V电源输入) |
GND | GND | 电源地 |
SDA | P2/SDA | I2C数据输入 |
SCL | P3/SCL | I2C时钟输入 |
CLK | P18 | I2S位时钟输入 |
LRCLK | P19 | I2S帧时钟输入 |
DAC | P21 | I2S串行数据输出 |
ADC | P20 | I2S串行数据输入 |
BUTTON | P17 | 自定义按键 |
树莓派使用
本产品例程只适用于树莓派官方系统(Raspbian)
安装驱动
屏蔽树莓派默认音频:
sudo nano /boot/config.txt
找到dtparam=audio=on,在最前面加上#号,将其改成#dtparam=audio=on,改成ctrl+c然后Y保存退出
更新软件源:
sudo apt-get update sudo apt-get upgrade
检查内核版本:
uname -a 下载驱动程序: git clone https://github.com/waveshare/WM8960-Audio-HAT
安装WM8960驱动:
cd WM8960-Audio-HAT #需要等待一定的时间 sudo ./install.sh sudo reboot
重启后运行如下命令看下驱动是否加载成功。
sudo dkms status
pi@raspberrypi:~ $ sudo dkms status wm8960-soundcard, 1.0, 4.19.58-v7l+, armv7l: installed
注意:首次安装如果更新了内核可能会出现有噪声等问题,需要重启后再次运行命令安装驱动就可以了。
这里提供的是一个完成教程,如果安装多次还是无法出现驱动可以使用我们做好的镜像(版本2019-07-10,密码l9jz)使用。
检测声卡
- 检查播放:aplay -l
pi@raspberrypi:~ $ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0
- 检查录音:arecord -l
pi@raspberrypi:~ $ arecord -l **** List of CAPTURE Hardware Devices **** card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0
录音播放测试
录播测试
sudo arecord -f cd -Dhw:0 | aplay -Dhw:0
程序运行后通过耳机或者喇叭会听到麦克风采集到的声音,注意喇叭不能开靠近麦克风,否则会导致共振产生啸叫。
录音
sudo arecord -D hw:0,0 -f S32_LE -r 16000 -c 2 test.wav
test.wav是录制生成的文件名。
播放
sudo aplay -Dhw:0 test.wav
播放刚刚录制的音频
调节音量
默认的音量是比较小的
sudo alsamixer
如果 WM8960 声卡没有设置为默认声卡则需要按 F6 选择声卡设备。
实际上右边还有很多可以调节的选项。
mpg123播放器
aplay只支持wav的音乐,实际上MP3格式的音乐会更加多,安装:
sudo apt-get install mpg123 sudo mpg123 music.mp3
需要注意,这里的music.mp3需要替换成你的mp3音乐。
图形化smplayer
如果是命令行系统可以跳过,如果你的是桌面系统,安装:
sudo apt-get install smplayer
在界面中右键选择wm8960-soundcard为默认
在菜单中打开smplayer软件,打开音频文件即可播放。(smplayer也可以播放视频)
程序控制
我们提供了一个简单的python控制例程。
- 安装对应的库
sudo apt-get install libasound2-dev git clone https://github.com/larsimmisch/pyalsaaudio cd pyalsaaudio sudo python setup.py build sudo python setup.py install
- 下载例程
wget http://www.waveshare.net/w/upload/1/19/WM8960_Audio_HAT_Code.tar.gz tar zxvf WM8960_Audio_HAT_Code.tar.gz sudo chmod 777 -R WM8960_Audio_HAT_Code
- 播放
sudo python playwav.py music.wav
- 录音
sudo python recordwav.py out.wav
VisionFive2使用
加载驱动
在 U-boot 打印到图示位置试,按下任意键可以进入设备树的切换
将开机时的命令换成如下
ext4load mmc 1:3 a0000000 /boot/uEnv.txt env import a0000000 17c setenv fdtfile starfive/jh7110-visionfive-v2-wm8960.dtb sysboot mmc 1:3 ext2 b0000000 /boot/extlinux/extlinux.conf
202302 系统,加载驱动
开机,正常进入系统,输入命令
nano /boot/uEnv.txt
进入系统启动配置文件,将 1 部分的内容注释掉,添加 2 部分的内容
fdtfile=starfive/jh7110-visionfive-v2-wm8960.dtb
开始使用
安装alsa-utils
apt install alsa-utils
如果一开始没有接入模块,需要重启VisionFive2后才能检测到音频设备
输入 aplay -l 列出声卡和数字音频设备
注意观察图上标出来的位置,这表示声卡和数字音频设备的设备号,其中card0,device0 为VisionFive2主板板载耳机接口,card0,device2为WM8960模块板载耳机接口
输入 arecord -l 列出声卡和录音设备
注意观察图上标出来的位置,这表示声卡和录音设备的设备号,card0,device1为WM8960模块板载的两个贴片麦克风
输入命令:
arecord -Dhw:0,1 -f S32_LE -r16000 -c2 -d 10 -t wav sound_32b_16k.wav
开始录制10秒32位、16kHz的音频,并将其保存在当前目录下,文件名为sound_32b_16k.wav
输入命令:
aplay -Dhw:0,2 -f S32_LE -r16000 -t wav sound_32b_16k.wav
使用WM8960模块板载耳机接口播放音频
注意VisionFive2主板板载耳机接口只支持输出16位音频格式的音频
RDK X3 MODULE使用
录音播放功能
如果您使用的是server的镜像,请导入最新的两个音频软件包到系统,如果不是请跳到驱动安装
wget https://www.waveshare.net/w/upload/3/3b/Audio_Driver_HAT_V2.zip unzip Audio_Driver_HAT_V2.zip sudo dpkg -i *.deb sync sudo reboot
安装驱动
git clone git@github.com:HorizonRDK/hobot-audio.git cd hobot-audio sudo ./install.sh What type of audio board do you have? 1. WM8960 Audio HAT 2. Audio Driver HAT
此处选择1
运行命令sync && reboot重启开发板,如/dev/snd下出现如下设备节点,说明转接板安装成功
root@ubuntu:~# ls /dev/snd/ by-path controlC0 pcmC0D0c pcmC0D0p pcmC0D1c pcmC0D1p timer
录音播放测试
2通道麦克风录音:
tinycap ./2chn_test.wav -D 0 -d 0 -c 2 -b 16 -r 48000 -p 512 -n 4 -t 5
双通道音频播放:
tinyplay ./2chn_test.wav -D 0 -d 1
FAQ
将以下设置行加到/boot/config.txt 文件的最后一行,保存后重启系统,再安装驱动。
arm_64bit=0
终端运行以下指令重启声卡服务,然后再测试一下
sudo systemctl restart wm8960-soundcard.service
耳机座子是4段国标(又称OMTP)耳机接口,如果是美标(又称CTIA)耳机可能会出现麦没有声音现象。
24Mhz。
两个喇叭都是8欧姆5W的。
可以,在说明的录音测试部分有详细说明
1.查看一下/boot/config.txt文件是否屏蔽掉了树莓派默认音频。
2.注意是否用对驱动版本。
3.确保安装驱动的过程没有报错。
4.安装好之后一定要重启。