This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS65217C PB status flag does not set, and does not power down

Hi,

I'm hopelessly trying to read the PB status bit from STATUS register, but the bit does NOT sit when the PB is pressed down (Yes, I'm keeping it pressed down for a little while, but still STATUS register report 0). I get interrupt generated and I am able to see that the PB INT flag is set. 

Also, I'm unable to power down the module (OFF state). I have the OFF bit in the STATUS register set before initiating a power-down sequence by setting the SEQDWN bit in the SEQ6 register.

EDIT: The module does power down, however after 1sec it powers back up!

I'm using the Beaglebone Black Rev. C from element14 with the latest version of the Starterware set of libraries. 

-Khalid

  • Hi Khalid,

    I'm not sure why your STATUS register would not update, especially considering that the interrupt is behaving correctly, how are you reading this register?

    SEQDWN is a feature for the PMIC that allows a shutdown sequence to initiate, but does not actually keep the PMIC off. To do that you need to ensure PWR_EN is low, or else the device will return to the active state.
  • Richard Solarski said:
    Hi Khalid,

    I'm not sure why your STATUS register would not update, especially considering that the interrupt is behaving correctly, how are you reading this register?

    SEQDWN is a feature for the PMIC that allows a shutdown sequence to initiate, but does not actually keep the PMIC off. To do that you need to ensure PWR_EN is low, or else the device will return to the active state.

    Hi Richard,

    Thanks for the reply.

    This is how I am reading the registers:

    void NNMIisr() {
    	unsigned char INTVal = 0;
    	unsigned char pmic_status = 0;
    
    	TPS65217RegRead(0x02, &INTVal); // Read INT register
    	TPS65217RegRead(0x0A, &pmic_status); // Read STATUS register
    
    	if (INTVal & (1 << 2)) { // PB status changed?
    
    		if (pmic_status & 0x01) { // is PB bit set?
    			UARTPrintf("PB bit is set! \n"); /* It never reaches here!!!! */
    		}
    	}
    
    }

    In regards to the power shutdown issue,  on the Beaglebone Black, the PWR_EN pin is connected to PMIC_POWER_EN pin on the AM335X chip. Doesn't the pin loses power when the chip's main supply goes down?

    - Khalid

  • Hi Khalid,

    Do the other values in the STATUS register change, such as when you remove or apply the 5V or USB adapter?

    As for the PWR_EN, it depends on how the AM335x is configured, as PMIC_POWER_EN is in the VRTC domain of the AM335x, supplied by VLDO1 of the PMIC.

    If this is configured with a pull-up to VRTC, and the PMIC is operating off of 5V or USB, the PMIC will supply VLDO1 constantly, which can supply VRTC, which could restart the power-sequence. VLDO1 is not active in OFF mode when operating from the battery input (TP5), so if this was the source I suspect the entire system would stay off after a shutdown command.