天嵌 ARM开发社区

 找回密码
 注册
查看: 1937|回复: 0

如何将被驱动占用引脚配置为普通GPIO

[复制链接]
freewing 发表于 2021-6-3 09:02:03 | 显示全部楼层 |阅读模式
【导语】本文使用的是TQIMX6Q_coreCCPUIMX6Q,内核版本4.1.15,以下使用 EIM_D28接口为例介绍修改一个已经被驱动占用的管脚,将其配置为普通可控GPIO
天嵌其他NXP系列板卡GPIO修改方式基本一致,供参考。
具体步骤如下:
1. 查看底板原理图,EIM_D28为核心板175引脚,搜索可知其为UART功能
2. 打开内核源码arch/arm/boot/dts/imx6q-pinfunc.h,搜索EIM_D28,看出其对应的GPIO是GPIO3_IO28管脚,复制MX6QDL_PAD_EIM_D28__GPIO3_IO28
3. 打开arch/arm/boot/dts/目录下的,imx6qdl-sabresd.dtsi(imx6q corec板卡使用)、e9v2qdl-sabresd.dtsi(e9v2 板卡使用)、e9v3qdl-sabresd.dtsi(e9v3板卡使用)设备树文件,搜索 EIM_D28
pinctrl_uart2: uart2grp {
             fsl,pins = <  
               MX6QDL_PAD_EIM_D26__UART2_TX_DATA  0x1b0b1  
               MX6QDL_PAD_EIM_D27__UART2_RX_DATA  0x1b0b1  
                      MX6QDL_PAD_EIM_D28__UART2_CTS_B0x1b0b1  
              MX6QDL_PAD_EIM_D29__UART2_RTS_B0x1b0b1
可知EIM_D28被配置为UART2
搜索pinctrl_uart2将其注释掉或者将ststus修改为disabled
&uart2 {
       pinctrl-names = "default";
       pinctrl-0 = <&pinctrl_uart2>;
       status = "disabled";
};
4.搜索imx6qdl-sabresd,在组里面添加步骤1搜索到的GPIO配置,MX6QDL_PAD_EIM_D28__GPIO3_IO28
imx6qdl-sabresd{
       pinctrl_hog: hoggrp {
              fsl,pins= <
              ..
                     MX6QDL_PAD_EIM_D28__GPIO3_IO280x80000000     /*AWD  EIM_D28*/
                     MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x80000000   /*AWD  EIM_D29*/
                     MX6QDL_PAD_SD3_DAT2__GPIO7_IO060x80000000  /*AWD  SD3_DAT2*/
                     MX6QDL_PAD_SD3_DAT3__GPIO7_IO070x80000000  /*AWD  SD3_DAT3*/
                     MX6QDL_PAD_SD3_CMD__GPIO7_IO02 0x80000000   /*AWD SD3_CMD*/
                     MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000    /*AWD EIM_A25*/
                     MX6QDL_PAD_SD3_CLK__GPIO7_IO03 0x80000000    /*AWD SD3_CLK*/
                     MX6QDL_PAD_SD3_DAT0__GPIO7_IO040x80000000  /*AWD  SD3_DAT0*/
                     MX6QDL_PAD_SD3_DAT1__GPIO7_IO050x80000000  /*AWD  SD3_DAT1*/
                     MX6QDL_PAD_SD1_DAT1__GPIO1_IO17  0x80000000       /*AWD  PWM3*/
                     MX6QDL_PAD_SD1_CMD__GPIO1_IO18 0x80000000   /*AWD PWM4*/
              >;
       };
5.重新编译,替换修改后的设备树到板子即可
6.编号计算:引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
举例:
GPIOGPIO1_28,引脚编号为32*(1-1)+28=28
GPIOGPIO3_28,引脚编号为32*(3-1)+28=92
应用层命令测试:
echo 92 > /sys/class/gpio/export                         //将引脚导入应用层,生成相应gpio节点
echo "out" >/sys/class/gpio/gpio92/direction       //设置输入输出方向,out为输出,in为输入
echo 1 > /sys/class/gpio/gpio92/value                  //设置输出高电平
echo 0 > /sys/class/gpio/gpio92/value                  //设置输出低电平
使用万用表测量设置输出电平是否有效,测量与输出电平一致说明该GPIO引脚可控。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-20 11:37 , Processed in 1.031250 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表