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.

BQ27545-G1: How to check the error of BQ27545

Part Number: BQ27545-G1
Other Parts Discussed in Thread: BQ40Z50

Could you please tell me how to check the error of BQ27545 using i2c command or DF reading?

Currently, what I have confirmed from the datasheet (bq25745-g1.pdf) is as follows:

  • MaxError()  => None
  • Investigating functions that may be similar to MaxError() => None

The tables I investigated are below:

  • Table 11. Standard Commands
  • Table 12. Control() Subcommands
  • Table 17. Data Flash Summary

* If information on this subject is already explained in a datasheet or another document, please also provide the source.

  • Hey Hitoshi,

    A function or register that is similar to Max Error is not available on this gauge.

    Regards,

    Nick Richards

  • Hi Nick,

    So, is there any document that states that this IC does not need to check for errors?
    I haven't read through all the documents yet, so I'd appreciate it if you could point me to the documents I should refer to.

    I am looking for the simplest way to get clues about abnormalities in actual operations.

    Regards,
    Hitoshi Okuma

  • Hey Hitoshi,

    Is there any specific error you are referring to? Max Error on our gauges refers to the error in SOC reading for the gauge. Since it is not offered, this value can actually be calculated on your side when you implement the gauge with a host. I will attach a screenshot of how Max Error is calculated. After the learning cycle is completed it is assumed the Max Error is 1%. Then it is incremented based on a simple rule.

    Regards,

    Nick Richards

  • Hi Nick,

    Thank you.
    (I'm not referring to any specific, specialized errors. Sorry for the misunderstanding.)
    And this time I was satisfied with the rules you presented.  I remember seeing this rule on some gauge ICs with IT algorithms, such as the bq40z50.

    Q1.
    In bq27545, the gauge itself does not process it, but the user needs to calculate it by themselves from Qmax, Ra Table, and Cycle Count, right?

    Q2.
    To calculate Q1, it is necessary to read the DF each time. This is very troublesome, isn't it? MaxError() is convenient because it includes this.

    What are some possible reasons why TI does not provide MaxError() for this IC?
    For example, "This IC is a pack-side gauge IC for 1 cell, so the error will not increase much and there is no need to take it into account"?

    Regards,
    Hitoshi Okuma

  • Hi Nick,
    Sorry for asking so many questions.

    Q3.
    This is related to Q1. Below is the pseudo code that confirms the error increase of 0.05% that I thought.  Is this correct?

    // CDC == Configuration:Data:Cycle Count
    // GSC == Gas Gauge:State:Cycle Count

    if (CDC == previous CDC+1)
    {
        if (GSC <= previous GSC)
        {
            MaxError += 0.05;
        }
        else
        {
            ;
        }
    }

    If this is correct, it would seem difficult to have a structure that integrates 0.05% in an external MCU and track the error accurately.

    - An unintended POR occurred on the MCU side and the count was cleared.
    - When learning on the gauge side (updating Qmax and Ra table) results in a state that is considered to be "MaxError=approximately 1%", the MCU cannot recognize it. (Or processing with high system load (continuously monitoring changes in DF related to Qmax and Ra table) is required)

    etc.

    Is there a simple and reliable way to track errors with this IC?
    Also, I apologize for the inconvenience, but please correct me if my thinking is wrong.

    Regards,
    Hitoshi Okuma

  • Hey Hitoshi,

    1.) It would depend on Qmax and cycle count.

    2.) I am not entirely sure why this IC does not have a max error register. I believe this part is one of our older parts so Max Error might be a newer feature for our gauges. Also, maybe Max Error is omitted to reduce the memory size that is used on the gauge. 

    3.) I am not sure why there two separate registers for cycle count but i think those two registers are reporting the same value. Max Error should be an integer value so it shouldn't be increment by 0.05.

    I would use an implementation of an counter to 20, once the counter reach 20 reset to 0 and increment max error by one

    if (Cycle Count Increased && Qmax didn't update){
        counter += 1;
        if(counter == 20){
            counter = 0;
            MaxError += 1;
        }
    }

    You wouldn't have to constantly poll the gauge. I would check data memory parameters during relaxation periods.

    Regards,

    Nick Richards

  • Hi Nick,

    I agree with the three answers.

    Also, even when using the pseudo code you gave as an example, the counter will be cleared if an unintended POR occurs on the management microcontroller.  I think the concept of this gauge is probably not for strict control, but for simpler handling.

    I learned a lot from learning that each gauge IC with an IT algorithm has its own characteristics.

    Regards,

    Hitoshi Okuma