STM8L151 DAC
2020-04-21 来源:eefocus
最近在做一个关于ADC采集的,同时使用DAC输出的项目,对于DAC输出0V电压做一下总结。
STM8L151中内嵌1个 Output Buffer其作用可以用来降低输出阻抗,可以在不添加外部运算放大器时直接驱动外部负载,通过 DAC_CHxCR1来控制其使能或失能。
我使用的是PB4 具体的配置代码如下:
/********************************
RI_IOSwitch_13 ---> PB6
RI_IOSwitch_14 ---> PB5
RI_IOSwitch_15 ---> PB4
配置DAC1 通道1 PB4
********************************/
void DAC_Config(void)
{
GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_In_FL_No_IT);
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE); //打开比较器
SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA
DAC_DeInit(); //DAC初始化到默认值
// DAC_OutputBuffer_Disable 可输出 0V电压
DAC_Init( DAC_Channel_1,DAC_Trigger_Software,DAC_OutputBuffer_Disable);//通道 触发 缓冲
DAC_WaveGenerationCmd(DAC_Channel_1, DAC_Wave_Triangle, ENABLE);//三角波
DAC_SetTriangleWaveAmplitude(DAC_Channel_1, DAC_TriangleAmplitude_4095);//
DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,0);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
参考3.3V输出的电压值与实际值的比例关系
/****************************
设置通道1输出电压
vol = 0~3300 mV
*****************************/
u8 Set_Vol(u16 vol)
{
double temp=vol;
temp=temp*4095/3300;
DAC_SetChannel1Data(DAC_Align_12b_R, temp);
return 1;
}
下一篇:STM32 DAC简单介绍