You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Orange Pi One开发板PA6引脚PWM启用故障:DTSO与WiringOP问题

启用Orange Pi One PA6引脚PWM功能的解决方案

问题背景

使用Armbian 23.08.0-trunk Bookworm(内核6.4.1-sunxi),尝试通过DTBO+sysfs和WiringOP两种方式启用Orange Pi One的PA6引脚PWM功能均失败:

  • DTBO配置后sysfs无输出
  • WiringOP提示所选引脚不支持硬件PWM,但处理器文档明确PA6支持PWM0通道

DTBO方案修复步骤

1. 修正DTSO文件

原DTSO存在冗余配置,且未明确PWM控制器的cell格式,以下是修正后的DTSO(命名为pwm-pa6.dts):

/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun8i-h3";

    // 禁用PA6默认绑定的UART0_TX功能
    fragment@0 {
        target = <&uart0>;
        __overlay__ {
            status = "disabled";
        };
    };

    // 配置PA6引脚为PWM0功能
    fragment@1 {
        target = <&pio>;
        __overlay__ {
            pwm0_pin: pwm0-pin {
                pins = "PA6";
                function = "pwm0";
                drive-strength = <10>; // 增强驱动能力,可选配置
                bias-pull-up; // 可选上拉,根据实际需求调整
            };
        };
    };

    // 启用PWM控制器并绑定引脚
    fragment@2 {
        target = <&pwm>;
        __overlay__ {
            pinctrl-names = "default";
            pinctrl-0 = <&pwm0_pin>;
            status = "okay";
            #pwm-cells = <3>; // 匹配sunxi PWM内核驱动要求的cell格式
        };
    };
};

2. 编译并加载DTBO

执行以下命令完成编译与加载:

# 将DTS编译为DTBO格式
dtc -I dts -O dtb -o pwm-pa6.dtbo pwm-pa6.dts
# 创建Overlay加载目录
mkdir -p /sys/kernel/config/device-tree/overlays/pwm-pa6
# 加载DTBO文件
echo $PWD/pwm-pa6.dtbo > /sys/kernel/config/device-tree/overlays/pwm-pa6/path

3. 正确配置sysfs PWM参数

原命令中重复设置period(第二次应为duty_cycle),修正后的命令:

# 导出PWM通道0
echo 0 > /sys/class/pwm/pwmchip0/export
# 设置周期为10ms(单位:纳秒)
echo 10000000 > /sys/class/pwm/pwmchip0/pwm0/period
# 设置占空比为50%(5000000纳秒)
echo 5000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
# 启用PWM输出
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

4. 验证输出

用示波器检测PA6引脚波形,或串联电阻接LED到GND观察亮度变化,确认PWM输出正常。


WiringOP方案处理

WiringOP的硬件PWM引脚映射未更新至PA6,可选择两种方式:

1. 使用软件PWM

执行以下命令启用软PWM:

# 初始化WiringOP并查看引脚映射
gpio readall
# 设置PA6对应WiringOP引脚(编号为6)为PWM模式
gpio mode 6 pwm
# 创建软PWM通道,范围0-100
softPwmCreate 6 0 100
# 设置50%占空比
softPwmWrite 6 50

2. 修正WiringOP硬件PWM配置(可选)

修改WiringOP的orangepi_one.c引脚定义文件,将PA6标记为硬件PWM通道,重新编译安装WiringOP,但此方法复杂度较高,推荐优先使用软PWM或DTBO方案。


内容的提问来源于stack exchange,提问作者Mathias Nichele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:41