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

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

[复制链接]
STMCU小助手 发布时间:2022-7-25 21:40
前言
$ C) k' L: k3 k" t4 O; v. J6 @0 v本应用笔记举例介绍了使用数模转换器 (DAC) 外设生成音频输出信号的过程,该 DAC 外设内嵌在STM32F10xx 微控制器系列产品中。
1 I( r- a% Q# ^数模转换器 (DAC) 是一种与模数转换器功能相反的器件,可以将数字形式的数据转换为相应的模拟电压信号。
( b7 o4 N" D# o! O  q5 T' {STM32 DAC 模块是 12 位字转换器,带有两个支持立体声音频的输出通道。
5 H! {) N2 D' `. m+ `/ r" CDAC 可用于多种音频应用中,例如:安全警报、蓝牙耳机、发声玩具、答录机、人机接口以及低成本的音乐播放器
* _9 ?. ?! Y+ i7 V' x- zSTM32 DAC 还可实现许多其他模拟用途,如模拟波形产生和控制工程。
% ^$ i$ u% A) ^( H6 H, s本应用笔记主要包括两部分内容:
% _' [' `* d0 F8 R● 第 1 节介绍 STM32 DAC 模块的主要特性。  Z" f' q, h" F0 I- p# |4 e
● 第 2 节介绍了两个示例。
1 k; u/ o# j  S! t/ T1 m— 在第一个示例中,DAC 用于生成正弦波形。
1 ]+ M* y: `- @' W' {. e— 在第二个例中,DAC 用于通过 .WAV 文件生成音频。
# n; R! N4 Q) M0 {. M3 B  O/ S
( x* p) w& K" w4 ]+ Q: \; e1 DAC 主要特性: W6 B9 T) C  ^. c/ m3 i" O% |0 q
1.1 数据格式
! m4 I1 ^) u( D2 E. j( J
DAC 可以使用以下三种整型格式的数据:8 位右对齐、12 位右对齐以及 12 位左对齐。12 位值的范围在 0x000 到 0xFFF 之间,其中 0x000 为最小值,而 0xFFF 为最大值。
! V. k2 @, C5 e1 R; R0 T
6 a* p' K  I& y
1UVP]L)DTS8IC_1`XT99B.png : D6 {1 p% F- c  X

& V3 a2 b9 t! Z8 E: }
, K0 D" G" m2 J( d5 |* m
1.2 双通道模式
  T6 x7 ]5 k& X4 EDAC 有两个输出通道,每个通道各有一个转换器。在双 DAC 通道模式下,转换可以单独进行,也可以同时进行。, q) ~; N% j7 }
当 DAC 通道由同一个触发源触发后,两个通道将组合在一起同步执行更新操作,转换也会同时进行
: ?" A0 k! n' d4 J1 P' [2 s( s* Y) f  z; }
1.3 专用定时器
/ E6 @8 C( m8 q1 w
除了通过软件和外部触发器触发 DAC 转换之外,还可以通过不同的定时器触发 DAC 转换。
' |* c  e4 C" u: E3 fTIM6 和 TIM7 是两个基本定时器,主要用于 DAC 触发。
, Z3 g' D0 E. r* a# e每当 DAC 接口在所选的定时器触发输出 (TIMx_TRGO) 上检测到上升沿时,DAC_DHRx 寄存器中存储的最后一个数据即会转移到 DAC_DORx 寄存器中。
, u7 v1 @- j( v' [5 [: y6 i: u6 W# e, A; a+ b

) `$ s) S+ Z2 [8 d  r W7{~BF({[$YKZYA(W5G]ZCR.png
% n  ~- S' n  H4 }; ~# \0 L
; J/ A) I2 m8 X: o

, \" x9 v1 b; L3 t1.4 DMA 功能! k5 l/ K) B( I: u3 E3 G8 ^" q, b" |" Q
STM32 微控制器配有一个多通道 DMA 模块。每个 DAC 通道都连接到独立的 DMA 通道。, U8 R% W7 ~3 E
对于 STM32F100x 微控制器,DAC 通道 1 连接到 DMA 通道 3,DAC 通道 2 连接到 DMA通道 4。0 M" {# b  G+ U* o+ p
未使用 DMA 时,CPU 用于向 DAC 提供模式波形。通常,波形保存在存储器 (RAM) 中,CPU 负责将数据从 RAM 传输到 DAC。8 I& i% ~' t% A9 Q
! U8 P. }: b1 U
7 `8 k# N- a9 p1 d0 ?9 a. e
4 v/ L0 D  W1 N) Y

0 I; n# @; N- N' g5 b% n- D. Z. i

1 s: z- U7 S1 `使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。
7 O8 s; L9 v1 |  Z- u8 t

7 T. e# f% s- t1 g( K* o# l% @! T+ s  a& _; W/ M0 F

5 Y6 X$ t% x& I" }, h不存在 DMA 时的 DAC 交互过程使用 DMA 时,系统的整体性能会因内核的释放而提升。此时,数据直接通过 DMA 从存储器传输到 DAC,无需 CPU 执行任何操作。这样节省的 CPU 资源可供其它操作使用。
- L- V' o9 p- d6 p+ m! f3 ~% ?, a, D+ I% w0 P; `8 |6 W
@ME5@TTXM`J(]81C3IS)U.png
. U5 ^! V. v9 c0 c  R+ I
0 {2 [. m6 y% p* ~6 f: \; s
% r$ L% G  w2 \9 d1.5 DMA 下溢错误
7 I' T, j) h3 @: j) _) cDMA 向 DAC 提供模式波形时,有时会出现 DMA 传输速度比 DAC 转换速度快的情况。此时,DAC 会检测到部分模式波形遭到忽略而不予转换。它随后会将“DMA 下溢错误”标志置 1。
! ~% ~# ~% [! o; q$ x( R6 p0 B可以使用触发定时器通过共享 IRQ 通道处理下溢错误,在 DAC 不通过 TIM6 触发时也可通过专用中断来处理。
0 W9 ~0 N3 P" c" g6 Y: R( I" J, @- l5 i4 Y3 x2 \
1.6 白噪声发生器8 i3 G2 G! D% f' u/ K6 o
1.6.1 定义

0 @& @3 e4 z3 i  VSTM32 微控制器 DAC 为用户提供了一个伪随机码发生器。根据移位寄存器上使用的节拍数,在序列重复前,可生成具有最多 2n-1 个数的序列。& s" V5 I# u' e' ^" K+ Q$ M9 W

6 V0 y3 v6 U* B7 D3 ~

3 z  N1 [% X, P& F6 x1 g O[_JAG19$)DWBWQ7J71XN8A.png & ]  A% k3 }9 e$ Y

% w( i: V, ?3 N$ h& L
/ P. `7 Q( p7 c
由噪声发生器生成的噪声具有均匀的频谱分布,可将这些噪声视为白噪声。不过,白噪声分布均匀,不具备高斯输出特性。+ T( C1 U- c8 i1 ?0 _

/ F/ z# Y% f1 P9 A7 f5 q, b
. Y) R7 B3 G: w  r0 ]$ `
6ZDL_4[GL3]BW%~%UEHTV6W.png
- s$ f+ o1 I  {0 l; e/ g/ J. C- r
! d% U, F8 m! k( v1 B' w: I1 z, X

9 Y* |: z% |! E, k- t噪声波形的偏移量可以编程。使用预配置的偏移量表更改此偏移量(信号模式),用户可获得与信号模式和噪声波形之和相对应的波形。+ s9 D8 f/ M$ F$ C: z1 d' L# G

& d- x9 t6 a) O; j5 {$ ~% f
0 ^# F/ d. c0 T. \2 z" I' ]
JML5N8EO`0TN1%CO}5WYG[H.png - s# y" G+ m7 ?8 z
- X# \6 M7 C& z4 g! B0 @

* s; c2 f* F& l1.6.2 典型应用$ v8 Z& \; s/ x* O# K2 i
STM32 微控制器具有采样率高达 1 M/ 秒的 12 位增强型 ADC。在大多数应用中,这种分辨率已经足够,但在一些需要更高精度的情况下,可以利用过采样和抽选输入信号的概念,以减少外部 ADC 解决方案的使用并降低应用功耗。  V' f; j  S! \, h& K% ^% D* H+ Q
STM32 应用笔记 AN2668 中标题为“使用白噪声进行过采样”一节中详细介绍了这些方法的详细信息。$ X2 d: C* E4 a. u- g
白噪声发生器还可用于产生电子音乐,通常直接产生或作为滤波器的输入来形成其它类型的噪声信号。白噪声发生器广泛用于音频合成,通常用于再现钹等打击乐器的效果,这些乐器在其频域内具有较高的噪声量。& }4 B: k* R) U& {/ x; d
白噪声发生器可用于控制工程,以及放大器和电子滤波器的频率响应测试。! c5 o* X7 [4 i& D. N9 d" Q
白噪声是一种通用的合成噪声源,用于通过耳鸣掩蔽器进行声掩蔽。! R$ i& g: u/ J) ^
5 N5 K5 ^4 T( T
1.7 三角波发生器
* A$ ^2 P( ~0 \+ q8 T( r1.7.1 定义

& c. m. a  b8 \STM32 DAC 为用户提供了具有灵活的偏移量、振幅和频率的三角波形发生器。
1 w( Q' g8 ?/ W: }2 n/ U理论上说,三角波形是一种由无限组奇次谐波组成的波形。8 d- N7 X5 R1 h9 |; D, D! g9 A  z
可以使用 DAC_CR 寄存器中的 MAMPx 位修正三角波形的振幅。% U$ D3 Y7 U5 V9 S" M* l3 j
/ j" r6 X+ ]) V9 O
! r' R6 |" _; {' ~2 J) u9 c
V@S7TU9]PW16$W`4]_Z(JM0.png
7 w5 I) b7 }& f/ i6 a& w. n) R% g( r0 D$ \) c
S}JYDS7[AKPI7FFZ7){4K.png + |0 j+ `% A+ ]# M" m. F6 q

+ Y5 F& q( b" Q1 Z/ g/ S1 ?/ z9 H1 U
三角波形的偏移量可以编程。使用预配置的偏移量表更改三角波形地偏移量(信号模式),用户可获得与信号模式和三角波形之和对应的波形。( H: d3 v$ |9 O9 N7 Z
+ D6 C2 d9 d& k; ~' @2 @

+ e; Y$ H# ?7 T0 Z. v ]W`O~7KXUYXCMCV{P1%(O6V.png
# j  E& S3 @5 Y& S3 I% k1 k& |# t- A

1 ^$ j; k8 B2 h+ S1.7.2 典型应用
" A9 {- m5 B$ _6 j- O1 S5 X由于三角波发生器的高次谐波下降速度更快,因此其音色比方波柔和,故而三角波发生器经常用于声音合成。
& J% d+ |$ g7 J  ]三角波发生器电路还可用于多种调制解调器电路应用。! G' L$ K7 X' V. |: O3 V. H
8 Z4 ~8 a3 h5 L1 g. K
. F  H( q# q3 }" ?6 J
. A; Z2 I- j" }1 E3 S, a
完整版请查看:附件  Q7 c. b; l5 I$ L8 ^; D" t
+ J7 F8 n, r2 p

# @6 V- o# {& ]; R

CD00259245_ZHV1.pdf

下载

1.23 MB, 下载次数: 5

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

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版