[XMC™] XMC输出低频率PWM

[复制链接]
1256|12
 楼主| Burnon_FAE_4 发表于 2023-12-14 13:39 | 显示全部楼层 |阅读模式
本帖最后由 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。



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


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。
配置配置:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

122

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部