器件型号:LAUNCHXL-F28377S
大家好、
我尝试测量一些输入信号的时间差。 因此、我想使用 F28377S 的 ECAP 外设。 在论坛中浏览了几个主题后、我找不到我的应用程序的问题。
我按如下所示配置所有滤波器:
void eCaps_init (void) { gpioInit(); EALLOW; SYSCTL_setSyncInputConfig (SYSCTL_SYNC_IN_ECAP1、SYSCTL_SYNC_IN_SRC_EPWM10SYNCOUT); SYSCTL_setSyncInputConfig (SYSCTL_SYNC_IN_ECAP4、SYSCTL_SYNC_IN_SRC_ECAP1SYNCOUT); for (unsigned I = 0;I < DIM (ECAP_BASes);+I) { singleEcapInit (ECAP_BASESS[i]); } irqInit(); EDIS; }
静态空 singleEcapInit (uint32_t base) { eCAP_disableInterrupt (base、all_eCAP_Events); ECAP_clearInterrupt (base、all_ECAP_Events); eCAP_stopCounter (base); eCAP_disableTimeStampCapture (基本); eCAP_setPhaseShiftCount (base、0U); eCAP_enableLoadCounter (base); ECAP_setSyncOutMode (base、ECAP_SYNC_OUT_SYNCI); ECAP_setCaptureMode (base、ECAP_Continuous_capture_mode、ECAP_EVENT_4); ECAP_setEventPolarity (base、ECAP_EVENT_1、ECAP_EVNT_FALLING_EDGE); eCAP_setEventPolarity (base、eCAP_EVENT_2、eCAP_EVNT_RISTING); ECAP_setEventPolarity (base、ECAP_EVENT_3、ECAP_EVNT_FALLING_EDGE); eCAP_setEventPolarity (base、eCAP_EVENT_4、eCAP_EVNT_RISTING); eCAP_disableCounterResetOnEvent (base、eCAP_EVENT_1); eCAP_disableCounterResetOnEvent (base、eCAP_EVENT_2); eCAP_disableCounterResetOnEvent (base、eCAP_EVENT_3); eCAP_disableCounterResetOnEvent (base、eCAP_EVENT_4); eCAP_enableCaptureMode (base); eCAP_enableTimeStampCapture (基本); ECAP_enableInterrupt (base、USE_ECAP_IRQ); eCAP_startCounter (base); }
计数器按预期运行、但当我想通过设置 ECap1Regs.ECCTL2.SWSYNC 来同步 eCap 时、ECAP 1复位。
如果我对 ECap2Regs.ECCTL2.SWSYNC 执行相同的操作、则仅 eCAP2复位(而不是 eCAP3)->由于我可以复位 eCAP2、我假设 SYNCI_EN 正常、故障是来自 eCAP1的信号没有在 SYNCO_SEL 中配置的提升板?
来自 SWSYNC 的 Technical_Reference_Manual:写入1会强制当前模块和任何模块的 TSCTR 影子加载下游、前提是 SYNCO_SEL 位为0、0。
我对所有 eCap 都具有以下配置(如 CCS 内的"Registers"视图所示):
CTRPHS 0x00000000 计数器相位偏移值寄存器[存储器映射]
ECCTL1 0x0111 捕捉控制寄存器1 [存储器映射]
ECCTL2 0x0036 捕捉控制寄存器2 [存储器映射]
ECEINT 0x003E 捕捉中断使能寄存器[存储器映射]
对于同步、我假设以下位是最相互交错的位(也取自调试视图):
SYNCO_SEL 00 同步输出模式
SYNCI_EN 1 计数器同步选择
我获得中断、就像我希望它们与其他任何东西一起使用一样。 只有同步失败。
为了按我的打算使用 SYNC_OUT、我还需要注意其他事项吗?