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.

MSP430FR2355: MSP430 BSL Mode I2C Problem

Part Number: MSP430FR2355

Hi, 

We've encountered some problems with Msp430 bootloader mode.

Here are some brief descriptions of our application.

According to our hardware architecture, DSP(F2838x series) is an I2C master and Msp430 is a slave.

Under certain circumstances, the Msp430 is working as BSL mode, so we want to let DSP know the Msp430 BSL core commands in order to control the Msp430 FRAM.

In our DSP I2C structure, the Rx packet length is a defined parameter whilch is varied with the command.

However, we find something tricky is that Msp430 response packet length varies with the condition of "before Rx password" or "after Rx password".

Take core command TX BSL version as an example.

If we use this command after Rx password is unlocked, we will get 5 data packets( CMD+ D1 + D2 + D3 + D4, grey part below ).

On the other hands, if we use this command with Rx password locked, we get 2 bytes data for core response and message instead of 5 bytes data.

The Rx packet length, which is set in DSP I2C, is predefined for the locked scenario. That is, 8 Bytes Rx packet length is what we expect.( Ack + Header + Length1 + Length2 + Core Rsp + Core Msg + CKL + CKH )

Here's the problem, 

If we execute the Tx BSL version command twice after the Rx password is unlocked,

The first time we can get a complete communication process end with a NACK and STOP condition.

The second time we find the communication failed when write second data byte to slave.And the SCL is stalled by the Msp430 I2C.

Is this because we assert NACK + STOP when there are still some unsent bytes? if yes, does it mean we must read all the bytes or the SCL will be stalled by Msp430 I2C?

Is there any explanation for the mechanism?

Here's problem 2, 

Is there any method we can revert the BSL back to a locked condition?

Thank you.

  • Hi Ryan,

    Sorry for the delay in responding.  Let me look into this and I will get you an answer shortly.

  • Hi Ryan,

    Not sure of your status, but if you are still stuck I have an idea what you might be seeing.

    On the other hands, if we use this command with Rx password locked, we get 2 bytes data for core response and message instead of 5 bytes data

    This would indicate that the BSL has not been un-locked (RX password not sent first) and the response will be 0x04 = BSL locked.

    Next -

    The second time we find the communication failed when write second data byte to slave.And the SCL is stalled by the Msp430 I2C.

    After you receive the data from the first  TX BSL version, do you have an adequate delay before sending second request?

    Is this because we assert NACK + STOP when there are still some unsent bytes? if yes, does it mean we must read all the bytes or the SCL will be stalled by Msp430 I2C?

    The second request for TX BSL version should be the same, so yes, you need to wait to receive all the bytes.

    To revert the BSL back to a locked state, maintain the TEST pin low and set the RESET low for a brief time.  You can then either re-enter BSL mode following the TEST and RESET pin sequence or execute the code that is programmed in memory by setting the RESET pin high.

  • Hi Ryan,

    I haven’t heard from you for a couple of days now, so I’m assuming you were able to resolve your issue.
    I'll change the status of this posting to RESOLVED, but if this isn’t the case, please click the "This did NOT resolve my issue" button and reply to this thread with more information.
    If this thread locks, please click the "Ask a related question" button and in the new thread describe the current status of your issue and any additional details you may have to assist us in helping to solve your issues.

**Attention** This is a public forum