资讯详情

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

选择使用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输出的方波.

谢谢你的阅读。如果你觉得可以,请 赞赞 !

标签: rohm光电传感器透射型rpi

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台