
前言& F/ \) G6 K7 E0 x' e% u 本应用笔记举例介绍了使用数模转换器 (DAC) 外设生成音频输出信号的过程,该 DAC 外设内嵌在STM32F10xx 微控制器系列产品中。* k) O/ \7 L- w# Q 数模转换器 (DAC) 是一种与模数转换器功能相反的器件,可以将数字形式的数据转换为相应的模拟电压信号。* {" m' H* m% R* i$ Q STM32 DAC 模块是 12 位字转换器,带有两个支持立体声音频的输出通道。 DAC 可用于多种音频应用中,例如:安全警报、蓝牙耳机、发声玩具、答录机、人机接口以及低成本的音乐播放器4 F# b& q) l# G' F STM32 DAC 还可实现许多其他模拟用途,如模拟波形产生和控制工程。 本应用笔记主要包括两部分内容: ● 第 1 节介绍 STM32 DAC 模块的主要特性。 ● 第 2 节介绍了两个示例。+ ]) n! B5 ?0 b6 n — 在第一个示例中,DAC 用于生成正弦波形。; `1 {7 M4 Y4 v$ n8 D( Z+ m — 在第二个例中,DAC 用于通过 .WAV 文件生成音频。 U3 H k! L# K5 C, R6 y, } 1 DAC 主要特性4 E! d( {0 q; K9 a+ K( I, ` 1.1 数据格式# O3 Q, u1 Y0 y" a( m b DAC 可以使用以下三种整型格式的数据:8 位右对齐、12 位右对齐以及 12 位左对齐。12 位值的范围在 0x000 到 0xFFF 之间,其中 0x000 为最小值,而 0xFFF 为最大值。! {8 x! M! t0 G- ?1 H9 P ! E( l7 T, ]8 J5 F( T$ D# d3 O ![]() 1.2 双通道模式 u- J: g8 ^5 o( ?6 V3 a& ~1 \ DAC 有两个输出通道,每个通道各有一个转换器。在双 DAC 通道模式下,转换可以单独进行,也可以同时进行。 当 DAC 通道由同一个触发源触发后,两个通道将组合在一起同步执行更新操作,转换也会同时进行 1.3 专用定时器 除了通过软件和外部触发器触发 DAC 转换之外,还可以通过不同的定时器触发 DAC 转换。; ~' X$ K, `9 m TIM6 和 TIM7 是两个基本定时器,主要用于 DAC 触发。3 [3 d3 ]/ z/ E6 ^ 每当 DAC 接口在所选的定时器触发输出 (TIMx_TRGO) 上检测到上升沿时,DAC_DHRx 寄存器中存储的最后一个数据即会转移到 DAC_DORx 寄存器中。; _- B& K( F" @# ^, g7 `) i. P 3 Q+ Q5 X4 A V5 x$ p ![]() $ F& g" H8 E0 U; |# C4 { 1.4 DMA 功能" s+ z4 P% f- ^' |% T, u STM32 微控制器配有一个多通道 DMA 模块。每个 DAC 通道都连接到独立的 DMA 通道。 对于 STM32F100x 微控制器,DAC 通道 1 连接到 DMA 通道 3,DAC 通道 2 连接到 DMA通道 4。 未使用 DMA 时,CPU 用于向 DAC 提供模式波形。通常,波形保存在存储器 (RAM) 中,CPU 负责将数据从 RAM 传输到 DAC。. v0 w* f9 o6 j! U' I0 k2 |( ~ ![]() 7 A R$ ~) j- K1 v* p( N" s ? 使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。 ' \- E+ {- Q4 ?9 N ( x q, C! t+ h2 m3 r # H8 N# t" }$ p/ {3 o( @ 不存在 DMA 时的 DAC 交互过程使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。% @, R' ]: I A3 K5 U ![]() 1.5 DMA 下溢错误3 n5 H* b/ J# A S5 \6 y- W& l DMA 向 DAC 提供模式波形时,有时会出现 DMA 传输速度比 DAC 转换速度快的情况。此时,DAC 会检测到部分模式波形遭到忽略而不予转换。它随后会将“DMA 下溢错误”标志置 1。% L$ s; \% s' U- g 可以使用触发定时器通过共享 IRQ 通道处理下溢错误,在 DAC 不通过 TIM6 触发时也可通过专用中断来处理。 1.6 白噪声发生器 1.6.1 定义 STM32 微控制器 DAC 为用户提供了一个伪随机码发生器。根据移位寄存器上使用的节拍数,在序列重复前,可生成具有最多 2n-1 个数的序列。% g" g+ D, W" M8 b, t 2 ?$ `0 A; X* K. x( N5 q7 V7 n ![]() / y; K- [# m# f0 w 由噪声发生器生成的噪声具有均匀的频谱分布,可将这些噪声视为白噪声。不过,白噪声分布均匀,不具备高斯输出特性。 ![]() 噪声波形的偏移量可以编程。使用预配置的偏移量表更改此偏移量(信号模式),用户可获得与信号模式和噪声波形之和相对应的波形。) |( T5 r9 K% ?8 e2 u$ M. ? : [' g2 K$ }* _/ I ![]() 5 U8 n4 D0 D! b/ C$ E( W 4 t: J7 [& k- I3 H% O) \0 H 1.6.2 典型应用 STM32 微控制器具有采样率高达 1 M/ 秒的 12 位增强型 ADC。在大多数应用中,这种分辨率已经足够,但在一些需要更高精度的情况下,可以利用过采样和抽选输入信号的概念,以减少外部 ADC 解决方案的使用并降低应用功耗。 }9 @ Q' b% K STM32 应用笔记 AN2668 中标题为“使用白噪声进行过采样”一节中详细介绍了这些方法的详细信息。, a/ _- z( ?5 d9 _: C" Q7 U) Z- T; Q 白噪声发生器还可用于产生电子音乐,通常直接产生或作为滤波器的输入来形成其它类型的噪声信号。白噪声发生器广泛用于音频合成,通常用于再现钹等打击乐器的效果,这些乐器在其频域内具有较高的噪声量。+ W+ W! `2 G0 ]0 E. i 白噪声发生器可用于控制工程,以及放大器和电子滤波器的频率响应测试。 白噪声是一种通用的合成噪声源,用于通过耳鸣掩蔽器进行声掩蔽。 1.7 三角波发生器# _: G# i3 c, F% W( j 1.7.1 定义 STM32 DAC 为用户提供了具有灵活的偏移量、振幅和频率的三角波形发生器。; E* m# _6 @, O$ u 理论上说,三角波形是一种由无限组奇次谐波组成的波形。, T* Z! e; y8 d, _# z; w 可以使用 DAC_CR 寄存器中的 MAMPx 位修正三角波形的振幅。 ![]() ![]() 5 e; J4 p) l% ~0 ?# \+ U 三角波形的偏移量可以编程。使用预配置的偏移量表更改三角波形地偏移量(信号模式),用户可获得与信号模式和三角波形之和对应的波形。 ![]() 1.7.2 典型应用 由于三角波发生器的高次谐波下降速度更快,因此其音色比方波柔和,故而三角波发生器经常用于声音合成。 三角波发生器电路还可用于多种调制解调器电路应用。 5 j, b' V) J1 U# _ [ / h0 a2 y2 p- D+ ^- |& {: ]: V8 ]4 b& p& y 完整版请查看:附件* I. _- S! Z9 _7 y |
CD00259245_ZHV1.pdf
下载1.23 MB, 下载次数: 3
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南