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.

TIDM-KEYBOARD Problem

Other Parts Discussed in Thread: MSP430F5509

Hi,

My customer is building a keyboard using this TI Design.

http://www.ti.com/tool/TIDM-KEYBOARD

and they are now testing this keyboard, but sometimes USB Device fails. (2 / 10000 times)

they are using MSP430F5509 for this keyboard, and they found out this happens when they are reading USB info such as PID, VID, Descriptor.

How can they solve this problem?

Ted

  • Hi Ted,

    2 out of 10,000 keyboards fail (hardware issue) or 2 out of 10,000 USB reads on a single unit fails (communication/software issue)? Can you further describe the failure itself, like what kind of behavior is seen? Can the MSP430 or PC detect the failure and re-attempt to successfully communicate?  How does the customer know that it is not the host (Windows 7, linux, Mac or Windows 10) that is not recognizing the keyboard?  Logs or re-productions steps would be beneficial.  

    Regards,
    Ryan

  • It's 2 out of 10,000 USB reads on a single unit fails (communication/software issue). I will get more information from customer.
  • Here is additional information.

    They are using Windows HID driver.

    When this problem occurs, PC can't get any information from MSP keyboard(PC is normal state. not Hibernate state or sleep state). on MSP side, keyboard interrupt works well, but it can't send it's data to PC via USB.

    It works well again if they reset MSP by software reset or hardware reset.

    here is how to reproduce the issue.

    If host executes following commands, sometimes it fails. They are executing this every 0.1seconds to reproduce this issue.

    DeviceIoControl(host_handle,
        IOCTL_USB_GET_ROOT_HUB_NAME,
        @name,
        sizeof(name),
        @name,
        sizeof(name),
        bytes_returned,
        nil);

    MSP430 will execute following code.

    uint8_t usbGetConfigurationDescriptor (void)
    {
        usbClearOEP0ByteCount();
       
    #ifdef NON_COMPOSITE_MULTIPLE_INTERFACES
        wBytesRemainingOnIEP0 = usbConfigurationsSizes[activeInterfaceIndex];
        usbSendDataPacketOnEP0((uint8_t*)usbConfigurationDescriptors[activeInterfaceIndex]);
    #else
        wBytesRemainingOnIEP0 = sizeof(abromConfigurationDescriptorGroup);
        usbSendDataPacketOnEP0((uint8_t*)&abromConfigurationDescriptorGroup);
    #endif 

        return (FALSE);
    }

    They find out USB connection is disconnected when they executing this part with MSP430.

    Could you help?

  • Hi Ted,

    The customer might be running into this  issue as described in the following post:

    e2e.ti.com/.../1749690

    Regards,

    Arthi

  • Hi Arthi,

    Changing line 847 of UsbHid.c from this

    HidReadCtrl[INTFNUM_OFFSET(intfNum)].nBytesInEp = *(pEP1 + 1);

    to this

    HidReadCtrl[INTFNUM_OFFSET(intfNum)].nBytesInEp = *(HidReadCtrl[INTFNUM_OFFSET(intfNum)].pEP2 + 1);

    will solve the problem?
    or sholud we wait new version of MSP430 USB Developers Package?

    Regards,
    Ted
  • Hi Ted,

    This fix is already in version 5_10_00_17 of the MSP430USBDevelopersPackage.  If the customer already is working with this version but is still seeing an issue then it will have to be looked at.   Please let me know what version of MSP430USBDevelopersPackage they are wokring with.  

    Regards,

    Arthi

  • Hi Arthi,

    They already applied version 5_10_00_17 and they think BUG#15751 is not the main reason for this issue.

    They think USB10 in the Errata is the main reason for this issue. so they applied workaronud of USB10, and It sees like it solved the problem.

    In Errata, it says this issue can be occured extremely rare times. However, my customer experienced this issue quite often.

    If there is other workaronund, please let me know.

    Ted

**Attention** This is a public forum