打印
[XMC™]

XMC输出低频率PWM

[复制链接]
242|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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 | 只看该作者
这个与芯片时钟有关系,与分出的外设模块时钟没关系还真第一次听说

使用特权

评论回复
5
Charlotte夏| | 2023-12-26 17:37 | 只看该作者
这就是需要看时钟树了是吧

使用特权

评论回复
6
Alina艾| | 2023-12-26 18:30 | 只看该作者
一般芯片是不是可以看参数配置啊,直接就能改PWM了

使用特权

评论回复
7
Betty1299| | 2023-12-26 19:42 | 只看该作者
对了,这芯片是不是有可视化配置的软件啊?

使用特权

评论回复
8
Estelle1999| | 2023-12-26 21:17 | 只看该作者
原来这么配置PWM就可以了啊,挺好,看着还比较简单

使用特权

评论回复
9
Candic12e| | 2023-12-27 09:07 | 只看该作者
为啥要满足:PWM周期 < ((1/定时器频率) * 65536)?

使用特权

评论回复
10
Emily999| | 2023-12-27 10:20 | 只看该作者
其实官方要是把手册写全一些,详细一些,真的很方便,感谢FAE分享

使用特权

评论回复
11
Annie556| | 2023-12-27 13:50 | 只看该作者
降低频率就能实现PWM降低,这是对的逻辑

使用特权

评论回复
12
zwsam| | 2024-1-8 13:03 | 只看该作者

使用特权

评论回复
13
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。
配置配置:


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

31

帖子

2

粉丝