garfield

TMS320LF2407硬件产生SVPWM

0
阅读(2433)

电压空间矢量脉宽调制( SVPWM)算法谐波小,电压利用率高,是一种先进的调制方法。在TI的电机控制芯片TMS320LF2407A上产生SVPWM具有结构简单、稳定可靠、成本低廉等优点。在分析SVPWM基本原理的基础上,介绍了TMS320LF2407A芯片产生SVPWM的硬件结构和软件实现方法。

不多说,上程序:

#include "regs240x.h"
#define period 0xafff
#define T0 750
//unsigned char add[100];
unsigned char vec_tab[6];
unsigned char update_flag;
unsigned int t0,t1,t2;
void interrupt gptime1(void);
unsigned int uWork,uWork1;
unsigned int count;
main()
{

unsigned int k;
unsigned int temp;

// asm(" setc INTM"); /* 关中断 */
asm(" clrc SXM"); /* 符号位扩展有效 */
asm(" clrc OVM"); /* 累加器中结果正常溢出 */
asm(" clrc CNF"); /* B0被配置为数据存储空间 */

/* 关闭看门狗中断 */
WDCR=0x6f;
WDKEY=0x5555;
WDKEY=0xaaaa;
SCSR1=0x82fe; /* DSP工作在40MHz */
IMR=3; /* */
IFR=0x0ffff; /* 清除中断标志 */
asm(" clrc INTM"); /* 开中断 */

uWork=WSGR; /* I/O引脚0等待 */
uWork&=0x0fe3f;
WSGR=uWork;
MCRA=MCRA|0x0fc0; /* IOPA6-11被配置为基本功能方式,PWM1-6 */
ACTRA=0x1666; /* PWM2低有效,PWM1高有效 */
DBTCONA=0xae8; /* 使能死区控制 */
CMPR1=period/3; /* 比较单元1设置 */
CMPR2=period/2; /* 比较单元2设置 */
T1PER=period; /* 设置定时器1的周期寄存器,以确定不同的输出占空比 */
EVAIMRA = 0x080; /* 使能T1PINT */
EVAIFRA = 0xffff; /* 清中断标志 */
// T1CNT=0;
COMCONA=0x9200; /* 使能比较操作 */
T1CON=0x0800; /* 定时器1为连续增计数模式 */
T1CON=T1CON|0x0040; /* 启动定时器1 */
count=0;
vec_tab[0]=1;
vec_tab[1]=3;
vec_tab[2]=2;
vec_tab[3]=6;
vec_tab[4]=4;
vec_tab[5]=5;
update_flag=0;
t0=T0;

// for(k=0;k<100;k++){
// add[k]=k*100;
// }
while ( 1 )
{
if(update_flag){
update_flag=0;
temp=ACTRA;
ACTRA=(vec_tab[count/80]<<12)+0x666;
t1=(count%80);
t1=((long)t1*period)/80;
// t1=t1/80;
if(t1<10){
t1=10;
}
if(t1>period-50){
t1=period-50;
}
t2=period-t0;
CMPR1=t1; /*比较单元1设置 */
CMPR2=t2; /*比较单元2设置 */

}
// add[0]=add[0]+1000;
}
}
void pwm_init(void){
EVAIMRA = 0x80; /* 使能T1PINT */
EVAIFRA = 0xffff; /* 清中断标志 */
GPTCONA = 0x0100;
T1PR = 2000; /* 保存结果周期=2000*25ns=50us=20KHz */
T1CNT = 0; /* 计数器从0开始计数 */
T1CON = 0x1040; /* 连续增计数方式,启动计数器 */
}
void interrupt gptime1(void)
{
uWork1=(PIVR);
switch ( uWork1 )
{
case 0x27:
{
//nNewConvert=1; /* 设置保存标志 */
(EVAIFRA)=0x80;/* 清中断标志位 */
count++;
if(count>=480){
count=0;

}
update_flag=1;
break;
}
}
}
波形:
说明一下:tms320lf2407产生的svpwm波形跟通常所说的svpwm波形不同,它产生的波形有一路是不变的
Baidu
map