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.

[参考译文] MSP430F5438A:多主器件问题

Guru**** 2535750 points
Other Parts Discussed in Thread: UCD90120A, MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1040547/msp430f5438a-multi-master-issue

器件型号:MSP430F5438A
主题中讨论的其他器件:UCD90120A

您好!

我正在使用 MSP430F5438A 的 I2C 之一 、并且在同一个 I2C 线路上连接了电源序列发生器(UCD90120A)、这些序列发生器通过 USB 适配器使用 Fusion 电源设计器工具进行编程。

我们使用一个外部接头、通过熔融电源设计器工具单独对电源序列发生器进行编程。

MSP430F5438A 和外部接头都连接到一个开关、用于 决定是从 MSP430F5438A 访问 I2C、还是从外部接头访问 I2C 以对 UCD 进行编程。

我们通过 Msp430F5438A 的一个 GPIO 来控制开关。  

如果 GPIO = 1、那么如果同一 GPIO = 0、msp430f5438a 可以访问 I2C 线路(外部接头不能)、那么外部接头可以访问 I2C (MSP430F5438A 不能)、通过 USB 适配器对 UCD90120A 进行编程  

因此、从现在起、GPIO 的价值决定是从 MSP430F5438A 访问 I2C、还是通过 Fusion 设计工具从 USB 适配器访问 I2C。  

那么、我的问题是、是否可以从 MSP430F5438A 实现多主器件机制?

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

    I2C 本质上是多主器件。 在发出一个起始条件之前、每个传输以主机仲裁的总线访问权开始。

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

    David 是对的、I2C 在其概念中可以在一条 I2C 总线上具有多个控制器和多个目标。   

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

    David 和 Luke、

    感谢您的回复。

    要在 I2C 线路上实现多主器件、两个主器件(在我的情况下为 MSP430F5438A 和 USB 适配器)应同时激活。 但在这里不会发生这种情况

    因为我已经在使用 GPIO 来决定哪个主器件将访问 I2C 线路。 因此、一次只能有一个主器件可以访问 I2C 线路。

    那么、我的理解是否正确、如果我使用 GPIO 来选择主器件访问、那么在我的情况下我无法实现多主器件?

    或者、如果我想实现多主器件、那么我是否必须更改硬件?  

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

    如果总线上只有一个主器件(一次)、那么看起来多主器件并不相关。 或者我是否误解了您的问题?

    我很好奇这个 GPIO 是如何工作的--当它被置为有效时,USCI 引脚会看到什么? 它看起来像是一个带上拉电阻器的电池盖 I2C 开漏总线吗?  

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

    你好 Bruce

    现在、我们有一个 GPIO、它被配置为输出。 我们通过提供1和0来控制该 GPIO

    如果 GPIO = 1、MSP 将充当主器件

    如果 GPIO = 0、USB 适配器将充当主器件。

    因此、从现在起、GPIO 的值将决定 哪个主器件将访问 I2C 线路。

    因此、是的、我们一次只访问一个主器件。

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

    那么、我不确定我是否理解该问题。 是否要摆脱 GPIO 互锁?

    根据用户指南(SLAU208Q)、当 UCMM = 1时、USCI 能够运行多主器件。 这些过程略有不同--你应该为每个事务设置 UCMST=1,并准备一个 UCALIFG [参考(例如)用户指南图38-12,底部的框。] [免责声明:虽然我熟悉这个机制、但我没有在 MSP430上使用过一个多主控总线。]

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

    你好 Bruce

    我不想更改 GPIO 配置。

    在我的应用中、一次只有一个主器件可以访问 I2C。 所以我们不能使用多主器件、对吗?

    对于多主器件、两个主器件应同时在总线上激活、对吗?

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

    否 多主机("仲裁")是一种防止两个主机同时启动事务的机制。 通过监控总线、其中一个总线可以确定它实际上不是主器件、并且它会暂停其传输。 该机制进一步发展、允许"丢失"的主器件作为从器件进行寻址(因此、理论上您可以拥有一个仅包含两个主器件的总线)。

    如果两个主器件从未同时尝试"交谈"(或者实际上只有一个主器件)、则不会发生这些冲突、并且活动在普通 I2C 总线上看起来是这样的。 我不确定为什么 USCI 使这个特性为可选(UCMM 位)。