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.

MSP430F5528 USB issue

Other Parts Discussed in Thread: MSP430F5529, MSP430F5528

I have a design that I developed with an MSP430F5529 as it was easier to use a part with pins for development. After it was all working, I changed to an MSP430F5528 for the small package and made the appropriate changes to the firmware. My USB communications with the host PC works well, but I am seeing an odd problem. While doing testing for driver signing, the USB enable disable test passes with the 5529 device, but not with the 5528 device. I can disable the device  using the device manager, and then enable it. The 5529 always works, the 5528 always fails. Using a USB analyzer shows that the  failure to start (error 10) occurs. If I reset the processor it all comes back to life. Does anyone have any ideas? I am suspicious that this is a hardware fault in the 5528 as it is the only thing different, which is really going to make me unhappy if true.

  • Hi Sid,

    I'm going to look into this. Could you provide a few more pieces of information to help with our investigation?

    1. What revision is your F5529 and what revision is your F5528? You can find this information from the device markings on the top of the part. If you're unsure, you can see the diagrams in the device erratasheet section 2 "Package Markings".

    2. It sounded like you see the issue when running some custom code. Do you see the same issue with one of our USB examples from the USB Developer's Package? Could you let us know which example to use and the steps needed to reproduce the issue?

    3. What version of the USB Developer's Package are you using for your USB stack? You can find this by looking at the release notes. The latest version is version 4.00.00, which only just came out on Sept. 4th 2013. If you upgrade to the latest version of the USB stack, does the error persist?

    Regards,

    Katie

  • Hi Sid,

    Katie asked some good questions above.  She also asked me to weigh in... Sorry to hear your board has an issue, but hopefully we'll get it fixed soon. 

    The F5529 and F5528 are essentially identical, except for the I/Os.  So I doubt it's the problem.  How many F5529's and F5528's have you tried?  (i.e., has a pattern emerged with this as a factor)

    You mentioned the error code came from a USB analyzer, but this sounds like a Windows-generated error.  Is the device yellow-banged in the Device Manager after the failure?

    I can't recall offhand what that error means, but my best guess is that it might mean the MSP430 was unresponsive to USB traffic -- for example, something keeping the CPU from responding to USB interrupts, or keeping the interrupts from firing in the first place (maybe cleared GIE or excessive non-USB interrupts).  Another cause is if the PLL didn't lock/stabilize  -- which might be because XT2 didn't start, or didn't stabilize in time. 

    Unfortunately there's no output for the PLL, but the USB API state + the XT2 state can help show us what happened there.  Assuming you used our USB API, is there a way you can output the result of USB_connectionState() after the failure?  This would tell us a little about the MSP430's perspective of what happened.

    What USB analyzer did you use?  I'm guessing it's more of a PC-based bus "sniffer"?  Did it give any other information?   

    I'm guessing this is a CDC (virtual COM port) device?  Single-interface (not composite)? 

    Schematic isn't likely to show much, but it's always possible -- if you're able to share it. Software is more likely -- again, if you're able to share it, or parts of it (like the parts that changed in moving to F5528). 

    > I can disable the device  using the device manager, and then enable it. The
    > 5529 always works, the 5528 always fails.

    To make sure I understand -- the failure doesn't require the test app?  It can be reproduced purely from disable/enable in the DevMan? Every time? 

    Or, if I understood incorrectly, and the signing test app is required, exactly what app are you using? 

    Regards,
    Keith

  • Hi Keith,

     

    At Katie’s suggestion I downloaded the latest USB Developer’s Kit, version 4.00.00. I was using the code examples supplied with 3.20.00. I am happy to say that my board is now working when I run the CDC_VirtualComPort project., but I do not know why one works and the other doesn’t.  I will answer your questions, but at this point I am going to move forward by using the working example and making small changes and testing after each one.

     

    I have tried 2 F5528’s and 2 F529’s.

     

    I get error 10, and yes it is from Windows. It means the hardware did not start, and yes it is yellow exclamation point in the device manager. The error occurs when the host sends the reset, then asks the device for the descriptors. My device was either not sending them, or sending them in a way that Windows did not like. Once that happened, Windows suspended the device and put the yellow exclamation in the device manager and set error 10.

     

    I placed a little code to keep track of things in the USB ISR code. Here is what happens on a working device.

     

    Suspend interrupt

    Resume Interrupt

    Enable Interrupt

    Reset Interrupt

    Setup packets (host is sending a new address to the device)

    Reset interrupt

    Now a lot of setup and descriptor strings are sent and the device is working.

     

    Now on a non-working device.

     

    Suspend interrupt

    Resume Interrupt

    Enable Interrupt

    Reset Interrupt

    Reset Interrupt

    Reset Interrupt

    Suspend Interrupt

    Windows sets error 10 and the yellow exclamation shows up. So, yes, the device failed to send the setup information to the host.

     

    So it appears the interrupts are working as intended as the ISR is called.

     

    The analyzer is PC based, it is USBlyzer.

     

    Yes, it is a CDC and not composite.

     

    No Host application is needed to cause the failure. Just disable, then enable in the device manager.

     

    This issue came to light because I was running the Hardware Certification Kit software from Microsoft so I can get the driver signed using my company’s VID. One of the first tests the HCK runs is a disable/enable test. It failed, and that started me down this path of trying to find out why it failed.

     

    Since 4.00.00 example works, I am going to assume there was a bug in 3.20.00, or one of my changes caused the problem, except my changes worked on the other processor. In either case, I now have something that work that I can start with.

     

    Thanks, Sid

**Attention** This is a public forum