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.

TM4C123GH6PM: HIB Won't go low

Other Parts Discussed in Thread: TM4C123GH6PM

I am using /HIB from a TM4C123GH6PM LaunchPad to control an external power switch.  VBAT to the MCU has 3.3V at all times.  The /HIB signal connects to the inputs of a 74HC1G08 (this gate is also powered from VBAT).  The output of this gate drives the switch circuit.

When the SW commands the system to go into hibernate, the /HIB pin only drops to about 2.8V.  Its only load is the two inputs of the HC1G08.  By placing a 10K to ground, the output will drop to 1.11V (this indicates that the /HIB signal appears to have a 19.6K resistance in series with the driver transistors).  There are NO components between the /HIB pin and the HC1G08 inputs.

The datasheet is mute on the subject of drive capability of the /HIB signal.  Is there any reason that the /HIB signal's drive capability should be diminished?  Do I simply have a bad part (this seems obvious, but I've replaced the chip once already and can't find a root-cause to suggest why the HIB signal is not functioning properly -- so I am reluctant to replace the MCU a 2nd time).

Cheers,

Joe

 

  • Hello Joseph,

    On the TM4C123 LaunchPad the VBAT, VDD and VDDA all are connected to the same PCB trace for supply. So by using the HIB pin to control VDD and VDDA, the VBAT is also dipping. This is what I suspect may be causing the Hibernate Module to reset and wake up the device.

    I may be unclear on the connections you may have on the Power Supply and how the switch feedbacks to the LaunchPad itself, so you may want to draw a circuit to show the /HIB and TM4C123 power supply is getting connected?

    Regards

    Amit

  • Amit,

    Thank you for your reply.

    I am aware of how the VBAT pad is connected on the LaunchPad.  I lifted pin 37 (VBAT) and this is connected to the battery supply.  This supply is a switch that allows main power to power the VBAT pin via a low-Iq regulator, or a battery.  The VBAT pin is steady at 3.3V and that part of the circuit is not affected by the HIB pin (this has been verified with a DMM).

    The schematic for the TMC123 Launch pad indicates that GNDX is not connected to the board ground (however, it appears to be connected internally to the part).  I measured the voltage at GNDX and it is solidly 0V with no disturbance when hibernate is activated.  A comparison of the datasheet pin listing showed no other VDD or GND differences between what I would have connected and what the LaunchPad has connected.

    I have replaced the TMC123 part twice and the issue remains.  At the moment, the HIB pin is not connected to anything (the pin is lifted off of the PCB pad).  The MCU software is set up to configure the HIB module at reset, then delay for 10 seconds before initiating the hibernate mode.  During the 10 second wait period, HIB is at 3.3V.  When the hibernate mode is activated, the HIB pin only drops to 2.8V.  My initialize code is as follows:

    	// if not already done, init the HIB module first thing...
        SYSCTL_RCGCHIB_R |= 0x01;
        ui32Loop = HIB_CTL_R;
        if((ui32Loop & HIB_CTL_WRC) == 0) ipl = 0xff;	// set HIB error
        else{
        	if(!(HIB_CTL_R & HIB_CTL_CLK32EN)){
        		HIB_IM_R = HIB_IM_WC;						//
        		while(!(HIB_CTL_R & HIB_CTL_WRC)) ui32Loop = HIB_CTL_R;
        	    ui32Loop = HIB_CTL_R;
        		HIB_CTL_R = HIB_CTL_CLK32EN;				// enable HIB clock
        		ipl = 1;									// set initial power on
        	}
            ui32Loop = HIB_CTL_R;
        	while(!(HIB_CTL_R & HIB_CTL_WRC)) ui32Loop = HIB_CTL_R;
        	HIB_CTL_R = HIB_CTL_PINWEN | HIB_CTL_CLK32EN;	// enable /WAKE control
        	while(!(HIB_CTL_R & HIB_CTL_WRC)) ui32Loop = HIB_CTL_R;
            ui32Loop = HIB_CTL_R;
        }
    

    The many ui32Loop queries are for debug purposes.

    The HIB initiate code is as follows:

    		if(hfon_timer == 0){
    			puts0("Power-off..");
    			wait(10);									// give the UART time to finish
    			ii = HIB_CTL_R;
    			HIB_CTL_R |= HIB_CTL_HIBREQ;				// initiate hibernate
    			for(ii = 545 * 10000;ii!=0;ii--);			// delay abt 2 sec to give PS time to discharge
    			puts0("..failed.");							// if we get here, it didn't work
    		}
    

    hfon_timer is a uint16_t variable that is decremented by Timer0_A (this is verified as working).  The #defines for the register names and bit-masks are from the tm4c123gh6pm.h header file.

    Other than replace the TMC123 chip yet again, I am at a loss...

  • Amit,

    So, I noticed that the HIB signal works if the LaunchPad was disconnected from my system.  I also used an oscilloscope to observe HIB ('scopes are GREAT...wish I had one).  It was pulsing at a duty cycle that caused the DMM to register 2.8V (I should have caught that one sooner, but that goes back to the scope availability lament).

    This led me to discover that several LaunchPad I/Os (including /WAKE) are tied together with jumper resistors (I had missed that when looking at the schematic focusing on HIB voltage levels).  I removed the offending resistors and dang if it didn't start working.

    Problem solved (note to self: rtfm & get a scope!).

    Cheers.

  • Hello Joseph,

    Indeed, get a scope, as I was thinking all this time how could the /HIB not go to 0V. I can start re-re-working my LaunchPad as well.

    Regards

    Amit