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.

[参考译文] BQ79600-Q1:Autoaddrsing 后无法使用 UART 进行读取

Guru**** 2756835 points

Other Parts Discussed in Thread: BQ79616, BQ79600-Q1, BQ79616-Q1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/931119/bq79600-q1-unable-to-read-with-the-uart-after-autoaddrssing

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

目前使用 BQ79600作为 TMS570LS0714PGE 和电池平衡器(bq79616)之间的桥接器。

 bq79600的示例代码 由 SPI 接口提供帮助  

我们希望将 bq79600与 UART 接口结合使用、

我们能够在 UART 的帮助下唤醒电桥和电池平衡器  

在自动寻址之前,我们可以读取(选中),在自动寻址之后,我们无法读取数据,因此请帮助我完成自动寻址后要执行的步骤

请帮助我进行堆栈读取和堆栈写入

谢谢、

M. Poorna Chandu

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

    您好!

    器件应在自动寻址后准备好进行通信。 您能否共享您的自动寻址例程以检查问题出在哪里?

    可用的命令类型为单器件写入/读取、广播写入/读取和堆栈写入/读取。 广播读/写命令由所有器件执行、包括桥接器(bq79600)和堆栈器件(bq79616)。 与栈命令的区别在于栈写操作只会写入栈器件、因此桥接器只会转发数据、而不会执行命令本身、栈读操作只会从栈器件读取、而不是从桥接器读取。

     

    此致、

    Leslie

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

    Hai Leslie、

    向下我将共享自动寻址 中和自动寻址之后遵循的步骤

    自动寻址(用于通过 UART 进行通信)中遵循的步骤:

     

      WriteReg (0、OTP_ECC_TEST、0x00、1、FRMWRT_All_W);

      //启用自动寻址模式

      WriteReg (0、CONTROL1、0x01、1、FRMWRT_All_W);

     //为每个板设置地址

      for (currentBoard=0;currentBoard<2;currentBoard++)

      {

           WriteReg (0、DIR0_ADDR、电流板、1、FRMWRT_ALL_W);

           delayms(2);

      }

     

      WriteReg (0、COMM_CTRL、0x02、1、FRMWRT_All_W); //首先将所有内容设置为堆栈设备

     

      if (TOTALBOARDS=1)//如果只有1个板,它是栈的基址和栈顶,所以将其更改为这些基址

      {

        WriteReg (0、COMM_CTRL、0x01、1、FRMWRT_SGL_W);

      }

       else //否则单独设置基座和栈顶

      {

           WriteReg (TALBOARDS-1、COMM_CTRL、0x03、1、FRMWRT_SGL_W);

      }

       //SYNCRHONIZE 具有立即读取功能的 DLL

       ReadReg (0、OTP_ECC_TEST、autodr_RESPONSE_FRAME、1、0、 FRMWRT_All_R);   

       }

    在自动寻址(对于 SPI)之后:

       WriteReg (0、ACTIVE_CELL、0x0A、1、FRMWRT_All_W);    //将所有单元格设置为活动

    //延迟

      WriteReg (0、ADC_CTRL1、0x06、1、FRMWRT_All_W);    //连续运行和 main_go

    //延迟

    //最后读取电池电压

    检查是否有任何错误请告诉我要遵循的确切步骤(我们的时间非常短)

     

    谢谢、

    M. Poorna Chandu

     

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

    Poorna、您好!

    感谢您共享代码。 该过程看起来正确。

    • 堆栈中有多少616个器件?
    • 您是否在自动寻址之前唤醒了600和616? 步骤:
      • 发送唤醒 ping:使用 UART 时、通过将线路拉低2.75ms (tHLD_WAKE)来在 MOSI/RX 上发送唤醒 ping、以唤醒 BQ79600-Q1。 然后等待至少3.5ms、以使 BQ79600器件进入工作模式。
      • 向 BQ79600-Q1发送单个器件写入以设置 CONTROL1 [SEND_WAKE]=1、从而唤醒所有堆叠的 BQ79616-Q1器件。 然后等待适当的时间、让所有器件接收到唤醒信号并进入激活模式、然后再启动自动寻址序列。 对于1 616器件,时间大约为11.6ms;对于2个堆叠器件,时间大约为11.6ms*2;对于3个器件,时间大约为11.6ms*3,依此类推。

    您能否检查堆叠的设备是否处于唤醒状态、以及是否在开始自动寻址之前等待适当的时间?

    此致、

    Leslie