Other Parts Discussed in Thread: MSPBSL
Hello,
I have an MSP430FR2476 MCU in my product. I launch the BSL and reprogram it when I need to flash it with new firmware via another MSP that is bigger. This all works great and I have the BSL commands working fine as well. The situation I'm stuck in is that I need the MSP430FR part to auto invoke its bsl if the image flash gets screwed up.
For example, if I have a customer that gets partway through the update and has a brown out or just unplugs the data cable feeding the PCB the image etc...I need to be able to recover. So what I need is a way to get back into the BSL without any of the MSP430FR's IO interaction. I don't have access to the RST/TEST pins. I normally invoke the BSL via a command from a software UI that commands the main processor to send a message to the MSP telling it to invoke it's BSL.
So I'm struggling with this corner case of how do I re-flash the MSP430FR part if the first attempt at flashing fails for whatever reason. I've read that this part falls in the category of MSPs that autoinvoke the BSL if the memory is erased. I'm referring to slau550x "MSP430 FRAM Devices bootloader (BSL)" document from TI. In section 3.3.3 there is a paragraph about blank detection. I've attached a screenshot as well of this section.
I can test this very well on my bench so right now I'm erasing the part and rebooting my system. With a blank MSP430FR2476 I'm attempting to get out of this pickle. I am trying to send the BSL messages within the 10 seconds that section 3.4 mentions as a timeout feature. It seems that the BSL never responds.
Does anyone have any comments or is there a register I need to write to tell the auto invoke feature to execute on power up?
I'm using I2C as my BSL link and not the UART. My main processor also configures some other ICs on power up, but they don't share the BSL address of 0x48. I assume this isn't a problem?
Any help would be greatly appreciated thanks!!