如果利用高通内部定时器输出固定时间的pwm波形

项目开发过程中,有些设备需要pwm去驱动,例如马达。在马达运动过程中算法需要对马达的具体步数进行设置,由于sleep和定时器都存在不精确的问题,这时候需要高通PMIC内部寄存器来对pwm时间进行设置。

设置方法主要参考qpnp_leds.c驱动。

涉及到的主要代码有:

    pwm_disable(mdev->drv8834_pwm_dev);
    msleep(10);
    pwm_lut_config(mdev->drv8834_pwm_dev,PWM_CYCLE,duty_pct,mdev->lut_params);
    pwm_change_mode(mdev->drv8834_pwm_dev, 1);//LPG
    pwm_enable(mdev->drv8834_pwm_dev);

主要参考了rgb灯代码的设置方法,参数可按照需要进行设置.mdev->lut_params.ramp_step_ms代表了一次pwm所走的时间.

时间设置范围是0~500ms

利用示波器量了一下,很准,而且占用cpu资源很少.

 

你可能感兴趣的:(qcom)