stm32/machine_adc: Handle ADC resolution less than 8 bits on all MCUs.

All MCUs can have 6-bit resolution; see adc_cr_to_bits_table.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2023-06-15 10:58:53 +10:00
parent 92d2de82e2
commit f7f8332ddf
1 changed files with 0 additions and 2 deletions

View File

@ -374,12 +374,10 @@ uint32_t adc_config_and_read_u16(ADC_TypeDef *adc, uint32_t channel, uint32_t sa
// Scale raw reading to 16 bit value using a Taylor expansion (for bits <= 16). // Scale raw reading to 16 bit value using a Taylor expansion (for bits <= 16).
uint32_t bits = adc_get_bits(adc); uint32_t bits = adc_get_bits(adc);
#if defined(STM32H7)
if (bits < 8) { if (bits < 8) {
// For 6 and 7 bits // For 6 and 7 bits
return raw << (16 - bits) | raw << (16 - 2 * bits) | raw >> (3 * bits - 16); return raw << (16 - bits) | raw << (16 - 2 * bits) | raw >> (3 * bits - 16);
} }
#endif
return raw << (16 - bits) | raw >> (2 * bits - 16); return raw << (16 - bits) | raw >> (2 * bits - 16);
} }