记录驱动DRV8871电机驱动模块
使用GPIO驱动
| IN1 | IN2 | 状态 |
|---|---|---|
| 0 | 0 | 停止(休眠) |
| 1 | 0 | 正转 |
| 0 | 1 | 反转 |
| 1 | 1 | 刹车 |
echo 53 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio53/direction
echo 1 > /sys/class/gpio/gpio53/value
pwm调速
设备树配置
&pwm0_4ch_0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&rm_io7_pwm0_ch0>;
};
命令
echo 50000 > period
echo 25000 > duty_cycle
echo 1 > enable
调试发现pwm没有正常输出,开始debug,用的是rmio7用作输出
cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep pwm
root@rk3506-buildroot:/sys/class/pwm/pwmchip0/pwm0# cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep pwm
pin 3 (gpio0-3): ff932000.pwm (GPIO UNCLAIMED) function rm_io3 group rm-io3-pwm0-ch2
pin 20 (gpio0-20): ff931000.pwm (GPIO UNCLAIMED) function rm_io20 group rm-io20-pwm0-ch1
发现和我配置的完全不一样
cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep rm_
root@rk3506-buildroot:/sys/class/pwm/pwmchip0/pwm0# cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep rm_
pin 3 (gpio0-3): ff932000.pwm (GPIO UNCLAIMED) function rm_io3 group rm-io3-pwm0-ch2
pin 4 (gpio0-4): ff060000.i2c (GPIO UNCLAIMED) function rm_io4 group rm-io4-i2c2-scl
pin 5 (gpio0-5): ff060000.i2c (GPIO UNCLAIMED) function rm_io5 group rm-io5-i2c2-sda
pin 6 (gpio0-6): rockchip-amp (GPIO UNCLAIMED) function rm_io6 group rm-io6-uart2-tx
pin 7 (gpio0-7): rockchip-amp (GPIO UNCLAIMED) function rm_io7 group rm-io7-uart2-rx
pin 8 (gpio0-8): 2-0011 (GPIO UNCLAIMED) function rm_io8 group rm-io8-sai1-mclk
pin 9 (gpio0-9): ff310000.sai (GPIO UNCLAIMED) function rm_io_idle group rm-io9-idle-pins
pin 10 (gpio0-10): ff310000.sai (GPIO UNCLAIMED) function rm_io_idle group rm-io10-idle-pins
pin 11 (gpio0-11): ff310000.sai (GPIO UNCLAIMED) function rm_io_idle group rm-io11-idle-pins
pin 12 (gpio0-12): ff310000.sai (GPIO UNCLAIMED) function rm_io_idle group rm-io12-idle-pins
pin 14 (gpio0-14): rockchip-amp (GPIO UNCLAIMED) function rm_io14 group rm-io14-uart1-tx
pin 15 (gpio0-15): rockchip-amp (GPIO UNCLAIMED) function rm_io15 group rm-io15-uart1-rx
pin 42 (gpio1-10): ff040000.i2c (GPIO UNCLAIMED) function rm_io25 group rm-io25-i2c0-scl
pin 43 (gpio1-11): ff040000.i2c (GPIO UNCLAIMED) function rm_io26 group rm-io26-i2c0-sda
发现rmio7被amp用作uart2的rx了有冲突,作以下修改

同时发现前几天rtt的中断不能触发就是amp的rmio配错了,应该将前面那块改成 pinctrl-0 = <&rm_io2_uart1_tx>, <&rm_io0_uart1_rx>;
pwm仍然不正常
for i in /sys/class/pwm/pwmchip*; do
echo "==== $i ===="
readlink $i/device
done
root@rk3506-buildroot:/# cd /sys/class/pwm/
root@rk3506-buildroot:/sys/class/pwm# ls
pwmchip0 pwmchip1 pwmchip2 pwmchip3
root@rk3506-buildroot:/sys/class/pwm# for i in /sys/class/pwm/pwmchip*; do
> echo "==== $i ===="
> readlink $i/device
> done
==== /sys/class/pwm/pwmchip0 ====
../../../ff170000.pwm
==== /sys/class/pwm/pwmchip1 ====
../../../ff930000.pwm
==== /sys/class/pwm/pwmchip2 ====
../../../ff931000.pwm
==== /sys/class/pwm/pwmchip3 ====
../../../ff932000.pwm
root@rk3506-buildroot:/sys/class/pwm# cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep ff170000
root@rk3506-buildroot:/sys/class/pwm#
说明pwm1有了但是没有绑定管脚
2026.05.24启动后发现pwm正常了
root@rk3506-buildroot:/dev# ls /sys/class/pwm/pwmchip3
device export npwm power subsystem uevent unexport
root@rk3506-buildroot:/dev# cat /sys/class/pwm/pwmchip3/npwm
1
root@rk3506-buildroot:/dev# echo 0 > /sys/class/pwm/pwmchip3/export
root@rk3506-buildroot:/dev# cd /sys/class/pwm/pwmchip3/pwm0
root@rk3506-buildroot:/sys/class/pwm/pwmchip3/pwm0# echo 1000000 > period
root@rk3506-buildroot:/sys/class/pwm/pwmchip3/pwm0# echo 500000 > duty_cycle
root@rk3506-buildroot:/sys/class/pwm/pwmchip3/pwm0# echo 1 > enable
root@rk3506-buildroot:/sys/class/pwm/pwmchip3/pwm0# echo 0 > enable
root@rk3506-buildroot:/sys/class/pwm/pwmchip3/pwm0# echo 1 > enable

查看pwm信息
root@rk3506-buildroot:/# cat /sys/class/pwm/pwmchip3/device/uevent
DRIVER=rockchip-pwm
OF_NAME=pwm
OF_FULLNAME=/pwm@ff933000
OF_COMPATIBLE_0=rockchip,rk3506-pwm
OF_COMPATIBLE_1=rockchip,rk3576-pwm
OF_COMPATIBLE_N=2
MODALIAS=of:NpwmT(null)Crockchip,rk3506-pwmCrockchip,rk3576-pwm
root@rk3506-buildroot:/#
查看下引脚复用信息

rmio7确实被复用成pwm0_ch3
之前没通是因为误以为/sys/class/pwm/pwmchip1是pwm0_ch3,事实上/sys/class/pwm/pwmchip3才是

浙公网安备 33010602011771号