There appears to be confusion about the length of the first positive pulse on TEST as part of the hardware BSL invocation sequence. In figure 2 of slau550p, it shows this as tSWB,En, and the datasheet shows a maximum of 110 uS for this parameter. But the text above Figure 2 says the pulse must be at least tSWB,En. The G2553 datasheet shows a maximum tSBW,En of 1 uS, but by actual measurement BSLDEMO outputs a 15 mS pulse. The source code for the Rocket is shown below. It appears to be trying to exactly match 110 uS, which doesn't tell me if it's treating that as a minimum or a maximum.
Can someone clarify if there is a minimum or maximum length for that pulse to work with ANY MSP430 part?
If it was 10 mS, would that work for everything?
/*** BSL entry sequence *******************************************************/
void BSL_invoke_sequence()
{
/* BSL invoke sequence
*
* H -----------+ +--+ +-----+
* TEST L +-----+ +--+ +--------
*
* H --------------+ +-----------
* RST L +-----------+
*
*
* H -----------------+ +--+ +--------
* TCK L +--+ +-----+
*/
// Set RST, TST and TCK pin to output
ENTRY_SEQ_PDIR |= (RESET_PIN + TEST_PIN + TCK_PIN);
// (0)Start with RST high, TEST high, TCK high
ENTRY_SEQ_POUT = RESET_PIN + TEST_PIN + TCK_PIN;
__delay_cycles(INVOKE_DELAY_100US);
__delay_cycles(INVOKE_DELAY_100US);
// (1)RST high, TEST low, TCK high
ENTRY_SEQ_POUT = RESET_PIN + TCK_PIN;
__delay_cycles(INVOKE_DELAY_100US);
// (2)RST low, TEST low, TCK high
ENTRY_SEQ_POUT = TCK_PIN;
__delay_cycles(INVOKE_DELAY_2US);
// (3)RST low, TEST high, TCK low
ENTRY_SEQ_POUT = TEST_PIN ;
__delay_cycles(INVOKE_DELAY_110US);
// (4)RST low, TEST low, TCK high
ENTRY_SEQ_POUT = TCK_PIN;
__delay_cycles(INVOKE_DELAY_10US);
// (5)RST low, TEST high, TCK low
ENTRY_SEQ_POUT =TEST_PIN;
__delay_cycles(INVOKE_DELAY_100US);
// (6)RST high, TEST high, TCK low
ENTRY_SEQ_POUT = RESET_PIN + TEST_PIN;
__delay_cycles(INVOKE_DELAY_100US);
// (7)RST high, TEST low, TCK high
ENTRY_SEQ_POUT = RESET_PIN + TCK_PIN;
__delay_cycles(INVOKE_DELAY_100US);
__delay_cycles(INVOKE_DELAY_100US);
// Set RST, TST and TCK pin to input
ENTRY_SEQ_PDIR &= ~(RESET_PIN + TEST_PIN + TCK_PIN);
}