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.

[参考译文] MSP430FR2433:是否存在禁用生成 VMA NMI 的外设 tp lpm4.5的竞争?

Guru**** 2563960 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/723931/msp430fr2433-is-there-a-race-from-disable-peripheral-tp-lpm4-5-that-generates-vma-nmi

器件型号:MSP430FR2433

在我的应用中、在禁用 eusci SPI 外设和睡眠 lpm4.5之间没有延迟的情况下、似乎会通过 NMI 向量生成空存储器访问故障。  这似乎是可能的吗?  我的心理模型是 、当外设仍处于活动状态但内核已断电时、可能会生成 VMA 故障。  我还没有将代码缩减为一个小示例、但  在输入 lpm4.5之前插入/删除一个延迟调用时、行为似乎可以重现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Lloyd、
    您的描述似乎可信。 当您说正在禁用 eUSCI 时、您如何执行此操作? 是否正在设置 UCBxCTLW0寄存器中的软件复位位位位?
    您操作 SPI 的配置是什么? MSP430是主器件还是从器件? 在关断至 LPMx.5期间是否有一些数据进入?
    当您将其称为访问冲突中断时、您是否在 SYSRSTIV、SYSSNIV、SYSUNIV 寄存器中看到相应的标志? 这些内容是什么?

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

    [引用 user="Peter Spevak"]当您说正在禁用 eUSCI 时、如何执行此操作? 是否在 UCBxCTLW0寄存器中设置了软件复位位位位?[/QUERP]

    我使用 DriverLib 函数、该函数的实现会将 UCBxCTLW0寄存器中的 RST 位置位

    [引用 user="Peter Spevak"]您操作 SPI 的配置是什么? MSP430是主器件还是从器件? 在关闭至 LPMx.5期间是否有一些数据进入?[/quot]

    MSP430是 AB0815实时时钟的主器件、而 AB0815实时时钟是从器件(不能作为主器件)。  在关断期间不应进行数据传输。

    [引用 user="Peter Spevak"]当您将其称为访问冲突中断时、是否在 SYSRSTIV、SYSSNIV、SYSUNIV 寄存器中看到相应的标志? 这些内容是什么?

    在 NMI 中断服务例程中、我读取中断发生器寄存器 SYSSNIIV、值为 SYSSNI_VMAIFG (然后使 LED 变亮以告诉我、我无法在调试器中调试它。)  我看不到知道其他寄存器的值是相关的。

    我已经确定、50个周期的延迟不足以防止 VMA NMI、而500个周期的延迟就足够了。

    我希望我明白为什么代码需要神秘的延迟才能工作。  我的模糊模型是 VMA 与 MSP430的内部地址总线相关、当总线主控(通常是 CPU)在总线上放置的地址没有单元(存储器或外设)响应时、就会生成 VMA。  我想 VMA 逻辑不受外设禁用的影响、您仍然可以读取已禁用外设寄存器的内容。

    此外、我的模型是、为了知道是否可以输入 LPM4.5 (与其他电平相比)、PMM 必须以某种方式确定所有外设都被禁用。  在代码禁用外设与外设实际向 PMM 发出一些内部信号之间可能存在有限的延迟。  但我认为它不会生成 VMA、只会防止下降到 LPM4.5。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Lloyd、
    非常感谢您提供的更多信息。 您是否能够将代码减少到一个简单的序列、尝试进入 LPM4.5并且仍然出现同样的问题?
    您是否想在此处发布这样一个代码片段、以便我重现问题并调查根本原因?

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Lloyd、
    如果您需要有关此方面的进一步支持、请告知我们。 在假设情况不再如此的情况下、我们建议关闭此主题。

    此致
    Peter