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

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

3天内不再提示

音频编解码器的作用以及选择时应考虑的主要特点以及如何有效使用

lPCU_elecfans 来源:电子发烧友网 作者:电子发烧友网 2020-12-30 09:28 次阅读

嵌入式系统中,越来越需要提供高保真音频而不是蜂鸣器来实现用户反馈,包括报警和警报。虽然过去哔哔声或者鸣叫声很有效,但用户期望通过播放 MP3 等文件格式音频才能产生的高级声音。问题是,音频播放可能会让人紧张,并增加系统成本和复杂性。第一直觉是找到可以播放 MP3 的微控制器,但这往往会使物料清单 (BOM) 增加几美元并需要相当复杂的嵌入式软件音频编解码器就是一个特别能平衡额外成本和软件复杂性的解决方案。音频编解码器不仅能接受来自微控制器的音频数据流,往往还具有多种功能,使得开发人员可以对音频播放系统进行精心调校,提高系统播放音质。

本文将讨论音频编解码器的作用、开发者在选择时应考虑的主要特点以及如何有效使用。本文将以 AKM Semiconductor、Texas Instruments和 Maxim Integrated 的解决方案为例进行介绍和说明,同时也会介绍其他厂商的解决方案。最后将介绍如何使用编解码器加速开发音频播放应用并降低系统成本的小窍门和小技巧。

什么是音频编解码器?

音频编解码器是一种硬件组件,能够对包含音频信息的数字数据流进行编码或解码1。音频编解码器能够分担微控制器的音频处理任务,因此非常有用。这样可以大大降低软件复杂性,也可以在具体应用中采用成本较低、性能较低的微控制器。 典型的音频编解码器会包含几个功能块:

一个用于传输或接收经过编码处理的数字音频数据的 I2S 接口

一个用于配置和读取音频编解码器的控制寄存器的 I2C 接口。

一个连接到模数转换器 (ADC) 的麦克风输入。

至少一个音频输出通道,如扬声器输出,但大多数还包括一个线路输出,也可能包括多个扬声器输出,用于立体声播放。

一个包含高通、低通、缺口和均衡器滤波器的数字功能块,用于调节音频播放和录音。

我们以 AKM Semiconductor 的 AK4637EN 24 位音频编解码器为例,这是一款凭借成本低、音频能力强大而颇受欢迎的音频编解码器(图 1)。AK4637EN 具有所有这些功能,还配有一个蜂鸣器输入,可以使用所需频率的脉宽调制 (PWM) 信号来产生蜂鸣。

ef4bd154-4a03-11eb-8b86-12bb97331649.png

开发者会发现,音频编解码器的主要区别在于提供输出单声道音频还是立体声音频,以及数字块功能。例如,AK4637EN 采用了一个高通滤波器、一个低通滤波器、一个四段均衡器、一个自动调平通道功能和一个单段均衡器。后者可作为陷波滤波器使用。开发者如何设置这些数字滤波器会极大地影响系统的声音。

刚接触音频播放的开发者有时会对音频编解码器感到恐惧。例如,虽然 AK4637EN 是一款简单的音频编解码器,但快速浏览规格书会发现它有 64 个可配置寄存器。乍一看好像很多,但这些寄存器大多是用来设置各种可用数字滤波器的滤波系数的。要想让系统正常输出音频,只需使用少量寄存器,这使得音频编解码器的驱动开发远比新手想象的简单。

如何选择音频编解码器

产品开发过程中,选择任何器件的关键因素之一就是成本,音频编解码器也不例外。不过需要牢记的是,开发人员得到的东西物有所值,所以当涉及到音频时,团队必须在设计要求和解决方案的关键参数之间仔细权衡。 首先考虑的是音频编解码器的输出要求。有几种不同的选择。例如,AK4637EN 有一个线路输出和一个单声道扬声器输出。还有其他编解码器,比如 Texas Instruments 的 TLV320AIC3110IRHBR 立体声音频编解码器,可以 1.29 W 的功率驱动两个扬声器(图 2)。

ef6f1b46-4a03-11eb-8b86-12bb97331649.png

如 Maxim IntegratedMAX9867等其他音频编解码器都设计成只驱动一对耳机(图 3)。MAX9867 具有典型的 I2S和 I2C数字接口,还包含立体声麦克风输入和两个数字化选择线路输入。 在这三种解决方案中,确定采用什么样的输出类型(甚至输入类型)是早期的关键决策。 开发者还需要考虑他们将驱动什么负载。音频编解码器将要直接驱动耳机、一个音箱还是一对音箱,并提供何种输出等级?

如果系统要驱动一个 5 W 扬声器,那么没有多少嵌入式系统的编解码器能做到这一点。相反,开发人员可能希望选择线路输出,并使用单独的 D 类放大器直接驱动扬声器。这样既能节省一些成本,又能带来设计灵活性。 最后两个考虑因素是内部布线和数字滤波能力。这里是决定音频编解码器实现真正差异化和成本差异的地方。例如,TLV320AIC311IRHBR 具有去爆音和软启动功能,可以将扬声器的爆音降到最低,并使其平稳过渡到音频播放。该器件的每个输出通道还配备了一个内部混音器和数字音量控制器。 开发者应在音频编解码器需求、BOM 以及电路所需电路板空间之间进行仔细平衡。

