MCXA156 PWM Capture Setup

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

MCXA156 PWM Capture Setup

509件の閲覧回数
ZRay
Contributor I

Hi

I would like to use the PWM Capture feature.

However, there doesn't seem to be a relevant example in the SDK there is only a sample for PWM output.

I noticed there is a Capture API in the Driver, but my attempts so far have not been successful.

ZRay_1-1762480522655.png

I would like to ask if there are any other related samples that I can refer to.

My code is as follows:

int main(void)
{
    BOARD_InitHardware();
    PRINTF("FlexPWM input capture only\r\n");

    pwm_config_t pwmConfig;
    PWM_GetDefaultConfig(&pwmConfig);
    pwmConfig.pairOperation = kPWM_Independent;
    pwmConfig.enableDebugMode = true;

    PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_0, &pwmConfig);

    // Setup Input Capture
    pwm_input_capture_param_t captureParams = {0};
    captureParams.captureInputSel = 0;
    captureParams.edge0 = kPWM_RisingEdge;
    captureParams.edge1 = kPWM_FallingEdge;
    captureParams.enableOneShotCapture = false;
    captureParams.fifoWatermark = 0;
    captureParams.edgeCompareValue = 0;
    PWM_SetupInputCapture(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmX, &captureParams);


    PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_0);

    while (1)
    {
        uint16_t captured_cval0 = BOARD_PWM_BASEADDR->SM[kPWM_Module_0].CVAL0;
        PRINTF("Capture Value 0 Register: %u\r\n", captured_cval0);
        uint16_t captured_cval1 = BOARD_PWM_BASEADDR->SM[kPWM_Module_0].CVAL1;
        PRINTF("Capture Value 1 Register: %u\r\n", captured_cval1);
        
        SDK_DelayAtLeastUs(100000, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
    }
}
 

Thank you.

ラベル(1)
0 件の賞賛
返信
4 返答(返信)

476件の閲覧回数
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @ZRay 

Thanks for your question!

You can check out the capture demo provided in the SDK.

Alice_Yang_0-1762496318159.png

 

BR

Alice

0 件の賞賛
返信

419件の閲覧回数
ZRay
Contributor I

Hi @Alice_Yang ,

Thank you for reply.

The CTimer Capture example is work, but since our CTimer is used for other purposes, we wanted to ask if there are any reference examples related to PWM Capture.

Thank you.

0 件の賞賛
返信

414件の閲覧回数
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @ZRay 

Thank you for your reply.

Yes, there is no dedicated PWM capture demo based on the MCXA156. However, there is a PWM capture example implemented using the SCTIMER module. You may refer to its principle and implementation as a reference for developing PWM capture functionality on FlexPWM.

https://www.nxp.com/docs/en/application-note/AN11538.zip 

 

BR

Alice

0 件の賞賛
返信

158件の閲覧回数
ZRay
Contributor I

Hi @Alice_Yang 

Thanks for info.

I figured it out.

