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.

[参考译文] LP-MSPM0G3507:I2C 从器件没有停止条件

Guru**** 2465890 points
Other Parts Discussed in Thread: LP-MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1374510/lp-mspm0g3507-i2c-slave-has-no-stop-condition

器件型号:LP-MSPM0G3507

工具与软件:

您好!  

我正在从 MSPM0 SDK 运行 I2C 目标器件中断软件示例(i2c_target_rw_multibyte_fifo_interrupts)。  

当从从从器件(LP-MSPM0G3507)读取数据时、 最后一位似乎是 NACK 位、没有停止条件。 为什么会这样?

启动条件:

NACK:  

此致、  

sya

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

    您是写入从器件还是从从从器件读取? 停止条件下的中断信号由主机端控制。

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

    这看起来很像你的目标保持(拉伸)时钟,它不应该做的--即使 TXFIFO 是空的(代码做它可以避免这种情况) I2C 单元应该在它看到从控制器的 NACK 时从总线下车。

    第一条迹线似乎显示您的目标响应的是地址0x4A 而不是0x48。 您是否对此计划进行了任何更改?

    此外、您在控制器端要使用什么? (可能相关、也可能不相关。)

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

    您好、Bruce、感谢您的答复。 在软件示例的 syscfg 中、启用目标时钟延展。 禁用该设置后、我将进行一些测量、以查看这是否可以解决该问题。  

    是的、我确实将地址更改为了0x4A、这是预期结果。  

    在控制器侧、我将使用 Aadvark I2C 主机适配器。  

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

    时钟延展通常是一件好事。 特别是、程序使用 Tx FIFO 阈值=1似乎会在没有时钟延展的情况下建立一种竞态。

    但将其关闭可能是一个有用的诊断/实验。

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

    谢谢 Bruce 和 Gary。  

    我已经解决了这个问题,结果 Aadvark 主机适配器默认启用了"no stop condition"。