This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28379S:ECAP 没有对所有脉冲进行计数?

Guru**** 2538930 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/956260/tms320f28379s-ecap-not-counting-all-pulse

器件型号:TMS320F28379S

团队、

请回答以下问题吗?
一些更多信息将很快发布。

目标是对外部 PWM 信号的脉冲进行计数。 在 X-BAR 输入上、PWM 信号似乎是干净的。
然而、ECAP 似乎无法对所有脉冲进行计数。 该计数仅达到6000、而产生了大约7000 000个脉冲。
原因可能是什么?

提前感谢!

A.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    此问题的其他信息:

    这是一个内部 PWM-Impulse、我检查了 PWM 信号是否正确无误。

    这里是源代码的 Init 部分:

    INT8_t BSP_CAP_Config_DCAC (void)
    {
    /*将 GPIO24配置为 Xbar 输入7 (eCAP 1)*/
    GPIO_setPadConfig (GPIO_DCAC_FAN_1_T转 速计引脚、GPIO_PIN_TYPE_STD);
    GPIO_setPinConfig (GPIO_DCAC_FAN_1_T转 速计_PIN_CONFIG_DEFAULT);
    GPIO_setionMode (GPIO_DCDIR_IN_FAN_MODE_IN);GPIO_DEV_RET_RATAN_IN
    GPIO_setQualificationMode (GPIO_DCAC_FAN_1_转 速计引脚、GPIO_QUAL_异 步);
    XBAR_setInputPin (ECAP_转 速计 FAN_1_XBAR_INPUT、GPIO_DCAC_FAN_1_转 速计引脚);
    
    //将 GPIO_set25配置为 Xbar 输入8 (eCAP_FAN
    )
    
    ;GPIO_DEV_CONFIG (GPIO_DEV_CONFIG);GPIO_DC_IN_CONFIG_IN_CONFIG_IN_CONFIG_IN_CONFIG_IN_GET_PROM_GET_GPIO_PIN_CONFIG_CONFIG_GET_IN_GET_GPIO_PIN_CONFIG_CONFIG_CONFIG_CONFIG_CONFIG_IN_GET_PROM_GET_IN_GET_IN_GET_PROT_GPIO_IN * GPIO_PIN_CONFIG_CONFIG_CONFIG_
    GPIO_setQualificationMode (GPIO_DCAC_FAN_2_转 速计引脚、GPIO_QUAL_异 步);
    XBAR_setInputPin (ECAP_转 速计 FAN_2_XBAR_INPUT、GPIO_DCAC_FAN_2_转 速计引脚);
    
    //将 GPIO26配置为 Xbar 输入9
    
    
    (eCAP_FAN);GPIO_DEV_CONFIG (GPIO_DC_IN_IN_IN_INT_GPIO_DEV_PROM_INT_INT_GPIO_IN)
    GPIO_setQualificationMode (GPIO_DCAC_FAN_3_转 速计引脚、GPIO_QUAL_异 步);
    XBAR_setInputPin (ECAP_转 速计 FAN_3_XBAR_INPUT、GPIO_DCAC_FAN_3_转 速计引脚);
    
    //将 GPIO_set27配置为 Xbar 输入10 (eCAP_FAN_DEV_CONFIG)
    
    
    ;GPIO_DC4_IN_CONFIG_IN_GET_GPIO_PIN_CONFIG_GET_GPIO_DEV_CONFIG_GET_IN_GET_GPIO_IN * GPIO_INDIRECT_GPIO_PIN_4_CONFIG_CONFIG_GET_CONFIG_IN_GET_GPIO_DEV_CONFIG_GET_IN_IN_GET_GPIO_IN_GET_GPIO_IN (GPIO_IN_4)
    GPIO_setQualificationMode (GPIO_DCAC_FAN_4_转 速 O_PIN、GPIO_QUAL_异 步);
    XBAR_setInputPin (ECAP_转 速 o_FAN_4_XBAR_INPUT、GPIO_DCAC_FAN_4_转 速 o_PIN);
    
    返回0;
    }
    
    /*********
    *@简短初始化 bsp_cap
    *@ePWM 基址的 param 基址
    *@初始化返回结果0 - OK
    */
    int8_t bsp_cap_Init_DCAC (void)
    {
    /* ECAP 1 */
    /*禁用、清除所有捕获标志和中断*/
    ECAP_DisableInterrupt (ECAP_BASE_ADDRESS_TECO_FAN_1、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_ARM_COUNTER_PERIOD)| ECAP_COUNTER_PERIOD
    ECAP_clearInterrupt (ECAP_BASE_ADDRESS_TECO_FAN_1、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_SOURCE 计数器周期)| ECAP_COUNTER_COUNTER_COUNTER_COUNTER_RACRACRACRACRACRACK_RACK_RACK_RACK_RACK_RACK_RACK_
    
    /*禁用 CAP1-CAP4寄存器加载*/
    ECAP_disableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_1);
    
    /*配置 eCAP */
    ECAP_STOPCounter (ECAP_BASE_ADDRESS_TDRO_FAN_1);
    ECAP_enableCaptureMode (ECAP_BASE_ADDRESS_转 速计 FAN_1);
    
    ECAP_setCaptureMode (ECAP_BASE_ADDRESS_FAN_1、ECAP_Continuous_CAPTURE_MODE、ECAP_EVENT_1);
    ECAP_setEventPolarity (ECAP_BASE_ADDRESS_FAN_1、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE);
    ECAP_enableCounterResetOnEvent (ECAP_BASE_ADDRESS_TDRO_FAN_1、ECAP_EVENT_1);
    
    eCAP_enableLoadCounter (eAP_BASE_ADDRESS_转 速计 FAN_1);
    ECAP_startCounter (ECAP_BASE_ADDRESS_转 速计 FAN_1);
    ECAP_enableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_1);
    
    /* ECAP 2 */
    /*禁用、清除所有捕获标志和中断*/
    ECAP_disableInterrupt (ECAP_BASE_ADDRESS_TCOK_FAN_2、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_SOURCE 计数器周期)| ECAP_COUNTER_COUNTER_COUNTER_PERIOD
    ECAP_clearInterrupt (ECAP_BASE_ADDRESS_TECO_FAN_2、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_SOURCE 计数器周期)| ECAP_COUNTER_COUNTER_COUNTER_COUNTER_RACRACRACRACRACRACK_RACK_RACK_RACK_RACK_RACK_RACK_
    
    /*禁用 CAP1-CAP4寄存器加载*/
    ECAP_disableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_2);
    
    /*配置 eCAP */
    ECAP_STOPCounter (ECAP_BASE_ADDRESS_TDRO_FAN_2);
    ECAP_enableCaptureMode (ECAP_BASE_ADDRESS_TDRO_FAN_2);
    
    ECAP_setCaptureMode (ECAP_BASE_ADDRESS_FAN_2、ECAP_Continuous_CAPTURE_MODE、ECAP_EVENT_1);
    ECAP_setEventPolarity (ECAP_BASE_ADDRESS_FAN_2、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE);
    ECAP_enableCounterResetOnEvent (ECAP_BASE_ADDRESS_T转 速计 FAN_2、ECAP_EVENT_1);
    
    eCAP_enableLoadCounter (eAP_BASE_ADDRESS_转 速计 FAN_2);
    ECAP_startCounter (ECAP_BASE_ADDRESS_TDRO_FAN_2);
    ECAP_enableTimeStampCapture (ECAP_BASE_ADDRESS_TDRO_FAN_2);
    
    /* ECAP 3 */
    /*禁用、清除所有捕获标志和中断*/
    ECAP_DisableInterrupt (ECAP_BASE_ADDRESS_TCOK_FAN_3、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_SOURCE 计数器周期| ECAP_COUNTER_RACRACK_COUNTER_RACRACK_RACK_RACK_RACK_RACK_RACK_RACK_RACK_RACK_RACK_RA
    ECAP_clearInterrupt (ECAP_base_address_t转 速 o_fAN_3、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器_周期| ECAP_SOURCE 计数器_比较_周期)| ECAP_ARM_COUNTER_COUNTER_PERIOD
    
    /*禁用 CAP1-CAP4寄存器加载*/
    ECAP_disableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_3);
    
    /*配置 eCAP */
    ECAP_STOPCounter (ECAP_BASE_ADDRESS_TDRO_FAN_3);
    ECAP_enableCaptureMode (ECAP_BASE_ADDRESS_转 速计 FAN_3);
    
    ECAP_setCaptureMode (ECAP_BASE_ADDRESS_FAN_3、ECAP_Continuous_CAPTURE_MODE、ECAP_EVENT_1);
    ECAP_setEventPolarity (ECAP_BASE_ADDRESS_FAN_3、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE);
    ECAP_enableCounterResetOnEvent (ECAP_BASE_ADDRESS_T转 速计 FAN_3、ECAP_EVENT_1);
    
    eCAP_enableLoadCounter (eAP_BASE_ADDRESS_转 速计 FAN_3);
    ECAP_startCounter (ECAP_BASE_ADDRESS_转 速计 FAN_3);
    ECAP_enableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_3);
    
    
    /* ECAP 4 */
    /*禁用、清除所有捕获标志和中断*/
    ECAP_DisableInterrupt (ECAP_BASE_ADDRESS_TCOK_FAN_4、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器周期| ECAP_ARM_COUNTER_PERIOD_PERIOD)| ECAP_AP_COUNTER_PERIOD | ECAP_PERIOD
    ECAP_clearInterrupt (ECAP_base_address_t转 速 o_fAN_4、(ECAP_ISR_SOURCE 捕捉事件_1 | ECAP_ISR_SOURCE 捕捉事件_2 | ECAP_ISR_SOURCE 捕捉事件事件3 | ECAP_ISR_SOURCE 捕捉事件4 | ECAP_ISR_SOURCE 计数器_周期| ECAP_SOURCE 计数器_比较_周期)| ECAP_ARM_COUNTER_COUNTER_PERIOD
    
    /*禁用 CAP1-CAP4寄存器加载*/
    ECAP_disableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_4);
    
    /*配置 eCAP */
    ECAP_STOPCounter (ECAP_BASE_ADDRESS_转 速计 FAN_4);
    ECAP_enableCaptureMode (ECAP_BASE_ADDRESS_转 速计 FAN_4);
    
    ECAP_setCaptureMode (ECAP_BASE_ADDRESS_FAN_4、ECAP_Continuous_CAPTURE_MODE、ECAP_EVENT_1);
    ECAP_setEventPolarity (ECAP_BASE_ADDRESS_FAN_4、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE);
    ECAP_enableCounterResetOnEvent (ECAP_BASE_ADDRESS_T转 速计 FAN_4、ECAP_EVENT_1);
    
    eCAP_enableLoadCounter (eAP_BASE_ADDRESS_转 速计 FAN_4);
    ECAP_startCounter (ECAP_BASE_ADDRESS_转 速计 FAN_4);
    ECAP_enableTimeStampCapture (ECAP_BASE_ADDRESS_TAN_4);
    
    返回0;
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    AnBer、

    请查看以下链接中的类似 e2e 问题:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/930128