5. pwm控制

本章配套视频介绍:

../../../_images/video.png

《33-PWM脉冲宽度调制》

https://www.bilibili.com/video/BV1Zu411h7JM/

5.1. pwm引脚

带40pin的LubanCat系列板卡上集成了四个具有pwm功能的GPIO。

未找到图片

由于LubanCat系列的板卡的PWM控制器会不一样,请对照下表使用:

LubanCat-PWM列表

板卡

Pin12

Pin32

Pin33

Pin35

LubanCat-Zero系列

pwm3

pwm11

pwm8

pwm9

LubanCat-1系列

pwm8

pwm9

pwm10

pwm14

LubanCat-2系列

pwm8

pwm9

pwm10

pwm14

具体引脚可以查看 — LubanCat-RK3562/RK3566/RK3568系列-40pin引脚对照图

5.1.1. 使能PWM接口功能

PWM接口在默认情况是关闭状态的,需要使能才能使用, 每个板卡都具有四个硬件PWM,下面以使能 PWM8PWM9 为例。

5.1.1.1. 方法一

1
2
3
4
5
#进入工具配置
sudo fire-config

#移动光标到下图的位置
#按确认键进入配置
未找到图片

打开PWM8和PWM9:

  1. 使用方向键移动光标到 PWM8

  2. “空格键” 选中PWM8(出现 “*” ),如下图。

  3. 使用方向键移动光标到 PWM9

  4. “空格键” 选中PWM9(出现 “*” ),如下图。

  5. “确认键” 进行设置。

  6. “Esc键” 退出到终端,运行 sudo reboot 进行重启应用。

未找到图片

5.1.1.2. 方法二

可以通过打开 /boot/uEnv/uEnv.txt ,查看是否启用了pwm相关设备设备树插件。

编辑文件,将带有 pwm8pwm9 的两行的注释符号去掉,如下图:

未找到图片

配置完成后重启激活配置。

注解

如果是直接拔电源的方式重启,会有可能出现文件没能做出修改 (原因:文件未能及时从内存同步到存储设备中,解决方法,在终端上输入 “sync” 再拔电关机)。

5.2. 检查PWM设备

使能pwm通信接口后,可以用以下命令查看pwm是否开启。

1
2
3
4
5
#查看pwm控制器
ls /sys/class/pwm/

#查看pwm注册情况
cat /sys/kernel/debug/pwm
未找到图片

pwmchip0为屏幕的背光,系统默认开启,当开启多个pwm设备树插件时,pwm控制器值越小,系统分配的pwmchip越小。

比如同时开启了pwm8、pwm9、pwm14、那么会出现以下对应关系。

1
2
3
pwm8->pwmchip1
pwm9->pwmchip2
pwm14->pwmchip3

5.3. pwm控制方式(shell)

下面操作以pwm8为例。

注意

在操作前必须先打开设备树插件,重启使能pwm8引脚。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#切换root用户
sudo -s

#将pwm3导出到用户空间
echo 0 > /sys/class/pwm/pwmchip1/export

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

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

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

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

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

提示

当设置period与duty_cycle值的时候需要注意在任何的情况下都得保证period的值大于等于duty_cycle的值。