liqunfeifei 发表于 2020-10-12 15:57:15

ROC-RK3308-CC-PLUS如何通过sys接口操作pwm?

在/sys/class/pwm/目录下有pwmchip0pwmchip1,要怎样export pwm并控制?

firefly_zhongw 发表于 2020-10-12 16:22:00

本帖最后由 firefly_zhongw 于 2020-10-12 16:55 编辑

1. 确保pwmchip0,pwmchip1没有被其他模块占用
2. 下面是pwmchip0的例子,设置pwm输出频率100K,占空比50%,极性为正极性:cd /sys/class/pwm/pwmchip0/
echo 0 > export
cd pwm0
echo 10000 > period
echo 5000 > duty_cycle
echo normal > polarity
echo 1 > enable


firefly_zhongw 发表于 2020-10-12 17:06:28

ls -l /sys/class/pwm/
total 0
lrwxrwxrwx 1 root root 0 Jan1 08:00 pwmchip0 -> ../../devices/platform/ff170010.pwm/pwm/pwmchip0
lrwxrwxrwx 1 root root 0 Jan1 08:00 pwmchip1 -> ../../devices/platform/ff180000.pwm/pwm/pwmchip1

cat /sys/kernel/debug/pwm
platform/ff180000.pwm, 1 PWM device
pwm-0   (vdd-core            ): requested enabled period: 5003 ns duty: 1200 ns polarity: inverse

platform/ff170010.pwm, 1 PWM device
pwm-0   (ir_tx               ): requested period: 24997 ns duty: 0 ns polarity: normal
1. 公版软件的pwmchip0对应的是ff170010(pwm5),被ir_tx使用了。
2. 公版软件的pwmchip1对应的是ff180000(pwm0),被vdd-core使用了。

liqunfeifei 发表于 2020-10-12 17:09:41

firefly_zhongw 发表于 2020-10-12 16:22
下面是pwmchip0的例子,设置pwm输出频率100K,占空比50%,极性为正极性:

搞清楚了,直接这样export是不行的。
要先在dts里打开pwm:
&pwm7 {
      status = "okay";
      pinctrl-names = "active";
      pinctrl-0 = <&pwm7_pin_pull_down>;
};
烧录kernel之后 cat /sys/kernel/debug/pwm,会发现多了一个pwm:
platform/ff180020.pwm, 1 PWM device
pwm-0   ((null)            ): period: 0 ns duty: 0 ns polarity: inverse

platform/ff180000.pwm, 1 PWM device
pwm-0   (vdd-core            ): requested enabled period: 5003 ns duty: 1200 ns polarity: inverse

platform/ff170030.pwm, 1 PWM device
pwm-0   (sysfs               ): requested enabled period: 9997 ns duty: 5003 ns polarity: normal

并且在/sys/class/pwm/目录下会发现多了一个pwmchip,
在多出来的那个pwmchip里面按照你这样操作就能用了。

liqunfeifei 发表于 2020-10-12 17:14:35

总之这个pwm驱动有点怪,从sys接口里面不能直接看出到底export了第几个pwm

firefly_zhongw 发表于 2020-10-12 17:35:12

可以通过ls -l /sys/class/pwm/, pwmchipX的软链接的(比如ff170030.pwm),在rk3308.dtsi里找对应的pwm(pwm7: pwm@ff170030)。

liqunfeifei 发表于 2020-10-14 13:45:55

明白了,谢谢

liqunfeifei 发表于 2020-10-29 09:31:30

firefly_zhongw 发表于 2020-10-12 17:35
可以通过ls -l /sys/class/pwm/, pwmchipX的软链接的(比如ff170030.pwm),在rk3308.dtsi里找对应的pwm(pw ...

还有个问题,我想通过pwm触发模式来读取风扇转速。所以,有pwm触发模式的驱动吗?

wjyfirefly 发表于 2020-12-15 17:04:35

本帖最后由 wjyfirefly 于 2020-12-15 17:12 编辑

{:4_93:}

0754tao 发表于 2023-5-6 14:59:37

{:4_93:}
页: [1]
查看完整版本: ROC-RK3308-CC-PLUS如何通过sys接口操作pwm?