简单的ARM+Linux音频方案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

alsactl store

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

alsactl restore
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言: 如今DSP技术不断更新,DSP的生产商也在不断地增加。ADI公司的DSP芯片虽说市场占有率低于TI公司,但是其在中高端领域如医学仪器、视频压缩等的市场占有率远远高于TI,高端应用则几乎被ADI垄断。ADI公司的DSP产品有着自己的特点,如可从8位EPROM引导程序、系统时钟一般不经分频直使用、串行口带有硬件压扩、可编程等待状态发生器等。正是这些特点使得其产品没有被淘汰,反而得到了广泛的应用。以下将介绍基于NXP LPC4337的DSP开发板设计及资料分享。 DSP音频开发板概述: 该DSP音频开发板该应用于音频DSP开发平台。硬件外围设备兼容Arduino和MIDI控制器功能。该兼容Arduino功能主要用于扩展DSP开发板的潜在功能应用。硬件部分采用NXPLPC4337作为DSP处理器,LPC4337同时具备内核Cortex -M4和Cortex-M0双核处理器。因此,该DSP开发板能够实时的处理音频信号,同时可以作为一个控制器。 DSP音频开发板2.0特点: 微控制器:采用NXP LPC4337,Cortex M4F/M0 204MHZ SDRAM模块:Alliance Memory AS4C8M16S 128MBIT 2个10PIN额外的GPIO便于扩展更多的IO口 音频编解码器:Wolfson WM8778 24bit 96Khz microSD卡槽 支持USB 2.0 w/ OTG and Host 专用的模拟和数字音频电路 1A 5V直流电源 USB代码导入功能 ARM微处理器支持JTAG口调试 DSP音频开发板电路原理图和PCB截图: 源文出处:https://hackaday.io/project/623-mako-dsp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值