音频播放系统

在使用音频编解码器时,务必考虑到除音频编解码器之外还有几个不同的功能块是成功播放音频所必需的。具体的功能块会根据应用和决定采取的播放方法略有不同,图 4 所示只是一个概括说明。

ef9e4ff6-4a03-11eb-8b86-12bb97331649.png

在这张图中有几点值得讨论一下。首先,需要有一些存储音频播放文件的方法。有两种选择,一是以内部方式存储文件,即存储在微控制器闪存中,二是存储在外部闪存中。如何选择取决于音频文件的大小,以及微控制器的内部闪存容量。 开发者还需要考虑采用什么样的音频播放格式。最常见的格式是 MP3。在这种情况下,所选的单片机需要有一个支持 MP3 解码的软件栈。

这样就可以打开 MP3 文件,然后使用动态内存访问 (DMA) 控制器通过 I2S 接口将音频信号推送出去。即使是 I2S 端口也可以配置为主/从和其他几种模式,因此需要仔细检查,以确保数据以正确的速率传输到编解码器。 如前所述,根据应用确定需不需要外部音频放大器。典型的编解码器输出功率约为 1 - 1.5 W,这对驱动小型扬声器很有用。如果要驱动 3 W 或功率更高的扬声器,则需要使用外部放大器。

同样,应用最广泛的是 D 类音频放大器。放大器也不一定需要具有可变增益。音频编解码器可以通过数字方式调节音量控制器,提供较宽的输出功率范围。 经常被忽视的一个方面是大容量电容器。当播放音频时,会严重拉动电源轨。如果电路板上的电容不足,会极大影响输出质量,并会出现一种类似鼻音的声音以及其他一些不必要的噪声。在测试过程中,可以通过仔细监控电源轨来检测这些声音。在 PC 板开发过程中,为了能调节输出电路而通过在电路板上预留更多的空间来尝试不同的电容值,是一个不错的想法。

选择和使用音频编解码器的小窍门和小技巧

音频编解码器可以极大地简化嵌入式软件,为应用提供良好的音质。如果开发人员之前没有使用过音频编解码器,那么音频编解码器可能会很棘手。为了成功地利用音频编解码器,研发团队应记住如下几个"小技巧和小窍门":

在微控制器内使用直接内存访问控制器 (DMA) 功能,以最少的 CPU 干预来供给音频编解码器。这将有助于确保编解码器具有充足的数据来处理。

不播放音频时,请使用编解码器静音功能,以防止低电平输出噪音进入扬声器。

在禁用或启用播放时,请使用音频编解码器的软静音功能,以防止扬声器爆音和其他不必要的噪音。

编解码器初始化后,使用终端应用输出编解码器寄存器。当尝试调试问题或调节扬声器输出电路和箱体时,这一点特别有用。

充分利用编解码器中的内部数字滤波机制。通过数字滤波器,开发人员可实现均衡输出,过滤掉不需要的高频和低频信号,最大限度地提高音响系统音质。

请不要忘了,只有当电路板和扬声器安装在箱体内时,调音才是一项有用的工作,因为箱体和安装会造成巨大差异。

要想入门,开发人员可以使用 Maxim Integrated 的 MAX9867EVKIT+评估套件进行实验(图 5)。

该套件由电路板和相关软件组成,配置为使用 Sony/Philips 数字接口 (S/PDIF) 发送和接收音频数据,但也可以设置为使用 I2S。该套件有两个 RCA 输入插孔,两个 3.5 毫米 (mm) 模拟输出耳机插孔,以及光纤接收和发射模块。该软件兼容 Windows,通过 USB 电缆连接 PC 时会打开一个图形用户界面 (GUI),开发人员可在该界面中对 MAX9867 的设置进行实验(图 6)。

efedb064-4a03-11eb-8b86-12bb97331649.png

结论

嵌入式系统用户已经习惯了高质量音频,以至于现在已经不愿意使用蜂鸣器和蜂鸣声来代替报警、警报和其他用户音频反馈。这使得开发团队有责任在其系统中实现 MP3 播放功能。乍看起来这是一项复杂的工作。然而,通过在微控制器旁边使用正确的音频编解码器,并遵循一些设计最佳实践,开发人员就可以平衡与音频应用相关的成本和复杂性。 作者:Jacob Beningo 来源:Digi-Key

责任编辑:xj

原文标题:如何选择和使用嵌入式音频反馈文件的音频编解码器和微控制器?

文章出处:【微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

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

    关注

    48

    文章

    6803

    浏览量

    147594
  • 嵌入式
    +关注

    关注

    4981

    文章

    18265

    浏览量

    288189
  • 音频编解码器

    关注

    4

    文章

    118

    浏览量

    55697

