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

基于STM32进行DAC配置经验分享

[复制链接]
攻城狮Melo 发布时间:2023-3-18 11:56
一.DAC介绍. q" g) W5 N5 q6 g
ADC是模数转换器,可以将模拟电压转换位数字信号;DAC是数模转换器,可以将数字信号转换为模拟电压。
. v$ O/ i+ S$ t! G9 l0 \6 QSTM32F103ZET6内部DAC有2个通道,12位数字输入(也可以配置为8位),可以按要求输出不同的信号波形,其主要特点如下:
* W* g. i* t  ]  {6 l2个DAC转换通道( F0 w0 ]7 ?: h  W
每个通道都有DMA功能
( P' T3 t0 o  ^( V2个通道可以同时转换或者分别转换
5 ~4 P8 O+ ]1 _% R! V9 o# ~' Q输入信号可以是12位或8位
, k3 |  H2 y* y( a$ ?12位输入模式分为:右对齐、左对齐  H9 z9 t8 J" F# u! B
有同步更新功能
' T# \5 ~- B, }" e- i0 [可以生成噪声波形2 W1 K9 Q& e" M# W$ ]6 P2 b5 ?# L
可以生成三角波形5 J0 w4 b0 x1 B+ O+ q
0 }7 U; b6 _% O, [/ i' ?' T
. x' q+ X* G1 ^9 v, V7 D! Q# B
DAC框图如下:
" K# V+ a9 f' ^3 Z) o: L6 Z2 J- S2 X" h4 h

6 O& Y' b; J' e" |- i 20200430194922231.png
: s( U5 ]! A9 s+ I/ V" R# a6 V6 _! a, w. {* M5 [

2 X- u2 }0 e. E: w6 S7 d. h二.主要寄存器说明
# `4 ]- s9 B( G一般使用DAC情况不多,而且使用也就是单纯输出电压,基本用不到STM32输出一些特殊的波形,所以了解一下基本的寄存器就可以配饰DAC了。
- |) r" F% P  a, g6 r
& P# x% }7 `1 Z6 M6 U0 S
! S( K, ~1 }: h. [6 r
DAC 输出是受 DORx 寄存器直接控制的,但是不能直接往 DORx寄存器写入数据,而是通过 DHRx 间接的传给 DORx 寄存器,实现对 DAC 输出的控制。8 k7 e" O+ O0 A0 F5 |1 }
比如通道1的12位右对齐数据保持寄存器:% X% N' D' d* H0 m7 L+ D

  P4 Q; A6 i. s# e
7 w6 E1 m$ u+ B4 M" B! u3 s5 M
20200430200359260.png + l( ^: U( H# K0 ~
  D' c/ p* L* k' E& k5 O
( t9 d6 E0 Z! r
控制DAC的就是DAC控制寄存器了:' I( ~3 C) t* X" Q4 l
- E: R& A: v7 V% E
# F6 ?/ j5 q, K9 l0 M
20200430200458602.png & b. r6 y  i: J/ L, d
20200430200536151.png
0 k+ u  ]2 ^, |8 ?
! N4 q7 y! l1 Z
+ y/ X* S+ B+ p$ t1 v+ f
这种东西,现在查一下参考手册就可以很快掌握。
7 Z+ G+ W5 p9 m# O* Z! O5 o& K, d/ b$ C; I
三.代码及配置
# C+ z0 @% f5 f$ U+ ]PA4开始设置为模拟输入是为了防止信号干扰,在使能DAC后,PA4会自动与DAC模拟输出相连,所以不必担心。
& Y" m5 D0 Z% F) U. I7 o7 Y
  1. /* DAC1  PA4 模拟输入 12位右对齐 参考电压3.3V */& O/ J" o, B7 x) l; M8 C% ^
  2. void DAC1_Init( void )
    ( e4 Y9 w3 ~% X: D6 x4 M- \8 K
  3. {
      r. U6 h* Q0 Z" y$ D7 _
  4.         GPIO_InitTypeDef GPIO_InitStruct;; f+ b$ q6 k$ E+ c4 Y  v; q
  5.         DAC_InitTypeDef DAC_InitStruct;% C  t9 \1 \4 `3 M# k
  6.        
    5 Z) f" z) D; K
  7.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
    / m6 J3 ]* O6 u* @* S# B8 h
  8.         RCC_APB1PeriphClockCmd( RCC_APB1Periph_DAC, ENABLE );
      w- N$ U6 ]: F6 g: n3 ]9 e
  9.        
    " ~2 F, n. d; D
  10.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//GPIO引脚模式:模拟输入& b. n' N: G6 D1 {& ?" t: b
  11.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;8 h, D" k8 [, ], E0 }6 N- [
  12.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    7 Z  l6 C% A3 X7 j" j
  13.         GPIO_Init( GPIOA, &GPIO_InitStruct );
    , I% _( B- j$ A
  14.         GPIO_SetBits( GPIOA, GPIO_Pin_4 );. |6 H4 r# B. L
  15.         5 a. G* K# T( {# X  U; A
  16.         DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;//只有波形发生时才使用
    : @% P' M* j4 t. x
  17.         DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Disable;//不使用输出缓存# i8 V- }1 I" c" l, X8 H8 K
  18.         DAC_InitStruct.DAC_Trigger = DAC_Trigger_None;//不触发
    - e1 C) f* f; b6 [0 q& f
  19.         DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None;//不使用波形发生6 U/ R7 w, M2 y8 M% O7 W; b9 W8 [
  20.         DAC_Init( DAC_Channel_1, &DAC_InitStruct );' q( B& ]- L9 A; c  N
  21.        
    1 u/ o" q: d  }% V3 [
  22.         DAC_Cmd( DAC_Channel_1, ENABLE );# O3 r( u4 E0 z4 I, F
  23.         DAC_SetChannel1Data( DAC_Align_12b_R, 0 );
    8 @1 E! `, Y9 \+ c4 `/ N! H! z) h/ j
  24. }
    0 @+ B1 N" L5 L/ _* n: e" A# _
  25. " l0 r  R. s* P
  26. 6 l0 k( t( T. u! U0 Q
  27. /* 参考电压3.3V 12位分辨率:0~4095 vol代表输出电压的100倍:0~330 */# J+ C2 }9 s( y5 F
  28. void Set_DAC_Vol( uint16_t vol )
    ! h' U5 A, O' K$ P8 F! y% u6 g
  29. {
    6 f, i6 a9 K, L% A
  30.         uint16_t x;
      E$ j; V/ K) C
  31.        
    3 e, I* _* G4 V" ]
  32.         x = (uint16_t)4096*(vol/330);
    * D( Q# ~% R  o: w
  33.         DAC_SetChannel1Data( DAC_Align_12b_R, x );
    # }" B6 r1 {1 {9 M0 w5 v# B
  34. }; U0 V0 C/ O0 v4 v9 C5 Z
  35. , J. }) @2 z% P+ c2 s

  36. / o0 l: b. Z/ Y) V. c
复制代码
9 z! }$ s) k# T, M9 @& l- C& E
————————————————; T0 g. c6 I9 _: @. {4 r4 _- t8 R. C
版权声明:Aspirant-GQ9 S9 O6 R" n# X5 @' a  U( Z
如有侵权请联系删除
) L2 L6 b8 E& U" z2 M# ]7 ]5 X
9 P% z. Q$ }9 k& I, Q" m# T: e* e* b- Y
赞 收藏 评论0 发布时间:2023-3-18 11:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

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