原创 基于SP1010-LPC213X-ARM实验板的SPWM实验

2010-10-25 22:22 2123 8 8 分类: MCU/ 嵌入式

    实验工程应用的逆变器常采用SPWM技术来实现,以前常用硬件来产生三角波和正弦波进行比较来产生SPWM信号,但常常不稳定,而用嵌入式ARM来产生SPWM信号就非常容易,几乎不用增加任何附加硬件产生调制正弦信号,而由LPC2132的内置PWM功能就能实现。下面是实验程序,已在SP1010-LPC213X-ARM实验开发板调试通过,供参考。


来源:www.supermcu.com (西谱电子)


/*
      利用LPC2132器件的PWM功能模拟产生正弦信号由P0.21引脚的PWM5功能引脚输出
      实验平台:(1).SP1010-LPC213X-ARM实验开发板,其详细介绍地址:
http://www.supermcu.com/p_info.asp?id=288)
                (2).示波器,探头接到P0.21引脚上
      FOSC=12MHz,FCCLK=60MHz,FPCLK=FCCLK/4
      更多内容:
http://www.supermcu.com (西谱电子)
*/
#include <LPC213X.H>
#define FCCLK 60000000


void ARM_PWM_Init(void)
{
  PINSEL0 = 0;
  PINSEL1 = (PINSEL1 & (~(3 << 10))) | (1 << 10);   //--- 配置为PWM5引脚输出功能 ---


  PWMPR  = 0;
  PWMPC  = 0;
  PWMTC  = 0;
  PWMMCR = 3;
  PWMPCR = (1 << 13);                               //--- 使能PWM5引脚功能 ---
  PWMMR0 = FCCLK / (4 * 100000) - 1;                  //--- 配置PWM5的周期值,产生Fpwm = 1KHz ---
  PWMMR5 = (PWMMR0 + 1) * 50 / 100 - 1;               //--- 配置PWM5的占空比,占空比= 30 % ---
  PWMLER = (1 << 5) | (1 << 0);                     //--- 锁存PWM5的周期和占空比数值 ---
  PWMTCR = 9;                                       //--- 使能PWM5和PWM0 ---
}


void  time_dly(unsigned long  dly)

 unsigned long i;


 do
    {
    i = 600;
      do
        {
        }
      while(-- i);
    }
  while(-- dly);
}



int main(void)
{
  long i,j;


  ARM_PWM_Init();


  while(1)
    {
    for(i=0;i<200;i++)
        {
       j = i;
       if (j > 100) j = 200 - i;
       PWMMR0 = FCCLK / (4 * 100000) - 1;
       PWMMR5 = j;
       PWMLER = (1 << 5) | (1 << 0);
       time_dly(20);
  }
    }
}
/*
      更多内容:
http://www.supermcu.com (西谱电子)
      SP1010-LPC213X-ARM实验开发板详细介绍地址:
http://www.supermcu.com/p_info.asp?id=288)
*/

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条