Other Parts Discussed in Thread: MSP430FR5872, MSP430FR5959, MSP-FET
I'm currently unable to program or verify the MSP430FR2311 over JTAG. I'm using the Replicator430FR code as reference. So far I am able to read out registers from the chip, including Device ID. However, when I try to program FRAM it has the appearance of being programmed (I can see my data being sent and the polling being done for 0xCAFEBABE from the JTAG Mailbox), but a verify or read afterwards shows that the data was not actually written. I am unsure if I am reading or erasing FRAM properly, since everything is reading 0xFF and I can't program.
The process I'm following is this: I start JTAG communication and disable the MPU (referencing JTAGfunc430FR.c and Replicator430FR.c). At this point I can look at SYSCFG register and see that data and program write protection is disabled (reads 0x9600) and the watchdog is also disabled (WDTCTL reads 0x6980). Then, I follow the WriteFram_430Xv2() function to write FramWrite_o[] from FramWriteFR4xx.c into the RAM at address 0x2000, along with the start address and length. The device is then released (per ReleaseDevice_430Xv2) and the program data sent to the JTAG Mailbox. I believe this is running correctly because I can see my program waiting to see 0xABADBABE from i_readJmbOut() before loading data and checking that it reads 0xCAFEBABE before finishing. The RAM is then cleared by writing 0x3FFF to it. But when I execute a POR and perform ReadMemQuick_430Xv2 on my FRAM (0xF000-0xFFFF) everything reads out as 0xFF.
I should note that I've been able to program the MSP430FR5872 and multiple MSP430FR59xx chips using this method, so I suspect that the issue must stem from a difference in parameters that I missed or an issue with FramWriteFR4xx.c (since the MSP430FR5xxx uses FramWrite.c instead). I've updated the RAM_START_ADDRESS and MAIN_START_ADDRESS to reflect the changes in chips. Are there any other parameters that need to be updated that I might have missed?
Another thought I've had; is there any other write or read protection that needs to be disabled (besides what I'm doing in SYSCFG0)?
On a related note, I am a bit confused about the FramWrite_o_start and FramErase_o_start variables. It looks like FramWrite_o_start is set to 0xC400 and FramErase_o_start is set to 0x5C00. Those don't look correct to me for the MSP430FR2311, but it also doesn't look like those variables are even being used. I've tried updating them but haven't noticed it changing any behavior.
Finally, I'll describe my setup. The MSP430FR2311 is soldered to a breakout board with only power and JTAG connections (4 wire). There are also 2 decoupling capacitors on the power input (10uF and 100nF). I'm using my own software and hardware for the JTAG communication, though the software is almost identical to the Replicator430FR reference.