器件型号: TMS320F28P559SJ-Q1
您好、
我正在使用 TMS320F28P55(64 引脚) 定制 ESC 板。 我想捕获 打开的 PWM 输入 (~50Hz、3.3V) GPIO24 、也是 BOOT 引脚 、使用 eCAP1 。 MCU 启动正常、我验证了 PWM 信号是否到达引脚。
我无法捕获 CAP1 CAP2 Cap3、但 TSCTR 会根据时钟配置增加。
//Gpio init for Ecap input
GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO24 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;
void EscController::initEcap(){
EALLOW;
ECap2Regs.ECCTL0.bit.INPUTSEL = 0; // Use default ECAP1 input pin
InputXbarRegs.INPUT1SELECT = 24; // INPUT1 now gets data from GPIO6
ECap2Regs.ECEINT.bit.CEVT4 = 1; // Enable interrupt on 4th capture2
ECap2Regs.ECCTL1.bit.CAP1POL = 0; // Rising edge
ECap2Regs.ECCTL1.bit.CAP2POL = 1; // Falling edge
ECap2Regs.ECCTL1.bit.CAP3POL = 0; // Rising edge again (for full period)
ECap2Regs.ECCTL1.bit.CAP4POL = 1; // Falling edge2
ECap2Regs.ECCTL1.bit.CTRRST1 = 1; // Reset counter after CAP1
ECap2Regs.ECCTL1.bit.CTRRST2 = 1; // Reset after CAP2
ECap2Regs.ECCTL1.bit.CTRRST3 = 0;
ECap2Regs.ECCTL1.bit.CTRRST4 = 1; // Reset after CAP42
ECap2Regs.ECCTL1.bit.CAPLDEN = 1; // Load the time stamp to register
ECap2Regs.ECCTL2.bit.CONT_ONESHT = 0; // Continuous mode
ECap2Regs.ECCTL2.bit.STOP_WRAP = 3; // Stop at 4rd event
ECap2Regs.ECCTL2.bit.CAP_APWM = 0; // Capture mode
ECap2Regs.ECCTL2.bit.SYNCI_EN = 0; // Disable sync in
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start counter
ECap2Regs.ECCTL2.bit.REARM = 1; // Arm the eCAP
EDIS;
}




