TI Fuel Tank BoosterPack & MSP430F5529 Launchpad - Review

Table of contents

RoadTest: TI Fuel Tank BoosterPack & MSP430F5529 Launchpad

Author: peteroakes

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: For the TI Launch pads there are no comparable boards supporting battery power for use away from power adapters without building a custom one

What were the biggest problems encountered?: For Part one of the review (Excluding the un-boxing), the problem has been documentation being inaccurate or misleading, In part one I reviewed the documentation quite thoroughly to evaluate its accuracy and level of detail. It is important with an evaluation board and supporting material that there is sufficient material to help the developer of the hardware or software to complete a design or evaluation quickly and with least risk. As such one must be able to have confidence in the board and documentation, there is room for improvement. In part two I will be performance testing the Fuel Tank Booster to determine how long you could run without re-charging and what kind of loads can be supported. The documentation is currently not to forthcoming with these details. My hope is that coupled with reviews from myself and other reviewers we can close this gap. Even without docking the board with a launchpad, I have identified a few areas of concern that can be fed back into the documentation to improve it and also alert other developers as to the few limitation that one must be aware of when using the board.

Detailed Review:

This is my first ever product review with Element 14 and my first ever video review too so I have a lot to learn about presentation and producing videos and writing reviews. Constructive criticism about my techniques are more than welcome but try to remember it is about reviewing the product and also sharing findings on how they work and what to expect when you too with have the chance to use one. If the review helps you learn something and avoids a few issues along the way then it has done its job. helping to improve the product and support is a nice bonus. It would also be remiss of me not to point out words of caution,  errors and omissions along the way. i am not one to say something is great just to gain favor, it will bite me in the long run. so here goes, I hope you enjoy and find it useful

 

My Ratings are not final as I have not completed my review, the scores are based on initial finding with certain areas being middle of the road until I complete the evaluation, so please don't read too much into them until the review is complete

 

This review is going to be separated into many parts,

 

            Summary findings and recommendations - Fuel Tank

             Un-Boxing

Part 1:- Document and Board overview

Part 2:- Demo Program for Energia (Not everyone know or uses CCS)

Part 3:- Reducing the quiescent current to last weeks instead of days

Part 4:- The MSP430F5529

 

Summary review of the Fuel Tank booster pack

 

Product Performed to expectations: Well no not really at least not my initial expectations from the initial advertising etc. It is a booster pack designed to provide power to launch pads of which many are ultra-low power. So it was assumed (My Bad) it would be the load that would be the factor governing how long it would take to discharge the battery, whereas in its current design, it is the booster pack itself that will be flat in no more than four or five days from its own internal power requirements.

With very little modification to the board (actual Jumpers on R17 and R19 or connect to GPIO pins) this can easily be resolved and allow the run time to be extended to maybe over 100 Days (That was my expectation) and even be able to shut down one of the regulators (5V) in situations where it is not required.


The Gas Gauge has a resolution of 1mA or 1mV, its range is up to 16 or 32Amps so it can be monitoring quite large batteries if needed. With an ultra-low power launch pad it cannot give an accurate reading as the device current draw is down in the noise range, only fractions of a percent inaccurate based on full scale but way off at the low end, in my tests it was showing 4mA but my 4.5 Digit meter was reading only about 300uA. As a consequence it will not give an accurate run time indication but you can be sure it will be more than it says. If the booster pack is loaded up with devices of course then all that changes, if you have sensors, LEDs, LCD Displays etc. connected, much more power will be drawn and the readings are much more accurate.

Either way it is more than enough for a trip to the library to do some work, work for a couple hours on a Quad copter or other autonomous vehicle taking sensor reading or other similar activity


Specifications were sufficient to design with: There were no specifications to speak of provided with the unit except for the capacity of the battery, but links to some of the chips data sheets where provided, the rest I had to discover from schematics then get the datasheets from TI. It would have been nice to have the basic design specifications included like Charge Current, Max design load current for each supply. The fact it has 5V and 3v3 available etc., the ability to connect an actual Solar panel if you so desire (Charger chip can handle it after all).

