Other Parts Discussed in Thread: MSP-FET
I'm updating MSP430F5528 firmware in our project using the JTAG port, which is controlled by a master processor, per SLAU320T (4 wire JTAG).
I ported the project code to a non TI processor, and it works, usually...
We have seen a few cases where the update fails (explained below), and once it does, it will not program again unless
I connect the MSP430 USB Debug-Interface to the JTAG header, and use the FET-Pro430 software from Elprotronic.
I found, I don't even need to erase and program the device, but just by doing a memory Read from Elprotronic seems to be enough to "fix" whatever problem the MSP430 has.
I can then remove the programmer, power up my device as normal, and program through my JTAG interface like nothing happened.
Not sure of the reason for the occasional failures, but I can duplicate the problem if I unplug the device before programming has completed.
I found the failure is in the GetDevice_430Xv2() routine.
This section is returning an error:
if (IsLockKeyProgrammed() == STATUS_OK) // Stop here if fuse is already blown
{
return(STATUS_FUSEBLOWN);
}
From the comment in code, it seems the fuse is blown, yet it's probably not really the fuse, but a JTAG communicatons problem.
I've lowered the RST pin capacitance to 2.2nF (it was 100nF) and added a 47K pullup, though the MSP430F5528 has an internal pullup. Still no luck
I've tried forcing the MSP into BSL mode on power up by pulling PUR up to 3.3V through a 100 ohm resistor in order to prevent possible bad code from executing.
- Even though USB is not used on this device, as suggested here:
e2e.ti.com/.../1006192
I'm now at a point where I'm trying to capture the JTAG signals on a scope, to try and figure out what Elprotronic might be doing different to make this work, but it's not the
easiet thing to figure out.
Any help would be appreciated.