LoginSignup
0
0

OrangePi5(debian)でPWMを使えるようにするメモ

Posted at

はじめに

OrangePi5でPWMを使えるようにするためのメモ

参考文献

こちらに書いてある内容を参考にしました。

また、PWMの取り扱いについては公式ドキュメントでも記載されている。
PDFをダウンロードしてPWMで検索をかければ、sudo実行しているコマンドに当たるはず。

環境

  • OrangePi5
  • debian (Orange Pi 1.1.4 Bullseye with Linux 5.10.110-rockchip-rk3588)

設定

今回行うことは2点ある。

  • orangepi-configでのPWM許可
  • rules追記

orangepi-configでのPWM許可

まず事前知識として、orangepi5ではPWMを実行するためのアドレスを別々のピンで共有しているものがあることを覚えておく。例えば、16ピンと26ピン、15ピンと23ピンは同じアドレスを使っていることから、どちらか片方を許可する必要がある。
(OrangePi_5_RK3588S_User Manual_v0.7.pdfのp203参照)

アドレス(pwmchip) 物理ピン PWM名称
fd8b0000 18 pwm0-m1
fd8b0010 16 pwm1-m1
fd8b0010 26 pwm1-m2
fd8b0030 15 pwm3-m0
fd8b0030 23 pwm3-m2
febf0010 3 pwm13-m2
febf0030 7 pwm15-m2
febf0020 11 pwm14-m1

上記を踏まえた上で、orangepi-configを開く。

sudo orangepi-config

SystemHardWareと選択する。

image.png

image.png

使用するpwmにカーソルをあわせてSpaceキーを押して選択する。
選択すると、該当の項目に*が表示される。

image.png

Saveを選択すると同じ画面に戻るため、先程設定した項目に*でチェックが入っていることを確認したらBackに選択を移して戻る。

image.png

再起動を促されるため、そのままRebootを選択して再起動する。

rules追記

sudo無しでPWMを扱えるようにするための設定をここで実施する。
ターミナルで下記コマンドを実行する。

$ sudo groupadd pwm
$ sudo usermod -aG pwm $USER

60-pwm.rulesを開いて下記に書き換え。
新規作成は未記入であればそのままコピペでOK。

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は使用可能となる。pwmchipとアドレスの対応を見ながらgpioコマンドを叩けばPWMが発生するはず。

確認

下記は公式ドキュメントのpp.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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0