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.

[参考译文] BQ79731-Q1:"bq79731_SAMPLE_CODE-BQ79731_Branch_031822.zip"未按预期工作

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1432104/bq79731-q1-bq79731_sample_code-bq79731_branch_031822-zip-not-working-as-expected

器件型号:BQ79731-Q1
主题中讨论的其他器件:BQ79600EVM

工具与软件:

您好!

我们的设置是 LaunchXL2-TMS 570LS12 /BQ 79600 EVM/BQ 79731. 测量。 在" bq79731_sample_code-BQ79731_Branch_031822.zip "、我们根本没有观察到它的功能性。

我们的问题:

  • 在"include\"中 bq797xx.h "、该怎么做  SPI_COMM 和  79600_bridge 如何进行配置? 是否为通信采用 UART。 BQ79600、CAN 的接口  SPI_COMM  定义为 false、while 79600_bridge  仍然为真?
    1. 在  SPI_COMM  被配置为 false、我们观察到:

启动程序
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
BAD CRC
错误:ResetAllFaults bWriteType 不正确
################################################################## start########################################################################################################################
BAD CRC

电路板2:VF2 = 0.000000 VF1 = 0.000000 CP = 0.000000 RSVD = 0.000000电流1 = 0.000000 CURRENT2 = 0.000000 OC1 = 0.000000 OC2 = 0.000000 RSVD = 0.000000 GPIO1 = 0.000000 GPIO2 = 0.000000 GPIO2 = 0.000000 GPIO3 = 0.000000 GPIO4 = 0.000000 GPIO5 = 0.000000 GPIO6 = 0.000000 GPIO7 = 0.000000 GPIO12 = 0.000000 GPIO13 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO15 = 0.000000 GPIO10 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO10 = 0.000000
电路板1:VF2 = 0.000000 VF1 = 0.000000 CP = 0.000000 RSVD = 0.000000电流1 = 0.000000 CURRENT2 = 0.000000 OC1 = 0.000000 OC2 = 0.000000 RSVD = 0.000000 GPIO1 = 0.000000 GPIO2 = 0.000000 GPIO2 = 0.000000 GPIO3 = 0.000000 GPIO4 = 0.000000 GPIO5 = 0.000000 GPIO6 = 0.000000 GPIO7 = 0.000000 GPIO12 = 0.000000 GPIO13 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO15 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO10 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000
BAD CRC
故障摘要 val 为0x0和0x0
故障摘要:过流故障:0 ADC/CC 故障:0系统故障:0
故障摘要:OTP 故障:0通信故障:0电源故障:0
故障摘要 val 为0x0和0x0
故障摘要:过流故障:0 ADC/CC 故障:0系统故障:0
故障摘要:OTP 故障:0通信故障:0电源故障:0
BAD CRC
栈开发 ID 0的 Dev_Stat 2 val 为0x0
########################################################################## END######################################################################################################

  • 在  SPI_COMM  配置为 true 后、代码会停留在:

另外、请注意以下几点:

  1. 阻抗 79731. 根据用户手册、为上述测试移除了 EVM 板跳线15。
  2. 使用时 TI GUI (BQ797XX、v2.0.4)、其中 BQ79600evm 和 BQ79731evm 通过 IsoUART 连接、 正确 在 GUI 上观察到测量值。

请提供建议。 谢谢你。

