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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-15 17:41
概述
    本篇文章主要介绍如何使用STM32CubeMX移植到雅特力AT32F403AVGT7,并通过DAC输出电压,在芯片中有2个12位的DAC口可以供选择。

) {) C* h+ t7 B5 v( O
微信图片_20230415173938.jpg
  r& L  |1 m* _1 R" B2 K& [2 G

# _& e7 A5 k& ?1 A5 i硬件准备    首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板:' Z: M* X( G' T* N: F
: l! K% P5 l7 P/ V6 ]& ?

9 u1 n! B3 A+ l4 R  n: i% H; r, J1 p
微信图片_20230415173932.png

  [2 M. I! ?+ d; m- L, P- W6 U7 f0 {3 q
选择芯片型号
    雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。

. Y9 @0 P1 k% ?
微信图片_20230415173924.png

, _6 n& k: b6 H2 U: |
配置时钟源
    HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示。
7 Q. ?7 M5 {7 Z( x

$ b# U  \3 `7 a* t
微信图片_20230415173908.png
$ m2 C7 O4 C/ l8 k
配置时钟树
    雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可。
. G. g% S, \2 z0 U# c
; n9 Q8 ^1 u5 A3 n5 w
微信图片_20230415173904.png

) R5 h" Z3 B, DDAC配置
    然后设置PA4为DAC_OUT1,  完整引脚配置如下图。
0 y8 h" [( K' V3 L% U
微信图片_20230415173844.png

2 t+ o' a2 ~% \* k9 K2 `生成工程设置
    注意在生产工程设置中不能出现中文,不然会报错。# F. T6 L5 e; z( [3 t( [, y) l

9 z/ d, w; K; h$ o
微信图片_20230415173546.png
5 k; K  C, C4 Z! i
代码生成设置
    最后设置生成独立的初始化文件:
  j1 [: C  h" ^% k
. c3 o; N; u6 }# {  k1 N" a
微信图片_20230415173539.png
5 G, f9 \8 B5 i  U6 ~
生成代码
* |9 m, r, H: C/ [/ f: Z; r' G2 `
微信图片_20230415173512.png
8 K( a- ]& ]: A( {6 E
代码编写
    在main.c中,添加DAC电压变量定义。
  1. /* USER CODE BEGIN PTD */
    & `; a( u; c; k
  2. int dac_i=0;//定义DAC电压值
    , W& K9 \9 V( q' \0 |
  3. /* USER CODE END PTD *
复制代码

+ K6 h) V# a3 {5 `2 P# \6 M* W5 i, B
    在main.c中,主程序输出电压值,因为是12位的dac,所以值只能是0-4095。
  1.   /* USER CODE BEGIN WHILE */
    . c% r: B( v! m, g0 |  g" O
  2.   while (1)0 s3 W, x" I$ H2 `5 s
  3.   {
    9 F" m! \1 R* w
  4.     /* USER CODE END WHILE */% C7 V1 Z" p8 g. e+ g3 S
  5.    
    2 T" W5 ]$ i. i
  6.     /* USER CODE BEGIN 3 */
    * E& ~; z0 d6 e/ z) U
  7.     if(dac_i<4096)* l- T. L/ a8 {4 Z/ [# H
  8.     {, C7 Z& n/ J; n5 r$ L: f
  9.       dac_i++;( j  p: k7 _8 ]; }) y) o7 ^
  10.       if(dac_i%512==0)//使得输出波形为阶梯状' b2 y) X7 O1 a2 j
  11.         HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_i);//设置DAC值为dac_i
    6 d- a# ^, D. d, q7 j( |! q0 M
  12.     }
    4 E! g0 t! T& S1 R. v
  13.     else5 ^4 h3 p. W, h: h* U# Q) a8 E4 c
  14.       dac_i=0;
    . I. n4 C; l. D9 }
  15.   }
    0 A; _; F4 i  L
  16.   /* USER CODE END 3 */
复制代码
0 h3 V0 ^, G7 c3 Z/ M" @% g

* r" F  z9 a" ~& {演示效果
    因为是输出为阶梯状,每变量每增加512,电压改变一次,故应该有8个阶梯,分别是0,512,1024,1536,2048,2560,3072,3584。
1 t# t7 d$ ~- ^$ x6 F/ i( F
微信图片_20230415173507.jpg
! `1 f6 E2 s% d3 n; B0 ]$ I
转载自:记帖
如有侵权请联系删除
& Z. U5 s) }2 ^

; a5 O/ f  n6 l" h5 x8 G5 A, J0 \$ E- V9 A% F7 a) D" v$ j
微信图片_20230415173549.png
微信图片_20230415173859.png
赞 收藏 评论0 发布时间:2023-4-15 17:41

举报

0个回答

所属标签

相似技术帖

官网相关资源

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