📄 tms320f2812spwm.txt
字号:
TMS320F2812的SPWM原程序 没有公告
加入收藏
设为首页
联系站长
. 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 .
服务导航 . 邮购 . 资源 .
| DSP首页 | DaVinci文章 | C6000文章 | C5000文章 | C3000文章 | C2000文章 | ADI DSP |
MOTO DSP | FAQ | 代码示例 | 电路应用 |
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C2000 >> 文章正文
TMS320F2812的SPWM原程序 热 ★★★【字体:小 大】
TMS320F2812的SPWM原程序
作者:Free 文章来源:Free 点击数:465 更新时间:2008-1-2
//实现了SPWM的输出
#include "DSP281x_Device.h"
#include "stdio.h"
#include "math.h"
#include "float.h"
#define NX 404
#define PI 3.1415925
float M=0.8;
int k0=0,h1=0;
double a[NX];
void zkb();
interrupt void eva_T1UFINT_ISR(void);
unsigned int n=0;
float q,l,j;
void main(void)
{
InitSysCtrl(); //系统初始化
DINT; //禁止全局中断
IER=0x0000;
IFR=0x0000;
EALLOW;
GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins
EDIS;
InitPieCtrl();
InitPieVectTable();
EALLOW; //使能定时器1下益中断
PieVectTable.T1UFINT=&eva_T1UFINT_ISR;
EDIS;
IER|=M_INT2; //开中断2
PieCtrlRegs.PIEIER2.bit.INTx6=1; //开下益中断
////////////////////
while (n<=NX)
{
q=(n+0.75); //为消除偶次偕波,减少谐波角度出发,选择从A相3/4周期进行采样
q=q*2*PI;
q/=405;
j=sin(q);
l=1875*(1+M*j);//M为调制比 //计算占空比表达式
//if(l>=187&l<=1687)(此处网友设置为错误的)
if(l>=375&l<=3375)
a[n]=l;
else
{
if(l>3375)
a[n]=3375;
else
a[n]=375;
}
n=n+1;
}
//////////////////////////////
///init_eva
///////////////////////////////
EvaRegs.ACTRA.all=0x0666;
EvaRegs.DBTCONA.all = 0x0000; // Disable deadband
EvaRegs.COMCONA.all = 0xa600; //使能比较操作
EvaRegs.EVAIMRA.all=0x0200;
//EVAIMRA(EVA的中断屏蔽寄存器A).T1UIINT(通用定时器1的下溢中断使能)
EvaRegs.EVAIMRB.all=0x0000;
EvaRegs.EVAIMRC.all=0x0000;
EvaRegs.EVAIFRA.all=0xffff;//EVAIFRA(EVA的中断标志寄存器.T1UIINT(通用定时器1的下溢中断标志)
EvaRegs.EVAIFRB.all=0xffff;//写1清除定时器1的下溢中断标志
EvaRegs.EVAIFRC.all=0xffff;
EvaRegs.CMPR1=0; //初始化寄存器的值
EvaRegs.CMPR2=0;
EvaRegs.CMPR3=0;
EvaRegs.GPTCONA.all=0x0041;
//周期必须大于最大的正弦表格值
EvaRegs.T1PR = 3750; // Timer1 period PWM载波周期为 65536个定标的定时器时钟周期
//EvaRegs.T1PR = 0xffff;
//EvaRegs.T1CNT = 937; // Timer1 counter
EvaRegs.T1CNT = 937;
//EvaRegs.T1CON.all = 0x0b4e; // 选择模式产生PWM波10
EvaRegs.T1CON.all = 0x0b4e;
EINT;
return;
///////////////////////////
EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //启动定时器1
for(;;);
}
interrupt void eva_T1UFINT_ISR(void) // EV-A
{
int h2;
int flag;
flag=(EvaRegs.EVAIFRA.all)&0x0200; //T1UFINT中下益中断标志位置1
if(flag!=0x0200)
{
EINT;
return;
}
else
{
if(k0<=NX)
{
h1=k0+135; //B相表达式
if(h1>=404)h1=h1-404;
h2=k0+270; //C相表达式
if(h2>=404)h2=h2-404;
EvaRegs.CMPR1=a[k0];
EvaRegs.CMPR2=a[h1]; //更新比较寄存器2的值
EvaRegs.CMPR3=a[h2]; //更新比较寄存器3的值
k0=k0+1;
}
else
{
k0=0;
}
}
EvaRegs.EVAIMRA.bit.T1UFINT=1; //清除中断屏蔽标志
EvaRegs.EVAIFRA.bit.T1UFINT=1; //清楚中断使能标志
PieCtrlRegs.PIEACK.all=0x0002; //响应同组中断
EINT; //开全局中断
}
欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin
责任编辑:admin
上一篇文章: TMS320LF2407上实现快速傅里叶变换(FFT)
下一篇文章: 没有了
【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
最新热点最新推荐相关文章
TMS320C3x源码/范例
DSP中内部Flash的应用研究
[组图]TMS320VC5402 I/O资…
[组图]基于DSP的光伏并网系…
TI C28X FFT函数库完全注释
[组图]一种基于A/D和DSP的…
[组图]基于定点DSP的MP3音…
[组图]基于TMS320F2812的车…
取样频率转换算法(sampli…
二次IIR滤波器
TMS320C3x源码/范例
[组图]XDS510 DSP系列仿真…
[图文]JTAG口与仿真器连接…
[图文]TMS320VC5410硬件连…
[图文]采用ADuC834的口0与…
[图文]AD73360与TMS320VC5…
[图文]DSP5402和MAX3110硬…
[图文]主从模式的TLC320AC…
[组图]DSP2407全系列开发板…
[组图]DSP器件的现场可编程…
基于LabVIEW和TMS320F2812的…
TMS320F2812的CAN调试成功经…
基于TMS320F2812和μC/OS II…
TMS320F2812 全局汇编函数
TMS320F2812 CMD 文件各段含…
基于TMS320F2812集中供电系统…
TMS320F2812的CMD文件配置详…
基于TMS320F2812的多轴伺服控…
利用TMS320F2812 DSP&DRV592…
基于TMS320F2812的变频调压功…
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
没有任何评论
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |
站长:61IC 湘ICP备05002478号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -