Burnon_FAE_4 发表于 2023-12-14 13:39

XMC输出低频率PWM

本帖最后由 Burnon_FAE_4 于 2023-12-14 13:40 编辑

项目需要使用XMC输出低频率PWM,然后查看了ccu4_timer_xmc13例程,然后修改使用,发现修改XMC_CCU4_SLICE_SetTimerPeriodMatch函数PWM频率降低不下来,然后阅读手册,上面描述为“PWM信号的周期和占空比的基准总是与定时器自身频率相关,与模块时钟的频率无关。”,然后找到了修改定时器频率的寄存器为CC4yPSC.PSIV,可以对CCU4模块时钟进行分频,降低定时器的频率,只要满足:PWM周期 < ((1/定时器频率) * 65536),那就可以输出想要的PWM频率了。CCU8同理。

Betty996 发表于 2023-12-26 15:25

确实,走例程上的然后修改真的很方便

alxd 发表于 2023-12-26 15:29

这种时钟要是能UI配置一下,也就是一键配置一下就好了

Carmen7 发表于 2023-12-26 16:30

这个与芯片时钟有关系,与分出的外设模块时钟没关系还真第一次听说

Charlotte夏 发表于 2023-12-26 17:37

这就是需要看时钟树了是吧

Alina艾 发表于 2023-12-26 18:30

一般芯片是不是可以看参数配置啊,直接就能改PWM了

Betty1299 发表于 2023-12-26 19:42

对了,这芯片是不是有可视化配置的软件啊?

Estelle1999 发表于 2023-12-26 21:17

原来这么配置PWM就可以了啊,挺好,看着还比较简单

Candic12e 发表于 2023-12-27 09:07

为啥要满足:PWM周期 < ((1/定时器频率) * 65536)?

Emily999 发表于 2023-12-27 10:20

其实官方要是把手册写全一些,详细一些,真的很方便,感谢FAE分享

Annie556 发表于 2023-12-27 13:50

降低频率就能实现PWM降低,这是对的逻辑

zwsam 发表于 2024-1-8 13:03

IFX_Lingling 发表于 2024-1-8 16:13

本帖最后由 IFX_Lingling 于 2024-1-8 16:15 编辑

这个PWM的问题可以下载Infineon的开发工具Modus Toolbox,这个tool可以有图形界面看时钟的配置:
从这个图可以看出路由给CCU8的时钟是64Mhz。



__STATIC_INLINE void XMC_CCU4_SLICE_SetTimerPeriodMatch(XMC_CCU4_SLICE_t *const slice, const uint16_t period_val)
{
XMC_ASSERT("XMC_CCU4_SLICE_SetTimerPeriodMatch:Invalid Slice Pointer", XMC_CCU4_IsValidSlice(slice));
slice->PRS = (uint32_t) period_val;
}
这个函数是设置周期:


XMC_CCU8_SLICE_SetTimerPeriodMatch(SYMMETRIC_PWM_SLICE_HW, 10000U);
比如我CCU8的时钟是64M,分频64,那么我给PWM的clock是1M,周期为10000的话,配置成Edge Aligned的模式话,PWM的周期是10ms((1/1M)*10K )。
如果通过API:XMC_CCU8_SLICE_SetTimerPeriodMatch(SYMMETRIC_PWM_SLICE_HW, 7000U);那么PWM的周期会被更改掉。但是输入时钟还是1M。
配置配置:


页: [1]
查看完整版本: XMC输出低频率PWM