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:复位后 INT 线路保持低电平

Guru**** 2534260 points
Other Parts Discussed in Thread: TCA8418

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1004919/tca8418-int-line-remains-low-after-a-reset

器件型号:TCA8418

大家好、

我们的客户将 TCA8418与 STM32搭配使用、如下面的原理图所示。 但是、有时 INT 线路在复位后保持低电平、并且在客户重新启动电路板之前不会返回高电平。 键盘通过10cm 电缆连接、MCU 在3.3V 电压下运行。  

以下是 INT 引脚在不同条件下的信号。

正常 情况

复位中断  

INT 错误

此致、

Danilo

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

    您好 Danilo、

    当输入端口的值发生变化时、此器件上的 INT 引脚被激活。 复位后、所有引脚将设置为其默认状态。 即使输出引脚无法更改值、在复位后、如果输出端口变为输入端口且值与默认值不同、则可能会导致激活 INT 引脚。 这将导致 INT 保持低电平。

    为了清除 INT、引脚要么必须返回其原始值、要么必须读取端口。 您是否能够通过读取所有端口在复位后清除 INT?

    您是否在复位前后检查了端口的值、以查看复位后是否有任何端口发生了变化?

    最棒的

    Chris

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

    您好 Chris

    您在图片中看到的效果。 大多数情况下、如果寄存器中断寄存器被写入、INT 引脚可被复位。

    有时 INT 引脚和中断寄存器不能被复位(INT 上的图片错误)。 之后、我再次尝试复位中断寄存器、但没有变化(图片复位中断)。 寄存器和 INT 引脚没有改变。

    在 MCU 侧、INT 是输入、我们仅从该引脚读取。

    此致

    C 线

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

    在您尝试复位中断寄存器后、您可以读回寄存器的数据。 如果可能、您可以告诉我您正在读取哪个寄存器以及其中的数据吗?

    此外、当存在 INT 时、您是否在复位时检查了 GPIO 引脚的值? 您应该能够在复位前查看哪个 GPIO 导致 INT、并检查该 GPIO 引脚是否导致 INT 再次发生。

    最棒的

    Chris

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

    您好 Chris

    在中断我的固件后、执行以下步骤:

    -读取寄存器0x04以获取密钥的值

    -读取寄存器0x03以获取密钥计数

    -写入寄存器0x02值0x1F 以复位所有中断-> INT 通常会变为高电平

    -读取寄存器0x02以查看它是否为空

    如果固件卡死、则执行以下步骤以及寄存器的值

    -读取寄存器0x04以获取 KEY 的值->该值取决于按下的 KEY

    -读取寄存器0x03以获取密钥计数->寄存器的值为0x00

    -写入寄存器0x02值0x1F 以复位所有中断-> INT 保持低电平

    读取寄存器0x02以查看它是否为空->寄存器的值为0x01

    此外、我还尝试通过以下步骤再次复位寄存器0x02:

    -写入寄存器0x02值0x1F 以复位所有中断-> INT 保持低电平

    读取寄存器0x02以查看它是否为空->寄存器的值为0x01

    即使我复位寄存器0x02、INT 也会保持低电平。 键侧没有动作、因此无法激活另一个中断。

    此致

    C 线

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

    尊敬的 Celine:

    以下是您必须执行的步骤、让我知道这是否合理、或者是否存在任何混淆:"用户首先检查 INT_STAT 寄存器以查看是否存在任何中断。 如果是、则读取密钥锁定和事件计数器寄存器(KEY_LCK_EC、寄存器0x03)以查看存储了多少个中断。 然后再次读取 INT_STAT 寄存器、以确保没有新事件进入。 然后、按中断次数读取 KEY_EVENT_A 寄存器。 每次读取发生时、key_lCK_EC 寄存器中的计数都会减少1。 FIFO 中的数据也会在堆栈中向下移动1 (从 key_event_J 到 key_event_a)。 一旦所有事件都被读取,键事件计数为0,然后可以通过向其写入‘1’来清除 KE_INT 位。”

    您必须确保多次读取 key_event_a 寄存器、因为存在中断。 您可能错过了该步骤。 一旦它被读取足够的时间、您就可以清除中断。 请告诉我这是否解决了您的问题。

    最棒的

    Chris

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

    您好 Chris

    我修改了寄存器的读出内容、您是怎么写的。

    寄存器0x03为空、中断寄存器在复位后仍在0x01上

    正常模式工作方式

    测量误差案例

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

    如何插入测量值的图片?

    通过"插入"->" 图像/视频/图片"、这是不可能的

    此致

    C 线

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

    Celine、

    单击“插入”->“图像”后,您可以单击“上载”,然后在 PC 中搜索要上载的图像。 然后、它将为您提供图像的预览、并单击"确定"将图像插入答复框。 我遇到了一些图像第一次或第二次尝试时无法上传的问题、但在页面刷新后、该问题会起作用。

    此致、

    Eric Hackett

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

    Celine、

    您能否详细说明一下您的含义:

    [引用 userid="488424" URL"~/support/interface-group/interface/f/interface-forum/1004919/tca8418-int-line-remains-low-after-a-reset/3725239 #3725239"]

    正常模式工作方式

    测量误差案例

    [/报价]

    您是否能够看到寄存器0x03递减或该功能根本不起作用?

    最棒的

    Chris

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

    现在、我可以插入图像。

    如果固件工作正常、则为修改后的固件。 读取寄存器值并复位中断寄存器后、INT 信号变为高电平

    在该图像中、INT 信号在读取寄存器后保持低电平。 寄存器0x03为低电平。 中断寄存器的复位无效。

    我该怎么做才能复位中断寄存器、INT 信号再次变为高电平?  

    在这两种情况下、它都是相同的固件。 通常在一分钟后会出现错误情况。

    此致

    C 线

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

    尊敬的 Celine:

    您能否验证您是否正在执行以下步骤:

    1. 读取寄存器 INT_STAT (0x02):确保中断来自位0 K_INT
    2. 读取寄存器 key_lCK_EC (0x03):只有位[0-3]告诉您存储了多少个中断
    3. 读取 INT_STAT (0x02):确保没有其他中断进入并且它只是 K_INT
    4. 读取寄存器 key_event_a (0x04):反复读取。 在 Key_LCK_EC 中有多少次中断
    5. 读取 KEY _LCK_EC (0x03):确保位[0-3]为0。
    6. 向 INT_STAT (0x02)写入0x01:这将清除中断。

    您能告诉我、器件在这些步骤中无法执行它应该执行的操作吗?

    唯一的中断是 K_INT 非常重要。 如果它是另一个中断、则还有其他方法可以清除它。 让我知道它是什么中断。

    最棒的

    Chris

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

    您好 Chris

    我了解芯片的工作原理、而且大部分时间一切都正常。  

    但是、正如您在我上次测量中看到的、寄存器0x03为空、但无法复位寄存器0x02。 在我尝试复位寄存器0x02后、它仍然是0x01。 是否有其他方法可以复位寄存器0x02? 这是 TI 芯片中的错误吗?

    此致

    C 线

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

    尊敬的 Celine:

    当 INT 未被清除时、在您向寄存器0x02写入0x1F 以将其清除之后。 然后读取寄存器0x02并看到 K_INT 标志仍然被抛出。 您能否读取0x03寄存器以验证它是否仍然为0? 请给我一张图片。

    可能会出现另一个中断。

    最棒的

    Chris

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

    您好 Chris

    这是缺失的部件。  在我尝试复位中断寄存器之前、我没有意识到在读取寄存器0x03后可能会有中断。

    感谢你的帮助。

    此致

    C 线

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

    Celine、

    好极了。 我很高兴它现在正在工作。

    最棒的

    Chris