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.

[参考译文] MSP430FR5969:我想知道 MCU 指令的具体执行过程。

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1117163/msp430fr5969-i-want-to-know-the-specific-execution-process-of-the-instruction-of-mcu

器件型号:MSP430FR5969

我想使用 MCU 生成方波。 我不使用计时器的原因是其接口 端口无法控制我的设计中的组件。

我使用 NOP 指令来控制方波的周期、时钟频率设置为16M、代码如下所示:

我已将+和-的宽度设置为相等。但方波不精确:

我减少了一 个 NOP 数-宽度减小得太大:

和其他方波宽度也会受到影响。

我想知道 指令执行的具体机制。

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

    由于您没有提供足够的信息、因此无法说出时间安排。 由于您说时钟为16MHz、这意味着1个等待状态。 这意味着高速缓存时序发挥作用、内存中指令的对齐非常重要。

    如果要从图片中获取高速缓存时序、则必须将时钟速度降低至8MHz 或更低、并禁用 FRAM 等待状态。

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

    谢谢、我已将高速缓存设置为1等待状态、我想使用16MHz 时钟。

    那么、我可以为您提供哪些信息来确保时间安排是多少?  

    我如何确保内存中的指令是否对齐?

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

    我不会告诉您计时、因为除非您仔细对齐代码、计时可能会也会有所不同。 我使用的 GNU 汇编器具有用于此类东西的.align 指令。 了解对齐后、您可以确定何时发生缓存命中和缺失。

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

    您好!  

    NOP 是一个等待状态、它是就地跳转指令。 有关详细信息、请参阅器件用户指南。 执行和获取的时序将受到 CPU 时钟频率的影响、并且可能会有一些变化、具体取决于从存储器各个部分获取的时序。 如果您收到中断(如果未关闭)、它也会延迟。 出于这些原因、如果您需要精确的计时、建议使用计时器。  

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

    感谢您的回复。 我说过我只想使用 MCU、因为我设计的电路板上的计时器输出端口(如 P1.4) 未连接所需的组件。  

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

    我经常使用与 CPU 周期数保持一致的代码。 2xx 闪存系列没有问题、系列数据表中包含了所有这些问题。 使用5xx 闪存系列时、事情变得更加复杂(不在任何 TI 文档中)。 最后发现 FRAM 的情况最糟糕。

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

    您知道一个 FRAM 等待状态的时钟周期数吗?

    您能告诉我如何使用.align 吗? 我在我的代码中添加了它、但它无效。

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

    非常感谢。 当我更改少量代码时、我会感到很生气、我应该重新思考并调整代码以使其对齐。

    你有什么好方法吗?

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

    FRAM 等待状态就像它所说的那样。 一个额外的 MCLK 周期。

    GNU 汇编器的文档提供了有关如何使用.align 的所有详细信息。 这表明、如果您只是在".align"中进行 plopploped、则没有任何结果、因为您没有提供描述对齐的参数。 如果将此函数与 C 内联汇编语法一起使用、则最好将 NOP 作为填充值。