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.

[参考译文] AWR1843BOOST:I2C 无法生成停止条件

Guru**** 2540720 points
Other Parts Discussed in Thread: AWR1843, TMP112

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/936587/awr1843boost-i2c-can-not-generate-stop-condition

器件型号:AWR1843BOOST
主题中讨论的其他器件:AWR1843TMP112

您好,团队

我使用 TI 板(AWR1843 EVM)通过 IIC 读取和写入 PMIC 和温度传感器、有时 I2C_TRANSFDR ()在读取温度传感器时会卡住。

通过示波  器获取 SDA 和 SCL 电平、NACK 后不会生成停止条件、请参阅下面的详细信息。

正常情况:

异常情况:

这种情况的发生原因?

谢谢你

YAFENG

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

    Yafeng、您好!

    您能否使用示波器的模拟端口进行捕获、以便能够看到实际的信号电平、上升/下降时间等? 我假设上面的捕获是使用数字端口。

    此致、
    Vivek

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

    大家好、Vivek

    示波器模拟端口捕获的波形如下:

    正常情况:

    异常情况:

    SCL 和 SDA:

    上升时间:< 180ns、下降时间:< 60ns

    谢谢你

    YAFENG

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

    Yafeng、您好!

    很抱歉耽误你的时间。 我们需要一些时间来研究这一点、因此感谢您的耐心。  

    我们下周中旬一定会再回来的。

    此致、

    石田

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

    伊丰石田、您好!

    我可以代表 TMP112和 TI 内的温度传感团队发言。 我在图中看到的是、TMP112在正常和异常情况下都能正确响应。 主机在第2个字节后提供一个 NACK、以指示它不希望从 TMP112接收更多数据。 我不清楚为什么 I2C 主机决定在正常情况下停止、并在异常情况下决定停止进一步通信。

    谢谢、

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

    Yafeng、您好!

    您能否回答以下问题,以帮助我们更好地理解此问题:

    1.对于您的用例、AWR 器件是这里的主器件是正确的吗?

    2、运行该函数的频率是多少?

    期待收到您的回复。

    此致、

    石田

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

    Ishita、您好!  

    1.对于您的用例、AWR 器件是这里的主器件是正确的吗?

    是的、AWR 器件是主器件、

    2、您‘re 运行该器件的频率是多少?

    100kHz、I2C 的初始化代码  如下:

    谢谢

    YAFENG

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

    Yafeng、您好!

    我们在内部对此进行一些测试、需要更多时间才能返回。

    感谢您的耐心等待。

    此致、

    石田

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

    Yafeng、您好!

    以下是我们在运行一些仿真后的观察结果:

    如果您参考寄存器"ICMDR"、 NACKMOD:当 I2C 处于主控模式时、它将在 ICCNT 变为零(即、数据已完全接收)时自动生成一个 NACK。

    在异常情况下、我们可以看到 SCL 位没有切换、因为 SDA 位应该先变为低电平。 只有当当前 NACK 信号的 SDA 位变为低电平时、SCL 才能再次切换。 我们的测试也确认了这一点。

    接收到 NACK 后、SDA 位将进入 FSM 中的 RESTK_OR_STOP 阶段、并等待用户对寄存器位进行编程以停止传输。 对 ICMDR 中的"STP"位进行编程后、它将生成 STOP 信号、因此只要没有重新启动条件并且 SCL 也会切换、SDA 就会变为低电平。 您如何在应用程序中写入 MDR 寄存器的 STP 位?

    请在您的正常和异常情况下检查上述寄存器的值、并告知我们您的观察结果。

    此致、

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

    您好、 Ishita

    在正常情况下、I2C 寄存器(这是 GIF、您可以下载它):

    在异常情况下、I2C 寄存器:

    我使用 的是 MMWAVE_SDK 的03.01.01.02版本 , I2C 驱动程序尚未使用 TI 本机代码进行修改。

    YAFENG

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

    Yafeng、您好!

    这些屏幕截图是在什么情况下拍摄的? 因为我可以看到 STP 位在一种情况下为"1"、而在另一种情况下为"0"。

    此致、

    石田  

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

    您好、Ishita

    第一 个屏幕截图是 GIF、上传后变为 png、我重新上传了压缩包,有一个 GIF 图片 inside.e2e.ti.com/.../iic.zip

    在异常情况下、STP 将设置为1、但不会自动变为0。 在正常情况下、STP 将在生成停止位后变为0。

    YAFENG

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

    Yafeng、您好!

    很抱歉、我们正在研究并尝试在今天结束时重复此问题。 感谢您的耐心等待。 我有几个问题以及一些解决方法。

    1.您发现此故障的频率如何? 是经常运行还是很少运行一次?

    此外、如果您再次遇到这种异常情况、是否可以显式写入 STP 位并查看它是否恢复?

    3.您是否还可以共享案例的代码片段。

    此致、

    石田  

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

    您好,Ishita

    很抱歉,由于延迟,此问题通常会在运行后出现。稍后我将提供测试代码来重现问题。

    亚丰

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

    谢谢 Yafeng、

    请在问题发生后尝试写入停止位以查看是否恢复。 请告诉我们您的见解。

    此致、

    石田

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

    您好、Ishita

    我编写了测试代码来测试此问题、但没有异常情况、

    但在我们的系统中、它看起来非常频繁。 我重写了 i2c 驱动程序以避免出现此问题、它似乎已得到解决。

    感谢 您的关注。

    亚丰

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

    Yafeng、您好!

    很高兴听到这个消息。

    此致、

    石田