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.

[参考译文] CC1352P7:从 CC1352P7到 ADP5350 PMIC 的 I2C 读取命令被 NACKed。

Guru**** 2393005 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1209376/cc1352p7-i2c-read-commands-from-cc1352p7-to-adp5350-pmic-being-nacked

器件型号:CC1352P7

您好!

我不确定这是否是发表这项质询的正确论坛。  我在这里看到的问题不一定是由 MCU 引起的。  我的问题是、检查其他任何人是否看到 CC1352P7RGZ MCU 或其他类似模型具有相同的行为。

我在一块电路板中通过 CC1352P7RGZ MCU 配置 ADP5350 PMIC。  我看到了两个问题。

从 MCU 到 PMIC 的第一条(读取或写入)命令始终为 NACKed。 在本例中、写入的内容应设置 PMIC 产生的电压。  当 WRITE 命令消失时、PMIC 会锁定芯片地址和寄存器地址。  逻辑捕捉显示这两个值都是正确的。  同样的捕获显示、该请求中要写入寄存器的数据不是放在线路上。  我假设这是因为 I2C 外设在收到请求的地址部分的 NACK 后停止工作。  下面的屏幕截图显示了写入操作。  蓝色阴影区域突出显示了黑色。  如果再次写入相同的请求、则传输将顺利进行。

第二个问题是每个读取请求的最后一个字节被 NACKed。  如果读取请求涉及单个字节、则该字节为 NACK。  对于每个读取请求、PMIC 返回的数据都是正确的。  下面的屏幕截图显示了一个寄存器的写入/读取序列、其中涉及两个字节。  写入0x1C08后不会出现任何问题。  返回0x1C08、但最后一个字节为 NACK。  这会导致 I2C_transferTimeout() SimpleLink API 返回故障,尽管读取数据正确。

有人见过类似的行为吗?  感谢任何帮助。

此致、

保罗

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

    您好、Paul、

    如果降低 I2C 总线的速度、会发生同样的情况吗?

    我提出的问题是、因为模拟波形好像在信号路径中有一些电容

    此致、

    Arthur

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

    您好、Adam、

    感谢您的答复。  在上面的屏幕截图中捕获的运行期间、时钟设置为400kHz。  我将速度降低到了100 kHz。  正如预期的那样、信号更干净、但通过 I2C 总线发送的第一个请求仍为 NACK。  但是,我认为我发现了这个请求被拒绝的原因。

    在与 PMIC 进行任何通信之前,根据需要调用 I2C_Open ()。  该调用会导致高/低/高序列、并可在第一次事务之前看到。  我可以非常肯定地说、序列会被识别为启动条件(逻辑探头使用了绿色标记)。  但是、没有 STOP 条件。  当实际事务开始时、会被另一个启动条件标记。  此时、PMIC 被前一个序列弄混淆、并对这第一个事务进行 NACK。  之后是一个停止条件(棕色标记)、它可能将所有内容"重置"为"干净"状态。  一切都是从那里运作的。  I2C_Open()生成这样一个脉冲有什么原因吗?

    这是该序列和第一个事务的屏幕截图。  SDA 脉冲在 SCL 脉冲前领先约4.7usec。

    对于每个进行 NACK 的读取事务的最后一个字节、这似乎不再是问题。  当我在上一篇文章中提到 I2C_transferTimeout() SimpleLink API 返回失败时,我是不正确的。  实际上、该 API 返回成功并且读回的数据是正确的。

    此致、

    保罗

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

    您好、Paul、

    我们确实看到了这一问题,如下所示:

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1171795/cc1352r-i2c_open-and-i2c_close-toggles-both-sda-and-scl-lines/4409695#4409695


    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1191742/cc2652r7-i2c_open-causes-io-glitch-that-looks-like-an-i2c-start-condition


    它是修复后的6.30 SDK 版本。 上面的线程中还有一个权变措施。

    到目前为止、您使用过哪一种?

    此致、

    Arthur

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

    您好、Adam、

    我目前使用的是 SDK 的6.40.00.13版。  作为记录、有4.7k Ω 上拉电阻。  感谢您提供相关链接。  当前的权变措施是在系统初始化时发出一个假写入。  这似乎可以正常工作。  我希望我可以在不更改 SDK 代码的情况下摆脱它。

    此致、

    保罗

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

    您好、Paul、

    我确认了 I2C 修复程序将在7.10 SDK 中实际发布,该 SDK 将在四月中旬发布。

    此致、

    Arthur

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

    您好、Adam、

    好极了、感谢此次更新。  我有一个跟进问题。  当我启动项目时、代码库使用的是 SDK 5.20。  当移动到版本6.40时、某些 API 在两个版本之间被淘汰/更改。  因此、我必须执行一些移植操作。  您知道6.40和7.10之间是否会有类似的差异吗?  我相信当新版本推出时、这将会得到很好的记录、但我想我会问。

    感谢你的帮助。

    此致、

    保罗

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

    您好、Paul、

    根据我所看到的内容、将会有一些 API 调用重新命名、这可能涉及重写、但正如您已经说明的那样、您将在发行说明中获得详细信息。

    此致、

    Arthur

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

    您好、Adam、

    感谢您确认这一点。  再次感谢您的帮助。

    此致、

    保罗

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

    如果我能够进入这里、

      :您知道此错误是在哪个版本中引入的吗? (我们可能必须降级才能避免)。 此外、您是否知道 FIX/SDK v7.10的目标发布日期的最新状态?

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

    尊敬的 Andreas:

    根据上述链接线程、它是在移除 PIN 驱动程序后引入的。 因此、您应该尝试使用 SDK 的5.20/5.30版本。

    从7.10 SDK 版本开始,预计会在5月中使用它。

    此致、

    Arthur