少于 1 分钟阅读 次阅读

现代 Linux 内核都集成了 PWM 子系统,它通过 ​​Sysfs​​(虚拟文件系统)向用户空间提供统一的控制接口。

  • 查看系统下导出的pwm控制目录 ```bash ls /sys/class/pwm/ -l

total 0 lrwxrwxrwx 1 root root 0 6月 20 2024 pwmchip0 -> ../../devices/platform/fdd70010.pwm/pwm/pwmchip0 lrwxrwxrwx 1 root root 0 6月 20 2024 pwmchip1 -> ../../devices/platform/fdd70020.pwm/pwm/pwmchip1 lrwxrwxrwx 1 root root 0 6月 20 2024 pwmchip2 -> ../../devices/platform/fe6e0000.pwm/pwm/pwmchip2 lrwxrwxrwx 1 root root 0 6月 20 2024 pwmchip3 -> ../../devices/platform/fe6e0020.pwm/pwm/pwmchip3

设备树每个使能的pwm,都会在此处生成一个pwmchipX目录(注意,此处的序号X不和设备树中的序号一一对应,需要通过类似于`fdd70010.pwm`的设备地址进行对应)。

例如此处,pwmchip0和pwmchip1分别对应设备树下的pwm1和pwm2,这两个pwm是系统下可以直接导出控制的,而另外两个pwmchip是用于背光,无法导出控制。

- 具体控制方式如下:
```bash
cd /sys/class/pwm/pwmchip0/       # 进入PWM控制器目录
echo 0 > export                   # 启用0号PWM通道
cd pwm0                           # 进入该通道配置目录
echo 10000 > period               # 设置周期为10000纳秒(100kHz)
echo 5000 > duty_cycle             # 设置高电平时间5000纳秒(占空比50%)
echo normal > polarity            # 设置极性为高电平有效
echo 1 > enable                   # 启动PWM输出

留下评论