5. PWM

PWM是脉冲宽度调制,是一种模拟控制信号,通过改变脉冲的宽度来控制模拟信号的输出。

LubanCat-RV06板卡的30pin接口上默认只有1个PWM接口

未找到图片

PWM

引脚

功能

PWM7

12

PWM输出

5.1. 检查PWM设备

1
ls /sys/class/pwm/
1
2
3
 # ls /sys/class/pwm/
 pwmchip0  pwmchip7
 #
  • 可以看到出现了两个PWM设备,分别是pwmchip0和pwmchip7,pwmchip0是屏幕背光,pwmchip7是30pin排针上的PWM接口。

5.2. PWM模式

PWM模式有两种模式 - Continous : 连续模式,周期性的输出PWM信号 - OneShot : 单次模式,输出特定次数的PWM信号

5.3. 命令行操作

5.3.1. Continous

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#将pwm7导出到用户空间
echo 0 > /sys/class/pwm/pwmchip7/export

#设置pwm周期 单位为ns
echo 1000000 > /sys/class/pwm/pwmchip7/pwm0/period

#设置占空比
echo 500000 > /sys/class/pwm/pwmchip7/pwm0/duty_cycle

#设置pwm极性
echo "normal" > /sys/class/pwm/pwmchip7/pwm0/polarity

#使能pwm
echo 1 > /sys/class/pwm/pwmchip7/pwm0/enable
  • 取消使用

1
2
#取消将pwm3导出到用户空间
echo 0 > /sys/class/pwm/pwmchip7/unexport

5.3.2. OneShot

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#将pwm7导出到用户空间
echo 0 > /sys/class/pwm/pwmchip7/export

#设置pwm周期 单位为ns
echo 1000000 > /sys/class/pwm/pwmchip7/pwm0/period

#设置占空比
echo 500000 > /sys/class/pwm/pwmchip7/pwm0/duty_cycle

#设置pwm极性
echo "normal" > /sys/class/pwm/pwmchip7/pwm0/polarity

#设置输出脉冲的次数,最大值为256
echo 256 > /sys/class/pwm/pwmchip7/pwm0/oneshot_count

#使能pwm
echo 1 > /sys/class/pwm/pwmchip7/pwm0/enable

如果想再次出发OneShot模式,需要把pwm重新使能

1
2
3
4
5
#不使能pwm
echo 0 > /sys/class/pwm/pwmchip7/pwm0/enable

#使能pwm
echo 1 > /sys/class/pwm/pwmchip7/pwm0/enable
  • 取消使用

1
2
#取消将pwm3导出到用户空间
echo 0 > /sys/class/pwm/pwmchip7/unexport