最近在做一个关于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; }