This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3358:键盘不工作

Guru**** 2895520 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/655025/am3358-keypad-not-working

器件型号:AM3358

您好!

问题是键盘没有响应我按下的任何键。 我使用 evtest“/dev/input/event2”进行测试,它重复显示:

键入1 (EV_KEY)、代码14 (key_Backspace)、值2

我在 devicetree 中将键盘配置为4x4矩阵键盘、如下所示:

         Matrial_keypad:Matrial_keypad@0{

               兼容="GPIO-matrial-keypad";

       /*     linux、wakeup;*/

               去抖延迟 ms =<5>;

               col-scan-delay-us =<2>;

 

               ROW-GPIO =<&GPIO2 1 0

                            GPIO2 2 0

                            GPIO2 3 0

                            GPIO2 4 0>;

 

               COL/GPIO=<&GPIO1 12 0

                            GPIO1 13 0

                            GPIO1 14 0

                            GPIO1 28 0>;

               Linux、keymap = 0x00000001     /* key1 */

                               0x00010002     //* key2 */

                               0x00020003     //* key3 */

                               0x01000004     /* KEY4 */

                               0x01010005     /* KEY5 */

                               0x01020006     /* KEY6 */

                               0x0103000E     /* KEYEXIT */

                               0x02000007     /* KEY7 */

                               0x02010008     /* KEY8 */

                               0x02020009     /* KEY9 */

                               0x0203000F     /*密钥输入*/  

                               0x0300000B     /* KEYSTAR */

                               0x0301000A     /* KEY0 */

                               0x0302000C     /* KEYPOUND *

                               0x03030000>;   /* KEYREPLAY *

       };

 

引脚分配为:

GPIO1_PINS_DEFAULT:GPIO1_PINS_DEFAULT{

               pinctrl-single、pins =<

                       0x30 (PIN_OUTPUT 下拉| MUX_MODE7)/*(T12) GPMC_AD12.GPIO1[12]*/

                       0x34 (PIN_OUTPUT 下拉| MUX_MODE7)/*(R12) GPMC_AD13.GPIO1[13]*/

                       0x38 (PIN_OUTPUT 下拉| MUX_MODE7)/*(V13) GPMC_ad14.GPIO1[14]*/

                        0x78 (PIN_OUTPUT_PULLUX | MUX_MODE7)/*(U18) GPMC_BE1n.GPIO1[28]*/

                >;

};

GPIO2_PINS_DEFAULT:GPIO2_PINS_DEFAULT{

               pinctrl-single、pins =<

                       0x8c (PIN_INPUT_PULLDOWN | MUX_MODE7)/*(V12) GPMC_clk.GPIO2[1]*/

                       0x90 (PIN_INPUT 下拉| MUX_MODE7)/*(R7) GPMC_advn_ALe.GPIO2[2]*/

                       0x94 (PIN_INPUT_PULLUGDOWN | MUX_MODE7)/*(T7) GPMC_oen_ren。GPIO2[3]*/

                       0x98 (PIN_INPUT_PULLUGDOWN | MUX_MODE7)/*(U6) GPMC_WN.GPIO2[4]*/

               >;

       };

我不知道原因在哪里。

此致、

Bruce

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!

    您确定/dev/input/event2是您的键盘设备吗? 您是否检查了行 GPIO 和列 GPIO 引脚是否尚未被另一个驱动程序使用?

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    在/dev/input/by-path 上、我看到了

    platform-matrial_keypad@0-event ->。/event2

    /dev/input/event2是矩阵键盘。

    我再次检查了行 GPIO 和 col-GPIO 是否未被另一个驱动程序使用。

    我还将去抖延迟 ms 更改为5、20、80、它们没有任何影响。

    我跟踪了系统日志,并确认 match_keypad_probe ()、match_keypad_scan()、match_keypad_init_gpio ()运行正常。

     

    以下是 evtest 的输出“dev/input/event2”:

    输入驱动程序版本为1.0.1

    输入设备 ID:总线0x19供应商0x0产品0x0版本0x0

    输入器件名称:"Matrial_keypad@0"

    支持的事件:

     事件类型0 (EV_SYN)

     事件类型1 (EV_KEY)

       事件代码1 (KEY_ESC)

       事件代码2 (key_1)

       事件代码3 (key_2)

       事件代码4 (key_3)

       事件代码5 (key_4)

       事件代码6 (key_5)

       事件代码7 (key_6)

       事件代码8 (key_7)

       事件代码9 (key_8)

       事件代码10 (key_9)

       事件代码11 (key_0)

       事件代码12 (key_minus)

       事件代码14 (key_Backspace)

       事件代码15 (key_tab)

     事件类型4 (EV_MSC)

       事件代码4 (MSC_scan)

    密钥重复处理:

     重复类型20 (EV_REP)

       重复代码0 (REP_DELAY)

         值   250

       重复代码1 (REP_PERIOD)

         值    33

    属性:

    正在测试... (中断以退出)

    事件:time 15701394.089648,type 1 (EV_KEY),code 14 (key_Backspace),value 2

    事件:时间15701394.089648,--- EV_SYN --------

    事件:time 15701394.125748,type 1 (EV_KEY),code 14 (key_Backspace),value 2

    事件:时间15701394.125748,--- EV_SYN --------

    事件:time 15701394.161749,type 1 (EV_KEY),code 14 (key_Backspace),value 2

     …

    我不知道问题在哪里。

     

    此致、

    Bruce

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    我在 match_keypad.c 中添加一些 printks 以跟踪 match_keypad_scan()并查找:此函数在电路板启动期间调用。 当主板运行时,我启动 evtest,然后按键,我看不到调用了 match_keyboard_scan()。 按键时是否应调用它?

    我读取了 AM335x-EVM.dts、它使用来自同一 GPIO 组(GPIO1)的矩阵键盘 GPIO 引脚;对于我的应用、我使用来自 GPIO2的4行 GPIO、来自 GPIO1的4列 GPIO、这是否会导致问题?

    此致、
    Bruce

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bruce、
    您仍有问题吗? 如果是、我可以看一下。

    Steve K.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    感谢你的帮助。

    现在、在我们修复了硬件接线后、键盘工作正常。

    此致、

    Bruce