/************************************************************
**描述:利用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 芯片和开贺敬发环境进行调整,建议参考相关资禅猜慎料或进行实验验证。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)