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

基于STM32CUBEMX之移植雅特力DAC输出电压经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-15 17:41
概述
    本篇文章主要介绍如何使用STM32CubeMX移植到雅特力AT32F403AVGT7,并通过DAC输出电压,在芯片中有2个12位的DAC口可以供选择。
/ G( o6 q" q$ v% d; R9 \& w: W
微信图片_20230415173938.jpg

2 ~6 n! m  w& X6 e% y- f% h
3 L: J# |3 O+ c9 }+ }硬件准备    首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板:5 C+ m+ {- E7 \- a" R/ Q/ l
- _6 v2 T# M- ^, A  G  ^
+ M) _9 ?* E# w3 Z2 x
微信图片_20230415173932.png
- h7 L" L2 D7 R$ u9 l: X

  `5 b* F5 W& P$ O
选择芯片型号
    雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。

* g# q' B" e$ y0 a1 @
微信图片_20230415173924.png

+ S- b. o9 t6 k8 W, W7 j/ N- \6 L
配置时钟源
    HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示。9 m( Y. b/ D) Z5 E* _: u6 E! O; }4 M
) T  |. [1 Q: |+ u- Y! J. E+ s. d
微信图片_20230415173908.png
) n+ e6 q# j+ L. S7 a% S' B0 v
配置时钟树
    雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可。
9 d0 {. b2 k& F" K1 l

% O; h5 A1 k# K& u6 L6 Z
微信图片_20230415173904.png
' {* f* {3 ?4 s7 y; J2 ?2 M
DAC配置
    然后设置PA4为DAC_OUT1,  完整引脚配置如下图。

# R+ A' O8 \# Q9 H7 {0 `
微信图片_20230415173844.png

; Y8 k, s6 s7 B  |  B生成工程设置
    注意在生产工程设置中不能出现中文,不然会报错。* n% Z- e* ]) ^* B  t8 {5 i

2 ~* T' K3 e3 @% j9 A
微信图片_20230415173546.png
. ~% M4 W9 B) Y
代码生成设置
    最后设置生成独立的初始化文件:
; Y0 x$ k/ r6 u, V' z9 f

- Z% t& c9 e5 J+ C% @
微信图片_20230415173539.png
( G$ S" X, ^% d6 D
生成代码3 ]8 l, U7 r; M4 ~
微信图片_20230415173512.png

. }9 w2 f, e  Q& G; [- A. O代码编写
    在main.c中,添加DAC电压变量定义。
  1. /* USER CODE BEGIN PTD */
    + C' M1 r2 o  x  w9 R
  2. int dac_i=0;//定义DAC电压值7 z+ \/ q& G4 B1 T' R2 w
  3. /* USER CODE END PTD *
复制代码

8 Z) \9 O  x$ ]6 }/ ~
    在main.c中,主程序输出电压值,因为是12位的dac,所以值只能是0-4095。
  1.   /* USER CODE BEGIN WHILE */, Y2 \: L% M$ H- K7 a
  2.   while (1)
    ! d1 l, D6 [" s4 L5 P( V: K* S
  3.   {
    ' _# Y! s  q1 ~# t- X; X" O" C
  4.     /* USER CODE END WHILE */# G* r, f" C$ @. n/ q
  5.     + i0 |1 Q. [) D9 ~8 j
  6.     /* USER CODE BEGIN 3 */
    2 u: M6 v4 Q/ k/ Z
  7.     if(dac_i<4096)
    ' Q$ s. y- ^3 R7 {
  8.     {
    ( M0 B" g  @1 J" p9 H+ ^
  9.       dac_i++;0 j! _8 w- E: W# o7 Z
  10.       if(dac_i%512==0)//使得输出波形为阶梯状: {; ]" R. q' x4 K+ a4 E5 p
  11.         HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_i);//设置DAC值为dac_i
    7 |4 c5 y5 U, b* E! d. C% |6 |
  12.     }
      H. e0 t2 K8 D4 H( g3 D. g
  13.     else
    - z( i5 A: d8 a% F
  14.       dac_i=0;( N) [: E& B& }. J6 ?$ p9 G0 a0 R
  15.   }
    5 `7 E+ V& k) f2 e, Y0 C) q
  16.   /* USER CODE END 3 */
复制代码
9 {6 ~: d# W% ?: W
& I+ O( w3 s  @" A/ y
演示效果
    因为是输出为阶梯状,每变量每增加512,电压改变一次,故应该有8个阶梯,分别是0,512,1024,1536,2048,2560,3072,3584。

* G, c+ U2 U& h  S2 q6 V( h  c8 q) j
微信图片_20230415173507.jpg

, [/ ^& o# y8 [
转载自:记帖
如有侵权请联系删除
- |$ @% w9 c' H; }
7 Z2 L2 ~7 m# v5 f' \: n+ Z

9 j( d, v7 V. A  E+ L
微信图片_20230415173549.png
微信图片_20230415173859.png
收藏 评论0 发布时间:2023-4-15 17:41

举报

0个回答

所属标签

相似技术帖

官网相关资源

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