0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术干货】原来ARM+Linux音频方案如此简单!

武汉万象奥科 2022-07-13 11:28 次阅读

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

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

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

HDG2L-IoT音频接口

图1HDG2L-IoT音频接口

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

音频通讯引脚

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

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

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

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

音频控制项

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

音频功能的关键控件信息

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

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

5.jpg

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

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

6.jpg

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

7.jpg

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

8.jpg

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

9.jpg

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

10.jpg

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

11.jpg

将“ADCDataOutputSelect”设定为1,其值含义为“LeftData=LeftADC;RightData=LeftADC”。

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

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

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

12.jpg

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

13.jpg
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9111

    浏览量

    368043
  • 嵌入式
    +关注

    关注

    5087

    文章

    19148

    浏览量

    306190
  • Linux
    +关注

    关注

    87

    文章

    11322

    浏览量

    209869
收藏 人收藏

    评论

    相关推荐

    请问ads7957寄存器地址是多少?

    用ads7957采集多路信号,ARM+linux环境,自己在写驱动程序。但是看datasheet没有寄存器的地址介绍啊。 此外,有没有linux 下的驱动程序参考?
    发表于 01-02 07:59

    干货来喽!实用树莓派Linux编译指南

    不友好,有没有好的解决办法? 今天来分享一下我的私藏干货——树莓派Linux编译。编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。 本文以树莓派为例,其他板子只要带Linux系统的,大体上也都可以按这个操作。
    的头像 发表于 12-18 16:31 142次阅读
    <b class='flag-5'>干货</b>来喽!实用树莓派<b class='flag-5'>Linux</b>编译指南

    音频采集方案

    随着人工智能的高速发展,现在结合AI的人工智能音频采集方案正越来越流行。结合AI的音频采集方案能有效提升音频质量、降低噪声、实现快速转录和情
    的头像 发表于 09-29 22:25 264次阅读
    <b class='flag-5'>音频</b>采集<b class='flag-5'>方案</b>

    直播音频解决方案

    作为一家HiFi音频解决方案公司,我们的工作就像是为音频设备“量身定制衣服”,帮助客户解决各种音频相关的问题。无论你是音响制造商、会议设备商、耳机品牌还是游戏
    的头像 发表于 09-21 10:43 434次阅读
    直播<b class='flag-5'>音频</b>解决<b class='flag-5'>方案</b>

    飞腾云音频解决方案

    飞腾云不仅生产音频模组和解码器评估板,还专注于开发高品质的HiFi音频解决方案
    的头像 发表于 08-30 18:15 879次阅读
    飞腾云<b class='flag-5'>音频</b>解决<b class='flag-5'>方案</b>

    飞腾云会议音频方案

    会议音频方案往往会根据会议室的大小、形状和用途等因素进行定制。不同的会议环境需要不同的音频解决方案,以确保声音的清晰度、覆盖范围和回声控制。
    的头像 发表于 08-28 16:06 265次阅读
    飞腾云会议<b class='flag-5'>音频</b><b class='flag-5'>方案</b>

    一文读懂音频解决方案专家

    我们的工厂专注于开发和生产高保真(HiFi)音频解决方案,特别是基于XMOS技术的产品。XMOS是一种高性能的多核处理器,专门用于实现低延迟、高精度的音频处理。
    的头像 发表于 06-21 19:13 546次阅读
    一文读懂<b class='flag-5'>音频</b>解决<b class='flag-5'>方案</b>专家

    Linux平台移植音频芯片实战记录

    本文详细记录在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程,其他平台操作方法类似,希望为大家提供帮助。
    的头像 发表于 05-17 14:28 1123次阅读
    <b class='flag-5'>Linux</b>平台移植<b class='flag-5'>音频</b>芯片实战记录

    在研华科技的嵌入式IPC上设置实时Linux和EtherCAT主站

    点击蓝字关注我们盟通技术干货设置实时Linux和EtherCAT主站简介盟通技术干货Motrotech根据一些客户的反馈,在EtherCAT
    的头像 发表于 04-19 08:33 950次阅读
    在研华科技的嵌入式IPC上设置实时<b class='flag-5'>Linux</b>和EtherCAT主站

    最新蓝牙音频方案选型表

    随着蓝牙技术的不断发展,蓝牙5.2已经到来,LE Audio 是否会对传统经典蓝牙的音频垄断地位发起挑战。新的技术如何发展还尚未可知,不过目前的主流音频
    的头像 发表于 04-12 16:55 855次阅读
    最新蓝牙<b class='flag-5'>音频</b><b class='flag-5'>方案</b>选型表

    使用 PREEMPT_RT 在 Ubuntu 中构建实时 Linux 内核

    盟通技术干货构建实时Linux内核简介盟通技术干货Motrotech如果需要在Linux中实现实
    的头像 发表于 04-12 08:36 2607次阅读
    使用 PREEMPT_RT 在 Ubuntu 中构建实时 <b class='flag-5'>Linux</b> 内核

    无线麦克风音频方案

    无线麦克风是音频传输领域的一项重要技术,广泛应用于演讲、表演、会议等场合。而无线麦克风的音频方案中,无线芯片起着关键作用。下面将介绍无线麦克风音频
    的头像 发表于 02-26 15:22 861次阅读

    你见过这样的音频转接器吗?原来原理这么简单

    音频设备的桥梁,正引领着音频领域迈向新的高度。本文将深入解读Type-C音频转接器的工作原理、特点、应用场景及其未来发展趋势。 Type-C音频转接器通过其内部先进的转换电路和信号放
    的头像 发表于 02-19 17:07 1068次阅读
    你见过这样的<b class='flag-5'>音频</b>转接器吗?<b class='flag-5'>原来</b>原理这么<b class='flag-5'>简单</b>

    arm开发板如何安装linux系统

    安装Linux系统到ARM开发板是一个复杂的过程,涉及到多个步骤和不同的工具。下面是一个详实且细致的教程,包含了从准备工作到最终启动Linux系统的所有步骤。 准备工作 在开始之前,需要准备以下
    的头像 发表于 01-24 14:19 3792次阅读

    Linux系统CPU占用率100%的排查思路

    今天浩道跟大家分享linux硬核干货,工作中当你服务器CPU达到100%时,干着急是没有用的,该查问题还得自己去查。本文将给大家罗列排查异常故障思路,并且文末附上相关shell脚本,去实际一番,你会发现原来解决问题的方法
    的头像 发表于 01-23 10:26 6055次阅读
    <b class='flag-5'>Linux</b>系统CPU占用率100%的排查思路