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.

[参考译文] MSP430FR2355:I2C 是否发出重启?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1119346/msp430fr2355-i2c-issuing-a-restart

器件型号:MSP430FR2355

当我发出 I2C 发送命令时、开始我的代码会自动发出地址和写入信号、并跳转到 TXIE0以接收第一个字节。  是否有人在我发出 I2C 重启时告诉我、我是否会在地址和读取通过总线发送后跳转到 TXIE0、或者我是否会跳转到 RXIE0?

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

    如果 UCTR=1、您将立即获得 TXIFG、以便在 SLA 字节正在进行时预加载第一个字节。

    如果 UCTR = 0、您将在第一个字节位于 RXBUF 后获得一个 RXIFG。

    我发现用户指南图24-12/-13中的图表非常有用。

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

    我不会说谎,我已经学过这些,而且在阅读它们的时候很糟糕……我发现它们非常令人困惑……例如……我相信,要重新开始……你应该发出 UCTR =1, UCTXSTT = 1、它将输出写入器件地址并将您置于 TX ISR 部分、在该部分中、您将要读取的器件寄存器地址加载 TXBUF (这是写入)、 在这个 TX ISR 内部、我相信你必须发出一个 UCTR = 0、UCTXSTT = 1、这将自动将读取器件地址放置在总线上。  这反过来将避免总线上的 STOP。  然后在 RX ISR 内部,主器件将生成8个时钟+ NACK 时钟),您应该在其中接收数据...在这个 ISR 内部,我相信您会发出 UCTXSTP.....

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

    这听起来不错、但我建议在第二个 TXIFG 上发出第二个启动命令(在 I2C 开始发送第一个字节后)。 我不确定如果在发送 SLA 字节的过程中更改 UCTR 会发生什么情况。