全志平台Tina系统pwm控制led调试的方法(以R18某方案为例)
sys_config.fe的修改:
--- a/recipes-bsp/tina-board/tulip-noma/configs/sys_config.fex b/recipes-bsp/tina-board/tulip-noma/configs/sys_config.fex @@ -534,11 534,11 @@ pwm_positive = port:PD22<2><0><default><default> [pwm0_suspend] pwm_positive = port:PD22<7><0><default><default> -[pwm16]
-s_pwm0_used = 0 [spwm0] spwm0_used = 1 pwm_positive = port:PL10<2><0><default><default> -[pwm16_suspend] [spwm0_suspend] pwm_positive = port:PL10<7><0><default><default>
这个LED设计的是MUTE功能开启的时候点亮,所以要先把MUTE打开,调试的时候请先拉高PD4:
root@tulip-mozart:/sys/kernel# mount -t debugfs none debug/
root@tulip-mozart:/sys/kernel/debug/sunxi_pinctrl# echo pio > dev_name
root@tulip-mozart:/sys/kernel/debug/sunxi_pinctrl# echo PD4 > sunxi_pin
root@tulip-mozart:/sys/kernel/debug/sunxi_pinctrl# echo PD4 1 > data
然后
echo 0 > /sys/class/pwm/pwmchip16/export
echo 100000 > /sys/class/pwm/pwmchip16/pwm0/period
echo 20000 > /sys/class/pwm/pwmchip16/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip16/pwm0/enable
echo 80000 > /sys/class/pwm/pwmchip16/pwm0/duty_cycle
duty_cycle的值限制在0~period的范围内
period是周期,单位是ns。
如果要设置为某频率,比如如果频率想改成200Hz,
1/200Hz=0.005s=5 000 000 ns
这里就要改成5 000 000
然后在这个范围内变化,可以写个3000000什么的进行调试:
echo 0 > /sys/class/pwm/pwmchip16/export
echo 5000000 > /sys/class/pwm/pwmchip16/pwm0/period
echo 3000000 > /sys/class/pwm/pwmchip16/pwm0/duty_cycle