pwm占空比计算公式

   PWM意为脉冲宽度调制,可用于调整输出直流平均电压,对于矩形波而言,输出平均压等于峰值电压×占空比,占空比是一个脉冲周期内高电平时间与周期的比值,例如,峰值电压等于5V,占空比等于50%的方波信号平均电压等于2.5V,也就是万用表直流档测量得到的电压值,8位PWM模式结构如图8-6所示, PWM输出不需要使用中断。 

通过程序设定寄存器PCA_PWMn(n=0,1,2,下同)中的位EBSn_1及EBSn_0,使其工作于8位PWM或7位PWM或6位PWM模式,当[EBSn_1,EBSn_0]=[0,0](默认值)或[1,1]时,PCA模块n工作于8位PWM模式,此时将{0,CL[7:0]}与[EPCnL,CCAPnL[7:0]]进行比较,当{0,CL[7:0]}中的值小于{EPCnL,CCAPnL[7:0]}时,输出为低,当{0,CL[7:0]}中的值等于或大于{EPCnL,CCAPnL[7:0]}时,输出为高,当EPCnL=0且CCAPnL=00H时,PWM固定输出高,当EPCnL=1且CCAPnL=FFH 时,PWM固定输出低。当CL的值由FF变为00溢出时,{EPCnH,CCAPnH[7:0]}的内容自动装载到{EPCnL,CCAPnL[7:0]}中,这样可实现无干扰地更新PWM占空比,要使能PWM模式,模块CCAPMn寄存器的ECOMn和PWMn位必须置位。

PCA时钟输入源可以从以下8种中选择一种:SYSclk/12、SYSclk /8、SYSclk/6、SYSclk /4、SYSclk /2、SYSclk、定时器0的溢出、ECI/P1.2输入,PWM输出占空比由{EPCnL,CCAPnL[7:0]}确定。

8位PWM的周期 = 计数脉冲周期×256                            

8位PWM的频率 = 计数脉冲频率/256

8位PWM的脉宽时间(高电平时间)= 计数脉冲周期×(256-CCAPnL)

8位PWM的占空比 = 脉宽时间/PWM周期 = (1- CCAPnL/256) ×100%

如果要实现给定频率的PWM输出,可选择定时器0的溢出或者ECI(P1.2)脚的输入作为PCA的时钟输入源。所有PCA模块都可用作PWM输出,由于所有模块共用PCA定时器,所以它们的输出频率相同,各个模块的输出占空比是独立变化的,当某个I/O 口作为PWM使用时,该口的状态如表8-9所示。

表8-9 I/O口作为PWM使用时的状态

PWM之前的状态

PWM输出时的状态

弱上拉/准双向口 强推挽输出/强上拉输出,要加输出限流电阻1KΩ-10KΩ

强推挽输出/强上拉输出 强推挽输出/强上拉输出,要加输出限流电阻1KΩ-10KΩ

仅为输入/高阻 PWM无效

开漏 开漏