自学内容网 自学内容网

STM32G4的数模转换器(DAC)的应用

目录

概述

1 DAC模块介绍

2 STM32Cube配置参数

2.1 参数配置

 2.2 项目架构

3 代码实现 

3.1 接口函数

3.2 功能函数 

3.3 波形源代码

4 DAC功能测试

4.1 测试方法介绍

4.2 波形测试


概述

本文主要介绍如何使用STM32G4的DAC模块功能,笔者使用STM32Cube工具配置DAC模块的参数,并使用HAL提供的函数接口验证DAC输出模拟量的功能。

1 DAC模块介绍

请参看原文:

STM32G4的数模转换器(DAC)功能介绍-CSDN博客

2 STM32Cube配置参数

2.1 参数配置

1) 选择通道

选择DAC1模块,其对应的IO接口为:

DAC1_OUT_PIN:   PA4

2)配置参数

使能如下参数

 2.2 项目架构

完成2.1节参数配置后,就可以生成项目,其程序架构如下:

3 代码实现 

3.1 接口函数

使用STM32Cube工具生成的代码已经完成DAC模块的初始化功能,程序员只实现DAC的输入数据接口

代码29行:DAC数据的输入接口

3.2 功能函数 

1)生成反正弦波函数

2)生成正弦函数

3) 三角波函数

3.3 波形源代码

/* USER CODE BEGIN Header */
/**
 ******************************************************************************
 * File Name        :  waveLib.c
 * Description      :  main task 
 ******************************************************************************
 * @attention
 *
* COPYRIGHT:    Copyright (c) 2024  tangmingfei2013@126.com

* CREATED BY:   mingfei.tang
* DATE:         JUL 05th, 2024

 ******************************************************************************
 */
/* USER CODE END Header */
#include "waveLib.h"
#include "dac.h"
#include <stdio.h> 
#include <string.h>
#include <stdbool.h>
#include <math.h>

#define PI    3.14159


void DAC_SetConvert( uint32_t value)
{
   HAL_DAC_SetValue( &hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R,value );
}

float dac_triangle_wave( void )
{
    static double t = -1;
    float value, angle;
    
    if( t >= 1 )
    {
      t = -1;
    }
    
    t += 0.001;
    angle = t*1000;
    
    return  angle;
}

float asin_wave( void )
{
    static double t = -1;
    float value, angle;
    
    if( t >= 1 )
    {
      t = -1;
    }
    
    value = asin( t ); 
    angle = (180*value)/3.1415926;
    t += 0.001;
    
    return  angle;
}

float sin_wave( void )
{
    float value, angle;
    static double t = -1;
    
    angle = 2*PI*t;
    value = 100*sin( angle ); 
    
    t += 0.001;
    if( t >= 1 )
    {
      t = -1;
    }
    
    return  value;
}





/* End of this file */

4 DAC功能测试

4.1 测试方法介绍

使用DAC模块输出模拟波形,ADC模块采样该波形数据

代码66行: 设置原始波形数据

代码68行: 配置DAC数据

代码76行:显示原始波形数据

源代码文件

void Debug_adcLog( void )
{
    float value;
    
    value = 200+ dac_triangle_wave();
    // dac_triangle_wave();
    DAC_SetConvert(value);
    if( bl_ready )
    {
        bl_ready = false;

        adc1_value_list[2] = value;
        // asin wave 
        adc1_value_list[3] = dac_triangle_wave();
     
        Debug_PrintfJustFloat( pADC_ValList, ADC_TOTAL_CH );
    }
}

4.2 波形测试

 1)正弦波形测试

2)反正弦波测试

 原始波形:

ADC采样的波形

 3)三角波测试

原始波形

ADC采样的波形

 


原文地址:https://blog.csdn.net/mftang/article/details/143822733

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!