Skip to content

Commit 1d09fe7

Browse files
fix ADC oversampling ratio regression from HAL v7 upgrade
The STM32H7xx HAL now subtracts 1 from the Oversampling.Ratio value internally before applying it. libDaisy was already pre-subtracting 1, causing double-compensation (e.g. OVS_32 summed ~31 samples instead of 32, then divided by 32). All 9 ratio values corrected. Matches upstream electro-smith/libDaisy PR electro-smith#695.
1 parent 16b3a83 commit 1d09fe7

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

src/per/adc.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -266,40 +266,40 @@ void AdcHandle::Init(AdcChannelConfig* cfg,
266266
{
267267
case OVS_4:
268268
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_2;
269-
adc.hadc1.Init.Oversampling.Ratio = 3;
269+
adc.hadc1.Init.Oversampling.Ratio = 4;
270270
break;
271271
case OVS_8:
272272
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_3;
273-
adc.hadc1.Init.Oversampling.Ratio = 7;
273+
adc.hadc1.Init.Oversampling.Ratio = 8;
274274
break;
275275
case OVS_16:
276276
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
277-
adc.hadc1.Init.Oversampling.Ratio = 15;
277+
adc.hadc1.Init.Oversampling.Ratio = 16;
278278
break;
279279
case OVS_32:
280280
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_5;
281-
adc.hadc1.Init.Oversampling.Ratio = 31;
281+
adc.hadc1.Init.Oversampling.Ratio = 32;
282282
break;
283283
case OVS_64:
284284
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_6;
285-
adc.hadc1.Init.Oversampling.Ratio = 63;
285+
adc.hadc1.Init.Oversampling.Ratio = 64;
286286
break;
287287
case OVS_128:
288288
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_7;
289-
adc.hadc1.Init.Oversampling.Ratio = 127;
289+
adc.hadc1.Init.Oversampling.Ratio = 128;
290290
break;
291291
case OVS_256:
292292
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_8;
293-
adc.hadc1.Init.Oversampling.Ratio = 255;
293+
adc.hadc1.Init.Oversampling.Ratio = 256;
294294
break;
295295
case OVS_512:
296296
adc.hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_9;
297-
adc.hadc1.Init.Oversampling.Ratio = 511;
297+
adc.hadc1.Init.Oversampling.Ratio = 512;
298298
break;
299299
case OVS_1024:
300300
adc.hadc1.Init.Oversampling.RightBitShift
301301
= ADC_RIGHTBITSHIFT_10;
302-
adc.hadc1.Init.Oversampling.Ratio = 1023;
302+
adc.hadc1.Init.Oversampling.Ratio = 1024;
303303
break;
304304
default: break;
305305
}

0 commit comments

Comments
 (0)