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.

[参考译文] TCA9539:中断查询

Guru**** 2540720 points
Other Parts Discussed in Thread: TCA9539, TCA8418E, TCA8418

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/819201/tca9539-interrupt-inquiry

器件型号:TCA9539
主题中讨论的其他器件: TCA8418ETCA8418

大家好,我有几个问题:

1.输入端口寄存器是否始终反映输入端口的最新电压电平? 还是仅在我读取寄存器之前更新?

假设端口0.7-0.0 (配置为输入)的初始电压电平都为0、I0.7-0.0位的寄存器也为0x00。

然后端口0.7被驱动为高电平。 INT/应该被驱动为低电平、对吧?

然后我读取 位 I0.7-0.0的寄存器、我会得到0x00还是0x80吗? 如果它是0x00、那么我必须再次读取它以获得最新的值0x80、对吧?

2.如果3个输入端口的电压电平发生变化并启动 INT、我只在第3个 INT 之后读取、那么我不知道第3个端口的电平是哪一个、我只能知道有3个输入端口的电压电平发生变化、对吧?

3.在第23至25页的数据表的写入和读取示例中 、输入端口寄存器和 (输出端口寄存器)始终成对使用、如果 CPU 发送 寄存器地址为0x00的命令、器件将始终发回 输入端口0和输入端口1值、 对吧? 如果我发送寄存器地址为0x01的命令、器件将仅发回 输入端口1值、对吧? 那么、我无法只读取输入端口0值?

我的客户希望申请一款类似于 TCA9539的器件  

1、有2个输入寄存器、一个反映最后一次、一个反映当前时间

2.能够屏蔽一些输入端口。 例如、P07-00均为输入、但只有 P07-06上的电压电平变化才会启动 INT、

我们有这样的器件吗?

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

    嗨、Howard、

    "一. 输入端口寄存器是否始终反映输入端口的最新电压电平? 或者它只会更新、直到我读取寄存器?"

    输入端口将看到电压电平、并在读取事务期间反映引脚的当前值。

    "那么端口0.7被驱动为高电平。 INT/应该被驱动为低电平、对吧?

    然后我读取 位 I0.7-0.0的寄存器、我会得到0x00还是0x80吗? 如果它是0x00、那么我必须再次读取它以获得最新的值0x80、对吧?"

    是的、只要端口0.7保持高电平、该位翻转 INT 将触发保持低电平。 当您读取寄存器时、您将看到0x80h。 不过、请注意、读取后 INT 将失效、器件中的比较器将将"引脚的上一个值"视为高电平。 这意味着、如果引脚变为低电平、INT 将再次生效、但如果它恢复为高电平、INT 将失效。

    "二. 如果3个输入端口电压电平发生变化并启动 INT、我只在第3个 INT 之后读取、那么我不知道哪个端口电平是第3个变化、我只能知道3个输入端口电压电平发生变化、对吧?"

    如果3个输入端口发生了变化、并且您读取了输入寄存器、则会看到所有3个输入发生了变化、前提是在这段时间内所有输入都保持变化。 如果2个输入返回到其原始状态、其中一个仍然发生更改、那么您只会看到1个输入更改、因为您读取的速度不够快。 实质上、如果您读取输入的速度足够快、则可以捕获所有输入变化。

    " 3. 在第23至25页的数据表的写入和读取示例中 、输入端口寄存器和 (输出端口寄存器)始终成对、如果 CPU 发送 寄存器地址为0x00的命令、器件将始终发回 输入端口0和输入端口1值、对吧? 如果我发送寄存器地址为0x01的命令、器件将仅发回 输入端口1值、对吧? 因此、我无法只读取输入端口0值?"

    不是真的。 只需发送命令字节0x00即可读取输入寄存器、并通过时钟9个周期获取输入端口0、然后 NACK。 如果您只想读取端口1、则发送命令字节0x01h 并仅发送9个时钟周期和 NACK、如果您发送18个时钟周期并在第9个时 ACK、则读取端口1、然后读取端口0。 如果持续发送时钟周期、则只需在端口0和端口1之间连续旋转读取、直到停止。 该器件通过硬连线在共享寄存器之间自动递增。

    "一. 有2个输入寄存器、一个反映最后一次、一个反映当前时间"

    我们的所有 IO 扩展器仅显示引脚的当前值。 如果您想知道最后一个值和当前值、则需要一个具有 FIFO 的器件、如 TCA8418/TCA8418E。 它将通过读取事件 FIFO 来告知您引脚何时更改状态以及何时更改。

    "二. 能够屏蔽一些输入端口。 例如、P07-00均为输入、但只有 P07-06上的电压电平变化才会启动 INT、"

    通过设置 GPI 事件模式寄存器、您可以将 TCA8418/TCA8418E 配置为仅将某些输入转至事件 FIFO。

    -Bobby