工具与软件:
你(们)好
我们使用 TCA8418作为 GPIO 和中断扩展器。
其中一个中断是 GPI 的低电平有效输入。 该信号可能在启用中断之前被置位(拉至低电平)。
从逻辑分析仪可以看到、在寄存器 GPIO_INT_EN1/2/3中写入相应的位后、TCA8418 INT 引脚永远不会拉低。
我们尝试了在 CONFIG 寄存器(0x01)中设置位4 (INT_CFG)、但没有效果。
我认为级别中断应反复触发、直到中断被置为无效。
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作为 GPIO 和中断扩展器。
其中一个中断是 GPI 的低电平有效输入。 该信号可能在启用中断之前被置位(拉至低电平)。
从逻辑分析仪可以看到、在寄存器 GPIO_INT_EN1/2/3中写入相应的位后、TCA8418 INT 引脚永远不会拉低。
我们尝试了在 CONFIG 寄存器(0x01)中设置位4 (INT_CFG)、但没有效果。
我认为级别中断应反复触发、直到中断被置为无效。
Feichen
你能详细说明一下这句话吗? 我不确定我是否完全理解这个问题。 只有1个/INT 硬件中断引脚。 它是否会反馈到 TCA8418?
一个中断为 GPI 的低电平有效输入。 此信号可能在启用中断之前生效(拉至低电平)。[/QUOT]GPIO_INT_ENx 寄存器仅在 GPI 上启用中断。 该寄存器中的默认值为"0"、这意味着每个 GPI 都关闭中断。 GPI 上的变化无法将/INT 触发为低电平。
[报价 userid="633247" url="~/support/interface-group/interface/f/interface-forum/1445347/tca8418-gpi-level-interrupt-not-triggering-when-enabled "]我们尝试在 config 寄存器(0x01)中设置位4 (INT_CFG)、但没有任何效果。[/QUOT]将 CONFIG 寄存器中的位4置位只会调整挂起中断的特性。 如果有多个中断同时发生、且位4 = 0、则/INT 将保持低电平、直到所有中断均已得到处理。 如果位4 = 1、则/INT 应在50us 内置为无效、然后再重新置为有效。
我认为级别中断应重复触发、直到中断无效。如果位4 = 1并且 GPIO_INT_STATx 寄存器中存在多个中断、则应重复触发。 要清除与配置为 GPI (非键盘)的引脚相关的中断、必须读取 GPIO_INT_STATx 寄存器。 例如、如果在寄存器0x11、0x12和0x13上触发了一个中断、并且仅读取0x11、则如果 CONFIG 寄存器(0x01)的位4 = 1、则/INT 上的中断应在50us 后取消置位并重新置位。
数字分析仪可能未捕捉到50us 窗口。 分析仪的采样率是多少?
此致、
Tyler
[/quote]
您能否详细阐述这一说法? 我不确定我是否完全理解这个问题。 只有1个/INT 硬件中断引脚。 它是否会反馈到 TCA8418? [报价]否、TCA8418用作中断扩展器。 另一个 IC 的中断信号被发送到 TCA8418的 GPI 引脚之一。 该中断也为低电平有效。
[/quote][/quote]Unknown 说:设置 CONFIG 寄存器中的位4仅会调整挂起中断的特性。 如果有多个中断同时发生、且位4 = 0、则/INT 将保持低电平、直到所有中断均已得到处理。 如果位4 = 1、则/INT 应在50us 内置为无效、然后再重新置为有效。 [报价]好的、这可能不是我们想要的。 我创建的驱动程序基本上在一个 I2C 读取中读取全部三个 GPI_INT_STAT 0x11~0x13、并在清除 INT_STS 0x02并退出 ISR 函数之前处理所有嵌套中断。 我们没有使用键盘事件功能。 仅适用于 GPIO 和 GPI 中断扩展器。
[/quote]数字分析仪可能未捕捉到50us 窗口。 分析仪的采样率是多少? [报价]我在逻辑分析仪上以8MSPS 的速率进行采样、而 I2C (400kHz)采集正常。 因此、这方面没有问题。
我的主要问题是电平中断在启用该 GPI 中断线路之前被置为有效、如何处理该中断。 因为产生这个中断的 IC 可以在它被启用前被置为有效。 通常、这对于大多数 SoC 的内部 GPIO 中断控制器是允许的。 如果信号为低电平并且 INT 类型为电平低电平、那么当启用/取消屏蔽该 GPI 线路中断时将立即触发。 但在此 TCA8418上没有看到相同的行为。 如果您最后仔细看一下我的捕获结果、该 IC 的 IRQ_FUSB 会拉至低电平、该 IC 的驱动程序会通过 Linux 的中断处理框架(用红色框标记)启用 TCA8418上的低电平中断。 写入0x26 0 0 0低电平有效、并写入0x1A 以启用相应位)。 但之后 TCA8418从不会触发其 INT。 因此、它变成了边缘敏感型而非级别敏感型。
谢谢!
Feichen
嗨、Feichen、
我的主要问题是、如果在启用此 GPI 中断线之前断言、如何处理级别中断。 因为产生这个中断的 IC 可以在它被启用前被置为有效。 通常、这对于大多数 SoC 的内部 GPIO 中断控制器是允许的。 如果信号为低电平并且 INT 类型为电平低电平、那么当启用/取消屏蔽该 GPI 线路中断时将立即触发。 但在此 TCA8418上没有看到相同的行为。 如果您最后仔细看一下我的捕获结果、该 IC 的 IRQ_FUSB 会拉至低电平、该 IC 的驱动程序会通过 Linux 的中断处理框架(用红色框标记)启用 TCA8418上的低电平中断。 写入0x26 0 0 0低电平有效、并写入0x1A 以启用相应位)。 但之后 TCA8418从不会触发其 INT。 因此它变成了边缘敏感型而非级别敏感型。
寄存器0x26确实控制/INT 上的中断是通过电压电平阈值触发、还是在完整的边沿转换期间(上升或下降)触发。
此寄存器中全为0意味着中断将在边沿转换时被触发、因为它是默认值。
0x1A 首先启用中断触发。 TCA8418在禁用中断的情况下上电。 如果产生中断的 IC 在它能够接收到适当中断配置之前被馈入 TCA8418、它将丢失中断。
应首先写入 TCA8418以配置将触发中断的条件。
此致、
Tyler