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.

[参考译文] BQ28Z610:器件通常会返回正确的数据、有时不会返回、有时是 nack!

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/593266/bq28z610-device-usually-returns-correct-data-sometimes-not-sometimes-nacks

器件型号:BQ28Z610
主题中讨论的其他器件:EV2400

a: 第一幅图像显示了正常的命令写入和数据读取。  图片上的标记标识了以下内容:

1 -器件 ACKS 0xAA、用于主机发送的器件写入。

2 -器件时钟延伸至主器件发送的0x30命令字节的末尾

3 -器件 ACKS 命令字节  

4 - 100us 延迟

5 -器件 ACKS 0xAB、表示主器件发送的器件读取

6 -器件时钟延伸

7 -主器件 ACKS 由器件计时的第一个数据字节

8 -主机将第二个字节置位以创建停止条件并终止传输

9 -不确定这是什么、但看起来像器件从主器件 ACKS 接收停止条件

固件返回值8.900... 返回的位正确解释、正确的值。

B. 第二幅图像显示相同的处理序列、除了器件外、所有图像都与第一幅图像类似

返回0x00的第一个数据字节和0x00的第二个数据字节。

固件返回值0.000... 返回的位被正确解释、器件返回的值不正确。  

这通常发生在一段时间不活动后的第一次读取时。  在下一次读取正确的值时

将返回8900。  随后的读取返回正确的值。

C. 第三幅图像显示了0xAA 从机写入地址的 NACK。

当同一命令连续发送两次时、这种情况通常发生在"快速"连续发送的位置

从第一个命令收到响应后、"Rapid (快速)"小于1秒。  如果我等待的时间超过~1秒

我不会得到 NACK。  没有尝试连续发送两个不同的命令。

关于以下方面的任何想法:

为什么返回的数据是0x00;0x00似乎在经过一段不活动时间之后?

为什么 NACKing 是在上一条命令之后快速发送的第二条命令?

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

    您使用的是哪种 i2c 自适应仪? EV2300或 ev2400? 您使用的是哪个器件上的哪个固件版本? 您可能需要在这些器件中的任何一个上更新到最新的固件版本? 此外、您能否附加从器件提取的 gg 文件?

    谢谢
    Onyx
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用主机与器件通信、则可能需要将总线频率提高到 b/W 30kHz 和60kHz、这样我们就可以看到这是否有用。

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

    Onyx、

    这是一个定制解决方案、它在 Microchip PIC24FJ128GC006中使用具有 SMBus 兼容 IO 的 I2C 引擎。

    Dan

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

    I2C 总线以100kHz 的速率计时、周期为10us。 我知道、使用图像中使用的时基很难看到它。
    我想在示波器图像中显示已完成的事务、因此无法扩展时基。

    我将在下一次机会发布一个具有扩展时基的视图。

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

    Onyx、

    我刚才简要介绍了以下内容:

     图像中看到的 M 100us 表示示波器时基为100us/div。

    示波器图像覆盖1000us 的时间。  Yel 布线为 SCL、Blu 布线为 SDA。

    我希望这对您有所帮助。

    Dan

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

    Onyx、

    这里是一张显示100kHz 时钟速率的扩展时间刻度图。

    Dan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    购买 EV2400后、我在 EV2400中看到的示波器迹线是不同的。 我注意到、每当事务处理未进行时、EV2400 I2C 总线就会空闲。 我修改了 PIC 设置、将用作 SCL/SDA 的 DIO 配置为数字输入、这样在事务处理未进行时、I2C 总线就可以一直空闲。 这似乎解决了我与器件通信时遇到的问题。 虽然不会始终进入总线空闲状态似乎不会影响同一 I2C 总线上的 I2C 温度传感器、但它似乎确实会影响 bq28z610。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴您已解决此问题。 默认情况下、ev2400在 i2c 上具有内部上拉电阻。 EV2300上未提供这些功能。 这可能会解释您的结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    PIC 具有多功能 IO。  我已经将 SCL/SDA 使用的端口引脚配置为数字输出并将它们初始化为0 /低电平。

    这会强制引脚为00、除非 PIC I2C 引擎控制这些引脚。  将这些引脚配置为数字输入

    允许我的应用中的上拉电阻器拉高 SCL/SDA、从而在 I2C 引擎时建立总线空闲状态

    未执行事务。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白了。 感谢您的回复。 让它正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    时钟和数据上的上拉电阻器值是多少? 它们被拉至什么电压? 我提出这一要求是因为 bq28z610数据表建议时钟和数据有一个内部3K3下拉电阻。 这对于 I2C 器件而言是不常见的。 我希望从您的波形中看到它们是否实际存在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们的 EVM 具有5.1k 电阻器。
    谢谢
    Onyx