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.

[参考译文] MSPM0G1107:从 1 i2c 模块到另一个 i2c 模块的 I2C 旁路模式

Guru**** 2502205 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1558104/mspm0g1107-i2c-bypass-mode-from-1-i2c-module-to-the-other-i2c-module

器件型号:MSPM0G1107


工具/软件:

尊敬的专家:

我的客户使用第一个 i2c 作为与其主机 IC 进行连接的目标、使用第二个 i2c 作为与其他器件进行连接的控制器。

因为器件具有相同的 i2c 地址。 因此、它们需要在不同的第二个 i2c 引脚中连接相同的 i2c 地址器件。

对于 i2c 功能、MSPM0 充当多路复用器并按引脚切换 i2c 引脚。 主机不需要为此更改任何代码。

那么、MSPM0 是否可以直接将 i2c 目标模块绕过到 i2c 控制模块?

DMA 可以做类似的事情吗? 示例代码?

BR、

Frank

 

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

    我不太清楚这里的架构是什么:

    1) 两个 I2C 单元(单独的引脚)在一条总线上,其中一个作为控制器,另一个目标?

    2) 每个 I2C 单元(单独的引脚)位于单独的总线上?

    3) 与 (1) 相同、但引脚相同(来回交换)?

    4) 一个在控制器和目标之间动态切换的 I2C 单元?

    我使用 (1) 和一些补丁线来执行我的目标器件代码。 我没有机会尝试 (2)、但看起来很简单。 选项 (3) 在动态切换 Pin 功能设置时让人头疼。 选项 (4) 很好、甚至有一个示例(此处)

    据我所知、I2C 单元不会单独在目标和控制器之间切换--你必须(重新)配置它。

    控制器器件没有真正的“自己“地址、因此不会发生冲突。

    [编辑:据我所知、没有“反向通道“机制将一个 I2C 单元上的传入事务作为另一个 I2C 单元上的(传出)事务进行路由。 我希望可以使用 DMA 写入 MCR(以启动传出事务)、同时使用第二个通道来移动数据、但您仍然需要设置目标地址和调整长度。]

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

    Bruce、

    架构类似于多路复用器。 从下面开始、从器件 A1...AN 具有与 B1.... Bn、C1...CN、...、H1..HN 相同的 i2c 地址。

    因此、无需切换控制器和目标。

    此外、开关器件也不是问题。 主机 IC 可以控制不同器件 (A\B\C...) 的切换时序。

     下面有任何示例?

    我希望可以使用 DMA 编写 MCR(以启动传出事务)、并使用第二个通道来移动数据、但您仍然需要设置目标地址和调整长度。]

    BR、

    Frank

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

    我还没有看到使用 DMA 触发 I2C 事务的示例(我真的没有想到,因为这是一个异常的应用)。

    我曾经为 MSP430 写过一些东西、它相当于 I2C DAC 的信号发生器。 它使用计时器触发的 DMA 来写入启动请求(相当于写入 MCR)、并让 I2C 单元驱动一个(单独的)数据 DMA 通道。 但这是一个非常有限的情况、具有恒定的众所周知的事务配置文件(地址/长度/方向);我看不到该模型在没有 CPU(软件)干预的情况下是如何扩展的。

    您推荐的型号(PCF9548A 模拟)似乎意味着切换(单)I2C 单元使用的引脚、即切换 IOMUX 中的 PFS。 在设计它之前、你可能应该尝试一下。一个典型的 I2C 单元(不仅仅是 MSPM0)有一个总线监视器、它在动态切换引脚时可能是例外的。