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

复位中断

INT 错误

此致、
Danilo
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.
您好 Danilo、
当输入端口的值发生变化时、此器件上的 INT 引脚被激活。 复位后、所有引脚将设置为其默认状态。 即使输出引脚无法更改值、在复位后、如果输出端口变为输入端口且值与默认值不同、则可能会导致激活 INT 引脚。 这将导致 INT 保持低电平。
为了清除 INT、引脚要么必须返回其原始值、要么必须读取端口。 您是否能够通过读取所有端口在复位后清除 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
Celine、
您能否详细说明一下您的含义:
[引用 userid="488424" URL"~/support/interface-group/interface/f/interface-forum/1004919/tca8418-int-line-remains-low-after-a-reset/3725239 #3725239"]正常模式工作方式
测量误差案例
[/报价]您是否能够看到寄存器0x03递减或该功能根本不起作用?
最棒的
Chris
尊敬的 Celine:
您能否验证您是否正在执行以下步骤:
您能告诉我、器件在这些步骤中无法执行它应该执行的操作吗?
唯一的中断是 K_INT 非常重要。 如果它是另一个中断、则还有其他方法可以清除它。 让我知道它是什么中断。
最棒的
Chris