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.

[参考译文] BQ76942:从 TI STM32 I2C 示例中执行子命令后出现 Haldfault

Guru**** 2553710 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1136098/bq76942-haldfault-after-executing-subcommand-from-ti-stm32-i2c-example

器件型号:BQ76942

你(们)好

我已将 STM32F103示例移植到 STM32G474。 示例正常、电压和温度读数正常、但当我要使用 子命令(即 void BQ769x2_ReadPassQ ())时、我获得了 HardFault。

Hardfault 出现在 I2C_ReadReg (0x40、RX_32byte、32)之后;(更准确地说、在 CopyArray (RX_Buffer、REG_DATA、CRC_COUNT)之后;在  I2C_ReadReg 函数中)

具有 CRC 功能的 I2C

有什么想法吗?

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

    嗨、Marcin、

    我们的所有示例均已进行测试、并在内部定期使用。 这可能是您切换 STM 版本时出现的问题。 硬故障是一个非常一般的错误。 我会梳理您的代码、看看您在移植到新的 STM 版本时是否没有错过任何内容。 此外、如果您有 STM32F103、请尝试在其上运行原始代码、以查看其是否正常工作。

    谢谢、
    Caleb

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

    但 该 示例中通常不调用 BQ769x2_ReadPassQ()(因此它可能未 经过测试?)。 我刚刚将其复制到主代码中进行检查 。

    代码是相同的。 唯一的区别是 I2C 以100kHz 的频率与 CRC 运行

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

    嗨、Marcin、

    是使用32字节缓冲区的任何子命令还是仅子命令? 如果您可以读取电压和温度、I2C_ReadReg 似乎正常工作。

    我很乐意为您提供进一步帮助、但不幸的是、最熟悉该规范的人和与 STM 合作的人一直到周五才出现。  

    谢谢、
    Caleb

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

    是的。 I2C_ReadReg 与2字节缓冲器上的直接命令配合使用。

    它的任何子命令(我已尝试使用 32字节 缓冲区的 DASTATUS5和 DASTATUS6)。 调试之后、看起来在  CopyArray (RX_Buffer、REG_DATA、CRC_COUNT)处缓冲区全为0;  

    不用担心 Caleb,  我可以等到星期五。

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

    我在 TI 代码中创建了错误。 缓冲区大小错误、而不是10、应该是   I2C_ReadReg 中的 uint8_t RX_Buffer [64]和 uint8_t ReceiveBuffer [64]。

    此外 、电流变量 Pack_Current 和 AcculatedCharge Int 应为 int 类型、而不是 uint。

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

    嗨、Marcin、

    感谢您提供相关信息。 我将把这一信息转发给适当的渠道。

    最棒的
    Caleb