BeagleBone Black上的PWM(v4.14)

时间:2018-05-06 18:17:22

标签: beagleboneblack pwm

关于如何在较新版本的内核上配置Beaglebone for PWM的信息非常少。通过slot文件与PWM接口的Past instructions已经过时,因为slot文件和bone_capemgr是内核的disabled in v4.14

如何使用新内核为BeagleBone Black配置PWM?我使用的是运行内核版本为4.14.37-ti-r46的TI AM335x BeagleBone Black Wireless。

2 个答案:

答案 0 :(得分:3)

正如问题所述,slot文件和bone_capemgr是内核的disabled in v4.14,支持U-Boot overlays

response by the BeagleBone kernel developer中所述,U-Boot现在处理叠加并自动启用等效的cape_enable=bone_capemgr.enable_partno=univ-all,BB-ADC,BB-PWM0,BB-PWM1,BB-PWM2

  

所有这些都是开箱即用的,现在出货的图片   下:

     

https://beagleboard.org/latest-images

     

对于pwm,请务必参考   https://github.com/beagleboard/bb.org-overlays/blob/master/examples/cape-unversal-pwm.txt   和config-pin pwm< pin#> ..

因此,PWM接口已经配置好了!现在只需导出并使用PWM。例如,访问pwm0:

root@beaglebone:~# cd /sys/class/pwm/pwmchip0
root@beaglebone:/sys/class/pwm/pwmchip0# ls
device  export  npwm  power  subsystem  uevent  unexport

root@beaglebone:/sys/class/pwm/pwmchip0# echo 0 > export
root@beaglebone:/sys/class/pwm/pwmchip0# ls
device  export  npwm  power  pwm-0:0  subsystem  uevent  unexport

root@beaglebone:/sys/class/pwm/pwmchip0# ls pwm-0:0
capture  device  duty_cycle  enable  period  polarity  power  subsystem  uevent

注意:如果引脚已在使用中,您可能需要在disable_uboot_overlay_video=1中使用/boot/uEnv.txt禁用HDMI。

要确定PWM接口的引脚映射,请参阅我的后续帖子PWM chip to pin mapping on BeagleBone Black (v4.14)

答案 1 :(得分:1)

用于 BeagleBone 的 debian 的 last image(Debian 10.3 buster)为我们提供了 pwm 输出的下一个引脚映射:

P8.13 corresponds to folder: /sys/class/pwm/pwm-6:1
P8.19 corresponds to folder: /sys/class/pwm/pwm-6:0
P9.14 corresponds to folder: /sys/class/pwm/pwm-3:0
P9.16 corresponds to folder: /sys/class/pwm/pwm-3:1
P9.21 corresponds to folder: /sys/class/pwm/pwm-1:1
P9.22 corresponds to folder: /sys/class/pwm/pwm-1:0

P8.13、P8:19、P9.14、P9.16的默认周期为500000,而P9.21、P9.22的默认周期为20000。

使用 PWM 的关键是下一条指令,在上一篇关于 PWM 接口的引脚映射的链接中提到了该指令:

config-pin P8.13 pwm
config-pin P8.19 pwm
config-pin P9.14 pwm
config-pin P9.16 pwm
config-pin P9.21 pwm
config-pin P9.22 pwm

这样做之后,为所有需要的 PWM 输出设置:

debian@beaglebone:~$ cd /sys/class/pwm/pwm-6:1
debian@beaglebone:~$ echo 250000 > duty_cycle
debian@beaglebone:~$ echo 1 > enable