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.

[参考译文] 使用 MSPM0G3507时的捕获计时器可确保周期性信号不正确

Guru**** 2526340 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1239978/capture-timer-with-mspm0g3507-messures-periodic-signal-not-correct

器件型号:MSPM0G3507
主题中讨论的其他器件:SysConfig

大家好!

我尝试从"mspm0_SDK_1_00_01_03"修改了示例"timx_timer_mode_capture_duty_and_period"。 我将定时器的引脚更改为引脚1、定时器从 TIMG0更改为 TIMA0、定时器时钟分频器从1更改为8。 因此时钟频率为15.63kHz。
施加到引脚1的信号如下所示:

信号为周期性信号、周期时间约为2.36ms。 电压范围为0V 至3.3V。

我的代码如下所示:

e2e.ti.com/.../7888.main.c

计时器的.sysconfig 文件如下所示:

CAPTURE1.$name                     ="capture_0";
CAPTURE1.captMode                  ="合并";
CAPTURE1.timerClkPrescale          = 256;
CAPTURE1.interrupts                =["cC0_DN"];
CAPTURE1.timerPeriod               ="16ms";
CAPTURE1.timerClkDiv               = 8;
CAPTURE1.peripheral.$ASSIGN        ="TIMA0";
CAPTURE1.peripheral.ccp0PIN.$ASSIGN ="PA0";

我的问题是定时器不能正确测量周期时间。 无论引脚1施加多大的频率、我为变量"pwmPeriod"获得的值始终为1751 (十进制)。

1751*(1/15630)= 11ms/周期 ->应为2.36ms/周期。

寄存器 CC01的值始终为0xF9。

寄存器 CC00的值根据信号的高电平时间发生变化。

有人知道我做错了什么吗?

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

    您好 Johannes:  

    在 SysConfig 中似乎缺少 为计算 pwmPeriod 而引用的 CAPTURE1.ccIndex、如果未更改、则代码可能会参考旧引脚进行计算。

    此致、

    悉尼

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

    您好!

    感谢您的回答。

    我在 .sysconfigfile 中添加了"CAPTURE1.ccIndex = 0;"、但它没有影响...

    此致

    约翰内斯

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

    我还在评估板上再次测试了原体样品程序。 行为完全相同。 在屏幕截图中、您可以看到寄存器 CC00中的值随周期而变化。 但无论应用哪个 PWM、寄存器 CC01都保持不变。

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

    Johannes、您确定您遵守的是正确的注册表吗? 在上面的描述中、您表示配置已更改为 TIMA0、但屏幕截图显示了 TIMG0的寄存器。

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

    你好:)

    是的、我不喜欢。 该屏幕截图是使用带引脚 PA12/5的 TIMG0的原始示例制作的。

    我只是想检查 TIMA0和 TIMG0之间的行为是否发生变化。

    此致

    约翰内斯

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

    您好 Johannes:

    很遗憾、您无法直接向 SysConfig 中添加一行、因为它是自动生成的文件。   您能解释一下将计时器引脚更改为引脚1的意思吗?

    此致、

    悉尼

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

    亲爱的悉尼:

    Johannes 没有手动编辑 SysConfig 文件。 计时器 TIMA0的 cC0输入可在多个引脚上使用、您可以使用 SysConfig 从中进行选择。 此外、似乎所有设置都存在默认值、只有这些设置存储在*。sysconfig 中、这与默认值不同。

    此致、

    托马斯

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

    尊敬的所有人:

    我认为 Johannes 报告的问题可能是定时器外设中的错误。

    • 如果计时器配置为连续运行(在下降/上升沿不重新加载)、则捕捉比较单元的行为符合预期(CC0 =下降沿的计数器值、CC1 =上升沿的计数器值)。
    • 如果计时器配置为在上升沿重新加载、则在 CC1固定设置为重新加载值时、CC0仍会按预期运行。 因此、在重新加载事件的情况下、计时器外设首先重新加载计数器、然后 CC 单元存储该值。

    此致、

    托马斯

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

    大家好!

    我不确定这是否是错误。 我可以尝试重复约翰内斯为测试自己所采取的过程。 由于我没有他所使用的一切的配置、因此我需要 SysConfig 来验证这一点。 请告诉我。

    此致、

    悉尼  

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

    e2e.ti.com/.../TimerCapture.zip

    大家好!

    这是我的主题、所以每个人都可以看到我的代码和.sysconfig 文件。

    我希望你能帮我

    此致、

    约翰内斯

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

    您好 Johannes:  

    很遗憾、尝试打开您的.zip 文件时出现错误。 您可以尝试重新发送它吗? 我已附上我收到的错误。 另外、为了澄清一下、您希望了解计算错误是代码错误还是器件错误、正确吗?

    此致、

    悉尼

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

    e2e.ti.com/.../2604.TimerCapture.zip

    您好!

    这是另一个.zip 文件。 我希望您现在可以打开它。

    是的、我想知道计算错误是代码错误还是器件错误。

    此致、

    约翰内斯

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

    您好、Johannes:  

    这个方法是有效的。 我们现在来看看。

    此致
    曼努埃尔

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

    您好!

    我对您的代码以及提供的示例代码进行了研究。  
    读取 TIMA 单元的当前配置后、我发现这与参考手册中指定的寄存器设置有偏差。

    下面是由 SysConfig 中的示例代码完成的配置:



    根据技术参考手册中的表23-6、正确的寄存器配置应为:

    TIMA0->COUNTERREGS.CCCTL_01[0]= 0x00021002;
    TIMA0->COUNTERREGS.CCCTL_01[1]= 0x00021001;

    以及一些其他配置更改。


    这对您有帮助吗?
    我将在内部澄清为什么登记册配置存在这种差异。

    此致
    曼努埃尔

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

    Manuel、您好!

    我们将您的解决方案添加到了代码中。 现在 CC01 -寄存器一直为0x0000。

    对占空比的识别仍能正常工作、但遗憾的是、周期时间仍然无法正确识别。

    此致

    约翰内斯

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

    您好 Johannes:

    我们将对此进行更深入的研究、并将在2011年7月星期二之前与您联系。 感谢您的耐心。  

    此致、

    悉尼  

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

    您好 Johannes:

    关于这个信息的文档还未公开、但是如果您下载最新版本的 SDK、1.10、此代码示例包含了这个问题。 我希望这对您有所帮助、当发布此问题时、我会告诉您在哪里可以找到更多有关该问题的信息。  

    此致、

    悉尼

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

    亲爱的悉尼:

    感谢您的回复。 新 SDK 中建议的解决方案符合我们的要求。

    此致、

    托马斯