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.

Using a CP2102 with BSL-Scripter - a solution

Other Parts Discussed in Thread: MSP-FET

This question comes up here fairly frequently - can a cheap USB-to-UART adapter like the CP2102, FT232, or CH340 be used as the hardware interface when flashing with BSL-Scripter.  The problem is that Scripter doesn't generate the needed hardware invocation pattern on /Reset and Test, but instead depends on an intelligent interface such as the MSP-FET or the Rocket to do that.  But those devices may not be at hand, and in any case are relatively large and expensive, and not suitable for embedding on a project PC board.  In another related thread, Aaditya Chaudhary had the idea of writing software for Linux that would generate the needed invoke pattern, after which Scripter could be run to do the flashing, and he put that code in a Github repo:

https://github.com/saint-shark/TI-BSL-invoke-sequence-generator/blob/master/BSL_invoke.c

I've written a similar program for Windows called INVOKE.exe, but in Windows, and I suspect in Linux as well, Scripter begins by bringing the DTR line low, and since DTR is connected to the target device's /Reset pin, that causes the just-invoked BSL session to be cancelled, and locks the device in reset.  Not helpful.

TI provides the source code for Scripter, but recompiling it to change the DTR problem is beyond my abilities.  I continue to hope that TI will modify Scripter to add an option to directly generate the invoke pattern  - as BSLDEMO does automatically for the older MSP430 parts.  But while we wait for that day, this can be made to work by disconnecting DTR from /Reset after the new invoke program has initiated the BSL session, but before Scripter runs.  After the disconnect, the /Reset pin will be held high by its external 47K pullup resistor, and flashing will take place normally.

The disconnect can be done manually.  My batch file for testing this reads:

INVOKE.exe COM4
Pause
BSL-Scripter.exe script.txt

While Pause waits for me to press any key to continue, I unplug the DTR line, then hit a key.  Testing was successful in Windows 7/64 with an FR2311.  But a somewhat more elegant way to disconnect DTR is to use a circuit made up of four parts which automatically does the disconnect without needing a Pause instruction.  Testing was also successful with that setup.  I'll post the schematic and a successful test session log below.  I've posted the INVOKE.exe source code and the executable, and a PDF explaining everything, to a Github repo:

https://github.com/gbhug5a/CP2102-with-BSL-Scripter-for-MSP430

I hope this will be useful to someone.  Don't forget to add the PARITY option to the MODE line in your script.

Session Log:

C:\MSP430>INVOKE.exe COM4
COM port Opened
BSL invoke pattern transmitted

C:\MSP430>BSL-Scripter.exe script.txt
---------------------------------------------------------
BSL Scripter 3.4.0.1

PC software for BSL programming
2018-Oct-05 18:50:43
---------------------------------------------------------
Input file script is : C:/MSP430/script.txt

MODE FRxx UART COM4 PARITY
    Baud rate setup for UART is not given / wrong
    It will be setup to the default 9600baud
//Use this line on first flash when reset vector = FFFF
//RX_PASSWORD
RX_PASSWORD MosPW.txt
    Read Txt File  : C:\MSP430\MosPW.txt
    BSL Password is correct!
RX_DATA_BLOCK Mostest.hex
    Read Txt File  : C:\MSP430\Mostest.hex
    Time elapsed of writing 62 bytes : 0.115 seconds
    Speed of writing data :0.5265(kB/s)
TX_BSL_VERSION
    Vendor:[TI] CI:[08] API:[35] PI:[B3]


  • Hi George,

    thanks for sharing this with the community.
    This might very well help someone running into the same issue as you did.
    At the moment there is no plan on our side to modify the BSL Scriptor to also support the USB to serial bridges, such as the CP2102 etc.
    I'll close this thread as it contains a solution for others to use rather than an active question.

    Thanks again and best regards,
    Britta

**Attention** This is a public forum