PWM 和之前讲解的 LED、GPIO 相同,都是通过 sysfs 方式进行操控的。开发板系统启
动之后进入到/sys/class/pwm 目录下,如下所示:
在 pwm 目录下存在 3 个以 pwmchipX(X 表示数字)命名的文件夹。在本章节的开始部
分,重新烧写了设备树内核镜像,该设备树中总共使能了三个 PWM,分别为 PWM0,PWM4
和 PWM5,系统会根据 PWM 的编号大小进行排序,在这里 PWM0 对应 pwmchip0、PWM4 对
应 pwmchip1,PWM5 对应 pwmchip2。
通过查询网盘“TOP-3568 开发板\01_【iTOP-RK3568 开发板】基础资料\01_iTOP-RK3568
硬件资料\03_芯片数据手册\01_rk3568 数据手册和参考手册”路径下的 Rockchip RK3568 Data
sheet V1.0-20201210.pdf 数据手册得知,RK3568 总共有 16 个 PWM 控制器(具体的查询会
在之后的驱动手册中进行讲解,本章节只是学习 PWM 的使用),本章节将会以 LED9 用户灯
控制引脚 GPIO0_B7 对应的 PWM0 为例进行讲解和演示。使用以下命令进入 PWM0 对应的
pwmchip0 目录下如下图所示:
在这个目录下总共有七个文件分别为 device、export、npwm、power、subsystem、uevent 和
unexport。需要关注的是 export、npwm 以及 unexport 这三个属性文件,下面一一进行介绍:
npwm:是一个只读属性,读取该文件可以得知该 PWM 控制器下共有几路 PWM 输出,
如下所示:
export:在使用 PWM 之前,通过 export 属性进行导出,以下所示:
echo 0 > export
unexport:当使用完 PWM 之后,需要将导出的 PWM 删除,譬如:
echo 0 > unexport
写入到 unexport 文件中的编号与写入到 export 文件中的编号是相对应的;需要注意的
是,export 文件 和 unexport 文件都是只写的、没有读权限。
再次使用以下命令导出 pwm0 目录,导出成功之后进入该文件夹如下图所示:
echo 0 > export
cd pwm0
可以看到 pwm0 文件夹下分别有 capture、duty_cycle、enable、period、polarity、power、
uevent 七个文件,而需要了解的文件是 duty_cycle、enable、period 以及 polarity 这四个属性
文件,接下来分别介绍这四个属性文件的作用:
polarity:用于 PWM 极性的查看,只读属性,这里为 inversed 表示极性反转,如下图所示:
period:用于配置 PWM 周期,可读可写;写入一个字符串数字值,以 ns(纳秒)为单
位,譬如配置 PWM 周期为 10us(微秒):
echo 10000 > period
duty_cycle:用于配置 PWM 的占空比,可读可写;写入一个字符串数字值,同样也是以
ns 为单位,譬如:
echo 5000 > duty_cycle
enable:使能 PWM 输出通常配置好 PWM 之后,再使能 PWM。可读可写,写入"0"表
示禁止 PWM;写入"1"表示使能 PWM。
允许 PWM 输出:
echo 1 > enable
禁止 PWM 输出:
echo 0 > enable
更多内容可以B站搜:迅为RK3568开发板