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.

[参考译文] TCA6424A:I/O 扩展器 I2C 信号序列和预期返回值

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

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1538920/tca6424a-i-o-expander-i2c-signal-sequence-and-expected-return-values

器件型号:TCA6424A


工具/软件:

您好!

我们使用的是 TCA6424A IO 扩展器。 目前、我们正在尝试对输入寄存器 (0 - 2) 进行单次读取。

器件似乎会回复、但当向输入引脚施加不同的信号电平时、响应似乎没有任何变化。

我们不会执行任何配置命令来启动、因为引脚的默认状态为“输入“、我们仅使用器件的输入。

其中包含对输入寄存器 0、1、2 进行单个 I2C 读取的示波器图。 这就是 I2C 信号序列: 、 (0、1、2)、

对于输入寄存器 1、返回的值始终为 0xFF、对于输入寄存器 2、返回的值始终为 0xFE、对于输入寄存器 3、返回的值始终为 0xFF。

其中包括这些单独读取的范围图片。  

1.在示波器图片中 I2C 信号序列看起来是否有效?

2.如果您计划将所有 PIN 用作输入 PIN(默认配置值)、是否需要发送 Config 命令?

示波器图片:

1.读取 InputReg 0。 I2C 地址和命令字节

2.读取 InputReg 0。 读取响应。

3.读取 InputReg 1。 读取响应

4.读取 InputReg 2。 读取响应

原理图上 TI I/O 扩展器的片段。

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

    尊敬的 Per Von:

    在第一个示波器捕获中、正确发送器件地址、后跟写入位+命令字节地址 0x00、然后是停止条件。  

    这将设置 TCA6424A 中的指针(命令字节)。 下次执行读取命令时、将立即从寄存器 0x00 数据中读取、这是输入端口寄存器。  

    基本上、您正在正确地从设备读取数据、但在两个单独的启动/停止转换中。  

    在数据表中、我们显示了一个具有以下序列的读取命令:  

    START -->目标地址-->写入--> ACK -->命令字节地址(指针地址)--> ACK -->重复启动--> 再次目标地址-->读取-->确认-->来自命令字节地址的数据--> ACK -->停止或继续数据读取…  

    在 TCA6424A 中、如果通过控制寄存器的 MSB 启用了自动递增状态、器件将自动读取下一个寄存器->请参阅表 8-4。  

    此致、

    Tyler

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

    Thx Tyler。
    如果我理解您的答案、从我们的主机/控制器读取的 IC2 是正确的、但可以使用自动递增状态进行改进?
    我计划在接下来实施。
    下一个问题是、从设备返回的值是否正确解释? 输入寄存器 0 -> 0xFF、输入寄存器 1 -> 0xFE 和输入寄存器 2 -> 0xFF。

    当在输入引脚上应用不同的信号电平时、我们似乎无法更改这些返回值。

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

    尊敬的 Per Von:

    如果我理解您的回答、从我们的主机/控制器读取的 IC2 是正确的、但可以使用自动递增状态来改进吗?
    我计划下一次实施。

    它看起来是正确的、但完整的读取事务是由停止和启动条件而不是重新启动来划分的。 它仍然可以这样工作、但会占用更多带宽。  

    此外、还会发生时钟延展事件、我假设这在某种程度上是有意发生的、还是尚未进行编程?  

    下一个问题是、从设备返回的值是否正确解释? 输入寄存器 0 -> 0xFF、输入寄存器 1 -> 0xFE 和输入寄存器 2 -> 0xFF.

    我想它看起来像 0xFF、0xFD、0xFF

    0xFD = 1111 1101

    在输入引脚上应用不同的信号电平时、我们似乎无法更改这些返回值。

    您是否测量了 Pxx 引脚上的实际电压以确认输入电压低于 VIL?  

    此致、

    Tyler

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

    Thx Tyler、
    非常感谢快速的响应。
    “时钟延展“中的示波器图片在哪里? 这不是有意为之。 是否导致出现问题?
    我们将重新检查输入引脚的电压。

    /PER  

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

    尊敬的:

    我之前参考了这个示波器捕获的时钟延展事件。  

    看起来时钟正在延展、但我看不到 VOL 的变化、这会表明另一个器件正在将总线拉至低电平。 这可能不是真正的时钟延展事件。  

    我们将重新检查输入引脚的电压。

    期待结果。  

    此致、

    Tyler