實(shí)際工程應用的逆變器常采用SPWM技術(shù)來(lái)實(shí)現,以前常用硬件來(lái)產(chǎn)生三角波和正弦波進(jìn)行比較來(lái)產(chǎn)生SPWM信號,但常常不穩定,而用嵌入式ARM來(lái)產(chǎn)生SPWM信號就非常容易,幾乎不用增加任何附加硬件產(chǎn)生調制正弦信號,而由LPC2132的內置PWM功能就能實(shí)現。下面是實(shí)驗程序,已在SP1010-LPC213X-ARM實(shí)驗開(kāi)發(fā)板調試通過(guò),供參考。 來(lái)源:[url=http://selenalain.com/www.supermcu.com]www.supermcu.com[/url] (西譜電子) /* 利用LPC2132器件的PWM功能模擬產(chǎn)生正弦信號由P0.21引腳的PWM5功能引腳輸出 實(shí)驗平臺:(1).SP1010-LPC213X-ARM實(shí)驗開(kāi)發(fā)板,其詳細介紹地址:[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的周期值,產(chǎn)生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實(shí)驗開(kāi)發(fā)板詳細介紹地址:[url=http://www.supermcu.com/p_info.asp?id=288]http://www.supermcu.com/p_info.asp?id=288[/url]) */ |