【求助】TuyaOS开发PWM初始化问题
现在使用TuyaOS开发一个产品,使用的SDK 版本为TLSR8258_3.7.1 , 两路PWM 输出, 即CW 互补的方式, PWM 有效电平为高电平输出。现在第二路没有开启反向的时候初始化正常,当第二路PWM 开启反向后, 初始化时候, 该PWM会有一段时间高电平出来,本来应该是低电平的。 详情见附件图片,图片: 1.png为不反相输出,图2.png为反向输出。这个问题麻烦帮忙看下呢
现在使用TuyaOS开发一个产品,使用的SDK 版本为TLSR8258_3.7.1 , 两路PWM 输出, 即CW 互补的方式, PWM 有效电平为高电平输出。现在第二路没有开启反向的时候初始化正常,当第二路PWM 开启反向后, 初始化时候, 该PWM会有一段时间高电平出来,本来应该是低电平的。 详情见附件图片,图片: 1.png为不反相输出,图2.png为反向输出。这个问题麻烦帮忙看下呢
您好:第二路PWM 开启反向 是调用了什么函数? 麻烦贴一下函数,方便我们定位问题,谢谢
在公版的基础上修改了两个初始化参数, 换了下GPIO 测试验证:v_cfg.duty = 1000;
v_cfg.polarity = TUYA_PWM_NEGATIVE;
1.请先确认 PWM_NUM_0 的frequency 是多少,如果是1000的话,duty = frequency 则会输出持续电平
2.下图是我用demo,pwm输出的结果,frequency是1000,实际输出是符合要求的
你现在是PWM1 的端口反向,你这样试下,设备上电的时候,PWM0 配置成输出100%高电平, PWM1反向,即CW互补的情况,那么PWM1 应该配置成输出低电平(PWM的有效占空比为0%),你看下设备上电的时候, PWM1 会不会有短暂的一瞬间高电平出来,正常情况下不应该会有高电平出来,因为配置的有效占空比是0%
这个问题我们有复现,我们先确认下,之后会给你解决方案
您好,我们实现了 tkl_pwm_idle_level_set 函数,用于配置 调用 tal_pwm_init 后到调用 tal_pwm_start 之间这段时间的pwm输出电平。之前的问题就是由于该电平输出错误导致的出现异常高电平
第一个波形从电平调到高电平是因为进入了配置默认输出为高的函数,可以看到这时候第二个波形输出是配置的低
这是默认输出 1路低 2路高 后开启1K,占空比30%的互补波形
https://images.tuyacn.com/rms-static/7d ... =tkl_pwm.c
1.您可通过该路径下载更新后的 tkl_pwm.c 并将其替换原来开放框架路径下的同名文件,进行重新编译
2.为了实现多路PWM输出严格同步,更新后的该文件,tal_pwm_xxx_set 修改占空比,正反向,频率等后需要配套 tal_pwm_start 进行使用
3.如有问题欢迎留言沟通,谢谢