解决 Rspberry Compute Module 4 使用Python的 RPi.GPIO 导致PWM输出频率高于某个值,脉宽恒定1:1

解决 Rspberry Compute Module 4 使用Python的 RPi.GPIO 导致PWM输出频率高于某个值,脉宽恒定1:1,第1张

解决 Rspberry Compute Module 4 使用Python的 RPi.GPIO 导致PWM输出频率高于某个值,脉宽恒定1:1

使用Rspberry Compute Module 4 使用Python的 RPi.GPIO 导致PWM输出频率高于某个值,脉宽恒定1:1,测试时,脉宽设定1:4,在频率大于5khz时候,脉宽开始逐渐趋向1:1,在10khz时候几乎达到1:1

我怀疑可能是python 库底层有封装,导致的问题!

解决办法:

选择使用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得到,且值不能大于20000
echo 5000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
# 开始PWM输出,若想关闭,则将1变为0
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

至此,问题已解决,

你可以尝试使用示波器观测PWM输出的方波.

感谢您的阅读,如果感觉可以的话,求个 赞赞 !

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5650877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存