最近加入的商品

0 件商品 共计 ¥0.00

加入购物车
您的购物车中还没有任何商品。

赛普盛科技

Embedded Computer System

专注嵌入式计算机系统

基于Linux系统GPIO复用方法- NXP i.MX 6

首页    NXP iMX6 应用开发    iMX6 应用经验分享    基于Linux系统GPIO复用方法- NXP i.MX 6

 

方法一 使用 iomux
1. EIM_A17 复用成 GPIO
2.
kernel/arch/arm/boot/dts/imx6q-pinfunc.h 中查找

#define MX6QDL_PAD_EIM_A17__GPIO2_IO21 0x0f0 0x404 0x000 0x5 0x0
3.
在设备树中添加引脚定义
Kernel/arch/arm/boot/dts/imx6qdl-supcore.dtsi

并把其他复用功能去掉,此引脚无复用功能不需要去掉复用,编译生成新的镜像,将
其烧写到开发板上即可。
烧写完成新的镜像后,在文件系统中对 gpio 的操作如下:
4.1. GPIO 设置,步骤如下:
计算对应 sys/class/gpio 的值 GPIOn_IOx = (n-1)*32 + x
GPIO2_IO21=
2-1 *32+21=53
GPIO2_IO21 设置为输出。
echo 53 > /sys/class/gpio/export 用于通知系统需要导出控制的 GPIO 引脚编号
echo out > /sys/class/gpio/gpio53/direction 控制为输出

echo 1 > /sys/class/gpio/gpio53/value 输出为高电平
或者 echo 0 > /sys/class/gpio/gpio53/value 输出为低电平
echo 53 > /sys/class/gpio/unexport 通知系统取消导出
GPIO2_IO21 设置为输入。
echo 53 > /sys/class/gpio/export 用于通知系统需要导出控制的 GPIO 引脚编号
echo in > /sys/class/gpio/gpio53/direction 控制为输入
这时给该引脚接高电平,输入即为高电平,反之为低电平
echo 53 > /sys/class/gpio/unexport 通知系统取消导出
另外客户可以自己通过 shell 文件来控制多个 gpio 做为输入或者输出。

4.2 GPIO 输出测试
编写测试脚本 vi gpiotest_o.sh
#!/bin/bash
# gpio list gpio (bank-1)*32 + nr
for test in 53 168
do
echo Exporting pin $test.
echo $test> /sys/class/gpio/export
echo setting pin $1.
echo out > /sys/class/gpio/gpio$test/direction
echo $1 > /sys/class/gpio/gpio$test/value
echo $test> /sys/class/gpio/unexport
done
echo complete

修改脚本执行权限: chmod u+x gpiotest_o.sh
测试 gpio 输出为低。进入到脚本所在路径: ./gpiotest_o.sh 0
所有 GPIO 输出低电平 0V
测试 gpio 输出为高电平。进入到脚本所在路径: ./gpiotest_o.sh 1
所有 GPIO 输出高电平。输出的高电平,根据引脚所在的电源域不同,可能会有区别。

 
 

 

 

 
 
2022年2月12日 17:54
浏览量:0
收藏
    • 联系客服

    • 0755 2955 4030
    • 189 2600 3503
    • sales@superfae.cn
    • 服务时间

    • 周一至周五 9:00-18:00
    • 微信二维码