garfield

【原创】飞思卡尔mcf52235脉宽调制模块PWM与D/A转换

0
阅读(3075)

PWM(Pulse Width Modulation)又称脉冲宽度调制模块,是嵌入式应用系统的常用功能之一。它通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形(包括形状和
幅值)。

用一幅图来说明就是,图上是正弦波,理论上来说你可以得到你想要的任何波形(满足面积等效原理)

image

几个概念:


1. PWM的周期与占空比
周期:PWM会产生一个在高电平和低电平之间重复交替的输出信号,这个信号被称为PWM信号,通常定义PWM周期为该PWM信号的周期,一般来说pwm的周期在一段时间内是固定的。
占空比:PWM占空比为信号处于高电平的时间(或时钟周期数)占整个信号周期的百分比
2. PWM的脉冲极性
PWM的脉冲极性指的是PWM信号初始时输出的电平的极性。
3. PWM的脉冲对齐方式
PWM的脉冲对齐方式有两种:左对齐与中心对齐。


脉宽调制模块PWM的编程寄存器描述:


1. PWM使能寄存器(PWME)
该寄存器中的每一位均控制每一个PWM通道的PWM信号是否输出。
2.PWM极性寄存器(PWMPOL)
该寄存器设置PWM的脉冲极性,当PWM信号已经输出时,更改PWM的脉冲极性将会导致在脉冲极性切换的过程中PWM的输出信号不稳。
3.PWM时钟选择寄存器(PWMCLK)
每一个PWM通道都可以选择各自的时钟源。
4. PWM预分频时钟选择寄存器(PWMPRCLK)
该寄存器用于设置时钟A和B的时钟预分频值,当PWM信号已经输出时,更改预分频值将会导致在时钟切换的过程中PWM的输出信号不稳。
5.PWM中心对齐使能寄存器(PWMCAE)
该寄存器设置PWM的脉冲对齐方式为左对齐或者中心对齐。
6.PWM控制寄存器(PWMCTL)
该寄存器可以对PWM模块进行不同的配置,包括将2路8位的PWM通道配置为1路16位的PWM通道,以及设置PWM在低功耗模式下的特性。
7.PWM分频寄存器A(PWMSCLA)
该寄存器设置时钟SA,时钟SA由时钟A分频而来。
8.PWM分频寄存器B(PWMSCLB)
该寄存器设置时钟SB,时钟SB由时钟B分频而来。

mcf52235的pwm模块提供了多个时钟源,是用户可以根据自己的需要自由选择时钟源,对用户产品的开发提供了极大地方便,当然也有初学者对这么多时钟源表示头大,那么你可以先只用一个时钟源,然后当你的应用出现要用两个频率不同的时钟源的需求的时候,再给自己增加一个时钟源。


9.PWM通道计数寄存器(PWMCNTn)
每一个PWM通道都有一个各自的8位自增/自减计数寄存器, 在不影响PWM通道正常工作的情况下,用户可以读取计数器的值。
10.PWM通道周期寄存器(PWMPERn)
每一个PWM通道都有一个各自的8位周期寄存器。

11.PWM通道占空比寄存器(PWMDTYn)
每一个PWM通道都有一个各自的8位占空比寄存器。
12.PWM关闭寄存器(PWMSDN)
该寄存器提供了在紧急情况下关闭PWM模块的功能,比如变频器拖动电机的紧急制动。


脉宽调制模块PWM的编程实例


例如将相应的PWM通道引脚连接到小灯,调节pwm输出的占空比实现小灯逐渐变亮的功能。
PWM构件提供的功能函数有:
1.PWM初始化函数:PWMInit
PWM波的输出电压幅值和输出电流大小由引脚的输出 电压和电流决定。在输出期望的PWM信号之前,要先对PWM进行初始化,一般包括PWM时钟的选择,PWM脉冲极性的设置以及
PWM脉冲对齐方式的设置等。在实际使用时应该根据要驱动的器件的特性选择合适的时钟。一般在初始化结束后,应当清零PWM的计数寄存器。
2.PWM信号产生函数:PWMSetting
PWM初始化完成以后,通过对周期寄存器和占空比寄存器的设置可以产生期望的PWM信号。一般按照以下的顺序进行设置:
(1)禁止相应的PWM通道,防止在设置时出现不规则的波形。
(2)按照实际的要求,设置PWM的周期与占空比。
(3)清零PWM的计数寄存器。
(4)使能相应的PWM通道,这样就能产生与设置的PWM周期与 占空比对应的PWM信号。

 

极端情况下pwm模块输出信号的情况,有的时候是因为配置错误,也有的时候恰恰是需要这么做,咱们来看看在配置出现下面情况的时候pwm的输出是什么

image

 

mcf52235 的pwm模块每个通道都是八位的,pwm波形可以有255种占空比,这在一般的应用中是足够了,因为8位通道就可以把占空比的调节精度达到0.5%以下,然而总是有那么一些时候会有一些特殊情况,不要担心,飞思卡尔提供了一个通道级联功能,可以让每个通道达到16位的分辨率。即在使用MC52233的PWM时,通过对PWMCTL寄存器的设置可以将2路 8位的PWM通道合并成1路16位的PWM通道使用。在这里要注意的是channel0的八位作为16位寄存器的高八位,而channel1的八位作为16位寄存器的低八位。
7.3.5 用PWM实现D/A转换
1.用PWM实现D/A转换的原理
通过改变PWM的占空比,可以输出不同电压值的波形,利用PWM的这一特性,可以模拟简单的D/A转换。D/A转换的精度由PWM的位数决定,这里需要加低通滤波电路,而且要接高阻抗的放大器。