Thread 中讨论的其他器件:SysConfig
您好!
我想使用 CLB 工具、使用 PWM1和 PWM2的 ePWM 内部外设生成定制的 ePWM 信号、并在 TITL 中应用以下逻辑、 通过使用 CLB 覆盖选项在 GPIO4和 GPIO5引脚上生成 PWM3A 和 PWM3B。
(PWM3A= PWM1A XOR PWM2A)和(PWM3B =PWM1B NXOR PWM2B)
我修改 了 CLB_EX8_EXTERNAL_SIGNAL_AND_GATE CLB 示例、并插入了一些额外的代码、以将 PWM1和 PWM2信号作为全局信号生成。
#include "driverlib.h"
#include "device.h"
#include "clb_config.h"
#include "clb.h"
#include "board.h"
#include "F28x_Project.h"
void InitEPwm1 (void); //初始化 ePWM 模块1.
空 InitEPwm2 (空);
void main (void)
{
device_init();
DEVICE_initGPIO();
interrupt_initModule();
interrupt_initVectorTable();
InitEPwm1();//
InitEPwm2();//
SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_EPWM3);
Board_init();
initTILE1 (myCLB0_BASE);
clb_enableCLB (myCLB0_BASE);
while (1)
{
asm (" NOP");
}
}
空 InitEPwm1 (空)
{
EPwm1Regs.TBPRD = 450;//周期= 900 TBCLK 计数
EPwm1Regs.TBPHS.bit.TBPHS = 0;//将相位寄存器设置为零
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//主机模块
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//同步下流模块
EPwm1Regs.CMPA.bit.CMPA= 285;//调整输出 EPWM1A 的占空比
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;//设置 EPWM1A 的操作
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//启用死区模块
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//活动高电平互补
EPwm1Regs.DBRED.bit.DBRED = 20;//死区发生器上升沿延迟计数寄存器
EPwm1Regs.DBFED.bit.DBFED = 20;//死区发生器下降沿延迟计数寄存
器}
///----------------------------------------------
空 InitEPwm2 (空)
{
EPwm2Regs.TBPRD = 450;//周期= 900 TBCLK 计数
EPwm2Regs.TBPHS.bit.TBPHS = 300;//相位= 300/900 * 360 = 120度
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称模式
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;//从机模块
EPwm2Regs.TBCTL.bit.PHSDIR = TB_DOWN;//同步时倒计数(=120度)
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//同步直通
EPwm2Regs.CMPA.bit.CMPA = 285;//调整输出 EPWM2A 的占空比
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;//设置 EPWM2A 的操作
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//启用死区模块
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//活动高电平互补
EPwm2Regs.DBRED.bit.DBRED = 20;//死区发生器上升沿延迟计数寄存器
EPwm2Regs.DBFED.bit.DBFED = 20;//死区发生器下降沿延迟计数寄存
器}


