kxsi 发表于 2021-6-7 12:07

移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压

概述本篇**主要介绍如何使用STM32CubeMX移植到雅特力AT32F403AVGT7,并通过DAC输出电压,在芯片中有2个12位的DAC口可以供选择。

kxsi 发表于 2021-6-7 12:07

硬件准备首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板:

kxsi 发表于 2021-6-7 12:08

选择芯片型号雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。

kxsi 发表于 2021-6-7 12:10

配置时钟源HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:

kxsi 发表于 2021-6-7 12:11

配置时钟树雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可:

kxsi 发表于 2021-6-7 12:12

DAC配置然后设置PA4为DAC_OUT1, 完整引脚配置如下图。

kxsi 发表于 2021-6-7 12:13

生成工程设置注意在生产工程设置中不能出现中文,不然会报错。

kxsi 发表于 2021-6-7 12:13

代码生成设置最后设置生成独立的初始化文件。

kxsi 发表于 2021-6-7 12:14

生成代码

kxsi 发表于 2021-6-7 12:15

代码编写
在main.c中,添加DAC电压变量定义。

/* USER CODE BEGIN PTD */
int dac_i=0;//定义DAC电压值
/* USER CODE END PTD */


在main.c中,开启DAC通道1。

/* USER CODE BEGIN 2 */
        HAL_DAC_Start(&hdac, DAC_CHANNEL_1);//开启DAC通道1
/* USER CODE END 2 */


在main.c中,主程序输出电压值,因为是12位的dac,所以值只能是0-4095.

/* USER CODE BEGIN WHILE */
while (1)
{
    /* USER CODE END WHILE */
               
    /* USER CODE BEGIN 3 */
                if(dac_i<4096)
                {
                        dac_i++;
                        if(dac_i%512==0)//使得输出波形为阶梯状
                                HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_i);//设置DAC值为dac_i
                }
                else
                        dac_i=0;
}
/* USER CODE END 3 */


kxsi 发表于 2021-6-7 12:16

结果演示因为是输出为阶梯状,每变量每增加512,电压改变一次,故应该有8个阶梯,分别是0,512,1024,1536,2048,2560,3072,3584。

muyichuan2012 发表于 2021-6-7 12:55

很详细的配置过程,感谢分享。

guijial511 发表于 2021-6-7 21:03

很详细,谢谢楼主的分享。

mutable 发表于 2021-7-3 10:56

用CUBE
也可以初始化AT的芯片么
页: [1]
查看完整版本: 移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压