AVR32 MCU上的ABDAC外设音频播放设计

发布时间:2022-12-05  

  AVR32 MCU 上的 ABDAC 外设非常适合生成音频播放。本文介绍了如何执行此操作,并包含指向生成正弦波输出的示例驱动程序的链接。


  许多嵌入式应用程序越来越多地具有音频播放功能,无论是响应用户输入的简单音频反馈还是全高速流音频。通过使用通用时钟接口,Atmel AVR32 MCU 上的 ABDAC 能够支持广泛的播放频率。


  功能说明

  ABDAC 是一个非常简单的外围设备,它的使用很简单。它需要通用时钟系统提供的时钟信号,以及通道的数据输入。图 1 中的框图给出了该模块的概述。有关 ABDAC 外设的详细说明,请参见器件的数据表。

  

poYBAGL7EB-ACHGzAAAynq5sicU395.png

  图 1:时钟和数据路径框图。

  通用时钟

  ABDAC 使用通用时钟来提供采样频率。这个通用时钟在设备内部硬接线,必须是采样频率的 256 倍。


  应在启用 ABDAC 之前配置和启用通用时钟。有关使用哪个通用时钟的说明,请参见器件数据表中的时钟部分。本节还介绍了通用时钟的进一步配置。


  通用时钟输出范围可能受到其源时钟频率的限制。因此,设计一种振荡器至关重要,它可以提供可被通用时钟分频器分频的基本频率,以达到所需的输出采样率。表 1 显示了示例。


  频道

  ABDAC启用时;它期望采样数据寄存器 (SDR) 以与输出采样率相同的间隔更新。两个通道都可以通过一条书面指令进行更新,因为它们位于同一个 I/O 寄存器 (SDR) 中

pYYBAGL7EBKABllHAAAxmBc7upQ914.png

  表 1:输出采样率所需的基本频率。

  如果从通用时钟输入到 ABDAC 的 256 个时钟周期内样本数据寄存器未更新,则中断状态寄存器 (ISR) 中的欠载位将被设置。欠载是 CPU 负载过多的标志,因此应用程序应该通过使用中断来实现,或者更好的是,如果设备中存在直接内存访问 (DMA)。


  中断

  有两个中断可用于卸载 CPU。TX_READY 中断可用作触发信号,表示可以写入每个通道的下一个样本。


  应用程序还应启用欠载中断以在填充样本数据寄存器 (SDR) 时处理欠载。欠载会导致输出信号出现毛刺和噪声。


  如果触发了欠载中断,则表明 CPU 过载,因为应用程序无法及时提供数据。


  DMA

  ABDAC 可以连接到设备上的 DMA 控制器。在将数据从 RAM 中的缓冲区传输到 ABDAC 时,这将减轻 CPU 的负担。应用程序只需要填充缓冲区并将缓冲区地址传递给 DMA 控制器。


  缓冲区完成时的触发器将让应用程序知道何时将新缓冲区传递给 DMA 控制器。

  欠载中断对于 DMA 传输至关重要,因为它表明设备中的数据总线过载或到 ABDAC 的 DMA 传输没有足够的优先级。


  电气连接

  该设备的输出不适用于驱动耳机或扬声器。焊盘限制了最大电流量。在大多数实际情况下,这不足以驱动低阻抗源。


  由于此限制,应将外部放大器连接到输出线以放大这些信号。这个放大器设备也可以用来控制音量。


  出于测试目的,音响系统上的线路输入或麦克风输入可用于评估输出信号。


  无源滤波器

  为了将 ABDAC 连接到高阻抗设备,例如放大器上的线路输入,应添加无源滤波器。图 2 显示了一个示例示意图。

pYYBAGL7ECqAfFpXAABT9MxDXi0461.png

  图 2:带无源滤波器原理图的线路输出。

  外部放大器

  如果 ABDAC 直接驱动低阻抗耳机或扬声器,则需要外部放大器。图 3 显示了使用 Texas Instruments 的 TPA152 立体声音频放大器的示例原理图。


  驱动程序实现

  文件

  本文中讨论的驱动程序的完整源代码可在 www.atmel.com/dyn/resources/prod_documents/AVR32120.zip 中找到。

  驱动程序包含两个文件,“dac.c”和“dac.h”,其中“dac.h”声明所有函数,“dac.c”包含源代码。驱动程序中唯一需要更改的是指定目标设备。目标设备在“dac.h”的顶部指定。


  示例代码

  驱动程序的示例代码在两个 DAC 通道上输出一个正弦波。该输出由 GPIO 线上的用户输入启用。接线信息包含在源代码随附的文档中。


  示例代码针对 ATSTK1000,但通过一些调整,可以与任何带有 ABDAC 的 AVR32 设备一起使用。

pYYBAGL7EDWAH-KtAADjB2Z25Tk356.png

  图 3:具有外部放大器原理图的高功率输出。

  图 4 显示了示例应用程序的流程。该应用程序通过轮询函数调用来实现,以减少对其他模块的依赖。

poYBAGL7ED-AVMsNAAB5PIFYnPQ842.png

  图 4:ABDAC 示例应用流程图。

  进一步阅读

  中断

  ABDAC 接口有一条连接到中断控制器 (IC) 的中断线。处理 ABDAC 中断需要在配置 ABDAC 之前对 IC 进行编程。有关中断控制器的更多信息和详细信息,请参阅应用笔记 AVR32101:“AVR32 中断控制器”。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>