您好!
我已经能够打开 HRPWM 并写入 CMPA 和 CMPAHR 寄存器。
我的问题是关于调用 SFO 以获取 MEP_ScaleFactor。
我可以在不调用 SFO 的情况下运行 HRPWM 吗?
如果没有 PWM、会出现什么错误?
以下是我的 HRPWM 配置:
我将使用具有恒定频率的 PWM4、并且我将控制占空比。
EPwm4Regs.TBCTL.bit.PRDLD = TB_Immediate;//设置立即加载
EPwm4Regs.TBPRD = 300; //对于330kHz
EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;// EPwm4是主设备
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;//可选
EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//可选
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET;//可选
EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR;//可选
EALLOW;//注意这些寄存器受保护
EPwm4Regs.HRCNFG.ALL = 0x0;//首先清除所有位
EPwm4Regs.HRCNFG.bit.EDGMODE = HR_FEP;//控制下降沿位置
EPwm4Regs.HRCNFG.bit.CTLMODE = HR_CMP;// CMPAHR 控制 MEP
EPwm4Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;// CTR 上的影子负载= 0
EPwm4Regs.HRPWR.bit.CALPWRON = 1;
EPwm4Regs.HRCNFG.bit.AUTOCONV = 1;
EDIS;
MEP_ScaleFactor = 66*256;//从典型换算系数开始
当我加载占空比时,我会按以下方式执行它:
EPwm4Regs.CMPA.all = Duty * EPwm4Regs.TBPRD * 65535;
(其中占空比值介于0.001和.8之间)
你有什么建议吗?