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.

[参考译文] CCS/processor-SDK-OMAPL137:无法使用OMAPL137的SYS/BIOS将计时器配置为计数器

Guru**** 2595800 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/619306/ccs-processor-sdk-omapl137-unable-to-configure-timer-as-counter-using-sys-bios-for-omapl137

部件号:processor-SDK-OMAPL137
“Thread:SysBIOS”中讨论的其它部件

工具/软件:Code Composer Studio

您好,

我正在尝试使用SYS/BIOS .cfg文件将计时器配置为计数器。 我已将以下内容添加到.cfg文件中

var ti_SysBIOS_timers_timer64_Timer0Params = new ti_SysBIOS_timers_timer64_Timer.Params();
ti_sysbios_timers_timer64_Timer0Params.instance.name ="ti_SysBIOS_TIMERS_TIMER64_Timer0";
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.emuMgtInit.soft =假;
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.xesType = XDC.MODULE ("ti.sysbios.interfaces.ITimer").PeriodType_COUNTS;
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.extFreq.lo = 0;
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.period = 2000;
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.startMode = XDC.module ("ti.sysbios.interfaces.ITimer").StartMode_USER;
TI_SysBIOS_TIMERS_TIMER64_Timer0Params.Half = ti_SysBIOS_TIMERS_TIMER64_Timer.Half_LOW;
program.global_ti_SysBIOS_timers_timer64_Timer0 = ti_SysBIOS_timers_timer64_Timer.create (1,空,ti_SysBIOS_timers_timer64_Timer0Params);

如果我们使用Timer_getCount API获取计时器的计数器值,但下次计数器值不从零开始,而是从我的期间值开始。

如何将计时器配置为计数器,以及如何从计数器值计算频率?

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

    你好,Gangadhar,

    如果要使用Timer64作为计数器,可以使用"ti.SysBIOS.timers.timer64.TimestampProvider"模块。 TimestampProvider模块使用timer64进行时间戳。 它提供了一个用于获取32位或64位时间戳的API,还具有一个返回计时器频率的API。

    以下是使用此时间戳模块需要添加到配置中的内容:

    *.cfg:
    
    VAR TimestampProvider = xdc.useModule("ti.sysbios.timers.timer64.TimestampProvider");
    TimestampProvider.useClockTimer = FALSE;//使用timer64而不是时钟进行时间戳 

    注意:如果读取64位时间戳,请确保在时间戳计数器溢出之前至少读取一次时间戳。 否则,不会更新上面的32位。

    下面是此模块的CDOC链接。 它列出了所有支持的API:

    software-dl.ti.com/.../TimestampProvider.html

    最佳,

    Ashish

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

    感谢Ashish的回复。

    TimestampProvider_get32()或TimestampProvider_get64()函数将返回32位或64位时间戳值。 要将时间戳值转换为频率,我们需要使用TimestampProvider_getFreq()。 我在这里不理解我们如何将时间戳计算为频率。 将时间戳转换为频率的公式是什么?

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

    你好,Gangadhar,

    我不了解您的频率测量需求。 您能详细说明一下吗?

    TimestampProvider_get32()/get64()和TimestampProvider_getFreq()可用于将时间戳计数转换为时间单位(计数/频率)。

    最佳,

    Ashish

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

    如何使用TimestampProvider_getFreq()将时间戳计数转换为时间单位,表示从TimestampProvider_get32()/get64()获得的值只是时间戳值,而不是freq权限。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gangadhar,

    考虑以下代码

    Types_FreqHz频率;

    timestamp_getFreq (&freq);

    我们没有任何设备具有非零freq.hi。 假设freq.lo是4800万 (48MHz)。 这意味着Timestamp_get32和get64计数每秒增加48MHz。

    托德