原文标题:如何选择和使用嵌入式音频反馈文件的音频编解码器和微控制器?

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    集成电源管理和音频编解码器TPS65950数据表

    电子发烧友网站提供《集成电源管理和音频编解码器TPS65950数据表.pdf》资料免费下载
    发表于 03-06 11:15 0次下载
    集成电源管理和<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>TPS65950数据表

    TPS65920和TPS65930集成电源管理/音频编解码器数据表

    电子发烧友网站提供《TPS65920和TPS65930集成电源管理/音频编解码器数据表.pdf》资料免费下载
    发表于 03-06 10:55 0次下载
    TPS65920和TPS65930集成电源管理/<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>数据表

    使用具备SigmaDSP内核的编解码器是否必须载入SigmaDSP程序才能使用?

    目前预计使用ADAU1761连接两个MEMS数字麦克风, ADAU1761与ADAU1361相比, ADAU1761多了SigmaDSP内核. 使用具备SigmaDSP内核的编解码器是否必须
    发表于 11-30 07:31

    密勒调制副载波编解码器的FPGA实现

    电子发烧友网站提供《密勒调制副载波编解码器的FPGA实现.pdf》资料免费下载
    发表于 10-26 11:10 0次下载
    密勒调制副载波<b class='flag-5'>编解码器</b>的FPGA实现

    基于VHDL语言的HDB3码编解码器设计

    电子发烧友网站提供《基于VHDL语言的HDB3码编解码器设计.doc》资料免费下载
    发表于 10-13 09:22 0次下载
    基于VHDL语言的HDB3码<b class='flag-5'>编解码器</b>设计

    如何在嵌入式系统中使用音频编解码器更轻松地优化音频性能?

    ,即使有好的编解码器和扬声器,也可能会让应用听起来很平淡或音质很差。问题是每个扬声器都有自己的频率响应,因此编解码器应该根据扬声器的特性进行调校,同时要考虑到将要播放的音频种类和所需的
    的头像 发表于 10-03 14:34 605次阅读
    如何在嵌入式系统中使用<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>更轻松地优化<b class='flag-5'>音频</b>性能?

    使用STM32L1xx微控制器与外部I2S音频编解码器播放音频文件

    电子发烧友网站提供《使用STM32L1xx微控制器与外部I2S音频编解码器播放音频文件.pdf》资料免费下载
    发表于 09-21 11:30 2次下载
    使用STM32L1xx微控制器与外部I2S<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>播放<b class='flag-5'>音频</b>文件

    ES8336低功耗音频编解码器规格书

    ES8336低功耗音频编解码器规格书
    发表于 06-13 18:13 3次下载

    ES8388音频编解码器规格书

    ES8388是一种高性能、低功率和低成本音频编解码器。它由2路ADC、2路DAC、3路DAC组成,耳机麦克风放大器放大器、数字音效,以及模拟混频和增益功能。该设备使用高级多位Δ-∑调制技术在数字和模拟多位delta-sigma调
    发表于 06-13 18:11 7次下载

    如何获得ESP8266上的opus编解码器

    我想要 ESP8266 上的 opus 编解码器(尤其是解码器),因为 128 kbps 应该足够用便宜的 I2S DAC 来传输音频。我认为这非常重要,因为 opus 可以让人们从互联网上获取
    发表于 06-12 06:54

    RT1020如何选择音频PLL频率值?

    我正在使用 RT 1020(kWM8960 编解码器)的演示复合 HID 音频统一代码,我注意到代码中使用的音频 PLL 频率为 786.48MHz。我想知道 1) 如何选择
    发表于 06-12 06:04

    imx8mp - wm8962编解码器音频的问题求解

    我的音频编解码器 - WM8962 有问题。 我在自己的平台上工作,以 imx8mp-devkit 为模型。 图表: 将设备添加到设备树: reg_audio_pwr: 调节
    发表于 06-09 07:50

    如何将多个AK5554编解码器与i.MX8MN SAI线集成?

    我目前正在从事一个项目,涉及在 i.MX8MN 平台上将两个 AK5554 编解码器与同一条 SA5I 线路集成。我的目标是以这样一种方式配置系统,使其有效地充当八个音频通道,所有通道都连接到正确
    发表于 05-18 06:15

    phycore iMX8Mplus如何将WM8960音频编解码器与其集成?

    我们正在开发 phycore i MX 8M plus,我们正在尝试将WM8960 音频编解码器与其集成。 我们已经添加了我们的 dts 文件,我们也能够生成 dtb 文件,但是生成的 dtb 文件
    发表于 05-17 08:06

    TLV320AIC3100音频编解码器启动问题求解

    嗨,团队,我们正在研究 IXM8MM 定制板。我们使用带有 imx8mm 和 Android 11 代码库的 tlv320aic3100 音频编解码器。面临一些与MCLK相关的问题。当我尝试播放音频
    发表于 05-17 08:03