John

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

    尊敬的 John:

    对延迟回复表示歉意。 有几个方面需要检查。 总的评估板设置了什么? 整个电路板是否包含堆栈+基础封装? 您是否已确保600的跳线设置正确? 您使用什么电压为600供电? 最后、程序启动时是否唤醒了? 绿色 LED 是否亮起?

    此致!

    Zachary

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

    尊敬的 Zachary:

    没有问题,谢谢你的答复。 以下是对您的问题的答复:

    • 示例代码如下所示(在 bq797xx.h 中):
    #if is_79600_bridge == true
    #define TOTALBOARDS 2.    //板堆叠
    • 是的、我会认为 TOTALBOARDS 定义为2、其中包括 BQ79731EVM 和 BQ79600EVM。 这是正确的解释吗?
    • 据我们所知、79600EVM 跳线设置正确、因为我们一直在使用它与 BQ79631EVM、BQ79616EVM 甚至最新的 BQ79718EVM 进行正确通信。
    • 我们将使用5V 电压为 BQ79600EVM 供电。
    • 在 BQ79731EVM 上 AVDD 通过5V 电源上电后、绿色 LED 亮起。 然后随着示例代码运行 DVDD 绿色 LED 亮起。 此时、BQ79600EVM 绿色 LED ( DVDD )也亮起。 因此、我们认为"唤醒"信号确实到达了 BQ79731EVM。

    此外、在程序运行时、我们观察到(如上一 msg 所示)同时显示了"Board 2"和"Board 1"中的测量值。 是否不应该仅显示一个电路板(即 BQ79731EVM)的测量值?

    请提供建议。 谢谢。

    PS。 在测试中、我们还观察到当我们使用 JTAG 调试器(TI XDS110或 J-Link)运行示例代码时、BQ79731EVM 和 BQ79600EVM 上的 NFAULT 红色 LED 都亮起。

    John

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

    尊敬的 John:

    有意思。 因此、在为 SPI 配置了所有功能后、似乎600正在与 MCU 通信、但731无法响应唤醒。 您是否能够在 MCU 和600之间为 SPI 连接一个逻辑分析仪并向我发送结果、以便我了解发生了什么情况?

    此致!

    Zachary

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

    尊敬的 Zachary:

    我们需要使用 IsoUART 通过 BQ79600与 BQ79731进行通信。 请注意、(如前所述)仅使用 TI GUI (BQ797xx v2.0.4)时、它可以通过 IsoUART 连接的 BQ79600和 BQ79731进行通信。

    上述行为是由" #define SPI_COMM    bq797xx.h 中找到。

    BQ79731确实支持 IsoUART、正确吗? 您是否能够拥有与我们的设置(TMS570LS12/BQ79600/BQ79731)类似的设置、并观察 BQ79731示例代码在配置为使用 UART_COMM 时的工作情况?

    请提供建议。

    John

    进一步意见:

    • 中的示例代码 自动地址 函数(bq797xx.c) 如下所示 正在触发中的逻辑 ReadRegUART 生成" BAD CRC "检测:

    //SYNCRHONIZE 具有抛出式读取的 DLL
    ReadReg (0、OTP_ECC_DATAIN1、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN2、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN3、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN4、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN5、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN6、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN7、autoaddr_response_frame、1、0、 FRMWRT_STK_R);
    ReadReg (0、OTP_ECC_DATAIN8、autoaddr_response_frame、1、0、 FRMWRT_STK_R);

    • 函数 ResetAllFaults 包含以下逻辑:

    空洞 ResetAllFaults (字节 BID、字节 bWriteType )

    //broadcast 包括使用当前设置覆盖 CUST_CRC 的额外功能
    if (bWriteType=WriteType)

    //读取计算出的客户 CRC 值
    ReadReg (0、CUST_CRC_RSLT_HI、FAULT_FRAME、2、0、 ReadType);
    //使用正确的 CRC 覆盖堆栈中每个板的 CRC
    for (currentBoard=0;currentBoard<TOTALBOARDS;currentBoard++)

    //返回帧从最高板开始、因此将首先写入最高板
    WriteReg (TOTALBOARDS-CURRENTBOAR-1、CUST_CRC_HI、FAULT_FRAME[CURRENTBoard*8+4]<< 8 | FAULT_FRAME[currentBoard*8+5]、2、WriteType);
    }
    //现在清除每个故障
    WriteReg (0、FAULT_RST1、0xFFFF、2、WriteType);
    }
    否则 if (bWriteType=WriteType)

    WriteReg (BID、FAULT_RST1、0xFFFF、2、WriteType);
    }
    否则 IF (bWriteType=FRMWRT_STK_W)

    WriteReg (0、FAULT_RST1、0xFFFF、2、FRMWRT_STK_W);
    }
    设计

    printf ("error: ResetAllFaults bWriteType 不正确\n");
    }
    }

    • 在 ResetAllFaults 函数中同时使用"if"和"else if"、检查相同条件的目的是什么?
    • main 中的代码行"ResetAllFaults (0、ReadType);// Clear All Faults"、使用的 ReadType 参数值调用 ResetAllFaults  FRMWRT_STK_R 、然后根据 WriteType (即)的值进行检查  FRMWRT_STK_W 在中 ResetAllFaults 函数、以触发" 错误:ResetAllFaults bWriteType 不正确 "检测。
    • 是否已通过 UART 通信验证 BQ79731示例代码是否有效?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    我使用以下设置对设置上的示例代码进行了测试:

    TMS 570LS12 /BQ 79600 EVM/BQ 79731. 测量

    MySecure 提供示例代码

    SPI_COMM = false

    TOTAL_BOARDS = 2

    代码成功运行、我能够在终端上看到731的 ADC 读数。 错误的 CRC 消息是正常的、并不意味着 CRC 存在问题。 此外、屏幕上的电路板1 ADC 读数也是正常的、应该仅为0。

    我要附加我的逻辑分析器文件以及来自 IDE 的日志文件。

    我不确定为什么在您的终端上不起作用、您能否向我发送逻辑分析仪文件以便我可以查看从 MCU 发送的命令?

    此致!

    Zachary

    e2e.ti.com/.../731_5F00_600_5F00_ConsoleLogs.txte2e.ti.com/.../731_5F00_Sample_5F00_code_5F00_With600asBridge.sal

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

    尊敬的 Zachary:

    感谢您拥有与我们相同的设置、并能够测试79731示例代码。

    我很惊讶地得知"Bad CRC"检测和"error: ResetAllFaults..." 被视为"正常"。 请详细说明一下吗?

    现在、我还再次对我的设置运行示例代码、并获得如下所示的 IDE 控制台输出。 所以,你会认为这是"工作"?

    请提供建议。

    注意:我也无法打开您发送的.Sal 文件。 您是否能够将其转换为更常用的格式?

    John

    启动程序
    BAD CRC
    BAD CRC
    BAD CRC
    BAD CRC
    BAD CRC
    BAD CRC
    BAD CRC
    BAD CRC
    错误:ResetAllFaults bWriteType 不正确
    ################################################################## start########################################################################################################################

    电路板2:VF2 = 0.020300 VF1 = 0.020000 CP = 10.470500 RSVD = 0.000000电流1 = 0.000011 CURRENT2 = 0.000075 OC1 =-3.276800 OC2 =-3.276800 RSVD = 0.000000 GPIO1 =-0.000100 GPIO2 =-0.000100 GPIO3 =-0.000100 GPIO4 =-0.000100 -0.00010 =-0.000100 -GPIO100 = 0.00010 = GPIO100 -0.00010 100 = 0.00010 100 = GPIO100 10千10 100 = 0.00010 100 -GPIO10 100 = 0.00011
    电路板1:VF2 = 0.000000 VF1 = 0.000000 CP = 0.000000 RSVD = 0.000000电流1 = 0.000000 CURRENT2 = 0.000000 OC1 = 0.000000 OC2 = 0.000000 RSVD = 0.000000 GPIO1 = 0.000000 GPIO2 = 0.000000 GPIO2 = 0.000000 GPIO3 = 0.000000 GPIO4 = 0.000000 GPIO5 = 0.000000 GPIO6 = 0.000000 GPIO7 = 0.000000 GPIO12 = 0.000000 GPIO13 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO15 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000 GPIO10 = 0.000000 GPIO11 = 0.000000 GPIO11 = 0.000000
    故障摘要 val 为0xc8和0xc8
    故障摘要:过流故障:1 ADC/CC 故障:1系统故障:1.
    故障摘要:OTP 故障:0通信故障:0电源故障:0
    故障摘要 val 为0x21和0x21
    故障摘要:过流故障:0 ADC/CC 故障:0系统故障:0
    故障摘要:OTP 故障:0通信故障:0电源故障:1.
    故障 power1 val 为0x0
    故障 POWER1:PWRBIST 失败:0 VSS_OPEN:0 TSREF_OSC:0
    故障 POWER1:TSREF_UV:0 TSREF_OV:0 DVDD_OV:0
    故障参数1:AVDD_OSC:0 AVDD_OV:0
    故障 power1 val 为0x22
    故障 POWER1:PWRBIST 失败:0 VSS_OPEN:0 TSREF_OSC:1
    故障 POWER1:TSREF_UV:0 TSREF_OV:0 DVDD_OV:0
    故障参数1:AVDD_OSC:1 AVDD_OV:0
    故障 power1 val 为0x0
    故障 POWER2:CP OV:0 CP UV:0
    故障 power1 val 为0x22
    故障 POWER2:CP OV:0 CP UV:1.
    栈开发 ID 0的 Dev_Stat 2 val 为0x24
    栈开发 ID 1的 Dev_Stat 2 val 为0x20
    平均值为0.000000
    库仑计数的值为0.000000
    ########################################################################## END######################################################################################################

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

    尊敬的 John:

    是的、您的设备似乎正在成功通信。 这基本上是一个框架代码,它试图为开发者提供一个基础或概念证明。 因此、它尝试同时实现大量的功能、包括多种器件设置和多种通信协议。 这反过来会导致出现错误和无法正常工作、但实际上、代码正在执行其设计目标。 它不会 用作最终产品、而只是用作参考。 为专用解决方案开发的实际代码绝不会同时尝试实现所有这些不同功能。

    此致!

    Zachary  

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

    Zachary、感谢您的确认。 根据您的评估、我们将继续在我们自己的 BMS 设计中使用 BQ79731和其他 TI 器件。

    John