1、测试效果(让pwm8输出占空比为50%,1.00KHz)
2 、kernel打开pwm8
&pwm8 {
status = "okay";
pinctrl-names = "active";
pinctrl-0 = <&pwm8m0_pins_pull_down>;
};
3、执行方法
使能pwm8
[root@ROCKEMD:/rockchip_test/pwm]# ./pwm.sh 1
关闭pwm8
[root@ROCKEMD:/rockchip_test/pwm]# ./pwm.sh 0
4、上脚本(pwm.sh)
#!/bin/sh
# date: 20201230
# rockemd
pwmPath="/sys/class/pwm/pwmchip1/pwm0"
if [ -n "`echo $1|sed 's/[2-9]//g'`" ];then
if [ ! -d "$pwmPath" ]; then
echo 0 > /sys/class/pwm/pwmchip1/export
echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/period
echo 500000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
fi
echo $1 > /sys/class/pwm/pwmchip1/pwm0/enable
if [ $1 -eq 0 ];then
echo 0 > /sys/class/pwm/pwmchip1/unexport
fi
else
echo "./pwm.sh <1 | 0>"
echo "1 = enable"
echo "0 = disabled"
fi
5、脚本说明
pwm驱动加载成功后,在/sys/class/pwm/下会产生pwmchip1目录,向export文件写入0,就会打开pwm定时器,会产生一个pwm0目录。相反往unexport文件写入0,就会关闭pwm定时器,同时pwm0目录会被删除。
该目录有以下几个文件:
enable :写入1使能pwm,写入0关闭pwm
polarity :有normal和inversed两个参数选择,表示输出引脚电平翻转。
duty_cycle :单位纳秒,在normal模式下,表示高电平持续的时间 在inversed模式下,表示低电平持续时间。
period :单位纳秒,表示pwm波持续周期
技术交流群: 微信号