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.

[参考译文] Linux/TCA8418:接收到多个按键按压事件。

Guru**** 2943030 points

Other Parts Discussed in Thread: TCA8418

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/756496/linux-tca8418-mutliple-keys-press-events-are-received

器件型号:TCA8418

工具/软件:Linux

您好!

我有一个键盘矩阵4行、3 cols 和6个函数键作为单输入(只有4x3键工作、F1-F6不工作

我已成功将我们的定制板连接到我们的定制 PCB。 我可以看到 dmesg、它链接到事件0

我可以成功运行 evtest、但当我按下某些按钮(4x3按键)时、我会看到我不希望出现的按键事件。 我连接了下面的 evtest。 我的硬件板原理图中是否有错误? 我缺少什么吗?

按键1、4、7、*都能很好地工作

键2、5、8、0显示一个额外的键(上一列)

按键3、6、9,每次按键显示两个额外的按键(前2列)

我将连接我的键盘原理图。 我在这个论坛上要寻找的是确定我的硬件原理图是否符合 TCA8418或是否存在错误(缺少上拉电阻器或类似项)。 我也不喜欢设计人员直接连接 F1-F6的方式、我们可以为所有项目制作一个3x6矩阵。

谢谢、

Zev。

evtest 输出

--------

root@var-som-MX6:~ evtest
未指定设备,正在尝试扫描所有/dev/input/event
可用器件:
/dev/input/event0:     TCA8418
/dev/input/event1:     Logitech USB 光电鼠标
/dev/input/event2:     GPIO 键
选择器件事件编号[0-2]:0
输入驱动程序版本为1.0.1
输入设备 ID:总线0x18供应商0x1产品0x1版本0x1
输入器件名称:"TCA8418"
支持的事件:
 事件类型0 (EV_SYN)
 事件类型1 (EV_KEY)
   事件代码28 (key_enter)
   事件代码59 (key_f1)
   事件代码60 (key_F2)
   事件代码61 (key_F3)
   事件代码62 (key_F4)
   事件代码63 (key_F5)
   事件代码64 (key_f6)
   事件代码512 (key_numeral_0)
   事件代码513 (key_numeral_1)
   事件代码514 (key_numeral_2)
   事件代码515 (key_numeral_3)
   事件代码516 (key_numeral_4)
   事件代码517 (key_numeral_5)
   事件代码518 (key_numeral_6)
   事件代码519 (key_numeral_7)
   事件代码520 (key_numeral_8)
   事件代码521 (key_numeral_9)
   事件代码522 (key_numeral_star)
 事件类型4 (EV_MSC)
   事件代码4 (MSC_scan)
属性:
正在测试... (中断以退出)
按1号键
事件:time 1545109317.211748、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:时间1545109317.211748、类型1 (EV_KEY)、代码513 (KEY 数字1)、值1
事件:time 1545109317.211748、type 4 (EV_MSC)、code 4 (MSC_scan)、value 03
事件:time 1545109317.211748、type 4 (EV_MSC)、code 4 (MSC_scan)、value 04
事件:时间1545109317.211748,--- SYN_REPORT --------
事件:time 1545109317.397339、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:时间1545109317.397339、类型1 (EV_KEY)、代码513 (KEY 数字1)、值0
事件:time 1545109317.397339、type 4 (EV_MSC)、code 4 (MSC_scan)、value 03
事件:time 1545109317.397339、type 4 (EV_MSC)、code 4 (MSC_scan)、value 04
事件:时间1545109317.397339,--- SYN_REPORT --------

按数字2
事件:time 1545109328.440710、type 4 (EV_MSC)、code 4 (MSC_scan)、value 01
事件:time 1545109328.440710、type 1 (EV_KEY)、code 514 (key_numeral_2)、value 1
事件:time 1545109328.440710、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:time 1545109328.440710、type 1 (EV_KEY)、code 513 (key_numeral_1)、value 1
事件:time 1545109328.440710、type 4 (EV_MSC)、code 4 (MSC_scan)、value 03
事件:时间1545109328.440710,--- SYN_REPORT --------
事件:time 1545109328.579526、type 4 (EV_MSC)、code 4 (MSC_scan)、value 01
事件:time 1545109328.579526、type 1 (EV_KEY)、code 514 (key_numeral_2)、value 0
事件:time 1545109328.579526、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:时间1545109328.579526、类型1 (EV_KEY)、代码513 (KEY 数字1)、值0
事件:time 1545109328.579526、type 4 (EV_MSC)、code 4 (MSC_scan)、value 03
事件:时间1545109328.579526,--- SYN_REPORT --------

按数字3
事件:time 1545109337.702155、type 4 (EV_MSC)、code 4 (MSC_scan)、value 00
事件:time 1545109337.702155、type 1 (EV_KEY)、code 515 (key_numeral_3)、value 1
事件:time 1545109337.702155、type 4 (EV_MSC)、code 4 (MSC_scan)、value 01
事件:时间1545109337.702155、类型1 (EV_KEY)、代码514 (KEY 数字2)、值1
事件:time 1545109337.702155、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:时间1545109337.702155、类型1 (EV_KEY)、代码513 (KEY 数字1)、值1
事件:时间1545109337.702155,--- SYN_REPORT --------
事件:time 1545109337.887568、type 4 (EV_MSC)、code 4 (MSC_scan)、value 00
事件:时间1545109337.887568、类型1 (EV_KEY)、代码515 (KEY 数字3)、值0
事件:time 1545109337.887568、type 4 (EV_MSC)、code 4 (MSC_scan)、value 01
事件:时间1545109337.887568、类型1 (EV_KEY)、代码514 (KEY 数字2)、值0
事件:time 1545109337.887568、type 4 (EV_MSC)、code 4 (MSC_scan)、value 02
事件:时间1545109337.887568、类型1 (EV_KEY)、代码513 (KEY 数字1)、值0
事件:时间1545109337.887568,--- SYN_REPORT --------

按数字4
事件:time 1545109348.313482、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:时间1545109348.313482、类型1 (EV_KEY)、代码516 (key_numeral_4)、值1
事件:time 1545109348.313482、type 4 (EV_MSC)、code 4 (MSC_scan)、value 13
事件:time 1545109348.313482、type 4 (EV_MSC)、code 4 (MSC_scan)、value 14
事件:时间1545109348.313482,--- SYN_REPORT --------
事件:time 1545109348.475754、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:time 1545109348.475754、type 1 (EV_KEY)、code 516 (key_numeral_4)、value 0
事件:time 1545109348.475754、type 4 (EV_MSC)、code 4 (MSC_scan)、value 13
事件:time 1545109348.475754、type 4 (EV_MSC)、code 4 (MSC_scan)、value 14
事件:时间1545109348.475754,--- SYN_REPORT --------

按数字5
事件:time 1545109359.762071、type 4 (EV_MSC)、code 4 (MSC_scan)、value 11
事件:时间1545109359.762071、类型1 (EV_KEY)、代码517 (KEY 数字_ 5)、值1
事件:time 1545109359.762071、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:time 1545109359.762071、type 1 (EV_KEY)、code 516 (key_numeral_4)、value 1
事件:time 1545109359.762071、type 4 (EV_MSC)、code 4 (MSC_scan)、value 13
事件:时间1545109359.762071,--- SYN_REPORT --------
事件:time 1545109359.901037、type 4 (EV_MSC)、code 4 (MSC_scan)、value 11
事件:time 1545109359.901037、type 1 (EV_KEY)、code 517 (key_numeral_5)、value 0
事件:time 1545109359.901037、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:time 1545109359.901037、type 1 (EV_KEY)、code 516 (key_numeral_4)、value 0
事件:time 1545109359.901037、type 4 (EV_MSC)、code 4 (MSC_scan)、value 13
事件:时间1545109359.901037,--- SYN_REPORT --------

按数字6
事件:time 1545109370.390124、type 4 (EV_MSC)、code 4 (MSC_scan)、value 10
事件:时间1545109370.390124、类型1 (EV_KEY)、代码518 (KEY 数字_ 6)、值1
事件:time 1545109370.390124、type 4 (EV_MSC)、code 4 (MSC_scan)、value 11
事件:时间1545109370.390124、类型1 (EV_KEY)、代码517 (KEY 数字_5)、值1
事件:time 1545109370.390124、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:时间1545109370.390124、类型1 (EV_KEY)、代码516 (KEY 数字4)、值1
事件:时间1545109370.390124,--- SYN_REPORT --------
事件:time 1545109370.5728、type 4 (EV_MSC)、code 4 (MSC_scan)、value 10
事件:时间1545109370.5728、类型1 (EV_KEY)、代码518 (KEY 数字_ 6)、值0
事件:time 1545109370.5728、type 4 (EV_MSC)、code 4 (MSC_scan)、value 11
事件:时间1545109370.5728、类型1 (EV_KEY)、代码517 (KEY 数字_ 5)、值0
事件:time 1545109370.5728、type 4 (EV_MSC)、code 4 (MSC_scan)、value 12
事件:时间1545109370.5728、类型1 (EV_KEY)、代码516 (key_numeral_4)、值0
事件:时间1545109370.5728,--- SYN_REPORT --------

按数字7
事件:time 1545109379.717056、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:时间1545109379.717056、类型1 (EV_KEY)、代码519 (KEY 数字7)、值1
事件:time 1545109379.717056、type 4 (EV_MSC)、code 4 (MSC_scan)、value 23
事件:time 1545109379.717056、type 4 (EV_MSC)、code 4 (MSC_scan)、value 24
事件:时间1545109379.717056,--- SYN_REPORT --------
事件:time 1545109379.925596、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:时间1545109379.925596、类型1 (EV_KEY)、代码519 (KEY_numeral_7)、值0
事件:time 1545109379.925596、type 4 (EV_MSC)、code 4 (MSC_scan)、value 23
事件:time 1545109379.925596、type 4 (EV_MSC)、code 4 (MSC_scan)、value 24
事件:时间1545109379.925596,--- SYN_REPORT --------

使用数字8
事件:time 1545109387.805598、type 4 (EV_MSC)、code 4 (MSC_scan)、value 21
事件:time 1545109387.805598、type 1 (EV_KEY)、code 520 (key_numeral_8)、value 1
事件:time 1545109387.805598、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:time 1545109387.805598、type 1 (EV_KEY)、code 519 (key_numeral_7)、value 1
事件:time 1545109387.805598、type 4 (EV_MSC)、code 4 (MSC_scan)、value 23
事件:时间1545109387.805598,--- SYN_REPORT --------
事件:time 1545109387.990950、type 4 (EV_MSC)、code 4 (MSC_scan)、value 21
事件:time 1545109387.990950、type 1 (EV_KEY)、code 520 (key_numeral_8)、value 0
事件:time 1545109387.990950、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:time 1545109387.990950、type 1 (EV_KEY)、code 519 (key_numeral_7)、value 0
事件:time 1545109387.990950、type 4 (EV_MSC)、code 4 (MSC_scan)、value 23
事件:时间1545109387.990950,--- SYN_REPORT --------

按数字9
事件:time 1545109396.270974、type 4 (EV_MSC)、code 4 (MSC_scan)、value 20
事件:时间1545109396.270974、类型1 (EV_KEY)、代码521 (KEY 数字_9)、值1
事件:time 1545109396.270974、type 4 (EV_MSC)、code 4 (MSC_scan)、value 21
事件:time 1545109396.270974、type 1 (EV_KEY)、code 520 (key_numeral_8)、value 1
事件:time 1545109396.270974、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:time 1545109396.270974、type 1 (EV_KEY)、code 519 (key_numeral_7)、value 1
事件:时间1545109396.270974,--- SYN_REPORT --------
事件:time 1545109396.456231、type 4 (EV_MSC)、code 4 (MSC_scan)、value 20
事件:时间1545109396.456231、类型1 (EV_KEY)、代码521 (KEY 数字_9)、值0
事件:time 1545109396.456231、type 4 (EV_MSC)、code 4 (MSC_scan)、value 21
事件:time 1545109396.456231、type 1 (EV_KEY)、code 520 (key_numeral_8)、value 0
事件:time 1545109396.456231、type 4 (EV_MSC)、code 4 (MSC_scan)、value 22
事件:时间1545109396.456231、类型1 (EV_KEY)、代码519 (KEY 数字7)、值0
事件:时间1545109396.456231,--- SYN_REPORT --------

按星号键
事件:time 1545109408.351310、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:时间1545109408.351310、类型1 (EV_KEY)、代码522 (KEY 数字星型)、值1
事件:time 1545109408.351310、type 4 (EV_MSC)、code 4 (MSC_scan)、value 33
事件:time 1545109408.351310、type 4 (EV_MSC)、code 4 (MSC_scan)、value 34
事件:时间1545109408.351310,--- SYN_REPORT --------
事件:time 1545109408.559884、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:time 1545109408.559884、type 1 (EV_KEY)、code 522 (key_numeral_star)、value 0
事件:time 1545109408.559884、type 4 (EV_MSC)、code 4 (MSC_scan)、value 33
事件:time 1545109408.559884、type 4 (EV_MSC)、code 4 (MSC_scan)、value 34
事件:时间1545109408.559884,--- SYN_REPORT --------

按0
事件:time 1545109417.783275、type 4 (EV_MSC)、code 4 (MSC_scan)、value 31
事件:time 1545109417.783275、type 1 (EV_KEY)、code 512 (key_numeral_0)、value 1
事件:time 1545109417.783275、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:time 1545109417.783275、type 1 (EV_KEY)、code 522 (key_numeral_star)、value 1
事件:time 1545109417.783275、type 4 (EV_MSC)、code 4 (MSC_scan)、value 33
事件:时间1545109417.783275,--- SYN_REPORT --------
事件:time 1545109417.968590、type 4 (EV_MSC)、code 4 (MSC_scan)、value 31
事件:时间1545109417.968590、类型1 (EV_KEY)、代码512 (KEY_NUMER_0)、值0
事件:time 1545109417.968590、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:时间1545109417.968590、类型1 (EV_KEY)、代码522 (key_numeral_star)、值0
事件:time 1545109417.968590、type 4 (EV_MSC)、code 4 (MSC_scan)、value 33
事件:时间1545109417.968590,--- SYN_REPORT --------

按 ENTER 键
事件:time 1545109429.240499、type 4 (EV_MSC)、code 4 (MSC_scan)、value 30
事件:time 1545109429.240499、type 1 (EV_KEY)、code 28 (key_enter)、value 1
事件:time 1545109429.240499、type 4 (EV_MSC)、code 4 (MSC_scan)、value 31
事件:time 1545109429.240499、type 1 (EV_KEY)、code 512 (key_numeral_0)、value 1
事件:time 1545109429.240499、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:time 1545109429.240499、type 1 (EV_KEY)、code 522 (key_numeral_star)、value 1
事件:时间1545109429.240499,--- SYN_REPORT --------
事件:time 1545109429.402877、type 4 (EV_MSC)、code 4 (MSC_scan)、value 30
事件:Time 1545109429.402877、type 1 (EV_KEY)、code 28 (key_enter)、value 0
事件:time 1545109429.402877、type 4 (EV_MSC)、code 4 (MSC_scan)、value 31
事件:Time 1545109429.402877、type 1 (EV_KEY)、code 512 (key_numeral_0)、value 0
事件:time 1545109429.402877、type 4 (EV_MSC)、code 4 (MSC_scan)、value 32
事件:time 1545109429.402877、type 1 (EV_KEY)、code 522 (key_numeral_star)、value 0
事件:时间1545109429.402877,--- SYN_REPORT --------

按 F1键
通过 F6不执行任何操作
^ó n Croot@var-som-MX6:~ó n#
i2c 上的器件树映射
----------
 键盘:TCA8418@34{
       兼容="ti、TCA8418";
       reg =<0x34>;
       行输出使能;
       COL-去抖-滤波器周期=<5>;
       上拉电阻使能;
       去抖延迟 ms =<4>;
        interrupt-parent =<&GPIO5>;
        中断=<13 IRQ_TYPE_EDGE_FALLING>;
        键盘、num 列=<10>;e2e.ti.com/.../Schematic_5F00_KEYPAD.pdf     键盘、num-rows =<8>;
        linux、无自动运行的 peat;
 linux、keymap =<
      Matrial_key (0x00、0x02、key_numeral_1)/* ROW0、Column2*/
      Matrial_key (0x00、0x01、key_numeral_2)/* ROW0、Column1*/
                    Matrial_key (0x00、0x00、key_numeral_3)/* ROW0、COLUMN0*/
 
                    Matrial_key (0x01、0x02、key_numeral_4) /* ROW1、Column2*/
                    Matrial_key (0x01、0x01、key_numeral_5) /* ROW1、Column1*/
                    Matrial_key (0x01、0x00、key_numeral_6)/* ROW1、COLUMN0*/
 
                    Matrial_key (0x02、0x02、key_numeral_7) /* ROW2、Column2*/
                    Matrial_key (0x02、0x01、key_numeral_8) /* ROW2、Column1*/
                    Matrial_key (0x02、0x00、key_numeral_9) /* ROW2、COLUMN0*/
 
                    Matrial_key (0x03、0x02、key_numerical_star) /* Row3、Column2*/
                    Matrial_key (0x03、0x01、key_numerical_0) /* Row3、Column1*/
                    Matrial_key (0x03、0x00、key_enter)      /* Row3、COLUMN0*/
 
                    Matrial_key (0x07、0x04、key_F1)/* RoW4、Column4*/
                    Matrix_key (0x07、0x05、key_F2)/*RoW4、COLUMN5*/
                    Matrix_key (0x07、0x06、key_F3)/*RoW4、COLUMN6*/
                    Matrix_key (0x07、0x07、key_F4)/*RoW4、COLUMN7*/
      Matrix_key (0x07、0x08、key_F5)/*RoW4、COLUMN8*/
       Matrial_key (0x07、0x09、key_f6)/* RoW4、COLUMN9*/
       >;
              
 };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    似乎无法上传原理图的 PDF、因此我从下拉框粘贴了链接

    键盘原理图:

    https://www.dropbox.com/s/jg1z76kipx5pxgz/Schematic_KEYPAD.pdf?dl=0

    谢谢!

    Zev

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

    由于我们公司对文件共享站点的一些限制、我无法访问您提供的下拉框链接。 但是、我可以告诉您、看到相邻列对应多次按键的最可能原因是由于存在寄生电容、信号过渡回高电平所需的时间太长。 该器件的行输入仅在内部弱上拉、因此添加外部上拉电阻(例如~10千欧)通常有助于加快从低电平到高电平的转换。 如果您当前的实施方案中没有这些上拉电阻器、我建议您先添加它们、看看这是否可以解决问题。 (如果不是、请告诉我、让我们进一步集思广益。)

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

    原理图。 作为图像添加:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常好-谢谢! 我看到您已经有一些上拉电阻、但是否可以移除(或减小)电容 C1、C2和 C3? 这些可能会使信号减慢得足以使电压在扫描相邻列时仍被视为"低电平"。

    此致、
    最大
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 请让我一天。 我无法减小、但可以移除 C1、C2和 C3。
    其他一切看起来都好吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、原理图的其余部分对我来说看起来正常。

    此致、
    最大
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最大值、
    感谢你的帮助。 我删除了 C1、C2和 C3 (将它们保持打开状态)、然后它们开始完美工作。
    Zev。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Zev、

    很高兴听到这个消息! 感谢您的更新。 请注意、该器件确实在内部实现了"去抖"滤波器、因此在 PCB 上没有这些电容器时、可以正常运行。

    最大