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.

[参考译文] MSPM0G3507:I2C 多字节写入、不使用中断。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1488296/mspm0g3507-i2c-multibyte-write-without-use-of-interrupt

器件型号:MSPM0G3507

工具与软件:

我有 EEPROM、我想编写完整页(8字节)。  EEPROM 的页面大小为8字节。 i2c FIFO 也是8字节。 因此、在单个事务中 、我无法发送页面地址和8字节数据。 我不想使用基于中断的方法。 该怎么办?

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

    其概念是、您启动一个(TX)事务、提供要发送的完整大小(地址+数据)、然后使用忙等待时间将数据放入 TX FIFO 中(在空间允许的情况下)。 I2C 单元提供流控制功能、因此如果 TX FIFO 变空、那么情况就不会结束;另一方面、由于 CPU (大概)运行速度比 I2C 快得多、您有足够的空闲时间。

    主动:有时我读到、对于 MSPM0系列、TI 并没有计划更新其应用手册 SLAA208、所以我做了这项练习。 也许您会发现以下内容有用:

    https://github.com/brucemckenney/i2c-eeprom-mspm0

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

    嘿、我看到过这段代码、但有一些疑问。 为什么会有这么多人在等待? 不理解、如果您不启用中断、那么您将如何检查它?

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

    在没有中断的情况下、我们将只剩下忙等待。

    最初的 SLAA208使用 Interrupts/LPM 进行数据传输(但不是用于 AckPolling、这是一个长操作);它通过硬编码它使用的 I2C 单元(USCI)来实现该功能、因此必须针对每个 MSP430器件型号修改该功能。 此代码将(据我所知)在任何 MSPM0上运行。

    欢迎您根据自己的需要调整此代码(或忽略它)。