Difference between revisions of "PWM"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
Line 5: Line 5:
 
https://github.com/torvalds/linux/commit/179a79fd740b6b2f66b64bae5cb6ecd483987d20
 
https://github.com/torvalds/linux/commit/179a79fd740b6b2f66b64bae5cb6ecd483987d20
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
注: FriendlyELEC的内核源代码分支 https://github.com/friendlyarm/linux/tree/sunxi-4.14.y 已包含此提交。
 
====修改内核dts配置, 启用SYS_PWM (在NanoPi NEO上, 引脚与POWER LED复用)====
 
====修改内核dts配置, 启用SYS_PWM (在NanoPi NEO上, 引脚与POWER LED复用)====
 
参考以下补丁, 配置POWER LED对应的引脚为PWM功能,然后编译并测试:
 
参考以下补丁, 配置POWER LED对应的引脚为PWM功能,然后编译并测试:
Line 54: Line 55:
 
                 pinctrl-0 = <&leds_npi>, <&leds_r_npi>;
 
                 pinctrl-0 = <&leds_npi>, <&leds_r_npi>;
 
</syntaxhighlight>
 
</syntaxhighlight>
====在NanoPi NEO上测试, 可看到 POWER LED闪烁====
+
====测试脚本====
 +
在NanoPi NEO上测试, 可看到POWER LED以淡出效果闪烁10次:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
#!/bin/bash
 
#!/bin/bash

Revision as of 10:59, 5 January 2022

查看中文

1 H3上配置SYS_PWM

1.1 先确定内核已经打了这个补丁

https://github.com/torvalds/linux/commit/179a79fd740b6b2f66b64bae5cb6ecd483987d20

注: FriendlyELEC的内核源代码分支 https://github.com/friendlyarm/linux/tree/sunxi-4.14.y 已包含此提交。

1.2 修改内核dts配置, 启用SYS_PWM (在NanoPi NEO上, 引脚与POWER LED复用)

参考以下补丁, 配置POWER LED对应的引脚为PWM功能,然后编译并测试:

diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
index b9826c150c0a..ca62502ad9a3 100644
--- a/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
+++ b/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
@@ -45,6 +45,10 @@
 / {
        model = "FriendlyElec NanoPi-NEO";
        compatible = "friendlyelec,nanopi-neo", "allwinner,sun8i-h3";
+
+       aliases {
+               pwm1 = &r_pwm;
+       };
 };
 
 &emac {
@@ -52,4 +56,14 @@
        phy-mode = "mii";
        allwinner,leds-active-low;
        status = "okay";
-};
\ No newline at end of file
+};
+
+&gpio_leds {
+       pinctrl-0 = <&leds_npi>;
+
+       /delete-node/ pwr;
+};
+
+&r_pwm {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi b/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi
index 5eeb41744735..1802f8ca2c56 100644
--- a/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi
@@ -89,7 +89,7 @@
                };
        };
 
-       leds {
+       gpio_leds: leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                pinctrl-0 = <&leds_npi>, <&leds_r_npi>;

1.3 测试脚本

在NanoPi NEO上测试, 可看到POWER LED以淡出效果闪烁10次:

#!/bin/bash
 
sys_pwm=/sys/class/pwm/pwmchip0
 
[ -d $sys_pwm ] || exit 1
 
if [ ! -d $sys_pwm/pwm0 ]; then
    echo 0 > $sys_pwm/export
fi
 
echo 1000 > $sys_pwm/pwm0/period
echo 1 > $sys_pwm/pwm0/enable
 
for n in $(seq 10); do
    for d in $(seq 0 50 1000); do
        echo $d > $sys_pwm/pwm0/duty_cycle
        sleep .02
    done
    sleep 1
done