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.

[参考译文] MSP430FR5994:MSP430FR5994 I2C 从器件如何将 SCL 保持在低电平

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1036582/msp430fr5994-msp430fr5994-i2c-slave-howto-hold-scl-low

器件型号:MSP430FR5994

您好!

在 slau367 @第829页中:

"但是、如果在一个字节已经被执行后需要 CPU 的干预、它可以将 SCL 保持在低电平
收到。"

问题是:如何将 SCL 线路保持在低电平、以向主器件发出必须进行某些处理的信号?

直接在读取 Rx 缓冲器后、USCI i2c 模块会发送 ACK、主器件无法识别必须处理最后一条命令。 IMHO 在等待 ACK 时保持 SCL 为低电平是从器件执行此操作的唯一方法。

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

    尊敬的 Paul:

    如果从机没有读取 RXbuffer、它会自动保持 SCL。 您可以在图32-10中看到。  

    如果 UCBxRXBUF 未被读取、总线被挂起(SCL 保持低电平)。  

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

    您好、Allen、

    嗯、这就是我说过的、问题是如何在 MSP430处理数据时保持 SCL 为低电平?

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

    在您引用的文本中、"CPU 的干预"是指读取 RXBUF。  

    据我所知、在某个任意时间无法要求 EUSCI 将 SCL 保持为低电平。 UG (SLAU367P)第32.3.7.2节列出了时钟展宽情况。

    抢先式停止总线是一种较为繁重的流量控制机制,它可以防止主器件发出停止信号(结束当前事务)并与其他总线器件通信。 如果您需要另一个字节、您可以通过等待 RXBUF 读取该字节来保留该字节(拉伸时钟)、直到为其做好准备。

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

    尊敬的 Paul:

    它由硬件实现并遵循 I2C 协议规范。 标准 I2C 协议规范已引入所有 I2C 接口均为漏极开路结构。 在同一总线中、相同功能引脚是逻辑和。 任何人都可以将总线保持在低电平。  您可以在 google 上搜索标准 I2C 协议规范以了解更多详细信息。

    谢谢

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

    UM10204 (修订版6)第3.1.9节中的措辞似乎允许先发制人停止、但据我所知、您不能要求 EUSCI 为您执行此操作。 我会说、即使你可以、你也不应该。