前言 " \0 R8 ]5 F9 M" h8 w; S 本应用笔记举例介绍了使用数模转换器 (DAC) 外设生成音频输出信号的过程,该 DAC 外设内嵌在 STM32F10xx 微控制器系列产品中。 ) _+ I% Q: o8 G# q+ i 数模转换器 (DAC) 是一种与模数转换器功能相反的器件,可以将数字形式的数据转换为相应的模拟电压信号。 ) |" R# a5 u2 I5 N% o STM32 DAC 模块是 12 位字转换器,带有两个支持立体声音频的输出通道。 ; X0 d0 v" \9 s8 E0 Y DAC 可用于多种音频应用中,例如:安全警报、蓝牙耳机、发声玩具、答录机、人机接口以及低成本的音乐播放器 i5 t# V' |; s5 g: `( x ) H! E) F: J) M# B STM32 DAC 还可实现许多其他模拟用途,如模拟波形产生和控制工程。 2 @8 N) u* e; n ( |& S5 a2 ?" J1 _ 本应用笔记主要包括两部分内容: ● 第 1 节介绍 STM32 DAC 模块的主要特性。 ● 第 2 节介绍了两个示例。 — 在第一个示例中,DAC 用于生成正弦波形。 — 在第二个例中,DAC 用于通过 .WAV 文件生成音频。 1 DAC 主要特性 $ [8 s& s3 V2 o+ q. s 1.1 数据格式 3 P: E- n1 J3 J, ?1 f 7 N6 s e7 P2 `; W; i6 W' i8 V DAC 可以使用以下三种整型格式的数据:8 位右对齐、12 位右对齐以及 12 位左对齐。12 位值的范围在 0x000 到 0xFFF 之间,其中 0x000 为最小值,而 0xFFF 为最大值。+ R8 t* Z! W& J& V ' B/ d% Z4 B9 \# M 1.2 双通道模式 DAC 有两个输出通道,每个通道各有一个转换器。在双 DAC 通道模式下,转换可以单独进行,也可以同时进行。 当 DAC 通道由同一个触发源触发后,两个通道将组合在一起同步执行更新操作,转换也会同时进行。 1.3 专用定时器 除了通过软件和外部触发器触发 DAC 转换之外,还可以通过不同的定时器触发 DAC 转换。 TIM6 和 TIM7 是两个基本定时器,主要用于 DAC 触发。 每当 DAC 接口在所选的定时器触发输出 (TIMx_TRGO) 上检测到上升沿时,DAC_DHRx 寄存器中存储的最后一个数据即会转移到 DAC_DORx 寄存器中。 1.4 DMA 功能 5 h$ R2 Z% v* b; M) R6 \, YSTM32 微控制器配有一个多通道 DMA 模块。每个 DAC 通道都连接到独立的 DMA 通道。对于 STM32F100x 微控制器,DAC 通道 1 连接到 DMA 通道 3,DAC 通道 2 连接到 DMA通道 4。 未使用 DMA 时,CPU 用于向 DAC 提供模式波形。通常,波形保存在存储器 (RAM) 中,CPU 负责将数据从 RAM 传输到 DAC。 使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。 1.5 DMA 下溢错误 3 M2 @3 h. `4 { D+ w! sDMA 向 DAC 提供模式波形时,有时会出现 DMA 传输速度比 DAC 转换速度快的情况。此时,DAC 会检测到部分模式波形遭到忽略而不予转换。它随后会将“DMA 下溢错误”标志置 1。 : i# I$ R& w! \9 K6 k" S可以使用触发定时器通过共享 IRQ 通道处理下溢错误,在 DAC 不通过 TIM6 触发时也可通过专用中断来处理。 . }0 Q0 W- [9 A, y8 |8 ^; u1.6 白噪声发生器 1.6.1 定义 STM32 微控制器 DAC 为用户提供了一个伪随机码发生器。根据移位寄存器上使用的节拍数,在序列重复前,可生成具有最多 2n-1 个数的序列。 $ O3 b0 w6 h: L7 j- D2 V( m; y+ Z6 J* o, @) z$ K |
收藏 |
支持~~~~~~~~~~~ |