1.PWM 同样也是通过 sysfs 方式进行操控,进入到/sys/class/pwm 目录下。
8 个以 pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了 I.MX6U的 8 个 PWM 控制器, I.MX6U 总共有 8 个 PWM 控制器。
2.进入到 pwmchip0 目录下
export、 npwm 以及 unexport 这三个属性文件
2.1)npwm: 这是一个只读属性,读取该文件可以得知该 PWM 控制器下共有几路 PWM 输出。
I.MX6U 每个 PWM 控制器只有 1 路 PWM 输出,所以总共有 8 路 PWM,分别对应 I.MX6U 的
PWM1~PWM8 这 8 路输出(pwmchip0 对应 PWM1, pwmchip1 对应 PWM2,以此类推,开发板出厂系统中, PWM1 已经被用作 LCD 背光控制了, 应用层不能直接对它进行控制了;)
2.2)export: 与 GPIO 控制一样,在使用 PWM 之前,也需要将其导出,通过 export 属性进行导出。
echo 0 > export
2.3)unexport: 将导出的 PWM 删除。当使用完 PWM 之后,我们需要将导出的 PWM 删除。
echo 0 > unexport
3.通过 export 导出之后,便会生成 pwm0 这个目录
pwm0 目录下的内容
3.1)enable: 可读可写,写入"0"表示禁止 PWM;写入"1"表示使能 PWM。读取该文件获取 PWM 当前是禁止还是使能状态。
echo 0 > enable #禁止 PWM 输出
echo 1 > enable #使能 PWM 输出
3.2)polarity: 用于设置极性,可读可写
"normal":普通;
"inversed":反转;
echo normal > polarity #默认极性
echo inversed > polarity #极性反转
3.3)period: 用于配置 PWM 周期, 可读可写;写入一个字符串数字值,以 ns(纳秒)为单位
echo 10000 > period #PWM 周期设置为 10us(10 * 1000ns)
3.4)duty_cycle: 用于配置 PWM 的占空比, 可读可写;写入一个字符串数字值, 同样也是以 ns 为单位
echo 5000 > duty_cycle #PWM 占空比设置为 5us
4.应用