主题中讨论的其他器件:LP-MSPM0G3507、 MSPM0L1306、
您好!
我对 I2C BSL 有一些疑问。
NRST 引脚与适用于16引脚 SOT 封装的 BSL I2C SCL 进行多路复用。
我的客户在其应用中禁用了 NRST 引脚以实现 I2C 功能。
因此我们必须使用软件调用进入 BSL。
我使用以下硬件和软件进行了测试。
C:\ti\mspm0_sdk_0_58_00_00_eng\...\bsl_host_mcu_i2c
目标: MSPM0L1304SDYYR (SOT-23-THN 封装)
C:\ti\mspm0_sdk_1_10_01_05\examples\nortos\lp_MSPM0L1306\bsl\BSL_software_invoke
主机示例中禁用了硬件调用、当目标进入 BSL 时检查了连接。
但是、没有与 BSL 的通信。
在相同条件下、如果只有目标从 MSPM0L1304SDYYR 更 改为 LP-MSPM0G3507、则 BSL 会正常响应。
1.当 MSPM0L1304进入 BSL 后、是否会禁用 NRST 功能以进行 I2C 通信?
当使用 PA1/NRST (16引脚 SOT-23-THN 中的第4号)作为 I2C 功能时、除非禁用 NRST 功能、否则 I2C 将无法正常运行。
2.如果目标在 BSL 中,而主机进行硬件调用序列,目标是否会再次进入 BSL?
3. 如何在 BSL 进入睡眠模式时唤醒?
您好!
此外、主机 无法从空白器件获得 BSL 响应。
bsl_err = Host_BSL_Connection (); 在 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;
//在有效载荷上计算 CRC (CMD +数据)
ui32CRC = softwareCRC (&BSL_TX_buffer[3]、CMD_BYTE);
//将 CRC 插入到数据包中
*(uint32_t *)&BSL_TX_buffer [HDR_LEN_CMD_BYTE]= ui32CRC;
I2C_ack = I2C_writeBuffer (BSL_TX_buffer、HDR_LEN_CMD_BYTE + CRC_BYTES);
I2C_readBuffer (bsl_RX_buffer、1); <-挂起
如果(i2c_ack!= uart_noError){
TurnOnErrorLED ();
}
返回(bsl_err);
}
谢谢。