Firefly开源社区

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

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 2020-10-12 15:57:15     
在/sys/class/pwm/目录下有pwmchip0  pwmchip1,要怎样export pwm并控制?
回复

使用道具 举报

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

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



回复

使用道具 举报

发表于 2020-10-12 17:06:28     
  1. ls -l /sys/class/pwm/
  2. total 0
  3. lrwxrwxrwx 1 root root 0 Jan  1 08:00 pwmchip0 -> ../../devices/platform/ff170010.pwm/pwm/pwmchip0
  4. lrwxrwxrwx 1 root root 0 Jan  1 08:00 pwmchip1 -> ../../devices/platform/ff180000.pwm/pwm/pwmchip1
复制代码
  1. cat /sys/kernel/debug/pwm
  2. platform/ff180000.pwm, 1 PWM device
  3. pwm-0   (vdd-core            ): requested enabled period: 5003 ns duty: 1200 ns polarity: inverse

  4. platform/ff170010.pwm, 1 PWM device
  5. 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使用了。
回复

使用道具 举报

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 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里面按照你这样操作就能用了。
回复

使用道具 举报

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 2020-10-12 17:14:35     
总之这个pwm驱动有点怪,从sys接口里面不能直接看出到底export了第几个pwm
回复

使用道具 举报

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

使用道具 举报

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 2020-10-14 13:45:55     
明白了,谢谢
回复

使用道具 举报

56

积分

0

威望

0

贡献

技术小白

积分
56
发表于 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触发模式的驱动吗?
回复

使用道具 举报

121

积分

0

威望

0

贡献

技术小白

积分
121
发表于 2020-12-15 17:04:35     
本帖最后由 wjyfirefly 于 2020-12-15 17:12 编辑

回复

使用道具 举报

12

积分

0

威望

0

贡献

技术小白

积分
12
发表于 2023-5-6 14:59:37     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表