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.
我已经看到过一些示例,在 闭环期间使用 I2CMasterIntStatusEx 或 I2CMasterBusy 来等待 I2C 传输完成。 如果在两种情况下都使用紧密环,I2CMasterIntStatusEx 的优势是什么?
你好,约翰,
我不知道有什么示例在 while 循环中使用 I2CMasterIntStatusEx 等待 I2C 传输完成。 你能提供这样的例子吗?
我只会使用 I2CMasterBusy 来实现这一目的,我不确定 I2CMasterIntStatusEx 在 while 循环中有何优势...
I2CMasterIntStatusEx 最适合在 ISR 中使用,以根据特定中断事件采取措施。
此致,
拉尔夫·雅各比
你好,拉尔夫,
我应该说这不是 TI 的例子。 我同意在中断时处理此问题可能会节省一些时间,但不能通过检查 int 状态来节省时间。 这是此链接中的示例1:
这只是 TIVA I2C 代码只是让我的屁股有点踢,一些描述也没有太多太糟糕的地方。 所以我原谅了什么是有效的。
谢谢,
约翰
我对 I2C 等有一段时间(《不该做的事情》)终止的情况总是有两种看法。 我们的一些调度员不是先发制人,可能不会连续完成,这让我暂停了一会。 我通常会修改这些内容,以便可以正常退出,而不是让我的背面有看门狗标签。 同样,我重新考虑了一个简单的 I2C 写入例程,并猜测代码在哪里停止?
约翰:
感谢您的参考。
我真的不喜欢这种实施。 它可能工作正常,但我从未指示客户使用这种方法,因此如果存在任何缺点,我不知道。
也许更能帮助您的是此应用程序注释: https://www.ti.com/lit/pdf/spma073
如果从调度程序的角度来看,有人担心这一点,我认为让它更受中断驱动更有意义。 这样,您就可以在循环时避免其中任何一种情况。
此致,
拉尔夫·雅各比
谢谢。
有时,在检查 I2CMasterBusy()的同时,可以很容易地检查增量时间。 幸运的是,该主板不会很忙,只需读取 I2C 上的 IMU 芯片中的一些数据,然后将其推送到 CAN 总线上即可。 因此,我可以在等待 I2C 以400Kbps 的速度时,用大拇指点赞。 123应该没有问题。