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.

[参考译文] BQ79616-Q1:自动寻址期间的高电流消耗、以及自动寻址栈读取后的通信清除

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1521220/bq79616-q1-high-current-draw-during-auto-addressing-and-comm-clear-after-auto-addressing-stack-reads

器件型号:BQ79616-Q1
主题中讨论的其他器件:BQ79600-Q1、USB2ANY、 BQ79616

工具/软件:

我在自动寻址过程中遇到问题。 我们的实验室设置有 BQ79600和两个 BQ79616、我面临两个问题、之前记录在其他线程中、但问题已在专用电子邮件链的线程之外得到解决。

有时、当我发送写入来设置地址/堆栈器件/堆栈顶部时、79616器件会从消耗中等电流跳变为消耗大电流。
我无法将当前跳转固定到特定消息、只是在广播写入后将芯片设置为自动寻址模式。
从高电流消耗状态中恢复的唯一方法是切断芯片的电源。 SPI_RDY 也会降至0、因此无法发送更多消息。
我在高电流状态下尝试了一些其他操作来使用 BQ79616:
-当 BQ79616在绘制高电流时,通过关闭 ping 和两个唤醒 ping 重新启动79600会导致一些数据在第二个唤醒 ping 后通过79600的 MISO 线路,
 数据的脉冲宽度约为2us、发送3-4个数据脉冲。 当数据通过 MISO 时、不会按住芯片选择、并且没有 SPI 时钟、输出的数据看起来并不一致。
-我电流限制电源低于大电流功耗,当79616s 拉至电流限值时,他们回到略高于中等功耗,我可以重置
 79616s 通过重新启动自动寻址过程并从79600发送唤醒音调来恢复到中等电流消耗。

另一个问题发生在以自动寻址方式达到同步栈读取时、发送栈读取数据包始终会导致超时、此时我会发送 SPI Comm Clear 以将 SPI_RDY 恢复为1。
我在发送 Comm Clear 后重新发送数据包、但它绝不会超出第一个堆栈读取数据包。
软件仍会在10ms 的延迟后发送 Comm Clear 命令。

我对发送的数据非常有信心、数据包与 BQ79600-Q1软件设计参考的第2.2.2节中的数据相匹配、可以对79600的配置寄存器之一进行写入和读取。
我必须联系团队中的其他人员以了解电气/硬件的详细信息。

