单片机/MCU论坛
直播中

廖阿朋

9年用户 1369经验值
私信 关注

在TIM模块 (CMU_CLK0) 中使用Fgtm频率,GTM时钟系统为什么总是将Fgtm除以2?

我想在 tiM 模块 (CMU_CLK0) 中使用 Fgtm 频率(在我的情况下为 200Mhz)
根据用户手册,CMU_CLK0 频率取决于以下因子/分频器:
1) GTM_CLS_CLK_CFG (CLS0_CLK_DIV)
2) 全局时钟分频器 (Z/N)
3) 时钟源 0 分频器 (CMU_CLK0_CTRL)

我将 GTM_CLS_CLK_CLK_CFG 寄存器中的 CLS0_CLK_DIV 配置为在没有时钟分频器的情况下启用 (01b)
我将 Z (NUM) 配置为 1,将 N (DEN) 配置为 1(如用户手册中所述,NUM 写了两次)
我在 CMU_CLK0_CTRL 中将 CNT 配置为 0

我生成了一个具有 500Hz 和 50 占空比的 PWM 信号(使用 mcUnode 进行测试)然后将其连接到 TIM 通道,计算结果显示 PWM 信号的频率为 1Khz,这意味着如果我除以 100Mhz 我会得到正确的值,所以 TIM 频率是 100Mhz 而不是 200Mhz

笔记:
1) Fgtm 正确配置为 200Mhz,GTM 分频器为 1 (2* Fspb),SPB 分频器为 3,系统频率为 300Mhz,在所有相关寄存器 (ccuCons) 和 Lauterbach(有一项功能可以显示所有配置时钟的值)
所以问题不在于 Fgtm
2) TIM 通道配置正确
CNTS_SEL = 0
GPR0_SEL = 3 GPR1_SEL = 3

FLT_EN = 0(不需要过滤器)
CLK_SEL = 0 (CMU_CLK0)
OSM = 0(连续 模式 )

TIM_MODE = 0(PWM 测量 模式 )

DSL = 1(上升边缘),ISL 是 DSL
当然,该频道是在配置之后启用的

3) 我观察到,如果我将全局分频器 (Z) 设置为 2 或者将 CMU_CLK0_CTRL 中的 CNT 设置为 1,我会得到同样的行为,看起来 GTM 时钟系统总是将 Fgtm 除以 2

你能帮我解决这个问题吗?,这是 Aurix 中的已知错误吗?

回帖(2)

李泽明

2024-1-30 14:08:39
请检查您是否位于正确的集群。 有些人能够提供 200Mhz,有些人能够提供 100Mhz。 TC397 有 12 个 GTM 集群,其中 5 个支持 200MHz,其中 7 个支持 100MHz。
举报

刘高

2024-1-30 17:17:55
GTM时钟系统在使用Fgtm频率时总是将其除以2的原因可能是为了实现更高的时钟分辨率。通过将Fgtm频率除以2,可以使得GTM时钟系统的计数器可以更细粒度地计算时间。这样可以提高PWM信号的精度和稳定性。

在你的配置中,如果Fgtm频率为200MHz,那么配置的CMU_CLK0的频率应为100MHz。根据你的描述,你已经正确地配置了GTM时钟系统和TIM模块,但你没有提到如何测量PWM信号的实际频率和占空比。你可以使用示波器或编程方式来测量输出PWM信号的频率和占空比,以确保配置正确。

如果你仍然遇到问题,建议参考GTM和TIM模块的详细技术文档,或向技术支持寻求帮助。他们可以更好地了解你的具体配置和问题,并提供更准确的指导。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分