2025-11-17 4:40 AM - edited 2025-11-17 4:44 AM
Hi,
For STM32F446RET6, I want to use the DAC function of it. But I have some question.
1. If I don't use the output buffer, what is the output range? From the datasheet I think it should be 0.5mV to 3.3V±1LSB?
2. If I use the output buffer, what is the output range? From the datasheet I think it should be 0.2V to 3.1V?
(My VDDA=VREF is 3.3V)
3. For this 12-bit DAC, its minimum output cannot be 0V (regardless of whether a buffer is used). So how should I adjust its output? When calculating the formula X/4095 (where X is my setting), if I set X to 1 and do not use an output buffer, should its output be 0.5mV + (1/4095) * 3.3V?
When calculating the formula X/4095 (where X is my setting), if I set X to 1 and use an output buffer, should its output be 0.2V + (1/4095) * 3.3V?
Thanks a lot for your help.
Best,
Junzhe
2025-11-17 4:48 AM - edited 2025-11-17 5:05 AM
Hello,
This is what STM32 Sidekick answered your questions :) :
With Output Buffer ON:
The DAC output voltage range is from a minimum of 0.2 V up to (VDDA – 0.2 V). For your setup (VDDA = VREF+ = 3.3 V), this means the output can swing from 0.2 V to 3.1 V. The minimum and maximum output voltages are not exactly at the digital code extremes (0x000 and 0xFFF), but are limited by the buffer characteristics.
With Output Buffer OFF:
The output voltage range is from a minimum of -0.5 mV up to (VREF+ – 1 LSB). For your setup, this means the output can go from approximately -0.5 mV to just below 3.3 V. Again, the minimum output voltage is not exactly 0 V, but slightly negative due to the DAC architecture.
To calculate the output voltage for a given digital value (X), you must consider the minimum and maximum output voltages as described above.
With Buffer ON:
VOUT = 0.2 V + [X / 4095] × (3.1 V – 0.2 V)
Where X is your 12-bit digital value (0 to 4095).
With Buffer OFF:
VOUT = -0.5 mV + [X / 4095] × (3.3 V – (-0.5 mV))
This formula accounts for the slightly negative minimum output.
True 0V Output:
The DAC cannot achieve a true 0V output, regardless of buffer configuration. The minimum output is either 0.2 V (buffer ON) or -0.5 mV (buffer OFF). This is a practical limitation of the DAC design.
Formula Adjustment:
When calculating the output for X = 1 (buffer OFF), the output is:
VOUT = -0.5 mV + (1/4095) × 3.3 V
This means the output starts slightly below 0V and increases linearly with the digital value.
2025-11-17 4:59 AM
Hi,
When I use an output buffer and set X to 1, my DAC output is 0.063V. Why is that? And why is my DAC outputting 0.6V when I don't use the output buffer and set X to 1?
2025-11-17 5:15 AM
With Buffer ON:
VOUT = 0.2 V + [X / 4095] × (3.1 V – 0.2 V)
Of course not. Thou shalt not trust any AI.
VOUT is always (VREF+-VREF-) * X/4095; when buffer is ON, it's saturated, i.e. for DAC_OR values which would result in voltages close to the extremes, it won't output those voltages but the limiting voltages (the datasheet value is worst-case).
JW