Skip to main content
HDaji.1
Senior
November 6, 2021
Question

how to make DAC hold stable output voltage

  • November 6, 2021
  • 1 reply
  • 983 views

I am testing OPAMP_PGA example code.

Here is the DAC config code:

 /** DAC channel OUT1 config
 */
 sConfig.DAC_HighFrequency = DAC_HIGH_FREQUENCY_INTERFACE_MODE_AUTOMATIC;
 sConfig.DAC_DMADoubleDataMode = DISABLE;
 sConfig.DAC_SignedFormat = DISABLE;
 sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
 sConfig.DAC_Trigger = DAC_TRIGGER_T2_TRGO;
 sConfig.DAC_Trigger2 = DAC_TRIGGER_NONE;
 sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
 sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_BOTH;
 sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
 if (HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1) != HAL_OK)
 {
 Error_Handler();
 }

The DAC output drops very fast once it is raised to the expected value as showed in the following pic:

0693W00000GWf1rQAD.jpgI change this line

 sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;

to enable sample and hold. It does not help much.

I wonder what are the proper values for these parameters

 sConfig.DAC_SampleAndHoldConfig.DAC_SampleTime = 0;
 sConfig.DAC_SampleAndHoldConfig.DAC_HoldTime = 0;
 sConfig.DAC_SampleAndHoldConfig.DAC_RefreshTime = 0;

So DAC output can hold until next change trigger

This topic has been closed for replies.

1 reply

HDaji.1
HDaji.1Author
Senior
November 6, 2021

According to stm32g4xx_hal_dac.h, max value for SampleTime and HoldTime is 1023.

So I set those 3 parameters as

 sConfig.DAC_SampleAndHoldConfig.DAC_SampleTime = 1023;
 sConfig.DAC_SampleAndHoldConfig.DAC_HoldTime = 1023;
 sConfig.DAC_SampleAndHoldConfig.DAC_RefreshTime = 0;

This is DAC output as captured in scope:

0693W00000GWf4HQAT.jpg