STM32的DAC输出驱动电压
程序员文章站
2024-03-19 14:18:28
...
目的
项目中的模块对输出电压的改变来控制功率、所以考虑用stm32内部的DAC来输出电压作为驱动。
源代码
#include "dac.h"
void Dac1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitType;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4) ;
DAC_InitType.DAC_Trigger=DAC_Trigger_Software;
DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;
DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;
//DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;
DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Enable ;
DAC_Init(DAC_Channel_1,&DAC_InitType);
DAC_Cmd(DAC_Channel_1, ENABLE); //ʹÄÜDAC1
DAC_SetChannel1Data(DAC_Align_12b_R, 0);
}
void Dac1_Set_Vol(uint16_t vol)
{
uint16_t temp;
temp = (uint16_t) ((vol/3.3) * 4096);
DAC_SetChannel1Data(DAC_Align_12b_R,temp);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
void DAC_OutVoltage(float valtage)
{
uint16_t data;
data = (uint16_t)((valtage/3.3) *4096);
DAC_SetChannel1Data(DAC_Align_12b_R,data);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
在实现输出的电压后、用万用表测量。输出的电压虽然正确。但用在模块上发现驱动能力不够
//DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;
正是由于DAC_OutputBuffer没有使能!。。。。
上一篇: sha256实现代码(C++模板类)
下一篇: JavaScript 学习笔记 之 类型
推荐阅读