This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0L1306: SWD communicate abnormally after 10 second

Part Number: MSPM0L1306

Recently, we are supporting the programming of MSPM0L1306SRGER IC. According to the information provided by the original factory, the support is almost completed, but there are still some problems that need to be solved. Please also ask the person responsible for this IC from the original factory to help me solve the problem, thank you.

 

The SWD commands for programming, erasing, verifying and reading are all fine and can be executed normally, but I found that as long as the IC is powered on for about 10 seconds, the SWD will communicate abnormally, and the SWD will report ACK Wait and there will be no more response, even though I keep sending SWD signal after ACK Wait.

And no matter what the current command is, as long as it takes about 10 seconds, the communication will be abnormal directly.

 

The following file is the waveform record of abnormal communication when I use the logic analyzer to burn the SWD, and attach the hardware circuit plan together. Channel 3 is NRST.

MSPM0_Fail.csv

  • Hi Yuxuan,

    Your measurement of 10 seconds for this to occur makes me think the device is changing from BSL Mode to Low Power Mode.

    This will happen automatically 10 seconds after BSL is invoked. The way your current schematic looks, with the BSL_invoke pin pulled high, every device will boot into BSL mode after reset, and then drop into a low power mode 10 seconds after that.

    Section 3.1 of our  MSPM0 Bootloader's User's Guide (https://www.ti.com/lit/slau887/) covers how this timeout feature works in more detail. As long as you program within 10 seconds of powering on the device with that BSL pin pulled high, this behavior should not be relevant. 

    The problem with having BSL_Invoke  pin pulled high all the time, is that every device will always boot into BSL mode and your application code won't run. It is possible to disable or move this BSL_Invoke feature to another pin, but on early sample devices we don't recommend this, as you can easily lock yourself out of the device. 

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    At present, it seems that because the IC enters BSL mode, I will not be able to continue programming the IC after 10 seconds.
    But according to my current usage situation, I still need to program the IC for more than 10 seconds.
    Is there a way to exit or prevent entering BSL mode? Thanks.

    Regards,
    Yuxuan
  • Hi Yuxuan,

    Are you programming the IC for this whole 10+ seconds, or are you programming multiple and some are just sitting powered-on, waiting to be programmed? Are these blank ICs or have you programmed them before? 

    In the production version of devices it will be possible to disable the BSL invocation by writing to NON-MAIN memory, but that of course assumes you are programming them beforehand. If this is your first programming with blank devices that is not going to be an option.

    Do you have access to the reset pin in your programmer setup? Resetting a blank device will bring it back up in a programmable state, but it will again drop to BSL mode after 10 seconds. 

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    Because I need to perform processes such as erase, blankcheck, program, and verify on the IC when I program the IC, and these processes will take more than 10 seconds to complete, and the program itself will be longer than 10 seconds.

    So if I program the IC for more than 10 seconds, do I need to add a reset in the process to avoid the IC from entering low power mode?
    Then if I simply ReadID the IC through the BSL every time it is 10 seconds faster, can the IC be prevented from entering the low power mode?
    Thanks

    Regards,
    Yuxuan
  • Hi Brandon,

    Also, I want to confirm, when I want to perform Reset to reset the timing of entering low power mode, can I use SWD to command Reset to the IC? Or can it only be reset through pin NRST?
    Thanks

    Regards,
    Yuxuan
  • Hi Yuxuan,

    So if I program the IC for more than 10 seconds, do I need to add a reset in the process to avoid the IC from entering low power mode?

    Based on your shared schematic with the BSL_Invoke pin pulled high yes, you can reset to avoid the IC entering LPM, or the bring the device out of LPM if its already entered.

    Then if I simply ReadID the IC through the BSL every time it is 10 seconds faster, can the IC be prevented from entering the low power mode?
    Thanks

    Yes, an id read over BSL would keep the device from entering LPM.

    This should prevent the BSL from timing out and keep it awake.

    Also, I want to confirm, when I want to perform Reset to reset the timing of entering low power mode, can I use SWD to command Reset to the IC? Or can it only be reset through pin NRST?

    Currently checking on this. I believe it should be enough, but I'm not certain exactly what reset level the SWD Reset triggers.

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    OK, thanks! I get it!
    I'll be testing it out while I wait for your confirmation.
    In addition, I also have a question to confirm, because my circuit is to allow both SWD and BSL to be used, so I will pull BSL_Invoke high and connect it to IO (I am not providing the part of BSL_Invoke connected to IO drawn on the circuit diagram).

    Is it possible to float or ground BSL_Invoke in order to keep SWD in communication for more than 10 seconds without entering low power mode.
    But I tested floating or grounding BSL_Invoke first, but the result was that SWD would not return any data except IDCODE.
    Can you help me to confirm this issue too? Thanks!

    Regards,
    Yuxuan
  • Hi Yuxuan,

    Is it possible to float or ground BSL_Invoke in order to keep SWD in communication for more than 10 seconds without entering low power mode.
    But I tested floating or grounding BSL_Invoke first, but the result was that SWD would not return any data except IDCODE.
    Can you help me to confirm this issue too? Thanks!

    If you have an already programmed (i.e. non-blank) device, then yes, grounding BSL_INVOKE will keep you from entering BSL Mode and timing out after 10 seconds.

    If you have a blank device, you will enter BSL mode (and then timeout 10 seconds later) no matter the state of that pin.

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    I understand according to your explanation, thank you for your explanation.
    Since we will basically program a blank IC, even if it is not a blank IC, the erase will be performed first, so it seems that the IC will enter the BSL and enter the LPM no matter what.
    Then I would like to ask whether the MSPM0 series of ICs can halt the core of the IC through the SWD command, so that the IC does not enter the BSL or start counting for 10 seconds, but at the same time it can also be used to burn the flash. Can this series of ICs achieve this purpose through SWD?

    I also look forward to your confirmation whether SWD can achieve the same effect as NRST on IC reset.

    Regards,
    Yuxuan
  • Hi Brandon,

    Are there any updates? Thanks.

    Regards,
    Yuxuan
  • Hi Yuxuan,

    Apologies for the delay here. 

    I should point out that this is only really an issue with early sample devices. With production devices (available now), the debugger will be able to connect again when the device drops down into Stop/Standby. So after the 10 second low power mode drop you should be able to retry and gain access. 

    Then I would like to ask whether the MSPM0 series of ICs can halt the core of the IC through the SWD command, so that the IC does not enter the BSL or start counting for 10 seconds, but at the same time it can also be used to burn the flash. Can this series of ICs achieve this purpose through SWD?

    It is possible to halt code execution via SWD, this is done frequently during debug. If you are connected though, why wait? just perform the necessary operations on that device while connected. Our supported debuggers do all of the required operations well within 10 seconds. 

    On the SWD Reset. After checking with my team, the SWD reset appears to be a CPU level reset, which should wake the CPU and end up in state that will respond to attempts to access the device via SWD. If you have already dropped into a LPM however, the device likely won't respond, but if you catch it before it drops into a LPM, a reset should essentially restart the ROM BSL execution and put you back at the start of your 10 second timer. 

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    Ok, thank you.
    According to your suggestion, before entering LPM, before the communication exceeds 10 seconds, reset the CPU through SWD, and the IC will indeed not enter LPM and cause SWD communication failure.
    This helped me a lot, thank you for your help.

    Regards,
    Yuxuan