• 控制瑞芯微平台GPIO(输入、输出、电平读取)


    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
    
    • 1

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

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

    设置GPIO2_D1引脚高电平

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

    读取电平

    导出GPIO7_C2引脚

    echo 242 > /sys/class/gpio/export
    
    • 1

    设置GPIO7_C2引脚为输入模式

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

    设置GPIO7_C2引脚高电平

    cat /sys/class/gpio/gpio242/value
    
    • 1

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

    设置中断

    echo 90 > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio90/direction
    echo "rising" > /sys/class/gpio/gpio90//edge
    
    • 1
    • 2
    • 3

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

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

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

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

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

    此时输入:

    cat /proc/interrupts
    
    • 1

    可以看到:

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

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    管脚功能复用查看

    cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
    
    • 1
  • 相关阅读:
    ​力扣解法汇总1668. 最大重复子字符串
    拦截|篡改|伪造.NET类库中不限于public的类和方法
    分库分表及高可用搭建
    Java后端登录(返回token)
    凉鞋的 Unity 笔记 202. 变量概述与简介
    面试题____Java小白找工作必须领悟的修仙秘籍(二)
    【PHP设计模式03】抽象工厂模式
    微服务技术栈之rabbitMQ高级(二)
    查找和排序 + 集合 + 单例模式【Java 基础_简单学习】
    XV6 Network解析-1
  • 原文地址:https://blog.csdn.net/qq_40608730/article/details/128066964