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:桥接器件的 BMS 故障状态

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1358427/bq79600-q1-bms-fault-status-to-bridge-device

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

大家好!

我有一个问题、如果堆栈器件出现故障、我的基本器件如何知道堆栈器件出现故障?

根据数据表、可以通过两种方法

•主机忽略 NFAULT 引脚、不断轮询每个器件的 FAULT_SUMMARY 寄存器。 如果 FAULT_SUMMARY 不为零、则读取低电平故障状态寄存器以获取更多信息。

•主机监控 NFAULT 引脚状态。 启用故障状态、将菊花链向下传递到桥接器件。 当 FAULT_SUMMARY 不为零时、允许将桥接器件的 NFAULT 引脚置位。 触发 NFAULT 时、主机将轮询故障信息、以便进一步诊断

我理解方法1、但我对方法2有疑问、即如何 启用故障状态以将菊花链向下传递到桥接器件、以及如何根据故障状态设置低电平有效 NFAULT 引脚。

谢谢

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

    Sudhir,

    第二种方法的具体细节取决于用作堆栈器件的器件。 例如、在 BQ79616中、您需要将 DEV_CONF[FCOMM_EN]设置为1、NFAULT 信号将使用 COML/H 自动沿菊花链向下传播。 然后、只需要监控 BQ79600通信桥的 NFAULT 引脚。

    此致、

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

    尊敬的 Benjamin:

    如果我在堆栈器件中将 NFAULT 引脚保留为悬空、当我将  DEV_CONF[FCOMM_EN]设置为1时、堆栈器件是否会向基底器件发送故障信号

    (2) NFAULT 信号将使用 COML/H 自动沿菊花链向下传播、桥接器件的 NFAULT 引脚是否在 响应 NFAULT 信号时自动处于低电平。

    谢谢

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

    Sudhir,

    1) 1)如果使用 DEV_CONF[FCOMM_EN]= 1、则可以使 NFAULT 引脚在堆栈器件中保持悬空。  NFAULT 信号嵌入在通信帧中、 数据表的第9.2.6.2.3.1节对此进行了详细说明

    2) 2)是。 这种在 BQ79600中传播 NFAULT 的方法会设置 FAULT_COMM1[FCOMM_DET]。 如果通过 DEV_CONFIG1[NFAULT_EN]启用 NFAULT、这将触发 NFAULT 为低电平。

    此致、

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

    尊敬的 Benjamin:

    当我启用 TSREF 时、自动寻址不能正常工作  

    下面的 SNAP 是 启用 TSREF 后4个堆栈器件和1个基础器件的 DIR0_ADDR 值

    下面的 SNAP 是  禁用 TSREF 时4个堆栈器件和1个基础器件的 DIR0_ADDR 值。

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

    Sudhir,

    在开始写入 Control2[TSREF_EN]等寄存器之前、应执行自动寻址。 请注意、设置 TSREF 后、必须等待1.35ms 才能发送另一个命令。

    如果您有另一个不相关的问题、请创建新主题帖。 它可以更容易地找到是否有其他人有相同的问题。

    此致、

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

    尊敬的 Benjamin:

     我不知道该怎么办才好。"

     我已经做了您建议的一切、但问题没有解决、因为我打开了 TSREF、比我前面面临的同样问题  

    自动寻址无法正常工作

    下面的 SNAP 是启用 TSREF 后4个堆栈器件和1个基础器件的 DIR0_ADDR 值

    下面的 SNAP 是  禁用 TSREF 时4个堆栈器件和1个基础器件的 DIR0_ADDR 值。

    以下是我的代码

    /*用户代码开始(2)*/
    INT UART_RX_RDY = 0;
    int rti_timeout = 0;
    /*用户代码结束*/
    字节地址[8];
    字节 ADRESS1[8];
    字节 ADRESS2[8];
    字节 ADRESS3[8];
    字节 ADRESS4[8];
    int main (空)
    {
    /*用户代码开始(3)*/

    //初始化 TMS570LS1224
    systemInit();
    gioInit ();
    sciInit();
    rtiInit();
    sciSetBudrate (sciREG、1000000);
    vimInit;
    _enable_irq();
    gioSetDirection (hetPORT1、0x00000000);


    //变量
    BYTE RESPONSE_FRAME[(128+6)* TOTALBOARDS];//为每个板存储128个字节+ 6个标头字节
    字节状态[(128+6)*TOTALBOARDS];
    byte response_frame3[(128+6)*GPIO_adc];
    printf ("\n\n\n\n 程序初始化\n");

    //初始化600
    //如果 MCU 在启动时具有 NCS 且 MOSI = 0 (这会使器件进入关断状态)或者器件之前通过关断 ping 进入关断状态、则会唤醒两次
    wake79600 ();//向桥接设备发送唤醒 ping
    delayus (3500);//等待 Tsu (WAKE_SHUT)、至少3.5ms
    wake79600 ();//向桥接设备发送唤醒 ping
    delayus (3500);//等待 Tsu (WAKE_SHUT)、至少3.5ms

    //初始化 BQ79616-Q1堆栈
    WriteReg (0、control1、0x20、1、FRMWRT_SGL_W); //向堆栈设备发送唤醒信号
    延迟(11.6*TOTALBOARDS);//唤醒音持续时间为每个电路板~1.6ms +每个电路板10ms、用于从关断中唤醒器件=每个616电路板11.6ms


    //自动寻址
    AutoAddress();//自动地址序列

    //从启动开始重置任何 COMM 故障条件
    WriteReg (0、FAULT_RST1、0xFF、1、FRMWRT_STK_W); //重置堆叠器件上的故障
    WriteReg (0、FAULT_RST2、0xFF、1、FRMWRT_STK_W); //重置堆叠器件上的故障
    WriteReg (0、Bridge_FAULT_RST、0x22、1、FRMWRT_SGL_W); //桥接器件上的 FAULT_COMM 和 FAULT_SYS 复位


    WriteReg (4、CONTROL2、0X01、FRMWRT_SGL_W);//tsref 启用
    德莱乌斯(10000人);
    // WriteReg (0、CONTROL2、0X01、FRMWRT_STK_W);
    // delayus(1500);
    //启用 BQ79616-Q1主 ADC
    // WriteReg (0、GPIO_CONF2、0x012、1、FRMWRT_STK_W);
    // WriteReg (0、ACTIVE_CELL、0x0A、1、FRMWRT_STK_W); //将所有电池设置为活动状态
    // WriteReg (0、ADC_CTRL1、0x06、1、FRMWRT_STK_W); //连续运行和 MAIN_GO
    // delayus (5*TOTALBOARDS + 192);//5us 每个电路板重新计时,192us 用于完成循环

    //循环变量
    INT channel = 0;//迭代器
    INT currentBoard = 0;

    正确
    {
    通道= 0;
    电流板= 0;
    delayus(192+5*TOTALBOARDS);
    ReadReg (0、VCELL16_HI+(16-ACTIVECHANNELS)*2、Response_FRAME、ACTIVECHANNELS*2、0、 FRMWRT_STK_R);
    ReadReg (0、/* AUX_GPIO_HI*/GPIO4_HI、Response_frame3、2、0、 FRMWRT_STK_R);

    // ReadReg (0、DEV_STAT、STATUS、1、0、FRMWRT_STK_R);
    ReadReg (0、DIR0_ADDR、地址、1、0、 FRMWRT_SGL_R);
    ReadReg (1、DIR0_ADDR、ADRESS1、1、0、 FRMWRT_SGL_R);
    ReadReg (2、DIR0_ADDR、ADRESS2、1、0、 FRMWRT_SGL_R);
    ReadReg (3、DIR0_ADDR、ADRESS3、1、0、 FRMWRT_SGL_R);
    ReadReg (4、DIR0_ADDR、ADRESS4、1、0、FRMWRT_SGL_R);
    /*
    **
    *注:某些计算机在接收
    *通过 printf 语句获得大量数据。
    *响应数据的以下打印输出
    *不保证在所有系统上都能正常工作。
    **
    */

    // printf ("\n");//使用换行符开始在每个循环之间增加一些额外的间距
    //如果没有桥接设备,则只读取/打印基本设备的数据
    for (currentBoard=0;currentBoard<(BRIDGEDEVICE==1? TOTALBOARDS-1:TOTALBOARDS);currentBoard++)
    {
    printConsole ("第一个设备地址--%d\n",地址[4]);//桥接设备

    printConsole ("2nd device adres-%d\n"、ADRESS1[4]);
    printConsole ("3rd device addresse-%d\n",ADRESS2[4]);

    //
    printConsole ("4th device addresse---%d\n",ADRESS3[4]);

    printConsole (第5个设备地址--%d\n"ADRESS4[4]);

    printf ("Board %d:\t"、TOTALBOARDS-currentBoard-1);
    //打印每个活动通道的数据(每个通道2个字节)
    对于(通道=0;通道<(GPIO_ADC*2);通道+=2)
    {
    int boardByteStart =(GPIO_ADC*2+6)*电流板;
    Uint16 RawData =(response_frame3[boardByteStart+channe+4]<< 8)| response_FRAME[boardByteStart+channe+5];
    浮点 rawData3=RawData*0.00015259;//RawData*VLSB_ADC
    Uint16 rawData2 =(status[4]);

    printConsole ("%f\t\n"、rawData3);
    // printConsole ("%d\t\n"、rawData2);
    printf ("\n\n");
    delayus(10000000000);
    // printf ("%f\t"、cellVoltage);

    printf ("\n");//newline per board

    }while (1);

    /*用户代码结束*/

    返回0;


    /*用户代码开始(4)*/
    /*用户代码结束*/

    谢谢

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

    Sudhir,

    当读取器件地址时、是获得有效响应、这会指示器件以某种方式复位、还是仅获得全零、这会指示通信失败? 您可以使用逻辑分析仪或打印出整个响应帧来检查这一点。

    此致、

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

    Sudhir,

    当读取器件地址时、是获得有效响应、这会指示器件以某种方式复位、还是仅获得全零、这会指示通信失败? 您可以使用逻辑分析仪或打印出整个响应帧来检查这一点。

    此致、