Part Number: MSP430F5359
I've read several threads about the limit on "Cumulative Programming Time" for the Flash Memory :
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/780840
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/19724/1476172
- https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/113519
But the advice seems a bit incomplete and in some cases, contradictory. So I'd like to ask for
some clarification.
I take the basic point: One can't apply high voltage stress to the flash cells in a block for more
than (in the case of my MSP430F5359) 16 ms. Doing so for longer time risks provoking errors
in any data stored in that block and possibly permanently damaging the gate oxide of the storage
transistors. So far, so good.
What I can't say I unambiguously understand is how we count time against that 16 ms allowance.
Here's the relevant diagram from SLAU208P, the “MSP430x5xx and MSP430x6xx Family User's
Guide”:
Here's the relevant table from the MSP430F5359 Data Sheet:
Here's where I get confused:
The User Guide mentions Twrite but that Data Sheet doesn't have that parameter. It instead has Tword.
Are they referring to the same entity? (So when I start a Flash programming operation from code running
from Flash, my program is blocked for Twrite = Tword = 64µs minimum, 85µs maximum?)
Is THAT the time that I need to tally up against the 16 ms "Cumulative Programming Time" allowance?
Or is it the smaller, seemingly unnamed and unspecified "Programming Operation Active" time that
doesn't include the time to start and stop the programming voltage generator? (Does the chip actually
stay stalled while the programming voltage generator stops?)
Finally, I assume that this "Cumulative Programming Time" limit applies over long times scales so
it doesn't matter if I spend the 16 ms in 16 contiguous milliseconds or if I spend it over the course
of days; either way, I get 16 milliseconds of "Cumulative Programming Time" per block of Flash
and each block is counted separately with its own 16 ms allocation so operations to multiple
blocks could overlap.
Essentially, I'm asking: Could I erase the block and then program the block, word-by-word or
longword-by-longword over the course of seconds, minutes, or hours just so long as the sum
of all the Twrite values for that particular block doesn't exceed 16 ms?
Which leads me to one more question:
The Family User's Guide clearly documents three Flash writing modes:
- Byte or Word Write (determined by the access size used by the instruction)
- Long-Word Write (activated by any combination of byte- or word-writes to
an aligned, contiguous 32-bit longword of Flash) - Long-Word Block Write (where the programming voltage generator remains
running and you must be executing from RAM only)
And the Data Sheet for the MSP430F5359 states that it can indeed do Long-Word Writes but it
doesn't define any timings for that. So how long does Tlongword take?
Atlant