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.

[参考译文] EK-TM4C123GXL:I2C 完成功能

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1087154/ek-tm4c123gxl-i2c-completion-functions

部件号:EK-TM4C123GXL

我已经看到过一些示例,在  闭环期间使用 I2CMasterIntStatusEx 或 I2CMasterBusy 来等待 I2C 传输完成。   如果在两种情况下都使用紧密环,I2CMasterIntStatusEx 的优势是什么?

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

    你好,约翰,

    我不知道有什么示例在  while 循环中使用 I2CMasterIntStatusEx 等待 I2C 传输完成。 你能提供这样的例子吗?

    我只会使用 I2CMasterBusy 来实现这一目的,我不确定 I2CMasterIntStatusEx 在 while 循环中有何优势...

    I2CMasterIntStatusEx 最适合在 ISR 中使用,以根据特定中断事件采取措施。

    此致,

    拉尔夫·雅各比

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

    你好,拉尔夫,

    我应该说这不是 TI 的例子。 我同意在中断时处理此问题可能会节省一些时间,但不能通过检查 int 状态来节省时间。 这是此链接中的示例1:  

    https://cpp.hotexamples.com/examples/-/-/MAP_I2CMasterDataGet/cpp-map_i2cmasterdataget-function-examples.html

    这只是 TIVA I2C 代码只是让我的屁股有点踢,一些描述也没有太多太糟糕的地方。 所以我原谅了什么是有效的。

    谢谢,

    约翰

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

    我对 I2C 等有一段时间(《不该做的事情》)终止的情况总是有两种看法。 我们的一些调度员不是先发制人,可能不会连续完成,这让我暂停了一会。 我通常会修改这些内容,以便可以正常退出,而不是让我的背面有看门狗标签。 同样,我重新考虑了一个简单的 I2C 写入例程,并猜测代码在哪里停止?

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

    约翰:

    感谢您的参考。

    我真的不喜欢这种实施。 它可能工作正常,但我从未指示客户使用这种方法,因此如果存在任何缺点,我不知道。

    也许更能帮助您的是此应用程序注释: https://www.ti.com/lit/pdf/spma073

    如果从调度程序的角度来看,有人担心这一点,我认为让它更受中断驱动更有意义。 这样,您就可以在循环时避免其中任何一种情况。

    此致,

    拉尔夫·雅各比

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

    谢谢。  

    有时,在检查  I2CMasterBusy()的同时,可以很容易地检查增量时间。 幸运的是,该主板不会很忙,只需读取 I2C 上的 IMU 芯片中的一些数据,然后将其推送到 CAN 总线上即可。 因此,我可以在等待 I2C 以400Kbps 的速度时,用大拇指点赞。 123应该没有问题。