pwm设备树开启

  1. sudo fire-config
  1. # 在终端中输入如下命令,可以查看到当前板卡的PWM资源:
  2. ls /sys/class/pwm/

pwm02.png

使用python-periphery

python-periphery 库支持的PWM输出是基于Linux的PWM子系统实现的,所以要想利用该库做PWM输出, 需要板卡提供支持。像鲁班猫板卡,就可以完美使用 python-periphery 库实现PWM输出。 这样这样一来,就不需要我们在软件层面上利用GPIO模拟PWM输出。

安装 python-periphery

  1. # 在板卡使用如下命令安装
  2. sudo pip3 install python-periphery

periphery输出PWM

  1. from periphery import PWM
  2. import time
  3. try:
  4. # 定义占空比递增步长
  5. step = 0.05
  6. # 定义range最大范围
  7. rangeMax = int(1/0.05)
  8. # 打开 PWM 8, channel 0 ,对应开发板上PWM8外设
  9. pwm = PWM(1, 0)
  10. # 设置PWM输出频率为 1 kHz
  11. pwm.frequency = 1e3
  12. # 设置占空比为 0%,一个周期内高电平的时间与整个周期时间的比例。
  13. pwm.duty_cycle = 0.00
  14. # 开启PWM输出
  15. pwm.enable()
  16. while True:
  17. for i in range(0,rangeMax):
  18. # 休眠step秒
  19. time.sleep(step)
  20. # 设置占空比每次加 step% , 使用 round 避免浮点运算误差
  21. pwm.duty_cycle = round(pwm.duty_cycle+step,2)
  22. # 常灭1秒
  23. if pwm.duty_cycle == 0.0:
  24. time.sleep(1)
  25. for i in range(0,rangeMax):
  26. time.sleep(step)
  27. pwm.duty_cycle = round(pwm.duty_cycle-step,2)
  28. except:
  29. print("Some errors occur!\n")
  30. finally:
  31. # 退出时熄灭LED
  32. pwm.duty_cycle = 0.0
  33. # 释放资源
  34. pwm.close()

代码说明:

  • 第10行,创建了一个PWM对象
  • 第12、14行,分别对该PWM对象的参数做了初始化,分别是PWM输出波形的频率、占空比
  • 第16行,根据对应的参数,使能PWM波形输出