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.

[参考译文] MSP430F247:USCI30

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/568990/msp430f247-usci30

器件型号:MSP430F247

您好! 此问题与名为 USCI30的 I2C 错误有关。

我使用的是 MSP430F247。 如果它用作 I2C

主接收器、已实现 USCI30的权变措施

工作正常。 现在、我必须将微控制器用作从接收器。

在从接收器时实施 USCI30权变措施

提出了一个问题:从器件如何知道何时是

要读取的最后一个字节? 我们必须立即读取最后一个字节、

在第7个时钟脉冲之后的3个周期内不拉伸时钟。

最后一个字节之前的所有其他字节需要扩展时钟。

我还尝试扩展所有字节、包括最后一个字节、但它成功了

I2C 流量不稳定。

主接收器始终知道他想要读取的字节数量

并可以找到何时是最后一个字节。 从接收器不知道

通常、主器件希望传输的字节总数。

你建议什么?

此致、

Jüri Shuffer。

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

    解决方法有两种。 首先是对勘误表使用第一种权变措施、确保及时处理 RX 中断。 这基本上意味着一旦你获得中断、你就可以进入 ISR 并首先读取 RXBUFF (就在检查 RXIFG 之后)。 您必须在各种 LPM 中意味着任何情况下以及其他 ISR 过长的情况下保证这一点。 处理此勘误表的更安全方法是为主代码所采用的方法。 对于从器件、您需要能够根据发送的第一个值(通常是命令字节或寄存器字节)来查找发送到主器件的字节数量。 大多数命令都有一定数量的预期返回字节、在这些字节中、您可以使用字节计数器来知道最后一个字节的发送时间。 另一种方法是、如果您还控制主器件、则可以执行简单的发送命令协议、以及它期望返回的字节数、然后切换到从器件读取。