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.

[参考译文] Starterware/MSP430FR6972:FRAM's等待状态控制的问题

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/621637/starterware-msp430fr6972-the-question-of-fram-s-wait-state-control

部件号:MSP430FR6972

工具/软件:Starterware

您好,先生

我 将MCLK从DCO设置为12MHz。 从msp430fr69和平 行的用户指南中的FRAM部分,我知道“CPU或DMA的系统时钟可以超过FRAM访问和周期时间要求。 对于 这些方案,将实施等待状态生成器机制。 设备特定数据表的推荐操作条件列出了频率范围以及所需的等待状态设置。 " 建议的工作条件如下:

我混淆了“NWAITSx”的意思。  它是否代表  NWAITS[2:0]的每一位?  如果MCLK为12MHz,则应在NWITS[2:0]中设置什么?

另一个问题, 来自msp430fr6.01万  的特定于设备的数据表,电源电流在MCLK的不同频率下显示。 我想在 MCLK的不同频率下调整操作速度。

云我知道16MHz MCLK的速度 是1MHz MCLK的16倍? 因此  ,1MHz的电流消耗假设为210 uA,16MHz‘s 电流消耗假设为1845 uA。 执行相同的代码,1MHz的时间消耗是16MHz的16倍。  1MHz的电流消耗为210uA*16,16MHz的电流消耗为1845uA*1。 因此,1MHz的电流消耗大于16MHz,当它们执行相同的代码时。 对吗?

此致

Jent

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

    Jent,

    对问题1的回答:
    - NWAITSx=1表示1等待状态,表示您已将0x0010写入FRCTL0以设置NWAITS[2:0] b'001。

    对问题2的答复:

    -是的,在16 MHz时,DCO的运行速度比1 MHz时快16倍
    关于时间消耗,您必须小心,因为等待状态在16 MHz和1 MHz之间激活
    -如表中所示,对于16 MHz操作,1 MHz时的电流不能简单地乘以16,否则电流将为3360 uA。
    是的,相对而言,在16 MHz频率下执行时,每条指令消耗的功率较低

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

     Dietmar,您好!

    非常感谢您的帮助。  

    因此,如果MCLK的频率 大于8MHz,我是否应该设置NWAITS[2:0]b'001?

    关于时间消耗,我应该计算有效MCLK频率:fMCLK,eff = fMCLK /[等待状态×(1-缓存命中率)+1]。 对于exmaple,高速缓存命中率为75 %,MCLK 为16MHz, fMCLK,eff =16/[1×(1-MMC)+1] 0.75 = 12.8MHz。  因此,1MHz的时间总和 是12.8 乘以16MHz。 对吗? 在实际操作中,花键命中率是多少? 鱼子命中率是否 与MCLK的帧率相关?

    此致,

    Jent

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

    因此,如果MCLK的频率大于8MHz,我是否应该设置NWAITS[2:0]b'001?
    ->是

    对于非常简单的LED闪烁程序,计算时间消耗可能很容易,但对于复杂程序,计算时间消耗可能不容易。
    它不取决于频率,而是取决于FRAM中代码的分布和结构。
    用户指南用以下文字描述FRAM缓存。

    FRAM缓存
    FRAM控制器实现了读取高速缓存,以便在以更高速度运行CPU时提高速度
    速度超过FRAM支持的速度,无需等待状态。 实现的高速缓存是双向关联高速缓存
    具有4个64位大小的高速缓存行。 可以对连续地址执行内存读取访问
    当它们位于相同的缓存行中时,没有等待状态。

    这意味着我们有64位的行。 例如,如果您有一个简单的while循环,可以放入这些高速缓存,那么您的100高速缓存命中会使您的程序全速运行而无需等待状态。 但是,对于函数调用和中断(通常在复杂代码中使用),很难预测。
    同样,如果您有可预测的代码方案,您可以对其进行分析和计算。

    因此,缓存命中率与频率并无关系,而是CPU如何访问FRAM的不同地址。
    下面的文档显示了第6页上0 % 缓存命中率的代码示例,也许它可以帮助您更好地了解这一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你Dietmar,

    能否向我展示有关0 % 缓存命中率代码示例的文档。 您可能会忘记将其添加到POST中。
    再次感谢您的支持。

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

    抱歉,此处有2个链接

    在这里,您可以找到很多有关FRAM的一般信息
    www.ti.com/.../what-is-fram.page

    以下是我在上一篇文章(第6页)中提到的文档:
    www.ti.com/.../slaa526a.pdf