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.

[参考译文] MSPM0L1306:I2C 仲裁丢失

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468082/mspm0l1306-i2c-arbitration-lost

器件型号:MSPM0L1306

工具与软件:

您好!

我们将屏蔽 I2C 仲裁丢失中断(SARBLOST)、我们知道该中断有时会被触发、同时会出现 SCL 线会导通并保持低电平的问题。  我们此时还不确定:

  • 如果 SCL=LOW (发生的原因在微控制器之外)将触发仲裁丢失中断
  • 或者
  • 如果在仲裁失败中断后重新初始化 I2C 驱动器导致 SCL=LOW、则会导致错误的仲裁失败中断

在详细了解我们的实施之前、我们有几个问题:

  1. 微控制器需要查看哪些条件才能触发 SARBLOST?
  2. 由于 SARBLOST、软件应该做什么(除了 TRM 建议的针对控制器模式编写的代码之外)?

微控制器配置为 I2C 目标。

谢谢

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

    尊敬的 Jose:

    我对延迟响应深表歉意。

    首先、我假设 I2C 控制器是另一个 MCU、对吗?  您能告诉我它是什么吗? (我提问、以防我需要查找有关该 MCU 的信息)

    接下来、由于目标是 MSPM0、您为什么要查看 SARBLOST 中断?  它用于控制器模式。

    由于 SCL 为低电平、当控制器尝试从 MSPM0读取数据并且未准备好发送数据时、通常会发生"时钟延展"事件。  这是由 TXFIFO 空(在 FIFO 中不发送任何内容)导致的。  

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

    您好、Dennis、

    我们解决了这个问题、它实际上是一个"时钟延展"。 这不是由空 FIFO 引起的、而是由"目标唤醒"引起的、因此设置 SWUEN=0可以实现该目的。 另外、根据您的建议、我们删除了对  SARBLOST 的支持。

    感谢您的支持