OrangePi5(debian)启用PWM的备忘录
首先
为了使OrangePi5能够使用PWM,这是一个备忘录
参考文献可以提供参考信息和支持证据。
我参考了这里写的内容。
此外,PWM的处理也已在官方文件中进行了说明。
如果下载PDF并使用PWM进行搜索,应该能找到与执行sudo命令相对应的内容。
环境
-
- OrangePi5
- debian (Orange Pi 1.1.4 Bullseye with Linux 5.10.110-rockchip-rk3588)
设定
这次要做的事情有两个要点。
-
- orangepi-configでのPWM許可
- rules追記
在OrangePi配置中启用PWM功能
首先,需要作为事前知识记住,在橙子派5上为了执行PWM功能,存在共享不同引脚的地址的情况。例如,16引脚和26引脚,15引脚和23引脚使用相同的地址,因此需要允许其中一个引脚的使用。(参考OrangePi_5_RK3588S用户手册v0.7的第203页)
アドレス(pwmchip)物理ピンPWM名称fd8b000018pwm0-m1fd8b001016pwm1-m1fd8b001026pwm1-m2fd8b003015pwm3-m0fd8b003023pwm3-m2febf00103pwm13-m2febf00307pwm15-m2febf002011pwm14-m1
根据上述内容,打开orangepi-config。
sudo orangepi-config
选择“系统”然后选择“硬件”。


将光标对准要使用的PWM,按下空格键进行选择。
选择后,相应的项目将显示*。

只需提供一种选项,以下是在中文中的表达:
当选择保存时,返回到相同的屏幕,然后确认之前设置的项目已经被标记为*,然后选择“返回”以返回。

因为被要求重新启动,直接选择重新启动。
规则的补充说明
在这里进行设置,以便无需使用sudo来操作PWM。
在终端中执行以下命令。
$ sudo groupadd pwm
$ sudo usermod -aG pwm $USER
请打开文件”60-pwm.rules”并进行以下修改。
如果是新创建的文件且为空,请直接进行复制粘贴即可。
SUBSYSTEM=="pwm", PROGRAM="/bin/sh -c '\
chown -R root:pwm /sys/class/pwm && chmod -R 770 /sys/class/pwm; \
chown -R root:pwm /sys/devices/platform/*.pwm/pwm/pwmchip* && chmod -R 770 /sys/devices/platform/*.pwm/pwm/pwmc>
'"
保存文件后重新启动。
重新启动完成后执行以下命令。在这里显示的pwmchip数量可能会因为在orangepi-config中允许的PWM而发生变动。
$ ls -l /sys/class/pwm/
total 0
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip0 -> ../../devices/platform/fd8b0000.pwm/pwm/pwmchip0
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip1 -> ../../devices/platform/fd8b0020.pwm/pwm/pwmchip1
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip2 -> ../../devices/platform/fd8b0030.pwm/pwm/pwmchip2
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip3 -> ../../devices/platform/febd0020.pwm/pwm/pwmchip3
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip4 -> ../../devices/platform/febf0010.pwm/pwm/pwmchip4
lrwxrwxrwx 1 root pwm 0 May 3 00:17 pwmchip5 -> ../../devices/platform/febf0030.pwm/pwm/pwmchip5
一旦这样,当PWM变得可用时,我们应该在打开gpio命令的同时观察pwmchip和地址的对应,这样就可以产生PWM。
确认
我是在官方文档的204-205页上找到的示例,并在不使用sudo的情况下进行了执行。要确定pwmchipN对应的是什么,请使用命令ls -l /sys/class/pwm/ 进行确认。
$ echo 0 > /sys/class/pwm/pwmchip2/export
$ echo 20000000 > /sys/class/pwm/pwmchip2/pwm0/period
$ echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle
$ echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable