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.

Destroying GPIO Pins in an MSP430 device

Genius 4170 points

Other Parts Discussed in Thread: MSP430F5437A

Hello,

now it did happen.

I think I destroyed P1.5 on my MSP430F5437A.

It had 2 functions in my HArdware: First it was configured as an input with pull-down, and i did connect an switch to it, so I could detect if someone presses the button etc.

I think there was no problem with this functionality.

Second I did enter LPM3 and then used the Port1 Interrupt to wake of from it, while the MSP430 was in LPM the configuration of the Pin1.5 was slihtly different.

It was set: DIR = 0 // Input

                   OUT = 0

                    REN = 0  <----- So i did configure a simple input without pull-down

I have 4 switches o my MSP430 all on Port1, and on several different PCBs always P1.5 is corrupted, could this be something with the missnig pull-down, has anyone made some expiriences in that field?

I did then test some simple things, with the following results:

I only can draw excessive current ( ~10mA ) when configuring the code:

    P1DIR = BIT2 + BIT4 + BIT5 + BIT6;
    P1OUT = BIT2 + BIT4 + BIT5 + BIT6;
    for(;;){
        P1OUT ^= BIT2;
        P1OUT ^= BIT4;
        P1OUT ^= BIT5;
        P1OUT ^= BIT6;
    }

I did the toggle just for testing, the interestnig part is when the Port is an output with defines LOW level. When i then apply 3,3 V via the switch onto that Pin i have the 10 mA extra current, so I guessed with this current I exceed the specs and the Pin will probably die sometime.

But in my Code i never have that configuration on my Port Pins, instead I only forgot the pull-down resistor once, I tested the whole PCB with several settings and with a good Agilent multimeter ( which can detect current till 1 µA accuratly) so I abosultely trust my current meassurment( until proven worng :) )

So I need Your help, anyone who did kill a Pin on his MSP430 can write how it did happen and if You got some advice or help for me.

Thanks for your time.

Good evening.

Seb

  • It's not easy to destroy an MSP pin.

    You cannot destroy an MSP pin by

    • shorting it to GND or VCC while configured as output
    • shorting it to GND or VCC while being input
    • enabling or disabling the pullups

    It is also difficult (not impossible, but nearly) to destroy the pin by 'normal' ESD. All MSP port pins have clamp diodes that route over or undervoltage to VCC/GND. These diodes can stand up to 2mA rated current, which is way more than a 'normal' ESD event or creeping currents/crosstalk/radio emissions may provide.

    What can destroy an MSP port pin is applying a voltage below GND or above VCC without any current limiting. In this case, the clamp diodes will melt and either short the pin permanently to GND or VCC, or cease functioning and leave the port circuitry vulnerable to the over/undervoltage, probably destroying it and maybe more parts of the MSP.

    This critical condition can also be achieved by applying any voltage (even a few 100mV) to an MSP pin when the MSP is not powered at all.
    However, the current through the clamp diodes will charge VCC and power the MSP through its port pin, rising VCC, so the whole thing will usually balance out without damage. (unless the MSP or other circuitry on VCC draws more than 2mA)

    The solution to this is simple: put a protective resistor in series to the input. For the high input resistance of several 100kOPhm (provided the pullps are not enabled, else there are only 30kOhm worst case), a series resistor of 10k (1k with pullups) doesn't change anything regarding input signal detection. And it limits any inrush current.

    seb said:
    the interestnig part is when the Port is an output with defines LOW level. When i then apply 3,3 V via the switch onto that Pin i have the 10 mA extra current, so I guessed with this current I exceed the specs and the Pin will probably die sometime.

    Indeed. With this setup, you try to drive VCC (which the pin is connected to by the pushbutton) to GND through the low output port pin. On ~10mA, an equilibrium is found between the voltage drop on the port pin driver due to the current, and the voltage drop of VCC due to the load. (probably none).
    So the port pin is exposed to 10mA on 3V drop = 30mW heating power. It shouldn't destroy the pin if it is the only hotspot. But if you do this to more than one port pin simultaneously, it will probably fry the chip die.

    To avoid such a situation, the typical setup is to have a pullup resistor on teh input and drive it down to GND with the pushbutton. (active-low). This reduces the risk of hazardous situations.

    Since this happens to P1.5 only, where is the difference on this pin circuitry compared to the other buttons? Is there a difference in use? In physical location (maybe you produce electrical shortcuts by mechanical means during operation)? I also had cases where the trace was close to the device case and was simply cut mechanically after some time of use.

  • Hello Jens, thanks for your insight.

    Here are some additional hints in my Code. I found out the settings for my 4 Pins, which are attached to a switch:

    P1.2   -> P1REN  = 1

    P1.4   -> P1REN  = 1

    P1.5   -> P1REN  = 0

    P1.6   -> P1REN  = 1

    So I suppose, since I have the trouble with exactly this Pin, that it has something to do with this.

    But I couldnt find a excessive current ( 10 mA ) drawn from this code, whatever switch I press, so i am pretty confused.

    In the next PCB version or workaround we will put a serial resistor in this, like You also supposed to do.

    We will see, thanks for now.

    Seb

  • seb said:
    So I suppose, since I have the trouble with exactly this Pin, that it has something to do with this.

    Might be coincidence. It only means that there is no pullup enabled onthsi pin. The 1x family doesn't have internal pullups at all and I cannot remember ever bruning a pin.
    Of course, if you don't have a pullup/pulldown on a CMOS pin and capture a high-frequency signal (>25MHz) on this pin, it may ineeded overload the input circuitry after some time by internal oscillations. Unlikely, but not impossible. Usually, this only increases itnernal power consumption by a few µA.

    nevertheless, for proper operation attachment of pullups to pins that are driven by a switch/pushbutton is mandatory, or else the correct switch state will only be detected by coincidence.

**Attention** This is a public forum