基于SP1010-LPC213X-ARM实验板的SPWM实验
时间:10-25
来源:互联网
点击:
实际工程应用的逆变器常采用SPWM技术来实现,以前常用硬件来产生三角波和正弦波进行比较来产生SPWM信号,但常常不稳定,而用嵌入式ARM来产生SPWM信号就非常容易,几乎不用增加任何附加硬件产生调制正弦信号,而由LPC2132的内置PWM功能就能实现。下面是实验程序,已在SP1010-LPC213X-ARM实验开发板调试通过,供参考。
/*
利用LPC2132器件的PWM功能模拟产生正弦信号由P0.21引脚的PWM5功能引脚输出
实验平台:(1).SP1010-LPC213X-ARM实验开发板,其详细介绍地址:[url=http://www.supermcu.com/p_info.asp?id=288]http://www.supermcu.com/p_info.asp?id=288[/url])
(2).示波器,探头接到P0.21引脚上
FOSC=12MHz,FCCLK=60MHz,FPCLK=FCCLK/4
更多内容:[url=http://www.supermcu.com/]http://www.supermcu.com[/url] (西谱电子)
*/
#include <LPC213X.H>
#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);
}
}
}
/*
更多内容:[url=http://www.supermcu.com/]http://www.supermcu.com[/url] (西谱电子)
SP1010-LPC213X-ARM实验开发板详细介绍地址:[url=http://www.supermcu.com/p_info.asp?id=288]http://www.supermcu.com/p_info.asp?id=288[/url])
*/
来源:[url=http://www.eechina.com/www.supermcu.com]www.supermcu.com[/url] (西谱电子)
/*
利用LPC2132器件的PWM功能模拟产生正弦信号由P0.21引脚的PWM5功能引脚输出
实验平台:(1).SP1010-LPC213X-ARM实验开发板,其详细介绍地址:[url=http://www.supermcu.com/p_info.asp?id=288]http://www.supermcu.com/p_info.asp?id=288[/url])
(2).示波器,探头接到P0.21引脚上
FOSC=12MHz,FCCLK=60MHz,FPCLK=FCCLK/4
更多内容:[url=http://www.supermcu.com/]http://www.supermcu.com[/url] (西谱电子)
*/
#include <LPC213X.H>
#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);
}
}
}
/*
更多内容:[url=http://www.supermcu.com/]http://www.supermcu.com[/url] (西谱电子)
SP1010-LPC213X-ARM实验开发板详细介绍地址:[url=http://www.supermcu.com/p_info.asp?id=288]http://www.supermcu.com/p_info.asp?id=288[/url])
*/
- 基于DSP实现的无差拍控制逆变器 (03-08)
- 基于PIC单片机的空间电压矢量PWM控制方法研究(03-13)
- 数字信号控制器在太阳能逆变器中的应用(11-12)
- MODBUS协议在光伏并网系统中的应用(03-31)
- 单片机C868实现无传感器BLDC电机控制(07-06)
- 基于智能控制器ICB1FL01G的荧光灯镇流器电路(07-25)
