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:bq79616 + bq79600在 BMS 运行时的反向命令帧

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1344637/bq79616-bq79616-bq79600-reverse-direction-command-frames-when-bms-is-running

器件型号:BQ79616

您好!

    我们使用 bq79616和 bq79600构建了 BMS 系统、现在  我们可以在两个通信方向上设置器件地址、但随后无法 更改通信方向。

这是我的代码:

。 WriteReg (0、control1、0x0+0x80、1、FRMWRT_SGL_W); //
WriteReg (0、COMM_CTRL、0x00、1、FRMWRT_SGL_W);
WriteReg (0、CONTROL1、0x80、BoardNum-1、FRMWRT_REV_ALL_W);

////// 另一个代码//////////////////////////////////

WriteReg (0、control1、0x0+0x80、1、FRMWRT_SGL_W);  
WriteReg (0、COMM_CTRL、0x00、1、FRMWRT_SGL_W);
WriteReg (0、CONTROL1、0x80、BoardNum-1、FRMWRT_REV_ALL_W);

WriteReg (0、COMM_CTRL、0x00、1、FRMWRT_SGL_W);
WriteReg (BoardNum-1、COMM_CTRL、0x03、1、FRMWRT_SGL_W);

此致、

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

    张磊

    我不知道您的代码是如何工作的、但如果是基于616示例代码的、我认为您没有正确清除栈顶。  

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

    在示例代码中、这些参数是(从右到左)器件 ID、寄存器 ID、数据、要写入的寄存器数量、写入类型。 这会清除基底器件中的 COMM_CTRL 寄存器、如果已正确自动寻址、则可能不需要该操作。

    您需要从堆栈器件顶部清除 COMM_CTRL_TOP_STACK_、然后将信息添加到新的堆栈顶部。 切换基本设备方向前需要清除。 您仍然可以使用单次/广播写入、而不使用栈顶。  

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

    这看起来是设置新的堆栈顶的正确命令、但如果不清除原始堆栈顶、器件将无法通过它进行正确通信。

    此致、