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.

[参考译文] DS90UB960-Q1:DS90UB960-Q1;如何对 DS90UB960/DS90UB953的某些物理 I2C 从器件地址进行编程。

Guru**** 2538960 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1195707/ds90ub960-q1-ds90ub960-q1-how-to-program-some-physical-i2c-slave-address-of-ds90ub960-ds90ub953

器件型号:DS90UB960-Q1

 在下面的 I2C 连接方框图中、请告诉我我们的寄存器设置。
特别是 、许多 I2C 器件连接到一个串行器。 此外、具有相同 I2C 寄存器地址的器件会连接到每个串行器。

q)请告诉我寄存器设置。


 尤其是下面。

- SER_ID
- SER_ALIAS_ID
- SER_ID
- SER_ALIAS_ID

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

    您好!

    对于此配置、 需要在将别名或 ID 分配给任何目标器件或串行器之前设置两个通用寄存器。

    首先、  所使用的两个 RX 端口需要映射到主机设备正在使用的特定 I2C 端口。 此映射通过设置寄存器0x0C 中的相应位来完成。 默认情况下、所有 RX 端口都将映射到 I2C 端口0。 如果您的应用使用 I2C 端口1而不是 I2C 端口0、则 可以使用该寄存器将 I2C 端口重新映射到所使用的 RX 端口。  

    接下来、 需要 为 正在使用的两个 RX 端口设置 I2C 直通位(位6、寄存器0x58)。 由于该寄存  器是特定于 RX 端口的寄存器、因此在将任何数据写入寄存器0x58之前、需要为正在使用的两个 RX 端口特别启用写入。 要为两个 RX 端口启用写入、您需要设置寄存器0x4C 中的相应位。  为正在使用的特定 RX 端口启用写入后、您可以为两个 RX 端口启用 I2C 直通。 如果两个端口都启用了写入、则可以同时对两个 RX 端口执行此操作。 为两个位启用 I2C 直通后、我建议禁用两个寄存 器的写入操作、因为下一步将要求您一次只写入一个 RX 端口。

    对于您的应用、我假设您希望能够 与连接 到 I2C 总线的6个远程目标器件中的每个器件进行独立通信。 如果情况并非如此、请告诉我。  

    要在单个 I2C 事务期间仅与6个可能的远程目标器件中的一个进行通信、需要为每个目标器件分配一个不同的别名。 这是  通过使用寄存器0x65-0x6C 为每个目标器件分配一个不同的7位别名来完成的。 6个不同的别名标识符中的每一个都必须彼此不同、以便主机能够独立与6个目标器件中的每一个进行通信。 对于每个别名、需要在相应的 ID 寄存器(0x5D-0x65)中设置 I2C 物理地址、以便器件能够正确解码每个事务。 每个别名和 ID 寄存器都是一个特定于端口的寄存器、执行写命令时、一次只应启用其中一个特定于端口的寄存器。 否则、3个目标器件将共享相同的别名。 为了简化我所概述的过程、我建议您执行以下步骤:

    1.只能对正在使用的两个 RX 端口中的一个启用写入。

    2.在 三个 ID 寄存器(0x5D-0x5F)中加载摄像头传感器、温度传感器和加速度传感器的物理 I2C 地址

    3.为别名寄存器(0x65-0x67)中的三个 ID 中的每一个分配别名。 注意: 别名寄存器的#和 ID 寄存器的#需要匹配。 例如、别名寄存器#0是 ID 寄存器#0中 I2C 地址的别名。  

    4.禁止对先前分配了别名和 ID 位的 RX 端口进行写入、并对尚未分配别名和 ID 位的 RX 端口启用写入。  

    5.对  另一个 RX 端口重复步骤#2-#3。 请记住、即使您现在为不同的 RX 端口分配别名和 ID 信息、您分配的每个别名都需要与之前 RX 端口中分配的别名值不同。 为了独立与6个目标器件中的每个器件通信、需要6个唯一的别名值。  

    执行上述步骤后、您可以使用分配的别名值与每个目标器件进行独立通信。 要与每个串行器进行独立通信、您需要执行类似的一系列步骤:

    1.只能对正在使用的两个 RX 端口中的一个启用写入。

    2.使用 SER_ALIAS_ID 寄存器(寄存器0x5C)为串行器分配别名

    3.禁用先前  分配了 SER 别名的 RX 端口的写入、并启用尚未  分配 SER 别名的 RX 端口的写入。  

    4.重复步骤#2。

    执行 上述步骤后、您可以与应用中的每个串行器进行独立通信。

    如果您 对上述步骤有任何疑问、请告诉我。

    此致、

    Kenneth

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

    您好 Kenneth、

    感谢您回答我的问题。 我理解了一些问题、因为您的善意解释。 如果我有更多问题、我会再次询问您。

    谢谢你。

    此致、
    Sugi Shuichi。