打印
[i.MX]

IMX6Q ROW2 GPIO_4_11 的配置问题

[复制链接]
1785|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xu0xiang0|  楼主 | 2015-7-15 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xu0xiang0 于 2015-7-15 23:23 编辑

大家好:
            我在IMX6Q的板子上(Kernel 3.0.35)需要配置3个按键(上拉),现在配置完成以后,有2个按键可以正常使用,有一个按键(KEY_ROW2_GPIO_4_11)没反应。
             我使用的是 driver/input/keyboard/gpio-keys.c作为驱动,在板文件 board-mx6q_sabrelite.c中的修改如下:

.................................................
#define MX6Q_SABRELITE_MENU_KEY                IMX_GPIO_NR(4, 14)     
#define MX6Q_SABRELITE_BACK_KEY                IMX_GPIO_NR(4, 11)   
#define MX6Q_SABRELITE_HOME_KEY                IMX_GPIO_NR(4, 10)  
..........................................................................
static iomux_v3_cfg_t mx6q_sabrelite_pads[] =
{
................................................
        /* others */
//        MX6Q_PAD_KEY_COL2__**_COL_2,
          MX6Q_PAD_KEY_COL2__GPIO_4_10,        
//        MX6Q_PAD_KEY_ROW2__**_ROW_2,
          MX6Q_PAD_KEY_ROW2__GPIO_4_11,        
//        MX6Q_PAD_KEY_COL4__**_COL_4,
          MX6Q_PAD_KEY_COL4__GPIO_4_14,        
.......................
}
......................................
static struct gpio_keys_button sabrelite_buttons[] =
{
        GPIO_BUTTON(MX6Q_SABRELITE_BACK_KEY, KEY_BACK, 1, "key-back", 0),
        GPIO_BUTTON(MX6Q_SABRELITE_MENU_KEY, KEY_MENU, 1, "key-memu", 0),
        GPIO_BUTTON(MX6Q_SABRELITE_HOME_KEY, KEY_HOME, 1, "key-home", 0),
};

系统启动以后 MX6Q_PAD_KEY_COL2_GPIO_4_10,MA6Q_PAD_KEY_COL4_GPIO_4_14初始状态都为高电平,按键按下后变为低电平,正常; MX6Q_PAD_KEY_ROW2_GPIO_4_11初始状态为低电平,按键按下后也为低电平,故此表现为按键无反应.
我对此的测试方法是:

1.硬件连接可能有问题,我把万用表打到短路挡测试了下,从按键的转接板到底板的线路是没问题的,底板和主板因为放在仪器里面,暂时不好测试.

