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.

MSP430F5342: Leaky Ports - Set unused as output instead?

Part Number: MSP430F5342

I'm still have same leakage when sleeping and have new info.

I recently read on a different forum below that setting unused ports as outputs = 0 internal resistor enabled can still allow leakage through moisture or debris picked up from nearby pins. They recommend setting the unused ports as Inputs and connect to ground (or Vcc even better they claim) through a resistor or directly.

Has TI or anyone experienced this? Details are on a related question that closed, not sure if referenced here. Only change is that we removed the external crystal, internal was fine, so it's not that.

I'd hate to have to try another separate pcb without some confirmation, so if anyone has any ideas. Been going on for years and I have a full reel of these and the larger sister 430. 

I also wouldn't be surprised if I'm part of the problem as I'm having to hand solder for now. I pre-solder both the board and pads so it floats slightly while it aligns on a hotplate with hot air above. Possibly the extra solder is amplifying this effect due to possible tighter pin to pin gaps? I wash in baking soda and plain soap/nylon brush, then air dry (Az). 

Thanks, I'm all ears ;) 

  • If leakage between pins is a problem then you might want to try a conformal coating. I picked up a can (MG Chemicals Silicone Conformal Coating) at Fry's years ago. Put masking tape on the bits that don't need the coating and spray away.

  • That's a thought, I'll look it up. I was using basic silicone (slow cure) but switched to using a 3M gasket we made. Messy stuff but haven't heard about your stuff, thanks.

    (Edit: The assumption is that I can clean it well enough, many times that's the problem. Trying for 30uA including a sleeping motion sensor and radio module. It will go there, but gotta be super clean, sometimes needing to boiling off with steaming alcohol.) 

  • Please refer to 1.6 Connection of Unused Pins of MSP430x5xx and MSP430x6xx Family User's Guide (Rev. Q)

    Recommended is to either turn them to low outputs or inputs with pulldown.

    Of course, this is for unconnected pins only.

    Thanks

  • I will review this in closer detail as possibly things overlooked.

    Thanks for the reference. There are a few already that I noticed.  

    Edit: The sad part is that several EE contractors, both junior and senior, have had a crack at designing for my application, and yet none have brought this detail to my attention. All this stuff matters, and for sure a board rev is in order. Moving on, I think we're back on track.

    Thanks again!!!

  • We have reviewed the table and all pin terminations that I had in question do not appear on our package, but a worthwhile check. All others set as Port x.y per the table.

    We did have Resistors Enabled Low with Ports set as Outputs, (which I realize do nothing as outputs). However, maybe this will lead to a leakage while asleep? Possible?  Next chance I get, I will remove the REN lines of code and retest.

    If not the solution, I don't know what else to test beyond ordering a custom breakout board and measuring each pin, which burns more time. The code runs efficiently on TI's socket kit. So something in the build or layout in combination. One difference with the socketed version is that even though many of your ports are un-terminated, they have traces and wires connected. I do not on my opens, just the solder pad. This may sound equivalent, but since I can affect sleep current by bringing my finger nearby the processor suggests this leakage is associated with an antenna of some sort. 

    Thanks again for your help!

  • Hi John

    i don't fully understand your concern.

    As the general recommend, Please either set them to low outputs or inputs with pulldown (REN).

  • I fully agree with Xiaodong Li,

    Check that no unused pins are left unconfigured.

    Do not forget port J.

    It is easy to see if the over consumption is due to unconfigured pin: pass your fingers through all pin while checking current consumption. If there is a current leakage, the current consymption will change when your finger will touch the pin.

  • Your finger test is interesting. I noted this in my previous post of this problem. Yes, I'm able to pass my finger nearby the processor and the leakage current drops. I could try next to isolate the pin, a bit tricky due to tight pitch. 

  • I'm gonna run with the theory that something is floating that shouldn't based on my ability to affect leakage with my hand in proximity as mentioned.

    Anyone see anything unusual on port assignment? Especially the last few ports 7, 8, and J. Those hidden Ports 7/8 (no pins) were done using equivalent code more directly (Port24 Errata). My coder swears it's equivalent, but let's double check everything. Also I tried setting the others as in/out and sideways. 

    Also, I'm going to hunt down every pin not on this list and make sure it's connect and has assignment and will post in the next day or 2. 

    Thanks everyone! It's a good cause and I'm just an old EET trying to get my product to some musicians very soon. 

    /* Stop watchdog timer to prevent time out */
    WDTCTL = WDTPW + WDTHOLD;

    /* Initializes system clock */
    v_MAIN_Configure_Clock ();

    /* All unused pins of port 1 are digital output pins at 0V */
    u8_unused_pins = BIT0 | BIT2 | BIT4 | BIT5 | BIT6;
    // SET_BITS (P1REN, u8_unused_pins);
    CLR_BITS (P1SEL, u8_unused_pins);
    SET_BITS (P1DIR, u8_unused_pins);
    CLR_BITS (P1OUT, u8_unused_pins);

    /* All unused pins of port 2 are digital output pins at 0V */
    u8_unused_pins = BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6;
    // SET_BITS (P2REN, u8_unused_pins);
    CLR_BITS (P2SEL, u8_unused_pins);
    SET_BITS (P2DIR, u8_unused_pins);
    CLR_BITS (P2OUT, u8_unused_pins);

    /* All unused pins of port 3 are digital output pins at 0V */
    u8_unused_pins = BIT3 | BIT4 | BIT5 | BIT6 | BIT7;
    // SET_BITS (P3REN, u8_unused_pins);
    CLR_BITS (P3SEL, u8_unused_pins);
    SET_BITS (P3DIR, u8_unused_pins);
    CLR_BITS (P3OUT, u8_unused_pins);

    /* All unused pins of port 4 are digital output pins at 0V */
    u8_unused_pins = BIT4 | BIT5 | BIT6 | BIT7;
    // SET_BITS (P4REN, u8_unused_pins);
    CLR_BITS (P4SEL, u8_unused_pins);
    SET_BITS (P4DIR, u8_unused_pins);
    CLR_BITS (P4OUT, u8_unused_pins);

    /* All unused pins of port 5 are digital output pins at 0V */
    u8_unused_pins = BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT6;
    // SET_BITS (P5REN, u8_unused_pins);
    CLR_BITS (P5SEL, u8_unused_pins);
    SET_BITS (P5DIR, u8_unused_pins);
    CLR_BITS (P5OUT, u8_unused_pins);

    /* All unused pins of port 6 are digital output pins at 0V */
    u8_unused_pins = BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT6 | BIT7;
    // SET_BITS (P6REN, u8_unused_pins);
    CLR_BITS (P6SEL, u8_unused_pins);
    SET_BITS (P6DIR, u8_unused_pins);
    CLR_BITS (P6OUT, u8_unused_pins);

    /* PORT24 Errata - Port 7 & 8 pins*/
    uint16_t * pu16_p78ren_reg = (uint16_t *)0x0266;
    *pu16_p78ren_reg = 0x07FF;

    /* All unused pins of port J are digital output pins at 0V */
    u8_unused_pins = BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7;
    // SET_BITS (PJREN, u8_unused_pins);
    SET_BITS (PJDIR, u8_unused_pins);
    CLR_BITS (PJOUT, u8_unused_pins);

**Attention** This is a public forum