• 迅为-iMX6开发板-设备树内核-sys方式控制GPIO


    本文档主要讲解,iMX6 开发板,通过 sys 文件的方式来控制 GPIO。
    要通过 sys 控制 GPIO,需要做以下几步操作:
    1 开启内核中的“GPIO_SYSFS”驱动配置;
    2 确保 IO 被配置为 GPIO,并且没有驱动调用;
    3 计算 GPIO 编号,通过命令或者脚本操作 GPIO。
    1 GPIO_SYSFS 配置
    如下图所示,可以看到内核中 GPIO_SYSFS 是默认配置的,这个驱动所有原厂 BSP 基本都会包含,一般情况下是默认配置的。

    2 确保 IO 被配置为 GPIO,并且没有驱动调用
    这里以 LED 的 GPIO 为例, 将 LED 的驱动去掉,确保没有驱动调用。
    Device Drivers --->
    Character devices --->
    Enable LEDS config ---去掉,并重新编译内核烧写到开发板中。
    如下图所示配置 menuconfig。

    烧写到开发板中,确保没有 led 的设备节点,默认的内核中是有 led 设备节点的,如下图所示。

    GPIO 的配置这里就不再重复介绍,在“iTOP-iMX6-设备树内核-IO 配置分析文档_V1.0”中有介绍。
    3 计算 GPIO 编号并测试
    LED 的网络标号为:KEY_ROW6
    LED 对应 GPIO 的 PIN 脚名称为:GPIO_2
    GPIO_2 对应的宏定义为:#define MX6QDL_PAD_GPIO_2__GPIO1_IO02
    那么 GPIO_2 对应的 GPIO 的 bank[n]为 GPIO1_IO02,也就是 bank 1 的 02 号 GPIO。
    GPIO 的编号计算方法为:nr=(P -1)* 32 + N;
    nr 为编号,P 为 bank 号,N 为具体 bank 中的编号。
    那么 P=1,N=2,通过计算得出 nr=2。
    测试命令为:
    echo nr > /sys/class/gpio/export
    echo out > /sys/class/gpio/gpionr/direction
    echo 1 > /sys/class/gpio/gpionr/value ---> 写高电平,小灯亮
    echo 0 > /sys/class/gpio/gpionr/value ---> 写低电平,小灯灭
    以上 nr 替换成 GPIO 的编号,则命令为:
    echo 2 > /sys/class/gpio/export
    echo out > /sys/class/gpio/gpio2/direction
    echo 1 > /sys/class/gpio/gpio2/value --->写高电平,小灯亮
    echo 0 > /sys/class/gpio/gpio2/value ---> 写低电平,小灯灭
    如下图所示,执行三条命令之后小灯亮。

    接着执行 echo 0 > /sys/class/gpio/gpio2/value 小灯灭。
    至此,sys 测试 gpio 完成。
    另外需要注意的是,本文档没有介绍 LED 对应的管脚是如何配置的,因为 LED 驱动能够运行,那么肯定在设备树文件中配置了。
    如果想要掌握如何配置管脚,可以参考“iTOP-iMX6-设备树内核-IO 配置分析文档_V1.X”和“iTOP-iMX6-设备树内核-IO 扩展例程_V1.X”文档。

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/liyue3/p/13958055.html
Copyright © 2020-2023  润新知