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

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

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

8 [  Y' L. d2 _# b# h1 [
微信图片_20230415173938.jpg

% e! B4 k  ?' y) v( O, e
$ Q" c* `8 M# a硬件准备    首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板:
  k9 q+ ?6 B" o0 n( N9 Z0 ]
1 a6 X5 A8 b4 G% v: B4 l

5 \3 {1 I0 i) [( l
微信图片_20230415173932.png

  W, E  o) `. O) K  c+ [  P- u! r, c  T- U7 O# V6 Q
选择芯片型号
    雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。
% q# c! t% R2 ^% [
微信图片_20230415173924.png
4 d* U9 c4 ]0 l  F
配置时钟源
    HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示。
* k! `! `$ Y( ?3 B% L. t6 Y9 }

" U% z/ f" Q6 H1 B- k
微信图片_20230415173908.png
3 X8 B1 }1 h; q( Y# f8 C
配置时钟树
    雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可。  O7 w4 e& w( k2 ^

& P' h8 r9 z' {, \6 _: d
微信图片_20230415173904.png

7 u5 t9 @& e" f; p" W9 e2 EDAC配置
    然后设置PA4为DAC_OUT1,  完整引脚配置如下图。

' {2 f+ M7 G0 K: E, Z7 N9 ?
微信图片_20230415173844.png
; v$ B7 m) o% i( h/ e8 M
生成工程设置
    注意在生产工程设置中不能出现中文,不然会报错。  U# q. T0 a6 [0 t6 J$ u

9 D; [$ F- p# }$ W; O3 ^
微信图片_20230415173546.png
% v5 |& K) E6 A: R; J( Y
代码生成设置
    最后设置生成独立的初始化文件:& C$ {0 R  u& h  R; K
: y- N, g! o) N$ n! p7 n
微信图片_20230415173539.png

% o5 C# f0 p# P4 {生成代码
+ p$ e( m$ f& m5 w
微信图片_20230415173512.png
# v3 |. i# {: K7 X* V4 J0 B+ {' V4 }
代码编写
    在main.c中,添加DAC电压变量定义。
  1. /* USER CODE BEGIN PTD */: L4 d2 y4 F1 x
  2. int dac_i=0;//定义DAC电压值
    9 w- y' B$ N/ a6 ~! R+ h- K
  3. /* USER CODE END PTD *
复制代码
% F6 Z& w) g! W) d0 M; _) l# L
    在main.c中,主程序输出电压值,因为是12位的dac,所以值只能是0-4095。
  1.   /* USER CODE BEGIN WHILE */
    ' g% m$ x  i  D2 o) k
  2.   while (1)
    , Z2 a) V2 {$ s5 l4 ?2 x2 P
  3.   {
    8 g* y3 n4 f' b. I6 G
  4.     /* USER CODE END WHILE */
    7 v: y0 q" y( l- I
  5.     6 u$ _- N. ~5 l
  6.     /* USER CODE BEGIN 3 */) P3 ^2 y2 q5 d. s; g
  7.     if(dac_i<4096)
    - }. F! }' l9 Y
  8.     {
    ( V  M4 N* e/ [- u" I( c
  9.       dac_i++;
    . e3 a- n1 ]' C: o
  10.       if(dac_i%512==0)//使得输出波形为阶梯状
    # q: R1 q3 S% V% w% d
  11.         HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_i);//设置DAC值为dac_i8 r& A5 t# m2 E- P" ^
  12.     }) c8 a2 b! X3 }) u0 Z4 o
  13.     else
    ; x  F6 ?; [5 }4 b& c! c
  14.       dac_i=0;: o* x7 H5 Y8 H5 u+ P% b
  15.   }
    2 W' H- ~5 }: ^% |+ j3 e; R+ `  R
  16.   /* USER CODE END 3 */
复制代码

2 U, ~6 a! @( e
5 b( V/ K1 g' X8 s. y1 l9 r6 i
演示效果
    因为是输出为阶梯状,每变量每增加512,电压改变一次,故应该有8个阶梯,分别是0,512,1024,1536,2048,2560,3072,3584。
5 q. [6 L) s6 i# M7 z( i. ^1 i+ \/ e
微信图片_20230415173507.jpg
2 N( E6 o9 `' C
转载自:记帖
如有侵权请联系删除
8 |0 r/ y1 X3 F! k' D

8 B0 ~2 }0 t  K' {, Z( ^; G$ G2 \$ b) ^( t/ E5 @6 U
微信图片_20230415173549.png
微信图片_20230415173859.png
赞 收藏 评论0 发布时间:2023-4-15 17:41

举报

0个回答

所属标签

相似技术帖

官网相关资源

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