基于SP1010-LPC213X-ARM实验板的SPWM实验
发布时间:2010-10-25 23:03
发布者:supermcu
实际工程应用的逆变器常采用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 #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]) */ |
网友评论