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.

[参考译文] TMS570LC4357:I2C 中断

Guru**** 2478765 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/894245/tms570lc4357-i2c-interruptions

器件型号:TMS570LC4357

您好!  

我有一个基于 I2C 协议的系统、其中 TMS570LC4357微控制器用作从器件。 现在、根据某些用户输入、主器件可能希望在某个时刻向从器件(TMS570LC4357微控制器)发送信息。 同时、从器件必须执行其他任务。

在不启用中断的情况下、我能够使用 i2cReceive 和 i2cSend 与主设备发送数据和接收数据。 但是、当我不知道从器件何时要向主器件请求数据时、如何将其设置为向主器件发送数据?

检查参考手册中的 i2c 中断、我看不到任何能够帮助我解决此问题的类型。 我把它们附在这里用于商品。

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

    您好!

    从模式比主模式容易一些。 您需要为器件定义从器件地址、并将该地址写入 I2COAR 寄存器。 从机地址是一个任意但唯一的7位数字。

    从机以接收器模式启动。 当主器件写入一个字节时、您会得到一个 RXRDY 中断。 中断处理程序必须从 I2CDRR 读取该字节。 当主器件想要读取一个字节时、您会得到一个 TXRDY 中断。 中断处理程序必须向 I2CDDR 写入一个字节。

    当从器件地址与其 OAR 相同且 R/NW 位为1 (来自主器件)时、从器件进入发送器模式。 您会得到一个 TXRDY 中断。 中断处理程序必须向 I2CDDR 写入一个字节。

    作为从站、您无法控制主站的功能;您必须随时响应任何写入和读取请求。

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

    感谢您的 QJ 回复。 非常有帮助。 不过,我最后仍有一个疑问。

    在我的当前代码中、TMS570LC4357 micro 是从设备。 有时、它必须向主器件发送数据、有时它必须从主器件接收数据。 我已经以这样的方式实现了这一点:从机始终"监听"主机(通过 i2cReceive)、当主机发送特定命令时、它使从机向主机发送数据(使用 i2cReceive)。 传输完成后、从器件返回到侦听模式。 所有操作都在 i2cNotification 处理程序中实现。

    我想知道是否有更好的实现方法。

    感谢你能抽出时间。 此致

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

    我不确定是否有更好的方法。 这就是我用于测试的方法。