[原创] 【RTT&英飞凌PSoC6评估板(带触摸)】+ PWM输出测试

qinyunti   2023-6-18 13:37 楼主

前言

这一篇来进行PWM输出的实现与测试,后面我们会基于PWM进行音乐播放和打碟器的实现。使用示波器测量来确定占空比和频率的准确性。

 

代码

在前面https://bbs.eeworld.com.cn/thread-1247060-1-1.html的基础上进行。

 

PWM初始化

 cy_rslt_t pwm_initialize(void)

{

    cy_rslt_t rslt;

 

    rslt = cyhal_pwm_init(&pwm_led, P11_1, NULL);

 

    if (CY_RSLT_SUCCESS == rslt)

    {

        rslt = cyhal_pwm_set_duty_cycle(&pwm_led,

                                        50,

                                        10000);

        if (CY_RSLT_SUCCESS == rslt)

        {

            rslt = cyhal_pwm_start(&pwm_led);

        }

 

    }

 

    return rslt;

}

设置占空比和频率

 

cy_rslt_t pwm_setduty(uint8_t duty, uint32_t freq)

{

    cy_rslt_t rslt;

 

    cyhal_pwm_stop(&pwm_led);

    cyhal_pwm_set_duty_cycle(&pwm_led,duty,freq);

    rslt = cyhal_pwm_start(&pwm_led);

    return rslt;

}

测试代码main函数中

    pwm_initialize();

    pwm_setduty(50, 10000);

    for (;;)

    {

}

我们使用P11.1作为PWM输出测试。

image-20230618133655-1.png  

image-20230618133655-2.png  

准确性测试

设置50%占空比1000Hz

pwm_setduty(50, 1000);

实测50% 1.01KHz

 

image-20230618133655-3.jpeg  

设置50%占空比10000Hz

pwm_setduty(50, 10000);

实测49.99% 10.09KHz

image-20230618133655-4.jpeg  

设置80%占空比1000Hz

pwm_setduty(80, 1000);

实测80% 1.01KHz

image-20230618133655-5.jpeg  

设置80%占空比10000Hz

pwm_setduty(80, 10000);

实测79.98% 10.09KHz

image-20230618133655-6.jpeg  

 

 

考虑到测量误差,上述结果可以看到时间是准确的。

 

总结

使用官方的库函数,HAL接口进行外设操作比较简单,PWM操作几个接口就完成了,非常方便。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复