wenbo2005.online

学习记录 / STM32

DAC

STM322025-04-12

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
}