控制瑞芯微平台GPIO(输入、输出、电平读取、PWM)、管脚功能复用查看

GPIO编号计算

GPIO编号 = BANK * 32 + GPIO_PIN
GPION_MP = N * 32 + 8 * (M -1) + P
示例:GPIO7_C2 = 7 X 32 + 8 X (3-1) + 2 = 242
GPIO2_A1 = 2 X 32 + 8 X (1-1) + 1 = 73
A对应1,B对应2,C对应3,以此类推

控制步骤

注意事项
1、通过原理图谨慎确认对应GPIO口连接情况,若操作不当,会造成严重后果
2、并非所有GPIO都能控制,若操作失败,请更换GPIO尝试
3、系统重启后需要重新导出GPIO、设置模式

输出高电平

设置GPIO2_D1为高电平
导出GPIO2_D1引脚

echo 89 > /sys/class/gpio/export

导出成功后,会生成/sys/class/gpio/gpio89目录
若没有生成,说明该引脚不可导出
设置GPIO2_D1引脚为输出模式

echo out > /sys/class/gpio/gpio89/direction

设置GPIO2_D1引脚高电平

echo 1 > /sys/class/gpio/gpio89/value

读取电平

导出GPIO7_C2引脚

echo 242 > /sys/class/gpio/export

设置GPIO7_C2引脚为输入模式

echo in > /sys/class/gpio/gpio242/direction

设置GPIO7_C2引脚高电平

cat /sys/class/gpio/gpio242/value

示例图片:
在这里插入图片描述

设置中断

echo 90 > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio90/direction
echo "rising" > /sys/class/gpio/gpio90//edge

edge 表示中断的触发方式,edge文件有如下四个值:“none”, “rising”, “falling”,“both”。

none:表示引脚为输入,不是中断引脚

rising:表示引脚为中断输入,上升沿触发

falling:表示引脚为中断输入,下降沿触发

both:表示引脚为中断输入,边沿触发

此时输入:

cat /proc/interrupts

可以看到:

在这里插入图片描述
中断被正常添加进系统。

PWM

首先要在设备树中选中某一个引脚作为pwm输出,然后执行:


pwmPath="/sys/class/pwm/pwmchip1/pwm0"

if [ -n "`echo $1|sed 's/[2-9]//g'`" ];then
        if [ ! -d "$pwmPath" ]; then
                echo 0 > /sys/class/pwm/pwmchip1/export
                echo 250 > /sys/class/pwm/pwmchip1/pwm0/period
                echo 125 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
        fi
        echo $1 > /sys/class/pwm/pwmchip1/pwm0/enable
        if [ $1 -eq 0 ];then
                echo 0 > /sys/class/pwm/pwmchip1/unexport
        fi
else
   echo "./pwm.sh <1 | 0>"
   echo "1 = enable"
   echo "0 = disabled"
fi

管脚功能复用查看

cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins

猜你喜欢

转载自blog.csdn.net/qq_40608730/article/details/128066964