NPM1300 adc interrupts and IBAT questions

In the specs of npm1300 PS, it is suggested that the ADC can measure VBAT, VBAT_7V range, NTC, DIE_TEMP, VSYS, IBAT. However, in the interrupt configuration reported in 7.7.1.4 there are also entries for VSET1 and VSET2 (buck outputs). Is it possible to measure those as well? How?

Also, I'm confused about the current measurement functionality. There is a specific TASK for IBAT measurement. However, there is also the ADCIBATMEASEN register to "enable" IBAT measurement. My understanding is that this functionality transforms the normal VBAT into a VBAT+IBAT sequential measurement, where the VBAT interrupt is raised only after both VBAT and IBAT are measured. However, it is still not clear if 1) this feature only works for VBAT auto measure (with timer) 2) if this is compatible with VBAT burst measurement

Thank you for the clarifications!

Parents
  • Following up, more clarifications are needed. 

    1. ADCVBAT2RESULTMSB and ADCVBAT3RESULTMSB seem to contain IBAT and VBUS measurements. Are the corresponding LSBs found in the ADCGP1RESULTLSBS register, in the last two fields as well?
    2. ADCCONFIG is very unlcear. BURSTENABLE's description is "Trigger a single/4 consecutive measurements". Does this register generate the trigger? Does the trigger need to be generated by still with the TASKVBATMEASURE register? When VBATAUTOENABLE is selected, does the host need to issue a first trigger?
    3. Is it possible to have ADC auto measurements in burst mode? If so, what happens to potential IBAT and VBUS measurements issued manually? Can they be lost, overwritten by VBAT burst measurements?
  • Hello,

    Sorry for getting back to you a bit late. It's summer vacation here in Norway, and some of my colleagues are on vacation, which caused the delay in addressing this issue.

    VSET1 and VSET2 are input pins, not ADC-measurable outputs. They are used to set the initial buck output voltage via external resistors to GND (see Output Voltage Selection). The interrupts are likely triggered at startup, when those resistors are read. These events are not generally useful during normal application runtime.

    Enabling ADCIBATMEASEN works reliably, it performs a sequential VBAT and IBAT measurement whenever a VBAT measurement is triggered, either manually or automatically. The results for both are then provided through the IBAT event. However, this approach is not compatible with burst mode, since the result registers for IBAT and burst VBAT are shared, which can cause conflicts.

    As for IBAT measurement using the TASKIBATMEASURE trigger, I still need to clarify its behavior. Some follow-up is required with the R&D team, but that may take some time due to vacation schedules.

    Yaxit said:
    ADCVBAT2RESULTMSB and ADCVBAT3RESULTMSB seem to contain IBAT and VBUS measurements. Are the corresponding LSBs found in the ADCGP1RESULTLSBS register, in the last two fields as well?

    See the overview table, IBAT uses the same MSB/LSB pair as VBAT2.VBUS uses the same MSB/LSB pair as VBAT3.

    Yaxit said:
    ADCCONFIG is very unlcear. BURSTENABLE's description is "Trigger a single/4 consecutive measurements". Does this register generate the trigger? Does the trigger need to be generated by still with the TASKVBATMEASURE register? When VBATAUTOENABLE is selected, does the host need to issue a first trigger?

    VBATAUTOENABLE immediately starts automatic measurements,  no manual trigger is required after enabling. BURSTENABLE simply enables/disables burst mode, but does not trigger measurements on its own.

    Yaxit said:
    Is it possible to have ADC auto measurements in burst mode? If so, what happens to potential IBAT and VBUS measurements issued manually? Can they be lost, overwritten by VBAT burst measurements?

    Not sure but auto-measurements should work fine with burst mode. Manual IBAT or VBUS measurements may conflict with burst-mode results because they share the same result registers. If the application carefully schedules manual measurements to avoid clashes, it should be possible.

    Yaxit said:

    Seems VBATAUTOENABLE starts the acquisitions right away, to answer my question.

    For some reason, though, VBAT measurements seem to oscillate with +-5LSBs, not 1. I assume the ADC values are unsigned? 

    uint16_t vbat = ((uint16_t)reg[0] << 2) | (lsbs1.vbat_resultlsb & 0x03);

    Yes the ADC results are unsigned. 

    I guess this refers to the System Monitor Electrical SpecificationIt says the accuracy is ±1%, not 1 bit.

    Kind Regards,

    Abhijith

  • Thank you for the clarifications.

    I'm still not convinced about the 5 LSBs oscillation. I understand that the actual accuracy might be lower than what can be represented on 1 LSB, but it's odd that those LSBs are skipped entirely, I would rather expect oscillations 

Reply Children
No Data
Related