2026-03-21 5:14 PM
Hello. Have some issues with MCU ADC configuration and data.
Hardware:
- MCU: STM32G473MET3
- ICs: BTS70401 smart high-side switches (2 channels on ADC4)
SW1: PE15 = ADC4_IN2
SW2: PD9 = ADC4_IN13
Problem:
When both channels enabled, ADC reads ~3000 instead of ~4095 during short circuit. Single channel reads correctly (4095).
Attempts Made:
1. ADC Configuration:
- Changed ContinuousConvMode from ENABLE → DISABLE
- Added ADC calibration at startup
- Changed Overrun from OVERWRITTEN → PRESERVED
- sampling times 12-600 cycles
2. Channel Multiplexing:
- Double-read technique (discard first, use second)
- Triple-read with dummy conversions
- Excessive delays (50-640 cycles) - no improvement
Question:
is there a real 100 % code line that guarantees ADC channel samples only its pin voltage?
Thank you.
2026-03-22 5:41 AM
> ADC reads ~3000 instead of ~4095 during short circuit
"Short circuit" being shorting the pin to VDD? That's a massive difference between 4095 and. I don't expect this can be anything other than a hardware issue or a misunderstanding in how things are actually set up. Especially as changing other ADC settings has no effect. Keep rechecking your assumptions.
2026-03-22 6:19 AM
No, Not shorting MCU pin to GND. Infineon High side switch BTS70401 shorted to GND.
The BTS70401 has a IS pin connected to MCU.
If BTS70401 shorted to GND, ADC4_IN2 on MCU read 4094 RAW
If add one more BTS70401 to the same ADC4_IN12 and short it to GND then RAW reading are never 4095, (around 3000).
Originally I did the same config with the same IBTS70401 on STM32G0 - and all ADC raw are with the margin they should be.