STM32-DAC


前言

前言写个参考吧
STM32 DAC+串口


一、理论介绍

DAC是数字模拟转换器(Digital to Analog Converter)的缩写,它是一种将数字信号转换为模拟信号的设备。在这里插入图片描述
在这里插入图片描述
RC有2个通道。
DAC的初始化

#include "DAC.h"

void DAC_init()
{
	//开启时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	//配置PA4、PA5为模拟输入
	//PA4 ==> DAC_Channel_1
	//PA5 ==> DAC_Channel_2
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN ;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5 ; 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	//DAC初始化
	DAC_InitTypeDef DAC_InitStructure; 
	DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits11_0;
	DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;		//不使能缓存器[也就是电压跟随器],外部电路需要加功放
																		//如果使能,可能会导致误差
//	DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
	DAC_InitStructure.DAC_Trigger=DAC_Trigger_Software; //软件触发
	DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;		//不选择的波形发生器
	DAC_Init(DAC_Channel_1,&DAC_InitStructure);
	
	//使能DAC
	DAC_Cmd(DAC_Channel_1,ENABLE);
	
	DAC_SetChannel1Data(DAC_Align_12b_R, 2048);			//分辨率为12位 右对齐 电压范围  0-4095
												//每个位表示一个电压级别,总共可以表示2^12=4096个不同的电压级别
	DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);		//软件使能转换

}

void Set_DAC1(float value)  
{
	float  value1;
	value1 = value*4095/3.3;	//DAC输出 = VREF x (DOR/4095)	
	
	printf("输入的数值:%.2f V\r\n", value);	//串口查看数据的真实数据,调试一大思路
	printf("运算后的:%.2f V\r\n", value1);
//	value= (float)temp * 4096 / 3.3;
//	value=temp*4095/3.3;		
	DAC_SetChannel1Data(DAC_Align_12b_R,value1);
}

主要需要解释的一个是DAC的初始化
在这里插入图片描述

  • 1、DAC_Trigger
    指定所选DAC通道的外部触发
    此参数的值可以是 @ref DAC_trigger_selection

    • 1.1 参数介绍
      在这里插入图片描述
      • 1.1.1 DAC_Trigger_None
        加载DAC1_DHRxxxx寄存器后,转换是自动的,而不是通过外部触发

      • 1.1.2 DAC_Trigger_T6_TRGO
        TIM6 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.3 DAC_Trigger_T8_TRGO
        TIM8 TRGO 被选为 DAC 通道的外部转换触发器
        仅在高精度设备中

      • 1.1.4 DAC_Trigger_T3_TRGO
        TIM8 TRGO 被选为 DAC 通道的外部转换触发器,仅适用于连接线、中密度和低密度超值线设备.
        [不知道是不是芯片解释手册写的有问题这里T3的解释变成了T8的。。。。]

      • 1.1.5 DAC_Trigger_T7_TRGO
        TIM7 TRGO被选为DAC通道的外部转换触发器

      • 1.1.6 DAC_Trigger_T5_TRGO
        TIM5 TRGO被选为DAC通道的外部转换触发器

      • 1.1.6 DAC_Trigger_T15_TRGO
        TIM15 TRGO 被选为 DAC 通道的外部转换触发器
        仅适用于中密度和低密度超值生产线设备

      • 1.1.7 DAC_Trigger_T2_TRGO
        TIM2 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.8 DAC_Trigger_T4_TRGO
        TIM4 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.9 DAC_Trigger_Ext_IT9
        EXTI Line9 事件被选为 DAC 通道的外部转换触发器

      • 1.1.10 DAC_Trigger_Software
        通过DAC通道的软件触发器启动转换

  • 2、DAC_WaveGeneration
    指定DAC通道噪声波还是三角波
    是否生成,或者是否未生成波。
    此参数的值可以是 @ref DAC_wave_generation

  • 3、DAC_LFSRUnmask_TriangleAmplitude
    指定用于生成噪声波的 LFSR 模板或
    DAC通道的最大振幅三角形生成。
    此参数的值可以是 @ref DAC_lfsrunmask_triangleamplitude
    在这里插入图片描述
    这个参数,在不使用波形发生的时候一般不用,就是直接选DAC_LFSRUnmask_Bit0。

  • 4、 DAC_OutputBuffer
    指定是启用还是禁用DAC通道输出缓冲器,
    此参数的值可以是 @ref DAC_output_buffer

    • 4.1 参数介绍
      在这里插入图片描述
      STM32的这个输出缓存使能虽然使输出能力强,但却会导致输出实际电压无法到0V.所以,一般情况下大家都不让它使能的,但是如果使能会提高驱动能力。
      -内部电压电压跟随器,选择驱动能力会增强【参考前言的参考博文和以下的】
      STM32的DAC输出驱动电压

二、DAC代码

三、实验结果


总结

这篇文章依旧没有总结

相关推荐

  1. <span style='color:red;'>STM</span><span style='color:red;'>32</span>-<span style='color:red;'>DAC</span>

    STM32-DAC

    2024-05-11 22:16:04      13 阅读
  2. <span style='color:red;'>STM</span><span style='color:red;'>32</span><span style='color:red;'>day</span>3

    STM32day3

    2024-05-11 22:16:04      23 阅读
  3. <span style='color:red;'>STM</span><span style='color:red;'>32</span><span style='color:red;'>day</span>2

    STM32day2

    2024-05-11 22:16:04      19 阅读
  4. STM32 ST-LINK

    2024-05-11 22:16:04       53 阅读
  5. <span style='color:red;'>STM</span><span style='color:red;'>32</span>

    STM32

    2024-05-11 22:16:04      32 阅读
  6. <span style='color:red;'>STM</span><span style='color:red;'>32</span>

    STM32

    2024-05-11 22:16:04      15 阅读

最近更新

  1. Unity 常用取整方法

    2024-05-11 22:16:04       0 阅读
  2. 华为机考真题 -- 攀登者1

    2024-05-11 22:16:04       0 阅读
  3. Linux内核 -- 内存管理之scatterlist结构使用

    2024-05-11 22:16:04       0 阅读
  4. 【国产开源可视化引擎Meta2d.js】数据

    2024-05-11 22:16:04       1 阅读
  5. Elasticsearch 面试题指南

    2024-05-11 22:16:04       0 阅读
  6. Linux笔记之iftop查看特定IP地址吞吐量

    2024-05-11 22:16:04       0 阅读
  7. 量化交易在不同经济周期中的表现

    2024-05-11 22:16:04       0 阅读

热门阅读

  1. c++中unrodered_map与unordered_set的基本使用

    2024-05-11 22:16:04       13 阅读
  2. 基于Seata实现分布式事务实现

    2024-05-11 22:16:04       12 阅读
  3. ffmpeg 7.0 + vs2022 +windows编译

    2024-05-11 22:16:04       16 阅读
  4. Idea 核心编程快捷键-简洁版

    2024-05-11 22:16:04       12 阅读
  5. 嵌入式复习提纲

    2024-05-11 22:16:04       12 阅读
  6. 学习笔记:IEEE 1003.13-2003【POSIX PSE53接口列表】

    2024-05-11 22:16:04       14 阅读