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.

[参考译文] CCS/MSP430F5528:MSP-FET 固件升级后的奇怪复位

Guru**** 2562120 points
Other Parts Discussed in Thread: MSP-FET, MSP430F5528

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/595042/ccs-msp430f5528-strange-resets-after-msp-fet-firmware-upgrade

器件型号:MSP430F5528
主题中讨论的其他器件:MSP-FET

工具/软件:Code Composer Studio

您好!

很难解释-希望这是硬件问题-最终的总重置(如"UR"! 编程从零开始! 但由于调试器的原因而丢失、它可以停止、但 PC 完全不受控制、但软件仍在运行。 如果在函数处设置了断点、则代码必须通过、不会发生任何情况。 奇怪、因为通常情况下、如果发生 PUR、调试连接会丢失-至少在我看来是这样)。

但测试中的硬件(10个!) 几个软件版本的性能都很好。

两天前发生的唯一事情是意外的"MSP-FET-update"。 通常我拒绝了——但它很紧张…

嗯、由于这个事件、器件显示了一个非常奇怪的行为:它们被复位、至少在代码的可复制阶段...! 但这段代码实际上是最旧且测试最强的项目之一。  

问题:

#A:更新 MSP-FET 器件后是否有其他人观察到类似现象?

#B: 如何控制更新行为? 我可以抑制它吗?

#C:能否将 MSP-FET 和编译器/CCS Studio 降级到较旧版本?

#D: 如何在不编译工程的情况下加载十六进制文件? 我有较旧的版本、到现在为止、我想闪存旧的十六进制文件。