The provision of a full schematics was nice even if there were numerous errors or confusion elsewhere in the documentation, the schematic was accurate and clear. Overall the documentation was a little disappointing. There were many areas that where confusing and that could cause in-experience users to damage components or at least waste time in figuring out why things don’t work. Much of this is detailed in the fuller review below.


Demo Software was of good quality: well it seems to be, well commented and well organized, shame I could not get the fuel tank demos to successfully run. They were all in CCS which I am not used to but I do understand the code and reading through it, it seems to be pretty good. Good enough for me to port it to Energia.


Demo was easy to use: While I did have some luck with none fuel tank related demos for the MSP430F5529, I could not get the TiviaC Fuel tank demo to compile or the MSP430G2 Demo to output correctly on the console (All gibberish, and I did try all common baud rates. I am not well versed with CCS so could be my fault but I’m not the only one pointing out this flaw) therefor I wrote my own using Energia. If the creators of the fuel tank read this, please provide demos in Energia, You will attract a much wider range of users even Arduino users looking at alternatives and yes I did have the Fuel tank hooked up to an UNO as well without a single line of code change, worked great. As the CCS and IAR software development tools are constrained unless you fork out a substantial amount of money (From a hobbyist perspective) new users and educators will want to stick with Energia, this is one of the reasons Arduinos are so popular. TI please take the hint and get on board with the hobbyist, they are your future business customers and will thank you for it. Even with fun projects at home, I still struggle to fit code into a 32K atmega328, never mind constrained to 16K when the chip has 128K??


Support materials were available: Yes, It was easy to find all the support material I needed from the TI web site, I have always liked how easy it is to get to application notes and Data sheets from TI and Element 14, Bravo on that one. Without this I would have been prodding in the dark as to the performance characteristics of the buck/boost regulators etc.


The price to performance ratio was good: Well this is an easy answer, most defiantly a good price / performance.


Recommendations:- The product itself is a great addition to the booster packs and with a little effort in redesign, better demo code (Energia) and updating of documentation it could have received a much higher mark from me. If your good with soldering on SMD based boards  and can work around the documentation issues, much of the deficiencies can be overcome easily

 

Detailed Review:-


The Un-Boxing

It seems the first thing is always the "Un Boxing so here is mine", I am not counting this as part of the review but putting it here for completeness.

 

So with the official un-boxing out of the way, lets begin with Part 1, an overview of the documentation and the Fuel Tank board itself, this will not be powered up or plugged in yet, that will come in part two. The intention here is to understand what is on the board, how it works and if the documentation aligns with the board and how to use it.. As you will see there are a few errors that need to be addressed.

I am highlighting them in order to avoid issues for newcomers to micro-controllers or people who can not fully understand schematics and may be early in their education with this technology, If you are a skilled with electronics then you will probably pickup on the errors yourself but anyone not realizing may get caught unaware and could cause damage to there launchpads or added devices. there are also a few design choices that may lead to issues if the board is used under any significant load

 

Document and Board overview

 

I noticed in the video that some of the diagrams where not too readable so to help with that all the documents and additional diagrams I produced are available below at full resolution

 

the following links are for the components on the board and the products themselves

 

Fuel tank user guide:  http://www.ti.com/lit/ug/slvua32/slvua32.pdf

Buck/Boost regulators http://www.ti.com/lit/ds/symlink/tps63001.pdf

Gas Gauge  http://www.ti.com/lit/ds/symlink/bq27510-g2.pdf

LIPO Charger http://www.ti.com/lit/ds/symlink/bq24210.pdf

Schottky Diode http://en.wikipedia.org/wiki/Schottky_diode

 

In order to be better understood by a larger audience I created a simpler block diagram of the  Fuel Tank booster pack, second diagram highlighting a potential issue described int he video

image

the User guide for the board has a few errors that hopefully the following view will resolve, I mention it in the video but this will provide a much clearer view and will hopefully help prevent users from plugging in components to the wrong pins, I have shown both the Fuel Tank Booster and the MSP-EXP430F5529LP eval board both marked with he same connections

