DAC
- 前言
- 一、理论介绍
- 二、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通道的软件触发器启动转换
-
- 1.1 参数介绍
-
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输出驱动电压
- 4.1 参数介绍
二、DAC代码
三、实验结果
总结
这篇文章依旧没有总结