栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决 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输出的方波.

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号