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.

[参考译文] PCA9548A:询问 I2C 扩展器 IC 的数据表内容

Guru**** 2395875 points
Other Parts Discussed in Thread: PCA9548A

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/784484/pca9548a-ask-for-datasheet-contents-of-i2c-expander-ic

器件型号:PCA9548A

1.当数据字节和数据序列不同而我用命令字节启用多通道时、如何创建波形?

2. 支持热插入? 这句话的含义或应用是什么?

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

    我不理解你的第一个问题。 您是否在询问如何在 PCA9548A 上启用通道?

    "支持热插入? 这句话的含义或应用是什么?"
    这意味着、只要 PCA9548A 上插入的通道被禁用、您就可以在带电的 I2C 线路上插入 I2C 器件。

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

    我是说我将寄存器设置为启用多通道。 当我执行读取 cmd 时、波形将生成从器件地址、R/W CMD=0、控制字节、从器件地址、R/W CMD=1、 然后接收数据、对吧? 此时、如果启用八通道、我将从 SD0、SD1等接收数据序列? 此外、如果扇出通道连接到具有不同数据字节的不同器件、则会形成什么行为或波形?
    谢谢~

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

    因此、我假设您需要读取启用了 PCA9548A 的通道。 这是通过发送从器件地址+Read 来完成的、然后从器件(PCA9548A)将数据发送到启用了通道的主器件。

    您在下面提到的内容适用于具有多个控制寄存器的从器件、如果您希望直接从器件的控制寄存器中读取、则不应使用我们的器件执行此操作。

    "当我执行读 cmd 时、波形将生成从器件地址、R/W CMD=0 (这是一个写入)、控制字节 (如果您要与具有多个控制寄存器的从器件通信、那么您现在要做的是设置指针)、[此处需要执行停止然后启动条件或重启条件]从器地址、R/W CMD=1 (这一次您在对指针寻址后进行读取)、 然后接收数据(对于具有多个控制寄存器的器件、这是正确的)、对吧? "
    我在上面的括号中留下了评论。 如果您要与具有多个寄存器的器件通信、这是正确的。 我们的器件只有一个控制寄存器、因此您不会这样做。 您只需发送从器件地址、然后发送读取位、PCA9548A 就会在该位之后向您发送数据。

    这有道理吗?

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

    感谢您的清晰解释。
    很抱歉、我认为它的应用程序不正确。
    BTW、我是否可以询问"如何允许1.8V、2.5V、3.3V 和5.5V 总线之间的电压电平"
    例如、我希望 SD0、SD2输出电压=1.8V、SD2、SD4输出电压=3.3V、而 SD3、SD6输出电压=2.5V。
    每个通道所需的外部上拉电阻器是什么? 此时、我应该提供 Vcc=?

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

    "我是否可以询问有关"如何允许1.8V、2.5V、3.3V 和5.5V 总线之间的电压电平"的问题
    因此、在您的情况下、I2C 总线上的最低电压为1.8V。 最简单的工作方式是使 PCA9548A 的 Vcc 为1.8V。

    "每个通道需要什么外部上拉电阻器? 此时、我应该提供 Vcc=?"
    每个总线的外部上拉电阻器将取决于您计划支持的 I2C 最大频率和总线电容。
    本应用手册对此进行了详细讨论:

    www.ti.com/.../slva689.pdf

    例如、假设通道2需要支持400kHz、并且具有来自器件 I/O 引脚和 PCB 布线的40pF 电容。
    您可以使用的最大上拉电阻的计算公式为:Rp (max)= 300ns/(0.8473*CBBus )
    如果您计划仅支持100kHz、则使用1000ns 切换300ns。

    300ns/(0.8473*40pF)=8.8k 欧姆

    这意味着您应该选择一个小于8.8k 的上拉电阻器。

    让我们再举一个示例、其中您希望仅支持100kHz、电容为200pF。

    1000ns/(0.8473*200pF)=5.9k 欧姆

    这意味着您需要选择一个小于5.9k 的上拉电阻器。

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

    ""当我执行读取 cmd 时、波形将生成从器件地址、R/W CMD=0 (这是一个写入)、控制字节 (如果您要与具有多个控制寄存器的从器件通信、那么您现在要做的是设置指针)、[此处需要执行停止然后启动条件或重启条件]从器地址、R/W CMD=1 (这一次您在对指针寻址后进行读取)、 然后接收数据(对于具有多个控制寄存器的器件、这是正确的)、对吧? "
    我在上面的括号中留下了评论。 如果您要与具有多个寄存器的器件通信、这是正确的。 我们的器件只有一个控制寄存器、因此您不会这样做。 您只需发送从器件地址、然后发送读取位、PCA9548A 就会在该位之后向您发送数据。"

    PCA9548A 如何从主器件访问中获取数据?
    根据上述说明、我想再次检查以确认我的理解是正确的、因为这是主器件和 PCA9548A 之间交换的数据。 例如、我启用所有通道。 PCA9548A 的通道0连接至光纤模块0。 PCA9548A 的通道1连接至光纤模块1。 当我想获取具有寄存器0x5的光纤模块0的数据、具有寄存器0x3的光纤模块1的数据时、我们需要执行的波形是什么?
    是否在主器件到 DUT 之间执行了波形、如下所述?
    开始+从器件地址+写入+控制字节(启用所有通道)+停止+开始+从器件地址+写入
    +数据0x5 (通道0连接到 DUT0的寄存器)+数据0x3 (通道1)+等 (直到通道7为止)+停止
    +开始+从机地址+读取+数据??? (从 DUT0的寄存器获取)+数据?? (从 DUT1的寄存器中获取)+、ETC + STOP。

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


    "开始+从器件地址+写入+控制字节(启用所有通道)+停止"
    该从器件地址是我们的器件、对吧? 如果是、这是可行的。

    "起始地址+从地址+写入
    +数据0x5 (通道0连接到 DUT0的寄存器)+数据0x3 (通道1)+等 (直到通道7为止)+停止"
    这对我来说毫无意义。 您好像在尝试从器件中提取数据而不正确使用启动/停止条件。

    步骤1:
    开始+从器件地址(PCA9548A)+写入+控制字节(仅启用通道0)+停止<<only channel 0 is enabled just incase the other channels have the same slave device so we want to avoid this if this is true

    步骤2:
    开始+从地址(光纤模块0)+写入+控制字节(0x5)+停止<<this writes to a slave #0 setting the pointer of slave#0

    步骤3:
    开始+从地址(光纤模块0)+读取+数据(光纤模块0从0x5发送数据)+停止<<this is the register we want to read from, yes?

    步骤4:
    开始+从器件地址(PCA9548A)+写入+控制字节(仅启用通道1)+停止<<we want to talk to slave 1 on channel 1 only

    步骤5:
    开始+从地址(光纤模块1)+写入+控制字节(0x3)+停止<<this writes to a slave #1 setting the pointer of slave#3

    步骤3:
    开始+从地址(光纤模块1)+读取+数据(光纤模块1从0x3发送数据)+停止<<this is the register we want to read from, yes?

    一般…

    这有道理吗? 我不确定你要做什么。 我想您正在尝试从地址与其他从器件相同的从器件读取寄存器、而从器件具有多个寄存器、因此您必须先设置一个指针才能读取。

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

    感谢您的回复。
    此外、我还想检查两个问题、如下所示。

    在 PCA9548A 的架构中、如果所有器件都支持位电平和字节电平、主器件是否能够接收到由 DUT 响应的正确波形? 由于 PCA9548A 的架构是漏极开路、因此它是否会对传输的单方向性产生问题。
    例如、有时我们希望驱动多个器件、这些器件应使用时钟缓冲器来覆盖驱动能力。 但有些时钟缓冲器是
    单向、这将导致器件无法支持位级或字节级的功能。 我想检查 PCA9548A 是否会出现相同的情况。

    在 PCA9548A 从地址的情况下,I2C 主设备访问 DUT 的行为形式与 DUT 相同(例如,光纤模块等) ?
    器件地址是否唯一、我们可以确认其他器件不会与其发生冲突?

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

    我在理解您的第一个问题时遇到了一些困难。 PCA9548A 是双向的(TI 的所有 I2C 开关都支持电平转换并且是双向的)、因此您应该能够通过任何通道进行通信。 如果您在其前面放置一个单向电平转换器、则 PCA9548A 只能从一个方向传输。

    我认为您在这里的问题答案是、此器件是双向的、支持器件任何一侧的通信(如果启用了器件通道)。

    "二. 如果 PCA9548A 从地址与 DUT (例如,光纤模块等)相同,I2C 主设备访问 DUT 的行为形式是什么? ? "
    不管用。 光纤模块和 PCA9548A 需要具有不同的从地址、以确保两个设备都能正常工作。

    谢谢、
    -Bobby