你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 STM32 微控制器系列中的 DAC生成音频和波形

[复制链接]
STMCU小助手 发布时间:2022-7-25 21:40
前言& 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 位字转换器,带有两个支持立体声音频的输出通道。
: j% ?. G+ a2 g' y6 Y* j0 ^' tDAC 可用于多种音频应用中,例如:安全警报、蓝牙耳机、发声玩具、答录机、人机接口以及低成本的音乐播放器4 F# b& q) l# G' F
STM32 DAC 还可实现许多其他模拟用途,如模拟波形产生和控制工程。
2 p' S- d0 G9 t& b7 Y7 J0 _本应用笔记主要包括两部分内容:
5 I- s: G- t6 W3 V. R. n● 第 1 节介绍 STM32 DAC 模块的主要特性。
- w9 e3 D+ h* X) A% q% m7 U● 第 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, }

& \5 M+ X: U! |9 z1 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
1UVP]L)DTS8IC_1`XT99B.png
0 n" ~, X% \+ p3 L0 y6 Q
0 V0 k3 {* {2 M

! B. w* c- n' Y" s: O8 N8 n5 e1.2 双通道模式  u- J: g8 ^5 o( ?6 V3 a& ~1 \
DAC 有两个输出通道,每个通道各有一个转换器。在双 DAC 通道模式下,转换可以单独进行,也可以同时进行。
0 U7 ~$ X5 p3 D- ^7 N当 DAC 通道由同一个触发源触发后,两个通道将组合在一起同步执行更新操作,转换也会同时进行
3 ^/ p& J0 }+ R! h/ g" r
) K# p! K! W1 v( V( z" t
1.3 专用定时器

% o& L- y& W# ?0 m; ^1 l- D除了通过软件和外部触发器触发 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

7 N( m) ?, h# P W7{~BF({[$YKZYA(W5G]ZCR.png
! A: L; ~9 i, N. _- v$ F& g" H8 E0 U; |# C4 {

7 O1 z) h6 o' K' Y6 R4 {4 G1.4 DMA 功能" s+ z4 P% f- ^' |% T, u
STM32 微控制器配有一个多通道 DMA 模块。每个 DAC 通道都连接到独立的 DMA 通道。
) c3 k% @$ X+ l5 d- I9 f; u( O7 p对于 STM32F100x 微控制器,DAC 通道 1 连接到 DMA 通道 3,DAC 通道 2 连接到 DMA通道 4。
! q% M0 C' o0 t未使用 DMA 时,CPU 用于向 DAC 提供模式波形。通常,波形保存在存储器 (RAM) 中,CPU 负责将数据从 RAM 传输到 DAC。. v0 w* f9 o6 j! U' I0 k2 |( ~

! v" k4 }( ?1 J  j

" l) T' j% d9 {( Z# U. ? / h3 h. J# F. G8 s3 F; n
7 A  R$ ~) j- K1 v* p( N" s  ?

# b( F. ~. f8 k' |% Y% Y使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。
' u, K- P# j! d! z6 E$ N+ Q5 m
' \- 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

; k1 X4 B% I# i, f, i$ P, m+ f @ME5@TTXM`J(]81C3IS)U.png 2 w' U' ~4 A& U6 s# ~2 K

) B- V! Z) T9 ~1 ?  p
2 W7 W* y, q5 x! p) |  z1.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 触发时也可通过专用中断来处理。
0 Q) s" e, b4 W7 i
6 ~4 l$ _7 v, z9 H2 Y
1.6 白噪声发生器
- Q3 \$ p" I5 O  D' b/ a& }1.6.1 定义

+ d9 D' I6 `- [& N% f$ H$ _/ zSTM32 微控制器 DAC 为用户提供了一个伪随机码发生器。根据移位寄存器上使用的节拍数,在序列重复前,可生成具有最多 2n-1 个数的序列。% g" g+ D, W" M8 b, t

