打印

单片机DAC的几种应用

[复制链接]
1144|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本应用笔记举例介绍了使用数模转换器 (DAC) 外设生成音频输出信号的过程,该 DAC 外设内嵌在 微控制器系列产品中。
数模转换器 (DAC) 是一种与模数转换器功能相反的器件,可以将数字形式的数据转换为相应的模拟电压信号。
通用MCU DAC 模块是 12 位字转换器,带有两个支持立体声音频的输出通道。
DAC 可用于多种音频应用中,例如:安全警报、蓝牙耳机、发声玩具、答录机、人机接口以及低成本的音乐播放器
通用MCU DAC 还可实现许多其他模拟用途,如模拟波形产生和控制工程。本应用笔记主要包括两部分内容:
  • 通用MCU DAC 模块的主要特性。
  • 两个示例。
    示例一,DAC 用于生成正弦波形。示例二,DAC 用于通过 .WAV 文件生成音频。

  • DAC 主要特性‌

    • 数据格式
      DAC 可以使用以下三种整型格式的数据:8 位右对齐、12 位右对齐以及 12 位左对齐。12 位值的范围在 0x000 到 0xFFF 之间,其中 0x000 为最小值,而 0xFFF 为最大值。



    • 图 1. DAC 数 据 格 式
    • 双通道模式
      DAC 有两个输出通道,每个通道各有一个转换器。在双 DAC 通道模式下,转换可以单独进行,也可以同时进行。
      当 DAC 通道由同一个触发源触发后,两个通道将组合在一起同步执行更新操作,转换也会同时进行。

    • 专用定时器
      除了通过软件和外部触发器触发 DAC 转换之外,还可以通过不同的定时器触发 DAC 转换。
      TIM6 和 TIM7 是两个基本定时器,主要用于 DAC 触发。
      每当 DAC 接口在所选的定时器触发输出 (TIMx_TRGO) 上检测到上升沿时,DAC_DHRx 寄



      存器中存储的最后一个数据即会转移到 DAC_DORx 寄存器中。图 2. 通用MCUF100x DAC 触发器通道



    • DMA 功能
      通用MCU 微控制器配有一个多通道 DMA 模块。每个 DAC 通道都连接到独立的 DMA 通道。对于 通用MCUF100x 微控制器,DAC 通道 1 连接到 DMA 通道 3,DAC 通道 2 连接到
      DMA 通道 4。
      未使用 DMA 时,CPU 用于向 DAC 提供模式波形。通常,波形保存在存储器 (RAM) 中,
      CPU 负责将数据从 RAM 传输到 DAC。



      图 3. 不存在 DMA 时的 DAC 交互过程

      DAC

      ai18302

      使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。



      RAM



      图 4. 存在 DMA 时的 DAC 交互过程


    • DMA 下溢错误
      DMA 向 DAC 提供模式波形时,有时会出现 DMA 传输速度比 DAC 转换速度快的情况。此时,DAC 会检测到部分模式波形遭到忽略而不予转换。它随后会将“DMA 下溢错误”标志置 1。
      可以使用触发定时器通过共享 IRQ 通道处理下溢错误,在 DAC 不通过 TIM6 触发时也可通过专用中断来处理。

    • 白噪声发生器
      • 定义
        通用MCU 微控制器 DAC 为用户提供了一个伪随机码发生器。根据移位寄存器上使用的节拍数,在序列重复前,可生成具有最多 2n-1 个数的序列。

        图 5. DAC 中内置的伪随机码发生器


        ai18304

        由噪声发生器生成的噪声具有均匀的频谱分布,可将这些噪声视为白噪声。不过,白噪声分布均匀,不具备高斯输出特性。

        图 6. 噪 声 波 形
        噪声波形的偏移量可以编程。使用预配置的偏移量表更改此偏移量(信号模式),用户可获得与信号模式和噪声波形之和相对应的波形。

        图 7. 带可更改偏移量的噪声波形

        أ

        ai18306


      • 典型应用
        通用MCU 微控制器具有采样率高达 1 M/ 秒的 12 位增强型 ADC。在大多数应用中,这种分辨率已经足够,但在一些需要更高精度的情况下,可以利用过采样和抽选输入信号的概念,以减少外部 ADC 解决方案的使用并降低应用功耗。
        白噪声发生器还可用于产生电子音乐,通常直接产生或作为滤波器的输入来形成其它类型的噪声信号。白噪声发生器广泛用于音频合成,通常用于再现钹等打击乐器的效果,这些乐器在其频域内具有较高的噪声量。
        白噪声发生器可用于控制工程,以及放大器和电子滤波器的频率响应测试。白噪声是一种通用的合成噪声源,用于通过耳鸣掩蔽器进行声掩蔽。


    • 三角波发生器
      • 定义
        通用MCU DAC 为用户提供了具有灵活的偏移量、振幅和频率的三角波形发生器。理论上说,三角波形是一种由无限组奇次谐波组成的波形。

        MAMPx[3:0] 位

        数字振幅
        模拟振幅 (V) (Vref+ = 3.3V)
        0
        1
        0.0016
        1
        3
        0.0032
        2
        7
        0.0064
        3
        15
        0.0128
        4
        31
        0.0257
        5
        63
        0.0515
        6
        127
        0.1031
        7
        255
        0.2062
        8
        511
        0.4125
        9
        1023
        0.8250
        10
        2045
        1.6483
        >= 11
        4095
        3.3000

        可以使用 DAC_CR 寄存器中的 MAMPx 位修正三角波形的振幅。1. 预编程三角波形振幅值

        有关三角波形的详细信息,请参见 通用MCU 参考手册。三角波形频率与触发源的频率相关。



        图 8. 三 角 波 形



        三角波形的偏移量可以编程。使用预配置的偏移量表更改三角波形地偏移量(信号模式),用户可获得与信号模式和三角波形之和对应的波形。

        图 9. 带可更改偏移量的三角波形

        结果波形

        模式波形(偏移量)




      • 典型应用
        由于三角波发生器的高次谐波下降速度更快,因此其音色比方波柔和,故而三角波发生器经常用于声音合成。
        三角波发生器电路还可用于多种调制解调器电路应用。


    • 缓冲的输出
      为了在不使用外部运算放大器的情况下驱动外部负载,DAC 通道内嵌一个输出缓冲器,可以根据用户应用情况进行使能和禁止。
      如果未对 DAC 输出进行缓冲,当用户应用电路中存在负载时,实际电压输出会低于预期电压输出。启用缓冲器后,实际电压输出会与预期电压输出非常接近。

      图 10. 非缓冲的通道电压(存在负载/ 不存在负载)
      DAC
      DAC_Channel_1 DOR = 0xFFF
       3.3 V
      1.2 V

      R = 5.1K


      DAC
      DAC_Channel_1 DOR = 0xFFF
       3.3V
      GND
      3.3 V


      ai18309


      图 11. 缓冲的通道电压(存在负载/ 不存在负载)

      DAC
      DAC_Channel_1 DOR = 0xFFF
       3.3 V
      3.3 V

      R = 5.1K


      DAC
      DAC_Channel_1 DOR = 0xFFF
       3.3V
      GND
      3.3 V


      ai18310



  • 应用示例‌
    • 使用 DAC 生成正弦波形
      • 说明
        本示例分步说明如何生成正弦波形。
        正弦波形也称作单频正弦波音,它是一种纯音或绝对音。在确定听觉系统的各种响应时,正弦音一般用作刺激源。

      • 准备数字模式的正弦波形
        要准备数字模式的波形,需要进行一些数**算。这里的目标是产生正弦波的 10 个数字模式数据(采样),变化范围为 0 到 2*PI。





        采样间隔为 (2*PI)/ ns (采样数)。
        sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。

        y x = □ sin □□x  2----- □ + 1□□ □ ---0----x---F----F----F-----+ 1-□
        SineDigital □ □□ ns□ □□ □ 2 □
        经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。各 DAC 通道引脚的模拟输出电压通过以下公式确定:
        DACOutput
        = V -----------------------D---O-----R-------------------------
        REFDAC_MaxDigitalValue
        注: 对于右对齐的 12 位分辨率:DAC_MaxDigitalValue = 0xFFF
        对于右对齐 8 位分辨率:DAC_MaxDigitalValue = 0xFF

        因此,可通过以下公式得到模拟正弦波形 ySineAnalog
        ySineDigitalx
        ySineAnalogx = 3.3Volt-------------------------------------
        0xFFF

        表 2. 正弦波的数字和模拟采样值
        采样
        (x)
        数字采样值
        ySineDigital (x)
        模拟采样值(电压)
        ySineAnalog(x)
        0
        2048
        1.650
        1
        3251
        2.620
        2
        3995
        3.219
        3
        3996
        3.220
        4
        3253
        2.622
        5
        2051
        1.653
        6
        847
        0.682
        7
        101
        0.081
        8
        98
        0.079
        9
        839
        0.676

        此表保存在存储器中,并由 DMA 传输,传输过程由触发 DAC 的相同定时器触发

      • 修正正弦波频率
        要修正正弦波信号的频率,需要设置定时器触发输出的频率。所产生正弦波的频率为

        TfimerTRGO
        fSinewave = -----------------------------
        ns

        因此,如果 TIMx_TRGO 为 1 MHz,则 DAC 正弦波的频率为 10 kHz。注: 要获得高质量的正弦波曲线,建议使用较高的采样数 ns。

        图 13. ns = 10 时生成的正弦波






        图 14. ns = 255 时生成的正弦波


    • 使用 DAC 实现音频波形播放器
      • 说明
        此应用演示的目的是为 通用MCU 微控制器提供一种音频播放器解决方案,用于播放 .WAV 文件。该过程经过优化,需要的外部组件数量最少,最终用户可以灵活选择自己的 .WAV 文件。

        .WAV

        SPI
        DAC

        通用MCU 中的音频文件通过 MicroSD 存储卡提供。 15. MicroSD Flash 到外部扬声器的数据流



      • 音频波形文件规范
        本应用假设要播放的 .WAV 文件具有如下格式:
        • 音频格式:PCM(一种未经压缩的波形数据格式,其中的每个值表示采样时信号的振幅)。
        • 采样率:8000、11025、22050 或 44100 Hz
        • 每次采样的位数:8 位(音频采样数据值的范围为 [0-255])。
        • 通道数:1(单声道)


      • .WAV 文件格式
        .WAV 文件格式是存储多媒体文件使用的资源交换文件格式 (RIFF) 规范中的一种。RIFF 文件以一个文件头开始,然后是一系列的数据块。.WAV 文件通常就是一个 RIFF 文件,内含一个“WAVE”数据块,该数据块由以下两个子数据块组成:
        • 指定数据格式的 fmt 子数据块
        • 包含实际采样数据的 data 子数据块

        WAVE 文件格式的开始是 RIFF 头:它指示文件长度。
        然后,fmt 块描述采样格式,其中包含如下信息:波形音频的格式:(PCM/...),通道数(单声道/立体声),采样率(每秒的采样数:例如,22050)以及采样数据大小(例如,8 位 /16 位)。最后,数据块包含采样数据。


    • 实现音频波形播放器

