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.

[参考译文] TMS320F280025:模拟外部复位

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1295808/tms320f280025-simulate-external-reset

器件型号:TMS320F280025

尊敬的团队:

我在主函数的 while 环路中使用此复位、但程序似乎未复位、并且观察寄存器的值均为零。 我使用的方法有什么问题吗?" SIMRESET->KEY"此寄存器的功能是什么?

此致

恩亚

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

    您好、Enya:

    只有在写入一个匹配的 KEY 值时、写入 SIMRESET 寄存器才会成功。
    请查看 TRM 了解更多详细信息。
    此外、SIMRESET 寄存器中的 XRSn 位也是一个 R-0位、即 我们读取时它将返回0。
    您可以检查 RESC 寄存器以检查复位原因。
    谢谢
    阿斯温
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Aswin M ü,

    我认为这是写入 SIMRESET 寄存器的正确方法。

    当我运行程序时、出现以下接口、我查看寄存器的值、确实发生了 SIMRESET_XRSn 复位。

    继续单击"Run"按钮时、我看到 WDRSn 也复位了。

    我使用了 RESCCLR 寄存器清除两个复位标志并再次运行、仅发生了 WDRSn 复位。

    我不明白 WDRSn 复位为什么一直发生。 我想问一下、程序是否在此停止、并且在复位后不会重新进入主程序从头开始。

    此致

    恩亚

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

    您好、Enya:

    我使用 RESCCLR 寄存器清除两个复位标志并再次运行,仅发生 WDRSn 复位。

    当你向 RESCCLR 寄存器写入1时、在哪里清除 XRSn 和 WDRSn 的 RESC 位?

    另外、当您说再次运行时、代码是否到达将启动 XRSn 的函数、或者在此之前已进行复位(WDRSn)?

    您是否可以执行重新启动并查看它是否正在进入 main?

    您能否 检查是否设置了任何 MCD 状态(缺少时钟检测)位?

    谢谢

    阿斯温

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

    您好,Aswin M ü,

    Aswin 说:.当你向 RESCCLR 寄存器写入1时、XRSn 和 WDRSn 的 RESC 位在那里被清零?还有当你说你再次运行时、代码是否到达将启动一个 XRSn 的函数、或者在此之前它已被复位(WDRSn)?
    我不知道、我已在此界面中停车。 (在...处没有"_system_post_cinit ()"的源可用 )、我只能通过寄存器观察复位发生了什么。

    Aswin:你可以重新启动并查看它是否会进入 main 吗?

    我可以通过以下方式返回到 main 函数。

    Aswin:您能否检查是否设置了任何 MCD 状态(缺少时钟检测)位?

    启用时钟丢失检测电路。

    如果我将 MCLKOFF 位置1 (时钟丢失检测电路被禁用)、它在运行 SIMRESET 后也会被清零、并且它将再次在该接口上停止。

    此致

    恩亚

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

    您好、Enya:

    我不明白为什么 WDRSn 复位一直在发生。 我可以问一下程序是否在此停止,并且在重置后不会重新进入主程序从头开始。

    因此,一旦发生重置,如果您处于调试模式,它将不会重新进入 main ()。

    它将卡在 bootinit 中,您需要重启器件才能将控制权返回到 main(),您可以通过点击 CCS 中的 restart 按钮来实现此操作。

    如果设置在独立模式下运行、则复位后控制权应到达 main。

    谢谢

    阿斯温

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

    您好,Aswin M ü,

    现在我可以清楚地看到、调试模式下的 SIMRESET_XRSn 复位不会返回主函数。 实际上、我的目标是查看我写入地址的数据在使用内存浏览器复位后是否仍然存在。

    在复位时、是否有办法实时查看存储器?

    此致

    恩亚

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

    您好、Enya:

    如果要写入某些寄存器、并且复位类型为 XRSn、则值将丢失。

    您可以使用内存浏览器检查相应地址中的数据。 您可以在"Memory Browser"设置中启用持续刷新、以验证数据是否实时更新。

    谢谢

    阿斯温

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

    您好,Aswin M ü,

    它将卡在 bootinit.内存浏览器将不再更新.

    谢谢

    恩亚

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

    您好,Aswin M ü,

    我再次尝试了以下方法、发现运行复位的操作并未在该页停止(在...处没有可用于"_system_post_cinit ()"的源)、断点有效、可以从主函数重新启动。 看看复位标志、只有 SIMRESET_XRSn 复位、存储器浏览器被更新、我在那个固定地址写入的数据没有改变。

    我不知道它为什么与先前的调试如此不同。

    谢谢

    恩亚

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

    您好、Enya:

    我再次尝试以下内容,发现运行重置的操作没有在该页停止[/报价]

    您能否对电路板重新启动电源、然后重试、看看您是否有类似的观察结果。

    断点有效,可以从 main 函数重新启动[/报价]

    我没有明白你的观点。 因此,一旦 XRSn 发生,你按下运行按钮,它来到 main ()?

    XRSn RESC 寄存器仅在 POR (上电复位)期间被清除。

    现在、您是否能够从所需的存储器位置进行读取?

    谢谢

    阿斯温

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

    您好,Aswin M ü,

    因此,一旦 XRSn 发生,你按下运行按钮,它会进入 main ()?

    运行 RESET 函数后、程序将从主函数的第一句开始执行、而不仅仅是在 while 循环中执行。  我没有点击 CCS 中的"重启"按钮、没错。

    谢谢

    恩亚

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

    您好、Enya:

    运行重置函数后,程序将从主函数的第一句执行

    我仍然对这种看法感到困惑。 您能否在没有任何断点的情况下再次运行该示例 fresh、查看您是否具有类似的观察结果。

    请排除 MCDCLK 关闭设置、仅保留 SIMRESET.XRSn 设置。

    CpuSysRegs.SIMRESET.all = 0xA5A50002;

    运行该示例之前、请确保之前没有发生复位(检查 RESC 寄存器)

    您现在还能阅读内存浏览器吗?

    谢谢

    阿斯温