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.

Exit from BSL via reset on a CC430F5137

Other Parts Discussed in Thread: CC430F5137

I'm developing a Java application that connects to TI's BSL and loads firmware images. Invoking via the TEST+RESET sequence was not simple but I'm now able to put the MCU into BSL with the use of a simple FTDI converter. Writing and reading the target flash is quite easy once the MCU is running on BSL.

Now the problem comes when I want to reset the MCU to make it run the user application. Bringing RESET to low for a while does not work for some reason. I've also tried to use multiple combinations of RESET + TEST levels without success. slau319i just says that RESET has to be tied to low and then switched back to high whilst TEST is kept high in order to reset the MCU but this is not working.

Any suggestion about how to quit the BSL and start the custom application with a true hardware reset?

Thanks.

  • If I remember right (from few years ago when I was working on my BSL), USB - UART bridges are too slow for MSP430x5xx BSL entry sequence. But if you are able to invoke BSL on CC430F5137 by FTDI than it is OK. If there is no other way for target device release, write with BSL watchdog timeout, for example 1 second, and disconnect.

  • Just checked my old slau319 based BSL. Entry sequence is...

    RESET=0
    TEST=1
    TEST=0
    TEST=1
    RESET=1
    TEST=0

    At the end, after reset, COM port is closed, and target device is released, without BSL hardware disconnection.

    801A0404FEFF0000 ; Send Reset

    ; Read Answer

    ; Close Uart

    Just check TEST / RESET state pins on your BSL hardware after port is closed, because if it is different from RESET=1 TEST=0, target device will not run.

  • Thanks a lot zrno for your help.

    This is the sequence being used by my Java application to invoke BSL with the simple use of DTR and RTS lines:

    setRESET(true);
    setTEST(true);
    sleep(250);
    setRESET(false);
    sleep(10);
    setTEST(true);
    sleep(10);
    setTEST(false);
    sleep(10);
    setTEST(true);
    sleep(10);
    setTEST(false);
    sleep(10);
    setTEST(true);
    sleep(10);
    setTEST(false);
    sleep(10);
    setRESET(true);
    sleep(10);
    setTEST(true);
    sleep(250);

    I still have to look into the datasheet but I'd say that default value for TEST pin is high.

    Where did you take that reset command from? Isn't 0x1A the TX Buffer Size command?

  • Normal released running MSP430 device has TEST pin LOW, and RESET pin HI. Don't remember anymore, but this reset command string is unpacked BSL command that was packed and sent to BSL target device.
  • Sending PC to address 0x8000 makes the application start. This is not a true reset but I think we can go with this for the moment.

    Thanks a lot zrno for your great suggestions!

**Attention** This is a public forum