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.

[参考译文] MSP430FR2355:"实际"周期时间与 MCLK 频率对比?

Guru**** 2526700 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1072253/msp430fr2355-actual-cycle-time-vs-mclk-freq

部件号:MSP430FR2355

我正在寻找一种用于验证此微设备的内 MCLK 频率的代理测量方法。

顺便说一句,我正在使用 Code Composer 和 C 编程。

简单地说,我切换了一条高端口线路,接着是100条“单周期”指令,然后是低端口线路,接着是10条单周期指令,然后循环并重复。

其目的是测量脉冲高时间,并确定 MCLK 频率。 这一时间应该非常稳定和准确。

MCLK 内部频率设置为1.25 Mhz (10 MHz 外部间壁/ 8)。 中断被禁用。

我本来希望100个单周期指令在1.25Mhz 下执行,无中断,无等待周期,存储到内存时没有管道问题,而没有任何其他干扰将在100 x 1/25Mhz 或80US 中完成。

但情况并非如此。 脉冲高时间为105uS,比预期长31.25%。

我最终在 P3.0上输出了 MCLK 信号,并验证 MCLK 实际上是1.250MHZ。

问题-为什么执行代码需要105uS 而不是80US?

谢谢

while(1)

   {
   P1OUT |= LED;           //  LED output high

   asm(" MOV R5,R5");      // 100 of these instructions, not all shown

   P1OUT &= ~LED;          // LED  output low

   asm(" MOV R5,R5");      // 10 of these instructions, not all shown 
   }

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

    您可能错过了一些东西。 实际生成的代码将是查找的位置。 另一件要检查的事情是如何将指令数更改为脉冲高时间。 如果删除了这100条指令中的10条,会发生什么情况?

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

    大卫,你好。

    感谢你的答复。

    我似乎没有遗漏任何东西。 我将代码移到了一个函数中,这样我就可以轻松地将其移入和移出,但时间结果是一样的。 下面是反汇编代码。

    在将端口线路设置为高,然后再次设置为低之间,有100个 MOV 指令。

    在将端口清除为低电压后,有10条 MOV 指令,但这段时间并不重要。

    还应注意的是,在端口组之间注释掉50条 MOV 指令,并清除正脉冲宽度的一半。 因此(或强烈建议)它与 MOV 指令定时相关。

    谢谢。

    641         P1OUT |= LED;
            Pulse():
    008000:   D0F2 0010 0202      BIS.B   #0x0010,&PA_PAOUT
    644         asm(" MOV R5,R5");
    008006:   4505                MOV.W   R5,R5
    645         asm(" MOV R5,R5");
    008008:   4505                MOV.W   R5,R5
    646         asm(" MOV R5,R5");
    00800a:   4505                MOV.W   R5,R5
    647         asm(" MOV R5,R5");
    00800c:   4505                MOV.W   R5,R5
    648         asm(" MOV R5,R5");
    00800e:   4505                MOV.W   R5,R5
    649         asm(" MOV R5,R5");
    008010:   4505                MOV.W   R5,R5
    650         asm(" MOV R5,R5");
    008012:   4505                MOV.W   R5,R5
    651         asm(" MOV R5,R5");
    008014:   4505                MOV.W   R5,R5
    652         asm(" MOV R5,R5");
    008016:   4505                MOV.W   R5,R5
    653         asm(" MOV R5,R5");
    008018:   4505                MOV.W   R5,R5
    655         asm(" MOV R5,R5");
    00801a:   4505                MOV.W   R5,R5
    656         asm(" MOV R5,R5");
    00801c:   4505                MOV.W   R5,R5
    657         asm(" MOV R5,R5");
    00801e:   4505                MOV.W   R5,R5
    658         asm(" MOV R5,R5");
    008020:   4505                MOV.W   R5,R5
    659         asm(" MOV R5,R5");
    008022:   4505                MOV.W   R5,R5
    660         asm(" MOV R5,R5");
    008024:   4505                MOV.W   R5,R5
    661         asm(" MOV R5,R5");
    008026:   4505                MOV.W   R5,R5
    662         asm(" MOV R5,R5");
    008028:   4505                MOV.W   R5,R5
    663         asm(" MOV R5,R5");
    00802a:   4505                MOV.W   R5,R5
    664         asm(" MOV R5,R5");
    00802c:   4505                MOV.W   R5,R5
    666         asm(" MOV R5,R5");
    00802e:   4505                MOV.W   R5,R5
    667         asm(" MOV R5,R5");
    008030:   4505                MOV.W   R5,R5
    668         asm(" MOV R5,R5");
    008032:   4505                MOV.W   R5,R5
    669         asm(" MOV R5,R5");
    008034:   4505                MOV.W   R5,R5
    670         asm(" MOV R5,R5");
    008036:   4505                MOV.W   R5,R5
    671         asm(" MOV R5,R5");
    008038:   4505                MOV.W   R5,R5
    672         asm(" MOV R5,R5");
    00803a:   4505                MOV.W   R5,R5
    673         asm(" MOV R5,R5");
    00803c:   4505                MOV.W   R5,R5
    674         asm(" MOV R5,R5");
    00803e:   4505                MOV.W   R5,R5
    675         asm(" MOV R5,R5");
    008040:   4505                MOV.W   R5,R5
    677         asm(" MOV R5,R5");
    008042:   4505                MOV.W   R5,R5
    678         asm(" MOV R5,R5");
    008044:   4505                MOV.W   R5,R5
    679         asm(" MOV R5,R5");
    008046:   4505                MOV.W   R5,R5
    680         asm(" MOV R5,R5");
    008048:   4505                MOV.W   R5,R5
    681         asm(" MOV R5,R5");
    00804a:   4505                MOV.W   R5,R5
    682         asm(" MOV R5,R5");
    00804c:   4505                MOV.W   R5,R5
    683         asm(" MOV R5,R5");
    00804e:   4505                MOV.W   R5,R5
    684         asm(" MOV R5,R5");
    008050:   4505                MOV.W   R5,R5
    685         asm(" MOV R5,R5");
    008052:   4505                MOV.W   R5,R5
    686         asm(" MOV R5,R5");
    008054:   4505                MOV.W   R5,R5
    688         asm(" MOV R5,R5");
    008056:   4505                MOV.W   R5,R5
    689         asm(" MOV R5,R5");
    008058:   4505                MOV.W   R5,R5
    690         asm(" MOV R5,R5");
    00805a:   4505                MOV.W   R5,R5
    691         asm(" MOV R5,R5");
    00805c:   4505                MOV.W   R5,R5
    692         asm(" MOV R5,R5");
    00805e:   4505                MOV.W   R5,R5
    693         asm(" MOV R5,R5");
    008060:   4505                MOV.W   R5,R5
    694         asm(" MOV R5,R5");
    008062:   4505                MOV.W   R5,R5
    695         asm(" MOV R5,R5");
    008064:   4505                MOV.W   R5,R5
    696         asm(" MOV R5,R5");
    008066:   4505                MOV.W   R5,R5
    697         asm(" MOV R5,R5");
    008068:   4505                MOV.W   R5,R5
    699         asm(" MOV R5,R5");
    00806a:   4505                MOV.W   R5,R5
    700         asm(" MOV R5,R5");
    00806c:   4505                MOV.W   R5,R5
    701         asm(" MOV R5,R5");
    00806e:   4505                MOV.W   R5,R5
    702         asm(" MOV R5,R5");
    008070:   4505                MOV.W   R5,R5
    703         asm(" MOV R5,R5");
    008072:   4505                MOV.W   R5,R5
    704         asm(" MOV R5,R5");
    008074:   4505                MOV.W   R5,R5
    705         asm(" MOV R5,R5");
    008076:   4505                MOV.W   R5,R5
    706         asm(" MOV R5,R5");
    008078:   4505                MOV.W   R5,R5
    707         asm(" MOV R5,R5");
    00807a:   4505                MOV.W   R5,R5
    708         asm(" MOV R5,R5");
    00807c:   4505                MOV.W   R5,R5
    710         asm(" MOV R5,R5");
    00807e:   4505                MOV.W   R5,R5
    711         asm(" MOV R5,R5");
    008080:   4505                MOV.W   R5,R5
    712         asm(" MOV R5,R5");
    008082:   4505                MOV.W   R5,R5
    713         asm(" MOV R5,R5");
    008084:   4505                MOV.W   R5,R5
    714         asm(" MOV R5,R5");
    008086:   4505                MOV.W   R5,R5
    715         asm(" MOV R5,R5");
    008088:   4505                MOV.W   R5,R5
    716         asm(" MOV R5,R5");
    00808a:   4505                MOV.W   R5,R5
    717         asm(" MOV R5,R5");
    00808c:   4505                MOV.W   R5,R5
    718         asm(" MOV R5,R5");
    00808e:   4505                MOV.W   R5,R5
    719         asm(" MOV R5,R5");
    008090:   4505                MOV.W   R5,R5
    721         asm(" MOV R5,R5");
    008092:   4505                MOV.W   R5,R5
    722         asm(" MOV R5,R5");
    008094:   4505                MOV.W   R5,R5
    723         asm(" MOV R5,R5");
    008096:   4505                MOV.W   R5,R5
    724         asm(" MOV R5,R5");
    008098:   4505                MOV.W   R5,R5
    725         asm(" MOV R5,R5");
    00809a:   4505                MOV.W   R5,R5
    726         asm(" MOV R5,R5");
    00809c:   4505                MOV.W   R5,R5
    727         asm(" MOV R5,R5");
    00809e:   4505                MOV.W   R5,R5
    728         asm(" MOV R5,R5");
    0080a0:   4505                MOV.W   R5,R5
    729         asm(" MOV R5,R5");
    0080a2:   4505                MOV.W   R5,R5
    730         asm(" MOV R5,R5");
    0080a4:   4505                MOV.W   R5,R5
    732         asm(" MOV R5,R5");
    0080a6:   4505                MOV.W   R5,R5
    733         asm(" MOV R5,R5");
    0080a8:   4505                MOV.W   R5,R5
    734         asm(" MOV R5,R5");
    0080aa:   4505                MOV.W   R5,R5
    735         asm(" MOV R5,R5");
    0080ac:   4505                MOV.W   R5,R5
    736         asm(" MOV R5,R5");
    0080ae:   4505                MOV.W   R5,R5
    737         asm(" MOV R5,R5");
    0080b0:   4505                MOV.W   R5,R5
    738         asm(" MOV R5,R5");
    0080b2:   4505                MOV.W   R5,R5
    739         asm(" MOV R5,R5");
    0080b4:   4505                MOV.W   R5,R5
    740         asm(" MOV R5,R5");
    0080b6:   4505                MOV.W   R5,R5
    741         asm(" MOV R5,R5");
    0080b8:   4505                MOV.W   R5,R5
    743         asm(" MOV R5,R5");
    0080ba:   4505                MOV.W   R5,R5
    744         asm(" MOV R5,R5");
    0080bc:   4505                MOV.W   R5,R5
    745         asm(" MOV R5,R5");
    0080be:   4505                MOV.W   R5,R5
    746         asm(" MOV R5,R5");
    0080c0:   4505                MOV.W   R5,R5
    747         asm(" MOV R5,R5");
    0080c2:   4505                MOV.W   R5,R5
    748         asm(" MOV R5,R5");
    0080c4:   4505                MOV.W   R5,R5
    749         asm(" MOV R5,R5");
    0080c6:   4505                MOV.W   R5,R5
    750         asm(" MOV R5,R5");
    0080c8:   4505                MOV.W   R5,R5
    751         asm(" MOV R5,R5");
    0080ca:   4505                MOV.W   R5,R5
    752         asm(" MOV R5,R5");
    0080cc:   4505                MOV.W   R5,R5
    754         P1OUT &= ~LED;
    0080ce:   F0F2 00EF 0202      AND.B   #0x00ef,&PA_PAOUT
    756         asm(" MOV R5,R5");
    0080d4:   4505                MOV.W   R5,R5
    757         asm(" MOV R5,R5");
    0080d6:   4505                MOV.W   R5,R5
    758         asm(" MOV R5,R5");
    0080d8:   4505                MOV.W   R5,R5
    759         asm(" MOV R5,R5");
    0080da:   4505                MOV.W   R5,R5
    760         asm(" MOV R5,R5");
    0080dc:   4505                MOV.W   R5,R5
    761         asm(" MOV R5,R5");
    0080de:   4505                MOV.W   R5,R5
    762         asm(" MOV R5,R5");
    0080e0:   4505                MOV.W   R5,R5
    763         asm(" MOV R5,R5");
    0080e2:   4505                MOV.W   R5,R5
    764         asm(" MOV R5,R5");
    0080e4:   4505                MOV.W   R5,R5
    765         asm(" MOV R5,R5");
    0080e6:   4505                MOV.W   R5,R5
    767     }
    0080e8:   0110                RETA    

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

    将汇编器与 NOP (0x0343)配合使用,并从 RAM 中运行它(不带 FET 的独立目标设备)。

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

    我按照你的建议将 MOV 指令更改为 NOP (尽管我们知道 NOP 是被模仿的)。

    此外,我在独立模式下运行设备,但没有连接仿真器。

    但是,该代码仍在 FRAM 中运行。

    时间完全相同。

    这可能是问题的根源(从 FRAM 运行代码)。 现在,以1.25Mhz 运行,我 本来不会期待这是一个问题,因为我的 MCLK 速度远远低于 FRAM 的访问速度(8 MHz?)。

    这是否是使用此类内存技术的未记录的速度惩罚?

    谢谢

    641         P1OUT |= LED;
            Pulse():
    008000:   D0F2 0010 0202      BIS.B   #0x0010,&PA_PAOUT
    757         _nop();
    008006:   4303                NOP     
    758         _nop();
    008008:   4303                NOP     
    759         _nop();
    00800a:   4303                NOP     
    760         _nop();
    00800c:   4303                NOP     
    761         _nop();
    00800e:   4303                NOP     
    762         _nop();
    008010:   4303                NOP     
    763         _nop();
    008012:   4303                NOP     
    764         _nop();
    008014:   4303                NOP     
    765         _nop();
    008016:   4303                NOP     
    766         _nop();
    008018:   4303                NOP     
    768         _nop();
    00801a:   4303                NOP     
    769         _nop();
    00801c:   4303                NOP     
    770         _nop();
    00801e:   4303                NOP     
    771         _nop();
    008020:   4303                NOP     
    772         _nop();
    008022:   4303                NOP     
    773         _nop();
    008024:   4303                NOP     
    774         _nop();
    008026:   4303                NOP     
    775         _nop();
    008028:   4303                NOP     
    776         _nop();
    00802a:   4303                NOP     
    777         _nop();
    00802c:   4303                NOP     
    779         _nop();
    00802e:   4303                NOP     
    780         _nop();
    008030:   4303                NOP     
    781         _nop();
    008032:   4303                NOP     
    782         _nop();
    008034:   4303                NOP     
    783         _nop();
    008036:   4303                NOP     
    784         _nop();
    008038:   4303                NOP     
    785         _nop();
    00803a:   4303                NOP     
    786         _nop();
    00803c:   4303                NOP     
    787         _nop();
    00803e:   4303                NOP     
    788         _nop();
    008040:   4303                NOP     
    790         _nop();
    008042:   4303                NOP     
    791         _nop();
    008044:   4303                NOP     
    792         _nop();
    008046:   4303                NOP     
    793         _nop();
    008048:   4303                NOP     
    794         _nop();
    00804a:   4303                NOP     
    795         _nop();
    00804c:   4303                NOP     
    796         _nop();
    00804e:   4303                NOP     
    797         _nop();
    008050:   4303                NOP     
    798         _nop();
    008052:   4303                NOP     
    799         _nop();
    008054:   4303                NOP     
    801         _nop();
    008056:   4303                NOP     
    802         _nop();
    008058:   4303                NOP     
    803         _nop();
    00805a:   4303                NOP     
    804         _nop();
    00805c:   4303                NOP     
    805         _nop();
    00805e:   4303                NOP     
    806         _nop();
    008060:   4303                NOP     
    807         _nop();
    008062:   4303                NOP     
    808         _nop();
    008064:   4303                NOP     
    809         _nop();
    008066:   4303                NOP     
    810         _nop();
    008068:   4303                NOP     
    812         _nop();
    00806a:   4303                NOP     
    813         _nop();
    00806c:   4303                NOP     
    814         _nop();
    00806e:   4303                NOP     
    815         _nop();
    008070:   4303                NOP     
    816         _nop();
    008072:   4303                NOP     
    817         _nop();
    008074:   4303                NOP     
    818         _nop();
    008076:   4303                NOP     
    819         _nop();
    008078:   4303                NOP     
    820         _nop();
    00807a:   4303                NOP     
    821         _nop();
    00807c:   4303                NOP     
    823         _nop();
    00807e:   4303                NOP     
    824         _nop();
    008080:   4303                NOP     
    825         _nop();
    008082:   4303                NOP     
    826         _nop();
    008084:   4303                NOP     
    827         _nop();
    008086:   4303                NOP     
    828         _nop();
    008088:   4303                NOP     
    829         _nop();
    00808a:   4303                NOP     
    830         _nop();
    00808c:   4303                NOP     
    831         _nop();
    00808e:   4303                NOP     
    832         _nop();
    008090:   4303                NOP     
    834         _nop();
    008092:   4303                NOP     
    835         _nop();
    008094:   4303                NOP     
    836         _nop();
    008096:   4303                NOP     
    837         _nop();
    008098:   4303                NOP     
    838         _nop();
    00809a:   4303                NOP     
    839         _nop();
    00809c:   4303                NOP     
    840         _nop();
    00809e:   4303                NOP     
    841         _nop();
    0080a0:   4303                NOP     
    842         _nop();
    0080a2:   4303                NOP     
    843         _nop();
    0080a4:   4303                NOP     
    845         _nop();
    0080a6:   4303                NOP     
    846         _nop();
    0080a8:   4303                NOP     
    847         _nop();
    0080aa:   4303                NOP     
    848         _nop();
    0080ac:   4303                NOP     
    849         _nop();
    0080ae:   4303                NOP     
    850         _nop();
    0080b0:   4303                NOP     
    851         _nop();
    0080b2:   4303                NOP     
    852         _nop();
    0080b4:   4303                NOP     
    853         _nop();
    0080b6:   4303                NOP     
    854         _nop();
    0080b8:   4303                NOP     
    856         _nop();
    0080ba:   4303                NOP     
    857         _nop();
    0080bc:   4303                NOP     
    858         _nop();
    0080be:   4303                NOP     
    859         _nop();
    0080c0:   4303                NOP     
    860         _nop();
    0080c2:   4303                NOP     
    861         _nop();
    0080c4:   4303                NOP     
    862         _nop();
    0080c6:   4303                NOP     
    863         _nop();
    0080c8:   4303                NOP     
    864         _nop();
    0080ca:   4303                NOP     
    865         _nop();
    0080cc:   4303                NOP     
    867         P1OUT &= ~LED;
    0080ce:   F0F2 00EF 0202      AND.B   #0x00ef,&PA_PAOUT
    869         _nop();
    0080d4:   4303                NOP     
    870         _nop();
    0080d6:   4303                NOP     
    871         _nop();
    0080d8:   4303                NOP     
    872         _nop();
    0080da:   4303                NOP     
    873         _nop();
    0080dc:   4303                NOP     
    874         _nop();
    0080de:   4303                NOP     
    875         _nop();
    0080e0:   4303                NOP     
    876         _nop();
    0080e2:   4303                NOP     
    877         _nop();
    0080e4:   4303                NOP     
    878         _nop();
    0080e6:   4303                NOP     
    880     }
    0080e8:   0110                RETA    

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

    FRAM 缓存始终处于启用状态。 高速缓存行是四个字(64位),因此,在这样的代码中,四个指令提取中有三个来自高速缓存。

    重置时的默认设置是 FRAM 访问没有等待状态,因此从高速缓存中获取不应有任何好处。 除了避免 FRAM 读/写周期外。