Other Parts Discussed in Thread: LP-MSPM0G3507, MSPM0L1306,
Hi,
I have some questions about I2C BSL.
The NRST pin is multiplexed with the BSL I2C SCL for 16-pin SOT package.

My customer disabled the NRST pin in his application for I2C functionality.
So we have to use SW Invocation to enter BSL.
I tested with the following HW and SW.
C:\ti\mspm0_sdk_0_58_00_00_eng\...\bsl_host_mcu_i2c
Target : MSPM0L1304SDYYR (SOT-23-THN package)
C:\ti\mspm0_sdk_1_10_01_05\examples\nortos\LP_MSPM0L1306\bsl\bsl_software_invoke
The HW invocation was disabled in host example, and the connection was checked when the target entered BSL.
However, there is no communication with BSL.
Under the same conditions, if only the target is changed from MSPM0L1304SDYYR to LP-MSPM0G3507, BSL responds normally.
1. When the MSPM0L1304 enters BSL, will the NRST function be disabled for I2C communication?
When using PA1/NRST(No.4 in 16pin SOT-23-THN) as the I2C function, I2C will not operate properly unless the NRST function is disabled.
2. If the target is in BSL and the Host makes a HW invocation sequence, will the target enter BSL again?
3. How to wakeup when BSL enters sleep mode?
Hi,
Additionally, the host couldn't get a BSL response from the blank device.
bsl_err = Host_BSL_Connection(); in main.c
BSL_error_t Host_BSL_Connection(void)
{
BSL_error_t bsl_err = eBSL_success;
i2c_error_t i2c_ack;
uint32_t ui32CRC;
BSL_TX_buffer[0] = (uint8_t) PACKET_HEADER;
BSL_TX_buffer[1] = LSB(CMD_BYTE);
BSL_TX_buffer[2] = 0x00;
BSL_TX_buffer[3] = CMD_CONNECTION;
// Calculate CRC on the PAYLOAD (CMD + Data)
ui32CRC = softwareCRC(&BSL_TX_buffer[3], CMD_BYTE);
// Insert the CRC into the packet
*(uint32_t *) &BSL_TX_buffer[HDR_LEN_CMD_BYTES] = ui32CRC;
i2c_ack = I2C_writeBuffer(BSL_TX_buffer, HDR_LEN_CMD_BYTES + CRC_BYTES);
I2C_readBuffer(BSL_RX_buffer, 1); <-- pending
if (i2c_ack != uart_noError) {
TurnOnErrorLED();
}
return (bsl_err);
}
Thanks.