MCU

ADSP-BF533 之PWM功能实现(原创)

0
阅读(11959)

    今天准备就ADSP-BF533芯片说说PWM功能的实现原理,PWM即脉冲宽度调制,是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。

    脉冲宽度调制(PWM)实际上是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

    ADSP-BF533芯片内部也具有PWM模块,而且该模块是通过定时器的设置来实现的,具体的实现如下:

    在定时器配置中对TIMERx_CONFIG寄存器进行设置,将TMODE位置为“01”,启用定时器PWM模式。TMRX为芯片定时器的输出引脚,通过设置TIMERx_CONFIG寄存器中的OUT_DIS位可以设置是否将PWM信号输出。

    在PWM_OUT模式,TIMERx_CONFIG寄存器中的位PULSE_HI,PERIOD_CNT,IRQ_ENA,OUT_DIS,CLK_SEL,EMU_RUN和TOGGLE_HI的启用正交功能。它们可以单独或任意组合,虽然某些组合是没有用的(如TOGGLE_HI=与OUT_DIS1= 1或PERIOD_CNT= 0)。

    一旦启用计时器,定时器计数器寄存器将会加载起始值。如果CLK_SEL =0,定时器计数器开始为0x1。 如果CLK_SEL =1,它是在EXT_CLK模式置为0x0。并且定时器处于向上计数模式。无论CLK_SEL为何值,只要定时器计数器等于定时器周期时,定时器计数器在下一个时钟复位为0x1。

    在PWM_OUT模式,定时器计数器TIMERx_COUNTER从起始值开始向上计数,当计数值TIMERx_COUNTER等于PWM脉冲宽度寄存器TIMERx_WIDTH时,芯片内部就会产生一个中断,这时可以对PWM输出引脚进行电平控制,然后等于定时器溢出时,即TIMERx_COUNER等于TIMERx_PERIOD,这时芯片内部也会产生溢出中断,同样可以对PWM输出引脚进行电平控制,这样就能通过设置PWM脉冲宽度寄存器TIMERx_WIDTH的值来控制PWM输出引脚的高低电平的时间,从而实现PWM控制啦。