目录
概述
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.14159void 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采样的波形