主题中讨论的其他器件: C2000WARE、 SysConfig
大家好、
我正在使用 TMS320F280039C Launchpad 并启用 CMPSS3、EPWM 通道1和2、ADC、EPWMXBAR。 我的总体想法是、如果在某个 DAC 值 PWM 应该关闭后、ADC 值升高。
我将多路复用器信号用于 LP 输入-23:A0/B15/C15/DACA_OUT、当向 VCC 提供此引脚时、PWM 不会进入关闭状态。
以下是所需模块的配置。
CMPSS1:
高比较器配置:

CMMPSS 多路复用器选择:

低比较器配置:

CMPSS 多路复用器选择

REST 所有 CMPSS 配置为默认值。
EPWMXBAR 设置:

PWM 配置:
EPwm1Regs.TBPRD = PWM_PERIOD;//针对100KHz PWM 频率将周期设置为600个计数
EPwm1Regs.TBCTR = 0;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上向下计数模式
EPwm1Regs.TBCTL.bit.PHSEN = 0;
EPwm1Regs.EPWMSYNCINSEL.bit.SEL = SYNC_IN_SRC_DISABLE_ALL;//同步输入已禁用
EPwm1Regs.TBPHS.bit.TBPHS = PH_ANG_CNT_R;
EPwm1Regs.EPWMSYNCOUTEN.bit.ZEROEN = 1;
EPwm1Regs.CMPA.bit.CMPA = 300;
EPwm1Regs.CMPB.bit.CMPB = 0;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm1Regs.CMPC = 0;
EPwm1Regs.CMPD = 0;
//输出 A 的动作限定器控制寄存器
EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
//输出 B 的动作限定器控制寄存器
EPwm1Regs.AQCTLB.bit.CAU = AQ_NO_ACTION;
EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.PRD = AQ_NO_ACTION;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_NO_ACTION;*/
//触发区
EALLOW;
EPwm1Regs.TZCTL.bit.tZA = TZ_FORCE_LO;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;
EPwm1Regs.TZEINT.bit.OST = 1;
EDIS;
//死区
EPwm1Regs.DBRED.bit.DBRED = DEADBAND_200;//200ns
EPwm1Regs.DBFED.bit.DBFED =死区_ 200;//200ns
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//低电平有效
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;
//事件触发
EPwm1Regs.ETSEL.bit.inten = 1;
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
EPwm1Regs.ETPS.bit.INTPSSEL = 1;
EPwm1Regs.ETINTPS.bit.INTPRD2 = 1;
//adc SOC
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 4;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
我能够读取 ADC 值、以将接地和 VCC 提供给相应的外周引脚编号(23:A0/B15/C15/DACA_OUT)。
在主函数内部完成 PWM 初始化和 GPIO 初始化、while 循环中不运行任何内容。
请告诉我缺少什么。
谢谢!
沙山克
