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:指令周期执行问题

Guru**** 2534260 points
Other Parts Discussed in Thread: MSP-EXP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/578683/msp430fr5969-instruction-cycle-execution-question

部件号:MSP430FR5969
主题中讨论的其他部件:MSP-EXP430FR5969

环境:用于MSP430的IAR (完整版本)- Launchpad MSP-EXP430FR5969上的调试代码

硬件配置:DCO =16MHz,FRAM上的0等待状态(也实验了将其更改为无效果)

简单任务:尽可能快地切换GPIO引脚

来自IAR的发射汇编器:

??tleReadFactory_0:
XOR.B #0x80,&0x202
jmp»tleReadFactory_0

这需要8个指令周期- 5个用于XOR,3个用于JMP -通过EEM上的循环计数器进行验证

当我用示波器查看引脚时,引脚每1秒切换一次-正好是(1/16MHz)*8=500usec预期间隔的两倍

这不是FRAM等待状态,因为我尝试更改它们,这证实我可能在100 % 处理缓存命中,这是有意义的,因为它只是一个小循环

已通过SMCLK使用2个预分页并输出到一个引脚来验证DCO。更改DCO会按预期更改间隔,并使系数为2。

寻找其他地方寻找正时泄漏的想法。 嵌入式仿真是否会增加如此多的开销?

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

    您好,Edwin:

    首先,如果您的SMCLK或MCLK高于8 MHz,我强烈建议您使用等待状态,如数据表中的表5.3 所述。 也许,您将16 MHz DCO除以2,这将使SMCLK或MCLK等于8 MHz,这可能是等待状态不会改变任何内容的原因。 您能否确认是否是这种情况?

    此外,MSP430FR5xx/6xx器件还具有硬件周期计数器。 但是,由于在调试控制下从/返回设备进行释放/回收,测量的周期可能会略微关闭。 这在 使用Code Composer Studio版本6的增强仿真模块(EEM)高级调试 应用手册的第8页中有所提及。

    如果您不知道这一点,FRAM访问只受8 MHz访问限制的约束。 使用等待状态和16 MHz等更高频率的系统时钟可以提高性能。 但是,16 MHz系统时钟频率不会导致FRAM写入速度达到两倍(不是按比例增加)。 这是因为对RAM的访问和高速缓存中的指令提取的执行速度更快。 有关利用DMA和提高系统时钟频率等策略, 请参阅MSP430TmFRAM 应用手册上的“最大写入速度”。

    最后,如果您的应用需要PWM输出,请检查Timer_A和Timer_B模块的PWM模式。 这些模式不需要CPU干预。 请参阅 《用户指南》中的19.1 部分。

    此致,

    詹姆斯

    MSP客户应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要尽可能快地切换引脚,请使用计时器或配置引脚以输出时钟信号。

    不管怎样,当您将两个XORs放入循环中时,输出结果是怎样的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我知道对16MHz时DCO的等待状态要求,但现在这不是问题,我不在生产中,所以它在列表中。

    我使用以下命令配置SMCLK和MCLK:
    cs_initClockSignal( CS_SMCLK,CS_DCOCLK_SELECT,CS_Clock_diver_2 );
    cs_initClockSignal( CS_MCLK, CS_DCOCLK_SELECT, CS_CLock_DICALANCE_2 );

    现在我看到了发生了什么。 不知道MCLK是如何在那里创造的。 感谢您的帮助!

    我会接受这个答复。 干杯! ED
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    显然,硬件计时器是快速调整GPIO的方法。 我正在找一个实施I2C (非兼容设备)的软件,想了解可能的比特率。 那是我看到时间不匹配的时候(请参阅上面的原因)。 不管怎样,软件似乎会太慢。

    但我出于好奇运行了双XOR,得到两条边线所需的时间更短,而且它不再对称(因为JMP时间)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我更改了等待状态和MCLK除数,它的性能完全符合要求。 让其他人检查您的代码的一个目标课程- MCLK配置是对我从中进行编码的保留。 感谢大家的帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常棒! 感谢您告知我们问题已解决,并将线程标记为"已回答"。

    此致,

    詹姆斯

    MSP客户应用程序