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.

Programing MSP430F5438A with FTDI and BSL Scripter

Other Parts Discussed in Thread: MSP430F5438A, MSP430F5438, MSP-FET

Hello everyone,

Is it possible to program MSP430F5438A with FTDI chip - FT2232D and BSL Scripter Version 1.06?

Thank you.

  • No; the MSP is a USB device and can talk only with a USB host. But the FT2232D is a USB device, too.
  • Thank you for the prompt reply Mr. Ladisch,
    MSP430F5438A does not have a USB module build in, so how do you suggest to perform BSL on that specific uC? If the BSL Scripter is able to perform a flow control using pins DTR and RTS (that are available on FTDI board) I don't understand why is it not possible. As far as I remember with the same FTDI chip all the BSL commands were running on MSP430F5438, but with MSP430F5438A we encountered some issues.
    An off topic question:
    What is the standard hardware tool for BSL programming in cases the uC does not have build in USB module?
    Thank you again.
  • Clemens,
    I think maybe there was a misunderstanding between you and Radoslav (I think he's asking a different question than you are answering - this is a limitation of solving things over the internet with just written text :-) ) - I think Radoslav wants to be able to connect the MSP430 UART to the PC using an FTDI chip as a USB-to-UART interface/translator between the MSP and the PC, and then use the PC as the host to program the MSP via BSL. Radoslav is right - MSP430F5438A DOES NOT have a USB module, and it has a UART BSL. Only some F5xx/6xx parts have USB modules and USB BSL (must check datasheet).

    Radoslav,
    In the other thread: e2e.ti.com/.../423871 I posted some good resources for programming via BSL (particularly SLAU319 doc and it's zip file that includes the BSL_Scripter.exe software).

    For using FTDI with UART BSL on the MSP - you still need some way to perform the BSL entry sequence of toggling RST and TEST. You may need to have something to generate these signals for you if the FTDI chip cannot. We have also an application note SLAA535 that I linked in the other thread that uses an MSP-EXP430G2 Launchpad with a G2xx device to act as the translator to the USB on the PC and it also uses GPIOs to perform the entry sequence.

    Regards,
    Katie
  • Dear Katie, thank you for the valuable information.
    After some researches I discovered why FTDI works with MSP430F5438 but doesn't work with 5438A. The problem is related with the entry sequence timing. Reading the SLAZ290N–October 2012–Revised April 2015 (EERATA) I came across to this:

    "The BSL entry sequence requires that the low phase of the TEST/SBWTCK pin does not
    exceed 15us. This timing requirement is faster than most PC serial ports can provide, as
    shown in the following picture. If this requirement is not met, the entry sequence fails
    and the SYSBSLIND is not set."

    Which explains why I am not able to implement the correct entry sequence using a regular FTDI chip.

    So a new question arose in my small head.
    Is there any approach to substitute the hardware entry sequence with software approach like this one -> to set program counter to jump on the BSL start address

    ((void (*)())0x1000)();

    ? Would this work? In other words instead of making the levels shifting on TEST and RST pins, to put the uC in BSL via software and then only to use the Rx and Tx pins of the UART. Your proposals MSP-EXP430G2 Launchpad and MSP-FET (black) are really good tools but in this case any extra hardware Is not desirable, since there are many devices located far away from the workshop.
    I need to somehow workaround this issue. Any ideas would be much appreciated!

  • Are there different entry sequences? I once tried this FT232 to BSL approach with a FR6989 and it worked with the BSL-Scripter. I used TxD, RxD, RTS and DTR of the FT232. I never completed this part, but I remember that I always had to run the BSL scripter twice. The first attempt always failed, the second one then worked. Interesting that there is another one who wants to do it that way. I'm still interested in a stable and always working solution, so if you would go on with it, I will follow your approaches.

    Dennis
  • Hi Radoslav,

    Yes this sounds like you are maybe having an issue because of the erratum on the F5438A. Now, if you had some sort of external logic or micro or something to generate the entry sequence instead, then you could probably still do it - it is just a few pin toggles.

    For the software entry approach - there are several threads already on the forum addressing this. You've got the right idea with you jump to 0x1000 - just make sure you have disabled interrupts in your main application before you do the jump! You also need to make sure that the new software that you load also has this jump to BSL in it. See section 3.8.1 Starting the BSL from and External Application in www.ti.com/.../slau319.

    Another option would be to customize the BSL in the F5438A flash memory, to have it enter based on something besides the BSL entry sequence. You can get the code and information about customizing the 5xx BSL by seeing this document: www.ti.com/.../slaa450. You could leave everything else the same but simply change the BSL_Protect function in BSL430_low_level_init.s43 to check something different than SYSBSLIND to determine if you should enter the BSL or not - for example, you could set it to check the logic level on a particular pin or something (could be anything that makes sense for your system). You could even have it always enter BSL on startup, or have it check for a particular signature in your Flash memory to tell it to run BSL, or something like that - anything you can think of.

    I hope that this helps to give you some good options for your application needs.

    Regards,
    Katie

**Attention** This is a public forum