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

    文章

    9373

    浏览量

    378640
  • 嵌入式
    +关注

    关注

    5158

    文章

    19730

    浏览量

    318628
  • Linux
    +关注

    关注

    87

    文章

    11522

    浏览量

    214290
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    蓝牙音频模组中模拟音频和数字音频如何选择?

    。数字音频:蓝牙数字音频,就是将数字音频信号通过蓝牙技术进行无线传输。它的工作原理可以简单理解为:1.数字编码:将模拟
    的头像 发表于 04-17 15:55 ?389次阅读
    蓝牙<b class='flag-5'>音频</b>模组中模拟<b class='flag-5'>音频</b>和数字<b class='flag-5'>音频</b>如何选择?

    Linux系统中通过预留物理内存实现ARM与FPGA高效通信的方法

    管理子系统管理。因此,需要预留一部分物理内存,使其不被内核管理。接下来将为大家详细介绍在 Linux 系统中通过预留物理内存实现 ARM 与 FPGA 高效通信的方法,预留物理内存包括
    的头像 发表于 04-16 13:42 ?726次阅读
    <b class='flag-5'>Linux</b>系统中通过预留物理内存实现<b class='flag-5'>ARM</b>与FPGA高效通信的方法

    Arm 技术预测:2025 年及未来的技术趋势

    Arm 不断思考着计算的未来。无论是最新架构的功能,还是用于芯片解决方案的新技术Arm 所创造和设计的一切都以未来技术的使用和体验为导向。
    发表于 01-14 16:43 ?316次阅读
    <b class='flag-5'>Arm</b> <b class='flag-5'>技术</b>预测:2025 年及未来的<b class='flag-5'>技术</b>趋势

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

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

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

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

    音频功放芯片:音频设备的核心驱动力

    音频功放芯片是音频设备核心,放大音频信号并精准控制音质、音量。高保真、稳定、易集成,但面临散热和成本问题。尽管如此,它仍是呈现高品质声音不可或缺的部分。
    的头像 发表于 12-17 16:37 ?961次阅读
    <b class='flag-5'>音频</b>功放芯片:<b class='flag-5'>音频</b>设备的核心驱动力

    瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示

    本文介绍瑞芯微方案主板/开发板Linux系统播放音频的方法,触觉智能RK3562开发板演示,通用RK3566、RK3568、RK3588等
    的头像 发表于 12-13 11:40 ?1001次阅读
    瑞芯微主板/开发板<b class='flag-5'>Linux</b>系统播放<b class='flag-5'>音频</b>方法,触觉智能RK3562开发板演示

    Linux从零到精通:最简单的Shell脚本入门教程

    在数字化时代的浪潮中,Linux操作系统凭借其高效、稳定、开源的特性,成为了无数开发者和系统管理员的首选。 而在Linux的庞大生态系统中,Shell编程无疑是连接用户与系统内核的桥梁,它让我们能够
    的头像 发表于 12-05 09:56 ?1638次阅读
    <b class='flag-5'>Linux</b>从零到精通:最<b class='flag-5'>简单</b>的Shell脚本入门教程

    车载应用中的高品质,高性能音频CODEC解决方案

    车载应用中的高品质,高性能音频CODEC解决方案 ? ? 新唐科技在全方位布局智能车载应用市场,深入车载音频多样化应用场景,持续推出音频的新产品及解决
    的头像 发表于 11-28 16:21 ?1496次阅读
    车载应用中的高品质,高性能<b class='flag-5'>音频</b>CODEC解决<b class='flag-5'>方案</b>

    音频采集方案

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

    直播音频解决方案

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

    瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案

    本文适用所有Linux系统的开发板、主板添加自启动命令的方法,本次使用了触觉智能的EVB3588开发板演示,搭载了瑞芯微RK3588旗舰芯片,深圳触觉智能Arm嵌入式硬件方案商,专注工控、国产化、鸿蒙硬件
    的头像 发表于 09-19 09:32 ?2142次阅读
    瑞芯微RK3588开发板<b class='flag-5'>Linux</b>系统添加自启动命令的方法,深圳触觉智能<b class='flag-5'>Arm</b>嵌入式鸿蒙硬件<b class='flag-5'>方案</b>商

    Arm精锐超级分辨率技术解析

    近日,Arm 推出了 Arm 精锐超级分辨率技术 (Arm Accuracy Super Resolution, Arm ASR),这是一款
    的头像 发表于 09-03 11:28 ?1430次阅读
    <b class='flag-5'>Arm</b>精锐超级分辨率<b class='flag-5'>技术</b>解析

    飞腾云音频解决方案

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

    飞腾云会议音频方案

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