2.按键可能需要配置为上拉,按照主板供应商技术支持的说法,我将 iomux-mx6q.h中
#define  MX6Q_PAD_KEY_ROW2__GPIO_4_11         \                                                                                                     
(_MX6Q_PAD_KEY_ROW2__GPIO_4_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
修改为
#define  MX6Q_PAD_KEY_ROW2__GPIO_4_11         \                                                                                                     
(_MX6Q_PAD_KEY_ROW2__GPIO_4_11 | MUX_PAD_CTRL(NO_PAD_CTRL|PAD_CTL_PUE))
但是测试没效果。

3。可能系统其他的地方也对 GPIO_4_11做了配置,我在目录下用命令
find -name "*.c"|xargs grep "ROW2" 做了搜索,发现在6Q的系统下没有驱动对其作配置。

4.我在 gpio-keys.c中使用 gpio_direction_output(KEY,0) 和 gpio_direction_output(KEY,1)分别做了测试,MX6Q_PAD_KEY_ROW2_GPIO_4_11始终为0,另外2个按键根据测试语句的不同而初始状态为低电平和高电平,这说明,从ARM的芯片里面似乎也无法设置 GPIO_4_11这个 Pin脚。

从以上似乎可以说明,MX6Q_PAD_KEY_ROW2_GPIO_4_11这个Pin脚在主板或者底板的线路开路了,但是我在网上搜索的时候,发现论坛里面也有人和我遇到了同样的问题,他的是 GPIO_4_15 始终为低电平https://bbs.21ic.com/forum.php?mod=viewthread&tid=818762  ,但是他的帖子里面没有写怎么解决的,这说明有可能是 MX6Q_PAD_KEY_ROW2_GPIO_4_11, MX6Q_PAD_KEY_ROW4_GPIO_4_15需要特别的配置......

公司的硬件说,这几个按键之前是用来作矩阵键盘的,而 COL2,COL4是输入端,ROW2,ROW4是接受端,所以COL2,COL4的初始状态为高电平,ROW2,ROW4的初始状态为低电平。难道我还需要在其他地方作配置?

如果谁在6Q的板子上配置过  ROW2,ROW4,还请指点下,或者给出点代码也可以。
如果我自己解决了这个问题,我也会将解决方法贴出来,让别人少走弯路。

相关帖子

沙发
xu0xiang0|  楼主 | 2015-7-15 23:45 | 只看该作者
自己顶一下

使用特权

评论回复
板凳
xu0xiang0|  楼主 | 2015-7-16 10:08 | 只看该作者
自己顶一下

使用特权

评论回复
地板
FSL_TICS_Rita| | 2015-7-16 16:47 | 只看该作者
楼主你好,请问你这里是参考哪块开发板设计的呢?

使用特权

评论回复
5
xu0xiang0|  楼主 | 2015-7-17 09:04 | 只看该作者
Rita:
       你好。
       这块主板是另外一家公司供应的,我刚去问了他们硬件,据他说该板子已经做了很多次改动,和之前的参考板子在管脚方面几乎完全不一样(当然他也没给出来具体是参考哪个板子做得,头痛).......
       或者换个角度,飞思卡尔的工程师在配置这个管脚作为GPIO口的时候,是不是不需要特殊的设置?就是说,配置MX6Q_PAD_KEY_COL2_GPIO_4_10,MX6Q_PAD_KEY_COL4_GPIO_4_14,MX6Q_PAD_KEY_ROW2_GPIO_4_11都可以采用相同的语句来配置?如果是这样,我就可以怀疑是硬件问题了,我以前没接触过飞思卡尔的芯片,其他芯片倒是用过。
       如果可能的话,能否给我些例子?看看你们是怎么配置这个管脚的。

使用特权

评论回复
6
iMalody| | 2015-7-17 11:54 | 只看该作者
路过帮顶~~

使用特权

评论回复
7
FSL_TICS_Rita| | 2015-7-17 15:18 | 只看该作者
xu0xiang0 发表于 2015-7-17 09:04
Rita:
       你好。
       这块主板是另外一家公司供应的,我刚去问了他们硬件,据他说该板子已经做了很 ...

楼主你好,不知道你这里硬件是怎么设计的,所以也不好给你具体的指导。这样,在我们的论坛上有关于GPIO如何配置的,你可以参考一下,对你的理解会有一定的帮助:
https://bbs.21ic.com/icview-744298-1-1.html

使用特权

评论回复
8
mini1986| | 2015-7-21 09:29 | 只看该作者
ROW2 GPIO_4_11,是不是在其他地方复用了?......

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xu0xiang0 + 1 淡定
9
xu0xiang0|  楼主 | 2015-7-21 09:56 | 只看该作者
mini1986 发表于 2015-7-21 09:29
ROW2 GPIO_4_11,是不是在其他地方复用了?......

我已经解决这个问题了,我来回答吧.
我在反复试了很多方法都无效的情况下,于上周五下班前换了一块底板,结果是:3个按键都正常了.
所以导致ROW2_GPIO_4_11始终为低电平的原因是:主板和底板的接口接触不良.
只能说我经验太少,之前用万用表测试底板和按键联通性的时候,线路确实是联通的,现在想来可能是万用表的针把虚焊的器件按下去了,所以测试的时候不是虚焊的状态.
为了让后来人少走弯路,我给出一个结论吧:
IMX6Q 的ROW2_GPIO_4_11,COL2_GPIO_4_10,COL4_GPIO_4_14 配置为上拉的GPIO的配置方式都是一致的,不需要特别的设置.
至于 ROW4_GPIO_4_15这个Pin脚,我试了下,确实是 低电平(在这块板子上没用到这个Pin脚,只是引出来了而已),因为我不需要用到这个Pin脚,就没有特意去查原因了.

使用特权

评论回复
评论
FSL_TICS_Rita 2015-8-5 16:20 回复TA
感谢楼主分享 
10
mini1986| | 2015-7-21 10:13 | 只看该作者
xu0xiang0 发表于 2015-7-21 09:56
我已经解决这个问题了,我来回答吧.
我在反复试了很多方法都无效的情况下,于上周五下班前换了一块底板,结 ...

谢谢分享......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

36

帖子

0

粉丝