# e! W  g1 I  g% U% P2 Q
2 ?$ `0 A; X* K. x( N5 q7 V7 n
O[_JAG19$)DWBWQ7J71XN8A.png ) F' M% ^% ~: g  M! K! p. N, ~

6 s& H1 k2 |, y
/ y; K- [# m# f0 w
由噪声发生器生成的噪声具有均匀的频谱分布,可将这些噪声视为白噪声。不过,白噪声分布均匀,不具备高斯输出特性。
0 Z; R/ W* }* G# r9 w- D" q7 F% J
6 X" r( B8 I, W

4 n2 p- i& v, T. }5 @: F 6ZDL_4[GL3]BW%~%UEHTV6W.png 7 }$ h; A, w. E" ]( B

/ D# M2 ~. f: I8 Y) _5 t

4 J3 ?( H; q& F噪声波形的偏移量可以编程。使用预配置的偏移量表更改此偏移量(信号模式),用户可获得与信号模式和噪声波形之和相对应的波形。) |( T5 r9 K% ?8 e2 u$ M. ?

9 P2 S# s( `; p
: [' g2 K$ }* _/ I
JML5N8EO`0TN1%CO}5WYG[H.png % a  a: B0 W7 H+ a
5 U8 n4 D0 D! b/ C$ E( W
4 t: J7 [& k- I3 H% O) \0 H
1.6.2 典型应用
" U0 M; o6 p; U% V4 {( |0 X  \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
白噪声发生器可用于控制工程,以及放大器和电子滤波器的频率响应测试。
" |: D' y( j3 d白噪声是一种通用的合成噪声源,用于通过耳鸣掩蔽器进行声掩蔽。
* A+ c- j6 W! q" r0 U3 y' k
, ?) Z5 Q6 E9 ~9 }
1.7 三角波发生器# _: G# i3 c, F% W( j
1.7.1 定义

5 g2 @! d" a3 \# VSTM32 DAC 为用户提供了具有灵活的偏移量、振幅和频率的三角波形发生器。; E* m# _6 @, O$ u
理论上说,三角波形是一种由无限组奇次谐波组成的波形。, T* Z! e; y8 d, _# z; w
可以使用 DAC_CR 寄存器中的 MAMPx 位修正三角波形的振幅。
% ?5 `  h$ u. c
8 J* f9 f/ @, m; F! B0 l. B5 ~* Y' N) v

9 S. i/ m, [' Y V@S7TU9]PW16$W`4]_Z(JM0.png
5 a# J8 n# ^/ c8 i+ S) ?2 M! p
4 v  W8 l9 f' B* f S}JYDS7[AKPI7FFZ7){4K.png # W/ ]4 l) J, v! v

* O5 B$ w! u5 ^2 l, H$ t5 e; J4 p) l% ~0 ?# \+ U
三角波形的偏移量可以编程。使用预配置的偏移量表更改三角波形地偏移量(信号模式),用户可获得与信号模式和三角波形之和对应的波形。
2 r2 n, _$ r4 x1 t- \2 ^; `1 i: u* h
7 B' t+ Q' s$ Q9 Z1 X

' Z+ Z) k' b8 Y( r# Z  G ]W`O~7KXUYXCMCV{P1%(O6V.png
- L" j) K5 e9 D) y2 @$ Q  F6 |8 k
' Z' X9 y/ @4 |  K6 ^

3 B% U3 }6 _9 b, O$ G5 i, g! m1.7.2 典型应用
3 L0 ?! i) a/ S# N2 C0 H) I( k" U由于三角波发生器的高次谐波下降速度更快,因此其音色比方波柔和,故而三角波发生器经常用于声音合成。
% @# h% d/ T, D; }  P3 h三角波发生器电路还可用于多种调制解调器电路应用。
( b' L! x' U, q4 S8 F& E
; q$ Y" u. K/ W) G! A3 m. j5 N
5 j, b' V) J1 U# _  [
/ h0 a2 y2 p- D+ ^- |& {: ]: V8 ]4 b& p& y
完整版请查看:附件* I. _- S! Z9 _7 y

1 r) I) ~8 w% S, O: t2 n+ x
3 ^5 k7 W+ O: T. K+ n: p

CD00259245_ZHV1.pdf

下载

1.23 MB, 下载次数: 3

收藏 评论0 发布时间:2022-7-25 21:40

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版