【CW32L052测评】之PWM功能测评
<p>生成PWM波的话,根据芯片手册的描述,GTIM跟ATIM都有硬件生产PWM波的功能,但是ATIM明显功能更为强大,还能生成互补PWM这种特殊PWM波。互补PWM带死区插入的话,是常用于电机控制的一种PWM控制方式。接触了电机控制也有好些年头,那就用ATIM来试试基本的带死区的互补PWM输出吧。</p><p >按照惯例,还是从例程入手,找到了一个应该是互补输出的PWM例程。</p>
<p > </p>
<p >打开看了一段时间,大概看出了有配置互补的两个PWM信号,但是配置项的具体作用不是很清楚。对于ATIM这种复杂一些的外设,因为配置项较多,建议是在代码中直接加入一些中午注释,有助于用户理解。毕竟要是每一项都是去看芯片手册,去看具体寄存器,还是要花不少精力。</p>
<p >因为代码注释较少,我参考了一下文档:</p>
<p > </p>
<p >一开始还很奇怪互补PWM跟LED灯有啥关系,然后查了一遍代码,并没有使用到PB14这个引脚,说明这个文档还是存在一些错误。建议原厂核查改正。</p>
<p >基于例程,简化了一下代码,把printf功能给去掉了。然后编译后烧入板子。</p>
<p >由于我自己手上是没有示波器的,所以只能用逻辑分析仪来替代一下测量波形,但可能精度不是特别的准,微小的偏差就当略掉。</p>
<p > </p>
<p >由上图可以看到PWM的周期是99.83us,略去精度误差,是符合我们设置的100us周期的。而且两个PWM波的高电平之间也存在死区。</p>
<p >我们再根据死区芯片手册计算一下死区时间</p>
<p > </p>
<p >由上面可以,计算这个死区时间需要两个量,一个是DTR数值,一个是ATIM的步长时间。</p>
<p > </p>
<p >由代码设置及DTR寄存器值,可知道步长为1us,DTR为1,则死区时间为(1+2)*1us = 3us。然后我们再测一下时间波形</p>
<p > </p>
<p >测量的死区时间就是3us,符合预期。</p>
<p >至此,PWM的带死区互补输出测评完成。</p>
<p>看来CW32L052的PWM功能也是很强的,使用起来不复杂</p>
火辣西米秀 发表于 2023-7-31 07:31
看来CW32L052的PWM功能也是很强的,使用起来不复杂
<p>用起来还可以。不过高级定时器本身配置比较多,如果要精通这个模块的话,还是有些难度的</p><br/>
页:
[1]