Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

MSP430F6638: Plugging and unplugging unrelated USB device on PC causes my project to lock up

Part Number: MSP430F6638
Other Parts Discussed in Thread: MSP430F6659

My project uses the TI USB API in an HID configuration. The project accepts power from the USB, a DC source, or both ("OR"ed). In the event that both powers are applied, the USB controls a MOSFET which blocks the DC power source (to prevent unnecessary battery drain). As a result, the instrument runs on USB power. If USB power is removed for any reason, the instrument immediately switches to DC power. A 100µF cap is used on the "OR"ed source power input to filter the supply and to try to keep the device operational during the transition. The power output of the DC/USB source (+POWER) is used to power a 3.3V switching regulator circuit with a drop out voltage of 2.2VDC on the input.

Problem: When the project is connected to the PC via a USB cable, plugging another device into any USB port on my PC can possibly cause my device to lock-up.

My first step was to try to debug the issue at the firmware level. I was unable to load the debugger due to lack of memory. As a result, I upgraded the device processor to an MSP430F6659 to increase my memory space so I could troubleshoot the issue. With the new upgrade, I loaded the debugger and continually plugged a device into one of my PC USB slots until the project locked up. Breaking the program, the break address would either be the starting vector (in my case 0x008004 which is the address stored in 0x00FFFE) or a random unused address (something like 0x01E104 which contains the code jmp 0x01E104). I inspected SYSRSTIV and it indicated that the last reset was due to a brown-out condition.

Now, thinking that it may be a hardware issue, I removed the DC control MOSFET (Q1) from the DC power circuit and installed a jumper between the source and drain. As a result, the project will run on USB when no DC power source is connected or when the USB voltage is higher than the DC power source. I set the DC power source voltage to 6V so the USB voltage should not be an issue. I continually plugged and unplugged the USB cable connected to the project and monitored the power at +POWER and saw no issues.

Finally, I connected the project to the PC USB. With the project DC voltage set to 6V, I began plugging and unplugging an unrelated USB cable into the PC on a different USB port until my project locked up again. Breaking the program, the SYSRSTIV indicated a brown-out condition.

Question: Does anyone else have any other troubleshooting ideas? Could it be related to an improperly handled USB issue like suspend?

  • If you are getting a brownout condition, this is because the supply voltage is dropping too low. The brownout threshold levels can be seen in section 8.21 in the datasheet.  If you monitor the supply voltage while plugging in another device, do you see this drop below 1.45V?

    https://www.ti.com/lit/ds/symlink/msp430f6659.pdf 

  • Thanks for your response.

    That was my instinct. That is why I modified my circuit (removing and jumpering across Q1) to make sure that my project always runs on BATTERY (in my case, a DC supply) and not the USB power. As a result, the USB bus power (VBUS_PWR) is ignored by +POWER and only feeds the VBUS line of the processor. Any voltage drops on VBUS_PWR will only be seen at the VBUS pin of the processor. Otherwise, the processor supply voltage remains steady (with the exception of some slight ripple due to the switching regulator) and the processor power never drops below approximately 3.25Vdc when these lock up events occur.

**Attention** This is a public forum