what is immediately obvious from the pictures is that the Battery Booster board must mount upside down on the launch pad or be connected to the underside of it where possible. the Booster does have pins and sockets so supports stacking with other booster boards.

imageimage

While I was reviewing the circuit diagram, I noticed that there where diodes between the output of the regulators and the pins feeding the attached launchpad or additional booster board. this lead me to test the effect of these diodes under load and it was discovered that if sufficient load was drawn through the  Fuel Tank booster pack, there would be enough voltage drop across the diodes to potentially cause instability with some attached components. With a load of 500mA (10ohm resistor) on the 5V output or 330mA on the 3.3V rail, there was as much as 300mV dropped across the diodes. this could defiantly cause issues and instability in certain scenarios. In the load testing video to come, i will test the drop with various launch pads to see the affect (If any). The MSP430F5529 is capable of working down to 1.8V so it should be ok but the same may not be true for USB, external ADCs or other devices.

 

 

Part 2, Demo Energia Program.

So I down loaded the demo programs for the Fuel tank that uses CCS. Unfortunately I have yet been able to get one to compile or the other to output readable text to the console. As I am not too familiar with CCS, I decided the easiest thing would be to grab demos using the Energia IDE. Unfortunately I was unable to find any for the fuel tank... Time to write my own image


Why I chose to roll my own with Energia              

And what was the results image

Reading through the CCS Code, porting to the Energia IDE using the Energia libraries for Wire (I2C), i got the basic framework up and running, now comes my next issue, if i try to read more than one parameter at a time in the code it would output invalid data (Readable but invalid), if i only asked for one parameter like cell volts then it worked 100% see this for details:- Fuel Tank BoosterPack With Rechargeable LION Battery and CCS or Energia - I2C issues

 

Initially thinking maybe it was the I2C library, I ported over to an Arduino micro, hooked up to the Fuel tank and WAM... same results, obviously not the I2C library

On carefully reviewing the CCS code I found a comment in one of the demos referring to the fact you need to ignore the first read as it will be unstable...



This is the reference in the CCS code to the instability of the reading from the fuel gauge:

