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.

[参考译文] msp430fw423:在ScanIF中更改TSM起始期间

Guru**** 2589300 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/631279/msp430fw423-changing-tsm-starting-period-in-scanif

部件号:MSP430FW423

您好,

此问题与ScanIF有关。

我需要更改启动TSM的时间。
我是通过重新编程 ACLK时钟的分频器(在SIFCTL4.SIFDIV3A / 3B中)来完成此操作的。
不幸的是,我观察到从SIFDIV3_162 | SIFDIV2_2切换到SIFDIV3_18 | SIFDIV2_2大约需要5毫秒。 这是在TSM的第一个周期之前的延迟,具有新的周期。

是否可以缩短此延迟时间? 取决于什么?

此致,
Piotr

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

    Piotr您好!

    根据 《MSPx4xx用户指南》第902页的规定,当SIFFRP =0时,TSM将根据使用SIFDIV2x位,SIFDIV3Ax和SIFDIV3Bx位选择的分离ACLK启动信号,定期启动和重新启动。 例如,如果SIFDIV3A和SIFDIV3B配置为270 ACLK周期,则TSM将每270 ACLK周期自动启动一次。 当SIFTSMRP−1时,TSM RE μ s会在上一序列结束时立即以SIFTSM0状态启动,即在遇到SIFSTOP = 1的状态后,使用下一个ACLK循环。 SIIFG2中断标志是在TSM启动时设置的。

    SIFDIV3Ax和SIFDIV3Bx位可以在操作过程中随时更新。 更新后,当前TSM序列将继续使用旧设置,直到序列的最后一个状态完成。 新设置将在下一序列开始时生效。

    在MSPx4xx用户指南的第933页上,您将找到一个表格,其中列出了ACLK周期中可能出现的延迟,范围从2个周期到450个周期不等。

    这是否合理?

    此致,

    詹姆斯

    MSP客户应用程序

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

    感谢您的回复。 问题与此不同。
    在我的程序中,我需要两种操作模式:
    a)"硬膜"模式-慢采样(10ms),主要用于我的设备工作,
    b)"快速"模式-(300us),很少使用。
    我对这两个期间的寄存器设置没有问题。
    问题是我从一种模式切换到另一种模式。 我观察到那里的长时间延迟(大约5毫秒),这破坏了我的时间限制。
    因此,我想了解这种拖延的原因是什么,以及我如何能够尽量减少这种拖延。

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

    这里有同样的问题!

    我需要使用TCI方法执行SacnIF的自动校准。 为此,我将SIF的频率从50Hz提高到1000Hz。 所以开始时我每20毫秒有TSM循环。 然后, 设置SIIFG3中断标志并触发中断后,我立即设置新的频率。 但是,下一个周期在10毫秒后触发,然后每隔1毫秒触发其余周期。

    看起来ScanIF在周期期间处于休眠状态,但每半个周期唤醒一次以检查测试周期(也会在周期中间注入)。 在这一点上,它切换频率。 遗憾的是,当频率改变时,我无法缩短半周期停滞时间。

    此致。

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

    您是否在代码中设置了SIFTSMRP =1? 在遇到SIFSTOP =1的最后一个状态后,这将立即在SIFTSM0状态下重新启动TSM。 但是,TSM在下一个ACLK周期重新启动,这会导致较小的延迟(~1/3.2768万Hz),但会比您正在观察的5毫秒少得多。

    如果要测量带停止位的SIFFMx状态和TSM开始之间的延迟,请查看SIIFG1中断标志(TSM stops)和SIIFG2 (TSM starts)之间的时间。

    此致,

    詹姆斯

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

    在我的应用程序中,SIFCTL5.SIFTSMRP =0,因为我需要定期测量。 频率I通过设置SIFCTL4来控制:
    1)在'硬化模式'中,它等于SIFDIV3_162 | SIFDIV2_2,
    2)在'快速模式'中,我将其更改为SIFDIV3_18 | SIFDIV2_2。

    当我需要切换到'FAST模式'时,我等待SIIFG1中断(TSM停止),我重置它并将SIFCTL4更改为[2]。

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

    这是有道理的。 请记住,SIFDIV3Ax和SIFDIV3Bx位可以在操作期间随时更新。 更新后,当前TSM序列将继续使用旧设置,直到序列的最后一个状态完成。 新设置将在下一序列开始时生效。

    在代码中,当您要从常规模式切换到快速模式时,也许可以在最后一个常规模式序列中更改SIFDIV3Ax/Bx位。 当您要切换回常规模式时,对快速模式执行相同的操作。 现在,用户指南未指定SIFDIV2位可以在操作期间更改,但由于它们不需要更改,因此应该可以更改。

    5毫秒延迟是重置TSM和更改SIFCTL4所花费的时间最重要的。

    此致,

    詹姆斯

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

    [报价用户="James Evans"]Hello Piotr,

    这是有道理的。 请记住,SIFDIV3Ax和SIFDIV3Bx位可以在操作期间随时更新。 更新后,当前TSM序列将继续使用旧设置,直到序列的最后一个状态完成。 新设置将在下一序列开始时生效。

    [/引述]

    您好,James:

    我在TSM停止后更改SIFDIV3xx,即执行最后一个命令并生成中断。 我不明白为何这些登记册的更新不能即时生效。

    此致,
    Piotr