2812DSP设计PMSM矢量控制系统时的SVPWM如何实现?

2812DSP设计PMSM矢量控制系统时的SVPWM如何实现?,第1张

我再看了你的原贴,可以肯定1,肯定要有EV自带的SVPWM功能,由2812自动生成,这样2000系列适合电机控制的根本原知唤因,2,配置相搭铅凯关的周期寄存器,比较寄存器,产生期待的SVPWM波形,在激亩2812的data sheet里,有说明,可以细读一下。

初始化事件管理器和PWM寄存器就行了。这是一个普通PWM发生的程序,空间PWM波的产生就是把PWM寄存器设置改一下,就像程序中的EVA_PWM()一样。具体怎么改要翻书看啦,都忘记啦(*^__^*)…嫌歼运…

/************************************************************

**描述:利用GP定时器1的比较器在改槐产生一路PWM波,外设时钟25M**

**同时用全比较器产生3对PWM波,GP定时器1作全比较单元时基***

************************************************************/

#include "DSP28_Device.h"

void EVA_PWM()

{

EvaRegs.EXTCON.bit.INDCOE = 1 //单独使能比较输出模式

EvaRegs.ACTRA.all = 0x0aaa//空间矢量不动作

EvaRegs.DBTCONA.all = 0x08ec //死区定时器启动

EvaRegs.CMPR1 = 0x0006

EvaRegs.CMPR2 = 0x0005

EvaRegs.CMPR3 = 0x0004

EvaRegs.COMCONA.all = 0xa4e0 //空间向量禁止,全比较使能,陷阱禁止

}

void EVA_Timer1()

{

EvaRegs.EXTCON.bit.INDCOE = 1 //单独使能比较输出模式

EvaRegs.GPTCONA.all = 0x0012 //GP定时器1比较输出低有效芹梁

EvaRegs.T1PR = 0x0013 // 定时周期为5.12us*(T1PR+1)

EvaRegs.T1CMPR = 0x0003 // GP定时器的比较寄存器

EvaRegs.T1CNT = 0x0000// 定时器初值

EvaRegs.T1CON.all = 0x1742//连续增计数,128分频,使能比较,打开定时器

}

void IOinit()

{

EALLOW

//将GPIOA配置为外设口

GpioMuxRegs.GPAMUX.all = 0xffff

EDIS

}

void main(void)

{

InitSysCtrl() //初始化系统控制寄存器, 时钟频率150M

EALLOW

SysCtrlRegs.HISPCP.all = 0x0003//高速时钟的工作频率=25M

EDIS

DINT//关闭总中断,清除中断标志

IER = 0x0000 //关闭外围中断

IFR = 0x0000//清中断标志

IOinit()

EVA_PWM()

EVA_Timer1()

for(){}

}

实现 DSP 芯片输出死区时间可调的 PWM 波形需要按照以下步骤进行 *** 作:

1. 选择适合的 DSP 芯片和开发板,如 TMS320F28335。

2. 根据具体需求编写 PWM 模块的程序。

3. 确定死区时间的控制方法。可以使用固定的时间,也可以通过 ADC 模块读取外部电压来动态调整死兆前区时间。

4. 在程序中加入死区时间的计算和设置模块。

5. 配置 PWM 模块输出的周期、占空比和相位差。

6. 调试程序并验证输出波形的正确性。

具体实现方式需根据所选的 DSP 芯片和开贺敬发环境进行调整,建议参考相关资禅猜慎料或进行实验验证。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12486018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存