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.

[参考译文] TCA8418:无法检测到 TCA8418下拉信号

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/890921/tca8418-tca8418-pull-down-signal-cannot-be-detected

器件型号:TCA8418

您好!

 I2C 现在可以操作寄存器、但按下一次键时无法检测到下拉信号。 理论上、应该有一个下拉电阻器。 可能的原因是什么?

是否必须从外部拉取不同的 KPCOL、或者寄存器是否配置为高电平? 不同的 KROW 是否只影响他? 哪些寄存器设置会影响他?

谢谢!

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

    Neal、您好!

    按键的时间有多长? 您能否在按下键时验证电压与未激活时验证电压、以便我们验证是否没有硬件问题?

    在软件/固件方面、您如何检测按键的时间? 即、您正在读取哪些寄存器?

    此致、

    最大

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

    Neal、

    您能否提供原理图?

    您能否提供器件配置方式的寄存器值?

    "是否必须从外部拉取不同的 KPCOL、或者是否将寄存器配置为高电平?"

    如果将列设置为键盘模式、则该列可以是高阻态(扫描模式、在该模式下它将选通至高阻态)或接地(GND)、具体取决于模式(主动扫描或空闲)。

    "不同的 KROW 是否只影响他?"

    行是键盘模式下的输入、由100k 上拉电阻器拉高。

    "哪些寄存器设置会影响他?"

    0x1D-0x1F 设置 KP 模式或 GPIO。 上电时、器件是一个 GPIO、全部在内部通过100k 上拉电阻器上拉高。

    -Bobby

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

    您好,

    我们已找到出现此问题的原因、即 PCB 布局,

    现在还有另一个问题、

    如果未按下该键、则检测到寄存器02的正常高电平和低电平。 按下键时、检测到低电位,μ A

    原因可能是什么?

    谢谢!

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

    嗨、Neal、

    您是否向任何行或列添加了额外的电容?

    '如果未按下该键、则检测到寄存器02的正常高电平和低电平。 按下键时、检测到低电位,"

    您能否为您看到检测的行上的键盘按压提供范围? 我不能完全确定您在这里要描述的内容。

    谢谢、

    -Bobby

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

    您好,

    让我重新描述一下这个问题。

    目前、我们的芯片通常可以写入寄存器的值、测量电平的信号会生效、但无法正确读取。

    我们已将从地址配置为0x34、将寄存器0x01设置为0x19、将0x1d、0x1E、0x1f 配置为 KP 矩阵、

    当我们按键时、中断为低电平以读取状态寄存器0x02值、始终为0。 读取0x04寄存器始终为0x80。 我们测量了波形

    如附件中所示、从机执行了反馈0、我想问为什么按键、中断被触发、寄存器

    读取的值是错误的、是否需要配置任何其他寄存器才能使芯片正常工作。

    谢谢!

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

    您好,

    让我重新描述一下这个问题。

    目前、我们的芯片通常可以写入寄存器的值、测量电平的信号会生效、但无法正确读取。

    我们已将从地址配置为0x34、将寄存器0x01设置为0x19、将0x1d、0x1E、0x1f 配置为 KP 矩阵、

    当我们按键时、中断为低电平以读取状态寄存器0x02值、始终为0。 读取0x04寄存器始终为0x80。 我们测量了波形

    如附件中所示、从机执行了反馈0、我想问为什么按键、中断被触发、寄存器

    读取的值是错误的、是否需要配置任何其他寄存器才能使芯片正常工作。

    谢谢!

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

    您的波形显示您的 I2C 总线很难跟上您当前设置的时钟频率。 您可以看到时钟高电平周期永远不会接近 Vcc、我认为您甚至可能无法达到 Vcc 的70%。 我想您现在违反了 I2C 上升时间、这可能会导致信号完整性问题。

    我推荐将 SDA/SCL 上的上拉电阻器更改为至少电流值的一半或甚至更多。 作为参考、400kHz 时的 I2C 上升时间需要为300ns、从 Vcc 的30%到70%进行测量。

    我建议您执行 I2C 写入、然后在每次寄存器写入后立即执行 I2C 读取、以确保您实际写入您认为是的寄存器。

    尝试首先将寄存器0x01h 设置为0x81h

    立即读取以查看0x01h 是否设置为0x81h <-- AI enable,密钥事件生成 INT

    然后转至寄存器0x03h 并写入0x00h <--我们希望确保未启用键盘锁定

    读取0x03h 寄存器以确保位7设置为0

    下一次写入寄存器0x1Dh 数据:0xFFh、0xFFh、0x03h [在一个事务中完成此操作]

    这应使寄存器0x1D-0x1F 成为键盘矩阵的一部分(请记住、我们将寄存器0x01h 中的自动增量设置为要设置)

    在发出停止条件之前、读取寄存器并读取全部3个字节、并确保获得0xFFh、0xFFh、0x03h

    现在按键(或 GND 任何行)

    这应该会生成一个中断(INT 现在应该从高电平变为低电平)

    读取寄存 器0x03h、您应该看到0x01h 表示发生了1个事件。如果您按下并释放按钮、则应看到2个事件表示为0x02h。

    现在读取寄存器0x04h、这应该会告诉您哪个行/Col 被驱动为低电平。

    如果在按照这些说明操作后仍有问题、则可以上传的写入 和读取序列
    "尝试先将寄存器0x01h 设置为0x81h、然后立即读取以查看0x01h 是否设置为0x81h"

    ^(此事务的范围截屏)^

    我们可以逐步调试这个

    谢谢、

    -Bobby

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

    你(们)好

    感谢您以前向我们提供的调试建议。 我们已经解决了这个问题、我们可以正常使用新的 i2c。 在此之前、这是因为我们的 i2c SDA 信号在读取数据时无法成功、但 i2c 上的其他器件正常工作。 我们已经修改了 i2c 的稳定性并确认了问题的具体原因。 无论如何、感谢您的建议。

    谢谢

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

    你(们)好

    最近、我们遇到了一个新问题。 我想问你一个问题。 当我们快速滑动一行键时、我们将丢失大量的键值。 此时、中断中没有信号。 这是因为扫描需要20ms、我们的间隔时间小于20ms 吗? 如果是、我们能否对其进行优化? 如果没有、我们需要修改什么配置?

    谢谢。

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

    您好!

    很抱歉、直到现在、我才看到您回复并重新打开此主题。

    要验证,您是否能够在一次按一个键时正常地读取按键操作?

    当您快速按多个键时、寄存器0x03h 的读数是多少?

    "这是因为扫描需要20ms、我们的间隔时间小于20ms 吗?"

    扫描需要25毫秒、但它需要2次扫描才能实际确认按钮按压操作(这是器件的内置检查)。 最坏的情况是扫描 col 后立即按下按钮。 这意味着您需要在将按钮识别为按下之前的50ms 内保持按下按钮。 最短时间是在扫描 col 之前立即按下按钮、则只需等待约25毫秒即可识别按钮按压操作。 如果您的快速印刷时间少于50ms、那么您可能会错过印刷机、但实际上、人很难这么快地输入(印刷和发布)。

    "当我们快速滑动一行按键时、我们将丢失大量的按键值"

    FIFO 存储10个事件或5个按键按下(一个用于按下、一个用于释放)。 如果您读取 FIFO 的速度不够快、则会溢出。

    -Bobby

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

    你(们)好

    没问题、感谢您的回复。

    每次只按一个键时、我可以得到正常的键值。 正常使用没有问题。

    当我快速按多个键时、寄存器0x03h 的最大值为10。我们不会测试多个键。因为我们的产品很少使用此功能。


    当我快速滑动钥匙时、我将不会中断地丢失钥匙。 在0x03寄存器中读取的值为1。 实际上、只需按一次键、但间隔时间非常短。 因此,怀疑内部扫描时间比按键的间隔时间长。 由于我们测试了快速幻灯片、有10个键幻灯片、扫描时间为50ms、因此必须缺少一个键。

    如果器件的内部扫描规格为50ms、则无法优化此问题、因为我们可以确认间隔时间小于50ms。

    谢谢。

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

    "当我快速滑动钥匙时、我将不会中断地丢失钥匙。 在0x03寄存器中读取的值为1。 实际上、只需按一次键、但间隔时间非常短。 因此,怀疑内部扫描时间比按键的间隔时间长。 由于我们测试了快速幻灯片、有10个键幻灯片、扫描时间为50ms、因此必须缺少一个键。

    如果器件的内部扫描规格为50ms、则无法优化此问题、因为我们可以确认间隔时间小于50ms。"

    如果 FIFO 中仍有数据、您仍应看到 INT。 INT 将保持置为低电平、直到 FIFO 被清除。 通过将位4设置为= 0、可以选择使寄存器0x01h 中的 INT 暂时取消置位(它将使 INT 切换)。 还请确认寄存器0x01h 位0设置为"1"

    如果您使用的是非 E 版本的 TCA8418、您可能还需要查看涉及溢出勘误表的数据表第8.1.4节。

    -Bobby