ROC-RK3308-CC-PLUS如何通过sys接口操作pwm?
在/sys/class/pwm/目录下有pwmchip0pwmchip1,要怎样export pwm并控制?本帖最后由 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
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使用了。
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里面按照你这样操作就能用了。 总之这个pwm驱动有点怪,从sys接口里面不能直接看出到底export了第几个pwm 可以通过ls -l /sys/class/pwm/, pwmchipX的软链接的(比如ff170030.pwm),在rk3308.dtsi里找对应的pwm(pwm7: pwm@ff170030)。 明白了,谢谢 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:12 编辑
{:4_93:} {:4_93:}
页:
[1]