主题中讨论的其他器件:AWR1843、 TMP112
您好,团队
我使用 TI 板(AWR1843 EVM)通过 IIC 读取和写入 PMIC 和温度传感器、有时 I2C_TRANSFDR ()在读取温度传感器时会卡住。
通过示波 器获取 SDA 和 SCL 电平、NACK 后不会生成停止条件、请参阅下面的详细信息。
正常情况:
异常情况:
这种情况的发生原因?
谢谢你
YAFENG
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.
您好,团队
我使用 TI 板(AWR1843 EVM)通过 IIC 读取和写入 PMIC 和温度传感器、有时 I2C_TRANSFDR ()在读取温度传感器时会卡住。
通过示波 器获取 SDA 和 SCL 电平、NACK 后不会生成停止条件、请参阅下面的详细信息。
正常情况:
异常情况:
这种情况的发生原因?
谢谢你
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 位?
请在您的正常和异常情况下检查上述寄存器的值、并告知我们您的观察结果。
此致、