//
    //First reading of numerical instability,discard
    //
    LM4F120_bq27510_read(bq27510CMD_TEMP_LSB, 2);
    temperature = (transBytes2Int(Rxdata[1], Rxdata[0]))/10 - 273;


    while(1)
    {
    valid_data = 1;
    //
                //Read temperature  again(units = 0.1K)
                //
    if(!LM4F120_bq27510_read(bq27510CMD_TEMP_LSB, 2)) {
  //
  //convert K to ¡æ
  //
  temperature = (transBytes2Int(Rxdata[1], Rxdata[0]))/10 - 273;
    }
else {.......
         

more experimentation, it appeared this applies to any parameter, if you only ask for one your ok, more than one you have to ask twice. and no mention in the data sheets

I applied this to my demo code and now it all works great (With the little work around to get the parameter to output the right values.)


So here is the code for your reference, please use as you want. It has been proven to work on Tivia C, MSP430G, MSP430F and Arduino Uno (ATMEGA 328) using the Energia IDE to compile and upload to the device (Arduino IDE of course for the 328)

it is also added as an attachment for convenience

#include <stdio.h>
#include <Wire.h>


#define bq27510CMD_CNTL_LSB  0x00
#define bq27510CMD_CNTL_MSB  0x01
#define bq27510CMD_AR_LSB    0x02
#define bq27510CMD_AR_MSB    0x03
#define bq27510CMD_ARTTE_LSB 0x04
#define bq27510CMD_ARTTE_MSB 0x05
#define bq27510CMD_TEMP_LSB  0x06
#define bq27510CMD_TEMP_MSB  0x07
#define bq27510CMD_VOLT_LSB  0x08
#define bq27510CMD_VOLT_MSB  0x09
#define bq27510CMD_FLAGS_LSB 0x0A
#define bq27510CMD_FLAGS_MSB 0x0B
#define bq27510CMD_NAC_LSB   0x0C
#define bq27510CMD_NAC_MSB   0x0D
#define bq27510CMD_FAC_LSB   0x0E
#define bq27510CMD_FAC_MSB   0x0F
#define bq27510CMD_RM_LSB    0x10
#define bq27510CMD_RM_MSB    0x11
#define bq27510CMD_FCC_LSB   0x12
#define bq27510CMD_FCC_MSB   0x13
#define bq27510CMD_AI_LSB    0x14
#define bq27510CMD_AI_MSB    0x15
#define bq27510CMD_TTE_LSB   0x16
#define bq27510CMD_TTE_MSB   0x17
#define bq27510CMD_TTF_LSB   0x18
#define bq27510CMD_TTF_MSB   0x19
#define bq27510CMD_SI_LSB    0x18
#define bq27510CMD_SI_MSB    0x19
#define bq27510CMD_STTE_LSB  0x1A
#define bq27510CMD_STTE_MSB  0x1B
#define bq27510CMD_SOH_LSB   0x1C
#define bq27510CMD_SOH_MSB   0x1D
#define bq27510CMD_CC_LSB    0x1E
#define bq27510CMD_CC_MSB    0x1F
#define bq27510CMD_SOC_LSB   0x20
#define bq27510CMD_SOC_MSB   0x21
#define bq27510CMD_INSC_LSB  0x22
#define bq27510CMD_INSC_MSB  0x23
#define bq27510CMD_ITLT_LSB  0x28
#define bq27510CMD_ITLT_MSB  0x29
#define bq27510CMD_RS_LSB    0x2A
#define bq27510CMD_RS_MSB    0x2B
#define bq27510CMD_OPC_LSB   0x2C
#define bq27510CMD_OPC_MSB   0x2D
#define bq27510CMD_DCAP_LSB  0x2E
#define bq27510CMD_DCAP_MSB  0x2F


#define bq27510_ADR      0x55




void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}
  int Volts = 0;
  int  Amps = 0;
  int  Temp = 0;
  int SOC = 0;
  int DCAP = 0;
  int RCAP = 0;
  unsigned int TTE = 0;
  unsigned int TTF = 0;


void loop()
{
  Temp  = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273;
  Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB );
  Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB);
  SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB);
  DCAP = getValue(bq27510_ADR, bq27510CMD_DCAP_LSB);
  RCAP = getValue(bq27510_ADR, bq27510CMD_RM_LSB);
  TTE = getValue(bq27510_ADR, bq27510CMD_TTE_LSB);
  TTF = getValue(bq27510_ADR, bq27510CMD_TTF_LSB);
  char output[80];
  sprintf(output, "Temp= %2d, V=%u , mA=%4d , SOC=%2d, RCAP=%d, DCAP=%d, TTE=%u, TTF=%u\n", Temp ,Volts ,Amps ,SOC, RCAP, DCAP, TTE, TTF);
  Serial.print(output);
  delay(2000);
}




int getValue(int port, int cmd)
{
  int tmp1=0;
  int tmp2 = 0;
  int response = 0;
  Wire.beginTransmission(port);
  Wire.write(byte(cmd));
  Wire.endTransmission(true);
  // according to all the demos, first reading is unstable so ignore it ??
  // Seems yo have to do this twice to get it to work, if you dont is gets screwed up
  Wire.beginTransmission(port);
  Wire.write(byte(cmd));
  // request 2 bytes from slave device port
  response = Wire.requestFrom(port, 2);
  Wire.endTransmission(true);


  while(Wire.available())    // slave may send less than requested
  {
    tmp1 = Wire.read() ;
  tmp2 = Wire.read() ;
  }
  return transBytes2Int(tmp2, tmp1);
}


/**
  * @brief  Translate two bytes into an integer
  * @param
  * @retval The calculation results
  */
unsigned int transBytes2Int(unsigned char msb, unsigned char lsb)
{
    unsigned int tmp;
    tmp = ((msb << 8) & 0xFF00);
    return ((unsigned int)(tmp + lsb) & 0x0000FFFF);
}
         


