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

    文章

    9042

    浏览量

    366732
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    303020
  • Linux
    +关注

    关注

    87

    文章

    11221

    浏览量

    208881
收藏 人收藏

    评论

    相关推荐

    音频采集方案

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

    直播音频解决方案

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

    飞腾云会议音频方案

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

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

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

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

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

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

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

    最新蓝牙音频方案选型表

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

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

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

    无线麦克风音频方案

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

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

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

    arm开发板如何安装linux系统

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

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

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

    WT2003H MP3语音芯片方案:强大、灵活且易于集成的音频解决方案

    在当今的数字化时代,音频技术的普遍性已不容忽视。从简单的音乐播放,到复杂的语音交互,音频技术的身影无处不在。在这个背景下,WT2003HMP
    的头像 发表于 12-02 09:39 449次阅读
    WT2003H MP3语音芯片<b class='flag-5'>方案</b>:强大、灵活且易于集成的<b class='flag-5'>音频</b>解决<b class='flag-5'>方案</b>

    Linux系统中的FBE实现方案和特点

    的eCryptfs FBE方案,以及众多基于FUSE的FBE方案。 前面章节已经简单介绍过基于dm-crypt的FDE方案在ubuntu虚拟机上的验证情况,这里先
    的头像 发表于 11-29 11:23 1007次阅读
    <b class='flag-5'>Linux</b>系统中的FBE实现<b class='flag-5'>方案</b>和特点

    怎么通过alsa去配置和开发AD1937的多路音频

    最近在做多路音频的项目,选择了AD1937,AD1937/1938/1939系列多路音频编解码芯片,官方已经提供了linux下的驱动,但应用中都是使用DSP去做的,我们需要在linux
    发表于 11-29 07:17