1,关闭OUTPUT Buffer ,虽然增强了输出能力,但不能输出0V。
2,程序实现:
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,4095); //0~4095,设置通道,对齐方式,分辨率,输出电压
HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
while (1)
{
float dac_val = HAL_DAC_GetValue(&hdac1,DAC_CHANNEL_1); //获取电压值
printf("DAC=%.2fV\r\n",dac_val/4095.0f*3.3f);
HAL_Delay(500);
}
}
//优化
(一),开启一个DAC通道:Connected to external pin only
(二),初始化
//先设置输出电压
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 0 );//默认输出低电平
DAC_ALIGN_12B_R:默认推荐,直接使用12位原始值(0~4095),无需移位,代码更简洁。DAC_ALIGN_12B_L:特殊场景(DMA)下使用(如特定数据格式要求),需手动左移4位。
//最后启用DAC
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
(三),输出电压函数
void DAC_SetValue(float value_)
{
uint16_t _temp = (value/3.3f)*4095 ;
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, temp) ;//设置范围0~4095
}