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.

[参考译文] BQ27426:密封件不生效

Guru**** 2513185 points
Other Parts Discussed in Thread: BQ27426, BQSTUDIO

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1412442/bq27426-seal-does-not-take-effect

器件型号:BQ27426
Thread 中讨论的其他器件: BQSTUDIO

工具与软件:

您好!

尝试在 BQ27426上使用0x0008设置 CHEM_ID 时遇到问题。

完成"Seal (密封)"过程后运行以下行时出现问题:

REt = bq27426_write (di、BQ27426_DM_class、buf->class、true);

ret 等于0x8202。

因此、我们假定"密封"流程不能很好地工作。

然后打印一些消息进行调查:

00> 应用:[BQ27426][BQ27426_BATTERY_UNSEAL]:SEAL 状态:0x208C

00> 应用:[BQ27426][BQ27426_BATTERY_UNSEAL]:SEAL 状态:0x200C

00> 应用:[BQ27426][BQ27426_BATTERY_SEAL]:SEAL 状态:0x200C

00> 应用:[BQ27426][BQ27426_BATTERY_UNSEAL]:SEAL 状态:0x200C

00> 应用:[BQ27426][BQ27426_BATTERY_SEAL]:SEAL 状态:0x200C

00> 应用:[BQ27426][BQ27426_BATTERY_UNSEAL]:SEAL 状态:0x208C

00> 应用:[BQ27426][BQ27426_BATTERY_SEAL]:SEAL 状态:0x208C

在几秒钟后、此状态被改变。

您能否帮助提供一个解决方案、以确保可以立即更改状态?

