This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我正在尝试为 SDI (软件定义的逆变器) Tapas Board 生成 PWM 信号,我无法生成 PWM 信号,
但我能够控制 GPIO 引脚。
请尽快帮助我。
谢谢!
您好!
我们的专家将尽快回来。
谢谢、
Saravanan
您好、Ayush、
[引用 userid="546000" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1176942/tms320f28069m-epwm-generation "]我无法生成 PWM 信号,[/quot]您是否正在使用我们的软件开发套件(C2000Ware SDK)中提供的软件示例之一?
C:\ti\c2000\C2000Ware_version\device_support\f2806x\examples\c28
如果不是、您能否尝试其中一个 ePWM 示例、看看您是否能够使用该示例生成 PWM 输出?
此致、
Marlyn
您好、先生、
我仅使用那里的代码、
请参阅我的代码。
如果我在某个地方出错、请更正我。
#include "DSP28x_Project.h"//器件头文件和示例 include 文件
//
//函数原型
//
void InitEPwm5Examples(void);
_interrupt void epwm5_ISR (void);
uint32 EPwm5TimerIntCount;
uint16 EPwm5_DB_DIRECTION;
//
//主函
//
void main (void)
{
//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2806x_SYSCTRL.c 文件中。
//
InitSysCtrl();
//
//步骤2. 初始化 GPIO:
//此示例函数位于 F2806x_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
IER = 0x0000;
IFR = 0x0000;
// InitGpio();//针对此示例跳过
//
//在这种情况下、只需初始化 ePWM1、ePWM2、ePWM3的 GPIO 引脚
//这些函数位于 F2806x_ePWM.c 文件中
//
InitEPwm5Gpio();
//
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
//
Dint;
InitPieVectTable();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;
InitEPwm5Examples();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 0;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO39 = 1;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
GpioCtrlRegs.GPAMUX2.bit.GPIO16=0;
GpioCtrlRegs.GPADIR.bit.GPIO16=1;
EDIS;
GpioDataRegs.GPBDAT.bit.GPIO34 = 0;
GpioDataRegs.GPBDAT.bit.GPIO39 = 0;
GpioDataRegs.GPADAT.bit.GPIO16=1;
//
//步骤6. 空闲循环。 只需坐下来循环(可选)
//
for (;;)
{
_asm (" NOP");
}
}
//
// InitEPwm5示例-
//
无效
InitEPwm5Examples()
{
EPwm5Regs.TBPRD = 22500;//设置定时器周期
EPwm5Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
EPwm5Regs.TBCTR = 0x0000;//清除计数器
//
//设置 TBCLK
//
EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm5Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4;//时钟与 SYSCLKOUT 的比率
EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV2;
EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较
//
EPwm5Regs.CMPA.half.CMPA = 11250;
//
//设置操作
//
EPwm5Regs.AQCTLA.bit.CAU = AQ_SET;//在 CAU 上设置 PWM1A
EPwm5Regs.AQCTLA.bit.CAD = AQ_CLEAR;//清除 CAD 上的 PWM1A
EPwm5Regs.AQCTLB.bit.CAU = AQ_CLEAR;//清除 CAU 上的 PWM1B
EPwm5Regs.AQCTLB.bit.CAD = AQ_SET;//在 CAD 上设置 PWM1B
//
//低电平有效 PWM -设置死区
//
EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;
EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;
EPwm5Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm5Regs.DBRED = 200;
EPwm5Regs.DBFED = 200;
}
谢谢你
//
//文件结束
//
您好、Ayush、
这是什么示例? 您在 launchpad 上探测哪些引脚?
此致、
Marlyn
您好、先生、
它是 C2000ware 的 f2806x_ePWM_死 区示例、
我将直接探测引脚编号 餐前小吃板的54个微控制器。
谢谢你
Ayush、
我不知道餐前小吃板、也不能为这块板提供支持。
您是否可以访问来自 F2806x 器件的信号?
此致、
Marlyn