提前感谢您-我希望这是问题... 但我一直在调查硬件!

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

    升级到 MSPFET 很可能不会为器件导致这些复位。 我们需要在此处确定复位的原因、然后从此处缩小问题范围。 幸运的是、MSP430F5528包含一个寄存器、可告诉您上次复位的原因、您可以在应用程序开始时进行检查。 您可以通过搜索我们的 E2E 论坛并查看以下链接来找到有关此内容的更多信息。

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

    您好 Jace、

    现在为100%:现在电压下降到2.2伏以下。

    到目前为止、寄存器 SYSRSTIV 在启动后以及在发生奇怪的问题后读取为0x000A。  但在重放当前调试会话后为0x0000。

    此致

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

    有两个器件、它们显示了这种奇怪的行为! 不是全部10分!!!!

    休息正常,就像它应该做的那样!

    如果一批1000片的两个 UCS 出现内存(或类似的)错误、我们可以检查它的可能性有多大?

    太大了! 我认为 UCS 发生故障的可能性几乎为零。

    器件都来自同一批次-电路板(在显微镜下检查-在可检查范围内)不显示任何差异。

    信息:XT2未连接-出于省电原因、也通过禁用 XT2OFF。

    我还应该检查什么-或者您认为这两个板上的 UC 有缺陷吗?

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

    是否可以运行 UC 自检? 要测试存储器是否正常工作、PC、ISR 系统?

    我将在启动时实施相关 uC 寄存器的基于 UART 的打印输出。  

    如果无法检查这一点、我必须更改芯片以进行测试。

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

    您已经厌倦了:在 CCS 中、您可以启用调试器中的选项来为复位事件设置断点。 因此、如果 MCU 被复位、PC (程序计数器)将在断点处停止。

    BTW、您可能还希望使用"硬件断点"而不是"软件断点"。

    此外、在进行更多测试之前、您应该先更新 CCS 及其所有软件包/驱动程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Robert、

    我更新了 CCS 并将其安装在另一台计算机上作为参考-没有明显的区别。

    我将签出此调试器选项。

    最令人疯狂的是:这种类型的复位发生在 UART 操作期间-但不是第一次操作、实际上前面有很多操作。 活动中断:UART_A0和看门狗定时器中断。  

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

    关于相同故障排除的其他(paranoia)问题:是否所有内容都定义良好? 我不是很长时间使用 MSP430 (很酷的器件、当然还有很酷的文档! 感谢 TI!) 所以我对时钟管理并不是很安全。 就我通过检查时序来查看寄存器和示波器而言、系统工作正常。 与 LaunchPad 电路和简易程序相比。 由于省电原因、没有 XT2晶振-它是免费的。有一点不清楚:端口 C? 它可以在哪些引脚上找到?

    问题、因为之前的备注#10372-D:(ULP 4.1)在该项目中检测到未初始化的端口 C。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。

    我刚刚在代码的第一行中通过   以下公式定义了它:PCDIR=0x00;PCREN=0xff;PCOUT=0x00;

    该端口 C 实际上位于哪些引脚上? 它的功能是什么?



    重要须知:我不喜欢豆类和这样的东西-我更喜欢通过寄存器级的文档编码。


    此致
    Bachmayer 博士

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

    您说在2.2V 时没有压降。 这里需要考虑的一件事是 SVS 设置、VCORE 电平和时钟设置。 为了实现更高的时钟频率、必须提高 VCORE 电平(默认时钟为1MHz)。 在 VCORE 3级、您可以实现器件的最高频率。 在不同的 VCORE 电平上也有 DVCC 限制。 可以在数据表中找到这些参数、但对于 VCORE 3级、DVCC 不得低于2.4V (20MHz 以上运行)、VCORE 2级不得低于2.2V (12MHz 至20MHz 运行)。 如需更多信息、请参阅数据表(图5-1)。 请检查您的时钟设置和 VCORE 电平、以确保不违反此关系。

    在升高 VCORE 的过程中、您还可以更改 SVS 设置。 如果您的电压低于特定电压、SVS 将自动复位您的器件。 SVS 高侧将使器件复位的最高电压对于该器件具有典型值2.18V (最大值2.31V)。 在2.2V 时、您可能会达到某些芯片上的最大电平、从而导致复位。 您的 CNA 还设置了 SVS 高侧监控器(SVSMHS)、以在更高的电压下复位您的器件。 不过、这必须手动设置、并且在 VCORE 电平3下使用器件时非常有用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    我也会检查这一点。

    但在我的应用中、我使用了 MSP430的所有优势。 我甚至控制3V3和1V8之间的电源电压。

    它的工作原理-同样适用于1V8、我的睡眠电压是多少。

    时钟未被触摸-因此我认为它是1MHz (由于 UART 配置...、非常确定)。

    我的软件所做的就是将看门狗设置为 ISR -源(具有尽可能低的周期)、配置 I2C、SPI 和 UART。

    所有这些都可以通过示波器/信号分析器逐步开发和控制功能。

    我将告诉您有关复位源的结果的一个小图。

    上述功能不会同时使用-因此 ISR 干扰不会成为问题。

    是什么让我感到疯狂-当发生上述压降时(在激活我的电路的重负载成员时)、根本不会发生复位。 该成员(通过 UART 连接)发送初始例程-一切正常。 但是、当我的 UART 开始发送它的第一个命令时、就会发生这种情况。 但是当我一步一步——没有发生任何事情,因为错过了答案… 调试太困难了...

    我不仅测量了压降、还添加了大电容器、甚至强大的电源-它不会改变效果。

    再说一次:这在所有器件上都看不到。

    因此-如果 IC 本身可能没有故障、我认为它必须是一个未定义的输入。 但是、这种完全复位可能由哪些输入导致? RESET 引脚具有47k Ω 的上拉电阻(MSP430F5228 RGC 封装的引脚64)。 Launchpad 上的其他基本电路:PUR 和 PU.0之间为1K、PU.0和 VSSU (GND)之间为1M。 SBWTCK 打开(正确?)。

    提前非常感谢你们-当然是一个愚蠢的初学者错误,但却是一个残酷的错误,因为它出现的非常非常非常非常晚,根本没有任何设备....

    此致
    Mathias

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

    如果您启用了看门狗、并且您仍然只有1MHz、我可以想象您在 TX/Rx 大量数据阻止您为看门狗提供服务的情况。 由于您不及时处理看门狗、因此它会重置您的部件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    看门狗关于其复位功能被禁用 -我将其用作纯粹的计时器中断、为我的状态机提供我的时基:

    设置一:WDTCTL = WDTPW | 0x0040 | 0x0007 | WDTTMSEL;// ISR 的7MSEK 周期

    设置二:WDTCTL = WDTPW | 0x0040 | 0x0005 | WDTTMSEL;// ISR 的873MSEK 周期

    SFRIE1|=WDTIE;

    对吧? 还是看门狗仍然唤醒?

    此外、我设置了

    UCSCTL6|=XT2OFF;


    现在、我将介绍所有提示(尤其是 Robert 关于复位断点的提示)、并为您提供详细的报告。

    非常感谢

    此致

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

    您能否更详细地说明如何设置此调试功能? 它是否"调试/程序/存储器加载选项"下的"程序终止时停止"不是您所做的-对吗?

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

    关于 SYSRSTIV (冗余信息)的 FYI:

    长注册;
    void main (void){
    寄存器= SYSRSTIV;

    提供:
    | :
    新加载:0x0000|0x0000
    第一次复位后(手动暂停):0x0000000A|0x0000

    我认为什么(如果我正确理解 Jace 的 Wiki)会发生安全违规?!!!

    这意味着什么? 我想这意味着指针正在运行 amok? 我将检查 UART 写入例程...

    processors.wiki.ti.com/.../SYSRSTIV_Register_options.png

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

    "安全违规"意味着不允许您访问器件的一部分(读取存储器映射)。 这可以是保留空间、引导存储器或存储器映射中未定义的部分。 最可能的原因可能是堆栈溢出、指针不匹配或数组索引超出范围。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的-所以 BOR 肯定与我在 MSP 数据表中找到的 BOR (欠压复位)无关-它给出了一个非常有趣的有关 dV/dt 的定义?

    因为、我不明白、为什么它适用于其他器件。 此外、它是一个环形缓冲器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mathias、

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

    尊敬的 Jace:

    好的、谢谢。 我将研究有关指针问题的 UART 连接。


    但非常感谢!

    此致

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

    发现错误! 从设备突然发出11k 字节的数据垃圾-就像拒绝服务攻击... -在开发过程中仅观察到小于200字节的数据。 初始化例程未考虑可能的回滚(Ringbuffer 为4000字节大)。  

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

    找到错误、但现在面临一些程序停止、这是由带有提示"MSP-430调试调用栈"的蓝色箭头引起的。

    我已将调试器设置重置为默认设置(因为正在搜索 Robert 的有关调试器设置的提示)-但没有更改。

    如果在闪存后完全断开器件与调试器的连接、则器件正常工作、从而发起通信。

    但是、如果我让调试器连接、程序会在任何地方使用这个提示"MSP-430调试调用堆栈"随机停止。 这意味着什么?


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

    请大家解释一下、"MSP-430调试堆栈"消息是什么意思? 谢谢!

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

    我以前没有看到过此错误。 如果您可以截屏显示该问题的消息日志、这可能会有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jace:

    非常感谢您的想法-您也是对的、但我在项目的早期阶段通过降低坏器件的 UART 来解决了这个问题。

    这个问题实际上已经解决了-这个奇怪的复位的原因是连接模块的一个未记录的行为、它发出11kB 的代码。

    我如何解决这个问题-或将其删除、因为我对错误的主题感到抱歉、升级 MSPFET 后发生的问题是偶然的。

    谢谢你
    Mathias