音频波形播放器的应用以 SPI、DMA、TIM6 和 DAC 外设为基础。
在启动时,此应用首先使用 SPI 与 DOSFS 文件系统的 MicroSD 卡建立连接,解析卡中的内容,并在 USER 文件夹中查找可用的 .wav 文件。找到有效的 .wav 文件后,会通过 SPI 读回,然后使用 CPU 将该数据传输到位于 RAM 内的缓冲区阵列。DMA 用于将数据从 RAM 传输到 DAC 外设。TIM6 用于触发 DAC,将音频数字数据转换为模拟波形。
在播放音频数据之前,会对 WAV 文件头进行解析,以便确定数据的采样率及其长度。
使用采样数据(.WAV 文件中包含的数据)来更新 DAC 输出中的值,借此完成重现音频的任务。该数据以 8 位的形式进行编码(值的范围为 0 到 255)。
DAC 通道 1 由 TIM6 定期触发,触发间隔由 .WAV 文件头的采样率指定。
.WAV 文件从使用 DosFS 文件系统的 MicroSD 存储器中读取。

使用特权

评论回复

相关帖子

发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:32MCU单片机查询网 http://www.32mcu.com MCU选型,嵌入式设计辅助,选择最适合的MCU

35

主题

173

帖子

142

粉丝