选择使用raspberry 直接操作终端PWM:
1.在/boot/config.txt中添加:
dtoverlay=pwm,pin=12,func=2
若是有多个pwm,则:
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
(根据实际情况进行修改pin)
2.重启,检查pwm
lsmod | grep pwm #pwm_bcm2835 2631 2
3.系统配置
首先安装librpip
librpip 下载链接:Download | librpip
librpip 安装教程:librpip-pwm-init | librpip
4.启动pwm-init.service
systemctl enable pwm-init.service
(如果提示失败,没有找到服务,没关系,我们用以下命令启动, 建议运行两次)
usr/local/bin/librpip-util/librpip-pwm-init
如下图所示,即启动成功,尽管有很多error(我不知道为什么)
root@raspberrypi:~# /usr/local/bin/librpip-util/librpip-pwm-init [pwmclk INFO] Mem Base is 0x0 [pwmclk INFO] Mem Size is 0xfe000000 [pwmclk ERROR] Clock Not Set. Error reading memory settings from /sys/firmware/devicetree/base/soc/ranges: Success /usr/local/bin/librpip-util/librpip-pwm-init: 10: echo: echo: I/O error /usr/local/bin/librpip-util/librpip-pwm-init: 11: echo: echo: I/O error chgrp: invalid group: ‘pwm’
也可以使用以下查询
ls -l /sys/class/pwm/pwmchip0/pwm*
4.使用以下命令进行测试pwm
#20000对应25khz,200000对应250khz echo 20000 > /sys/class/pwm/pwmchip0/pwm0/period # 5000对应1:4,5000/20000的关系,值不能超过200000 echo 5000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 开始PWM输出,若想关闭,则将1变为0 echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
到目前为止,问题已经解决,
您可以尝试使用示波器观测PWM输出的方波.
谢谢你的阅读。如果你觉得可以,请 赞赞 !