问题:
1)是什么导致 BQ79616消耗大量电流并在自动寻址过程中将 SPI_RDY 驱动为0?
2)为什么 SPI_RDY 在开始堆栈读取后始终保持低电平?

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

    您好 Colin、

    是的、这很奇怪。 这听起来可能是设置问题。  
    您是否使用 USB2ANY 和 GUI 进行通信?
    还是使用 FTDI 或其他自定义脚本?

    正常基线电流是多少?最大电流消耗是多少?

    电流消耗是否发生在特定的 BQ79616器件上? 如果您仅使用1x 600和1x 616、是否仍会发生?  

    您是否能够与 BQ79600器件进行通信;如果是、如何进行通信?

    若要继续调试、我们可能需要查看工作台设置、并可能在通信线路上放置逻辑分析仪以查看正在进行的操作。  
    此外、请确保所有 SPI 线路都已正确连接到 BQ79600。

    最后、请提供您的伪代码、并尝试确定是否有特定命令导致此问题。  

    此致、

       Quentin

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

    Quentin、

    我当前没有使用 USB2ANY 或 GUI 进行通信、BQ79616s 和 BQ79600与主处理器位于同一电路板上。
    我们有几个 BQ79616评估板、但没有79600评估板。

    BQ79616s 通过与电路板其余部分分开的电源供电、两个 BQ79616s 都连接到电源、因此我无法在一个616通电的情况下运行电流设置。
    600由板的电源供电。

    两个616芯片在唤醒前的电流消耗是6mA、在活动模式下运行时的24mA、以及高电流模式下的58 -60mA。
    如果对芯片进行电流限制以防止它们汲取58 -60mA 的电流、则器件会在达到限值后下降至27mA。
    电压限为26V。

    今天早上我和一个硬件团队的人一起工作,他说两个616看起来都比正常情况下的58 -60mA 状态下拉更多的功率,但其中一个616比另一个消耗更多的功率。
    他还在电路板上找到了几个点来探测616芯串联器件之间的通信、他说通信看起来正常、但在高电流状态下、它们会不断在彼此之间发送约200ns 和400ns 的脉冲。
    我认为在中断之前是3个短脉冲、2个长脉冲和2个短脉冲、我必须再进行一次示波器捕获来进行确认。

    我已经能够与 BQ79600进行通信、我通过切换测试程序确认了这一点、该程序在向79616发送唤醒信号之前向79600发送以下读写消息:

    -从寄存器0x2001读取、确认主处理器接收0x14作为数据(默认值)
    -写入寄存器0x2001将其更改为0x1C
    -从寄存器0x2001读取、确认主处理器接收到0x1C 作为数据
    -写入寄存器0x2001将其更改为0x14
    -从寄存器0x2001读取、确认主处理器接收0x14作为数据

    大多数过程是将数据打包成 SPI 传输、然后从主处理器的 SPI 缓冲区寄存器发送。前16位是 SPI 设置、后16位是传输的数据。

    以下是一个伪代码示例、其中具有写入79600 0x2001寄存器的单个读取数据包:

    SingleReadStruct.init = 0x80
    SingleReadStruct.DEV_ADR = 0x00
    SingleReadStruct.REG_ADR = 0x2001
    SingleReadStruct.READ_SIZE = 0x00
    SingleReadStruct.crc = 0x0000

    GetSpiCRC (SingleReadStruct.rawBytes、7)//将数据包读取作为原始字节和数据包中的字节数接收、在 SingleReadStruct.crc 字段中返回 CRC

    SPI_TX_buf[0]= HOLD_CS_SPI_SETTING << 16
    SPI_TX_buf[0]= SingleReadStruct.init << 8
    SPI_TX_buf[0]= SingleReadStruct.dev_ADR

    SPI_TX_buf[1]= HOLD_CS_SPI_SETTING << 16
    SPI_TX_buf[1]= SingleReadStruct.REG_ADR // 16位字段

    SPI_TX_buf[2]= HOLD_CS_SPI_SETTING << 16
    SPI_TX_buf[2]= SingleReadStruct.READ_SIZE << 8
    SPI_TX_buf[2]= SingleReadStruct.HighCRCByte

    SPI_TX_buf[3]= SEND_1BYTE_EOQ_SETTING << 16
    SPI_TX_buf[3]= SingleReadStruct.LowCRCByte

    while (SPI_RDY = 0)

       //等待 SPI_RDY 变为高电平
    }

    SendSPIPkt (SPI_Ch_A、spi_tx_buf、spi_rx_buf、4)//丢弃该事务的 RX 缓冲区数据

    如果 SPI_RDY 保持低电平的时间长于预期、Comm_Clear_Timeout (single_read、7)//发送通信清除

    我有一个示波器连接到79600上的 MOSI/MISO/CS/SCLK 信号、以查看桥接器和主处理器之间的通信。

    希望这能回答您的问题、如果您需要更多信息、请告诉我。

    -Colin

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

    Colin、

    您能给我分享您的原理图吗?
    此外、您还印刷了多少块电路板?  
    他们都有这个问题吗?

    此致、

       Quentin

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

    Quentin、

    我不能在这里分享原理图、我们必须通过电子邮件或安全的文件传输安排一些事情。

    我们至少有3块电路板、我在另一个电路板上尝试了启动过程、并在自动寻址期间看到相同的高电流状态。

    几天前、我尝试在 DLL 同步广播写入后与616芯片之一进行通信、因为它的默认地址被列为0x1。 我得到的响应与我对616的预期相匹配(地址寄存器为0x1、VMB_DONE_THRESH 匹配其复位值0x3F)、但电路板在发送读取数据包后不久会进入其高电流状态。 不确定这是否可以缩小导致60mA 电流消耗的原因、但处理器可以使用600与其中一个616芯通信。

    我今天还在一个模板上运行了自动寻址和一些读取数据包、它停止了与第二个79616的通信、留下设置为79600 (默认地址0)和一个79616 (默认地址1)。 我没有看到功耗增加或 SPI_RDY 保持在0、并且从600和616返回了良好的数据。 当我解决自动寻址程序似乎可以正常工作时、我不得不解决一个问题、说明我是如何从堆栈读取处理响应的。 该1 616设置的关断状态功耗仍为6mA、正常工作功耗为24mA。

    -Colin

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

    Colin、

    您可以通过电子邮件在 q-silic@ti.com 上与我分享原理图。  

    此致、

       Quentin