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.

MSP430F5659 has USB BSL

Other Parts Discussed in Thread: MSP430F5659

Hi,

Does MSP430F5659 has boot loader( USB BSL) for firmware upgrade?

If not how to achieve this?

Whether any changes required in USB device side for firmware upgrade?

Nitesh

  • Hi Nitesh!

    The MSP430F5659 has USB BSL preprogrammed - this is from the datasheet:

    Dennis

  • Thanks, We are using USB with HUB in our design for firmware upgrade by command based approach, where our application will jump to 0x1000 for the upgrade on command.

    Will this approach will work will firmware upgrade application (python based TI Application ) right.

    Please comment

    Nitesh
  • Hi Dennis,

    We are using USB HUB 4041 interfaced to MSP430F5659 controller.

    Using CDC example C3 We are able to load the driver and able to access the USB as serial port.

    But we are unable to send/receive the data from USB port.

     

    My observations are given below.

     

                    1.

    While debugging the USB code I found control goes to suspend event in USB ISR after some time.

    case USBVECINT_SUSR:
    USB_suspend();
    if (wUsbEventMask & USB_SUSPENDED_EVENT)
    {
    bWakeUp = USB_handleSuspendEvent();
    }
    break;

     

    2.

    In main on USB_getConnectionState() call control goes to 1st and 2nd and then in main stays @ case shown in point 3

    1st.
    //If VBUS present, PUR is high, but no enumeration yet
    if ((USBPWRCTL & USBBGVBV) && (USBCNF & PUR_EN)
    && (!(bEnumerationStatus == ENUMERATION_COMPLETE))){
    return (ST_ENUM_IN_PROGRESS);
    }

    2nd.
    //If VBUS present, PUR is high, and enumeration is NOT complete, and suspended
    if ((USBPWRCTL & USBBGVBV) && (USBCNF & PUR_EN)
    && (!(bEnumerationStatus == ENUMERATION_COMPLETE))
    && (bFunctionSuspended == TRUE)){
    return (ST_NOENUM_SUSPENDED);
    }


    3.

    case ST_PHYS_DISCONNECTED:
    case ST_ENUM_SUSPENDED:
    case ST_PHYS_CONNECTED_NOENUM_SUSP:
    __bis_SR_register(LPM3_bits + GIE);
    _NOP();
    break;

     

    Please let us know what could be the issue here.

     

    Nitesh

**Attention** This is a public forum