回答

收藏

[评测分享] 【RISC-V 沁恒微-CH585M-R1开发板试用体验】5. PWM输出

#板卡评测 #板卡评测 691 人阅读 | 0 人回复 | 2025-06-22

本帖最后由 stm1024 于 2025-6-22 09:47 编辑

今日继续评测一下关于CH585中定时器的部分,这次是PWM输出部分。
先大概看一下PWM部分,除了定时器提供的 4 路 26 位 PWM 输出之外,系统还提供了 8 路 8 位 PWM 输出(PWM4~PWM11)或6 路 16 位 PWM 输出(PWM4~PWM9),占空比可调,PWM 周期固定可选 8 种周期,操作很简单。
在以前8051之类没有PWM专用模块的MCU上,虽然我们可以通过类似上次的评测类似的操作,通过定时器给GPIO翻转,也可以实现PWM功能,但对于有专用PWM外设的MCU,最好的做法还是使用该外设,具有配置、修改简单的优势。
不过,PWM输出针脚不能向定时器翻转GPIO那样随便选择,需要有特定的通道,例如:

因此,在使用时需要注意配置相应的针脚。

直接进入正题,上代码:

重点说说pwm1_config函数,这个函数中,用到了PA10针脚作为PWM1输出通道1,同时,设置了PWM的一些基本参数,例如有效极性,通常我们使用高电位,以及周期,占空比,注意占空比配置的时候,是先乘以30再除以10,这样可以避免进行浮点数运算,当然如果占空比比较特殊非得使用浮点数的话,这个地方就需要注意强制类型转换一下。最后是使能Timer1的PWM,以及使能Timer1外设。
运行后,使用逻辑分析仪抓取一下数据:

可以看到,极性,周期,占空比都是正常的。

如果把代码中第10行修改为TMR1_PWMInit(Low_Level, PWM_Times_1);则逻辑分析仪会显示占空比为70%(因为逻辑分析仪都是将高电位作为极性)。
不过测试把参数中的PWM_Times_1修改为PWM_Times_4,输出并没有发生什么变化,这个参数对PWM输出的影响目前还不明确。至于周期,占空比都好理解。
另外一个问题是,PWM频率最高能拉到多少?
测试了一下T_pwm的值,首先根据手册,这个值必须要大于2:
然后我测试了使用3,发现没有波形,改为4以后,有输出了,不过PWM的占空比和周期都不太稳定了:
结果1

结果2


结果3

可以看到,频率大概在14.28~16.67MHz之间,占空比变为了42%~50%不等。因此对于太高频率的PWM需求就不适用了,好在我们通常使用的PWM都在几百或者几千之间,因此总的来说还是够用的,例如配置为常见的120Hz控制的外设,波形如下:


OK,关于PWM的评测就到这里。
分享到:
回复

使用道具 举报

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

本版积分规则

5300 积分
55 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条