请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:F28M35H52C Thread 中讨论的其他器件:controlSUITE
我正在 定制板上使用 F28M35H52C1 Concerto
我正在尝试在 C28内核上配置 ePWM7、但在我运行初始化代码后、所有寄存器保持为0。
ePWM1正常工作
我的第一个猜测是、这些寄存器不是时钟... ?? 但我还没有找到任何东西。
有什么想法要去检查吗?
谢谢
Greg
以下代码:
M3:
SysCtlClockConfigSet (SYSCTL_USE_PLL |(SYSCTL_SPLLIMULT_M 和0xF)| SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_XCLKDIV_4);
C28:
注意:周期是在手之前计算的
EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0; //停止所有 TB 时钟 EDIS; //---------------------------------- // EPWM1 -主设备 EPwm1Regs.TBPRD =周期; //时基周期、PWM 频率= 1/周期 EPwm1Regs.TBPHS.ALL = 0; //时基相位 EPwm1Regs.TBCTR = 0; //时基计数器 //时基时钟 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上计数-向下计数模式:用于对称 PWM EPwm1Regs.TBCTL.bit.PHSEN = TB_disable; //主机模块 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; //同步下流模块 EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; //设置从影子寄存器加载 //中断 EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRD; EPwm1Regs.ETSEL.bit.INTEN = 1; //启用 INT EPwm1Regs.ETPS.bit.INTPRD = et_1st; //在每个事件上生成 INT //---------------------------------- // EPWM7 EPwm7Regs.TBPRD =周期; //时基周期 EPwm7Regs.TBPHS.ALL = 0; //时基相位 EPwm7Regs.TBCTR = 0; //时基计数器 //时基时钟 EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//递减计数模式:用于对称 PWM EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE; //从设备到 EPWM1 EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW; //设置立即加载 //将影子寄存器加载设置为零 EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零 EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零 //设置比较值 EPwm7Regs.CMPA.half.CMPA =周期+1; //初始设置低电平 EPwm7Regs.CMPB = 0; //初始将 B 设置为高电平 //设置操作 EPwm7Regs.AQCTLA.bit.CAU = AQ_SET; //在事件 A 上设置 PWM7A,向上计数 EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR; //在事件 A 上清除 PWM7A,倒计数 EPwm7Regs.AQCTLB.bit.CBU = AQ_SET; //在事件 B 上设置 PWM7B,向上计数 EPwm7Regs.AQCTLB.bit.CBD = AQ_CLEAR; //在事件 B 上清除 PWM7B,倒计数 //死区配置 EPwm7Regs.DBCTL.bit.IN_MODE = DBA_ALL; // EPWM7A 是下降沿和上升沿延迟的源 EPwm7Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//下降沿延迟(FED)和上升沿延迟(红色)均应用于输入信号 //EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE; EPwm7Regs.DBCTL.bit.POLSEL = DB_ACTV_HI; //高电平有效 EPwm7Regs.DBRED = RED_DELAY_B; //设置上升沿的死区时间 EPwm7Regs.DBFED = FED_DELAY_B; //设置下降沿的死区时间