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.

[参考译文] PCA9539:读取输出端口寄存器

Guru**** 2390755 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/823003/pca9539-reading-output-port-register

器件型号:PCA9539

我对读取输出端口寄存器有疑问。 当我在写入后读取输出端口以验证其是否具有正确的数据时、我的极性配置寄存器4和5将复位。 我必须再次发送寄存器4和5。

我能否知道每次从输出寄存器中读取后、它是否通常要执行的操作、我是否需要再次发送寄存器4和5?

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

    你好、Saga、

    为了清楚起见、您能否提供原理图以及 I2C 事务的范围截图? 我想验证您是否正在写入正确的寄存器。

    谢谢、

    -Bobby

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

    您好、Bobby -

    我的意思是说、我现在的通信是正确的。 唯一的问题是、当我写入输出端口 reg (p1.0 -P1.7)时、我希望读取 PCA 芯片中的当前状态、以便仔细检查它是否具有预期的相同状态。 是否可以这样做、并且不会更改极性配置 reg right (reg 4和5)?

    谢谢、

    Sagar

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

    您好 Sagar、

    "是否可以这样做、并且不会更改极性配置 reg right (reg 4和5)?"

    是的。 当您执行 I2C 读取操作时、该操作不应更改寄存器的值(如果您正在读取输入端口、但不是输出端口或极性配置寄存器、则可能会清除数据)。

    -Bobby

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

    因此、读取输出端口寄存器不会影响输入寄存器、对吧? 当我读取输出端口寄存器时、如果之后我读取输入端口寄存器、则读取0xFF 而不是0x00、这意味着极性配置寄存器发生翻转。 您是否曾遇到过这种情况、或这种情况是否常见?

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

    您好 Sagar、

    "因此、读取输出端口寄存器不会影响输入寄存器?"

    没错。

    "当我读取输出端口寄存器时、之后如果我读取输入端口寄存器、则读取0xFF 而不是0x00、这意味着极性配置寄存器发生翻转。 您是否曾经历过这种情况、或这种情况是否常见?"

    我猜您是在配置寄存器设置为输出时写入输出寄存器。 如果您将所有输出设置为高电平、则所有输入都将看到输出高电平、这将在您读取输入端口时得到反映。 (器件的输出级与器件的输入级相连。) 您可以使用 o-Scope/DMM 探测端口的输出级、并将它们与您读取的输入寄存器进行比较。它们应该匹配。

    -Bobby

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

    "我猜您是在配置寄存器设置为输出时写入输出寄存器。 如果您将所有输出设置为高电平、则所有输入都将看到输出高电平、这将在您读取输入端口时得到反映。 (器件的输出级与器件的输入级相连。) 您可以使用 o-Scope/DMM 探测端口的输出级、并将它们与您读取的输入寄存器进行比较。 它们应该匹配。"

    因此、端口0-0.7为输入、P 1.0至1.7为输出。 和极性寄存器仅针对 P0.0 -0.7进行写入。

    因此、当我写入 P1.0-P1.7、然后我想通过读取同一个输出端口来验证该端口具有相同的值。 因此、读取该值后、即使我正在读取 P1.0至 P1.7、它也不应影响 P0.0 -p0.7上的任何内容。 但有时在读取 P1.0-P1.7后、P0.0 -P0.7上的数据会发生翻转(因为其极性配置设置为0xFF)。 那么、我不应该发生这种情况?

    谢谢

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

    很抱歉、我等了这么长时间才回复您、直到现在我才看到这条消息。

    "因此、当我写入 P1.0-P1.7、然后我想通过读取同一输出端口来验证该值是否相同。 因此、读取该值后、即使我正在读取 P1.0至 P1.7、它也不应影响 P0.0 -p0.7上的任何内容。"

    没错。 当您写入和读取 p1.0 - p1.7时、它不会影响另一个端口。

    "但有时在读取 P1.0-P1.7后、P0.0 -P0.7上的数据会发生翻转"

    由于您没有触摸 P0.0 - p0.7引脚/寄存器、这种情况下的声音不正确。 这些引脚是通过电阻器以 GND/Vcc 为基准还是设置为输出? 如果引脚保持输入状态并悬空、这些输入值可能会发生变化。

    -Bobby