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 通信在10秒后异常

Guru**** 2446140 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1221618/mspm0l1306-swd-communicate-abnormally-after-10-second

器件型号:MSPM0L1306

最近、我们支持 MSPM0L1306SRGER IC 的编程。 根据原厂提供的信息、支持差不多就要完成了、但是还有一些问题还有待解决。 另外、请向原厂负责该 IC 的人员寻求帮助、以帮助我解决问题、谢谢。

 

SWD 的编程、擦除、验证和读取命令都很好、可以正常执行、但我发现只要 IC 上电大约10秒、SWD 就会异常通信。 SWD 将报告 ACK WAIT、并且不再有响应、即使我在 ACK WAIT 后继续发送 SWD 信号。

不管当前的命令是什么、只要花费大约10秒的时间、通信就会直接异常。

 

以下文件是我使用逻辑分析仪刻录 SWD 并将硬件电路方案连接在一起时异常通信的波形记录。 通道3为 NRST。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuxuan:

    您对此情况的10秒测量结果使我认为器件正在 从 BSL 模式变为低功耗模式。

    这将在调用 BSL 后10秒内自动发生。 您当前原理图的样子、在 BSL_invoke 引脚被拉高的情况下、每个器件都会在复位后引导到 BSL 模式、然后在10秒后进入低功耗模式。

     MSPM0引导加载程序用户指南(https://www.ti.com/lit/slau887/)的第3.1节更详细地介绍了此超时功能的工作原理。 只要您在为器件上电后的10秒内进行编程并将 BSL 引脚拉至高电平、那么此行为就 不相关。  

    BSL_invoke 引脚始终拉为高电平的问题是每个器件都会启动到 BSL 模式、并且您的应用程序代码无法运行。 可以禁用此 BSL_invoke 功能或将其移至另一个引脚、但在早期样片器件上、我们不建议这样做、因为您可以轻松将自己锁定到该器件之外。  

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    目前、看来由于 IC 进入了 BSL 模式、我10秒后将无法继续对 IC 编程。
    但根据我目前的使用情况、我仍然需要对 IC 进行编程超过10秒。
    是否有办法退出或防止进入 BSL 模式? 谢谢。

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuxuan:

    您是否正在对 IC 进行长达10秒钟以上的编程、或者是否正在对多个器件进行编程、有些器件只是处于通电状态、等待编程? 这些是空白 IC、还是您之前已经对其进行了编程?  

    在器件的量产版本中、可以通过写入非主存储器来禁用 BSL 调用、但这当然假定您是事先对它们进行编程。 如果这是您第一次使用空白器件进行编程、但不会成为选项。

    在您的编程器设置中、您是否可以访问复位引脚? 复位一个空白器件将使其重新进入可编程状态、但10秒后将再次进入 BSL 模式。  

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    因为在对 IC 进行编程时、我需要在 IC 上执行擦除、空白检查、编程和验证等过程、这些过程需要超过10秒才能完成、且程序本身也会超过10秒。

    因此、如果我对  IC 进行编程的时间超过10秒、是否需要在此过程中添加复位以避免 IC 进入低功耗模式?
    那么、如果我只是每次速度快10秒时通过 BSL 读取 IC、是否可以防止 IC 进入低功耗模式?
    谢谢

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    此外、我要确认、当我要执行复位以复位进入低功耗模式的时序时、是否可以使用 SWD 来命令 IC 复位? 或者只能通过引脚 NRST 复位吗?
    谢谢

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuxuan:

    因此如果我对  IC 进行编程的时间超过10秒,是否需要在此过程中添加复位以避免 IC 进入低功耗模式?

    根据您的共享原理图、将 BSL_invoke 引脚拉为高电平是、您可以进行复位以避免 IC 进入 LPM、或者如果器件已进入 LPM、则会使其退出 LPM。

    然后、如果我只需在每次 BSL 快速读取 IC 10秒时通过 BSL 读取 IC、是否可以阻止 IC 进入低功耗模式?
    感谢

    是的、通过 BSL 读取的 ID 将阻止器件进入 LPM。

    这将防止 BSL 超时并使其保持唤醒状态。

    此外、我想确认的是、当我想执行重置来重置进入低功耗模式的时序时、可以使用 SWD 来命令重置 IC 吗? 或者它只能通过引脚 NRST 复位吗?

    目前正在检查该文件。 我认为这应该足够了、但我不确定 SWD 复位触发的复位级别。

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    好的、谢谢! 我明白了!
    我将在等待您确认的同时对其进行测试。
    此外、我还有一个问题需要确认、因为我的电路允许同时使用 SWD 和 BSL、所以我会将 BSL_invoke 拉高并将其连接到 IO (我不提供连接到电路图上 IO 的 BSL_invoke 部分)。

    是否可以将 BSL_invoke 悬空或接地、以使 SWD 在通信中保持10秒以上而不进入低功耗模式。
    但我首先测试了悬空或将 BSL_invoke 接地、但结果是 SWD 不会返回除 IDCODE 之外的任何数据。
    您能帮我确认这个问题吗? 谢谢!

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuxuan:

    是否可以将 BSL_invoke 悬空或接地以在不进入低功耗模式的情况下使 SWD 保持通信超过10秒。
    但我首先测试了悬空或将 BSL_invoke 接地、但结果是 SWD 不会返回除 IDCODE 之外的任何数据。
    您能帮我确认这个问题吗? 谢谢!

    如果您具有已编程的(即非空白)器件、那么是的、将 BSL_invoke 会阻止您进入 BSL 模式并在10秒后超时。

    如果您有一个空白器件、那么无论该引脚的状态如何、您都将进入 BSL 模式(然后在10秒后超时)。

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    我理解你的解释,感谢你的解释。
    由于我们基本上会对空白 IC 进行编程、即使它不是空白 IC、我们也会首先执行擦除、因此无论什么情况、IC 似乎都会进入 BSL 并进入 LPM。
    然后、我想询问 MSPM0系列 IC 是否可以通过 SWD 命令停止 IC 的内核、从而使 IC 不进入 BSL 或开始计数10秒、 但同时、也可用于烧写闪存。 这一系列的 IC 能否通过 SWD 实现这一目的?

    我也期待您确认 SWD 是否能在 IC 复位时实现与 NRST 相同的效果。

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    是否有任何更新? 谢谢。

    此致、
    宇轩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuxuan:

    很抱歉在此延迟了。  

    我应该指出的是、这实际上只是 早期样片器件的一个问题。 对于量产器件(现已上市)、当器件降至 停止/待机模式时、调试器将能够再次连接。 因此、在10秒的低功耗模式下降之后、您应该能够重试并获得访问权限。  

    然后我想问一下 MSPM0系列 IC 是否可以通过 SWD 命令停止 IC 的内核、以便 IC 不会进入 BSL 或开始计数10秒, 但同时、也可用于烧写闪存。 该系列的 IC 能否通过 SWD 实现这一目的?

    可通过 SWD 暂停代码执行、这在调试期间经常执行。  但如果您已连接、那别犹豫了。 连接后在该器件上执行必要的操作即可。 我们支持的调试器 可以在 10秒内很好地完成所有必需的操作。  

    设置意外中断。 向我的团队核实后、SWD 复 位似乎是 CPU 级别复位、该复位应该 会唤醒 CPU 并最终达到对通过 SWD 访问器件的尝试做出响应的状态。  但是、如果您已经进入了 LPM、器件可能将不会响应、但如果您在 LPM 之前捕获到它、那么复位应该本质上重新启动 ROM BSL 执行、并将您返回到10秒计时器的起始位置。  

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Brandon:

    好的、谢谢。
    根据您的建议、在进入 LPM 之前、在通信超过10秒之前、通过 SWD 重置 CPU、IC 实际上不会进入 LPM 并导致 SWD 通信故障。
    这对我帮助很大、感谢您的帮助。

    此致、
    宇轩