5. pwm控制¶
本章配套视频介绍:
《33-PWM脉冲宽度调制》
https://www.bilibili.com/video/BV1Zu411h7JM/
5.1. pwm引脚¶
LubanCat板卡上集成了四个具有pwm功能的GPIO
由于LubanCat-RK356x系列的板子的PWM控制器会不一样,请对照下表使用
板卡 |
Pin12 |
Pin32 |
Pin33 |
Pin35 |
---|---|---|---|---|
LubanCat-Zero系列 |
pwm3 |
pwm11 |
pwm8 |
pwm9 |
LubanCat-1系列 |
pwm8 |
pwm9 |
pwm10 |
pwm14 |
LubanCat-2系列 |
pwm8 |
pwm9 |
pwm10 |
pwm14 |
具体引脚可以查看 — LubanCat-RK356x系列-40pin引脚对照图
5.1.1. 使能PWM接口功能¶
PWM接口在默认情况是关闭状态的,需要使能才能使用, 每个板卡都具有四个硬件PWM,下面的使能操作以 PWM8 和 PWM9 为例
5.1.1.1. 方法一¶
1 2 3 4 5 | #进入工具配置
sudo fire-config
#移动光标到下图的位置
#按确认键进入配置
|
打开PWM8和PWM9
使用方向键移动光标到
PWM8
按 “空格键” 选中PWM8(出现 “*” ),如下图
使用方向键移动光标到
PWM9
按 “空格键” 选中PWM9(出现 “*” ),如下图
按 “确认键” 进行设置
按 “Esc键” 退出到终端,运行 sudo reboot 进行重启应用
5.1.1.2. 方法二¶
板卡 |
设备树插件配置文件 |
---|---|
LubanCat-Zero-W |
uEnvLubanCatZW.txt |
LubanCat-Zero-N |
uEnvLubanCatZN.txt |
LubanCat- 1 |
uEnvLubanCat1.txt |
LubanCat-1N |
uEnvLubanCat1N.txt |
LubanCat-2 |
uEnvLubanCat2.txt |
新版LubanCat-2 |
uEnvLubanCat2-V1.txt |
LubanCat-2N |
uEnvLubanCat2N.txt |
可以通过打开 /boot/uEnv/board.txt (board是你所用的板子的名称,参照上面的表格) 查看是否启用了pwm相关设备设备树插件。
编辑文件,将带有 pwm8 和 pwm9 的两行的注释符号去掉 如下图:
然后重启激活设备
注解
如果是直接拔电源的方式重启,会有可能出现文件没能做出修改 (原因:文件未能及时从内存同步到存储设备中,解决方法,在终端上输入 “sync” 再拔电关机)
5.2. 检查PWM设备¶
使能pwm通信接口后,可以用以下命令查看pwm是否开启
1 | ls /sys/class/pwm/
|
pwmchip0为屏幕的背光,系统默认开启,当开启多个pwm设备树插件时,pwm控制器值越小,系统分配的pwmchip越小
1 2 3 4 5 | 比如我同时开启了pwm8,pwm9,pwm14,那么会出现以下对应关系
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 | #将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的值。