泰山派默认提供了3组PWM的GPIO , 为了检测PWM的输出,我们可以配合逻辑分析仪来查看效果,或者搭配STC8的LED灯
PWM 测试
- 列举所有的PWM设备:
# 查找所有有pwm名称的文件
find / -name "pwm"# pwm4: pwm@fe6e0000 edp屏幕背光
./sys/devices/platform/fe6e0000.pwm/pwm# pwm8: pwm@fe6f0000
./sys/devices/platform/fe6f0000.pwm/pwm# pwm9: pwm@fe6f0010
./sys/devices/platform/fe6f0010.pwm/pwm# pwm14: pwm@fe700020
./sys/devices/platform/fe700020.pwm/pwm
- 这里就以pwm8进行测试:
# 通道是从0开始的,对应原理图上的pwmx_mx中的mx,我们这里是pwm8_m0所以就是通道0
echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/export# 使能后会发现下面比之前多了一个pwm0目录
ls /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/
device export npwm power pwm0 subsystem uevent unexport
- 设置pwm周期、频率、极性
# 单位纳秒,所以1000000000个纳秒就是一秒
echo 1000000000> /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/pwm0/period# 设置占空比为30%
echo 300000000> /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/pwm0/duty_cycle# 设置极性可以有两个选项:normal和inverted。当设置为 “normal” 时,
# 高电平(高电压)表示占空比的高部分,而低电平(低电压)表示占空比的低部分。
# 当设置为 “inverted” 时,这种情况相反
echo 'normal' > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/polarity
- 启动与停止PWM
# 启动PWM
echo 1 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/pwm0/enable#停止PWM
echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip0/pwm0/enable