杰理-AC632x开发之PWM篇

本文介绍了杰理系列PWM的简单使用方法,包括如何通过宏定义处理占空比转换、pwm_ch0初始化时机的建议,以及频率与占空比修改的顺序。重点在于确保频率调整后及时更新占空比,以避免输出错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

杰理的该系列PWM的使用相对比较简单,有完整的封装接口,有相关例程,容易使用,开发过程中有几个小地方需要特别注意。

  1. pwm初始化:
//define pwm op: 0-100
#define PWM_RATIO(x)     (x*100)
static void PwmMotorInit(void)
{
    struct pwm_platform_data pwm_p_data;

    pwm_p_data.pwm_aligned_mode = pwm_edge_aligned;         //边沿对齐
    pwm_p_data.pwm_ch_num = pwm_ch0;            //通道号
    pwm_p_data.frequency = 1000;                            //频率Hz
    pwm_p_data.duty = PWM_RATIO(50);                 //占空比50%
    pwm_p_data.h_pin = IO_PORTA_08;                   //任意引脚
    pwm_p_data.l_pin = -1;                                //任意引脚,不需要就填-1
    pwm_p_data.complementary_en = 0;                        //两个引脚的波形, 0: 同步,  1: 互补,互补波形的占空比体现在H引脚上
    mcpwm_init(&pwm_p_data);

    mcpwm_close(pwm_ch0);
}

pwm_p_data.duty这个参数,接口要求是0-10000,和我们平时常说的占空比的0-100不一样,所以我们定义了一个宏#define PWM_RATIO(x) (x*100)来做转换,x给的参数就是0-100,这样子更加直观一些,容易理解。
另外我们修改一下mcpwm_init初始化这个函数,初始化的时候不要open,等用的时候再调用open,比较方便。
在这里插入图片描述
2. 频率占空比的动态修改顺序

void PwmChangeConfig(iCheer_Pwm_type type,u32 frequency,u16 duty)
{
	 mcpwm_set_frequency(pwm_ch0, pwm_edge_aligned,frequency);
	 mcpwm_set_duty(pwm_ch0,PWM_RATIO(duty));
 }

频率修改后,占空比要同时调整,否则原来的占空比计数timer值没有变化,占空比输出就会出错。而且要先调整频率,再调占空比(因为占空比的计算依赖于pwm输出频率)。

原创文章,欢迎转载,请注明来源,未经书面允许,请勿用于商业用途。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值