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.

[参考译文] BQ34Z100-G1:在0x55上的芯片 ACK'后、I2C SDA 线路被拉低约1秒

Guru**** 2540720 points
Other Parts Discussed in Thread: BQ34Z100EVM, BQ34Z100, BQSTUDIO, EV2400

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1323081/bq34z100-g1-i2c-sda-line-pulled-low-for-about-1-sec-after-chip-ack-s-on-0x55

器件型号:BQ34Z100-G1
主题中讨论的其他器件:BQ34Z100、BQ34Z100EVM BQSTUDIOEV2400

您好!

我正在为  BQ34Z100芯片编写一个驱动程序、每次我尝试对芯片上的寄存器进行读取或写入操作时、都会将 I2C 总线上的 SDA 线拉低约1秒。  

这在总线上写入0x55地址后发生、芯片进行确认。

在此之后、例如通过写入0x08来读出电压、芯片会将 SDA 线拉低很长时间、通常超过1秒。  

我已经尝试过几种不同的寄存器、i2c 频率和计时、一切顺利。 我们未重新刷写芯片。

如果对前进的方式有任何意见,我们将不胜感激?
芯片的行为可能是这样的?  

下面是示波器的一些屏幕截图。  

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

    由于某种原因,照片上的评论消失了。
    黄色:SDA
    蓝色:SCK
    图1:显示了芯片在确认0x55后但不确认寄存器0x3E 后如何下拉 SDA 线。  
    图2:确认0x55的详细视图
    图像3:不确认寄存器0x00并下拉 SDA 线的详细视图:  

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

    您好!

    我有几个问题。

    您是否在使用 BQ34z100EVM?

    您是否将 EV2400与 BQstudio 一起使用?

    此致、

    埃文

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

    您好、Evan、感谢您的答复。  

    我使用的是 BQ34Z100PWR 芯片。

    不可以、我使用开箱即用的芯片、通过 i2c、使用 FT2232H 芯片与之直接通信。  
    我希望通过 i2c 进行芯片的所有配置、因为我们计划进行系列生产、然后用 EV2400刷写每个芯片比较耗时。  

    此致、

    莫腾·李

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

    尊敬的 Morten:

    感谢您的澄清。

    您的 I2C 线路上是否有10K 上拉电阻器?

    发送和接收 I2C 命令之间是否有100ms 的延迟?

    由于您以前无法与该设备进行通信、我觉得您的设置可能存在问题。

    您是否有可以分享的设置原理图?

    此致、

    埃文

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

    您好、Evan、再次感谢您的反馈。

    是的,我最初有4,7K 上拉,但尝试10K 没有改变的行为。  

    我还有您指出的延迟。  

    根据当前的设置、我可以通过同一条 i2c 总线与同一 PCB 上的8-10个其他芯片进行通信、所以我认为设置是可以的。  
    由于  BQ34Z100PWR 将数据线路拉至低电平、因此这会在不可接受的时间段内停止所有通信。  

    我曾尝试使用不同的 i2c 频率、并仅尝试与 BQ34Z100PWR 芯片通信(在电路板上进行所有其他通信静默)。  

    我所面临的行为是否 与 BQ34Z100PWR 的故障模式行为类似未正确刷写?

    我已经尝试 用新芯片替换当前的 BQ34Z100PWR、但是它们的表现都是一样的。

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

    尊敬的 Morten:  

    我以前没有看到过这个问题。 您能够成功地与 BQ34z100以外的所有其他器件进行通信。  

    请允许我留出一些时间就您的问题巩固我的团队。

    同时...

    您能否尝试将固件重新上传至电量监测计。  

    您能否共享您的.srec 文件、以便我可以检查您的电量监测计是否未卡在错误状态。

    此致、

    埃文

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

    您好、Evan:

    感谢您与您的团队进行整合。  

    正如我说过的、我正在使用开箱即用的芯片、例如、我尚未将任何 FW 上传至电量监测计。 我的理解是芯片已预先闪存、这是错的吗? 我是否需要购买 EV2400并刷写芯片才能使用? 我计划通过 i2c 进行配置。  
    因此、我也没有.srec 文件。

    此致、
    莫腾  

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

    尊敬的 Morten:

    这是我想的,但我认为我应该问。 是的、器件确实预先刷写了、一旦我们解决了您的 I2C 问题、您就可以通过 I2C 对其进行配置。

    整合我的团队后、我们认为您的问题与时序有关、请尝试匹配数据表中的时序图。

    BQ34Z100-G1采用 Impedance Track 技术的宽量程电量监测计数据表(修订版 D)(TI.com)

    这是我从 BQ34z100从地址0xAA 读取0x08获得的示波器快照、请尝试匹配时序。

    顶部 SDA  

    SCL 在底部

    此致、

    埃文

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

    您好、Evan、感谢您对时间安排的建议。  

    我已尝试将 Arduino 连接到 PCB 上的 I2C 总线、以确定问题是否是总线线路中的时序/电容。 Arduino 连接到 FTDI 旁边的 i2c 线路、因此总线线路的长度应大致相同。

    使用 Arduino、我确实能够读取芯片上寄存器的数据。 但我还不能弄清楚在 i2c 总线设置中有哪些关键差异、这些差异使我能够使用 Arduino 读取数据、但不能使用 FTDI。  Arduino 和 FTDI 均使用 400kHz 的 i2c 频率进行设置。  
    下面是 Arduino 和 FTDI 的一些非范围快照。  

    对于使用 FTDI 读取 BQ34Z100-PWR 芯片的问题、如果有任何想法和提示、我们将不胜感激。  


    在 BQ34Z100-PWR (地址0x55)上读取寄存器0x08。 如您所见、我能够从寄存器中读出数据。

    使用 FTDI 尝试相同的读取。 如您所见、芯片不确认0x08寄存器、也不确认读取命令中的地址0x55。  

    我已经尝试比较 SCL/SDA 上升时间、但它们都低于300ns。  

    Arduino 上 SDA 的上升时间。

    FTDI 上 SDA 的上升时间。  

    我已经注意到时钟宽度有一点不同、但两者都在最小600ns 的时序标准范围内。  

    时钟宽度 Arduino

    时钟宽度 FTDI。  

    有关更多数据、我提供了 Arduino 和 FTDI 的以下特写:

    Arduino:

    FTDI:

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

    尊敬的 Morten:

    遗憾的是、这源于我的专业知识领域。  

    我知道 Arduino 在 i2c 线路和处理 i2c 协议的库上有内部上拉。 很遗憾、我无法帮助您使用 ardunio 或 fdti。

    此致、

    埃文