器件型号: CC2745R10-Q1
TI 团队大家好、
在为 UDS 实施计时器时、我们面临一些挑战。
CC2745 器件提供 4 个 LGPT 计时器、但我们的 UDS 实现方案需要 6 个独立的计时器并行运行以用于各自的任务。
您能否指导我们如何使用可用的计时器来实现此要求?
谢谢、此致
Ratan D.
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.
器件型号: CC2745R10-Q1
TI 团队大家好、
在为 UDS 实施计时器时、我们面临一些挑战。
CC2745 器件提供 4 个 LGPT 计时器、但我们的 UDS 实现方案需要 6 个独立的计时器并行运行以用于各自的任务。
您能否指导我们如何使用可用的计时器来实现此要求?
谢谢、此致
Ratan D.
您好 Ratan、
对延迟的回复表示歉意。 请问您使用 6 个并行运行的独立计时器的用例是什么? 我们通常建议使用事件、因为运行 6 个独立的计时器并不是很理想、因为我们所有的时间驱动器都有不同的行为。 话虽如此、但还有额外的计时器可供使用: RTC 时钟 和 ClockP 模块、 它 基于 SYSTIM。 您可以查看这些选项、看看它是否满足您的需求。
需要注意的一点是、所有这些驱动程序都不相同、即使是 4 个 LGPT 计时器也有不同的行为、因此、如果您并行运行它们、则必须考虑不同的情况。 我附上了以下 TRM、该 TRM 将提供有关可用计时器及其行为的更多信息:CC27xx 技术参考手册(修订版 A)。
谢谢您、
Eshaan
尊敬的 Eshaan:
我们不希望使用 4 个 LGPT 计时器。 由于单个计时器有 3 个通道、因此我们希望所有三个通道都应该独立工作、并且每个通道都应有自己的回调。
例如:
每个通道应根据其自己配置的周期运行、但我们无法实现该行为。
您能否建议一种方法、让所有三个通道独立工作并使用单独的回调?
如果这样有效、我们只需使用两个计时器即可满足我们的要求。
谢谢、此致
Ratan Dalei
尊敬的 Eshaan:
问题仍未解决、我们正在等待您的支持。 之前、您在第 12 章中提到了使用 LGPT 计时器、但我们使用您的 SDK、不直接访问 MCU 寄存器。 由于我们正在使用您的 SDK、而不直接访问 MCU 寄存器、请指导我们如何使用 TI 库进行配置?
我注意到单个 LGPT 计时器有三个通道、我想使用具有不同时间值的所有三个通道、以便可以使用一个 LGPT 计时器实现三个单独的时序和回调。
我不知道这是否可行、但我期望它应该是。 请确认或提供更好的建议、以实现相同的结果。
谢谢。此致。
Ratan D.
您好 Ratan、
下面的代码片段显示了如何初始化单个通道。 如果所有三个通道都遵循类似的结构、则应能够根据需要对其进行配置。 以下链接可将您转至我们的用户指南、您可在其中找到 TI 驱动程序 API 参考。 在“ LGPTimerLPF3.h 文件参考“ 一节提供了有关 LGPTimer 模块及其配置方法的更多信息。 谢谢。
void* taskFxn(void* arg) {
LGPTimerLPF3_Handle lgptHandle;
LGPTimerLPF3_Params params;
uint32_t cntTargetVal = 1500/2;
uint32_t chCompVal = cntTargetVal/2;
// Configure channel 2 action
LGPTimerLPF3_Params_init(¶ms);
params.channelProperty[2].action = LGPTimerLPF3_CH_TOGGLE_ON_COMPARE_PERIODIC;
// Open driver
lgptHandle = LGPTimerLPF3_open(0, ¶ms);
// Set channel output signal period
LGPTimerLPF3_setInitialCounterTarget(lgptHandle, cntTargetVal, false);
// Set channel output signal duty cycle
LGPTimerLPF3_setInitialChannelCompVal(lgptHandle, LGPTimerLPF3_CH_NO_2, chCompVal, false);
// Start the LGPTimer in up-down-periodic mode
LGPTimerLPF3_start(lgptHandle, LGPTimerLPF3_CTL_MODE_UPDWN_PER);
// Output signal forever
while(1);
}Eshaan