工具与软件:
我正在尝试配置 ECAP、以持续测量 PWM 输入的周期和占空比。 我正在使用50%占空比10kHz PWM 进行测试。 ePWM0生成 PWM、我 也将 LaunchPad 上的 EPWM0A 连接到 LaunchPad 上的适当输入(GPIO104)、并适当配置 XBar。
使用逻辑分析仪、我 确认了 GPIO104上的50%占空比。
我看到 CAP1寄存器为0x26FB、CAP2=0x1C、CAP3=0x26FB、CAP4=0x1C、这当然与50%占空比不匹配。
以下是配置详细信息、主要基于 ecap_ex2_capture_pwm.c 对于为什么我不正确捕捉 PWM 有任何建议?
谢谢!
GPIO 配置:
GPIO_setPinConfig(GPIO_104_GPIO104); GPIO_setDirectionMode(104, GPIO_DIR_MODE_IN); GPIO_setPadConfig(104, GPIO_PIN_TYPE_STD);
XBAR_setInputPin(XBAR_INPUT7, 104);
eCAP 配置:
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_4);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_1, ECAP_EVNT_FALLING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_2, ECAP_EVNT_RISING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_3, ECAP_EVNT_FALLING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_4, ECAP_EVNT_RISING_EDGE);
ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_1); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_2); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_3); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_4);
ECAP_enableLoadCounter(ECAP1_BASE); ECAP_startCounter(ECAP1_BASE); ECAP_enableTimeStampCapture(ECAP1_BASE); ECAP_reArm(ECAP1_BASE);
ECAP_enableInterrupt(ECAP1_BASE, ECAP_ISR_SOURCE_CAPTURE_EVENT_4);