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
|