MP2797DFP-0001-T High-Resolution ADC Scan Sequence for MCU Implementation

Hello MPS Support Team,

I am interfacing the MP2797 with an ESP32 over I²C and would like to implement the High-Resolution ADC scan without using the MPS Desktop Tool.

My objective is to trigger a High-Resolution ADC scan every 1 second and read:

  • PACKP voltage (Register 0x69)

  • NTC1–NTC4 high-resolution ADC values (Registers 0x8F–0x8C)

I have read the datasheet and understand the following registers:

  • ADC_STS (0x98)

  • ADC_CTRL (0x99)

  • HR_SCAN0 (0x9C)

My current sequence is:

  1. Configure the required HR_SCAN registers.

  2. Set ADC_CTRL[0] (ADC_SCAN_GO = 1).

  3. Wait for ADC_CTRL[1] (SCAN_DONE_STS = 1).

  4. Read registers 0x69 and 0x8C–0x8F.

However, the values do not update correctly when using my ESP32 firmware.

When I use the MPS Desktop Tool with the same hardware, the PACK voltage and NTC values update correctly.

Could you please clarify the following?

  1. What is the complete initialization sequence required before issuing ADC_SCAN_GO?

  2. Which HR_SCAN registers and bits must be enabled for PACK voltage and NTC measurements?

  3. Is checking ADC_STS[12:11] (INT_SCHEDULER = Ready for feature command) mandatory before starting an ADC scan?

  4. Are there any additional registers that must be configured before the High-Resolution ADC scan will update the result registers?

  5. Does the MPS Desktop Tool perform any additional initialization or hidden register writes before starting an ADC scan?

  6. Is there a recommended MCU polling sequence for High-Resolution ADC conversions?

  7. Could you provide a minimal example showing the required I²C write/read sequence to obtain updated PACK voltage and NTC readings every second?

Any guidance or example sequence would be greatly appreciated.

Thank you.