This is an example of the output including a period where I disconnected the battery (Loads of 0 values). All of the values where verified correct using my DVM and Temp Probe, some values where a little out but withing a few % in most cases. This can all be calibrated to be more accurate if the user wants to. The fuel Gauge supports a full set of adjustment values for this purpose.

I will request some help with TI on this but for now I am able to continue


Notice the 300mA load, there is nothing connected, the 5V buck regulator has decided to be my load, so I am in the process of replacing the 3mm*3mm Chip in order to fix the board, if your interested you can see the repair being done here (2 parts, removal and validation, then replacement when the chip arrives)  http://www.element14.com/community/videos/11461/l/reparing-a-suicidal-boost-regulator-on-the-fuel-tank-ti-booster-pack-pt1--removal


Part three:- Reducing the quiescent current

Having removed my suicidal boost regulator I am now able to tryout reducing the current being drawn from the battery even when there is no connected load, without finding a fix for this the board will never be able to last more than four to five days without being re-charged and that's with no external load

the following video shows the results of taking the PS/SYNC pin of the buck/Boost regulators to 0 causing the regulator to run in power save mode. this does come at a cost of increased ripple but as I discovered it also reduces the load enough to get weeks of run time. Note in the video I quote 100 Days but there is only one regulator in circuit for the test as I removed one due to a problem and it is not yet replaced. This would effectively double the quiescent load and probably reducing the no load time to about 50 days which is still pretty good.


In case your wondering, none of the MSP430 or Tivia C chips required 5V so not having this chip in place has no affect on the running of these launch pads. The same could not be guaranteed for he array of Booster packs out there.


Changes Overview (Circuit References to PS/SYNC)

