关于如何在较新版本的内核上配置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。
答案 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