int main(void)
{
    BOARD_InitHardware();
    PRINTF("FlexPWM input capture only\r\n");

    pwm_config_t pwmConfig;
    PWM_GetDefaultConfig(&pwmConfig);
    //pwmConfig.prescale = kPWM_Prescale_Divide_1;
    pwmConfig.reloadLogic 	= kPWM_ReloadPwmFullCycle;
    pwmConfig.pairOperation = kPWM_Independent;
    pwmConfig.enableDebugMode = true;

    if( PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_0, &pwmConfig)== kStatus_Fail){
    	PRINTF("Can't initialize PWM\n");
    	return 0;
    }

    // Setup Input Capture
    pwm_input_capture_param_t captureParams = {0};
    captureParams.captureInputSel = 0;
    captureParams.edge0 = kPWM_RisingEdge;
    captureParams.edge1 = kPWM_FallingEdge;
    captureParams.enableOneShotCapture = false;
    //captureParams.fifoWatermark = 0;
    //captureParams.edgeCompareValue = 0;
    PWM_SetupInputCapture(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmX, &captureParams);

    //PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0, true);

    PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_0);

    while (1)
    {
        uint16_t rising = BOARD_PWM_BASEADDR->SM[kPWM_Module_0].CVAL0;
        uint16_t falling = BOARD_PWM_BASEADDR->SM[kPWM_Module_0].CVAL1;
        uint16_t high = falling > rising ? falling - rising : (falling + 0x10000) - rising;
        PRINTF("rising: %u  falling: %u  high: %u\r\n",rising, falling, high);
        SDK_DelayAtLeastUs(100000, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
    }
}

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2200423%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EMCXA156%20PWM%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2200423%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%83%8F%E3%82%A4%3C%2FP%3E%3CP%3E%3CSPAN%3EPWM%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81SDKs%20%E3%81%AB%E3%81%AF%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E4%BE%8B%E3%81%8C%E3%81%AA%E3%81%8F%E3%80%81PWM%20%E5%87%BA%E5%8A%9B%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E3%81%BF%E3%81%8C%E3%81%82%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%AB%20Capture%20API%20%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B0%97%E3%81%A5%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E3%81%AE%E8%A9%A6%E3%81%BF%E3%81%AF%E6%88%90%E5%8A%9F%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22ZRay_1-1762480522655.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22ZRay_1-1762480522655.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F364345iCCADCCB11887F5FF%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22ZRay_1-1762480522655.png%22%20alt%3D%22ZRay_1-1762480522655.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E4%BB%96%E3%81%AB%E5%8F%82%E8%80%83%E3%81%AB%E3%81%AA%E3%82%8B%E9%96%A2%E9%80%A3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%81%8A%E8%81%9E%E3%81%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22%22%3E%E7%A7%81%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%3A%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3Eint%20main(void)%0A%7B%0A%20%20%20%20BOARD_InitHardware()%3B%0A%20%20%20%20PRINTF(%22FlexPWM%20input%20capture%20only%5Cr%5Cn%22)%3B%0A%0A%20%20%20%20pwm_config_t%20pwmConfig%3B%0A%20%20%20%20PWM_GetDefaultConfig(%26amp%3BpwmConfig)%3B%0A%20%20%20%20pwmConfig.pairOperation%20%3D%20kPWM_Independent%3B%0A%20%20%20%20pwmConfig.enableDebugMode%20%3D%20true%3B%0A%0A%20%20%20%20PWM_Init(BOARD_PWM_BASEADDR%2C%20kPWM_Module_0%2C%20%26amp%3BpwmConfig)%3B%0A%0A%20%20%20%20%2F%2F%20Setup%20Input%20Capture%0A%20%20%20%20pwm_input_capture_param_t%20captureParams%20%3D%20%7B0%7D%3B%0A%20%20%20%20captureParams.captureInputSel%20%3D%200%3B%0A%20%20%20%20captureParams.edge0%20%3D%20kPWM_RisingEdge%3B%0A%20%20%20%20captureParams.edge1%20%3D%20kPWM_FallingEdge%3B%0A%20%20%20%20captureParams.enableOneShotCapture%20%3D%20false%3B%0A%20%20%20%20captureParams.fifoWatermark%20%3D%200%3B%0A%20%20%20%20captureParams.edgeCompareValue%20%3D%200%3B%0A%20%20%20%20PWM_SetupInputCapture(BOARD_PWM_BASEADDR%2C%20kPWM_Module_0%2C%20kPWM_PwmX%2C%20%26amp%3BcaptureParams)%3B%0A%0A%0A%20%20%20%20PWM_StartTimer(BOARD_PWM_BASEADDR%2C%20kPWM_Control_Module_0)%3B%0A%0A%20%20%20%20while%20(1)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20uint16_t%20captured_cval0%20%3D%20BOARD_PWM_BASEADDR-%26gt%3BSM%5BkPWM_Module_0%5D.CVAL0%3B%0A%20%20%20%20%20%20%20%20PRINTF(%22Capture%20Value%200%20Register%3A%20%25u%5Cr%5Cn%22%2C%20captured_cval0)%3B%0A%20%20%20%20%20%20%20%20uint16_t%20captured_cval1%20%3D%20BOARD_PWM_BASEADDR-%26gt%3BSM%5BkPWM_Module_0%5D.CVAL1%3B%0A%20%20%20%20%20%20%20%20PRINTF(%22Capture%20Value%201%20Register%3A%20%25u%5Cr%5Cn%22%2C%20captured_cval1)%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20SDK_DelayAtLeastUs(100000%2C%20SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY)%3B%0A%20%20%20%20%7D%0A%7D%3C%2FPRE%3E%3CDIV%20class%3D%22%22%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%20class%3D%22%22%3E%3CP%20class%3D%22%22%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2200423%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EMCXA%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2202630%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MCXA156%20PWM%20Capture%20Setup%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2202630%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F214745%22%20target%3D%22_blank%22%3E%40ZRay%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%81%94%E8%BF%94%E4%BF%A1%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%81%AF%E3%81%84%E3%80%81MCXA156%20%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8F%E5%B0%82%E7%94%A8%E3%81%AE%20PWM%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%E3%83%87%E3%83%A2%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81SCTIMER%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%AE%9F%E8%A3%85%E3%81%95%E3%82%8C%E3%81%9F%20PWM%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E4%BE%8B%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82FlexPWM%20%E4%B8%8A%E3%81%A7%20PWM%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E6%A9%9F%E8%83%BD%E3%82%92%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E5%8F%82%E8%80%83%E3%81%A8%E3%81%97%E3%81%A6%E3%80%81%E3%81%9D%E3%81%AE%E5%8E%9F%E7%90%86%E3%81%A8%E5%AE%9F%E8%A3%85%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fapplication-note%2FAN11538.zip%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fapplication-note%2FAN11538.zip%3C%2FA%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%82%A2%E3%83%AA%E3%82%B9%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2202416%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MCXA156%20PWM%20Capture%20Setup%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2202416%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F27788%22%20target%3D%22_blank%22%3E%40Alice_Yang%3C%2FA%3E%20%E3%80%81%3C%2FP%3E%3CP%20class%3D%22%22%3E%E3%81%94%E8%BF%94%E4%BF%A1%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20class%3D%22%22%3ECTimer%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AE%E4%BE%8B%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81CTimer%20%E3%81%AF%E4%BB%96%E3%81%AE%E7%9B%AE%E7%9A%84%E3%81%AB%E3%82%82%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81PWM%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AB%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E5%8F%82%E7%85%A7%E4%BE%8B%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E5%B0%8B%E3%81%AD%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%20class%3D%22%22%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2200571%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MCXA156%20PWM%20Capture%20Setup%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2200571%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F214745%22%20target%3D%22_blank%22%3E%40ZRay%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%81%94%E8%B3%AA%E5%95%8F%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%EF%BC%81%3C%2FP%3E%0A%3CP%3ESDK%20%E3%81%A7%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%E3%83%87%E3%83%A2%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Alice_Yang_0-1762496318159.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Alice_Yang_0-1762496318159.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F364384i7E35F83EB9E390A3%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Alice_Yang_0-1762496318159.png%22%20alt%3D%22Alice_Yang_0-1762496318159.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%82%A2%E3%83%AA%E3%82%B9%3C%2FP%3E%3C%2FLINGO-BODY%3E