非常感谢!

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

    您好!  

    您只能通过更改操作配置 D 寄存器中的位3和4来更改 chemID。 BQ27426是一种 ROM 电量监测计、您只能在电量监测计上设置3个化学 ID 选项。 您无法在 BQ27426上对自定义 chemID 进行编程。  

    此致、  

    Robert。  

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

    尊敬的 Robert:

    请让我再解释一下这个问题:

    代码中的第一个任务:

    我们遵循 TRM 的"4.2 Chemistry Profile Change Example"来设置 chemID、

    我们设置的 chemID 当前为0x3142。

    代码中的第二个任务:

    也可以通过配置"OpConfigD"来设置 chemID。

    在配置标准数据存储器寄存器之前、

    图1中的步骤。 以下是快速入门指南中的"更新默认测量仪表参数配置的流程图"。

    但是、当尝试执行以下行操作时、错误已发生:

    REt = bq27426_write (di、BQ27426_DM_class、buf->class、true);

     此时、ret 等于0x8202。

    那么、在这2个任务之间是否需要注意?

    谢谢!

    Kyle。

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

    您好 Kyle:  

    在尝试写入测量仪表之前、您是否解封了测量仪表?  

    此致、  

    Robert。  

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

    尊敬的 Robert:

    以下是 TRM 中所述的访问步骤、

    我们按如下编程的相关代码、

    请帮助检查、谢谢。

    将 chemID 设置为0x0008:

    静态 int16_t bq27426_battery_set_chemid (结构 bq27426_device_info *di)

      BQ27426_log_info ("[%s]:start"、__func__);

      int16_t ret = bq27426_BATTERY_UNSEAL (di);
      if (ret < 0)
      {
        BQ27426_errlog ("[%s]:解封失败"、__func__);
        回流塔;
      }

      RET = bq27426_write (di、BQ27426_REG_CTRL、sub_CMD_CHEM_ID、false);
      if (ret < 0)
      {
        BQ27426_errlog ("[%s]:SENT CHEM_ID subcommand failed"、__func__);
        回流塔;
      }

      RET = bq27426_battery_set_cfgupdate (di);
      if (ret < 0)
      {
        BQ27426_errlog ("[%s]:设置 CFG 失败"、__func__);
        回流塔;
      }

      RET = bq27426_WRITE (DI、BQ27426_REG_CTRL、0x32、false);  // 0x3142
      if (ret < 0)
      {
        BQ27426_log_error ("[%s]:写入 Chem_ID 失败"、__func__);
        回流塔;
      }

      nrf_delay_ms (1);
      RET = bq27426_battery_soft_reset (di);
      if (ret < 0)
      {
        BQ27426_errlog ("[%s]:软复位失败"、__func__);
        回流塔;
      }

      nrf_delay_ms (25);
      RET = bq27426_read (di、0、false);
      if (ret < 0)
      {
        BQ27426_log_error ("[%s]:Get Chem_ID failed"、__func__);
        返回-1;
      }

      bq27426_BATTERY_SEAL (di);

    }

    并调用以下函数:

    static void bq27426_battery_set_config (结构 bq27426_device_info *di、
      结构 power_supply_battery_info * info)

      结构 bq27426_dm_buf bd = BQ27426_DM_BUF (di、BQ27426_DM_DESIGN_CAPACITY);
       结构 bq27426_dm_buf bt = BQ27426_DM_BUF (di、BQ27426_DM_terminate_voltage);
       结构 bq27426_dm_buf bo = BQ27426_DM_BUF (di、BQ27426_DM_OPCONFIGD);
       struct bq27426_dm_reg * reg =&di->dm_regs[BQ27426_DM_OPCONFIGD];
       更新了 Bool;
       bool 相同= true;
       uint16_t * prev;
       uint8_t opcfd;

       BQ27426_DbgLog ("[%s]:start"、__func__);
       如果(bq27426_BATTERY_UNSEAL (DI)< 0)
       
          返回;
       }

       if (info->charge_full_design_uAh!=-EINVAL &&
       info->energy_full_design_uwh!=-einval)
       
          bq27426_battery_read_dm_block (di、&bd);

    最后、函数中发生了错误:

    static int16_t bq27426_battery_read_dm_block (struct bq27426_device_info *di、
    结构 bq27426_dm_buf * buf)

      int16_t ret = 0;

      if (!diag_log)
      {
        BQ27426_DbgLog ("[%s]:start"、__func__);
      }

      buf->has_data = false;

      REt = bq27426_write (di、bq27426_DM_class、buf->class、true);  //此处出错
      if (ret < 0)
      {
        转出;
      }

    ...

    此致、

    Kyle

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

    尊敬的 Robert:

    还有一种现象可能对这种情况也很重要。

    正如我之前的描述、 在我们对 chemID 进行编程 "ret = bq27426_write (di、BQ27426_REG_CTRL、0x32、false);  // 0x3142"后、以下行是异常的:

    REt = bq27426_write (di、BQ27426_DM_class、buf->class、true);

    但是、重新启动系统后、此问题将消失。

    因此、我们发现、当我们对电池进行测试并重新安装电池时、可能会出现重复的问题。

    此致、

    Kyle

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

    您好 Kyle:  

    我无法在我的终端测试您的代码以确定您的代码是否正确。 您是否能够使用 bqStudio 尝试与电量监测计通信?

    此致、  

    Robert。  

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

    尊敬的 Robert:

    遗憾的是、我们没有 EVM。

    因为通过以下步骤设置 chemID:

    WR 0x00 0x32 0x00;

    通过以下步骤应用新的 chemID:

    WR 0x00 0x42 0x00;

    RD 0x06 Flags_register;

    然后按照以下步骤执行 Seal Process:

    WR 0x00 0x20 0x00;

    但在执行上述步骤并解封过程后、发生了以下步骤错误:

    WR 0x3E 0x52;

    所以我们不能试图把这个问题集中在这些步骤之间吗?

    谢谢!

    Kyle

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

    您好 Kyle:  

    请按照 bq27426技术参考手册的第5.1.15节中概述的过程进行操作。 此外、您可以按照 bq27426技术参考手册中第4.2节"化学成分更改示例"中的确切步骤/命令操作、因为这提供了更改化学物质的分步过程。  

    此致、  

    Robert。