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.

[参考译文] LAUNCHXL-CC3235S:用于为 CC3235递增计数的计时器?

Guru**** 2482925 points
Other Parts Discussed in Thread: CC3235S, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1282408/launchxl-cc3235s-timer-for-counting-up-for-cc3235

器件型号:LAUNCHXL-CC3235S
主题中讨论的其他器件:CC3235SSysConfig

您好!

我正在将程序从 MSP432P401R 转换为 CC3235S/SF 器件。 在432程序中、我能够创建一个带有预分频器的32位定时器、我可以对其进行数学计算以将计数转换为一微秒级的值。 然后、我会将该值放在 UDP 数据包中、并与从传感器收集的样本一起传输。 具体思路是、我需要附加一个从开始收集数据到发送数据包的时长的微秒时间戳。

我想知道、在这里、我的最佳方法是什么?  我看到的唯一针对3235的计时器示例是已计时。 从这个示例中、我了解如何设置参数结构并在 FREE_RUN 模式下启动计时器、但即使我在 SysConfig 中将计时器设置为32位、它也始终充当倒计时16位计时器、具有一些未知频率。

以下是我的问题:

1.) 我在 SysConfig 中看到的计时器 Timer1、Timer2、Timer3和 Timer4之间有何差异?

2.) 为什么即使我将其设置为32位计时器、计时器也会从2^16递减到0?

3.) 如何设置计时器进行计数?

4.) 如何设置定时器上的预分频器值?

下面的屏幕截图显示了我正在使用432程序启动计时器时的各种功能。 我还将附加 我修改的 timerled 文件,以尝试和测试。 我还通过添加另一个名为 CONFIG_TIMER_1的计时器修改了 SysConfig、但出于某种原因、.syscfg 文件目前无法附加。

谢谢。

Grege2e.ti.com/.../timerled.c

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

    忘记连接432函数。 在这里。

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

    您好 Gregory、

    感谢您的意见、我明天会继续跟进。

    此致、

    罗格利奥

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

    您好,Rogelio。 感谢您的回复、

    有任何更新?

    谢谢

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

    您好、Gregory、

    很抱歉耽误您的时间、我同意、针对您要尝试实现的用例、使用 CC32xx 的计时器驱动程序是最佳方法。

    https://www.ti.com/lit/ug/swru543a/swru543a.pdf

    为了能够使用32位计时器、您需要 连接 Timer A 和 B、但当您选择32作为值时、应通过 SysConfig 自动完成该操作。

    还包括驱动程序文档、其中说明了计时器 TIDRIVE 如何与 CC32xx 计时器文件进行交互。

    此致、

    罗格利奥

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

    嘿、Rogelio、

    不用担心! 感谢您的答复。

    我目前正在测试给定的一些信息。 出于某种原因、  即使选择32位、SysConfig 似乎也不会正确连接 Timer A 和 B。 我意识到初始化计时器后周期的默认值是(uint16_t)~0、因此我将计时器设置更改为如下设置、将周期设为最大 uint32_t、现在由于某种原因、我遇到了溢出问题。

    不确定您是否知道如何解决这个问题、或者为什么 SysConfig 可能会这样做。 我尝试了 SysConfig 1.17和1.16版本、结果相同。 在等待您的建议时、我将尝试设置预分频器并进行递增计数。

    谢谢。

    格雷戈

    Timer_Params_init(&params1);
    params1.period        = (uint32_t)~0;
    params1.periodUnits   = Timer_PERIOD_COUNTS;
    params1.timerMode     = Timer_FREE_RUNNING;
    timer1 = Timer_open(CONFIG_TIMER_1, &params1);
    if (timer1 == NULL)
    {
        /* Failed to initialized timer */
        while (1) {}
    }

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

    操作成功! 有了您提供的文档、我就能够获得所需的设置。

    我遇到的溢出问题实际上与我使用的终端打印语句有关。 调试后,我能够看到 Timer_getCount ()确实返回了合适的值向上计数。

    我在文档中看到计时器在80 MHz 下运行。 使用 uint32_t max (4,294,967,295)作为周期设置时、我确认定时器在大约53秒(4,294,967,295/(80*1000000)= 53.6870911875)回滚。 所有这些都使用与上述相同的计时器设置。

    从这里、我应该能够将计时器计数转换为微秒数、并获得与之前相同的结果。

    感谢您的参考、请注意

    格雷戈