And the results where we see that grounding the PS/SYNC pin indeed improves the quiescent current to the point where the board will last weeks rather than days assuming a minimal load from the connected launchpads and booster pack stack (It will no longer self discharge in 4 or 5 days.




Part four coming soon image

Anonymous
  • If I recall correctly with trying to use the CC3200 and TivaC boards with the Sharp LCD displays, there may be issues with the I2C not working as expected, this would account for your results

     

    I have not specificity tried to extract data from the Booster with the CC3200 but I will have a go as soon as I get a chance, I hope to have a logic analyzer soon and will hook it up to diagnose.

     

    Regards


    Peter

  • Hi Peter,

     

    your posts on the fuel tank have been (and continue to be) really useful for me in the "In The Air" challenge.

     

    I was wondering if you had experimented with the fuel tank booster pack and the cc3200 ?

    Trying to run your sketch to retrieve the data from the bq27510, I only seem to get "0" values.

    image

     

    I'm new to launchpads, so I might be missing something obvious ?

     

    Thanks,

    Frederick

  • I will try that out, but to confirm, I did try the code on Arduino IDE and Energia and both behaved in the exact same way

     

    I now have an EV2300 device from TI that allowed me to read and write configuration info to the fuel gauge, don't have an analyser though to check the comms

     

    The actual configuration is attached above (Previous comment)

     

    still trying to figure out the best way to persuade it to give the right values for the capacity, but allot of the work is done through the algorithms

     

    The low (Discharge) cutoff is also actuated based on remaining capacity in mAH, not volts and in the config this is set to 10% of capacity. I have not yet determined if this is design cap or actual Cap. The booster pack gets shut down simply because the Low Batt alarm is connected to the buck reg enable pins which is really premature for this implementation as it is correct in saying the battery is low, just incorrect in killing the system. Trouble is there is not another alarm available. Changing the low alarm to 5% may help abit, I am currently trying different settings to see what works.

  • Hello Peter,


    if you try the code in this order, you get a slightly better result from the logic analyzer point of view. The problem is with the 'false' there, the request starts with a write to port. And if you use 'true' then there is stop bit before the read so nothing is returned. The issue is starting to look like an Energia implementation issue. There are a lot of forums talking about I2C issues with Arduino code that seemingly have been fixed in the new revision but if this is how it works in Energia then the fixes have not been fully applied here. I will try the code in this order on an Arduino that I have borrowed (Duemilanove) and hopefully get back to you some time soon.


    Wire.beginTransmission(port); 

    Wire.write(byte(cmd)); 

    Wire.endTransmission(false); 

    response = Wire.requestFrom(port, 2); 


    As for my other project I will probably use MSP430Ware or just write the code from scratch but seeing the size and complexity of the code it may be a lot of work and take longer than I have.  Hope it all works...

  • This is the configuration file, still analysing but thought i would share

    [Header]
    bq EVSW Version = 0.9.92
    DeviceName = bq27510G3 v4.00
    Time = 6/5/2014 3:29:25 PM
    
    
    
    
    [Safety(Configuration)]
    OT Chg = 45.0
    OT Chg Time = 2
    OT Chg Recovery = 40.0
    OT Dsg = 60.0
    OT Dsg Time = 2
    OT Dsg Recovery = 55.0
    [Charge Inhibit Cfg(Configuration)]
    Chg Inhibit Temp Low = 0.0
    Chg Inhibit Temp High = 45.0
    Temp Hys = 10.0
    [Charge(Configuration)]
    Charging Voltage = 4200
    Delta Temp = 5.0
    Suspend Low Temp = 0.0
    Suspend High Temp = 45.0
    [Charge Termination(Configuration)]
    Taper Current = 22
    Taper Voltage = 100
    TCA Set % = 99
    TCA Clear % = 95
    FC Set % = -1
    FC Clear % = 98
    DODatEOC Delta T = 5.0
    [Data(Configuration)]
    Initial Standby = -13
    CC Threshold = 1080
    Design Capacity = 1200
    Des Energy Scale = 1
    SOH LoadI = -400
    Default Temperature = 25.0
    Device Name = bq27510-G3
    Data Flash Version = 0000
    [Discharge(Configuration)]
    SOC1 Set Threshold = 10
    SOC1 Clear Threshold = 11
    SysDown Set Volt Threshold = 3150
    SysDown Set Volt Time = 2
    SysDown Clear Volt = 3400
    Def Avg I Last Run = -299
    Def Avg P Last Run = -1131
    [Registers(Configuration)]
    Op Config = 8971
    SOC Delta = 1
    i2c Timeout = 4
    DF Wr Ind Wait = 0
    OpConfig B = 4E
    OpConfig C = 0C
    OpConfig D = 5E
    OpConfig E = 02
    [Power(Configuration)]
    Flash Update OK Voltage = 2800
    Sleep Current = 19
    Hibernate I = 8
    Hibernate V = 2550
    
    
    [Manufacturer Info(System Data)]
    Block 0 = 00
    Block 1 = 00
    Block 2 = 00
    Block 3 = 00
    Block 4 = 00
    Block 5 = 00
    Block 6 = 00
    Block 7 = 00
    Block 8 = 00
    Block 9 = 00
    Block 10 = 00
    Block 11 = 00
    Block 12 = 00
    Block 13 = 00
    Block 14 = 00
    Block 15 = 00
    Block 16 = 00
    Block 17 = 00
    Block 18 = 00
    Block 19 = 00
    Block 20 = 00
    Block 21 = 00
    Block 22 = 00
    Block 23 = 00
    Block 24 = 00
    Block 25 = 00
    Block 26 = 00
    Block 27 = 00
    Block 28 = 00
    Block 29 = 00
    Block 30 = 00
    Block 31 = 00
    
    
    [IT Cfg(Gas Gauging)]
    Load Select = 1
    Load Mode = 1
    Max Res Factor = 15
    Min Res Factor = 7
    Ra Filter = 800
    Min % Passed Chg for Qm = 37
    Qmax Filter = 96
    Max % Default Qmax = 110
    Terminate Voltage = 3300
    Term V Delta = 200
    ResRelax Time = 500
    User Rate-mA = 0
    User Rate-m/cW = 0
    Reserve Cap-mAh = 0
    Reserve Cap-m/cWh = 0
    Min Delta Voltage = 0
    Max Sim Rate = 1
    Min Sim Rate = 20
    Ra Max Delta = 44
    Qmax Max Delta % = 5
    DeltaV Max dV = 10
    Max Res Scale = 5000
    Min Res Scale = 200
    Fast Scale Start SOC = 10
    TermV Valid Time = 2
    [Current Thresholds(Gas Gauging)]
    Dsg Current Threshold = 60
    Chg Current Threshold = 18
    Quit Current = 9
    Dsg Relax Time = 60
    Chg Relax Time = 60
    Quit Relax Time = 1
    Transient Factor Charge = 128
    Transient Factor Discharge = 128
    Max IR Correct = 400
    [State(Gas Gauging)]
    IT Enable = 01
    App Status = 00
    Qmax Cell 0 = 983
    Cycle Count 0 = 12
    Update Status 0 = 02
    Qmax Cell 1 = 911
    Cycle Count 1 = 0
    Update Status 1 = 01
    Avg I Last Run = -265
    Avg P Last Run = -956
    Delta Voltage = 2
    T Rise = 20
    T Time Constant = 1000
    Cell 0 V at Chg Term = 4205
    Cell 1 V at Chg Term = 4205
    
    
    [OCVa0 Table(OCV Tables)]
    Chem ID = 0181
    Qmax Cell 0 = 1000
    Update Status = 00
    [OCVa1 Table(OCV Tables)]
    Chem ID = 0181
    Qmax Cell 1 = 1000
    Update Status = 00
    
    
    [Def0 Ra(Default Ra Tables)]
    Def0 Ra status = FF
    Def0 Ra flag = 55
    Def0 Ra Base R = 15
    Def0 Ra Gain = 00
    Def0 Ra 1 = 2
    Def0 Ra 2 = 3
    Def0 Ra 3 = 9
    Def0 Ra 4 = -10
    Def0 Ra 5 = -1
    Def0 Ra 6 = 5
    Def0 Ra 7 = -4
    Def0 Ra 8 = 0
    Def0 Ra 9 = 2
    Def0 Ra 10 = 2
    Def0 Ra 11 = 0
    Def0 Ra 12 = 8
    Def0 Ra 13 = 15
    Def0 Ra 14 = 75
    [Def1 Ra(Default Ra Tables)]
    Def1 Ra status = FF
    Def1 Ra flag = 55
    Def1 Ra Base R = 15
    Def1 Ra Gain = 00
    Def1 Ra 1 = 2
    Def1 Ra 2 = 3
    Def1 Ra 3 = 9
    Def1 Ra 4 = -10
    Def1 Ra 5 = -1
    Def1 Ra 6 = 5
    Def1 Ra 7 = -4
    Def1 Ra 8 = 0
    Def1 Ra 9 = 2
    Def1 Ra 10 = 2
    Def1 Ra 11 = 0
    Def1 Ra 12 = 8
    Def1 Ra 13 = 15
    Def1 Ra 14 = 75
    
    
    [Pack0 Ra(Ra Tables)]
    Pack0 Ra status = 00
    Pack0 Ra flag = 00
    Pack0 Ra Base R = 55
    Pack0 Ra Gain = 01
    Pack0 Ra 1 = 6
    Pack0 Ra 2 = 6
    Pack0 Ra 3 = 4
    Pack0 Ra 4 = -2
    Pack0 Ra 5 = 0
    Pack0 Ra 6 = 0
    Pack0 Ra 7 = -2
    Pack0 Ra 8 = -2
    Pack0 Ra 9 = 4
    Pack0 Ra 10 = 2
    Pack0 Ra 11 = 0
    Pack0 Ra 12 = 14
    Pack0 Ra 13 = 22
    Pack0 Ra 14 = 124
    [Pack1 Ra(Ra Tables)]
    Pack1 Ra status = FF
    Pack1 Ra flag = 55
    Pack1 Ra Base R = 15
    Pack1 Ra Gain = 00
    Pack1 Ra 1 = 2
    Pack1 Ra 2 = 3
    Pack1 Ra 3 = 9
    Pack1 Ra 4 = -10
    Pack1 Ra 5 = -1
    Pack1 Ra 6 = 5
    Pack1 Ra 7 = -4
    Pack1 Ra 8 = 0
    Pack1 Ra 9 = 2
    Pack1 Ra 10 = 2
    Pack1 Ra 11 = 0
    Pack1 Ra 12 = 8
    Pack1 Ra 13 = 15
    Pack1 Ra 14 = 75
    [Pack0 Rax(Ra Tables)]
    Pack0 Rax status = 00
    Pack0 Rax flag = 55
    Pack0 Rax Base R = 55
    Pack0 Rax Gain = 01
    Pack0 Rax 1 = 6
    Pack0 Rax 2 = 6
    Pack0 Rax 3 = 4
    Pack0 Rax 4 = -2
    Pack0 Rax 5 = 0
    Pack0 Rax 6 = 0
    Pack0 Rax 7 = -2
    Pack0 Rax 8 = -2
    Pack0 Rax 9 = 4
    Pack0 Rax 10 = 2
    Pack0 Rax11 = 0
    Pack0 Rax 12 = 12
    Pack0 Rax 13 = 20
    Pack0 Rax 14 = 120
    [Pack1 Rax(Ra Tables)]
    Pack1 Rax status = FF
    Pack1 Rax flag = 55
    Pack1 Rax Base R = 15
    Pack1 Rax Gain = 00
    Pack1 Rax 1 = 2
    Pack1 Rax 2 = 3
    Pack1 Rax 3 = 9
    Pack1 Rax 4 = -10
    Pack1 Rax 5 = -1
    Pack1 Rax 6 = 5
    Pack1 Rax 7 = -4
    Pack1 Rax 8 = 0
    Pack1 Rax 9 = 2
    Pack1 Rax 10 = 2
    Pack1 Rax 11 = 0
    Pack1 Rax 12 = 8
    Pack1 Rax 13 = 15
    Pack1 Rax 14 = 75
    
    
    [Data(Calibration)]
    CC Gain = 9.953
    CC Delta = 9.934
    CC Offset = -6.566
    Board Offset = -0.7125
    Int Temp Offset = 0.0
    Ext Temp Offset = 0.0
    Pack V Offset = 0
    [Temp Model(Calibration)]
    Ext a Coef 1 = -11130
    Ext a Coef 2 = 19142
    Ext a Coef 3 = -19262
    Ext a Coef 4 = 2820.3
    Ext a Coef 5 = 89.2
    Ext b Coef 1 = 328
    Ext b Coef 2 = -605
    Ext b Coef 3 = -2443
    Ext b Coef 4 = 469.6
    Max Correction I = 1500
    I Correction Rate = 10
    Thermistor OR Hi = 100
    Thermistor OR Low = -40
    [Current(Calibration)]
    Deadband = 3
    
    
    [Codes(Security)]
    Sealed to Unsealed = 36720414
    Unsealed to Full = FFFFFFFF

  • I now have been able to extract the configuration and am experimenting with a few select changes, should have answers by end of the weekend

  • It would work if you read each register twice. The first attempt would end off with the write command and the second attempt would start with a read that would give you what you want. The first half of the first attempt would be trash and the second half of the second attempt would also be trash but between the two reads you would get the info that you wanted.

     

    I will try get more info on what each command is doing as I need these commands as well as the SPI commands working for an urgent project that should be done soon.

  • For sure the same code works on an MSP430 and an Arduino UNO in exactly the same way and does collect he correct data as verified with a multimeter (The Energia Version that is)

     

    I am really missing not having a logic protocol analyser, I will have to seriously have to look into getting one

  • Hey Peter,

     

    Here is something interesting, using your code on a different chip (MPL3115A2) this is the output I get from the Launchpad. As you can see the code is backwards, you should be getting a write BEFORE a read but you can clearly see here that is coming after. I wonder if there is an issue with the Wire library or something else (order of the code) but from what I have tested with code that does work this is clearly the wrong order. I will keep digging because this is unusable on any I2C part as is.

     

    image

  • Hi Peter I was testing your energia code but, it just prints some random values, for the current I am getting a 65560 value ? also the sample code from Tiva Ware was working fine until now, where I am getting pretty constant values (-15mA if not charging, for any amount of load i put on the boosterpack and around 130~200mA while charging) any idea why ?