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.

MSPM0G1106: BSL flashing

Part Number: MSPM0G1106

Hi,

I'm currently struggling with BSL flashing through i2c over an A2B link.

The trouble is, i2c peripherals on a subordinate A2B node have a hard limit for i2c clock stretching. The limitation in our setup is 0.66 ms (0.66 ms for 48 kHz and 0.72 ms for 44.1 kHz).

I managed to flash by waiting according to the datasheet[1] after writing a BSL command before starting reading the BSL response. But I still have trouble with "Standalone Verification" where I see two issues:

1. The first "Standalone Verification" will always return a wrong CRC. If I repeat the "Standalone Verification" command then I will get the correct CRC. Also the rest will be fine. So for some reason it's only the first one, do you know why?

2. Again the first "Standalone Verification" after flashing, sometimes holds SCL low more than 0.6 ms even after I wait 10-20 ms before starting reading the BSL response. Can you share some details about the general timings? Or do you know a better way of avoiding i2c clock stretching while BSL flashing?


[1]
MSPM0G1106 datasheet: Section: 7.7 Flash Memory Characteristics

www.ti.com/.../mspm0g1106.pdf

  • Hi Emil,

    We do see some issue when do CRC that include data from 0x0 - 0x8. After Cache invalidation, when address 0x0,0x4 is read for the first time, data returned is all 0xFF, instead of the programmed data. It is not happening for other addresses from 0x08. Also second read to 0x0, 0x4 returns the correct data. You can try to do CRC check from address 0x8 to see if it also have the issue.

  • Hi Gary,

    I have tried starting standalone verification from address 0x08 and 0x10 and they also fails as long as they are the first one getting called. Could it be a general cache invalidation problem? 

  • Hi Emil,

    Sorry for the late response, few things need to check with you

    1. For our Standalone Verification size need to larger than 1024, do you do that?

    2. Do you have a logic analyzer Saleae on your side? If yes, you can capture the wave forms to me.

  • Hi Gary,

    Yes I do Standalone Verification with sizes between 1024 (1 sector) and 64 sectors.

    I do have a Saleae connected yes. Do you only care about the I2C analyzer output? Or do you also want the digital and/or analog capture? And in which format do you prefer?

  • Digital signals with Saleae will be ok, you can also use a oscilloscope to show the signal quality to see if the data transfer correctly.