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.

[参考译文] BQ27426EVM-738:器件配置模式存在问题

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/788830/bq27426evm-738-problem-with-device-configuration-mode

器件型号:BQ27426EVM-738
主题中讨论的其他器件: BQ27426

大家好、

我的客户使用 BQ27426EVM-738并遇到问题。

它们无法进入器件配置模式。 CONTRAL_STATUS (0x00)寄存器中的位 FLAG_CFGUPMODE (1<<4)未置位。

它们执行以下操作:

  1. 检查 CONTRAL_STATUS (0x00)寄存器中的阻塞状态 STATUS_SS (1<<13)。
  2. 位被置位→通过写入 unseal 密钥(0x8000)来移除位。
  3.  再次检查 STATUS_SS→它被删除、然后器件被解锁。
  4. 执行命令以进入配置模式 CONTINL_SET_CFGUPDATE (0x0013)。
  5. 在  CONTRAL_STATUS (0x00)寄存器中等待 FLAG_CFGUPMODE (1<<4) 2-5秒钟。 该位未设置!
  6. 无论如何、器件配置会继续-器件容量已设置。
  7. 然后读取设备容量-返回错误的值。 我们可以假设错误是由于第5页中的问题而发生的

客户使用库:

  1. https://github.com/deondavis/lib-BQ27421/blob/master/bq27421.c
  2. https://github.com/sparkfun/SparkFun_BQ27441_Arduino_Library
  3. https://github.com/torvalds/linux/blob/master/drivers/power/supply/bq27xxx_battery.c

器件配置函数库中的入口点:

第185行- bq27421_i2c_control_write (BQ27421_CONTRAL_SET_CFGUPDATE);
2.第330行- boolBQ27441::enterConfig (bool UserControl)

从寄存器的角度来看、BQ274xx 器件看起来类似、因为以下定义:

#define bq27411_regs bq27421_regs
#define bq27425_regs bq27421_regs
#define bq27426_regs bq27421_regs
#define bq27441_regs bq27421_regs
#define bq27621_regs bq27421_regs

连接调试控制台输出:

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

    发送解封密钥后、您还需要发送完全访问密钥、以使监测计完全可以访问。

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

    您的代码中 BQ27421_CONTACT_LOW 和 BQ27421_CONTACT_HIGH 的定义是什么?

    缺少 bq27421.h 文件。

    请记住、bq27421对子命令使用小端字节序、对数据存储器使用大端字节序。

    因此、如果要发送子命令0x0013、必须将0x13写入寄存器(cmd) 0x00、然后将0x00写入寄存器(cmd) 0x01。

    从标志寄存器读回的值是多少?

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

    您好、Onyx、

    发送解封密钥后、您还需要发送完全访问密钥、以使监测计完全可以访问。

    请您澄清一下您的意思是什么关键? 它应该写入哪个寄存器?

    我的客户说、他在可用库中看不到任何其他密钥。

    他在他的项目 中使用此库- github.com/.../SparkFun_BQ27441_Arduino_Library

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

    [引用用户="Dominik Hartl11"]

    请记住、bq27421对子命令使用小端字节序、对数据存储器使用大端字节序。

    因此、如果要发送子命令0x0013、必须将0x13写入寄存器(cmd) 0x00、然后将0x00写入寄存器(cmd) 0x01。

    从标志寄存器读回的值是多少?

    [/报价]
    感谢您的提示、我们已经解决了问题。
    [引用用户="Dominik Hartl11"]

    您的代码中 BQ27421_CONTACT_LOW 和 BQ27421_CONTACT_HIGH 的定义是什么?

    缺少 bq27421.h 文件。

    [/报价]
    不要对这一定义付出代价。 客户已修改原始代码。  
    Dominik、您能查看一下附件吗?  
    有2个 zip 文件:
    BQ27426 -修改后的库
    BQ27421_Basic -测试程序
    这由客户使用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    默认的完全访问密钥为0xFFFF、0xFFFF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Onyx、Dominik、非常感谢。

     FLAG_CFGUPMODE 问题 已解决。

    客户在该项目中提出2个与 BQ27426相关的新问题。

    1) 1)    客户使用以下结构来设置设计容量。 这些是不同的、具体取决于芯片:

    静态结构 bq27xxx_dm_reg bq27421_dm_regs[]={

    [BQ27XXX_DM_design_capacity]={82、10、2、0、8000}、

    [BQ27XXX_DM_design_energy]={82、12、2、0、32767}、

    [BQ27XXX_DM_TERMINATE_VOLT]={82、16、2、2500、3700}、

    };

    静态结构 bq27xxx_dm_reg bq27426_dm_regs[]={

    [BQ27XXX_DM_design_capacity]={82、6、2、0、8000}、

    [BQ27XXX_DM_design_energy]={82、8、2、0、32767}、

    [BQ27XXX_DM_TERMINATE_VOLT]={82、10、2、2500、3700}、

    };

    客户尝试将 BQ27426设计容量设置为5300米、但 IC 返回5022 (请参阅下面的屏幕截图)。 这是否正常?

    2) 2)  是否可以按用户值替换剩余电池容量值?

    现在、尽管电池已充满电、但芯片始终从0开始读取剩余电池容量:

    此致、

    Dmitry

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

    5022mAh 是完整的充电容量。 这将与设计容量不同、具体取决于监测设置。

    设计容量是此电池的标称容量。 监测计将其视为可存储在电池中的总电荷、从电池单元=满(放电深度= 0.0)到电池单元=空(放电深度= 1.0)。

    FCC 是根据系统的负载、充电和温度参数从电池中取出的实际总电荷、同时也考虑了电池使用寿命。

    这将小于设计容量。 例如、如果电池未充电至 DOD = 0.0但 DOD = 0.05 (例如、充电电压不是允许的最大值或锥形电流相当高)、则 FCC 将会更小。 或者如果温度为低温(例如0C)、则 FCC 将更小。 或者、如果系统负载较高(例如、C/1)、则由于负载电流较高而导致的 IR 压降将导致电池电压降至更早的终止电压以下、因此 FCC 将更小。 或者、如果电池老化、化学容量将降低、阻抗将增加、因此 FCC 将更小。

    如果您希望 FCC 更接近设计容量(5022mAh 与5300mAh 之间的电流相当远)、我会检查您的充电终止设置是否适合您的应用、终止电压是否足够以及负载模型是否正确(这包括负载模式/选择以及平均值)。 I/P 上次运行)。

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

    谢谢 Dominik、

    设计容量是此电池的标称容量。 监测计将其视为可存储在电池中的总电荷、从电池单元=满(放电深度= 0.0)到电池单元=空(放电深度= 1.0)。

    我对吗: 为了避免在电池充满电的情况下读取0中的剩余电池容量、我必须存储最后一个电池级并在系统启动后使用该数字?

    此致、

    Dmitry

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果监测计已通电、它将存储必要的参数。 如果它进入关断状态、您需要将 DF 参数存储在主机 NVM 中、以便在上电后可以将其加载回监测计。
    谢谢
    Onyx