阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单的ARM+Linux音频方案

31次阅读
没有评论

共计 1453 个字符,预计需要花费 4 分钟才能阅读完成。

导读 嵌入式产品开发中经常遇到音频的输入输出问题,如何为其添加“喇叭”、“麦克风”设备呢?本文将简单介绍 ARM+Linux 产品中的音频解决方案。

我们先认识下 I2S(Inter-IC Sound)总线。I2S 又称集成电路内置音频总线,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,有效避免因时差诱发的失真。

以 HDG2L-IoT 评估套件为例,RZ/G2L 处理器提供至少一路 I2S 总线,通过该总线与音频编解码芯片(IC 型号 WM8960)连接,用于提供高质量的录音播音功能。音频模块的硬件部署如下所示。

简单的 ARM+Linux 音频方案

G2L 核心板与 WM8960 的音频通讯引脚如下所示:

简单的 ARM+Linux 音频方案

在 Linux 系统的音频编解码驱动中,通过 I2C 通讯接口与音频 IC 通讯,把音频 IC 内的各个功能寄存器抽象成音频控件,这样用户即可在 User 空间内直接调整 IC 内的参数。I2S 音频引脚,则是数字信号发送、接收的通道。

播音时,音频 IC 接收到数字信号后则转换为模拟信号发送出去,录音时,音频 IC 把收到的音频模拟量转换为数字量,发送给处理器。

ALSA 是 linux 的主流音频体系结构,它包含内核驱动集合,API 库和工具对 Linux 声音进行支持,应用程序只要调用 alsa-lib 提供的 API,即可以完成对底层音频硬件的控制。

Linux 通过 alsa 库以及 alsa 工具管理音频 IC 的控件,通过“amixer controls”列出当前系统内的音频控制项:

简单的 ARM+Linux 音频方案

音频功能的关键控件信息如下所示。(录音通道、播音通道、耳机音量大小、喇叭音量大小)。

在开发板下,运行 aplay 程序可以对音频播放进行测试。在测试前,需要将耳机插入开发板的耳机插孔中。

为测试基于 I2S 的音频输出接口,在命令行下执行如下命令:

简单的 ARM+Linux 音频方案

其中 2.wav 为需要播放的音频文件,且此处假定 2.wav 位于 /home/root/audios 目录下。

在进行音频播放时,对于基于 I2S 的音频输出接口,可以使用 amixer 程序对音量进行调节。使用 amixer 程序对耳机播放音量进行调节的命令行格式为:

简单的 ARM+Linux 音频方案

其音量值取值范围在 0~127 之间,127 表明最大音量。例如要将音量设置为 100,可在命令行下执行如下命令:

简单的 ARM+Linux 音频方案

将扬声器接入 HDG2L-IOT 开发板的左右声道插座中,在播放音频前可先设置扬声器播放音量以及总音量,然后播放音频文件:

简单的 ARM+Linux 音频方案

录音功能需设置录音控件的参数,如下所示。

简单的 ARM+Linux 音频方案

用 arecord 命令录音并保存为“/tmp/t.wav”,然后用 aplay 命令回放进行验证。

简单的 ARM+Linux 音频方案

由于当前的麦克风输出信号仅接到了音频处理的 Left 端作为输入,所以播放录音文件时仅左声道有输出,若希望将麦克风输出信号同时记录在左右声道可做如下设置:

简单的 ARM+Linux 音频方案

将“ADC Data Output Select”设定为 1,其值含义为“Left Data = Left ADC; Right Data = Left ADC”。

由上可知,音频编解码芯片在 Linux 系统中以控件的形式存在,内部的参数一般只记录在内存中,当系统掉电时,修改的参数就会消失,所以需要保存和恢复指令将上次的参数保存在配置文件中。

alsa 的配置文件为:/var/lib/alsa/asound.state

控件修改后的写入操作如下所示。

alsactl store

控件恢复参数的操作如下所示(注:重启板子后会自动读取配置文件)。

alsactl restore

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1453字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中