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

2010年10月25日 23:03    发布者:supermcu
实际工程应用的逆变器常采用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
#define FCCLK 60000000void 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)
*/

网友评论

supermcu 2010年10月25日
顶一下。
hominidclint 2010年11月01日
xue xi xue xi